diff options
author | Rob Clark <robdclark@chromium.org> | 2020-09-02 08:18:32 -0700 |
---|---|---|
committer | Rob Clark <robdclark@chromium.org> | 2020-09-02 08:18:32 -0700 |
commit | 31d162224b29d65715b70b307818c383be7b4f3c (patch) | |
tree | 4e53b6e3221a198c658506281c1b762e4b215bdd | |
parent | 4660a7dca6512b6e658759d00cff7d4ad2a2059d (diff) |
gbm: split out helper to initialize surface
-rw-r--r-- | common.c | 23 |
1 files changed, 15 insertions, 8 deletions
@@ -41,14 +41,11 @@ gbm_surface_create_with_modifiers(struct gbm_device *gbm, const uint64_t *modifiers, const unsigned int count); -const struct gbm * init_gbm(int drm_fd, int w, int h, uint32_t format, uint64_t modifier) +static struct gbm * init_surface(uint64_t modifier) { - gbm.dev = gbm_create_device(drm_fd); - gbm.format = format; - gbm.surface = NULL; - if (gbm_surface_create_with_modifiers) { - gbm.surface = gbm_surface_create_with_modifiers(gbm.dev, w, h, + gbm.surface = gbm_surface_create_with_modifiers(gbm.dev, + gbm.width, gbm.height, gbm.format, &modifier, 1); @@ -59,7 +56,8 @@ const struct gbm * init_gbm(int drm_fd, int w, int h, uint32_t format, uint64_t fprintf(stderr, "Modifiers requested but support isn't available\n"); return NULL; } - gbm.surface = gbm_surface_create(gbm.dev, w, h, + gbm.surface = gbm_surface_create(gbm.dev, + gbm.width, gbm.height, gbm.format, GBM_BO_USE_SCANOUT | GBM_BO_USE_RENDERING); @@ -70,10 +68,19 @@ const struct gbm * init_gbm(int drm_fd, int w, int h, uint32_t format, uint64_t return NULL; } + return &gbm; +} + +const struct gbm * init_gbm(int drm_fd, int w, int h, uint32_t format, uint64_t modifier) +{ + gbm.dev = gbm_create_device(drm_fd); + gbm.format = format; + gbm.surface = NULL; + gbm.width = w; gbm.height = h; - return &gbm; + return init_surface(modifier); } static bool has_ext(const char *extension_list, const char *ext) |