SHA256
1
0
forked from pool/Mesa

* fdo#97988 [radeonsi] playing back videos with VDPAU exhibits

* fdo#99484 Crusader Kings 2 - Loading bars, siege bars, morale bars, etc.
  * fdo#100049 ralloc: Make sure ralloc() allocations match malloc()'s
    alignment. causes seg fault in 32bit build
  * many fixes for ANV, RADV, Vulkan and i965 + radeonsi drivers

- fedora_0001-glxglvnddispatch-Add-missing-dispatch-for-GetDriverC.patch
  * Fix glXGetDriverConfig not working with glvnd 
  (https://bugzilla.redhat.com/show_bug.cgi?id=1429894)
- Fix indirect rendering, add libGLX_indirect.so.0 symlink
  (https://bugzilla.redhat.com/show_bug.cgi?id=1427174)
- added Requires to libglvnd0/libglvnd-devel where still needed
- patches picked from fedora:
  http://pkgs.fedoraproject.org/cgit/rpms/mesa.git/tree/

- re-enabled GLES build with libglvnd build, just not package GLES
  libs and require libglvnd0/libglvnd-devel instead

- archlinux_0001-Fix-linkage-against-shared-glapi.patch
  * fixes libglvnd support for osmesa
- archlinux_glvnd-fix-gl-dot-pc.patch
  * fixes libglvnd support in pkgconfig file
- archlinux_0001-EGL-Implement-the-libglvnd-interface-for-EGL-v2.patch/
  archlinux_0002-fixup-EGL-Implement-the-libglvnd-interface-for-EGL-v.patch
  * adds libglvnd support for EGL
- patches picked from archlinux:
  https://git.archlinux.org/svntogit/packages.git/tree/trunk?h=packages/mesa

- archlinux_glapi-Link-with-glapi-when-built-shared.patch
  * currently needed for libglvnd support; picked from archlinux

OBS-URL: https://build.opensuse.org/package/show/X11:XOrg/Mesa?expand=0&rev=584
This commit is contained in:
Stefan Dirsch 2017-03-27 13:16:13 +00:00 committed by Git OBS Bridge
parent 2efdc95a37
commit 709691dd52
8 changed files with 4306 additions and 7 deletions

View File

@ -1,14 +1,61 @@
-------------------------------------------------------------------
Mon Mar 20 18:07:07 UTC 2017 - mimi.vx@gmail.com
Fri Mar 24 14:45:49 UTC 2017 - sndirsch@suse.com
- update to 17.0.2
* fdo#97988 [radeonsi] playing back videos with VDPAU exhibits
deinterlacing/anti-aliasing issues not visible with VA-API
* fdo#99484 Crusader Kings 2 - Loading bars, siege bars, morale bars, etc.
do not render correctly
* fdo#100049 ralloc: Make sure ralloc() allocations match malloc()'s alignment.
causes seg fault in 32bit build
* many fixes for ANV, RADV, Vulkan and i965 + radeonsi drivers
* fdo#100049 ralloc: Make sure ralloc() allocations match malloc()'s
alignment. causes seg fault in 32bit build
* many fixes for ANV, RADV, Vulkan and i965 + radeonsi drivers
-------------------------------------------------------------------
Thu Mar 23 13:41:27 UTC 2017 - sndirsch@suse.com
- fedora_0001-glxglvnddispatch-Add-missing-dispatch-for-GetDriverC.patch
* Fix glXGetDriverConfig not working with glvnd
(https://bugzilla.redhat.com/show_bug.cgi?id=1429894)
- Fix indirect rendering, add libGLX_indirect.so.0 symlink
(https://bugzilla.redhat.com/show_bug.cgi?id=1427174)
- added Requires to libglvnd0/libglvnd-devel where still needed
- patches picked from fedora:
http://pkgs.fedoraproject.org/cgit/rpms/mesa.git/tree/
-------------------------------------------------------------------
Wed Mar 22 11:21:25 UTC 2017 - sndirsch@suse.com
- re-enabled GLES build with libglvnd build, just not package GLES
libs and require libglvnd0/libglvnd-devel instead
-------------------------------------------------------------------
Tue Mar 21 10:57:54 UTC 2017 - sndirsch@suse.com
- archlinux_0001-Fix-linkage-against-shared-glapi.patch
* fixes libglvnd support for osmesa
- archlinux_glvnd-fix-gl-dot-pc.patch
* fixes libglvnd support in pkgconfig file
- archlinux_0001-EGL-Implement-the-libglvnd-interface-for-EGL-v2.patch/
archlinux_0002-fixup-EGL-Implement-the-libglvnd-interface-for-EGL-v.patch
* adds libglvnd support for EGL
- patches picked from archlinux:
https://git.archlinux.org/svntogit/packages.git/tree/trunk?h=packages/mesa
-------------------------------------------------------------------
Fri Mar 17 15:06:03 UTC 2017 - sndirsch@suse.com
- archlinux_glapi-Link-with-glapi-when-built-shared.patch
* currently needed for libglvnd support; picked from archlinux
https://git.archlinux.org/svntogit/packages.git/tree/trunk?h=packages/mesa
- fixed typo in Requires to libglvnd
-------------------------------------------------------------------
Thu Mar 9 14:20:22 UTC 2017 - sndirsch@suse.com
- build with libglvnd support enabled (can be easily disabled via
specfile define); requires libglvnd runtime and development
packages; disabled build of GLESv1/v2 libs/packages provided now
via libglvnd
-------------------------------------------------------------------
Sat Mar 4 16:29:46 UTC 2017 - mimi.vx@gmail.com

View File

@ -20,6 +20,7 @@
# They may fix KDE on Nouveau. They may also deadlock your userland.
%define use_broken_nouveau_locking_patches 0
%define libglvnd 1
%define glamor 1
%define _name_archive mesa
%define _version 17.0.2
@ -75,6 +76,13 @@ Patch15: u_mesa-8.0-llvmpipe-shmget.patch
Patch18: n_VDPAU-XVMC-libs-Replace-hardlinks-with-copies.patch
# never to be upstreamed
Patch21: n_Define-GLAPIVAR-separate-from-GLAPI.patch
# currently needed for libglvnd support
Patch30: archlinux_glapi-Link-with-glapi-when-built-shared.patch
Patch31: archlinux_0001-Fix-linkage-against-shared-glapi.patch
Patch32: archlinux_glvnd-fix-gl-dot-pc.patch
Patch33: archlinux_0001-EGL-Implement-the-libglvnd-interface-for-EGL-v2.patch
Patch34: archlinux_0002-fixup-EGL-Implement-the-libglvnd-interface-for-EGL-v.patch
Patch35: fedora_0001-glxglvnddispatch-Add-missing-dispatch-for-GetDriverC.patch
# Nouveau multithreading workarounds from https://github.com/imirkin/mesa/commits/locking
Patch61: N_01-WIP-nouveau-add-locking.patch
@ -103,6 +111,9 @@ BuildRequires: pkgconfig(libdrm) >= 2.4.66
BuildRequires: pkgconfig(libdrm_amdgpu) >= 2.4.63
BuildRequires: pkgconfig(libdrm_nouveau) >= 2.4.66
BuildRequires: pkgconfig(libdrm_radeon) >= 2.4.56
%if 0%{?libglvnd}
BuildRequires: pkgconfig(libglvnd) >= 0.1.0
%endif
BuildRequires: pkgconfig(libkms) >= 1.0.0
BuildRequires: pkgconfig(libudev) > 151
BuildRequires: pkgconfig(libva)
@ -155,6 +166,10 @@ BuildRequires: libclc
BuildRequires: llvm-clang-devel
%endif
%if 0%{?libglvnd}
Requires: libglvnd0 >= 0.1.0
%endif
%description
Mesa is a 3-D graphics library with an API which is very similar to
that of OpenGL.* To the extent that Mesa utilizes the OpenGL command
@ -211,6 +226,7 @@ just Mesa or The Mesa 3-D graphics library.
# Kudos to Debian for the descriptions
Summary: Free implementation of the EGL API
Group: System/Libraries
Requires: libglvnd0 >= 0.1.0
%description -n Mesa-libEGL1
This package contains the EGL native platform graphics interface
@ -227,6 +243,7 @@ support.
Summary: Development files for the EGL API
Group: Development/Libraries/C and C++
Requires: Mesa-libEGL1 = %{version}
Requires: libglvnd-devel >= 0.1.0
# Other requires taken care of by pkgconfig already
%description -n Mesa-libEGL-devel
@ -243,6 +260,7 @@ programs against the EGL library.
Summary: The GL/GLX runtime of the Mesa 3D graphics library
Group: System/Libraries
Requires: Mesa = %{version}
Requires: libglvnd0 >= 0.1.0
%description -n Mesa-libGL1
Mesa is a software library for 3D computer graphics that provides a
@ -258,6 +276,7 @@ the X Window System.
Summary: GL/GLX development files of the OpenGL API
Group: Development/Libraries/C and C++
Requires: Mesa-libGL1 = %{version}
Requires: libglvnd-devel >= 0.1.0
%description -n Mesa-libGL-devel
Mesa is a software library for 3D computer graphics that provides a
@ -270,6 +289,7 @@ programs with Mesa.
%package -n Mesa-libGLESv1_CM1
Summary: Free implementation of the OpenGL|ES 1.x Common Profile API
Group: System/Libraries
Requires: libglvnd0 >= 0.1.0
%description -n Mesa-libGLESv1_CM1
OpenGL|ES is a cross-platform API for full-function 2D and 3D
@ -283,6 +303,7 @@ OpenGL|ES 1.x provides an API for fixed-function hardware.
Summary: Development files for the OpenGL ES 1.x API
Group: Development/Libraries/C and C++
Requires: Mesa-libGLESv1_CM1 = %{version}
Requires: libglvnd-devel >= 0.1.0
Requires: pkgconfig(egl)
%description -n Mesa-libGLESv1_CM-devel
@ -299,6 +320,7 @@ using the OpenGL|ES 1.x APIs.
%package -n Mesa-libGLESv2-2
Summary: Free implementation of the OpenGL|ES 2.x API
Group: System/Libraries
Requires: libglvnd0 >= 0.1.0
%description -n Mesa-libGLESv2-2
OpenGL|ES is a cross-platform API for full-function 2D and 3D
@ -316,6 +338,7 @@ ES 3 entry points.
Summary: Development files for the OpenGL ES 2.x API
Group: Development/Libraries/C and C++
Requires: Mesa-libGLESv2-2 = %{version}
Requires: libglvnd-devel >= 0.1.0
Requires: pkgconfig(egl)
%description -n Mesa-libGLESv2-devel
@ -333,7 +356,9 @@ applications using the OpenGL|ES 2.x APIs.
%package -n Mesa-libGLESv3-devel
Summary: Development files for the OpenGL ES 3.x API
Group: Development/Libraries/C and C++
%if 0%{?libglvnd} == 0
Requires: Mesa-libGLESv2-2 = %{version}
%endif
Requires: pkgconfig(egl)
%description -n Mesa-libGLESv3-devel
@ -606,6 +631,15 @@ rm -rf docs/README.{VMS,WIN32,OS2}
%patch18 -p1
%patch21 -p1
%if 0%{?libglvnd}
%patch30 -p1
%patch31 -p1
%patch32 -p1
%patch33 -p1
%patch34 -p1
%patch35 -p1
%endif
%if %{use_broken_nouveau_locking_patches}
%patch61 -p1
%patch62 -p1
@ -622,7 +656,11 @@ egl_platforms=x11,drm
%endif
autoreconf -fvi
%configure --enable-gles1 \
%configure \
%if 0%{?libglvnd}
--enable-libglvnd \
%endif
--enable-gles1 \
--enable-gles2 \
--enable-dri \
--with-egl-platforms=$egl_platforms \
@ -677,9 +715,16 @@ make %{?_smp_mflags}
make DESTDIR=%{buildroot} install %{?_smp_mflags}
find %{buildroot} -type f -name "*.la" -delete -print
%if 0%{?libglvnd} == 0
# Make a symlink to libGL.so.1.2 for compatibility (bnc#809359, bnc#831306)
test -f %{buildroot}%{_libdir}/libGL.so.1.2 || \
ln -s `readlink %{buildroot}%{_libdir}/libGL.so.1` %{buildroot}%{_libdir}/libGL.so.1.2
%else
rm -f %{buildroot}%{_libdir}/libGLES*
# glvnd needs a default provider for indirect rendering where it cannot
# determine the vendor
ln -s %{_libdir}/libGLX_mesa.so.0 %{buildroot}%{_libdir}/libGLX_indirect.so.0
%endif
for dir in ../xc/doc/man/{GL/gl,GL/glx}; do
pushd $dir
@ -703,6 +748,7 @@ done
%postun -n Mesa-libGL1 -p /sbin/ldconfig
%if 0%{?libglvnd} == 0
%post -n Mesa-libGLESv1_CM1 -p /sbin/ldconfig
%postun -n Mesa-libGLESv1_CM1 -p /sbin/ldconfig
@ -710,6 +756,7 @@ done
%post -n Mesa-libGLESv2-2 -p /sbin/ldconfig
%postun -n Mesa-libGLESv2-2 -p /sbin/ldconfig
%endif
%post -n libOSMesa8 -p /sbin/ldconfig
@ -789,46 +836,70 @@ done
%files -n Mesa-libEGL1
%defattr(-,root,root)
%if 0%{?libglvnd}
%{_libdir}/libEGL_mesa.so*
%dir %{_datadir}/glvnd
%dir %{_datadir}/glvnd/egl_vendor.d
%{_datadir}/glvnd/egl_vendor.d/50_mesa.json
%else
%{_libdir}/libEGL.so.1*
%endif
%files -n Mesa-libEGL-devel
%defattr(-,root,root)
%{_includedir}/EGL
%{_includedir}/KHR
%if !0%{?libglvnd}
%{_libdir}/libEGL.so
%endif
%{_libdir}/pkgconfig/egl.pc
%files -n Mesa-libGL1
%defattr(-,root,root)
%if 0%{?libglvnd}
%{_libdir}/libGLX_mesa.so*
%{_libdir}/libGLX_indirect.so*
%else
%{_libdir}/libGL.so.1*
%endif
%files -n Mesa-libGL-devel
%defattr(-,root,root)
%dir %{_includedir}/GL
%{_includedir}/GL/*.h
%exclude %{_includedir}/GL/osmesa.h
%if 0%{?libglvnd} == 0
%{_libdir}/libGL.so
%endif
%{_libdir}/pkgconfig/gl.pc
%{_mandir}/man3/gl[A-Z]*
%files -n Mesa-libGLESv1_CM1
%defattr(-,root,root)
%if 0%{?libglvnd} == 0
%{_libdir}/libGLESv1_CM.so.1*
%endif
%files -n Mesa-libGLESv1_CM-devel
%defattr(-,root,root)
%{_includedir}/GLES
%if 0%{?libglvnd} == 0
%{_libdir}/libGLESv1_CM.so
%endif
%{_libdir}/pkgconfig/glesv1_cm.pc
%files -n Mesa-libGLESv2-2
%defattr(-,root,root)
%if 0%{?libglvnd} == 0
%{_libdir}/libGLESv2.so.2*
%endif
%files -n Mesa-libGLESv2-devel
%defattr(-,root,root)
%{_includedir}/GLES2
%if 0%{?libglvnd} == 0
%{_libdir}/libGLESv2.so
%endif
%{_libdir}/pkgconfig/glesv2.pc
%files -n Mesa-libGLESv3-devel

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,26 @@
From 1b5a187c3c31513ae39cd2a917a3234c2c5f87fc Mon Sep 17 00:00:00 2001
From: Adam Jackson <ajax@redhat.com>
Date: Wed, 12 Oct 2016 13:41:33 -0400
Subject: [PATCH] Fix linkage against shared glapi
Signed-off-by: Adam Jackson <ajax@redhat.com>
---
src/gallium/targets/osmesa/Makefile.am | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/src/gallium/targets/osmesa/Makefile.am b/src/gallium/targets/osmesa/Makefile.am
index 5d39486..04add87 100644
--- a/src/gallium/targets/osmesa/Makefile.am
+++ b/src/gallium/targets/osmesa/Makefile.am
@@ -63,7 +63,7 @@ lib@OSMESA_LIB@_la_LIBADD = \
$(top_builddir)/src/gallium/drivers/trace/libtrace.la \
$(top_builddir)/src/gallium/drivers/softpipe/libsoftpipe.la \
$(top_builddir)/src/gallium/state_trackers/osmesa/libosmesa.la \
- $(top_builddir)/src/mapi/glapi/libglapi.la \
+ $(top_builddir)/src/mapi/shared-glapi/libglapi.la \
$(SHARED_GLAPI_LIB) \
$(OSMESA_LIB_DEPS) \
$(CLOCK_LIB)
--
2.9.3

View File

@ -0,0 +1,33 @@
From 2d4094c2caad6cef2f5544b3966fcc37ceb32036 Mon Sep 17 00:00:00 2001
From: Kyle Brenneman <kbrenneman@nvidia.com>
Date: Thu, 5 Jan 2017 14:29:47 -0700
Subject: [PATCH 2/2] fixup! EGL: Implement the libglvnd interface for EGL (v2)
---
src/egl/generate/eglFunctionList.py | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/src/egl/generate/eglFunctionList.py b/src/egl/generate/eglFunctionList.py
index b19b5f7193..80cb83437c 100644
--- a/src/egl/generate/eglFunctionList.py
+++ b/src/egl/generate/eglFunctionList.py
@@ -53,12 +53,14 @@ method values:
Select the vendor that owns the current context.
"""
-def _eglFunc(name, method, static=False, public=False, inheader=None, prefix="", extension=None, retval=None):
+def _eglFunc(name, method, static=None, public=False, inheader=None, prefix="dispatch_", extension=None, retval=None):
"""
A convenience function to define an entry in the EGL function list.
"""
+ if static is None:
+ static = (not public and method != "custom")
if inheader is None:
- inheader = (not public)
+ inheader = (not static)
values = {
"method" : method,
"prefix" : prefix,
--
2.11.0

View File

@ -0,0 +1,82 @@
From 16875ea5b9170f2213fd486d763f27a9d6dfc1b5 Mon Sep 17 00:00:00 2001
From: Nicolas Chauvet <kwizart@gmail.com>
Date: Tue, 25 Oct 2016 09:35:13 +0200
Subject: [PATCH 1/3] glapi: Link with glapi when built shared
This patch explicitly links to libglapi when built shared.
This was specially needed to avoid undefined non-weak-symbol as shown
with:
ldd -r /usr/lib64/dri/i915_dri.so
linux-vdso.so.1 (0x00007fff821f4000)
libdrm_intel.so.1 => /lib64/libdrm_intel.so.1 (0x00007f6adf2c7000)
libdrm_nouveau.so.2 => /lib64/libdrm_nouveau.so.2 (0x00007f6adf0be000)
libdrm_radeon.so.1 => /lib64/libdrm_radeon.so.1 (0x00007f6adeeb2000)
libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f6adec8b000)
libdrm.so.2 => /lib64/libdrm.so.2 (0x00007f6adea7c000)
libexpat.so.1 => /lib64/libexpat.so.1 (0x00007f6ade84f000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f6ade633000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f6ade42f000)
libm.so.6 => /lib64/libm.so.6 (0x00007f6ade125000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f6addf0e000)
libc.so.6 => /lib64/libc.so.6 (0x00007f6addb4c000)
/lib64/ld-linux-x86-64.so.2 (0x000056274e913000)
libpciaccess.so.0 => /lib64/libpciaccess.so.0 (0x00007f6add941000)
libpcre.so.1 => /lib64/libpcre.so.1 (0x00007f6add6ce000)
undefined symbol: _glapi_get_dispatch_table_size (/usr/lib64/dri/i915_dri.so)
undefined symbol: _glapi_get_context (/usr/lib64/dri/i915_dri.so)
undefined symbol: _glapi_add_dispatch (/usr/lib64/dri/i915_dri.so)
undefined symbol: _glapi_check_multithread (/usr/lib64/dri/i915_dri.so)
undefined symbol: _glapi_tls_Context (/usr/lib64/dri/i915_dri.so)
undefined symbol: _glapi_set_context (/usr/lib64/dri/i915_dri.so)
undefined symbol: _glapi_set_dispatch (/usr/lib64/dri/i915_dri.so)
undefined symbol: _glapi_tls_Dispatch (/usr/lib64/dri/i915_dri.so)
v3: Add gallium counterpart for radeon cases
Reported-by: Jonathan Dieter <jdieter@lesbg.com>
v2: Add Bugzilla and Signed-off
Fixes: 0cbc90c57c ("mesa: dri: Add shared glapi to LIBADD on Android")
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=98428
Signed-off-by: Nicolas Chauvet <kwizart@gmail.com>
---
src/gallium/targets/dri/Makefile.am | 2 --
src/mesa/drivers/dri/Makefile.am | 3 ---
2 files changed, 5 deletions(-)
diff --git a/src/gallium/targets/dri/Makefile.am b/src/gallium/targets/dri/Makefile.am
index bca747f..05f6c8c 100644
--- a/src/gallium/targets/dri/Makefile.am
+++ b/src/gallium/targets/dri/Makefile.am
@@ -1,10 +1,8 @@
include $(top_srcdir)/src/gallium/Automake.inc
-if HAVE_ANDROID
if HAVE_SHARED_GLAPI
SHARED_GLAPI_LIB = $(top_builddir)/src/mapi/shared-glapi/libglapi.la
endif
-endif
AM_CFLAGS = \
-I$(top_srcdir)/src/mapi \
diff --git a/src/mesa/drivers/dri/Makefile.am b/src/mesa/drivers/dri/Makefile.am
index 1c6dd08..8e68fc0 100644
--- a/src/mesa/drivers/dri/Makefile.am
+++ b/src/mesa/drivers/dri/Makefile.am
@@ -6,12 +6,9 @@ MEGADRIVERS_DEPS =
SUBDIRS+=common
-# On Android, we need to explicitly link to libglapi.so.
-if HAVE_ANDROID
if HAVE_SHARED_GLAPI
SHARED_GLAPI_LIB = $(top_builddir)/src/mapi/shared-glapi/libglapi.la
endif
-endif
if HAVE_I915_DRI
SUBDIRS += i915
--
2.7.4

View File

@ -0,0 +1,12 @@
diff -up mesa-12.0.3/src/mesa/gl.pc.in.jx mesa-12.0.3/src/mesa/gl.pc.in
--- mesa-12.0.3/src/mesa/gl.pc.in.jx 2016-01-18 02:39:26.000000000 -0500
+++ mesa-12.0.3/src/mesa/gl.pc.in 2016-10-25 13:06:44.013159358 -0400
@@ -7,7 +7,7 @@ Name: gl
Description: Mesa OpenGL library
Requires.private: @GL_PC_REQ_PRIV@
Version: @PACKAGE_VERSION@
-Libs: -L${libdir} -l@GL_LIB@
+Libs: -L${libdir} -lGL
Libs.private: @GL_PC_LIB_PRIV@
Cflags: -I${includedir} @GL_PC_CFLAGS@
glx_tls: @GLX_TLS@

View File

@ -0,0 +1,88 @@
From efa4f2ebc1e788c3f1cfcf3842058cf838171653 Mon Sep 17 00:00:00 2001
From: Hans de Goede <hdegoede@redhat.com>
Date: Mon, 20 Mar 2017 08:41:26 +0100
Subject: [PATCH] glxglvnddispatch: Add missing dispatch for GetDriverConfig
Together with some fixes to xdriinfo this fixes xdriinfo not working
with glvnd.
Since apps (xdriinfo) expect GetDriverConfig to work without going to
need through the dance to setup a glxcontext (which is a reasonable
expectation IMHO), the dispatch for this ends up significantly different
then any other dispatch function.
This patch gets the job done, but I'm not really happy with how this
patch turned out, suggestions for a better fix are welcome.
Cc: Kyle Brenneman <kbrenneman@nvidia.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
src/glx/g_glxglvnddispatchfuncs.c | 18 ++++++++++++++++++
src/glx/g_glxglvnddispatchindices.h | 1 +
2 files changed, 19 insertions(+)
diff --git a/src/glx/g_glxglvnddispatchfuncs.c b/src/glx/g_glxglvnddispatchfuncs.c
index b5e3398..040cdf8 100644
--- a/src/glx/g_glxglvnddispatchfuncs.c
+++ b/src/glx/g_glxglvnddispatchfuncs.c
@@ -4,6 +4,7 @@
*/
#include <stdlib.h>
+#include "glxclient.h"
#include "glxglvnd.h"
#include "glxglvnddispatchfuncs.h"
#include "g_glxglvnddispatchindices.h"
@@ -50,6 +51,7 @@ const char * const __glXDispatchTableStrings[DI_LAST_INDEX] = {
__ATTRIB(GetCurrentDisplayEXT),
// glXGetCurrentDrawable implemented by libglvnd
// glXGetCurrentReadDrawable implemented by libglvnd
+ __ATTRIB(GetDriverConfig),
// glXGetFBConfigAttrib implemented by libglvnd
__ATTRIB(GetFBConfigAttribSGIX),
__ATTRIB(GetFBConfigFromVisualSGIX),
@@ -334,6 +336,21 @@ static Display *dispatch_GetCurrentDisplayEXT(void)
+static const char *dispatch_GetDriverConfig(const char *driverName)
+{
+ /*
+ * The options are constant for a given driverName, so we do not need
+ * a context (and apps expect to be able to call this without one).
+ */
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
+ return glXGetDriverConfig(driverName);
+#else
+ return NULL;
+#endif
+}
+
+
+
static int dispatch_GetFBConfigAttribSGIX(Display *dpy, GLXFBConfigSGIX config,
int attribute, int *value_return)
{
@@ -939,6 +956,7 @@ const void * const __glXDispatchFunctions[DI_LAST_INDEX + 1] = {
__ATTRIB(DestroyGLXPbufferSGIX),
__ATTRIB(GetContextIDEXT),
__ATTRIB(GetCurrentDisplayEXT),
+ __ATTRIB(GetDriverConfig),
__ATTRIB(GetFBConfigAttribSGIX),
__ATTRIB(GetFBConfigFromVisualSGIX),
__ATTRIB(GetMscRateOML),
diff --git a/src/glx/g_glxglvnddispatchindices.h b/src/glx/g_glxglvnddispatchindices.h
index 05a2c8c..3ba50a7 100644
--- a/src/glx/g_glxglvnddispatchindices.h
+++ b/src/glx/g_glxglvnddispatchindices.h
@@ -39,6 +39,7 @@ typedef enum __GLXdispatchIndex {
DI_GetCurrentDisplayEXT,
// GetCurrentDrawable implemented by libglvnd
// GetCurrentReadDrawable implemented by libglvnd
+ DI_GetDriverConfig,
// GetFBConfigAttrib implemented by libglvnd
DI_GetFBConfigAttribSGIX,
DI_GetFBConfigFromVisualSGIX,
--
2.9.3