From: Thierry Reding <tred...@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.st...@pengutronix.de>.

Signed-off-by: Thierry Reding <tred...@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

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to