From 930222e0f44344b2061b274715a4b29093c12f88 Mon Sep 17 00:00:00 2001 From: Benjamin Franzke Date: Wed, 27 Apr 2011 16:44:16 +0200 Subject: eglkms: Use gbm instead of EGL_MESA_drm_image --- src/egl/opengl/eglkms.c | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/src/egl/opengl/eglkms.c b/src/egl/opengl/eglkms.c index 9d159f76..033ca488 100644 --- a/src/egl/opengl/eglkms.c +++ b/src/egl/opengl/eglkms.c @@ -4,6 +4,7 @@ #define EGL_EGLEXT_PROTOTYPES #define GL_GLEXT_PROTOTYPES +#include #include "gl_wrap.h" #include #include @@ -134,17 +135,11 @@ int main(int argc, char *argv[]) EGLint major, minor; const char *ver, *extensions; GLuint fb, color_rb, depth_rb; - EGLint handle, stride; + uint32_t handle, stride; struct kms kms; int ret, fd; - - EGLint image_attribs[] = { - EGL_WIDTH, 0, - EGL_HEIGHT, 0, - EGL_DRM_BUFFER_FORMAT_MESA, EGL_DRM_BUFFER_FORMAT_ARGB32_MESA, - EGL_DRM_BUFFER_USE_MESA, EGL_DRM_BUFFER_USE_SCANOUT_MESA, - EGL_NONE - }; + struct gbm_device *gbm; + struct gbm_bo *bo; fd = open(device_name, O_RDWR); if (fd < 0) { @@ -153,7 +148,9 @@ int main(int argc, char *argv[]) return -1; } - dpy = eglGetDRMDisplayMESA(fd); + gbm = gbm_create_device(fd); + + dpy = eglGetDisplay(gbm); if (dpy == EGL_NO_DISPLAY) { fprintf(stderr, "eglGetDisplay() failed\n"); return -1; @@ -194,11 +191,13 @@ int main(int argc, char *argv[]) glGenFramebuffers(1, &fb); glBindFramebuffer(GL_FRAMEBUFFER_EXT, fb); - image_attribs[1] = kms.mode.hdisplay; - image_attribs[3] = kms.mode.vdisplay; - image = eglCreateDRMImageMESA (dpy, image_attribs); + bo = gbm_bo_create(gbm, kms.mode.hdisplay, kms.mode.vdisplay, + GBM_BO_FORMAT_XRGB8888, + GBM_BO_USE_SCANOUT | GBM_BO_USE_RENDERING); + handle = gbm_bo_get_handle(bo).u32; + stride = gbm_bo_get_pitch(bo); - eglExportDRMImageMESA(dpy, image, NULL, &handle, &stride); + image = eglCreateImageKHR(dpy, NULL, EGL_NATIVE_PIXMAP_KHR, bo, NULL); glGenRenderbuffers(1, &color_rb); glBindRenderbuffer(GL_RENDERBUFFER_EXT, color_rb); -- cgit v1.2.3