summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDavid Herrmann <dh.herrmann@googlemail.com>2012-10-27 18:00:27 +0200
committerDavid Herrmann <dh.herrmann@googlemail.com>2012-10-27 18:00:27 +0200
commit5be89722708f5071ff6630fad1331d3f6d149ae3 (patch)
tree49e2973784352138344da94ffe1c197cf049fb33 /src
parentdbd5fa7e74dad4cfdea32d4d6188997f63cbd0b2 (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.c4
-rw-r--r--src/kmscon_conf.h4
-rw-r--r--src/kmscon_main.c13
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));