[packages/Mesa] - up to 10.0.0 (TODO: obsoletes - where? better drirc location?)

arekm arekm at pld-linux.org
Sun Dec 1 19:06:23 CET 2013


commit 0d8bac2aa11bfa974e743671294b1a5c7ea1c079
Author: Arkadiusz Miśkiewicz <arekm at maven.pl>
Date:   Sun Dec 1 19:06:19 2013 +0100

    - up to 10.0.0 (TODO: obsoletes - where? better drirc location?)

 ...-Simplify-native_wayland_drm_bufmgr_helpe.patch | 818 ---------------------
 ...-Don-t-add-a-listener-for-wl_drm-twice-in.patch |  29 -
 0003-egl-Update-to-Wayland-1.2-server-API.patch    | 523 -------------
 ...-Commit-the-rest-of-the-native_wayland_dr.patch |  61 --
 Mesa-link.patch                                    |  11 +-
 Mesa.spec                                          | 145 +---
 6 files changed, 9 insertions(+), 1578 deletions(-)
---
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
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 <ander.conselvan.de.oliveira at intel.com>
-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 <ander.conselvan.de.oliveira at intel.com>
----
- 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 <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(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 <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(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 <xf86drm.h>
- #include <sys/types.h>
-@@ -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 <ander.conselvan.de.oliveira at intel.com>
-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 <ander.conselvan.de.oliveira at intel.com>
----
- 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 <ander.conselvan.de.oliveira at intel.com>
-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 <ander.conselvan.de.oliveira at intel.com>
----
- 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 <wayland-client.h>
--#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?= <krh at bitplanet.net>
-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 <krh at bitplanet.net>
----
- 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 at VERSION@_la_LDFLAGS = -version-number 1:0
- libdricore at VERSION@_la_LIBADD = \
-         ../program/libdricore_program.la \
-+	$(DLOPEN_LIBS)
-         $()
- 
- if HAVE_X86_ASM
+
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/Mesa.git/commitdiff/0d8bac2aa11bfa974e743671294b1a5c7ea1c079



More information about the pld-cvs-commit mailing list