From 840467c648d1c1d61e1aba1e1472adaaabec11a7 Mon Sep 17 00:00:00 2001 From: Benjamin Franzke Date: Wed, 27 Apr 2011 16:44:16 +0200 Subject: eglkms: Use gbm --- src/egl/opengl/eglkms.c | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/src/egl/opengl/eglkms.c b/src/egl/opengl/eglkms.c index 54936cb7..80ccc889 100644 --- a/src/egl/opengl/eglkms.c +++ b/src/egl/opengl/eglkms.c @@ -14,6 +14,8 @@ #include #include +#include + #ifdef GL_OES_EGL_image static PFNGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC glEGLImageTargetRenderbufferStorageOES_func; #endif @@ -134,18 +136,10 @@ int main(int argc, char *argv[]) EGLint major, minor; const char *ver, *extensions; GLuint fb, color_rb, depth_rb; - EGLint handle, stride; struct kms kms; + uint32_t handle, stride; 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 - }; - fd = open(device_name, O_RDWR); if (fd < 0) { /* Probably permissions error */ @@ -153,7 +147,9 @@ int main(int argc, char *argv[]) return -1; } - dpy = eglGetDRMDisplayMESA(fd); + struct gbm_device *gbm = gbm_device_create(fd); + + dpy = eglGetDisplay((EGLNativeDisplayType) gbm); if (dpy == EGL_NO_DISPLAY) { fprintf(stderr, "eglGetDisplay() failed\n"); return -1; @@ -194,11 +190,15 @@ 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); + struct gbm_bo *bo; + + 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); @@ -247,7 +247,8 @@ int main(int argc, char *argv[]) return -1; } - getchar(); + sleep(3); + //getchar(); return 0; } -- cgit v1.2.3