diff options
author | David Herrmann <dh.herrmann@googlemail.com> | 2012-10-27 18:00:27 +0200 |
---|---|---|
committer | David Herrmann <dh.herrmann@googlemail.com> | 2012-10-27 18:00:27 +0200 |
commit | 5be89722708f5071ff6630fad1331d3f6d149ae3 (patch) | |
tree | 49e2973784352138344da94ffe1c197cf049fb33 /src | |
parent | dbd5fa7e74dad4cfdea32d4d6188997f63cbd0b2 (diff) |
kmscon: add --primary-gpu-only and --all-gpus options
By default, kmscon now only uses primary und auxiliary displays. All
uncategorized displays are ignored. This fixes problems with dual-GPU
systems.
--primary-gpu-only makes kmscon not use any auxiliary displays. --all-gpus
makes kmscon also use uncategorized displays.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/kmscon_conf.c | 4 | ||||
-rw-r--r-- | src/kmscon_conf.h | 4 | ||||
-rw-r--r-- | src/kmscon_main.c | 13 |
3 files changed, 21 insertions, 0 deletions
diff --git a/src/kmscon_conf.c b/src/kmscon_conf.c index 43b6b9b..0b29731 100644 --- a/src/kmscon_conf.c +++ b/src/kmscon_conf.c @@ -121,6 +121,8 @@ static void print_help() "\t --fbdev [off] Use fbdev instead of DRM\n" "\t --dumb [off] Use dumb DRM instead of hardware-\n" "\t accelerated DRM devices\n" + "\t --primary-gpu-only [off] Use primary GPU only\n" + "\t --all-gpus [off] Use all GPUs unconditionally\n" "\t --fps [50] Limit frame-rate\n" "\t --render-engine <eng> [-] Console renderer\n" "\t --render-timing [off] Print renderer timing information\n" @@ -480,6 +482,8 @@ int kmscon_conf_new(struct conf_ctx **out) /* Video Options */ CONF_OPTION_BOOL(0, "fbdev", &conf->fbdev, false), CONF_OPTION_BOOL(0, "dumb", &conf->dumb, false), + CONF_OPTION_BOOL(0, "primary-gpu-only", &conf->primary_gpu_only, false), + CONF_OPTION_BOOL(0, "all-gpus", &conf->all_gpus, false), CONF_OPTION_UINT(0, "fps", &conf->fps, 50), CONF_OPTION_STRING(0, "render-engine", &conf->render_engine, NULL), CONF_OPTION_BOOL(0, "render-timing", &conf->render_timing, false), diff --git a/src/kmscon_conf.h b/src/kmscon_conf.h index bd759e6..8348305 100644 --- a/src/kmscon_conf.h +++ b/src/kmscon_conf.h @@ -111,6 +111,10 @@ struct kmscon_conf_t { bool fbdev; /* use dumb DRM devices */ bool dumb; + /* use only primary GPU */ + bool primary_gpu_only; + /* use all GPUs unconditionally */ + bool all_gpus; /* frame-rate limit */ unsigned int fps; /* render engine */ diff --git a/src/kmscon_main.c b/src/kmscon_main.c index 90c3b23..ea3ef01 100644 --- a/src/kmscon_main.c +++ b/src/kmscon_main.c @@ -224,6 +224,19 @@ static int app_seat_add_video(struct app_seat *seat, } } + if (!seat->conf->all_gpus) { + if (seat->conf->primary_gpu_only && !(flags & UTERM_MONITOR_PRIMARY)) { + log_info("ignoring video device %s on seat %s as it is no primary GPU", + node, seat->name); + return -ERANGE; + } + if (!(flags & (UTERM_MONITOR_PRIMARY | UTERM_MONITOR_AUX))) { + log_info("ignoring video device %s on seat %s as it is neither a primary nor auxiliary GPU", + node, seat->name); + return -ERANGE; + } + } + log_debug("new video device %s on seat %s", node, seat->name); vid = malloc(sizeof(*vid)); |