[Mesa-dev] [PATCH kmscube 2/4] Pass struct drm to init_gbm()
Thierry Reding
thierry.reding at gmail.com
Thu Apr 5 13:44:52 UTC 2018
From: Thierry Reding <treding at nvidia.com>
This helps cut down on the number of parameters that we need to pass
around. Subsequent patches will also add more data to struct drm that
init_gbm() needs to access, so passing in the struct make sure these
will be available.
Based on work by Lucas Stach <l.stach at pengutronix.de>.
Signed-off-by: Thierry Reding <treding at nvidia.com>
---
common.c | 22 +++++++++++-----------
common.h | 4 ++--
kmscube.c | 3 +--
3 files changed, 14 insertions(+), 15 deletions(-)
diff --git a/common.c b/common.c
index faecd4215039..3dcd9bd3d8f4 100644
--- a/common.c
+++ b/common.c
@@ -30,6 +30,7 @@
#include <string.h>
#include "common.h"
+#include "drm-common.h"
static struct gbm gbm;
@@ -40,25 +41,24 @@ 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, uint64_t modifier)
+const struct gbm * init_gbm(const struct drm *drm, uint64_t modifier)
{
- gbm.dev = gbm_create_device(drm_fd);
+ gbm.dev = gbm_create_device(drm->fd);
gbm.format = GBM_FORMAT_XRGB8888;
if (gbm_surface_create_with_modifiers) {
- gbm.surface = gbm_surface_create_with_modifiers(gbm.dev, w, h,
- gbm.format,
- &modifier, 1);
-
+ gbm.surface = gbm_surface_create_with_modifiers(gbm.dev,
+ drm->mode->hdisplay, drm->mode->vdisplay,
+ gbm.format, &modifier, 1);
} else {
if (modifier != DRM_FORMAT_MOD_LINEAR) {
fprintf(stderr, "Modifiers requested but support isn't available\n");
return NULL;
}
- gbm.surface = gbm_surface_create(gbm.dev, w, h,
- gbm.format,
- GBM_BO_USE_SCANOUT | GBM_BO_USE_RENDERING);
+ gbm.surface = gbm_surface_create(gbm.dev, drm->mode->hdisplay,
+ drm->mode->vdisplay, gbm.format,
+ GBM_BO_USE_SCANOUT | GBM_BO_USE_RENDERING);
}
if (!gbm.surface) {
@@ -66,8 +66,8 @@ const struct gbm * init_gbm(int drm_fd, int w, int h, uint64_t modifier)
return NULL;
}
- gbm.width = w;
- gbm.height = h;
+ gbm.width = drm->mode->hdisplay;
+ gbm.height = drm->mode->vdisplay;
return &gbm;
}
diff --git a/common.h b/common.h
index 898010dd546f..8ff1ed3a6aa3 100644
--- a/common.h
+++ b/common.h
@@ -83,8 +83,8 @@ struct gbm {
int width, height;
};
-const struct gbm * init_gbm(int drm_fd, int w, int h, uint64_t modifier);
-
+struct drm;
+const struct gbm *init_gbm(const struct drm *drm, uint64_t modifier);
struct egl {
EGLDisplay display;
diff --git a/kmscube.c b/kmscube.c
index 87a4205ddc20..b05e57df7faf 100644
--- a/kmscube.c
+++ b/kmscube.c
@@ -130,8 +130,7 @@ int main(int argc, char *argv[])
return -1;
}
- gbm = init_gbm(drm->fd, drm->mode->hdisplay, drm->mode->vdisplay,
- modifier);
+ gbm = init_gbm(drm, modifier);
if (!gbm) {
printf("failed to initialize GBM\n");
return -1;
--
2.16.3
More information about the mesa-dev
mailing list