From 0d8bac2aa11bfa974e743671294b1a5c7ea1c079 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Arkadiusz=20Mi=C5=9Bkiewicz?= Date: Sun, 1 Dec 2013 19:06:19 +0100 Subject: [PATCH] - up to 10.0.0 (TODO: obsoletes - where? better drirc location?) --- ...lify-native_wayland_drm_bufmgr_helpe.patch | 818 ------------------ ...t-add-a-listener-for-wl_drm-twice-in.patch | 29 - ...egl-Update-to-Wayland-1.2-server-API.patch | 523 ----------- ...it-the-rest-of-the-native_wayland_dr.patch | 61 -- Mesa-link.patch | 11 +- Mesa.spec | 145 +--- 6 files changed, 9 insertions(+), 1578 deletions(-) delete mode 100644 0001-gallium-egl-Simplify-native_wayland_drm_bufmgr_helpe.patch delete mode 100644 0002-gallium-egl-Don-t-add-a-listener-for-wl_drm-twice-in.patch delete mode 100644 0003-egl-Update-to-Wayland-1.2-server-API.patch delete mode 100644 0004-gallium-egl-Commit-the-rest-of-the-native_wayland_dr.patch diff --git a/0001-gallium-egl-Simplify-native_wayland_drm_bufmgr_helpe.patch b/0001-gallium-egl-Simplify-native_wayland_drm_bufmgr_helpe.patch deleted file mode 100644 index bd28311..0000000 --- a/0001-gallium-egl-Simplify-native_wayland_drm_bufmgr_helpe.patch +++ /dev/null @@ -1,818 +0,0 @@ -From 6a973189d22ae1fef08e90ab6a8f6ee18ad4f33e Mon Sep 17 00:00:00 2001 -From: Ander Conselvan de Oliveira -Date: Thu, 18 Jul 2013 15:11:23 +0300 -Subject: [PATCH 1/4] gallium-egl: Simplify native_wayland_drm_bufmgr_helper - interface - -The helper provides a series of functions to easy the implementation -of the WL_bind_wayland_display extension on different platforms. But -even with the helpers there was still a bit of duplicated code between -platforms, with the drm authentication being the only part that -differs. - -This patch changes the bufmgr interface to provide a self contained -object with a create function that takes a drm authentication callback -as an argument. That way all the helper functions are made static and -the "_helper" suffix was removed from the sources file name. - -This change also removes the mix of Wayland client and server code in -the wayland drm platform source file. All the uses of libwayland-server -are now contained in native_wayland_drm_bufmgr.c. - -Changes to the drm platform are only compile tested. - -Signed-off-by: Ander Conselvan de Oliveira ---- - src/gallium/state_trackers/egl/Makefile.am | 2 +- - src/gallium/state_trackers/egl/common/native.h | 2 +- - .../egl/common/native_wayland_drm_bufmgr.c | 214 +++++++++++++++++++++ - ...bufmgr_helper.h => native_wayland_drm_bufmgr.h} | 26 +-- - .../egl/common/native_wayland_drm_bufmgr_helper.c | 106 ---------- - src/gallium/state_trackers/egl/drm/native_drm.c | 52 +---- - src/gallium/state_trackers/egl/drm/native_drm.h | 2 +- - .../state_trackers/egl/wayland/native_drm.c | 93 +++------ - src/gallium/state_trackers/egl/x11/native_dri2.c | 87 +++------ - 9 files changed, 276 insertions(+), 308 deletions(-) - create mode 100644 src/gallium/state_trackers/egl/common/native_wayland_drm_bufmgr.c - rename src/gallium/state_trackers/egl/common/{native_wayland_drm_bufmgr_helper.h => native_wayland_drm_bufmgr.h} (59%) - delete mode 100644 src/gallium/state_trackers/egl/common/native_wayland_drm_bufmgr_helper.c - -diff --git a/src/gallium/state_trackers/egl/Makefile.am b/src/gallium/state_trackers/egl/Makefile.am -index f78b36e..126fafc 100644 ---- a/src/gallium/state_trackers/egl/Makefile.am -+++ b/src/gallium/state_trackers/egl/Makefile.am -@@ -38,7 +38,7 @@ libegl_la_SOURCES = \ - 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 += \ -diff --git a/src/gallium/state_trackers/egl/common/native.h b/src/gallium/state_trackers/egl/common/native.h -index 431bd3f..797933d 100644 ---- a/src/gallium/state_trackers/egl/common/native.h -+++ b/src/gallium/state_trackers/egl/common/native.h -@@ -245,7 +245,7 @@ struct native_display { - - 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; - - #ifdef HAVE_WAYLAND_BACKEND - struct wl_drm *wl_server_drm; /* for EGL_WL_bind_wayland_display */ -diff --git a/src/gallium/state_trackers/egl/common/native_wayland_drm_bufmgr.c b/src/gallium/state_trackers/egl/common/native_wayland_drm_bufmgr.c -new file mode 100644 -index 0000000..1603a3a ---- /dev/null -+++ b/src/gallium/state_trackers/egl/common/native_wayland_drm_bufmgr.c -@@ -0,0 +1,214 @@ -+#include -+#include -+ -+#include "native.h" -+#include "util/u_inlines.h" -+#include "state_tracker/drm_driver.h" -+ -+#ifdef HAVE_WAYLAND_BACKEND -+ -+#include -+#include -+ -+#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(wayland_drm_bufmgr(ndpy->wayland_bufmgr)->wl_server_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 -diff --git a/src/gallium/state_trackers/egl/common/native_wayland_drm_bufmgr_helper.h b/src/gallium/state_trackers/egl/common/native_wayland_drm_bufmgr.h -similarity index 59% -rename from src/gallium/state_trackers/egl/common/native_wayland_drm_bufmgr_helper.h -rename to src/gallium/state_trackers/egl/common/native_wayland_drm_bufmgr.h -index 543dc6f..7bf6513 100644 ---- a/src/gallium/state_trackers/egl/common/native_wayland_drm_bufmgr_helper.h -+++ b/src/gallium/state_trackers/egl/common/native_wayland_drm_bufmgr.h -@@ -22,26 +22,16 @@ - * DEALINGS IN THE SOFTWARE. - */ - --#ifndef _NATIVE_WAYLAND_DRM_BUFMGR_HELPER_H_ --#define _NATIVE_WAYLAND_DRM_BUFMGR_HELPER_H_ -+#ifndef _NATIVE_WAYLAND_DRM_BUFMGR_H_ -+#define _NATIVE_WAYLAND_DRM_BUFMGR_H_ - --#include "wayland-drm.h" -+typedef int (*wayland_drm_bufmgr_authenticate_func)(void *, uint32_t); - --void --egl_g3d_wl_drm_helper_reference_buffer(void *user_data, uint32_t name, int fd, -- struct wl_drm_buffer *buffer); -+struct native_display_wayland_bufmgr * -+wayland_drm_bufmgr_create(wayland_drm_bufmgr_authenticate_func authenticate, -+ void *user_data, char *device_name); - - 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); -+wayland_drm_bufmgr_destroy(struct native_display_wayland_bufmgr *bufmgr); - --#endif /* _NATIVE_WAYLAND_DRM_BUFMGR_HELPER_H_ */ -+#endif /* _NATIVE_WAYLAND_DRM_BUFMGR_H_ */ -diff --git a/src/gallium/state_trackers/egl/common/native_wayland_drm_bufmgr_helper.c b/src/gallium/state_trackers/egl/common/native_wayland_drm_bufmgr_helper.c -deleted file mode 100644 -index a9e7342..0000000 ---- a/src/gallium/state_trackers/egl/common/native_wayland_drm_bufmgr_helper.c -+++ /dev/null -@@ -1,106 +0,0 @@ --#include --#include -- --#include "native.h" --#include "util/u_inlines.h" --#include "state_tracker/drm_driver.h" -- --#ifdef HAVE_WAYLAND_BACKEND -- --#include --#include -- --#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(ndpy->wl_server_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 -diff --git a/src/gallium/state_trackers/egl/drm/native_drm.c b/src/gallium/state_trackers/egl/drm/native_drm.c -index 03bfdda..88ac490 100644 ---- a/src/gallium/state_trackers/egl/drm/native_drm.c -+++ b/src/gallium/state_trackers/egl/drm/native_drm.c -@@ -40,7 +40,7 @@ - #endif - - #ifdef HAVE_WAYLAND_BACKEND --#include "common/native_wayland_drm_bufmgr_helper.h" -+#include "common/native_wayland_drm_bufmgr.h" - #endif - - static boolean -@@ -132,6 +132,8 @@ drm_display_destroy(struct native_display *ndpy) - - 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) -@@ -195,51 +197,6 @@ drm_display_authenticate(void *user_data, uint32_t magic) - 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 (ndpy->wl_server_drm) -- return FALSE; -- -- ndpy->wl_server_drm = wayland_drm_init(wl_dpy, -- drmdpy->device_name, -- &wl_drm_callbacks, ndpy, 0); -- -- if (!ndpy->wl_server_drm) -- return FALSE; -- -- return TRUE; --} -- --static boolean --drm_display_unbind_wayland_display(struct native_display *ndpy, -- struct wl_display *wl_dpy) --{ -- if (!ndpy->wl_server_drm) -- return FALSE; -- -- wayland_drm_uninit(ndpy->wl_server_drm); -- ndpy->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 * -@@ -293,7 +248,8 @@ drm_create_display(struct gbm_gallium_drm_device *gbmdrm, int own_gbm, - 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); - -#diff --git a/src/gallium/state_trackers/egl/drm/native_drm.h b/src/gallium/state_trackers/egl/drm/native_drm.h -#index 16a4251..2c015b2 100644 -#--- a/src/gallium/state_trackers/egl/drm/native_drm.h -#+++ b/src/gallium/state_trackers/egl/drm/native_drm.h -#@@ -37,7 +37,7 @@ -# #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" -diff --git a/src/gallium/state_trackers/egl/wayland/native_drm.c b/src/gallium/state_trackers/egl/wayland/native_drm.c -index fc8aac7..a4bcdd8 100644 ---- a/src/gallium/state_trackers/egl/wayland/native_drm.c -+++ b/src/gallium/state_trackers/egl/wayland/native_drm.c -@@ -40,7 +40,7 @@ - #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 - #include -@@ -53,7 +53,6 @@ struct wayland_drm_display { - 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; -@@ -77,6 +76,8 @@ wayland_drm_display_destroy(struct native_display *ndpy) - if (drmdpy->base.own_dpy) - wl_display_disconnect(drmdpy->base.dpy); - -+ wayland_drm_bufmgr_destroy(ndpy->wayland_bufmgr); -+ - ndpy_uninit(ndpy); - - if (drmdpy->fd) -@@ -195,6 +196,24 @@ static const struct wl_registry_listener registry_listener = { - 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) - { -@@ -226,6 +245,9 @@ 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; - } - -@@ -235,72 +257,6 @@ static struct native_display_buffer wayland_drm_display_buffer = { - 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; -- -- ndpy->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) -@@ -322,7 +278,6 @@ wayland_create_drm_display(struct wl_display *dpy, - 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; - -diff --git a/src/gallium/state_trackers/egl/x11/native_dri2.c b/src/gallium/state_trackers/egl/x11/native_dri2.c -index 053044a..3d08863 100644 ---- a/src/gallium/state_trackers/egl/x11/native_dri2.c -+++ b/src/gallium/state_trackers/egl/x11/native_dri2.c -@@ -39,7 +39,7 @@ - - #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 -@@ -757,6 +757,8 @@ dri2_display_destroy(struct native_display *ndpy) - 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) -@@ -785,6 +787,19 @@ dri2_display_invalidate_buffers(struct x11_screen *xscr, Drawable drawable, - &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. - */ -@@ -816,6 +831,13 @@ dri2_display_init_screen(struct native_display *ndpy) - 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; - } - -@@ -832,66 +854,6 @@ dri2_display_hash_table_compare(void *key1, void *key2) - 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; -- -- ndpy->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) -@@ -936,9 +898,6 @@ x11_create_dri2_display(Display *dpy, - 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; - } --- -1.8.4 - diff --git a/0002-gallium-egl-Don-t-add-a-listener-for-wl_drm-twice-in.patch b/0002-gallium-egl-Don-t-add-a-listener-for-wl_drm-twice-in.patch deleted file mode 100644 index cca850a..0000000 --- a/0002-gallium-egl-Don-t-add-a-listener-for-wl_drm-twice-in.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 38e128d799217a08ea12ddf75a6a7ed440384b5f Mon Sep 17 00:00:00 2001 -From: Ander Conselvan de Oliveira -Date: Thu, 18 Jul 2013 15:11:24 +0300 -Subject: [PATCH 2/4] gallium-egl: Don't add a listener for wl_drm twice in - wayland platform - -A listener is added just after the interface is bound, in -registry_handle_global(). - -Signed-off-by: Ander Conselvan de Oliveira ---- - src/gallium/state_trackers/egl/wayland/native_drm.c | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/src/gallium/state_trackers/egl/wayland/native_drm.c b/src/gallium/state_trackers/egl/wayland/native_drm.c -index a4bcdd8..e1aeeeb 100644 ---- a/src/gallium/state_trackers/egl/wayland/native_drm.c -+++ b/src/gallium/state_trackers/egl/wayland/native_drm.c -@@ -227,7 +227,6 @@ wayland_drm_display_init_screen(struct native_display *ndpy) - if (wayland_roundtrip(&drmdpy->base) < 0 || drmdpy->wl_drm == NULL) - return FALSE; - -- wl_drm_add_listener(drmdpy->wl_drm, &drm_listener, drmdpy); - if (wayland_roundtrip(&drmdpy->base) < 0 || drmdpy->fd == -1) - return FALSE; - --- -1.8.4 - diff --git a/0003-egl-Update-to-Wayland-1.2-server-API.patch b/0003-egl-Update-to-Wayland-1.2-server-API.patch deleted file mode 100644 index f4d7124..0000000 --- a/0003-egl-Update-to-Wayland-1.2-server-API.patch +++ /dev/null @@ -1,523 +0,0 @@ -From 29c760d8bb6338679abaf8a30549341bd181cc51 Mon Sep 17 00:00:00 2001 -From: Ander Conselvan de Oliveira -Date: Thu, 18 Jul 2013 15:11:25 +0300 -Subject: [PATCH 3/4] egl: Update to Wayland 1.2 server API - -Since Wayland 1.2, struct wl_buffer and a few functions are deprecated. - -References to wl_buffer are replaced with wl_resource and some getter -functions and calls to deprecated functions are replaced with the proper -new API. The latter changes are related to resource versioning. - -Signed-off-by: Ander Conselvan de Oliveira ---- - docs/specs/WL_bind_wayland_display.spec | 8 ++- - include/EGL/eglmesaext.h | 6 +- - src/egl/drivers/dri2/egl_dri2.c | 28 +++++---- - src/egl/drivers/dri2/egl_dri2.h | 1 - - src/egl/main/eglapi.c | 2 +- - src/egl/main/eglapi.h | 2 +- - src/egl/wayland/wayland-drm/wayland-drm.c | 66 +++++++++++++--------- - src/egl/wayland/wayland-drm/wayland-drm.h | 13 +++-- - .../state_trackers/egl/common/egl_g3d_api.c | 2 +- - .../state_trackers/egl/common/egl_g3d_image.c | 4 +- - .../egl/common/native_wayland_bufmgr.h | 6 +- - .../egl/common/native_wayland_drm_bufmgr.c | 25 +++++--- - src/gbm/backends/dri/gbm_dri.c | 5 +- - 13 files changed, 99 insertions(+), 69 deletions(-) - -diff --git a/docs/specs/WL_bind_wayland_display.spec b/docs/specs/WL_bind_wayland_display.spec -index 02bd6ea..8f0083c 100644 ---- a/docs/specs/WL_bind_wayland_display.spec -+++ b/docs/specs/WL_bind_wayland_display.spec -@@ -17,7 +17,7 @@ Status - - Version - -- Version 1, March 1, 2011 -+ Version 5, July 16, 2013 - - Number - -@@ -57,7 +57,7 @@ New Procedures and Functions - struct wl_display *display); - - EGLBoolean eglQueryWaylandBufferWL(EGLDisplay dpy, -- struct wl_buffer *buffer, -+ struct wl_resource *buffer, - EGLint attribute, EGLint *value); - - New Tokens -@@ -173,3 +173,7 @@ Revision History - Use EGL_TEXTURE_FORMAT, EGL_TEXTURE_RGB, and EGL_TEXTURE_RGBA, - and just define the new YUV texture formats. Add support for - EGL_WIDTH and EGL_HEIGHT in the query attributes (Kristian Høgsberg) -+ Version 5, July 16, 2013 -+ Change eglQueryWaylandBufferWL to take a resource pointer to the -+ buffer instead of a pointer to a struct wl_buffer, as the latter has -+ been deprecated. (Ander Conselvan de Oliveira) -diff --git a/include/EGL/eglmesaext.h b/include/EGL/eglmesaext.h -index d476d18..e0eae28 100644 ---- a/include/EGL/eglmesaext.h -+++ b/include/EGL/eglmesaext.h -@@ -120,15 +120,15 @@ typedef EGLDisplay (EGLAPIENTRYP PFNEGLGETDRMDISPLAYMESA) (int fd); - #define EGL_TEXTURE_Y_XUXV_WL 0x31D9 - - struct wl_display; --struct wl_buffer; -+struct wl_resource; - #ifdef EGL_EGLEXT_PROTOTYPES - EGLAPI EGLBoolean EGLAPIENTRY eglBindWaylandDisplayWL(EGLDisplay dpy, struct wl_display *display); - EGLAPI EGLBoolean EGLAPIENTRY eglUnbindWaylandDisplayWL(EGLDisplay dpy, struct wl_display *display); --EGLAPI EGLBoolean EGLAPIENTRY eglQueryWaylandBufferWL(EGLDisplay dpy, struct wl_buffer *buffer, EGLint attribute, EGLint *value); -+EGLAPI EGLBoolean EGLAPIENTRY eglQueryWaylandBufferWL(EGLDisplay dpy, struct wl_resource *buffer, EGLint attribute, EGLint *value); - #endif - typedef EGLBoolean (EGLAPIENTRYP PFNEGLBINDWAYLANDDISPLAYWL) (EGLDisplay dpy, struct wl_display *display); - typedef EGLBoolean (EGLAPIENTRYP PFNEGLUNBINDWAYLANDDISPLAYWL) (EGLDisplay dpy, struct wl_display *display); --typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYWAYLANDBUFFERWL) (EGLDisplay dpy, struct wl_buffer *buffer, EGLint attribute, EGLint *value); -+typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYWAYLANDBUFFERWL) (EGLDisplay dpy, struct wl_resource *buffer, EGLint attribute, EGLint *value); - - #endif - -diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c -index 52fcb3f..bdbb450 100644 ---- a/src/egl/drivers/dri2/egl_dri2.c -+++ b/src/egl/drivers/dri2/egl_dri2.c -@@ -41,6 +41,10 @@ - - #include "egl_dri2.h" - -+#ifdef HAVE_WAYLAND_PLATFORM -+#include "wayland-drm.h" -+#endif -+ - const __DRIuseInvalidateExtension use_invalidate = { - { __DRI_USE_INVALIDATE, 1 } - }; -@@ -1195,7 +1199,7 @@ dri2_create_image_wayland_wl_buffer(_EGL - EGLClientBuffer _buffer, - const EGLint *attr_list) - { -- struct wl_drm_buffer *buffer = (struct wl_drm_buffer *) _buffer; -+ struct wl_drm_buffer *buffer; - struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp); - const struct wl_drm_components_descriptor *f; - __DRIimage *dri_image; -@@ -1203,7 +1207,8 @@ dri2_create_image_wayland_wl_buffer(_EGL - EGLint err; - int32_t plane; - -- if (!wayland_buffer_is_drm(dri2_dpy->wl_server_drm, &buffer->buffer)) -+ buffer = wayland_drm_buffer_get(dri2_dpy->wl_server_drm, (struct wl_resource *) _buffer); -+ if (!buffer) - return NULL; - - err = _eglParseImageAttribList(&attrs, disp, attr_list); -@@ -1508,8 +1513,8 @@ dri2_wl_reference_buffer(void *user_data - - if (fd == -1) - img = dri2_dpy->image->createImageFromNames(dri2_dpy->dri_screen, -- buffer->buffer.width, -- buffer->buffer.height, -+ buffer->width, -+ buffer->height, - buffer->format, - (int*)&name, 1, - buffer->stride, -@@ -1517,8 +1522,8 @@ dri2_wl_reference_buffer(void *user_data - NULL); - else - img = dri2_dpy->image->createImageFromFds(dri2_dpy->dri_screen, -- buffer->buffer.width, -- buffer->buffer.height, -+ buffer->width, -+ buffer->height, - buffer->format, - &fd, 1, - buffer->stride, -@@ -1612,14 +1617,15 @@ dri2_unbind_wayland_display_wl(_EGLDrive - - static EGLBoolean - dri2_query_wayland_buffer_wl(_EGLDriver *drv, _EGLDisplay *disp, -- struct wl_buffer *_buffer, -+ struct wl_resource *buffer_resource, - EGLint attribute, EGLint *value) - { -- struct wl_drm_buffer *buffer = (struct wl_drm_buffer *) _buffer; -+ struct wl_drm_buffer *buffer; - struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp); - const struct wl_drm_components_descriptor *format; - -- if (!wayland_buffer_is_drm(dri2_dpy->wl_server_drm, &buffer->buffer)) -+ buffer = wayland_drm_buffer_get(dri2_dpy->wl_server_drm, buffer_resource); -+ if (!buffer) - return EGL_FALSE; - - format = buffer->driver_format; -@@ -1628,10 +1634,10 @@ dri2_query_wayland_buffer_wl(_EGLDriver - *value = format->components; - return EGL_TRUE; - case EGL_WIDTH: -- *value = buffer->buffer.width; -+ *value = buffer->width; - return EGL_TRUE; - case EGL_HEIGHT: -- *value = buffer->buffer.height; -+ *value = buffer->height; - return EGL_TRUE; - } - -diff --git a/src/egl/drivers/dri2/egl_dri2.h b/src/egl/drivers/dri2/egl_dri2.h -index 6dfdf94..fba5f81 100644 ---- a/src/egl/drivers/dri2/egl_dri2.h -+++ b/src/egl/drivers/dri2/egl_dri2.h -@@ -37,7 +37,6 @@ - - #ifdef HAVE_WAYLAND_PLATFORM - #include --#include "wayland-drm.h" - #include "wayland-egl-priv.h" - #endif - -diff --git a/src/egl/main/eglapi.c b/src/egl/main/eglapi.c -index 4a9831b..a788295 100644 ---- a/src/egl/main/eglapi.c -+++ b/src/egl/main/eglapi.c -@@ -1571,7 +1571,7 @@ eglUnbindWaylandDisplayWL(EGLDisplay dpy, struct wl_display *display) - } - - EGLBoolean EGLAPIENTRY --eglQueryWaylandBufferWL(EGLDisplay dpy,struct wl_buffer *buffer, -+eglQueryWaylandBufferWL(EGLDisplay dpy, struct wl_resource *buffer, - EGLint attribute, EGLint *value) - { - _EGLDisplay *disp = _eglLockDisplay(dpy); -diff --git a/src/egl/main/eglapi.h b/src/egl/main/eglapi.h -index ee382d0..4a4f976 100644 ---- a/src/egl/main/eglapi.h -+++ b/src/egl/main/eglapi.h -@@ -123,7 +123,7 @@ typedef EGLBoolean (*ExportDRMImageMESA_t)(_EGLDriver *drv, _EGLDisplay *disp, _ - struct wl_display; - typedef EGLBoolean (*BindWaylandDisplayWL_t)(_EGLDriver *drv, _EGLDisplay *disp, struct wl_display *display); - typedef EGLBoolean (*UnbindWaylandDisplayWL_t)(_EGLDriver *drv, _EGLDisplay *disp, struct wl_display *display); --typedef EGLBoolean (*QueryWaylandBufferWL_t)(_EGLDriver *drv, _EGLDisplay *displ, struct wl_buffer *buffer, EGLint attribute, EGLint *value); -+typedef EGLBoolean (*QueryWaylandBufferWL_t)(_EGLDriver *drv, _EGLDisplay *displ, struct wl_resource *buffer, EGLint attribute, EGLint *value); - #endif - - typedef EGLBoolean (*PostSubBufferNV_t)(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *surface, EGLint x, EGLint y, EGLint width, EGLint height); -diff --git a/src/egl/wayland/wayland-drm/wayland-drm.c b/src/egl/wayland/wayland-drm/wayland-drm.c -index 7e2073a..d317c5e 100644 ---- a/src/egl/wayland/wayland-drm/wayland-drm.c -+++ b/src/egl/wayland/wayland-drm/wayland-drm.c -@@ -37,6 +37,8 @@ - #include "wayland-drm.h" - #include "wayland-drm-server-protocol.h" - -+#define MIN(x,y) (((x)<(y))?(x):(y)) -+ - struct wl_drm { - struct wl_display *display; - -@@ -83,8 +85,8 @@ create_buffer(struct wl_client *client, - } - - buffer->drm = drm; -- buffer->buffer.width = width; -- buffer->buffer.height = height; -+ buffer->width = width; -+ buffer->height = height; - buffer->format = format; - buffer->offset[0] = offset0; - buffer->stride[0] = stride0; -@@ -101,16 +103,17 @@ create_buffer(struct wl_client *client, - return; - } - -- buffer->buffer.resource.object.id = id; -- buffer->buffer.resource.object.interface = &wl_buffer_interface; -- buffer->buffer.resource.object.implementation = -- (void (**)(void)) &drm->buffer_interface; -- buffer->buffer.resource.data = buffer; -- -- buffer->buffer.resource.destroy = destroy_buffer; -- buffer->buffer.resource.client = resource->client; -+ buffer->resource = -+ wl_resource_create(client, &wl_buffer_interface, 1, id); -+ if (!buffer->resource) { -+ wl_resource_post_no_memory(resource); -+ free(buffer); -+ return; -+ } - -- wl_client_add_resource(resource->client, &buffer->buffer.resource); -+ wl_resource_set_implementation(buffer->resource, -+ (void (**)(void)) &drm->buffer_interface, -+ buffer, destroy_buffer); - } - - static void -@@ -205,8 +208,15 @@ bind_drm(struct wl_client *client, void - struct wl_resource *resource; - uint32_t capabilities; - -- resource = wl_client_add_object(client, &wl_drm_interface, -- &drm_interface, id, data); -+ resource = wl_resource_create(client, &wl_drm_interface, -+ MIN(version, 2), id); -+ if (!resource) { -+ wl_client_post_no_memory(client); -+ return; -+ } -+ -+ wl_resource_set_implementation(resource, &drm_interface, data, NULL); -+ - wl_resource_post_event(resource, WL_DRM_DEVICE, drm->device_name); - wl_resource_post_event(resource, WL_DRM_FORMAT, - WL_DRM_FORMAT_ARGB8888); -@@ -229,6 +239,21 @@ bind_drm(struct wl_client *client, void - wl_resource_post_event(resource, WL_DRM_CAPABILITIES, capabilities); - } - -+struct wl_drm_buffer * -+wayland_drm_buffer_get(struct wl_drm *drm, struct wl_resource *resource) -+{ -+ struct wl_drm_buffer *buffer; -+ -+ if (resource == NULL) -+ return NULL; -+ -+ if (wl_resource_instance_of(resource, &wl_buffer_interface, -+ &drm->buffer_interface)) -+ return wl_resource_get_user_data(resource); -+ else -+ return NULL; -+} -+ - struct wl_drm * - wayland_drm_init(struct wl_display *display, char *device_name, - struct wayland_drm_callbacks *callbacks, void *user_data, -@@ -245,7 +270,7 @@ wayland_drm_init(struct wl_display *disp - drm->flags = flags; - drm->buffer_interface.destroy = buffer_destroy; - -- wl_display_add_global(display, &wl_drm_interface, drm, bind_drm); -+ wl_global_create(display, &wl_drm_interface, 2, drm, bind_drm); - - return drm; - } -@@ -260,25 +285,14 @@ wayland_drm_uninit(struct wl_drm *drm) - free(drm); - } - --int --wayland_buffer_is_drm(struct wl_drm *drm, struct wl_buffer *buffer) --{ -- return buffer->resource.object.implementation == -- (void (**)(void)) &drm->buffer_interface; --} -- - uint32_t --wayland_drm_buffer_get_format(struct wl_buffer *buffer_base) -+wayland_drm_buffer_get_format(struct wl_drm_buffer *buffer) - { -- struct wl_drm_buffer *buffer = (struct wl_drm_buffer *) buffer_base; -- - return buffer->format; - } - - void * --wayland_drm_buffer_get_buffer(struct wl_buffer *buffer_base) -+wayland_drm_buffer_get_buffer(struct wl_drm_buffer *buffer) - { -- struct wl_drm_buffer *buffer = (struct wl_drm_buffer *) buffer_base; -- - return buffer->driver_buffer; - } -diff --git a/src/egl/wayland/wayland-drm/wayland-drm.h b/src/egl/wayland/wayland-drm/wayland-drm.h -index 335073a..ca04882 100644 ---- a/src/egl/wayland/wayland-drm/wayland-drm.h -+++ b/src/egl/wayland/wayland-drm/wayland-drm.h -@@ -70,8 +70,9 @@ enum wl_drm_format { - struct wl_drm; - - struct wl_drm_buffer { -- struct wl_buffer buffer; -+ struct wl_resource *resource; - struct wl_drm *drm; -+ int32_t width, height; - uint32_t format; - const void *driver_format; - int32_t offset[3]; -@@ -90,6 +91,9 @@ struct wayland_drm_callbacks { - - enum { WAYLAND_DRM_PRIME = 0x01 }; - -+struct wl_drm_buffer * -+wayland_drm_buffer_get(struct wl_drm *drm, struct wl_resource *resource); -+ - struct wl_drm * - wayland_drm_init(struct wl_display *display, char *device_name, - struct wayland_drm_callbacks *callbacks, void *user_data, -@@ -98,13 +102,10 @@ wayland_drm_init(struct wl_display *disp - void - wayland_drm_uninit(struct wl_drm *drm); - --int --wayland_buffer_is_drm(struct wl_drm *drm, struct wl_buffer *buffer); -- - uint32_t --wayland_drm_buffer_get_format(struct wl_buffer *buffer_base); -+wayland_drm_buffer_get_format(struct wl_drm_buffer *buffer); - - void * --wayland_drm_buffer_get_buffer(struct wl_buffer *buffer); -+wayland_drm_buffer_get_buffer(struct wl_drm_buffer *buffer); - - #endif -diff --git a/src/gallium/state_trackers/egl/common/egl_g3d_api.c b/src/gallium/state_trackers/egl/common/egl_g3d_api.c -index 59187a9..46a3245 100644 ---- a/src/gallium/state_trackers/egl/common/egl_g3d_api.c -+++ b/src/gallium/state_trackers/egl/common/egl_g3d_api.c -@@ -874,7 +874,7 @@ egl_g3d_unbind_wayland_display_wl(_EGLDriver *drv, _EGLDisplay *dpy, - - static EGLBoolean - egl_g3d_query_wayland_buffer_wl(_EGLDriver *drv, _EGLDisplay *dpy, -- struct wl_buffer *buffer, -+ struct wl_resource *buffer, - EGLint attribute, EGLint *value) - { - struct egl_g3d_display *gdpy = egl_g3d_display(dpy); -diff --git a/src/gallium/state_trackers/egl/common/egl_g3d_image.c b/src/gallium/state_trackers/egl/common/egl_g3d_image.c -index aa1980b..c459dc3 100644 ---- a/src/gallium/state_trackers/egl/common/egl_g3d_image.c -+++ b/src/gallium/state_trackers/egl/common/egl_g3d_image.c -@@ -183,7 +183,7 @@ egl_g3d_reference_drm_buffer(_EGLDisplay *dpy, EGLint name, - #ifdef EGL_WL_bind_wayland_display - - static struct pipe_resource * --egl_g3d_reference_wl_buffer(_EGLDisplay *dpy, struct wl_buffer *buffer, -+egl_g3d_reference_wl_buffer(_EGLDisplay *dpy, struct wl_resource *buffer, - _EGLImage *img, const EGLint *attribs) - { - struct egl_g3d_display *gdpy = egl_g3d_display(dpy); -@@ -253,7 +253,7 @@ egl_g3d_create_image(_EGLDriver *drv, _EGLDisplay *dpy, _EGLContext *ctx, - #ifdef EGL_WL_bind_wayland_display - case EGL_WAYLAND_BUFFER_WL: - ptex = egl_g3d_reference_wl_buffer(dpy, -- (struct wl_buffer *) buffer, &gimg->base, attribs); -+ (struct wl_resource *) buffer, &gimg->base, attribs); - break; - #endif - #ifdef EGL_ANDROID_image_native_buffer -diff --git a/src/gallium/state_trackers/egl/common/native_wayland_bufmgr.h b/src/gallium/state_trackers/egl/common/native_wayland_bufmgr.h -index dd27828..eb324bf 100644 ---- a/src/gallium/state_trackers/egl/common/native_wayland_bufmgr.h -+++ b/src/gallium/state_trackers/egl/common/native_wayland_bufmgr.h -@@ -27,7 +27,7 @@ - - struct native_display; - struct wl_display; --struct wl_buffer; -+struct wl_resource; - struct pipe_resource; - - struct native_display_wayland_bufmgr { -@@ -38,11 +38,11 @@ struct native_display_wayland_bufmgr { - struct wl_display *wl_dpy); - - struct pipe_resource *(*buffer_get_resource)(struct native_display *ndpy, -- struct wl_buffer *buffer); -+ struct wl_resource *buffer); - - - boolean (*query_buffer)(struct native_display *ndpy, -- struct wl_buffer *buffer, -+ struct wl_resource *buffer, - int attribute, int *value); - }; - -diff --git a/src/gallium/state_trackers/egl/common/native_wayland_drm_bufmgr.c b/src/gallium/state_trackers/egl/common/native_wayland_drm_bufmgr.c -index 1603a3a..9b69cb9 100644 ---- a/src/gallium/state_trackers/egl/common/native_wayland_drm_bufmgr.c -+++ b/src/gallium/state_trackers/egl/common/native_wayland_drm_bufmgr.c -@@ -70,8 +70,8 @@ wayland_drm_bufmgr_reference_buffer(void - 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.width0 = buffer->width; -+ templ.height0 = buffer->height; - templ.depth0 = 1; - templ.array_size = 1; - -@@ -137,22 +137,31 @@ wayland_drm_bufmgr_unbind_display(struct - - static struct pipe_resource * - wayland_drm_bufmgr_wl_buffer_get_resource(struct native_display *ndpy, -- struct wl_buffer *buffer) -+ struct wl_resourcer *buffer_resource) - { -+ struct wayland_drm_bufmgr *bufmgr = wayland_drm_bufmgr(ndpy->wayland_bufmgr); -+ struct wl_drm_buffer *buffer = wayland_drm_buffer_get(bufmgr->wl_server_drm, buffer_resource); -+ -+ if (!buffer) -+ return NULL; -+ - return wayland_drm_buffer_get_buffer(buffer); - } - - static EGLBoolean - wayland_drm_bufmgr_query_buffer(struct native_display *ndpy, -- struct wl_buffer *_buffer, -+ struct wl_resource *buffer_resource, - EGLint attribute, EGLint *value) - { -- struct wl_drm_buffer *buffer = (struct wl_drm_buffer *) _buffer; -- struct pipe_resource *resource = buffer->driver_buffer; -+ struct wayland_drm_bufmgr *bufmgr = wayland_drm_bufmgr(ndpy->wayland_bufmgr); -+ struct wl_drm_buffer *buffer = wayland_drm_buffer_get(bufmgr->wl_server_drm, buffer_resource); -+ struct pipe_resource *resource; - -- if (!wayland_buffer_is_drm(wayland_drm_bufmgr(ndpy->wayland_bufmgr)->wl_server_drm, &buffer->buffer)) -+ if (!buffer) - return EGL_FALSE; - -+ resource = buffer->driver_buffer; -+ - switch (attribute) { - case EGL_TEXTURE_FORMAT: - switch (resource->format) { -@@ -166,10 +175,10 @@ wayland_drm_bufmgr_query_buffer(struct n - return EGL_FALSE; - } - case EGL_WIDTH: -- *value = buffer->buffer.width; -+ *value = buffer->width; - return EGL_TRUE; - case EGL_HEIGHT: -- *value = buffer->buffer.height; -+ *value = buffer->height; - return EGL_TRUE; - default: - return EGL_FALSE; -diff --git a/src/gbm/backends/dri/gbm_dri.c b/src/gbm/backends/dri/gbm_dri.c -index a3a0530..f7da79c 100644 ---- a/src/gbm/backends/dri/gbm_dri.c -+++ b/src/gbm/backends/dri/gbm_dri.c -@@ -374,12 +374,13 @@ gbm_dri_bo_import(struct gbm_device *gbm - #if HAVE_WAYLAND_PLATFORM - case GBM_BO_IMPORT_WL_BUFFER: - { -- struct wl_drm_buffer *wb = (struct wl_drm_buffer *) buffer; -+ struct wl_drm_buffer *wb; - - if (dri->wl_drm == NULL) - return NULL; - -- if (!wayland_buffer_is_drm(dri->wl_drm, buffer)) -+ wb = wayland_drm_buffer_get(dri->wl_drm, (struct wl_resource *) buffer); -+ if (!wb); - return NULL; - - image = wb->driver_buffer; diff --git a/0004-gallium-egl-Commit-the-rest-of-the-native_wayland_dr.patch b/0004-gallium-egl-Commit-the-rest-of-the-native_wayland_dr.patch deleted file mode 100644 index 91b6ecb..0000000 --- a/0004-gallium-egl-Commit-the-rest-of-the-native_wayland_dr.patch +++ /dev/null @@ -1,61 +0,0 @@ -From c5279d643b528690243803c923fd3ff74b1b9dd5 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Kristian=20H=C3=B8gsberg?= -Date: Wed, 7 Aug 2013 11:19:59 -0700 -Subject: [PATCH 4/4] gallium-egl: Commit the rest of the - native_wayland_drm_bufmgr_helper v2 patch -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -I missed Anders v2 on the list which fixed non-wayland compilation: - -http://lists.freedesktop.org/archives/mesa-dev/2013-July/042062.html - -Signed-off-by: Kristian Høgsberg ---- - src/gallium/state_trackers/egl/drm/native_drm.c | 2 ++ - src/gallium/state_trackers/egl/drm/native_drm.h | 4 ---- - src/gallium/state_trackers/egl/x11/native_dri2.c | 5 ++--- - 3 files changed, 4 insertions(+), 7 deletions(-) - -diff --git a/src/gallium/state_trackers/egl/drm/native_drm.c b/src/gallium/state_trackers/egl/drm/native_drm.c -index 88ac490..c82bbe4 100644 ---- a/src/gallium/state_trackers/egl/drm/native_drm.c -+++ b/src/gallium/state_trackers/egl/drm/native_drm.c -@@ -132,7 +132,9 @@ drm_display_destroy(struct native_display *ndpy) - - FREE(drmdpy->device_name); - -+#ifdef HAVE_WAYLAND_BACKEND - wayland_drm_bufmgr_destroy(ndpy->wayland_bufmgr); -+#endif - - if (drmdpy->own_gbm) { - gbm_device_destroy(&drmdpy->gbmdrm->base.base); -diff --git a/src/gallium/state_trackers/egl/x11/native_dri2.c b/src/gallium/state_trackers/egl/x11/native_dri2.c -index 3d08863..3aa7c17 100644 ---- a/src/gallium/state_trackers/egl/x11/native_dri2.c -+++ b/src/gallium/state_trackers/egl/x11/native_dri2.c -@@ -60,9 +60,6 @@ struct dri2_display { - int num_configs; - - struct util_hash_table *surfaces; --#ifdef HAVE_WAYLAND_BACKEND -- struct wl_drm *wl_server_drm; /* for EGL_WL_bind_wayland_display */ --#endif - }; - - struct dri2_surface { -@@ -757,7 +754,9 @@ dri2_display_destroy(struct native_display *ndpy) - if (dri2dpy->surfaces) - util_hash_table_destroy(dri2dpy->surfaces); - -+#ifdef HAVE_WAYLAND_BACKEND - wayland_drm_bufmgr_destroy(ndpy->wayland_bufmgr); -+#endif - - if (dri2dpy->xscr) - x11_screen_destroy(dri2dpy->xscr); --- -1.8.4 - diff --git a/Mesa-link.patch b/Mesa-link.patch index 37b5734..d36a1a2 100644 --- a/Mesa-link.patch +++ b/Mesa-link.patch @@ -21,13 +21,4 @@ if HAVE_EGL_PLATFORM_WAYLAND AM_CPPFLAGS = -DHAVE_WAYLAND_PLATFORM ---- Mesa-9.1/src/mesa/libdricore/Makefile.am.orig 2013-02-20 01:26:22.000000000 +0100 -+++ Mesa-9.1/src/mesa/libdricore/Makefile.am 2013-02-27 20:43:01.806214222 +0100 -@@ -42,6 +42,7 @@ - libdricore@VERSION@_la_LDFLAGS = -version-number 1:0 - libdricore@VERSION@_la_LIBADD = \ - ../program/libdricore_program.la \ -+ $(DLOPEN_LIBS) - $() - - if HAVE_X86_ASM + diff --git a/Mesa.spec b/Mesa.spec index d50c96b..e85ce39 100644 --- a/Mesa.spec +++ b/Mesa.spec @@ -21,7 +21,7 @@ # set to current Mesa version on ABI break, when xserver tables get regenerated # (until they start to be somehow versioned themselves) %define glapi_ver 7.1.0 -# internal API version (libdricore); a.b.c for Mesa-a.b.c, a.b.0 for Mesa-a.b +# internal API version; a.b.c for Mesa-a.b.c, a.b.0 for Mesa-a.b %define int_sover 9.2.4 # minimal supported xserver version %define xserver_ver 1.5.0 @@ -33,17 +33,13 @@ Summary: Free OpenGL implementation Summary(pl.UTF-8): Wolnodostępna implementacja standardu OpenGL Name: Mesa -Version: 9.2.4 +Version: 10.0.0 Release: 1 License: MIT (core) and others - see license.html file Group: X11/Libraries -Source0: ftp://ftp.freedesktop.org/pub/mesa/%{version}/%{name}Lib-%{version}.tar.bz2 -# Source0-md5: e630c0a307cec4f0f70ddd029d2fe084 +Source0: ftp://ftp.freedesktop.org/pub/mesa/10.0/%{name}Lib-%{version}.tar.bz2 +# Source0-md5: f3fe55d9735bea158bbe97ed9a0da819 Patch0: %{name}-link.patch -Patch1: 0001-gallium-egl-Simplify-native_wayland_drm_bufmgr_helpe.patch -Patch2: 0002-gallium-egl-Don-t-add-a-listener-for-wl_drm-twice-in.patch -Patch3: 0003-egl-Update-to-Wayland-1.2-server-API.patch -Patch4: 0004-gallium-egl-Commit-the-rest-of-the-native_wayland_dr.patch URL: http://www.mesa3d.org/ BuildRequires: autoconf >= 2.60 BuildRequires: automake @@ -102,9 +98,8 @@ BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n) # libGLESv1_CM, libGLESv2, libGL, libOSMesa: # _glapi_tls_Dispatch is defined in libglapi, but it's some kind of symbol ldd -r doesn't notice(?) -# libdricore: internal library, not linked with libglapi # libgbm: circular dependency with libEGL (wayland_buffer_is_drm symbol) -%define skip_post_check_so libGLESv1_CM.so.1.* libGLESv2.so.2.* libGL.so.1.* libOSMesa.so.* libdricore.*.so.* libgbm.*.so.* +%define skip_post_check_so libGLESv1_CM.so.1.* libGLESv2.so.2.* libGL.so.1.* libOSMesa.so.* libgbm.*.so.* # llvm build broken %define filterout_ld -Wl,--as-needed @@ -451,23 +446,6 @@ Mesa implementation of XvMC API for NVidia adapters (NV40-NV96, NVa0). %description libXvMC-nouveau -l pl.UTF-8 Implementacja Mesa API XvMC dla kart NVidia (NV40-NV96, NVa0). -%package libXvMC-r300 -Summary: Mesa implementation of XvMC API for ATI Radeon R300 series adapters -Summary(pl.UTF-8): Implementacja Mesa API XvMC dla kart ATI Radeon z serii R300 -License: MIT -Group: Libraries -Requires: libdrm >= %{libdrm_ver} -Requires: xorg-lib-libXvMC >= 1.0.6 -Conflicts: Mesa-libXvMC - -%description libXvMC-r300 -Mesa implementation of XvMC API for ATI Radeon adapters based on -R300/R400/RS690/R500 chips. - -%description libXvMC-r300 -l pl.UTF-8 -Implementacja Mesa API XvMC dla kart ATI Radeon opartych na układach -R300/R400/RS690/R500. - %package libXvMC-r600 Summary: Mesa implementation of XvMC API for ATI Radeon R600 series adapters Summary(pl.UTF-8): Implementacja Mesa API XvMC dla kart ATI Radeon z serii R600 @@ -485,21 +463,6 @@ R600/R700 chips. Implementacja Mesa API XvMC dla kart ATI Radeon opartych na układach R600/R700. -%package libXvMC-softpipe -Summary: Mesa softpipe implementation of XvMC API -Summary(pl.UTF-8): Implementacja Mesa softpipe API XvMC -License: MIT -Group: Libraries -Requires: libdrm >= %{libdrm_ver} -Requires: xorg-lib-libXvMC >= 1.0.6 -Conflicts: Mesa-libXvMC - -%description libXvMC-softpipe -Mesa softpipe implementation of XvMC API. - -%description libXvMC-softpipe -l pl.UTF-8 -Implementacja Mesa softpipe API XvMC. - %package libgbm Summary: Mesa Graphics Buffer Manager library Summary(pl.UTF-8): Biblioteka Mesa Graphics Buffer Manager @@ -714,26 +677,11 @@ Khronos platform header file. %description khrplatform-devel -l pl.UTF-8 Plik nagłówkowy platformy Khronos. -%package dri-core -Summary: X.org DRI core library -Summary(pl.UTF-8): Biblioteka X.org DRI core -License: MIT -Group: X11/Libraries -Requires: xorg-xserver-libglx(glapi) = %{glapi_ver} -Requires: xorg-xserver-server >= %{xserver_ver} - -%description dri-core -X.org DRI core library. - -%description dri-core -l pl.UTF-8 -Biblioteka X.org DRI core. - %package dri-driver-ati-radeon-R100 Summary: X.org DRI driver for ATI R100 card family Summary(pl.UTF-8): Sterownik X.org DRI dla rodziny kart ATI R100 License: MIT Group: X11/Libraries -Requires: %{name}-dri-core = %{version}-%{release} Requires: xorg-driver-video-ati Requires: xorg-xserver-libglx(glapi) = %{glapi_ver} Requires: xorg-xserver-server >= %{xserver_ver} @@ -750,7 +698,6 @@ Summary: X.org DRI driver for ATI R200 card family Summary(pl.UTF-8): Sterownik X.org DRI dla rodziny kart ATI R200 License: MIT Group: X11/Libraries -Requires: %{name}-dri-core = %{version}-%{release} Requires: xorg-driver-video-ati Requires: xorg-xserver-libglx(glapi) = %{glapi_ver} Requires: xorg-xserver-server >= %{xserver_ver} @@ -815,9 +762,6 @@ Summary: X.org DRI driver for Intel i915 card family Summary(pl.UTF-8): Sterownik X.org DRI dla rodziny kart Intel i915 License: MIT Group: X11/Libraries -%if %{without gallium_intel} -Requires: %{name}-dri-core = %{version}-%{release} -%endif Requires: xorg-driver-video-intel Requires: xorg-xserver-libglx(glapi) = %{glapi_ver} Requires: xorg-xserver-server >= %{xserver_ver} @@ -837,7 +781,6 @@ Summary: X.org DRI driver for Intel i965 card family Summary(pl.UTF-8): Sterownik X.org DRI dla rodziny kart Intel i965 License: MIT Group: X11/Libraries -Requires: %{name}-dri-core = %{version}-%{release} Requires: xorg-driver-video-intel Requires: xorg-xserver-libglx(glapi) = %{glapi_ver} Requires: xorg-xserver-server >= %{xserver_ver} @@ -857,7 +800,6 @@ Summary: X.org DRI driver for NVIDIA card family Summary(pl.UTF-8): Sterownik X.org DRI dla rodziny kart NVIDIA License: MIT Group: X11/Libraries -Requires: %{name}-dri-core = %{version}-%{release} Requires: xorg-driver-video-nouveau Requires: xorg-xserver-libglx(glapi) = %{glapi_ver} Requires: xorg-xserver-server >= %{xserver_ver} @@ -873,7 +815,6 @@ Summary: X.org DRI software rasterizer driver Summary(pl.UTF-8): Sterownik X.org DRI obsługujący rysowanie programowe License: MIT Group: X11/Libraries -Requires: %{name}-dri-core = %{version}-%{release} Requires: xorg-xserver-libglx(glapi) = %{glapi_ver} Requires: xorg-xserver-server >= %{xserver_ver} @@ -915,23 +856,6 @@ Mesa nouveau driver for the vdpau API. It supports NVidia adapters Sterownik Mesa nouveau dla API vdpau. Obsługuje karty NVidia (NV40-NV96, NVa0). -%package -n libvdpau-driver-mesa-r300 -Summary: Mesa r300 driver for the vdpau API -Summary(pl.UTF-8): Sterownik Mesa r300 dla API vdpau -License: MIT -Group: X11/Libraries -Requires: libdrm >= %{libdrm_ver} -Requires: libvdpau >= 0.4.1 -Conflicts: libvdpau-driver-mesa - -%description -n libvdpau-driver-mesa-r300 -Mesa r300 driver for the vdpau API. It supports ATI Radeon adapters -based on R300/R400/RS690/R500 chips. - -%description -n libvdpau-driver-mesa-r300 -l pl.UTF-8 -Sterownik Mesa r300 dla API vdpau. Obsługuje karty ATI Radeon oparte -na układach R300/R400/RS690/R500. - %package -n libvdpau-driver-mesa-r600 Summary: Mesa r600 driver for the vdpau API Summary(pl.UTF-8): Sterownik Mesa r600 dla API vdpau @@ -967,28 +891,9 @@ adapters based on Southern Islands chips. Sterownik Mesa radeonsi dla API vdpau. Obsługuje karty ATI Radeon oparte na układach Southern Islands. -%package -n libvdpau-driver-mesa-softpipe -Summary: Mesa softpipe driver for the vdpau API -Summary(pl.UTF-8): Sterownik Mesa softpipe dla API vdpau -License: MIT -Group: X11/Libraries -Requires: libdrm >= %{libdrm_ver} -Requires: libvdpau >= 0.4.1 -Conflicts: libvdpau-driver-mesa - -%description -n libvdpau-driver-mesa-softpipe -Mesa softpipe driver for the vdpau API. - -%description -n libvdpau-driver-mesa-softpipe -l pl.UTF-8 -Sterownik Mesa softpipe dla API vdpau. - %prep %setup -q %patch0 -p1 -%patch1 -p1 -%patch2 -p1 -%patch3 -p1 -%patch4 -p1 %build %{__libtoolize} @@ -1070,7 +975,7 @@ rm -rf $RPM_BUILD_ROOT # dlopened by soname %{__rm} $RPM_BUILD_ROOT%{_libdir}/libXvMC*.so # not used externally -%{__rm} $RPM_BUILD_ROOT%{_libdir}/lib{dricore%{int_sover},glapi}.so +%{__rm} $RPM_BUILD_ROOT%{_libdir}/libglapi.so # dlopened %{__rm} $RPM_BUILD_ROOT%{_libdir}/egl/egl_*.la %{__rm} $RPM_BUILD_ROOT%{_libdir}/gallium-pipe/pipe_*.la @@ -1107,12 +1012,8 @@ rm -rf $RPM_BUILD_ROOT %post libXvMC-nouveau -p /sbin/ldconfig %postun libXvMC-nouveau -p /sbin/ldconfig -%post libXvMC-r300 -p /sbin/ldconfig -%postun libXvMC-r300 -p /sbin/ldconfig %post libXvMC-r600 -p /sbin/ldconfig %postun libXvMC-r600 -p /sbin/ldconfig -%post libXvMC-softpipe -p /sbin/ldconfig -%postun libXvMC-softpipe -p /sbin/ldconfig %post libgbm -p /sbin/ldconfig %postun libgbm -p /sbin/ldconfig @@ -1126,9 +1027,6 @@ rm -rf $RPM_BUILD_ROOT %post libxatracker -p /sbin/ldconfig %postun libxatracker -p /sbin/ldconfig -%post dri-core -p /sbin/ldconfig -%postun dri-core -p /sbin/ldconfig - %if %{with egl} %files libEGL %defattr(644,root,root,755) @@ -1164,6 +1062,7 @@ rm -rf $RPM_BUILD_ROOT # symlink for binary apps which fail to conform Linux OpenGL ABI # (and dlopen libGL.so instead of libGL.so.1; the same does Mesa libEGL) %attr(755,root,root) %{_libdir}/libGL.so +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/drirc %files libGL-devel %defattr(644,root,root,755) @@ -1253,20 +1152,10 @@ rm -rf $RPM_BUILD_ROOT %attr(755,root,root) %ghost %{_libdir}/libXvMCnouveau.so.1 %endif -%files libXvMC-r300 -%defattr(644,root,root,755) -%attr(755,root,root) %{_libdir}/libXvMCr300.so.1.0.0 -%attr(755,root,root) %ghost %{_libdir}/libXvMCr300.so.1 - %files libXvMC-r600 %defattr(644,root,root,755) %attr(755,root,root) %{_libdir}/libXvMCr600.so.1.0.0 %attr(755,root,root) %ghost %{_libdir}/libXvMCr600.so.1 - -%files libXvMC-softpipe -%defattr(644,root,root,755) -%attr(755,root,root) %{_libdir}/libXvMCsoftpipe.so.1.0.0 -%attr(755,root,root) %ghost %{_libdir}/libXvMCsoftpipe.so.1 %endif %if %{with gbm} @@ -1344,7 +1233,7 @@ rm -rf $RPM_BUILD_ROOT %files libxatracker %defattr(644,root,root,755) %attr(755,root,root) %{_libdir}/libxatracker.so.*.* -%attr(755,root,root) %ghost %{_libdir}/libxatracker.so.1 +%attr(755,root,root) %ghost %{_libdir}/libxatracker.so.2 %files libxatracker-devel %defattr(644,root,root,755) @@ -1362,12 +1251,6 @@ rm -rf $RPM_BUILD_ROOT %{_includedir}/KHR/khrplatform.h %endif -%files dri-core -%defattr(644,root,root,755) -%attr(755,root,root) %{_libdir}/libdricore%{int_sover}.so.*.* -%attr(755,root,root) %ghost %{_libdir}/libdricore%{int_sover}.so.1 -%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/drirc - %files dri-driver-ati-radeon-R100 %defattr(644,root,root,755) %attr(755,root,root) %{_libdir}/xorg/modules/dri/radeon_dri.so @@ -1425,12 +1308,6 @@ rm -rf $RPM_BUILD_ROOT %attr(755,root,root) %{_libdir}/vdpau/libvdpau_nouveau.so %endif -%files -n libvdpau-driver-mesa-r300 -%defattr(644,root,root,755) -%attr(755,root,root) %{_libdir}/vdpau/libvdpau_r300.so.1.0.0 -%attr(755,root,root) %{_libdir}/vdpau/libvdpau_r300.so.1 -%attr(755,root,root) %{_libdir}/vdpau/libvdpau_r300.so - %files -n libvdpau-driver-mesa-r600 %defattr(644,root,root,755) %attr(755,root,root) %{_libdir}/vdpau/libvdpau_r600.so.1.0.0 @@ -1442,10 +1319,4 @@ rm -rf $RPM_BUILD_ROOT %attr(755,root,root) %{_libdir}/vdpau/libvdpau_radeonsi.so.1.0.0 %attr(755,root,root) %{_libdir}/vdpau/libvdpau_radeonsi.so.1 %attr(755,root,root) %{_libdir}/vdpau/libvdpau_radeonsi.so - -%files -n libvdpau-driver-mesa-softpipe -%defattr(644,root,root,755) -%attr(755,root,root) %{_libdir}/vdpau/libvdpau_softpipe.so.1.0.0 -%attr(755,root,root) %{_libdir}/vdpau/libvdpau_softpipe.so.1 -%attr(755,root,root) %{_libdir}/vdpau/libvdpau_softpipe.so %endif -- 2.44.0