summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Franzke <benjaminfranzke@googlemail.com>2011-04-27 16:44:16 +0200
committerBenjamin Franzke <benjaminfranzke@googlemail.com>2011-04-28 12:07:41 +0200
commit840467c648d1c1d61e1aba1e1472adaaabec11a7 (patch)
treebcb913ab930d0f7d1fb851233ab836656def9e66
parent0d895d3fd8ceb578e463f63e41e18d0ba6ad7634 (diff)
eglkms: Use gbmgbm
-rw-r--r--src/egl/opengl/eglkms.c31
1 files 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 <unistd.h>
#include <string.h>
+#include <gbm.h>
+
#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;
}