Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@ endif
enable_docs = get_option('docs').require(xsltproc.found() and have_manpages_stylesheet).allowed()

# Additionally check if glesv2 is needed
enable_glesv2 = enable_video_drm3d and enable_renderer_gltex
enable_glesv2 = enable_video_drm3d or enable_renderer_gltex

#
# Other configuration output
Expand Down
6 changes: 3 additions & 3 deletions src/font.c
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@
#include <stdlib.h>
#include <string.h>
#include "font.h"
#include "kmscon_module.h"
#include "shl_module.h"
#include "shl_dlist.h"
#include "shl_log.h"
#include "shl_misc.h"
Expand Down Expand Up @@ -142,7 +142,7 @@ static inline void kmscon_font_destroy(void *data)
{
const struct kmscon_font_ops *ops = data;

kmscon_module_unref(ops->owner);
shl_module_unref(ops->owner);
}

/**
Expand Down Expand Up @@ -177,7 +177,7 @@ int kmscon_font_register(const struct kmscon_font_ops *ops)
return ret;
}

kmscon_module_ref(ops->owner);
shl_module_ref(ops->owner);
return 0;
}

Expand Down
4 changes: 2 additions & 2 deletions src/font.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@

#include <errno.h>
#include <stdlib.h>
#include "kmscon_module.h"
#include "shl_module.h"
#include "uterm_video.h"

/* fonts */
Expand Down Expand Up @@ -77,7 +77,7 @@ struct kmscon_font {

struct kmscon_font_ops {
const char *name;
struct kmscon_module *owner;
struct shl_module *owner;
int (*init) (struct kmscon_font *out,
const struct kmscon_font_attr *attr);
void (*destroy) (struct kmscon_font *font);
Expand Down
8 changes: 6 additions & 2 deletions src/kmscon_conf.c
Original file line number Diff line number Diff line change
Expand Up @@ -569,17 +569,21 @@ static int aftercheck_help(struct conf_option *opt, int argc, char **argv,
static int aftercheck_drm(struct conf_option *opt, int argc, char **argv,
int idx)
{
#ifndef BUILD_ENABLE_VIDEO_DRM2D
#ifndef BUILD_ENABLE_VIDEO_DRM3D
struct kmscon_conf_t *conf = KMSCON_CONF_FROM_FIELD(opt->mem, drm);

/* disable --drm if DRM runtime support is not available */
/* drmAvailable() is broken, as it only checks for GPU 0, but with
* with simpledrm, it's often the case that the first gpu ends up being
* GPU 1. So only checks if drm2d or drm3d is available */
if (conf->drm && !UTERM_VIDEO_DRM3D && !UTERM_VIDEO_DRM2D) {

if (conf->drm) {
log_info("no DRM runtime support available; disabling --drm");
conf->drm = false;
}

#endif
#endif
return 0;
}

Expand Down
22 changes: 14 additions & 8 deletions src/kmscon_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
#include "conf.h"
#include "eloop.h"
#include "kmscon_conf.h"
#include "kmscon_module.h"
#include "shl_module.h"
#include "kmscon_seat.h"
#include "shl_dlist.h"
#include "shl_log.h"
Expand Down Expand Up @@ -81,6 +81,10 @@ struct kmscon_app {
unsigned int running_seats;
};

const char be_drm3d[] = "drm3d";
const char be_drm2d[] = "drm2d";
const char be_fbdev[] = "fbdev";

static int app_seat_event(struct kmscon_seat *s, unsigned int event,
void *data)
{
Expand Down Expand Up @@ -325,7 +329,7 @@ static int app_seat_add_video(struct app_seat *seat,
struct uterm_monitor_dev *udev)
{
int ret;
const struct uterm_video_module *mode;
const char *backend;
struct app_video *vid;

if (seat->app->exiting)
Expand Down Expand Up @@ -360,11 +364,11 @@ static int app_seat_add_video(struct app_seat *seat,

if (type == UTERM_MONITOR_DRM) {
if (seat->conf->hwaccel)
mode = UTERM_VIDEO_DRM3D;
backend = be_drm3d;
else
mode = UTERM_VIDEO_DRM2D;
backend = be_drm2d;
} else {
mode = UTERM_VIDEO_FBDEV;
backend = be_fbdev;
}

unsigned int desired_width = 0;
Expand All @@ -377,14 +381,14 @@ static int app_seat_add_video(struct app_seat *seat,
desired_height = 0;
}
}
ret = uterm_video_new(&vid->video, seat->app->eloop, node, mode,
ret = uterm_video_new(&vid->video, seat->app->eloop, node, backend,
desired_width, desired_height);
if (ret) {
if (mode == UTERM_VIDEO_DRM3D) {
if (backend == be_drm3d) {
log_info("cannot create drm3d device %s on seat %s (%d); trying drm2d mode",
vid->node, seat->name, ret);
ret = uterm_video_new(&vid->video, seat->app->eloop,
node, UTERM_VIDEO_DRM2D, desired_width, desired_height);
node, be_drm2d, desired_width, desired_height);
if (ret)
goto err_node;
} else {
Expand Down Expand Up @@ -627,6 +631,8 @@ int main(int argc, char **argv)
kmscon_load_modules();
kmscon_font_register(&kmscon_font_8x16_ops);
kmscon_text_register(&kmscon_text_bblit_ops);
uterm_register_drm2d();
uterm_register_fbdev();

memset(&app, 0, sizeof(app));
app.conf_ctx = conf_ctx;
Expand Down
6 changes: 3 additions & 3 deletions src/kmscon_mod_bbulk.c
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
#include <errno.h>
#include <stdlib.h>
#include "text.h"
#include "kmscon_module_interface.h"
#include "shl_module_interface.h"
#include "shl_log.h"

#define LOG_SUBSYSTEM "mod_bbulk"
Expand All @@ -40,7 +40,7 @@ static int kmscon_bbulk_load(void)
{
int ret;

kmscon_text_bbulk_ops.owner = KMSCON_THIS_MODULE;
kmscon_text_bbulk_ops.owner = SHL_THIS_MODULE;
ret = kmscon_text_register(&kmscon_text_bbulk_ops);
if (ret) {
log_error("cannot register bbulk renderer");
Expand All @@ -55,4 +55,4 @@ static void kmscon_bbulk_unload(void)
kmscon_text_unregister(kmscon_text_bbulk_ops.name);
}

KMSCON_MODULE(NULL, kmscon_bbulk_load, kmscon_bbulk_unload, NULL);
SHL_MODULE(NULL, kmscon_bbulk_load, kmscon_bbulk_unload, NULL);
6 changes: 3 additions & 3 deletions src/kmscon_mod_gltex.c
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
#include <errno.h>
#include <stdlib.h>
#include "text.h"
#include "kmscon_module_interface.h"
#include "shl_module_interface.h"
#include "shl_log.h"

#define LOG_SUBSYSTEM "mod_gltex"
Expand All @@ -40,7 +40,7 @@ static int kmscon_gltex_load(void)
{
int ret;

kmscon_text_gltex_ops.owner = KMSCON_THIS_MODULE;
kmscon_text_gltex_ops.owner = SHL_THIS_MODULE;
ret = kmscon_text_register(&kmscon_text_gltex_ops);
if (ret) {
log_error("cannot register gltex renderer");
Expand All @@ -55,4 +55,4 @@ static void kmscon_gltex_unload(void)
kmscon_text_unregister(kmscon_text_gltex_ops.name);
}

KMSCON_MODULE(NULL, kmscon_gltex_load, kmscon_gltex_unload, NULL);
SHL_MODULE(NULL, kmscon_gltex_load, kmscon_gltex_unload, NULL);
6 changes: 3 additions & 3 deletions src/kmscon_mod_pango.c
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
#include <errno.h>
#include <stdlib.h>
#include "font.h"
#include "kmscon_module_interface.h"
#include "shl_module_interface.h"
#include "shl_log.h"

#define LOG_SUBSYSTEM "mod_pango"
Expand All @@ -40,7 +40,7 @@ static int kmscon_pango_load(void)
{
int ret;

kmscon_font_pango_ops.owner = KMSCON_THIS_MODULE;
kmscon_font_pango_ops.owner = SHL_THIS_MODULE;
ret = kmscon_font_register(&kmscon_font_pango_ops);
if (ret) {
log_error("cannot register pango font");
Expand All @@ -55,4 +55,4 @@ static void kmscon_pango_unload(void)
kmscon_font_unregister(kmscon_font_pango_ops.name);
}

KMSCON_MODULE(NULL, kmscon_pango_load, kmscon_pango_unload, NULL);
SHL_MODULE(NULL, kmscon_pango_load, kmscon_pango_unload, NULL);
6 changes: 3 additions & 3 deletions src/kmscon_mod_pixman.c
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
#include <errno.h>
#include <stdlib.h>
#include "text.h"
#include "kmscon_module_interface.h"
#include "shl_module_interface.h"
#include "shl_log.h"

#define LOG_SUBSYSTEM "mod_pixman"
Expand All @@ -39,7 +39,7 @@ static int kmscon_pixman_load(void)
{
int ret;

kmscon_text_pixman_ops.owner = KMSCON_THIS_MODULE;
kmscon_text_pixman_ops.owner = SHL_THIS_MODULE;
ret = kmscon_text_register(&kmscon_text_pixman_ops);
if (ret) {
log_error("cannot register pixman renderer");
Expand All @@ -54,4 +54,4 @@ static void kmscon_pixman_unload(void)
kmscon_text_unregister(kmscon_text_pixman_ops.name);
}

KMSCON_MODULE(NULL, kmscon_pixman_load, kmscon_pixman_unload, NULL);
SHL_MODULE(NULL, kmscon_pixman_load, kmscon_pixman_unload, NULL);
6 changes: 3 additions & 3 deletions src/kmscon_mod_unifont.c
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
#include <errno.h>
#include <stdlib.h>
#include "font.h"
#include "kmscon_module_interface.h"
#include "shl_module_interface.h"
#include "shl_log.h"

#define LOG_SUBSYSTEM "mod_unifont"
Expand All @@ -40,7 +40,7 @@ static int kmscon_unifont_load(void)
{
int ret;

kmscon_font_unifont_ops.owner = KMSCON_THIS_MODULE;
kmscon_font_unifont_ops.owner = SHL_THIS_MODULE;
ret = kmscon_font_register(&kmscon_font_unifont_ops);
if (ret) {
log_error("cannot register pango font");
Expand All @@ -55,4 +55,4 @@ static void kmscon_unifont_unload(void)
kmscon_font_unregister(kmscon_font_unifont_ops.name);
}

KMSCON_MODULE(NULL, kmscon_unifont_load, kmscon_unifont_unload, NULL);
SHL_MODULE(NULL, kmscon_unifont_load, kmscon_unifont_unload, NULL);
57 changes: 34 additions & 23 deletions src/meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -47,28 +47,38 @@ keymap_regex = [
#
shl_srcs = [
'shl_log.c',
'shl_module.c',
githead,
]
shl_dep = [
htable_deps,
xkbcommon_deps
]

shl = static_library('shl', shl_srcs, dependencies: shl_dep)
shl_deps = declare_dependency(
link_with: [shl],
include_directories: [include_directories('.')],
dependencies: shl_dep
)

if enable_glesv2
shl_srcs += [
shl_gl_srcs = [
'shl_gl_shader.c',
'shl_gl_math.c',
]
shl_dep += [
shl_gl_dep = [
shl_deps,
glesv2_deps
]
endif

shl = static_library('shl', shl_srcs, dependencies: shl_dep)
shl_deps = declare_dependency(
link_with: [shl],
shl_gl = static_library('shl_gl', shl_gl_srcs, dependencies: shl_gl_dep)
shl_gl_deps = declare_dependency(
link_with: [shl_gl],
include_directories: [include_directories('.')],
dependencies: shl_dep
dependencies: shl_gl_dep
)
endif

#
# libeloop
Expand Down Expand Up @@ -122,30 +132,32 @@ if enable_video_drm2d
'uterm_drm2d_render.c'
]
endif
uterm = static_library('uterm', uterm_srcs,
dependencies: uterm_dep
)
uterm_deps = declare_dependency(
link_with: [uterm],
dependencies: uterm_dep
)

if enable_video_drm3d
uterm_srcs += [
mod_drm3d = shared_module('mod-drm3d', [
'uterm_drm3d_video.c',
'uterm_drm3d_render.c',
'uterm_mod_drm3d.c',
embed_gen.process('uterm_drm3d_blend.vert', extra_args: shader_regex),
embed_gen.process('uterm_drm3d_blend.frag', extra_args: shader_regex),
embed_gen.process('uterm_drm3d_blit.vert', extra_args: shader_regex),
embed_gen.process('uterm_drm3d_blit.frag', extra_args: shader_regex),
embed_gen.process('uterm_drm3d_fill.vert', extra_args: shader_regex),
embed_gen.process('uterm_drm3d_fill.frag', extra_args: shader_regex),
]
uterm_dep += [
egl_deps,
gbm_deps,
glesv2_deps,
]
],
name_prefix: '',
dependencies: [uterm_deps, shl_deps, shl_gl_deps, libdrm_deps, egl_deps, gbm_deps, glesv2_deps],
install: true,
install_dir: moduledir,
)
endif
uterm = static_library('uterm', uterm_srcs,
dependencies: uterm_dep
)
uterm_deps = declare_dependency(
link_with: [uterm],
dependencies: uterm_dep
)

#
# Unifont Generator
Expand Down Expand Up @@ -207,7 +219,7 @@ if enable_renderer_gltex
embed_gen.process('text_gltex_atlas.frag', extra_args: shader_regex),
],
name_prefix: '',
dependencies: [libtsm_deps, glesv2_deps, shl_deps],
dependencies: [libtsm_deps, glesv2_deps, shl_deps, shl_gl_deps],
install: true,
install_dir: moduledir,
)
Expand Down Expand Up @@ -246,7 +258,6 @@ kmscon_srcs = [
'font_8x16.c',
'text.c',
'text_bblit.c',
'kmscon_module.c',
'kmscon_seat.c',
'kmscon_conf.c',
'kmscon_main.c',
Expand Down
Loading