summaryrefslogtreecommitdiff
path: root/common.c
diff options
context:
space:
mode:
authorBen Widawsky <ben@bwidawsk.net>2016-12-01 10:24:47 -0800
committerBen Widawsky <ben@bwidawsk.net>2017-04-14 14:14:16 -0700
commit5816934b875f7fd01061a7a9b72d8b6eff99910f (patch)
tree87807695da50691909d9191e0db0087bd1618585 /common.c
parent13bd303d3ea8eb10f107dbd82be0259c5e5bd765 (diff)
downloadkmscube-5816934b875f7fd01061a7a9b72d8b6eff99910f.tar.gz
common: Give cmdline parameter for forcing modifiers
Signed-off-by: Ben Widawsky <ben@bwidawsk.net> Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
Diffstat (limited to 'common.c')
-rw-r--r--common.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/common.c b/common.c
index eda92b0..64c4f91 100644
--- a/common.c
+++ b/common.c
@@ -31,10 +31,6 @@
static struct gbm gbm;
-#ifndef DRM_FORMAT_MOD_LINEAR
-#define DRM_FORMAT_MOD_LINEAR 0
-#endif
-
#ifdef HAVE_GBM_MODIFIERS
static int
get_modifiers(uint64_t **mods)
@@ -46,17 +42,27 @@ get_modifiers(uint64_t **mods)
}
#endif
-const struct gbm * init_gbm(int drm_fd, int w, int h)
+const struct gbm * init_gbm(int drm_fd, int w, int h, uint64_t modifier)
{
gbm.dev = gbm_create_device(drm_fd);
#ifndef HAVE_GBM_MODIFIERS
+ if (modifier != DRM_FORMAT_MOD_INVALID) {
+ fprintf(stderr, "Modifiers requested but support isn't available\n");
+ return NULL;
+ }
gbm.surface = gbm_surface_create(gbm.dev, w, h,
GBM_FORMAT_XRGB8888,
GBM_BO_USE_SCANOUT | GBM_BO_USE_RENDERING);
#else
uint64_t *mods;
- int count = get_modifiers(&mods);
+ int count;
+ if (modifier != DRM_FORMAT_MOD_INVALID) {
+ count = 1;
+ mods = &modifier;
+ } else {
+ count = get_modifiers(&mods);
+ }
gbm.surface = gbm_surface_create_with_modifiers(gbm.dev, w, h,
GBM_FORMAT_XRGB8888, mods, count);
#endif