summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Clark <robdclark@chromium.org>2020-09-02 08:18:32 -0700
committerRob Clark <robdclark@chromium.org>2020-09-02 08:18:32 -0700
commit31d162224b29d65715b70b307818c383be7b4f3c (patch)
tree4e53b6e3221a198c658506281c1b762e4b215bdd
parent4660a7dca6512b6e658759d00cff7d4ad2a2059d (diff)
gbm: split out helper to initialize surface
-rw-r--r--common.c23
1 files changed, 15 insertions, 8 deletions
diff --git a/common.c b/common.c
index 95eecf5..9ee97b6 100644
--- a/common.c
+++ b/common.c
@@ -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)