common/egl_g3d_st.c \
common/egl_g3d_sync.c \
common/native_helper.c \
- common/native_wayland_drm_bufmgr_helper.c
+ common/native_wayland_drm_bufmgr.c
if HAVE_EGL_PLATFORM_X11
libegl_la_SOURCES += \
const struct native_display_buffer *buffer;
const struct native_display_modeset *modeset;
- const struct native_display_wayland_bufmgr *wayland_bufmgr;
+ struct native_display_wayland_bufmgr *wayland_bufmgr;
};
/**
--- /dev/null
+#include <stdint.h>
+#include <string.h>
+
+#include "native.h"
+#include "util/u_inlines.h"
+#include "state_tracker/drm_driver.h"
+
+#ifdef HAVE_WAYLAND_BACKEND
+
+#include <wayland-server.h>
+#include <wayland-drm-server-protocol.h>
+
+#include "native_wayland_drm_bufmgr.h"
+
+#include "wayland-drm.h"
+
+struct wayland_drm_bufmgr {
+ struct native_display_wayland_bufmgr base;
+
+ struct wl_drm *wl_server_drm;
+ char *device_name;
+
+ void *user_data;
+
+ wayland_drm_bufmgr_authenticate_func authenticate;
+};
+
+static INLINE struct wayland_drm_bufmgr *
+wayland_drm_bufmgr(const struct native_display_wayland_bufmgr *base)
+{
+ return (struct wayland_drm_bufmgr *) base;
+}
+
+static int
+wayland_drm_bufmgr_authenticate(void *user_data, uint32_t magic)
+{
+ struct native_display *ndpy = user_data;
+ struct wayland_drm_bufmgr *bufmgr;
+
+ bufmgr = wayland_drm_bufmgr(ndpy->wayland_bufmgr);
+
+ return bufmgr->authenticate(user_data, magic);
+}
+
+static void
+wayland_drm_bufmgr_reference_buffer(void *user_data, uint32_t name, int fd,
+ struct wl_drm_buffer *buffer)
+{
+ struct native_display *ndpy = user_data;
+ struct pipe_resource templ;
+ struct winsys_handle wsh;
+ enum pipe_format pf;
+
+ switch (buffer->format) {
+ case WL_DRM_FORMAT_ARGB8888:
+ pf = PIPE_FORMAT_B8G8R8A8_UNORM;
+ break;
+ case WL_DRM_FORMAT_XRGB8888:
+ pf = PIPE_FORMAT_B8G8R8X8_UNORM;
+ break;
+ default:
+ pf = PIPE_FORMAT_NONE;
+ break;
+ }
+
+ if (pf == PIPE_FORMAT_NONE)
+ return;
+
+ memset(&templ, 0, sizeof(templ));
+ templ.target = PIPE_TEXTURE_2D;
+ templ.format = pf;
+ templ.bind = PIPE_BIND_RENDER_TARGET | PIPE_BIND_SAMPLER_VIEW;
+ templ.width0 = buffer->buffer.width;
+ templ.height0 = buffer->buffer.height;
+ templ.depth0 = 1;
+ templ.array_size = 1;
+
+ memset(&wsh, 0, sizeof(wsh));
+ wsh.handle = name;
+ wsh.stride = buffer->stride[0];
+
+ buffer->driver_buffer =
+ ndpy->screen->resource_from_handle(ndpy->screen, &templ, &wsh);
+}
+
+static void
+wayland_drm_bufmgr_unreference_buffer(void *user_data,
+ struct wl_drm_buffer *buffer)
+{
+ struct pipe_resource *resource = buffer->driver_buffer;
+
+ pipe_resource_reference(&resource, NULL);
+}
+
+static struct wayland_drm_callbacks wl_drm_callbacks = {
+ wayland_drm_bufmgr_authenticate,
+ wayland_drm_bufmgr_reference_buffer,
+ wayland_drm_bufmgr_unreference_buffer
+};
+
+static boolean
+wayland_drm_bufmgr_bind_display(struct native_display *ndpy,
+ struct wl_display *wl_dpy)
+{
+ struct wayland_drm_bufmgr *bufmgr;
+
+ bufmgr = wayland_drm_bufmgr(ndpy->wayland_bufmgr);
+
+ if (bufmgr->wl_server_drm)
+ return FALSE;
+
+ bufmgr->wl_server_drm = wayland_drm_init(wl_dpy, bufmgr->device_name,
+ &wl_drm_callbacks, ndpy, 0);
+
+ if (!bufmgr->wl_server_drm)
+ return FALSE;
+
+ return TRUE;
+}
+
+static boolean
+wayland_drm_bufmgr_unbind_display(struct native_display *ndpy,
+ struct wl_display *wl_dpy)
+{
+ struct wayland_drm_bufmgr *bufmgr;
+
+ bufmgr = wayland_drm_bufmgr(ndpy->wayland_bufmgr);
+
+ if (!bufmgr->wl_server_drm)
+ return FALSE;
+
+ wayland_drm_uninit(bufmgr->wl_server_drm);
+ bufmgr->wl_server_drm = NULL;
+
+ return TRUE;
+}
+
+static struct pipe_resource *
+wayland_drm_bufmgr_wl_buffer_get_resource(struct native_display *ndpy,
+ struct wl_buffer *buffer)
+{
+ return wayland_drm_buffer_get_buffer(buffer);
+}
+
+static EGLBoolean
+wayland_drm_bufmgr_query_buffer(struct native_display *ndpy,
+ struct wl_buffer *_buffer,
+ EGLint attribute, EGLint *value)
+{
+ struct wl_drm_buffer *buffer = (struct wl_drm_buffer *) _buffer;
+ struct pipe_resource *resource = buffer->driver_buffer;
+
+ if (!wayland_buffer_is_drm(&buffer->buffer))
+ return EGL_FALSE;
+
+ switch (attribute) {
+ case EGL_TEXTURE_FORMAT:
+ switch (resource->format) {
+ case PIPE_FORMAT_B8G8R8A8_UNORM:
+ *value = EGL_TEXTURE_RGBA;
+ return EGL_TRUE;
+ case PIPE_FORMAT_B8G8R8X8_UNORM:
+ *value = EGL_TEXTURE_RGB;
+ return EGL_TRUE;
+ default:
+ return EGL_FALSE;
+ }
+ case EGL_WIDTH:
+ *value = buffer->buffer.width;
+ return EGL_TRUE;
+ case EGL_HEIGHT:
+ *value = buffer->buffer.height;
+ return EGL_TRUE;
+ default:
+ return EGL_FALSE;
+ }
+}
+
+
+struct native_display_wayland_bufmgr *
+wayland_drm_bufmgr_create(wayland_drm_bufmgr_authenticate_func authenticate,
+ void *user_data, char *device_name)
+{
+ struct wayland_drm_bufmgr *bufmgr;
+
+ bufmgr = calloc(1, sizeof *bufmgr);
+ if (!bufmgr)
+ return NULL;
+
+ bufmgr->user_data = user_data;
+ bufmgr->authenticate = authenticate;
+ bufmgr->device_name = strdup(device_name);
+
+ bufmgr->base.bind_display = wayland_drm_bufmgr_bind_display;
+ bufmgr->base.unbind_display = wayland_drm_bufmgr_unbind_display;
+ bufmgr->base.buffer_get_resource = wayland_drm_bufmgr_wl_buffer_get_resource;
+ bufmgr->base.query_buffer = wayland_drm_bufmgr_query_buffer;
+
+ return &bufmgr->base;
+}
+
+void
+wayland_drm_bufmgr_destroy(struct native_display_wayland_bufmgr *_bufmgr)
+{
+ struct wayland_drm_bufmgr *bufmgr = wayland_drm_bufmgr(_bufmgr);
+
+ if (!bufmgr)
+ return;
+
+ free(bufmgr->device_name);
+ free(bufmgr);
+}
+
+#endif
--- /dev/null
+/*
+ * Mesa 3-D graphics library
+ *
+ * Copyright (C) 2011 Benjamin Franzke <benjaminfranzke@googlemail.com>
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+#ifndef _NATIVE_WAYLAND_DRM_BUFMGR_H_
+#define _NATIVE_WAYLAND_DRM_BUFMGR_H_
+
+typedef int (*wayland_drm_bufmgr_authenticate_func)(void *, uint32_t);
+
+struct native_display_wayland_bufmgr *
+wayland_drm_bufmgr_create(wayland_drm_bufmgr_authenticate_func authenticate,
+ void *user_data, char *device_name);
+
+void
+wayland_drm_bufmgr_destroy(struct native_display_wayland_bufmgr *bufmgr);
+
+#endif /* _NATIVE_WAYLAND_DRM_BUFMGR_H_ */
+++ /dev/null
-#include <stdint.h>
-#include <string.h>
-
-#include "native.h"
-#include "util/u_inlines.h"
-#include "state_tracker/drm_driver.h"
-
-#ifdef HAVE_WAYLAND_BACKEND
-
-#include <wayland-server.h>
-#include <wayland-drm-server-protocol.h>
-
-#include "native_wayland_drm_bufmgr_helper.h"
-
-void
-egl_g3d_wl_drm_helper_reference_buffer(void *user_data, uint32_t name, int fd,
- struct wl_drm_buffer *buffer)
-{
- struct native_display *ndpy = user_data;
- struct pipe_resource templ;
- struct winsys_handle wsh;
- enum pipe_format pf;
-
- switch (buffer->format) {
- case WL_DRM_FORMAT_ARGB8888:
- pf = PIPE_FORMAT_B8G8R8A8_UNORM;
- break;
- case WL_DRM_FORMAT_XRGB8888:
- pf = PIPE_FORMAT_B8G8R8X8_UNORM;
- break;
- default:
- pf = PIPE_FORMAT_NONE;
- break;
- }
-
- if (pf == PIPE_FORMAT_NONE)
- return;
-
- memset(&templ, 0, sizeof(templ));
- templ.target = PIPE_TEXTURE_2D;
- templ.format = pf;
- templ.bind = PIPE_BIND_RENDER_TARGET | PIPE_BIND_SAMPLER_VIEW;
- templ.width0 = buffer->buffer.width;
- templ.height0 = buffer->buffer.height;
- templ.depth0 = 1;
- templ.array_size = 1;
-
- memset(&wsh, 0, sizeof(wsh));
- wsh.handle = name;
- wsh.stride = buffer->stride[0];
-
- buffer->driver_buffer =
- ndpy->screen->resource_from_handle(ndpy->screen, &templ, &wsh);
-}
-
-void
-egl_g3d_wl_drm_helper_unreference_buffer(void *user_data,
- struct wl_drm_buffer *buffer)
-{
- struct pipe_resource *resource = buffer->driver_buffer;
-
- pipe_resource_reference(&resource, NULL);
-}
-
-struct pipe_resource *
-egl_g3d_wl_drm_common_wl_buffer_get_resource(struct native_display *ndpy,
- struct wl_buffer *buffer)
-{
- return wayland_drm_buffer_get_buffer(buffer);
-}
-
-EGLBoolean
-egl_g3d_wl_drm_common_query_buffer(struct native_display *ndpy,
- struct wl_buffer *_buffer,
- EGLint attribute, EGLint *value)
-{
- struct wl_drm_buffer *buffer = (struct wl_drm_buffer *) _buffer;
- struct pipe_resource *resource = buffer->driver_buffer;
-
- if (!wayland_buffer_is_drm(&buffer->buffer))
- return EGL_FALSE;
-
- switch (attribute) {
- case EGL_TEXTURE_FORMAT:
- switch (resource->format) {
- case PIPE_FORMAT_B8G8R8A8_UNORM:
- *value = EGL_TEXTURE_RGBA;
- return EGL_TRUE;
- case PIPE_FORMAT_B8G8R8X8_UNORM:
- *value = EGL_TEXTURE_RGB;
- return EGL_TRUE;
- default:
- return EGL_FALSE;
- }
- case EGL_WIDTH:
- *value = buffer->buffer.width;
- return EGL_TRUE;
- case EGL_HEIGHT:
- *value = buffer->buffer.height;
- return EGL_TRUE;
- default:
- return EGL_FALSE;
- }
-}
-
-#endif
+++ /dev/null
-/*
- * Mesa 3-D graphics library
- *
- * Copyright (C) 2011 Benjamin Franzke <benjaminfranzke@googlemail.com>
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- */
-
-#ifndef _NATIVE_WAYLAND_DRM_BUFMGR_HELPER_H_
-#define _NATIVE_WAYLAND_DRM_BUFMGR_HELPER_H_
-
-#include "wayland-drm.h"
-
-void
-egl_g3d_wl_drm_helper_reference_buffer(void *user_data, uint32_t name, int fd,
- struct wl_drm_buffer *buffer);
-
-void
-egl_g3d_wl_drm_helper_unreference_buffer(void *user_data,
- struct wl_drm_buffer *buffer);
-
-struct pipe_resource *
-egl_g3d_wl_drm_common_wl_buffer_get_resource(struct native_display *ndpy,
- struct wl_buffer *buffer);
-
-EGLBoolean
-egl_g3d_wl_drm_common_query_buffer(struct native_display *ndpy,
- struct wl_buffer *buffer,
- EGLint attribute, EGLint *value);
-
-#endif /* _NATIVE_WAYLAND_DRM_BUFMGR_HELPER_H_ */
FREE(drmdpy->device_name);
+ wayland_drm_bufmgr_destroy(ndpy->wayland_bufmgr);
+
if (drmdpy->own_gbm) {
gbm_device_destroy(&drmdpy->gbmdrm->base.base);
if (drmdpy->fd >= 0)
return drmAuthMagic(drmdpy->fd, magic);
}
-static struct wayland_drm_callbacks wl_drm_callbacks = {
- drm_display_authenticate,
- egl_g3d_wl_drm_helper_reference_buffer,
- egl_g3d_wl_drm_helper_unreference_buffer
-};
-
-static boolean
-drm_display_bind_wayland_display(struct native_display *ndpy,
- struct wl_display *wl_dpy)
-{
- struct drm_display *drmdpy = drm_display(ndpy);
-
- if (drmdpy->wl_server_drm)
- return FALSE;
-
- drmdpy->wl_server_drm = wayland_drm_init(wl_dpy,
- drmdpy->device_name,
- &wl_drm_callbacks, ndpy, 0);
-
- if (!drmdpy->wl_server_drm)
- return FALSE;
-
- return TRUE;
-}
-
-static boolean
-drm_display_unbind_wayland_display(struct native_display *ndpy,
- struct wl_display *wl_dpy)
-{
- struct drm_display *drmdpy = drm_display(ndpy);
-
- if (!drmdpy->wl_server_drm)
- return FALSE;
-
- wayland_drm_uninit(drmdpy->wl_server_drm);
- drmdpy->wl_server_drm = NULL;
-
- return TRUE;
-}
-
-static struct native_display_wayland_bufmgr drm_display_wayland_bufmgr = {
- drm_display_bind_wayland_display,
- drm_display_unbind_wayland_display,
- egl_g3d_wl_drm_common_wl_buffer_get_resource,
- egl_g3d_wl_drm_common_query_buffer
-};
-
#endif /* HAVE_WAYLAND_BACKEND */
static struct native_surface *
drmdpy->base.buffer = &drm_display_buffer;
#ifdef HAVE_WAYLAND_BACKEND
if (drmdpy->device_name)
- drmdpy->base.wayland_bufmgr = &drm_display_wayland_bufmgr;
+ drmdpy->base.wayland_bufmgr = wayland_drm_bufmgr_create(
+ drm_display_authenticate, drmdpy, drmdpy->device_name);
#endif
drm_display_init_modeset(&drmdpy->base);
#include "common/native_helper.h"
#ifdef HAVE_WAYLAND_BACKEND
-#include "common/native_wayland_drm_bufmgr_helper.h"
+#include "common/native_wayland_drm_bufmgr.h"
#endif
#include "gbm_gallium_drmint.h"
#include "wayland-drm-client-protocol.h"
#include "wayland-egl-priv.h"
-#include "common/native_wayland_drm_bufmgr_helper.h"
+#include "common/native_wayland_drm_bufmgr.h"
#include <xf86drm.h>
#include <sys/types.h>
const struct native_event_handler *event_handler;
struct wl_drm *wl_drm;
- struct wl_drm *wl_server_drm; /* for EGL_WL_bind_wayland_display */
int fd;
char *device_name;
boolean authenticated;
if (drmdpy->base.own_dpy)
wl_display_disconnect(drmdpy->base.dpy);
+ wayland_drm_bufmgr_destroy(ndpy->wayland_bufmgr);
+
ndpy_uninit(ndpy);
if (drmdpy->fd)
registry_handle_global
};
+static int
+wayland_drm_display_authenticate(void *user_data, uint32_t magic)
+{
+ struct native_display *ndpy = user_data;
+ struct wayland_drm_display *drmdpy = wayland_drm_display(ndpy);
+ boolean current_authenticate, authenticated;
+
+ current_authenticate = drmdpy->authenticated;
+
+ wl_drm_authenticate(drmdpy->wl_drm, magic);
+ wl_display_roundtrip(drmdpy->base.dpy);
+ authenticated = drmdpy->authenticated;
+
+ drmdpy->authenticated = current_authenticate;
+
+ return authenticated ? 0 : -1;
+}
+
static boolean
wayland_drm_display_init_screen(struct native_display *ndpy)
{
return FALSE;
}
+ drmdpy->base.base.wayland_bufmgr = wayland_drm_bufmgr_create(
+ wayland_drm_display_authenticate, drmdpy, drmdpy->device_name);
+
return TRUE;
}
drm_display_export_native_buffer
};
-static int
-wayland_drm_display_authenticate(void *user_data, uint32_t magic)
-{
- struct native_display *ndpy = user_data;
- struct wayland_drm_display *drmdpy = wayland_drm_display(ndpy);
- boolean current_authenticate, authenticated;
-
- current_authenticate = drmdpy->authenticated;
-
- wl_drm_authenticate(drmdpy->wl_drm, magic);
- wl_display_roundtrip(drmdpy->base.dpy);
- authenticated = drmdpy->authenticated;
-
- drmdpy->authenticated = current_authenticate;
-
- return authenticated ? 0 : -1;
-}
-
-static struct wayland_drm_callbacks wl_drm_callbacks = {
- wayland_drm_display_authenticate,
- egl_g3d_wl_drm_helper_reference_buffer,
- egl_g3d_wl_drm_helper_unreference_buffer
-};
-
-static boolean
-wayland_drm_display_bind_wayland_display(struct native_display *ndpy,
- struct wl_display *wl_dpy)
-{
- struct wayland_drm_display *drmdpy = wayland_drm_display(ndpy);
-
- if (drmdpy->wl_server_drm)
- return FALSE;
-
- drmdpy->wl_server_drm =
- wayland_drm_init(wl_dpy, drmdpy->device_name,
- &wl_drm_callbacks, ndpy, 0);
-
- if (!drmdpy->wl_server_drm)
- return FALSE;
-
- return TRUE;
-}
-
-static boolean
-wayland_drm_display_unbind_wayland_display(struct native_display *ndpy,
- struct wl_display *wl_dpy)
-{
- struct wayland_drm_display *drmdpy = wayland_drm_display(ndpy);
-
- if (!drmdpy->wl_server_drm)
- return FALSE;
-
- wayland_drm_uninit(drmdpy->wl_server_drm);
- drmdpy->wl_server_drm = NULL;
-
- return TRUE;
-}
-
-static struct native_display_wayland_bufmgr wayland_drm_display_wayland_bufmgr = {
- wayland_drm_display_bind_wayland_display,
- wayland_drm_display_unbind_wayland_display,
- egl_g3d_wl_drm_common_wl_buffer_get_resource,
- egl_g3d_wl_drm_common_query_buffer
-};
-
-
struct wayland_display *
wayland_create_drm_display(struct wl_display *dpy,
const struct native_event_handler *event_handler)
drmdpy->base.base.init_screen = wayland_drm_display_init_screen;
drmdpy->base.base.destroy = wayland_drm_display_destroy;
drmdpy->base.base.buffer = &wayland_drm_display_buffer;
- drmdpy->base.base.wayland_bufmgr = &wayland_drm_display_wayland_bufmgr;
drmdpy->base.create_buffer = wayland_create_drm_buffer;
#include "common/native_helper.h"
#ifdef HAVE_WAYLAND_BACKEND
-#include "common/native_wayland_drm_bufmgr_helper.h"
+#include "common/native_wayland_drm_bufmgr.h"
#endif
#ifdef GLX_DIRECT_RENDERING
if (dri2dpy->surfaces)
util_hash_table_destroy(dri2dpy->surfaces);
+ wayland_drm_bufmgr_destroy(ndpy->wayland_bufmgr);
+
if (dri2dpy->xscr)
x11_screen_destroy(dri2dpy->xscr);
if (dri2dpy->own_dpy)
&dri2surf->base, dri2surf->server_stamp);
}
+#ifdef HAVE_WAYLAND_BACKEND
+
+static int
+dri2_display_authenticate(void *user_data, uint32_t magic)
+{
+ struct native_display *ndpy = user_data;
+ struct dri2_display *dri2dpy = dri2_display(ndpy);
+
+ return x11_screen_authenticate(dri2dpy->xscr, magic);
+}
+
+#endif /* HAVE_WAYLAND_BACKEND */
+
/**
* Initialize DRI2 and pipe screen.
*/
return FALSE;
}
+#ifdef HAVE_WAYLAND_BACKEND
+ dri2dpy->base.wayland_bufmgr = wayland_drm_bufmgr_create(
+ dri2_display_authenticate, dri2dpy,
+ x11_screen_get_device_name(dri2dpy->xscr));
+
+#endif
+
return TRUE;
}
return ((char *) key1 - (char *) key2);
}
-#ifdef HAVE_WAYLAND_BACKEND
-
-static int
-dri2_display_authenticate(void *user_data, uint32_t magic)
-{
- struct native_display *ndpy = user_data;
- struct dri2_display *dri2dpy = dri2_display(ndpy);
-
- return x11_screen_authenticate(dri2dpy->xscr, magic);
-}
-
-static struct wayland_drm_callbacks wl_drm_callbacks = {
- dri2_display_authenticate,
- egl_g3d_wl_drm_helper_reference_buffer,
- egl_g3d_wl_drm_helper_unreference_buffer
-};
-
-static boolean
-dri2_display_bind_wayland_display(struct native_display *ndpy,
- struct wl_display *wl_dpy)
-{
- struct dri2_display *dri2dpy = dri2_display(ndpy);
-
- if (dri2dpy->wl_server_drm)
- return FALSE;
-
- dri2dpy->wl_server_drm = wayland_drm_init(wl_dpy,
- x11_screen_get_device_name(dri2dpy->xscr),
- &wl_drm_callbacks, ndpy, 0);
-
- if (!dri2dpy->wl_server_drm)
- return FALSE;
-
- return TRUE;
-}
-
-static boolean
-dri2_display_unbind_wayland_display(struct native_display *ndpy,
- struct wl_display *wl_dpy)
-{
- struct dri2_display *dri2dpy = dri2_display(ndpy);
-
- if (!dri2dpy->wl_server_drm)
- return FALSE;
-
- wayland_drm_uninit(dri2dpy->wl_server_drm);
- dri2dpy->wl_server_drm = NULL;
-
- return TRUE;
-}
-
-static struct native_display_wayland_bufmgr dri2_display_wayland_bufmgr = {
- dri2_display_bind_wayland_display,
- dri2_display_unbind_wayland_display,
- egl_g3d_wl_drm_common_wl_buffer_get_resource,
- egl_g3d_wl_drm_common_query_buffer
-};
-
-#endif /* HAVE_WAYLAND_BACKEND */
-
struct native_display *
x11_create_dri2_display(Display *dpy,
const struct native_event_handler *event_handler)
dri2dpy->base.copy_to_pixmap = native_display_copy_to_pixmap;
dri2dpy->base.create_window_surface = dri2_display_create_window_surface;
dri2dpy->base.create_pixmap_surface = dri2_display_create_pixmap_surface;
-#ifdef HAVE_WAYLAND_BACKEND
- dri2dpy->base.wayland_bufmgr = &dri2_display_wayland_bufmgr;
-#endif
return &dri2dpy->base;
}