From f88ae45e41e591a47ed5729d0c4d3617a8dd5c8e Mon Sep 17 00:00:00 2001 From: =?utf8?q?Kristian=20H=C3=B8gsberg?= Date: Sat, 5 Jun 2010 10:17:55 -0400 Subject: [PATCH] Make clients at least compile for now --- clients/Makefile | 12 ++++---- clients/gears.c | 51 +++++++++++++++++++++----------- wayland-glib.c => clients/wayland-glib.c | 0 wayland-glib.h => clients/wayland-glib.h | 0 window.c => clients/window.c | 4 +-- window.h => clients/window.h | 0 6 files changed, 41 insertions(+), 26 deletions(-) rename wayland-glib.c => clients/wayland-glib.c (100%) rename wayland-glib.h => clients/wayland-glib.h (100%) rename window.c => clients/window.c (99%) rename window.h => clients/window.h (100%) diff --git a/clients/Makefile b/clients/Makefile index 4771439..7dfafe8 100644 --- a/clients/Makefile +++ b/clients/Makefile @@ -9,11 +9,11 @@ clean : rm -f $(egl_clients) $(cairo_clients) *.o flower : flower.o wayland-glib.o -gears : gears.o window.o wayland-glib.o cairo-util.o +gears : gears.o window.o wayland-glib.o screenshot : screenshot.o wayland-glib.o -terminal : terminal.o window.o wayland-glib.o cairo-util.o -image : image.o window.o wayland-glib.o cairo-util.o -view : view.o window.o wayland-glib.o cairo-util.o +terminal : terminal.o window.o wayland-glib.o +image : image.o window.o wayland-glib.o +view : view.o window.o wayland-glib.o terminal : LDLIBS += -lutil image : CFLAGS += $(GDK_PIXBUF_CFLAGS) @@ -22,6 +22,6 @@ view : CFLAGS += $(POPPLER_CFLAGS) view : LDLIBS += $(POPPLER_LIBS) $(egl_clients) : CFLAGS += $(EGL_CLIENT_CFLAGS) -$(egl_clients) : LDLIBS += -L.. -lwayland $(EGL_CLIENT_LIBS) -lrt +$(egl_clients) : LDLIBS += -L.. -lwayland $(EGL_CLIENT_LIBS) -lrt -lm $(cairo_clients) : CFLAGS += $(CAIRO_CLIENT_CFLAGS) -$(cairo_clients) : LDLIBS += -L.. -lwayland $(CAIRO_CLIENT_LIBS) -lrt +$(cairo_clients) : LDLIBS += -L.. -lwayland $(CAIRO_CLIENT_LIBS) -lrt -lm 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 @@ static void 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 @@ resize_window(struct gears *gears) 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 @@ handle_frame(void *data, 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 const struct wl_compositor_listener compositor_listener = { 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"); diff --git a/wayland-glib.c b/clients/wayland-glib.c similarity index 100% rename from wayland-glib.c rename to clients/wayland-glib.c diff --git a/wayland-glib.h b/clients/wayland-glib.h similarity index 100% rename from wayland-glib.h rename to clients/wayland-glib.h diff --git a/window.c b/clients/window.c similarity index 99% rename from window.c rename to clients/window.c index c0808dc..8008017 100644 --- a/window.c +++ b/clients/window.c @@ -36,7 +36,7 @@ #include "wayland-util.h" #include "wayland-client.h" #include "wayland-glib.h" -#include "cairo-util.h" +#include "../cairo-util.h" #include "window.h" @@ -157,7 +157,7 @@ window_draw_decorations(struct window *window) rounded_rect(cr, -1, -1, width + 1, height + 1, radius); cairo_fill(cr); -#define SLOW_BUT_PWETTY +#define SLOW_BUT_PWETTY_not_right_now #ifdef SLOW_BUT_PWETTY /* FIXME: Aw, pretty drop shadows now have to fallback to sw. * Ideally we should have convolution filters in cairo, but we diff --git a/window.h b/clients/window.h similarity index 100% rename from window.h rename to clients/window.h -- 2.7.4