diff options
author | Ben Widawsky <ben@bwidawsk.net> | 2016-12-01 10:24:47 -0800 |
---|---|---|
committer | Ben Widawsky <ben@bwidawsk.net> | 2017-04-14 14:14:16 -0700 |
commit | 5816934b875f7fd01061a7a9b72d8b6eff99910f (patch) | |
tree | 87807695da50691909d9191e0db0087bd1618585 /common.c | |
parent | 13bd303d3ea8eb10f107dbd82be0259c5e5bd765 (diff) | |
download | kmscube-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.c | 18 |
1 files changed, 12 insertions, 6 deletions
@@ -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 |