Make clients at least compile for now
diff --git a/clients/gears.c b/clients/gears.c
index 0059d07..4b02943 100644
--- a/clients/gears.c
+++ b/clients/gears.c
@@ -249,11 +249,11 @@
resize_window(struct gears *gears)
{
EGLint attribs[] = {
- EGL_IMAGE_WIDTH_INTEL, 0,
- EGL_IMAGE_HEIGHT_INTEL, 0,
- EGL_IMAGE_FORMAT_INTEL, EGL_FORMAT_RGBA_8888_KHR,
- EGL_IMAGE_USE_INTEL, EGL_IMAGE_USE_SHARE_INTEL |
- EGL_IMAGE_USE_SCANOUT_INTEL,
+ EGL_WIDTH, 0,
+ EGL_HEIGHT, 0,
+ EGL_IMAGE_FORMAT_MESA, EGL_IMAGE_FORMAT_ARGB8888_MESA,
+ EGL_IMAGE_USE_MESA, EGL_IMAGE_USE_SHARE_MESA |
+ EGL_IMAGE_USE_SCANOUT_MESA,
EGL_NONE
};
@@ -275,9 +275,7 @@
eglDestroyImageKHR(gears->display, gears->image);
attribs[1] = gears->rectangle.width;
attribs[3] = gears->rectangle.height;
- gears->image = eglCreateImageKHR(gears->display, gears->context,
- EGL_SYSTEM_IMAGE_INTEL,
- NULL, attribs);
+ gears->image = eglCreateDRMImageMESA(gears->display, attribs);
glBindRenderbuffer(GL_RENDERBUFFER_EXT, gears->color_rbo);
glEGLImageTargetRenderbufferStorageOES(GL_RENDERBUFFER, gears->image);
@@ -341,10 +339,10 @@
uint32_t frame, uint32_t timestamp)
{
struct gears *gears = data;
- EGLint name, handle, stride;
+ EGLint name, stride;
- eglShareImageINTEL(gears->display, gears->context,
- gears->image, 0, &name, &handle, &stride);
+ eglExportDRMImageMESA(gears->display,
+ gears->image, &name, NULL, &stride);
window_copy(gears->window, &gears->rectangle, name, stride);
@@ -361,29 +359,46 @@
static struct gears *
gears_create(struct display *display, int drm_fd)
{
+ PFNEGLGETTYPEDDISPLAYMESA get_typed_display_mesa;
const int x = 200, y = 200, width = 450, height = 500;
- EGLint major, minor;
- EGLDisplayTypeDRMMESA drm_display;
+ EGLint major, minor, count;
+ EGLConfig config;
struct gears *gears;
int i;
+ static const EGLint config_attribs[] = {
+ EGL_SURFACE_TYPE, 0,
+ EGL_NO_SURFACE_CAPABLE_MESA, EGL_OPENGL_BIT,
+ EGL_RENDERABLE_TYPE, EGL_OPENGL_BIT,
+ EGL_NONE
+ };
+
+ get_typed_display_mesa =
+ (PFNEGLGETTYPEDDISPLAYMESA) eglGetProcAddress("eglGetTypedDisplayMESA");
+ if (get_typed_display_mesa == NULL)
+ die("eglGetDisplayMESA() not found\n");
+
gears = malloc(sizeof *gears);
memset(gears, 0, sizeof *gears);
gears->d = display;
gears->window = window_create(display, "Wayland Gears",
x, y, width, height);
- drm_display.type = EGL_DISPLAY_TYPE_DRM_MESA;
- drm_display.device = NULL;
- drm_display.fd = drm_fd;
- gears->display = eglGetDisplay((EGLNativeDisplayType) &drm_display);
+ gears->display = get_typed_display_mesa(EGL_DRM_DISPLAY_TYPE_MESA,
+ (void *) drm_fd);
if (gears->display == NULL)
die("failed to create egl display\n");
if (!eglInitialize(gears->display, &major, &minor))
die("failed to initialize display\n");
- gears->context = eglCreateContext(gears->display, NULL, NULL, NULL);
+ if (!eglChooseConfig(gears->display, config_attribs, &config, 1, &count) ||
+ count == 0)
+ die("eglChooseConfig() failed\n");
+
+ eglBindAPI(EGL_OPENGL_API);
+
+ gears->context = eglCreateContext(gears->display, config, EGL_NO_CONTEXT, NULL);
if (gears->context == NULL)
die("failed to create context\n");