From 7cdd1e1ddc5f17698e34d68e503bd34d1c2fd1f347254772615efcac7899d8c5 Mon Sep 17 00:00:00 2001 From: Stefan Dirsch Date: Tue, 21 Mar 2017 10:21:02 +0000 Subject: [PATCH 1/9] Accepting request 481466 from home:mimi_vx:branches:X11:XOrg - 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 OBS-URL: https://build.opensuse.org/request/show/481466 OBS-URL: https://build.opensuse.org/package/show/X11:XOrg/Mesa?expand=0&rev=582 --- Mesa.changes | 12 ++++++++++++ Mesa.spec | 4 ++-- mesa-17.0.1.tar.xz | 3 --- mesa-17.0.1.tar.xz.sig | Bin 566 -> 0 bytes mesa-17.0.2.tar.xz | 3 +++ mesa-17.0.2.tar.xz.sig | Bin 0 -> 566 bytes 6 files changed, 17 insertions(+), 5 deletions(-) delete mode 100644 mesa-17.0.1.tar.xz delete mode 100644 mesa-17.0.1.tar.xz.sig create mode 100644 mesa-17.0.2.tar.xz create mode 100644 mesa-17.0.2.tar.xz.sig diff --git a/Mesa.changes b/Mesa.changes index 7387e8e..2ec3c38 100644 --- a/Mesa.changes +++ b/Mesa.changes @@ -1,3 +1,15 @@ +------------------------------------------------------------------- +Mon Mar 20 18:07:07 UTC 2017 - mimi.vx@gmail.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 + ------------------------------------------------------------------- Sat Mar 4 16:29:46 UTC 2017 - mimi.vx@gmail.com diff --git a/Mesa.spec b/Mesa.spec index 6bd781b..33375f3 100644 --- a/Mesa.spec +++ b/Mesa.spec @@ -22,7 +22,7 @@ %define glamor 1 %define _name_archive mesa -%define _version 17.0.1 +%define _version 17.0.2 %define with_opencl 0 %define with_vulkan 0 %ifarch %ix86 x86_64 %arm ppc ppc64 ppc64le s390x @@ -49,7 +49,7 @@ %endif Name: Mesa -Version: 17.0.1 +Version: 17.0.2 Release: 0 Summary: System for rendering interactive 3-D graphics License: MIT diff --git a/mesa-17.0.1.tar.xz b/mesa-17.0.1.tar.xz deleted file mode 100644 index 554dda2..0000000 --- a/mesa-17.0.1.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:96fd70ef5f31d276a17e424e7e1bb79447ccbbe822b56844213ef932e7ad1b0c -size 9447712 diff --git a/mesa-17.0.1.tar.xz.sig b/mesa-17.0.1.tar.xz.sig deleted file mode 100644 index 034091c57108a9ba79ab5e9cd0b43654125cd3816379d31bf06803d4c3453152..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 566 zcmV-60?GY}0y6{v0SEvc79j+O1GaDue&B6-Ik?vCt~anO>q!j-0$94?`v3|F5bdrv zuq^9I4I^p~|5RxZeL^U0sgI;bFsX^ zgJ!#w!gI1nvJS3Ez*8455pe_)u6Aa{!0`nta)vft-+^pMT#rEJw(wAFo{j}*jF(IZ zn&J^+Yc}`cC(?Y=(E9>uGmF&xhvA%caaZ=GKjDmn--t{Uck-_NQY3NRhJ#vFU5=*L zpLiHT4dL>xIgl!UH+KmboA=ZPbOCZA!JttqHrNYG8|Q;VQpvPxk&g|1TLl{Y8^86@NiRJ{Kp)}{3vL$A58}C}nXheh*I^{*O zAZT}%3!?!ot)(}WD}?`i7Wdji$(`v4WD4BK#TJ+Ouc?o3U-6qdN@BgpsSR~cOw$nF17(-ayQ|#E4XxYCLF||$x8i~2X1N;sPp5XS z(HKEny@V<==&EA$f>Uhc)m%v~AmYCeSut$&zZe^Tv!$dg6h(B@SxoH8GFzTO3cdMp E@8t&(@Bjb+ diff --git a/mesa-17.0.2.tar.xz b/mesa-17.0.2.tar.xz new file mode 100644 index 0000000..267b513 --- /dev/null +++ b/mesa-17.0.2.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f8f191f909e01e65de38d5bdea5fb057f21649a3aed20948be02348e77a689d4 +size 9451056 diff --git a/mesa-17.0.2.tar.xz.sig b/mesa-17.0.2.tar.xz.sig new file mode 100644 index 0000000000000000000000000000000000000000000000000000000000000000..9231166125729ea5d79a88d43492bee3010ab751d05de9095b83b1de47fb530b GIT binary patch literal 566 zcmV-60?GY}0y6{v0SEvc79j+O1GaDue&B6-Ik?vCt~anO>q!j-0$9)D^Z*J85bdrv zuq^9I4Ir%$0H%>MC`f9|@{n^%PHIX&V6j+I0_1sX^v34MYU0w73zzfI?&%M%wx~X( z8SEABq1d9H5Yvd#3++v?Q$^}cG6!P}(WXcj3x9J%@QRc>N7H%E4pox;tO798ofD)W zyw~u$-R!s|RWA;E+6erb2{heHNCaa+nk~lOsccvpPvpIM|V(km~)N8}FvusHQL7H+`lr+t%^u_3X7=rEP<=f+=-h^JqHaH5%4RgSB-2 zj*L0)L?Ak=aSy}#m)PvNBQ~!m-JN8QBO)GJy&sc?T`u-zFLcYTs{%!m8^X(3e5~2K z<*T@Qnt@%rmPXG(RUNRNExV$>L~ax6&uG`nbCb$vtQx!*bqzkrfq1aCOXybNT5)(lG&vi)Qs?l=`|* E{gP-C=Kufz literal 0 HcmV?d00001 From 2efdc95a37bc7d72732342067e3e328d42e37370473fd1b1d5aac6235c73aa41 Mon Sep 17 00:00:00 2001 From: Stefan Dirsch Date: Mon, 27 Mar 2017 13:06:56 +0000 Subject: [PATCH 2/9] OBS-URL: https://build.opensuse.org/package/show/X11:XOrg/Mesa?expand=0&rev=583 --- Mesa.spec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Mesa.spec b/Mesa.spec index 33375f3..bb48e5d 100644 --- a/Mesa.spec +++ b/Mesa.spec @@ -347,8 +347,8 @@ applications using the OpenGL|ES 3.x APIs. %package -n libOSMesa8 Summary: Mesa Off-screen rendering extension -# Wrongly named package shipped .so.8 Group: System/Libraries +# Wrongly named package shipped .so.8 Obsoletes: libOSMesa9 < %{version}-%{release} Provides: libOSMesa9 = %{version}-%{release} @@ -454,8 +454,8 @@ implementation of Mesa. %package libd3d Summary: Mesa Direct3D9 state tracker -# Manually provide d3d library (bnc#918294) Group: System/Libraries +# Manually provide d3d library (bnc#918294) %ifarch x86_64 s390x ppc64le aarch64 Provides: d3dadapter9.so.1()(64bit) %else From 709691dd52ffca6a29bce410947ccc43aad5e32f9fc3ce89afcd67c9b3b29ee9 Mon Sep 17 00:00:00 2001 From: Stefan Dirsch Date: Mon, 27 Mar 2017 13:16:13 +0000 Subject: [PATCH 3/9] * 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 --- Mesa.changes | 59 +- Mesa.spec | 73 +- ...nt-the-libglvnd-interface-for-EGL-v2.patch | 3940 +++++++++++++++++ ...001-Fix-linkage-against-shared-glapi.patch | 26 + ...ent-the-libglvnd-interface-for-EGL-v.patch | 33 + ...pi-Link-with-glapi-when-built-shared.patch | 82 + archlinux_glvnd-fix-gl-dot-pc.patch | 12 + ...-Add-missing-dispatch-for-GetDriverC.patch | 88 + 8 files changed, 4306 insertions(+), 7 deletions(-) create mode 100644 archlinux_0001-EGL-Implement-the-libglvnd-interface-for-EGL-v2.patch create mode 100644 archlinux_0001-Fix-linkage-against-shared-glapi.patch create mode 100644 archlinux_0002-fixup-EGL-Implement-the-libglvnd-interface-for-EGL-v.patch create mode 100644 archlinux_glapi-Link-with-glapi-when-built-shared.patch create mode 100644 archlinux_glvnd-fix-gl-dot-pc.patch create mode 100644 fedora_0001-glxglvnddispatch-Add-missing-dispatch-for-GetDriverC.patch diff --git a/Mesa.changes b/Mesa.changes index 2ec3c38..ae6b94b 100644 --- a/Mesa.changes +++ b/Mesa.changes @@ -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 + * 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. + * 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 diff --git a/Mesa.spec b/Mesa.spec index bb48e5d..dedbaea 100644 --- a/Mesa.spec +++ b/Mesa.spec @@ -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 diff --git a/archlinux_0001-EGL-Implement-the-libglvnd-interface-for-EGL-v2.patch b/archlinux_0001-EGL-Implement-the-libglvnd-interface-for-EGL-v2.patch new file mode 100644 index 0000000..c0aebad --- /dev/null +++ b/archlinux_0001-EGL-Implement-the-libglvnd-interface-for-EGL-v2.patch @@ -0,0 +1,3940 @@ +From 97b447ee480a09a744094562da36b019a3eeb10f Mon Sep 17 00:00:00 2001 +From: Kyle Brenneman +Date: Wed, 4 Jan 2017 11:31:58 -0700 +Subject: [PATCH 1/2] EGL: Implement the libglvnd interface for EGL (v2) + +Added separate --enable-libglvnd-glx and --enable-libglvnd-egl configure +options to enable libglvnd for GLX and EGL. The existing --enable-libglvnd +option will now enable both EGL and GLX. + +The new interface mostly just sits on top of the existing library. The only +change to the existing EGL code is to split the client extension string into +platform extensions and everything else. On non-glvnd builds, eglQueryString +will just concatenate the two strings. + +The EGL dispatch stubs are all generated. The script is based on the one used +to generate entrypoints in libglvnd itself. + +v2: + +Rebased against master. + +Reworked the EGL makefile to use separate libtool targets instead of an +automake substitution "lib@EGL_LIB@_la_*" in the variable names. Using the +substitution broke automake's dependency tracking for "make dist". + +Made the EGL code generation scripts work with Python 2 or 3. + +Change gen_egl_dispatch.py to use argparse for the command line arguments. + +Assorted formatting and style cleanup in the Python scripts. +--- + configure.ac | 154 ++- + src/egl/Makefile.am | 97 +- + src/egl/generate/egl.xml | 2412 ++++++++++++++++++++++++++++++++++ + src/egl/generate/eglFunctionList.py | 197 +++ + src/egl/generate/egl_other.xml | 47 + + src/egl/generate/genCommon.py | 223 ++++ + src/egl/generate/gen_egl_dispatch.py | 250 ++++ + src/egl/main/50_mesa.json | 6 + + src/egl/main/eglapi.c | 6 +- + src/egl/main/egldispatchstubs.c | 110 ++ + src/egl/main/egldispatchstubs.h | 26 + + src/egl/main/eglglobals.c | 47 +- + src/egl/main/eglglobals.h | 13 +- + src/egl/main/eglglvnd.c | 82 ++ + 14 files changed, 3576 insertions(+), 94 deletions(-) + create mode 100755 src/egl/generate/egl.xml + create mode 100644 src/egl/generate/eglFunctionList.py + create mode 100644 src/egl/generate/egl_other.xml + create mode 100644 src/egl/generate/genCommon.py + create mode 100755 src/egl/generate/gen_egl_dispatch.py + create mode 100644 src/egl/main/50_mesa.json + create mode 100644 src/egl/main/egldispatchstubs.c + create mode 100644 src/egl/main/egldispatchstubs.h + create mode 100644 src/egl/main/eglglvnd.c + +Index: mesa-17.0.1/configure.ac +=================================================================== +--- mesa-17.0.1.orig/configure.ac ++++ mesa-17.0.1/configure.ac +@@ -528,8 +528,6 @@ else + DEFINES="$DEFINES -DNDEBUG" + fi + +-DEFAULT_GL_LIB_NAME=GL +- + dnl + dnl Check if linker supports -Bsymbolic + dnl +@@ -627,23 +625,6 @@ esac + + AM_CONDITIONAL(HAVE_COMPAT_SYMLINKS, test "x$HAVE_COMPAT_SYMLINKS" = xyes) + +-DEFAULT_GL_LIB_NAME=GL +- +-dnl +-dnl Libglvnd configuration +-dnl +-AC_ARG_ENABLE([libglvnd], +- [AS_HELP_STRING([--enable-libglvnd], +- [Build for libglvnd @<:@default=disabled@:>@])], +- [enable_libglvnd="$enableval"], +- [enable_libglvnd=no]) +-AM_CONDITIONAL(USE_LIBGLVND_GLX, test "x$enable_libglvnd" = xyes) +-#AM_COND_IF([USE_LIBGLVND_GLX], [DEFINES="${DEFINES} -DUSE_LIBGLVND_GLX=1"]) +-if test "x$enable_libglvnd" = xyes ; then +- DEFINES="${DEFINES} -DUSE_LIBGLVND_GLX=1" +- DEFAULT_GL_LIB_NAME=GLX_mesa +-fi +- + dnl + dnl library names + dnl +@@ -677,36 +658,6 @@ esac + + AC_SUBST([LIB_EXT]) + +-AC_ARG_WITH([gl-lib-name], +- [AS_HELP_STRING([--with-gl-lib-name@<:@=NAME@:>@], +- [specify GL library name @<:@default=GL@:>@])], +- [GL_LIB=$withval], +- [GL_LIB="$DEFAULT_GL_LIB_NAME"]) +-AC_ARG_WITH([osmesa-lib-name], +- [AS_HELP_STRING([--with-osmesa-lib-name@<:@=NAME@:>@], +- [specify OSMesa library name @<:@default=OSMesa@:>@])], +- [OSMESA_LIB=$withval], +- [OSMESA_LIB=OSMesa]) +-AS_IF([test "x$GL_LIB" = xyes], [GL_LIB="$DEFAULT_GL_LIB_NAME"]) +-AS_IF([test "x$OSMESA_LIB" = xyes], [OSMESA_LIB=OSMesa]) +- +-dnl +-dnl Mangled Mesa support +-dnl +-AC_ARG_ENABLE([mangling], +- [AS_HELP_STRING([--enable-mangling], +- [enable mangled symbols and library name @<:@default=disabled@:>@])], +- [enable_mangling="${enableval}"], +- [enable_mangling=no] +-) +-if test "x${enable_mangling}" = "xyes" ; then +- DEFINES="${DEFINES} -DUSE_MGL_NAMESPACE" +- GL_LIB="Mangled${GL_LIB}" +- OSMESA_LIB="Mangled${OSMESA_LIB}" +-fi +-AC_SUBST([GL_LIB]) +-AC_SUBST([OSMESA_LIB]) +- + dnl + dnl potentially-infringing-but-nobody-knows-for-sure stuff + dnl +@@ -1325,31 +1276,94 @@ AM_CONDITIONAL(HAVE_GALLIUM_XLIB_GLX, te + dnl + dnl Libglvnd configuration + dnl ++ ++DEFAULT_GL_LIB_NAME=GL ++ + AC_ARG_ENABLE([libglvnd], + [AS_HELP_STRING([--enable-libglvnd], +- [Build for libglvnd @<:@default=disabled@:>@])], ++ [Build GLX and EGL for libglvnd @<:@default=disabled@:>@])], + [enable_libglvnd="$enableval"], + [enable_libglvnd=no]) +-AM_CONDITIONAL(USE_LIBGLVND_GLX, test "x$enable_libglvnd" = xyes) +-if test "x$enable_libglvnd" = xyes ; then +- dnl XXX: update once we can handle more than libGL/glx. +- dnl Namely: we should error out if neither of the glvnd enabled libraries +- dnl are built +- case "x$enable_glx" in +- xno) +- AC_MSG_ERROR([cannot build libglvnd without GLX]) +- ;; +- xxlib | xgallium-xlib ) +- AC_MSG_ERROR([cannot build libgvnd when Xlib-GLX or Gallium-Xlib-GLX is enabled]) +- ;; +- xdri) +- ;; +- esac ++AM_CONDITIONAL(USE_LIBGLVND_GLX, test "x$enable_libglvnd_glx" = xyes) ++ ++AC_ARG_ENABLE([libglvnd-glx], ++ [AS_HELP_STRING([--enable-libglvnd-glx], ++ [Build GLX for libglvnd @<:@default=disabled@:>@])], ++ [enable_libglvnd_glx="$enableval"], ++ [enable_libglvnd_glx="$enable_libglvnd"]) ++AM_CONDITIONAL(USE_LIBGLVND_GLX, test "x$enable_libglvnd_glx" = xyes) ++ ++AC_ARG_ENABLE([libglvnd-egl], ++ [AS_HELP_STRING([--enable-libglvnd-egl], ++ [Build EGL for libglvnd @<:@default=disabled@:>@])], ++ [enable_libglvnd_egl="$enableval"], ++ [enable_libglvnd_egl="$enable_libglvnd"]) ++AM_CONDITIONAL(USE_LIBGLVND_EGL, test "x$enable_libglvnd_egl" = xyes) ++ ++if test "x$enable_libglvnd_glx" = xyes -o "x$enable_libglvnd_egl" = xyes ; then ++ PKG_CHECK_VAR(LIBGLVND_DATADIR, libglvnd, datadir) ++ AC_SUBST([LIBGLVND_DATADIR]) ++ ++ if test "x$enable_libglvnd_egl" = xyes ; then ++ PKG_CHECK_MODULES([GLVND], libglvnd >= 0.2.0) ++ ++ if test "x$enable_egl" != xyes ; then ++ AC_MSG_ERROR([cannot build libglvnd without EGL]) ++ fi ++ DEFINES="${DEFINES} -DUSE_LIBGLVND_EGL=1" ++ else ++ PKG_CHECK_MODULES([GLVND], libglvnd >= 0.1.0) ++ fi ++ ++ if test "x$enable_libglvnd_glx" = xyes ; then ++ dnl XXX: update once we can handle more than libGL/glx. ++ dnl Namely: we should error out if neither of the glvnd enabled libraries ++ dnl are built ++ case "x$enable_glx" in ++ xno) ++ AC_MSG_ERROR([cannot build libglvnd without GLX]) ++ ;; ++ xxlib | xgallium-xlib ) ++ AC_MSG_ERROR([cannot build libgvnd when Xlib-GLX or Gallium-Xlib-GLX is enabled]) ++ ;; ++ xdri) ++ ;; ++ esac ++ ++ DEFINES="${DEFINES} -DUSE_LIBGLVND_GLX=1" ++ DEFAULT_GL_LIB_NAME=GLX_mesa ++ fi ++fi ++ ++AC_ARG_WITH([gl-lib-name], ++ [AS_HELP_STRING([--with-gl-lib-name@<:@=NAME@:>@], ++ [specify GL library name @<:@default=GL@:>@])], ++ [GL_LIB=$withval], ++ [GL_LIB="$DEFAULT_GL_LIB_NAME"]) ++AC_ARG_WITH([osmesa-lib-name], ++ [AS_HELP_STRING([--with-osmesa-lib-name@<:@=NAME@:>@], ++ [specify OSMesa library name @<:@default=OSMesa@:>@])], ++ [OSMESA_LIB=$withval], ++ [OSMESA_LIB=OSMesa]) ++AS_IF([test "x$GL_LIB" = xyes], [GL_LIB="$DEFAULT_GL_LIB_NAME"]) ++AS_IF([test "x$OSMESA_LIB" = xyes], [OSMESA_LIB=OSMesa]) + +- PKG_CHECK_MODULES([GLVND], libglvnd >= 0.1.0) +- DEFINES="${DEFINES} -DUSE_LIBGLVND_GLX=1" +- DEFAULT_GL_LIB_NAME=GLX_mesa ++dnl ++dnl Mangled Mesa support ++dnl ++AC_ARG_ENABLE([mangling], ++ [AS_HELP_STRING([--enable-mangling], ++ [enable mangled symbols and library name @<:@default=disabled@:>@])], ++ [enable_mangling="${enableval}"], ++ [enable_mangling=no] ++) ++if test "x${enable_mangling}" = "xyes" ; then ++ DEFINES="${DEFINES} -DUSE_MGL_NAMESPACE" ++ GL_LIB="Mangled${GL_LIB}" ++ OSMESA_LIB="Mangled${OSMESA_LIB}" + fi ++AC_SUBST([GL_LIB]) ++AC_SUBST([OSMESA_LIB]) + + # Check for libdrm + PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED], +@@ -2769,11 +2783,15 @@ xgallium-xlib) + echo " GLX: $enable_glx" + ;; + esac ++if test "x$enable_glx" != xno; then ++ echo " GLX libglvnd: $enable_libglvnd_glx" ++fi + + dnl EGL + echo "" + echo " EGL: $enable_egl" + if test "$enable_egl" = yes; then ++ echo " EGL libglvnd: $enable_libglvnd_egl" + echo " EGL platforms: $egl_platforms" + + egl_drivers="" +Index: mesa-17.0.1/src/egl/Makefile.am +=================================================================== +--- mesa-17.0.1.orig/src/egl/Makefile.am ++++ mesa-17.0.1/src/egl/Makefile.am +@@ -32,19 +32,16 @@ AM_CFLAGS = \ + $(EGL_CFLAGS) \ + -D_EGL_NATIVE_PLATFORM=$(EGL_NATIVE_PLATFORM) + +-lib_LTLIBRARIES = libEGL.la +- +-libEGL_la_SOURCES = \ ++# Depending on whether libglvnd is enabled, we'll build the EGL library as ++# either libEGL.so.1 or libEGL_mesa.so.0. Using an automake substitution ++# in the variable names breaks "make dist" target, so use a conenience library ++# instead. ++noinst_LTLIBRARIES = libEGL_common.la ++libEGL_common_la_SOURCES = \ + $(LIBEGL_C_FILES) + +-libEGL_la_LIBADD = \ ++libEGL_common_la_LIBADD = \ + $(EGL_LIB_DEPS) +-libEGL_la_LDFLAGS = \ +- -no-undefined \ +- -version-number 1:0 \ +- $(BSYMBOLIC) \ +- $(GC_SECTIONS) \ +- $(LD_NO_UNDEFINED) + + dri2_backend_FILES = + dri3_backend_FILES = +@@ -52,7 +49,7 @@ dri3_backend_FILES = + if HAVE_PLATFORM_X11 + AM_CFLAGS += -DHAVE_X11_PLATFORM + AM_CFLAGS += $(XCB_DRI2_CFLAGS) +-libEGL_la_LIBADD += $(XCB_DRI2_LIBS) ++libEGL_common_la_LIBADD += $(XCB_DRI2_LIBS) + dri2_backend_FILES += drivers/dri2/platform_x11.c + + if HAVE_DRI3 +@@ -60,22 +57,22 @@ dri3_backend_FILES += \ + drivers/dri2/platform_x11_dri3.c \ + drivers/dri2/platform_x11_dri3.h + +-libEGL_la_LIBADD += $(top_builddir)/src/loader/libloader_dri3_helper.la ++libEGL_common_la_LIBADD += $(top_builddir)/src/loader/libloader_dri3_helper.la + endif + endif + + if HAVE_PLATFORM_WAYLAND + AM_CFLAGS += -DHAVE_WAYLAND_PLATFORM + AM_CFLAGS += $(WAYLAND_CFLAGS) +-libEGL_la_LIBADD += $(WAYLAND_LIBS) +-libEGL_la_LIBADD += $(LIBDRM_LIBS) +-libEGL_la_LIBADD += $(top_builddir)/src/egl/wayland/wayland-drm/libwayland-drm.la ++libEGL_common_la_LIBADD += $(WAYLAND_LIBS) ++libEGL_common_la_LIBADD += $(LIBDRM_LIBS) ++libEGL_common_la_LIBADD += $(top_builddir)/src/egl/wayland/wayland-drm/libwayland-drm.la + dri2_backend_FILES += drivers/dri2/platform_wayland.c + endif + + if HAVE_EGL_PLATFORM_DRM + AM_CFLAGS += -DHAVE_DRM_PLATFORM +-libEGL_la_LIBADD += $(top_builddir)/src/gbm/libgbm.la ++libEGL_common_la_LIBADD += $(top_builddir)/src/gbm/libgbm.la + dri2_backend_FILES += drivers/dri2/platform_drm.c + endif + +@@ -87,7 +84,7 @@ endif + if HAVE_EGL_PLATFORM_ANDROID + AM_CFLAGS += -DHAVE_ANDROID_PLATFORM + AM_CFLAGS += $(ANDROID_CFLAGS) +-libEGL_la_LIBADD += $(ANDROID_LIBS) ++libEGL_common_la_LIBADD += $(ANDROID_LIBS) + dri2_backend_FILES += drivers/dri2/platform_android.c + endif + +@@ -101,13 +98,68 @@ AM_CFLAGS += \ + -DDEFAULT_DRIVER_DIR=\"$(DRI_DRIVER_SEARCH_DIR)\" \ + -D_EGL_BUILT_IN_DRIVER_DRI2 + +-libEGL_la_SOURCES += \ ++libEGL_common_la_SOURCES += \ + $(dri2_backend_core_FILES) \ + $(dri2_backend_FILES) \ + $(dri3_backend_FILES) + +-libEGL_la_LIBADD += $(top_builddir)/src/loader/libloader.la +-libEGL_la_LIBADD += $(DLOPEN_LIBS) $(LIBDRM_LIBS) $(CLOCK_LIB) ++libEGL_common_la_LIBADD += $(top_builddir)/src/loader/libloader.la ++libEGL_common_la_LIBADD += $(DLOPEN_LIBS) $(LIBDRM_LIBS) $(CLOCK_LIB) ++ ++GLVND_GEN_DEPS = generate/gen_egl_dispatch.py \ ++ generate/egl.xml generate/eglFunctionList.py generate/genCommon.py \ ++ generate/egl_other.xml ++ ++PYTHON_GEN = $(AM_V_GEN)$(PYTHON2) $(PYTHON_FLAGS) ++g_egldispatchstubs.c: $(GLVND_GEN_DEPS) ++ $(PYTHON_GEN) $(top_srcdir)/src/egl/generate/gen_egl_dispatch.py source \ ++ $(top_srcdir)/src/egl/generate/eglFunctionList.py \ ++ $(top_srcdir)/src/egl/generate/egl.xml \ ++ $(top_srcdir)/src/egl/generate/egl_other.xml > $@ ++ ++g_egldispatchstubs.h: $(GLVND_GEN_DEPS) ++ $(PYTHON_GEN) $(top_srcdir)/src/egl/generate/gen_egl_dispatch.py header \ ++ $(top_srcdir)/src/egl/generate/eglFunctionList.py \ ++ $(top_srcdir)/src/egl/generate/egl.xml \ ++ $(top_srcdir)/src/egl/generate/egl_other.xml > $@ ++ ++BUILT_SOURCES = g_egldispatchstubs.c g_egldispatchstubs.h ++CLEANFILES = $(BUILT_SOURCES) ++ ++if USE_LIBGLVND_EGL ++AM_CFLAGS += \ ++ $(GLVND_CFLAGS) ++ ++vendorjsondir = @LIBGLVND_DATADIR@/glvnd/egl_vendor.d ++vendorjson_DATA = main/50_mesa.json ++ ++lib_LTLIBRARIES = libEGL_mesa.la ++libEGL_mesa_la_SOURCES = \ ++ main/eglglvnd.c \ ++ main/egldispatchstubs.h \ ++ main/egldispatchstubs.c \ ++ g_egldispatchstubs.c ++libEGL_mesa_la_LIBADD = libEGL_common.la ++libEGL_mesa_la_LDFLAGS = \ ++ -no-undefined \ ++ -version-number 0 \ ++ $(BSYMBOLIC) \ ++ $(GC_SECTIONS) \ ++ $(LD_NO_UNDEFINED) ++ ++else # USE_LIBGLVND_EGL ++ ++lib_LTLIBRARIES = libEGL.la ++libEGL_la_SOURCES = ++libEGL_la_LIBADD = libEGL_common.la ++libEGL_la_LDFLAGS = \ ++ -no-undefined \ ++ -version-number 1:0 \ ++ $(BSYMBOLIC) \ ++ $(GC_SECTIONS) \ ++ $(LD_NO_UNDEFINED) ++ ++endif # USE_LIBGLVND_EGL + + include $(top_srcdir)/install-lib-links.mk + +@@ -133,4 +185,7 @@ EXTRA_DIST = \ + SConscript \ + drivers/haiku \ + main/egl.def \ +- main/README.txt ++ main/README.txt \ ++ $(GLVND_GEN_DEPS) \ ++ main/50_mesa.json ++ +Index: mesa-17.0.1/src/egl/generate/egl.xml +=================================================================== +--- /dev/null ++++ mesa-17.0.1/src/egl/generate/egl.xml +@@ -0,0 +1,2412 @@ ++ ++ ++ ++ ++ ++ ++ ++ ++ #include <KHR/khrplatform.h> ++ #include <EGL/eglplatform.h> ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ typedef unsigned int EGLBoolean; ++ typedef unsigned int EGLenum; ++ typedef intptr_t EGLAttribKHR; ++ typedef intptr_t EGLAttrib; ++ typedef void *EGLClientBuffer; ++ typedef void *EGLConfig; ++ typedef void *EGLContext; ++ typedef void *EGLDeviceEXT; ++ typedef void *EGLDisplay; ++ typedef void *EGLImage; ++ typedef void *EGLImageKHR; ++ typedef void *EGLLabelKHR; ++ typedef void *EGLObjectKHR; ++ typedef void *EGLOutputLayerEXT; ++ typedef void *EGLOutputPortEXT; ++ typedef void *EGLStreamKHR; ++ typedef void *EGLSurface; ++ typedef void *EGLSync; ++ typedef void *EGLSyncKHR; ++ typedef void *EGLSyncNV; ++ typedef void (*__eglMustCastToProperFunctionPointerType)(void); ++ typedef khronos_utime_nanoseconds_t EGLTimeKHR; ++ typedef khronos_utime_nanoseconds_t EGLTime; ++ typedef khronos_utime_nanoseconds_t EGLTimeNV; ++ typedef khronos_utime_nanoseconds_t EGLuint64NV; ++ typedef khronos_uint64_t EGLuint64KHR; ++ typedef int EGLNativeFileDescriptorKHR; ++ typedef khronos_ssize_t EGLsizeiANDROID; ++ typedef void (*EGLSetBlobFuncANDROID) (const void *key, EGLsizeiANDROID keySize, const void *value, EGLsizeiANDROID valueSize); ++ typedef EGLsizeiANDROID (*EGLGetBlobFuncANDROID) (const void *key, EGLsizeiANDROID keySize, void *value, EGLsizeiANDROID valueSize); ++ struct EGLClientPixmapHI { ++ void *pData; ++ EGLint iWidth; ++ EGLint iHeight; ++ EGLint iStride; ++}; ++ typedef void ( *EGLDEBUGPROCKHR)(EGLenum error,const char *command,EGLint messageType,EGLLabelKHR threadLabel,EGLLabelKHR objectLabel,const char* message); ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ EGLBoolean eglBindAPI ++ EGLenum api ++ ++ ++ EGLBoolean eglBindTexImage ++ EGLDisplay dpy ++ EGLSurface surface ++ EGLint buffer ++ ++ ++ EGLBoolean eglChooseConfig ++ EGLDisplay dpy ++ const EGLint *attrib_list ++ EGLConfig *configs ++ EGLint config_size ++ EGLint *num_config ++ ++ ++ EGLint eglClientWaitSync ++ EGLDisplay dpy ++ EGLSync sync ++ EGLint flags ++ EGLTime timeout ++ ++ ++ EGLint eglClientWaitSyncKHR ++ EGLDisplay dpy ++ EGLSyncKHR sync ++ EGLint flags ++ EGLTimeKHR timeout ++ ++ ++ ++ EGLint eglClientWaitSyncNV ++ EGLSyncNV sync ++ EGLint flags ++ EGLTimeNV timeout ++ ++ ++ EGLBoolean eglCopyBuffers ++ EGLDisplay dpy ++ EGLSurface surface ++ EGLNativePixmapType target ++ ++ ++ EGLContext eglCreateContext ++ EGLDisplay dpy ++ EGLConfig config ++ EGLContext share_context ++ const EGLint *attrib_list ++ ++ ++ EGLImageKHR eglCreateDRMImageMESA ++ EGLDisplay dpy ++ const EGLint *attrib_list ++ ++ ++ EGLSyncNV eglCreateFenceSyncNV ++ EGLDisplay dpy ++ EGLenum condition ++ const EGLint *attrib_list ++ ++ ++ EGLImage eglCreateImage ++ EGLDisplay dpy ++ EGLContext ctx ++ EGLenum target ++ EGLClientBuffer buffer ++ const EGLAttrib *attrib_list ++ ++ ++ EGLImageKHR eglCreateImageKHR ++ EGLDisplay dpy ++ EGLContext ctx ++ EGLenum target ++ EGLClientBuffer buffer ++ const EGLint *attrib_list ++ ++ ++ EGLSurface eglCreatePbufferFromClientBuffer ++ EGLDisplay dpy ++ EGLenum buftype ++ EGLClientBuffer buffer ++ EGLConfig config ++ const EGLint *attrib_list ++ ++ ++ EGLSurface eglCreatePbufferSurface ++ EGLDisplay dpy ++ EGLConfig config ++ const EGLint *attrib_list ++ ++ ++ EGLSurface eglCreatePixmapSurface ++ EGLDisplay dpy ++ EGLConfig config ++ EGLNativePixmapType pixmap ++ const EGLint *attrib_list ++ ++ ++ EGLSurface eglCreatePixmapSurfaceHI ++ EGLDisplay dpy ++ EGLConfig config ++ struct EGLClientPixmapHI *pixmap ++ ++ ++ EGLSurface eglCreatePlatformPixmapSurface ++ EGLDisplay dpy ++ EGLConfig config ++ void *native_pixmap ++ const EGLAttrib *attrib_list ++ ++ ++ EGLSurface eglCreatePlatformPixmapSurfaceEXT ++ EGLDisplay dpy ++ EGLConfig config ++ void *native_pixmap ++ const EGLint *attrib_list ++ ++ ++ EGLSurface eglCreatePlatformWindowSurface ++ EGLDisplay dpy ++ EGLConfig config ++ void *native_window ++ const EGLAttrib *attrib_list ++ ++ ++ EGLSurface eglCreatePlatformWindowSurfaceEXT ++ EGLDisplay dpy ++ EGLConfig config ++ void *native_window ++ const EGLint *attrib_list ++ ++ ++ EGLStreamKHR eglCreateStreamFromFileDescriptorKHR ++ EGLDisplay dpy ++ EGLNativeFileDescriptorKHR file_descriptor ++ ++ ++ EGLStreamKHR eglCreateStreamKHR ++ EGLDisplay dpy ++ const EGLint *attrib_list ++ ++ ++ EGLSurface eglCreateStreamProducerSurfaceKHR ++ EGLDisplay dpy ++ EGLConfig config ++ EGLStreamKHR stream ++ const EGLint *attrib_list ++ ++ ++ EGLSyncKHR eglCreateStreamSyncNV ++ EGLDisplay dpy ++ EGLStreamKHR stream ++ EGLenum type ++ const EGLint *attrib_list ++ ++ ++ EGLSync eglCreateSync ++ EGLDisplay dpy ++ EGLenum type ++ const EGLAttrib *attrib_list ++ ++ ++ EGLSyncKHR eglCreateSyncKHR ++ EGLDisplay dpy ++ EGLenum type ++ const EGLint *attrib_list ++ ++ ++ EGLSyncKHR eglCreateSync64KHR ++ EGLDisplay dpy ++ EGLenum type ++ const EGLAttribKHR *attrib_list ++ ++ ++ ++ EGLSurface eglCreateWindowSurface ++ EGLDisplay dpy ++ EGLConfig config ++ EGLNativeWindowType win ++ const EGLint *attrib_list ++ ++ ++ EGLint eglDebugMessageControlKHR ++ EGLDEBUGPROCKHR callback ++ const EGLAttrib *attrib_list ++ ++ ++ EGLBoolean eglDestroyContext ++ EGLDisplay dpy ++ EGLContext ctx ++ ++ ++ EGLBoolean eglDestroyImage ++ EGLDisplay dpy ++ EGLImage image ++ ++ ++ EGLBoolean eglDestroyImageKHR ++ EGLDisplay dpy ++ EGLImageKHR image ++ ++ ++ ++ EGLBoolean eglDestroyStreamKHR ++ EGLDisplay dpy ++ EGLStreamKHR stream ++ ++ ++ EGLBoolean eglDestroySurface ++ EGLDisplay dpy ++ EGLSurface surface ++ ++ ++ EGLBoolean eglDestroySync ++ EGLDisplay dpy ++ EGLSync sync ++ ++ ++ EGLBoolean eglDestroySyncKHR ++ EGLDisplay dpy ++ EGLSyncKHR sync ++ ++ ++ ++ EGLBoolean eglDestroySyncNV ++ EGLSyncNV sync ++ ++ ++ EGLint eglDupNativeFenceFDANDROID ++ EGLDisplay dpy ++ EGLSyncKHR sync ++ ++ ++ EGLBoolean eglExportDMABUFImageMESA ++ EGLDisplay dpy ++ EGLImageKHR image ++ int *fds ++ EGLint *strides ++ EGLint *offsets ++ ++ ++ EGLBoolean eglExportDMABUFImageQueryMESA ++ EGLDisplay dpy ++ EGLImageKHR image ++ int *fourcc ++ int *num_planes ++ EGLuint64KHR *modifiers ++ ++ ++ EGLBoolean eglExportDRMImageMESA ++ EGLDisplay dpy ++ EGLImageKHR image ++ EGLint *name ++ EGLint *handle ++ EGLint *stride ++ ++ ++ EGLBoolean eglFenceNV ++ EGLSyncNV sync ++ ++ ++ EGLBoolean eglGetConfigAttrib ++ EGLDisplay dpy ++ EGLConfig config ++ EGLint attribute ++ EGLint *value ++ ++ ++ EGLBoolean eglGetConfigs ++ EGLDisplay dpy ++ EGLConfig *configs ++ EGLint config_size ++ EGLint *num_config ++ ++ ++ EGLContext eglGetCurrentContext ++ ++ ++ EGLDisplay eglGetCurrentDisplay ++ ++ ++ EGLSurface eglGetCurrentSurface ++ EGLint readdraw ++ ++ ++ EGLDisplay eglGetDisplay ++ EGLNativeDisplayType display_id ++ ++ ++ EGLint eglGetError ++ ++ ++ EGLBoolean eglGetOutputLayersEXT ++ EGLDisplay dpy ++ const EGLAttrib *attrib_list ++ EGLOutputLayerEXT *layers ++ EGLint max_layers ++ EGLint *num_layers ++ ++ ++ EGLBoolean eglGetOutputPortsEXT ++ EGLDisplay dpy ++ const EGLAttrib *attrib_list ++ EGLOutputPortEXT *ports ++ EGLint max_ports ++ EGLint *num_ports ++ ++ ++ EGLDisplay eglGetPlatformDisplay ++ EGLenum platform ++ void *native_display ++ const EGLAttrib *attrib_list ++ ++ ++ EGLDisplay eglGetPlatformDisplayEXT ++ EGLenum platform ++ void *native_display ++ const EGLint *attrib_list ++ ++ ++ __eglMustCastToProperFunctionPointerType eglGetProcAddress ++ const char *procname ++ ++ ++ EGLNativeFileDescriptorKHR eglGetStreamFileDescriptorKHR ++ EGLDisplay dpy ++ EGLStreamKHR stream ++ ++ ++ EGLBoolean eglGetSyncAttrib ++ EGLDisplay dpy ++ EGLSync sync ++ EGLint attribute ++ EGLAttrib *value ++ ++ ++ EGLBoolean eglGetSyncAttribKHR ++ EGLDisplay dpy ++ EGLSyncKHR sync ++ EGLint attribute ++ EGLint *value ++ ++ ++ EGLBoolean eglGetSyncAttribNV ++ EGLSyncNV sync ++ EGLint attribute ++ EGLint *value ++ ++ ++ EGLuint64NV eglGetSystemTimeFrequencyNV ++ ++ ++ EGLuint64NV eglGetSystemTimeNV ++ ++ ++ EGLBoolean eglInitialize ++ EGLDisplay dpy ++ EGLint *major ++ EGLint *minor ++ ++ ++ EGLint eglLabelObjectKHR ++ EGLDisplay display ++ EGLenum objectType ++ EGLObjectKHR object ++ EGLLabelKHR label ++ ++ ++ EGLBoolean eglLockSurfaceKHR ++ EGLDisplay dpy ++ EGLSurface surface ++ const EGLint *attrib_list ++ ++ ++ EGLBoolean eglMakeCurrent ++ EGLDisplay dpy ++ EGLSurface draw ++ EGLSurface read ++ EGLContext ctx ++ ++ ++ EGLBoolean eglOutputLayerAttribEXT ++ EGLDisplay dpy ++ EGLOutputLayerEXT layer ++ EGLint attribute ++ EGLAttrib value ++ ++ ++ EGLBoolean eglOutputPortAttribEXT ++ EGLDisplay dpy ++ EGLOutputPortEXT port ++ EGLint attribute ++ EGLAttrib value ++ ++ ++ EGLBoolean eglPostSubBufferNV ++ EGLDisplay dpy ++ EGLSurface surface ++ EGLint x ++ EGLint y ++ EGLint width ++ EGLint height ++ ++ ++ EGLenum eglQueryAPI ++ ++ ++ EGLBoolean eglQueryContext ++ EGLDisplay dpy ++ EGLContext ctx ++ EGLint attribute ++ EGLint *value ++ ++ ++ EGLBoolean eglQueryDebugKHR ++ EGLint attribute ++ EGLAttrib *value ++ ++ ++ EGLBoolean eglQueryDeviceAttribEXT ++ EGLDeviceEXT device ++ EGLint attribute ++ EGLAttrib *value ++ ++ ++ const char *eglQueryDeviceStringEXT ++ EGLDeviceEXT device ++ EGLint name ++ ++ ++ EGLBoolean eglQueryDevicesEXT ++ EGLint max_devices ++ EGLDeviceEXT *devices ++ EGLint *num_devices ++ ++ ++ EGLBoolean eglQueryDisplayAttribEXT ++ EGLDisplay dpy ++ EGLint attribute ++ EGLAttrib *value ++ ++ ++ EGLBoolean eglQueryNativeDisplayNV ++ EGLDisplay dpy ++ EGLNativeDisplayType *display_id ++ ++ ++ EGLBoolean eglQueryNativePixmapNV ++ EGLDisplay dpy ++ EGLSurface surf ++ EGLNativePixmapType *pixmap ++ ++ ++ EGLBoolean eglQueryNativeWindowNV ++ EGLDisplay dpy ++ EGLSurface surf ++ EGLNativeWindowType *window ++ ++ ++ EGLBoolean eglQueryOutputLayerAttribEXT ++ EGLDisplay dpy ++ EGLOutputLayerEXT layer ++ EGLint attribute ++ EGLAttrib *value ++ ++ ++ const char *eglQueryOutputLayerStringEXT ++ EGLDisplay dpy ++ EGLOutputLayerEXT layer ++ EGLint name ++ ++ ++ EGLBoolean eglQueryOutputPortAttribEXT ++ EGLDisplay dpy ++ EGLOutputPortEXT port ++ EGLint attribute ++ EGLAttrib *value ++ ++ ++ const char *eglQueryOutputPortStringEXT ++ EGLDisplay dpy ++ EGLOutputPortEXT port ++ EGLint name ++ ++ ++ EGLBoolean eglQueryStreamKHR ++ EGLDisplay dpy ++ EGLStreamKHR stream ++ EGLenum attribute ++ EGLint *value ++ ++ ++ EGLBoolean eglQueryStreamTimeKHR ++ EGLDisplay dpy ++ EGLStreamKHR stream ++ EGLenum attribute ++ EGLTimeKHR *value ++ ++ ++ EGLBoolean eglQueryStreamu64KHR ++ EGLDisplay dpy ++ EGLStreamKHR stream ++ EGLenum attribute ++ EGLuint64KHR *value ++ ++ ++ const char *eglQueryString ++ EGLDisplay dpy ++ EGLint name ++ ++ ++ EGLBoolean eglQuerySurface ++ EGLDisplay dpy ++ EGLSurface surface ++ EGLint attribute ++ EGLint *value ++ ++ ++ EGLBoolean eglQuerySurface64KHR ++ EGLDisplay dpy ++ EGLSurface surface ++ EGLint attribute ++ EGLAttribKHR *value ++ ++ ++ EGLBoolean eglQuerySurfacePointerANGLE ++ EGLDisplay dpy ++ EGLSurface surface ++ EGLint attribute ++ void **value ++ ++ ++ EGLBoolean eglReleaseTexImage ++ EGLDisplay dpy ++ EGLSurface surface ++ EGLint buffer ++ ++ ++ EGLBoolean eglReleaseThread ++ ++ ++ void eglSetBlobCacheFuncsANDROID ++ EGLDisplay dpy ++ EGLSetBlobFuncANDROID set ++ EGLGetBlobFuncANDROID get ++ ++ ++ EGLBoolean eglSetDamageRegionKHR ++ EGLDisplay dpy ++ EGLSurface surface ++ EGLint *rects ++ EGLint n_rects ++ ++ ++ EGLBoolean eglSignalSyncKHR ++ EGLDisplay dpy ++ EGLSyncKHR sync ++ EGLenum mode ++ ++ ++ EGLBoolean eglSignalSyncNV ++ EGLSyncNV sync ++ EGLenum mode ++ ++ ++ EGLBoolean eglStreamAttribKHR ++ EGLDisplay dpy ++ EGLStreamKHR stream ++ EGLenum attribute ++ EGLint value ++ ++ ++ EGLBoolean eglStreamConsumerAcquireKHR ++ EGLDisplay dpy ++ EGLStreamKHR stream ++ ++ ++ EGLBoolean eglStreamConsumerGLTextureExternalKHR ++ EGLDisplay dpy ++ EGLStreamKHR stream ++ ++ ++ EGLBoolean eglStreamConsumerOutputEXT ++ EGLDisplay dpy ++ EGLStreamKHR stream ++ EGLOutputLayerEXT layer ++ ++ ++ EGLBoolean eglStreamConsumerReleaseKHR ++ EGLDisplay dpy ++ EGLStreamKHR stream ++ ++ ++ EGLBoolean eglSurfaceAttrib ++ EGLDisplay dpy ++ EGLSurface surface ++ EGLint attribute ++ EGLint value ++ ++ ++ EGLBoolean eglSwapBuffers ++ EGLDisplay dpy ++ EGLSurface surface ++ ++ ++ EGLBoolean eglSwapBuffersWithDamageEXT ++ EGLDisplay dpy ++ EGLSurface surface ++ EGLint *rects ++ EGLint n_rects ++ ++ ++ EGLBoolean eglSwapBuffersWithDamageKHR ++ EGLDisplay dpy ++ EGLSurface surface ++ EGLint *rects ++ EGLint n_rects ++ ++ ++ EGLBoolean eglSwapBuffersRegionNOK ++ EGLDisplay dpy ++ EGLSurface surface ++ EGLint numRects ++ const EGLint *rects ++ ++ ++ EGLBoolean eglSwapBuffersRegion2NOK ++ EGLDisplay dpy ++ EGLSurface surface ++ EGLint numRects ++ const EGLint *rects ++ ++ ++ EGLBoolean eglSwapInterval ++ EGLDisplay dpy ++ EGLint interval ++ ++ ++ EGLBoolean eglTerminate ++ EGLDisplay dpy ++ ++ ++ EGLBoolean eglUnlockSurfaceKHR ++ EGLDisplay dpy ++ EGLSurface surface ++ ++ ++ EGLBoolean eglWaitClient ++ ++ ++ EGLBoolean eglWaitGL ++ ++ ++ EGLBoolean eglWaitNative ++ EGLint engine ++ ++ ++ EGLBoolean eglWaitSync ++ EGLDisplay dpy ++ EGLSync sync ++ EGLint flags ++ ++ ++ EGLint eglWaitSyncKHR ++ EGLDisplay dpy ++ EGLSyncKHR sync ++ EGLint flags ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ +Index: mesa-17.0.1/src/egl/generate/eglFunctionList.py +=================================================================== +--- /dev/null ++++ mesa-17.0.1/src/egl/generate/eglFunctionList.py +@@ -0,0 +1,197 @@ ++#!/usr/bin/env python ++ ++""" ++Contains a list of EGL functions to generate dispatch functions for. ++ ++This is used from gen_egl_dispatch.py. ++ ++EGL_FUNCTIONS is a sequence of (name, eglData) pairs, where name is the name ++of the function, and eglData is a dictionary containing data about that ++function. ++ ++The values in the eglData dictionary are: ++- method (string): ++ How to select a vendor library. See "Method values" below. ++ ++- prefix (string): ++ This string is prepended to the name of the dispatch function. If ++ unspecified, the default is "" (an empty string). ++ ++- static (boolean) ++ If True, this function should be declared static. ++ ++- "public" (boolean) ++ If True, the function should be exported from the library. Vendor libraries ++ generally should not use this. ++ ++- extension (string): ++ If specified, this is the name of a macro to check for before defining a ++ function. Used for checking for extension macros and such. ++ ++- retval (string): ++ If specified, this is a C expression with the default value to return if we ++ can't find a function to call. By default, it will try to guess from the ++ return type: EGL_NO_whatever for the various handle types, NULL for ++ pointers, and zero for everything else. ++ ++method values: ++- "custom" ++ The dispatch stub will be hand-written instead of generated. ++ ++- "none" ++ No dispatch function exists at all, but the function should still have an ++ entry in the index array. This is for other functions that a stub may need ++ to call that are implemented in libEGL itself. ++ ++- "display" ++ Select a vendor from an EGLDisplay argument. ++ ++- "device" ++ Select a vendor from an EGLDeviceEXT argument. ++ ++- "current" ++ Select the vendor that owns the current context. ++""" ++ ++def _eglFunc(name, method, static=False, public=False, inheader=None, prefix="", extension=None, retval=None): ++ """ ++ A convenience function to define an entry in the EGL function list. ++ """ ++ if inheader is None: ++ inheader = (not public) ++ values = { ++ "method" : method, ++ "prefix" : prefix, ++ "extension" : extension, ++ "retval" : retval, ++ "static" : static, ++ "public" : public, ++ "inheader" : inheader, ++ } ++ return (name, values) ++ ++EGL_FUNCTIONS = ( ++ # EGL_VERSION_1_0 ++ _eglFunc("eglChooseConfig", "none"), ++ _eglFunc("eglCopyBuffers", "none"), ++ _eglFunc("eglCreateContext", "none"), ++ _eglFunc("eglCreatePbufferSurface", "none"), ++ _eglFunc("eglCreatePixmapSurface", "none"), ++ _eglFunc("eglCreateWindowSurface", "none"), ++ _eglFunc("eglDestroyContext", "none"), ++ _eglFunc("eglDestroySurface", "none"), ++ _eglFunc("eglGetConfigAttrib", "none"), ++ _eglFunc("eglGetConfigs", "none"), ++ _eglFunc("eglQueryContext", "none"), ++ _eglFunc("eglQuerySurface", "none"), ++ _eglFunc("eglSwapBuffers", "none"), ++ _eglFunc("eglWaitGL", "none"), ++ _eglFunc("eglWaitNative", "none"), ++ _eglFunc("eglTerminate", "none"), ++ _eglFunc("eglInitialize", "none"), ++ ++ _eglFunc("eglGetCurrentDisplay", "none"), ++ _eglFunc("eglGetCurrentSurface", "none"), ++ _eglFunc("eglGetDisplay", "none"), ++ _eglFunc("eglGetError", "none"), ++ _eglFunc("eglGetProcAddress", "none"), ++ _eglFunc("eglMakeCurrent", "none"), ++ _eglFunc("eglQueryString", "none"), ++ ++ # EGL_VERSION_1_1 ++ _eglFunc("eglBindTexImage", "none"), ++ _eglFunc("eglReleaseTexImage", "none"), ++ _eglFunc("eglSurfaceAttrib", "none"), ++ _eglFunc("eglSwapInterval", "none"), ++ ++ # EGL_VERSION_1_2 ++ _eglFunc("eglCreatePbufferFromClientBuffer", "none"), ++ _eglFunc("eglWaitClient", "none"), ++ _eglFunc("eglBindAPI", "none"), ++ _eglFunc("eglQueryAPI", "none"), ++ _eglFunc("eglReleaseThread", "none"), ++ ++ # EGL_VERSION_1_4 ++ _eglFunc("eglGetCurrentContext", "none"), ++ ++ # EGL_VERSION_1_5 ++ _eglFunc("eglCreateSync", "none"), ++ _eglFunc("eglDestroySync", "none"), ++ _eglFunc("eglClientWaitSync", "none"), ++ _eglFunc("eglGetSyncAttrib", "none"), ++ _eglFunc("eglCreateImage", "none"), ++ _eglFunc("eglDestroyImage", "none"), ++ _eglFunc("eglCreatePlatformWindowSurface", "none"), ++ _eglFunc("eglCreatePlatformPixmapSurface", "none"), ++ _eglFunc("eglWaitSync", "none"), ++ _eglFunc("eglGetPlatformDisplay", "none"), ++ ++ # EGL_EXT_platform_base ++ _eglFunc("eglCreatePlatformWindowSurfaceEXT", "display"), ++ _eglFunc("eglCreatePlatformPixmapSurfaceEXT", "display"), ++ _eglFunc("eglGetPlatformDisplayEXT", "none"), ++ ++ # TODO: Most of these extensions should be provided by the vendor ++ # libraries, not by libEGL. They're here now to make testing everything ++ # else easier. ++ ++ # EGL_EXT_swap_buffers_with_damage ++ _eglFunc("eglSwapBuffersWithDamageEXT", "display"), ++ ++ # KHR_EXT_swap_buffers_with_damage ++ _eglFunc("eglSwapBuffersWithDamageKHR", "display"), ++ ++ # EGL_KHR_cl_event2 ++ _eglFunc("eglCreateSync64KHR", "display"), ++ ++ # EGL_KHR_fence_sync ++ _eglFunc("eglCreateSyncKHR", "display"), ++ _eglFunc("eglDestroySyncKHR", "display"), ++ _eglFunc("eglClientWaitSyncKHR", "display"), ++ _eglFunc("eglGetSyncAttribKHR", "display"), ++ ++ # EGL_KHR_image ++ _eglFunc("eglCreateImageKHR", "display"), ++ _eglFunc("eglDestroyImageKHR", "display"), ++ ++ # EGL_KHR_image_base ++ # eglCreateImageKHR already defined in EGL_KHR_image ++ # eglDestroyImageKHR already defined in EGL_KHR_image ++ ++ # EGL_KHR_reusable_sync ++ _eglFunc("eglSignalSyncKHR", "display"), ++ # eglCreateSyncKHR already defined in EGL_KHR_fence_sync ++ # eglDestroySyncKHR already defined in EGL_KHR_fence_sync ++ # eglClientWaitSyncKHR already defined in EGL_KHR_fence_sync ++ # eglGetSyncAttribKHR already defined in EGL_KHR_fence_sync ++ ++ # EGL_KHR_wait_sync ++ _eglFunc("eglWaitSyncKHR", "display"), ++ ++ # EGL_MESA_drm_image ++ _eglFunc("eglCreateDRMImageMESA", "display"), ++ _eglFunc("eglExportDRMImageMESA", "display"), ++ ++ # EGL_MESA_image_dma_buf_export ++ _eglFunc("eglExportDMABUFImageQueryMESA", "display"), ++ _eglFunc("eglExportDMABUFImageMESA", "display"), ++ ++ # EGL_NOK_swap_region ++ _eglFunc("eglSwapBuffersRegionNOK", "display"), ++ ++ # EGL_NV_post_sub_buffer ++ _eglFunc("eglPostSubBufferNV", "display"), ++ ++ # EGL_WL_bind_wayland_display ++ _eglFunc("eglCreateWaylandBufferFromImageWL", "display"), ++ _eglFunc("eglUnbindWaylandDisplayWL", "display"), ++ _eglFunc("eglQueryWaylandBufferWL", "display"), ++ _eglFunc("eglBindWaylandDisplayWL", "display"), ++ ++ # EGL_CHROMIUM_get_sync_values ++ _eglFunc("eglGetSyncValuesCHROMIUM", "display"), ++ ++ # EGL_ANDROID_native_fence_sync ++ _eglFunc("eglDupNativeFenceFDANDROID", "display"), ++) ++ +Index: mesa-17.0.1/src/egl/generate/egl_other.xml +=================================================================== +--- /dev/null ++++ mesa-17.0.1/src/egl/generate/egl_other.xml +@@ -0,0 +1,47 @@ ++ ++ ++ ++ This file contains any EGL extension functions that are missing from ++ the normal egl.xml list. ++ ++ ++ ++ ++ struct wl_buffer * eglCreateWaylandBufferFromImageWL ++ EGLDisplay dpy ++ EGLImage image ++ ++ ++ ++ EGLBoolean eglUnbindWaylandDisplayWL ++ EGLDisplay dpy ++ struct wl_display * display ++ ++ ++ ++ EGLBoolean eglQueryWaylandBufferWL ++ EGLDisplay dpy ++ struct wl_resource * buffer ++ EGLint attribute ++ EGLint * value ++ ++ ++ ++ EGLBoolean eglBindWaylandDisplayWL ++ EGLDisplay dpy ++ struct wl_display * display ++ ++ ++ ++ ++ EGLBoolean eglGetSyncValuesCHROMIUM ++ EGLDisplay display ++ EGLSurface surface ++ EGLuint64KHR * ust ++ EGLuint64KHR * msc ++ EGLuint64KHR * sbc ++ ++ ++ ++ ++ +Index: mesa-17.0.1/src/egl/generate/genCommon.py +=================================================================== +--- /dev/null ++++ mesa-17.0.1/src/egl/generate/genCommon.py +@@ -0,0 +1,223 @@ ++#!/usr/bin/env python ++ ++# (C) Copyright 2015, NVIDIA CORPORATION. ++# All Rights Reserved. ++# ++# Permission is hereby granted, free of charge, to any person obtaining a ++# copy of this software and associated documentation files (the "Software"), ++# to deal in the Software without restriction, including without limitation ++# on the rights to use, copy, modify, merge, publish, distribute, sub ++# license, and/or sell copies of the Software, and to permit persons to whom ++# the Software is furnished to do so, subject to the following conditions: ++# ++# The above copyright notice and this permission notice (including the next ++# paragraph) shall be included in all copies or substantial portions of the ++# Software. ++# ++# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR ++# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL ++# IBM AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER ++# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING ++# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS ++# IN THE SOFTWARE. ++# ++# Authors: ++# Kyle Brenneman ++ ++import collections ++import re ++import sys ++import xml.etree.cElementTree as etree ++ ++MAPI_TABLE_NUM_DYNAMIC = 4096 ++ ++_LIBRARY_FEATURE_NAMES = { ++ # libGL and libGLdiapatch both include every function. ++ "gl" : None, ++ "gldispatch" : None, ++ "opengl" : frozenset(( "GL_VERSION_1_0", "GL_VERSION_1_1", ++ "GL_VERSION_1_2", "GL_VERSION_1_3", "GL_VERSION_1_4", "GL_VERSION_1_5", ++ "GL_VERSION_2_0", "GL_VERSION_2_1", "GL_VERSION_3_0", "GL_VERSION_3_1", ++ "GL_VERSION_3_2", "GL_VERSION_3_3", "GL_VERSION_4_0", "GL_VERSION_4_1", ++ "GL_VERSION_4_2", "GL_VERSION_4_3", "GL_VERSION_4_4", "GL_VERSION_4_5", ++ )), ++ "glesv1" : frozenset(("GL_VERSION_ES_CM_1_0", "GL_OES_point_size_array")), ++ "glesv2" : frozenset(("GL_ES_VERSION_2_0", "GL_ES_VERSION_3_0", ++ "GL_ES_VERSION_3_1" "GL_ES_VERSION_3_2", ++ )), ++} ++ ++def getFunctions(xmlFiles): ++ """ ++ Reads an XML file and returns all of the functions defined in it. ++ ++ xmlFile should be the path to Khronos's gl.xml file. The return value is a ++ sequence of FunctionDesc objects, ordered by slot number. ++ """ ++ roots = [ etree.parse(xmlFile).getroot() for xmlFile in xmlFiles ] ++ return getFunctionsFromRoots(roots) ++ ++def getFunctionsFromRoots(roots): ++ functions = {} ++ for root in roots: ++ for func in _getFunctionList(root): ++ functions[func.name] = func ++ functions = functions.values() ++ ++ # Sort the function list by name. ++ functions = sorted(functions, key=lambda f: f.name) ++ ++ # Assign a slot number to each function. This isn't strictly necessary, ++ # since you can just look at the index in the list, but it makes it easier ++ # to include the slot when formatting output. ++ for i in range(len(functions)): ++ functions[i] = functions[i]._replace(slot=i) ++ ++ return functions ++ ++def getExportNamesFromRoots(target, roots): ++ """ ++ Goes through the tags from gl.xml and returns a set of OpenGL ++ functions that a library should export. ++ ++ target should be one of "gl", "gldispatch", "opengl", "glesv1", or ++ "glesv2". ++ """ ++ featureNames = _LIBRARY_FEATURE_NAMES[target] ++ if featureNames is None: ++ return set(func.name for func in getFunctionsFromRoots(roots)) ++ ++ names = set() ++ for root in roots: ++ features = [] ++ for featElem in root.findall("feature"): ++ if featElem.get("name") in featureNames: ++ features.append(featElem) ++ for featElem in root.findall("extensions/extension"): ++ if featElem.get("name") in featureNames: ++ features.append(featElem) ++ for featElem in features: ++ for commandElem in featElem.findall("require/command"): ++ names.add(commandElem.get("name")) ++ return names ++ ++class FunctionArg(collections.namedtuple("FunctionArg", "type name")): ++ @property ++ def dec(self): ++ """ ++ Returns a "TYPE NAME" string, suitable for a function prototype. ++ """ ++ rv = str(self.type) ++ if not rv.endswith("*"): ++ rv += " " ++ rv += self.name ++ return rv ++ ++class FunctionDesc(collections.namedtuple("FunctionDesc", "name rt args slot")): ++ def hasReturn(self): ++ """ ++ Returns true if the function returns a value. ++ """ ++ return (self.rt != "void") ++ ++ @property ++ def decArgs(self): ++ """ ++ Returns a string with the types and names of the arguments, as you ++ would use in a function declaration. ++ """ ++ if not self.args: ++ return "void" ++ else: ++ return ", ".join(arg.dec for arg in self.args) ++ ++ @property ++ def callArgs(self): ++ """ ++ Returns a string with the names of the arguments, as you would use in a ++ function call. ++ """ ++ return ", ".join(arg.name for arg in self.args) ++ ++ @property ++ def basename(self): ++ assert self.name.startswith("gl") ++ return self.name[2:] ++ ++def _getFunctionList(root): ++ for elem in root.findall("commands/command"): ++ yield _parseCommandElem(elem) ++ ++def _parseCommandElem(elem): ++ protoElem = elem.find("proto") ++ (rt, name) = _parseProtoElem(protoElem) ++ ++ args = [] ++ for ch in elem.findall("param"): ++ # tags have the same format as a tag. ++ args.append(FunctionArg(*_parseProtoElem(ch))) ++ func = FunctionDesc(name, rt, tuple(args), slot=None) ++ ++ return func ++ ++def _parseProtoElem(elem): ++ # If I just remove the tags and string the text together, I'll get valid C code. ++ text = _flattenText(elem) ++ text = text.strip() ++ m = re.match(r"^(.+)\b(\w+)(?:\s*\[\s*(\d*)\s*\])?$", text, re.S) ++ if m: ++ typename = _fixupTypeName(m.group(1)) ++ name = m.group(2) ++ if m.group(3): ++ # HACK: glPathGlyphIndexRangeNV defines an argument like this: ++ # GLuint baseAndCount[2] ++ # Convert it to a pointer and hope for the best. ++ typename += "*" ++ return (typename, name) ++ else: ++ raise ValueError("Can't parse element %r -> %r" % (elem, text)) ++ ++def _flattenText(elem): ++ """ ++ Returns the text in an element and all child elements, with the tags ++ removed. ++ """ ++ text = "" ++ if elem.text is not None: ++ text = elem.text ++ for ch in elem: ++ text += _flattenText(ch) ++ if ch.tail is not None: ++ text += ch.tail ++ return text ++ ++def _fixupTypeName(typeName): ++ """ ++ Converts a typename into a more consistent format. ++ """ ++ ++ rv = typeName.strip() ++ ++ # Replace "GLvoid" with just plain "void". ++ rv = re.sub(r"\bGLvoid\b", "void", rv) ++ ++ # Remove the vendor suffixes from types that have a suffix-less version. ++ rv = re.sub(r"\b(GLhalf|GLintptr|GLsizeiptr|GLint64|GLuint64)(?:ARB|EXT|NV|ATI)\b", r"\1", rv) ++ ++ rv = re.sub(r"\bGLvoid\b", "void", rv) ++ ++ # Clear out any leading and trailing whitespace. ++ rv = rv.strip() ++ ++ # Remove any whitespace before a '*' ++ rv = re.sub(r"\s+\*", r"*", rv) ++ ++ # Change "foo*" to "foo *" ++ rv = re.sub(r"([^\*])\*", r"\1 *", rv) ++ ++ # Condense all whitespace into a single space. ++ rv = re.sub(r"\s+", " ", rv) ++ ++ return rv ++ +Index: mesa-17.0.1/src/egl/generate/gen_egl_dispatch.py +=================================================================== +--- /dev/null ++++ mesa-17.0.1/src/egl/generate/gen_egl_dispatch.py +@@ -0,0 +1,250 @@ ++#!/usr/bin/env python ++ ++# (C) Copyright 2016, NVIDIA CORPORATION. ++# All Rights Reserved. ++# ++# Permission is hereby granted, free of charge, to any person obtaining a ++# copy of this software and associated documentation files (the "Software"), ++# to deal in the Software without restriction, including without limitation ++# on the rights to use, copy, modify, merge, publish, distribute, sub ++# license, and/or sell copies of the Software, and to permit persons to whom ++# the Software is furnished to do so, subject to the following conditions: ++# ++# The above copyright notice and this permission notice (including the next ++# paragraph) shall be included in all copies or substantial portions of the ++# Software. ++# ++# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR ++# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL ++# IBM AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER ++# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING ++# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS ++# IN THE SOFTWARE. ++# ++# Authors: ++# Kyle Brenneman ++ ++""" ++Generates dispatch functions for EGL. ++ ++The list of functions and arguments is read from the Khronos's XML files, with ++additional information defined in the module eglFunctionList. ++""" ++ ++import argparse ++import collections ++import imp ++import sys ++import textwrap ++ ++import genCommon ++ ++def main(): ++ parser = argparse.ArgumentParser() ++ parser.add_argument("target", choices=("header", "source"), ++ help="Whether to build the source or header file.") ++ parser.add_argument("func_list_file", help="The function list .py file.") ++ parser.add_argument("xml_files", nargs="+", help="The XML files with the EGL function lists.") ++ ++ args = parser.parse_args() ++ ++ # The function list is a Python module, but it's specified on the command ++ # line. ++ eglFunctionList = imp.load_source("eglFunctionList", args.func_list_file) ++ ++ xmlFunctions = genCommon.getFunctions(args.xml_files) ++ xmlByName = dict((f.name, f) for f in xmlFunctions) ++ functions = [] ++ for (name, eglFunc) in eglFunctionList.EGL_FUNCTIONS: ++ func = xmlByName[name] ++ eglFunc = fixupEglFunc(func, eglFunc) ++ functions.append((func, eglFunc)) ++ ++ # Sort the function list by name. ++ functions = sorted(functions, key=lambda f: f[0].name) ++ ++ if args.target == "header": ++ text = generateHeader(functions) ++ elif args.target == "source": ++ text = generateSource(functions) ++ sys.stdout.write(text) ++ ++def fixupEglFunc(func, eglFunc): ++ result = dict(eglFunc) ++ if result.get("prefix") is None: ++ result["prefix"] = "" ++ ++ if result.get("extension") is not None: ++ text = "defined(" + result["extension"] + ")" ++ result["extension"] = text ++ ++ if result["method"] in ("none", "custom"): ++ return result ++ ++ if result["method"] not in ("display", "device", "current"): ++ raise ValueError("Invalid dispatch method %r for function %r" % (result["method"], func.name)) ++ ++ if func.hasReturn(): ++ if result.get("retval") is None: ++ result["retval"] = getDefaultReturnValue(func.rt) ++ ++ return result ++ ++def generateHeader(functions): ++ text = textwrap.dedent(r""" ++ #ifndef G_EGLDISPATCH_STUBS_H ++ #define G_EGLDISPATCH_STUBS_H ++ ++ #ifdef __cplusplus ++ extern "C" { ++ #endif ++ ++ #include ++ #include ++ #include "glvnd/libeglabi.h" ++ ++ """.lstrip("\n")) ++ ++ text += "enum {\n" ++ for (func, eglFunc) in functions: ++ text += generateGuardBegin(func, eglFunc) ++ text += " __EGL_DISPATCH_" + func.name + ",\n" ++ text += generateGuardEnd(func, eglFunc) ++ text += " __EGL_DISPATCH_COUNT\n" ++ text += "};\n" ++ ++ for (func, eglFunc) in functions: ++ if eglFunc["inheader"]: ++ text += generateGuardBegin(func, eglFunc) ++ text += "{f.rt} EGLAPIENTRY {ex[prefix]}{f.name}({f.decArgs});\n".format(f=func, ex=eglFunc) ++ text += generateGuardEnd(func, eglFunc) ++ ++ text += textwrap.dedent(r""" ++ #ifdef __cplusplus ++ } ++ #endif ++ #endif // G_EGLDISPATCH_STUBS_H ++ """) ++ return text ++ ++def generateSource(functions): ++ # First, sort the function list by name. ++ text = "" ++ text += '#include "egldispatchstubs.h"\n' ++ text += '#include "g_egldispatchstubs.h"\n' ++ text += "\n" ++ ++ for (func, eglFunc) in functions: ++ if eglFunc["method"] not in ("custom", "none"): ++ text += generateGuardBegin(func, eglFunc) ++ text += generateDispatchFunc(func, eglFunc) ++ text += generateGuardEnd(func, eglFunc) ++ ++ text += "\n" ++ text += "const char * const __EGL_DISPATCH_FUNC_NAMES[__EGL_DISPATCH_COUNT + 1] = {\n" ++ for (func, eglFunc) in functions: ++ text += generateGuardBegin(func, eglFunc) ++ text += ' "' + func.name + '",\n' ++ text += generateGuardEnd(func, eglFunc) ++ text += " NULL\n" ++ text += "};\n" ++ ++ text += "const __eglMustCastToProperFunctionPointerType __EGL_DISPATCH_FUNCS[__EGL_DISPATCH_COUNT + 1] = {\n" ++ for (func, eglFunc) in functions: ++ text += generateGuardBegin(func, eglFunc) ++ if eglFunc["method"] != "none": ++ text += " (__eglMustCastToProperFunctionPointerType) " + eglFunc.get("prefix", "") + func.name + ",\n" ++ else: ++ text += " NULL, // " + func.name + "\n" ++ text += generateGuardEnd(func, eglFunc) ++ text += " NULL\n" ++ text += "};\n" ++ ++ return text ++ ++def generateGuardBegin(func, eglFunc): ++ ext = eglFunc.get("extension") ++ if ext is not None: ++ return "#if " + ext + "\n" ++ else: ++ return "" ++ ++def generateGuardEnd(func, eglFunc): ++ if eglFunc.get("extension") is not None: ++ return "#endif\n" ++ else: ++ return "" ++ ++def generateDispatchFunc(func, eglFunc): ++ text = "" ++ ++ if eglFunc.get("static"): ++ text += "static " ++ elif eglFunc.get("public"): ++ text += "PUBLIC " ++ text += textwrap.dedent( ++ r""" ++ {f.rt} EGLAPIENTRY {ef[prefix]}{f.name}({f.decArgs}) ++ {{ ++ typedef {f.rt} EGLAPIENTRY (* _pfn_{f.name})({f.decArgs}); ++ """).lstrip("\n").format(f=func, ef=eglFunc) ++ ++ if func.hasReturn(): ++ text += " {f.rt} _ret = {ef[retval]};\n".format(f=func, ef=eglFunc) ++ ++ text += " _pfn_{f.name} _ptr_{f.name} = (_pfn_{f.name}) ".format(f=func) ++ if eglFunc["method"] == "current": ++ text += "__eglDispatchFetchByCurrent(__EGL_DISPATCH_{f.name});\n".format(f=func) ++ ++ elif eglFunc["method"] in ("display", "device"): ++ if eglFunc["method"] == "display": ++ lookupFunc = "__eglDispatchFetchByDisplay" ++ lookupType = "EGLDisplay" ++ else: ++ assert eglFunc["method"] == "device" ++ lookupFunc = "__eglDispatchFetchByDevice" ++ lookupType = "EGLDeviceEXT" ++ ++ lookupArg = None ++ for arg in func.args: ++ if arg.type == lookupType: ++ lookupArg = arg.name ++ break ++ if lookupArg is None: ++ raise ValueError("Can't find %s argument for function %s" % (lookupType, func.name,)) ++ ++ text += "{lookupFunc}({lookupArg}, __EGL_DISPATCH_{f.name});\n".format( ++ f=func, lookupFunc=lookupFunc, lookupArg=lookupArg) ++ else: ++ raise ValueError("Unknown dispatch method: %r" % (eglFunc["method"],)) ++ ++ text += " if(_ptr_{f.name} != NULL) {{\n".format(f=func) ++ text += " " ++ if func.hasReturn(): ++ text += "_ret = " ++ text += "_ptr_{f.name}({f.callArgs});\n".format(f=func) ++ text += " }\n" ++ ++ if func.hasReturn(): ++ text += " return _ret;\n" ++ text += "}\n" ++ return text ++ ++def getDefaultReturnValue(typename): ++ if typename.endswith("*"): ++ return "NULL" ++ elif typename == "EGLDisplay": ++ return "EGL_NO_DISPLAY" ++ elif typename == "EGLContext": ++ return "EGL_NO_CONTEXT" ++ elif typename == "EGLSurface": ++ return "EGL_NO_SURFACE" ++ elif typename == "EGLBoolean": ++ return "EGL_FALSE"; ++ ++ return "0" ++ ++if __name__ == "__main__": ++ main() ++ +Index: mesa-17.0.1/src/egl/main/50_mesa.json +=================================================================== +--- /dev/null ++++ mesa-17.0.1/src/egl/main/50_mesa.json +@@ -0,0 +1,6 @@ ++{ ++ "file_format_version" : "1.0.0", ++ "ICD" : { ++ "library_path" : "libEGL_mesa.so.0" ++ } ++} +Index: mesa-17.0.1/src/egl/main/eglapi.c +=================================================================== +--- mesa-17.0.1.orig/src/egl/main/eglapi.c ++++ mesa-17.0.1/src/egl/main/eglapi.c +@@ -651,7 +651,11 @@ eglQueryString(EGLDisplay dpy, EGLint na + _EGLDriver *drv; + + if (dpy == EGL_NO_DISPLAY && name == EGL_EXTENSIONS) { +- RETURN_EGL_SUCCESS(NULL, _eglGlobal.ClientExtensionString); ++ const char *ret = _eglGetClientExtensionString(); ++ if (ret != NULL) ++ RETURN_EGL_SUCCESS(NULL, ret); ++ else ++ RETURN_EGL_ERROR(NULL, EGL_BAD_ALLOC, NULL); + } + + disp = _eglLockDisplay(dpy); +Index: mesa-17.0.1/src/egl/main/egldispatchstubs.c +=================================================================== +--- /dev/null ++++ mesa-17.0.1/src/egl/main/egldispatchstubs.c +@@ -0,0 +1,110 @@ ++#include "egldispatchstubs.h" ++#include "g_egldispatchstubs.h" ++ ++#include ++ ++#include "eglcurrent.h" ++ ++static const __EGLapiExports *exports; ++ ++const int __EGL_DISPATCH_FUNC_COUNT = __EGL_DISPATCH_COUNT; ++int __EGL_DISPATCH_FUNC_INDICES[__EGL_DISPATCH_COUNT + 1]; ++ ++static int FindProcIndex(const char *name) ++{ ++ unsigned first = 0; ++ unsigned last = __EGL_DISPATCH_COUNT - 1; ++ ++ while (first <= last) { ++ unsigned middle = (first + last) / 2; ++ int comp = strcmp(name, ++ __EGL_DISPATCH_FUNC_NAMES[middle]); ++ ++ if (comp > 0) ++ first = middle + 1; ++ else if (comp < 0) ++ last = middle - 1; ++ else ++ return middle; ++ } ++ ++ /* Just point to the dummy entry at the end of the respective table */ ++ return __EGL_DISPATCH_COUNT; ++} ++ ++void __eglInitDispatchStubs(const __EGLapiExports *exportsTable) ++{ ++ int i; ++ exports = exportsTable; ++ for (i=0; i<__EGL_DISPATCH_FUNC_COUNT; i++) { ++ __EGL_DISPATCH_FUNC_INDICES[i] = -1; ++ } ++} ++ ++void __eglSetDispatchIndex(const char *name, int dispatchIndex) ++{ ++ int index = FindProcIndex(name); ++ __EGL_DISPATCH_FUNC_INDICES[index] = dispatchIndex; ++} ++ ++void *__eglDispatchFindDispatchFunction(const char *name) ++{ ++ int index = FindProcIndex(name); ++ return (void *) __EGL_DISPATCH_FUNCS[index]; ++} ++ ++static __eglMustCastToProperFunctionPointerType FetchVendorFunc(__EGLvendorInfo *vendor, ++ int index, EGLint errorCode) ++{ ++ __eglMustCastToProperFunctionPointerType func = NULL; ++ ++ if (vendor != NULL) { ++ func = exports->fetchDispatchEntry(vendor, __EGL_DISPATCH_FUNC_INDICES[index]); ++ } ++ if (func == NULL) { ++ if (errorCode != EGL_SUCCESS) { ++ _eglError(errorCode, __EGL_DISPATCH_FUNC_NAMES[index]); ++ } ++ return NULL; ++ } ++ ++ if (!exports->setLastVendor(vendor)) { ++ // Don't bother trying to set an error code in libglvnd. If ++ // setLastVendor failed, then setEGLError would also fail. ++ _eglError(errorCode, __EGL_DISPATCH_FUNC_NAMES[index]); ++ return NULL; ++ } ++ ++ return func; ++} ++ ++__eglMustCastToProperFunctionPointerType __eglDispatchFetchByCurrent(int index) ++{ ++ __EGLvendorInfo *vendor; ++ ++ // Note: This is only used for the eglWait* functions. For those, if ++ // there's no current context, then they're supposed to do nothing but ++ // return success. ++ exports->threadInit(); ++ vendor = exports->getCurrentVendor(); ++ return FetchVendorFunc(vendor, index, EGL_SUCCESS); ++} ++ ++__eglMustCastToProperFunctionPointerType __eglDispatchFetchByDisplay(EGLDisplay dpy, int index) ++{ ++ __EGLvendorInfo *vendor; ++ ++ exports->threadInit(); ++ vendor = exports->getVendorFromDisplay(dpy); ++ return FetchVendorFunc(vendor, index, EGL_BAD_DISPLAY); ++} ++ ++__eglMustCastToProperFunctionPointerType __eglDispatchFetchByDevice(EGLDeviceEXT dev, int index) ++{ ++ __EGLvendorInfo *vendor; ++ ++ exports->threadInit(); ++ vendor = exports->getVendorFromDevice(dev); ++ return FetchVendorFunc(vendor, index, EGL_BAD_DEVICE_EXT); ++} ++ +Index: mesa-17.0.1/src/egl/main/egldispatchstubs.h +=================================================================== +--- /dev/null ++++ mesa-17.0.1/src/egl/main/egldispatchstubs.h +@@ -0,0 +1,26 @@ ++#ifndef EGLDISPATCHSTUBS_H ++#define EGLDISPATCHSTUBS_H ++ ++#include "glvnd/libeglabi.h" ++ ++// These variables are all generated along with the dispatch stubs. ++extern const int __EGL_DISPATCH_FUNC_COUNT; ++extern const char * const __EGL_DISPATCH_FUNC_NAMES[]; ++extern int __EGL_DISPATCH_FUNC_INDICES[]; ++extern const __eglMustCastToProperFunctionPointerType __EGL_DISPATCH_FUNCS[]; ++ ++void __eglInitDispatchStubs(const __EGLapiExports *exportsTable); ++void __eglSetDispatchIndex(const char *name, int index); ++ ++/** ++ * Returns the dispatch function for the given name, or \c NULL if the function ++ * isn't supported. ++ */ ++void *__eglDispatchFindDispatchFunction(const char *name); ++ ++// Helper functions used by the generated stubs. ++__eglMustCastToProperFunctionPointerType __eglDispatchFetchByDisplay(EGLDisplay dpy, int index); ++__eglMustCastToProperFunctionPointerType __eglDispatchFetchByDevice(EGLDeviceEXT dpy, int index); ++__eglMustCastToProperFunctionPointerType __eglDispatchFetchByCurrent(int index); ++ ++#endif // EGLDISPATCHSTUBS_H +Index: mesa-17.0.1/src/egl/main/eglglobals.c +=================================================================== +--- mesa-17.0.1.orig/src/egl/main/eglglobals.c ++++ mesa-17.0.1/src/egl/main/eglglobals.c +@@ -29,6 +29,8 @@ + + + #include ++#include ++#include + #include + #include "c11/threads.h" + +@@ -50,9 +52,13 @@ struct _egl_global _eglGlobal = + _eglFiniDisplay + }, + +- /* ClientExtensionString */ ++ /* ClientOnlyExtensionString */ + "EGL_EXT_client_extensions" + " EGL_EXT_platform_base" ++ " EGL_KHR_client_get_all_proc_addresses" ++ " EGL_KHR_debug", ++ ++ /* PlatformExtensionString */ + #ifdef HAVE_WAYLAND_PLATFORM + " EGL_EXT_platform_wayland" + #endif +@@ -65,8 +71,9 @@ struct _egl_global _eglGlobal = + #ifdef HAVE_SURFACELESS_PLATFORM + " EGL_MESA_platform_surfaceless" + #endif +- " EGL_KHR_client_get_all_proc_addresses" +- " EGL_KHR_debug", ++ "", ++ ++ NULL, /* ClientExtensionsString */ + + NULL, /* debugCallback */ + _EGL_DEBUG_BIT_CRITICAL | _EGL_DEBUG_BIT_ERROR, /* debugTypesEnabled */ +@@ -101,3 +108,37 @@ _eglAddAtExitCall(void (*func)(void)) + mtx_unlock(_eglGlobal.Mutex); + } + } ++ ++const char * ++_eglGetClientExtensionString(void) ++{ ++ const char *ret; ++ ++ mtx_lock(_eglGlobal.Mutex); ++ ++ if (_eglGlobal.ClientExtensionString == NULL) { ++ size_t clientLen = strlen(_eglGlobal.ClientOnlyExtensionString); ++ size_t platformLen = strlen(_eglGlobal.PlatformExtensionString); ++ ++ _eglGlobal.ClientExtensionString = (char *) malloc(clientLen + platformLen + 1); ++ if (_eglGlobal.ClientExtensionString != NULL) { ++ char *ptr = _eglGlobal.ClientExtensionString; ++ ++ memcpy(ptr, _eglGlobal.ClientOnlyExtensionString, clientLen); ++ ptr += clientLen; ++ ++ if (platformLen > 0) { ++ // Note that if PlatformExtensionString is not empty, then it will ++ // already have a leading space. ++ assert(_eglGlobal.PlatformExtensionString[0] == ' '); ++ memcpy(ptr, _eglGlobal.PlatformExtensionString, platformLen); ++ ptr += platformLen; ++ } ++ *ptr = '\0'; ++ } ++ } ++ ret = _eglGlobal.ClientExtensionString; ++ ++ mtx_unlock(_eglGlobal.Mutex); ++ return ret; ++} +Index: mesa-17.0.1/src/egl/main/eglglobals.h +=================================================================== +--- mesa-17.0.1.orig/src/egl/main/eglglobals.h ++++ mesa-17.0.1/src/egl/main/eglglobals.h +@@ -57,7 +57,15 @@ struct _egl_global + EGLint NumAtExitCalls; + void (*AtExitCalls[10])(void); + +- const char *ClientExtensionString; ++ /* ++ * Under libglvnd, the client extension string has to be split into two ++ * strings, one for platform extensions, and one for everything else. So, ++ * define separate strings for them. _eglGetClientExtensionString will ++ * concatenate them together for a non-libglvnd build. ++ */ ++ const char *ClientOnlyExtensionString; ++ const char *PlatformExtensionString; ++ char *ClientExtensionString; + + EGLDEBUGPROCKHR debugCallback; + unsigned int debugTypesEnabled; +@@ -76,4 +84,7 @@ static inline unsigned int DebugBitFromT + return (1 << (type - EGL_DEBUG_MSG_CRITICAL_KHR)); + } + ++extern const char * ++_eglGetClientExtensionString(void); ++ + #endif /* EGLGLOBALS_INCLUDED */ +Index: mesa-17.0.1/src/egl/main/eglglvnd.c +=================================================================== +--- /dev/null ++++ mesa-17.0.1/src/egl/main/eglglvnd.c +@@ -0,0 +1,82 @@ ++#include ++#include ++ ++#include ++ ++#include "eglcurrent.h" ++#include "egldispatchstubs.h" ++#include "eglglobals.h" ++ ++static const __EGLapiExports *__eglGLVNDApiExports = NULL; ++ ++static const char * EGLAPIENTRY ++__eglGLVNDQueryString(EGLDisplay dpy, EGLenum name) ++{ ++ // For client extensions, return the list of non-platform extensions. The ++ // platform extensions are returned by __eglGLVNDGetVendorString. ++ if (dpy == EGL_NO_DISPLAY && name == EGL_EXTENSIONS) ++ return _eglGlobal.ClientOnlyExtensionString; ++ ++ // For everything else, forward to the normal eglQueryString function. ++ return eglQueryString(dpy, name); ++} ++ ++static const char * ++__eglGLVNDGetVendorString(int name) ++{ ++ if (name == __EGL_VENDOR_STRING_PLATFORM_EXTENSIONS) { ++ const char *str = _eglGlobal.PlatformExtensionString; ++ // The platform extension string may have a leading space. If it does, ++ // then skip over it. ++ while (*str == ' ') { ++ str++; ++ } ++ return str; ++ } ++ ++ return NULL; ++} ++ ++static EGLDisplay ++__eglGLVNDGetPlatformDisplay(EGLenum platform, void *native_display, ++ const EGLAttrib *attrib_list) ++{ ++ if (platform == EGL_NONE) { ++ assert(native_display == (void *) EGL_DEFAULT_DISPLAY); ++ assert(attrib_list == NULL); ++ return eglGetDisplay((EGLNativeDisplayType) native_display); ++ } else { ++ return eglGetPlatformDisplay(platform, native_display, attrib_list); ++ } ++} ++ ++static void * ++__eglGLVNDGetProcAddress(const char *procName) ++{ ++ if (strcmp(procName, "eglQueryString") == 0) ++ return (void *) __eglGLVNDQueryString; ++ ++ return (void *) eglGetProcAddress(procName); ++} ++ ++EGLAPI EGLBoolean ++__egl_Main(uint32_t version, const __EGLapiExports *exports, ++ __EGLvendorInfo *vendor, __EGLapiImports *imports) ++{ ++ if (EGL_VENDOR_ABI_GET_MAJOR_VERSION(version) != ++ EGL_VENDOR_ABI_MAJOR_VERSION) ++ return EGL_FALSE; ++ ++ __eglGLVNDApiExports = exports; ++ __eglInitDispatchStubs(exports); ++ ++ imports->getPlatformDisplay = __eglGLVNDGetPlatformDisplay; ++ imports->getSupportsAPI = _eglIsApiValid; ++ imports->getVendorString = __eglGLVNDGetVendorString; ++ imports->getProcAddress = __eglGLVNDGetProcAddress; ++ imports->getDispatchAddress = __eglDispatchFindDispatchFunction; ++ imports->setDispatchIndex = __eglSetDispatchIndex; ++ ++ return EGL_TRUE; ++} ++ diff --git a/archlinux_0001-Fix-linkage-against-shared-glapi.patch b/archlinux_0001-Fix-linkage-against-shared-glapi.patch new file mode 100644 index 0000000..a3b3815 --- /dev/null +++ b/archlinux_0001-Fix-linkage-against-shared-glapi.patch @@ -0,0 +1,26 @@ +From 1b5a187c3c31513ae39cd2a917a3234c2c5f87fc Mon Sep 17 00:00:00 2001 +From: Adam Jackson +Date: Wed, 12 Oct 2016 13:41:33 -0400 +Subject: [PATCH] Fix linkage against shared glapi + +Signed-off-by: Adam Jackson +--- + 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 + diff --git a/archlinux_0002-fixup-EGL-Implement-the-libglvnd-interface-for-EGL-v.patch b/archlinux_0002-fixup-EGL-Implement-the-libglvnd-interface-for-EGL-v.patch new file mode 100644 index 0000000..fc8ac6d --- /dev/null +++ b/archlinux_0002-fixup-EGL-Implement-the-libglvnd-interface-for-EGL-v.patch @@ -0,0 +1,33 @@ +From 2d4094c2caad6cef2f5544b3966fcc37ceb32036 Mon Sep 17 00:00:00 2001 +From: Kyle Brenneman +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 + diff --git a/archlinux_glapi-Link-with-glapi-when-built-shared.patch b/archlinux_glapi-Link-with-glapi-when-built-shared.patch new file mode 100644 index 0000000..289126a --- /dev/null +++ b/archlinux_glapi-Link-with-glapi-when-built-shared.patch @@ -0,0 +1,82 @@ +From 16875ea5b9170f2213fd486d763f27a9d6dfc1b5 Mon Sep 17 00:00:00 2001 +From: Nicolas Chauvet +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 + +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 +--- + 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 + diff --git a/archlinux_glvnd-fix-gl-dot-pc.patch b/archlinux_glvnd-fix-gl-dot-pc.patch new file mode 100644 index 0000000..b1e5da0 --- /dev/null +++ b/archlinux_glvnd-fix-gl-dot-pc.patch @@ -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@ diff --git a/fedora_0001-glxglvnddispatch-Add-missing-dispatch-for-GetDriverC.patch b/fedora_0001-glxglvnddispatch-Add-missing-dispatch-for-GetDriverC.patch new file mode 100644 index 0000000..98f6c82 --- /dev/null +++ b/fedora_0001-glxglvnddispatch-Add-missing-dispatch-for-GetDriverC.patch @@ -0,0 +1,88 @@ +From efa4f2ebc1e788c3f1cfcf3842058cf838171653 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +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 +Signed-off-by: Hans de Goede +--- + 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 + ++#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 + From 7eea5816025c2d7b828d53d44b3d38a013d23824840d19aca03c5690bd560421 Mon Sep 17 00:00:00 2001 From: Stefan Dirsch Date: Mon, 27 Mar 2017 14:35:16 +0000 Subject: [PATCH 4/9] - disable libglvnd for openSUSE Leap 42.x and sle12 OBS-URL: https://build.opensuse.org/package/show/X11:XOrg/Mesa?expand=0&rev=585 --- Mesa.changes | 5 +++++ Mesa.spec | 3 +++ 2 files changed, 8 insertions(+) diff --git a/Mesa.changes b/Mesa.changes index ae6b94b..5395cb1 100644 --- a/Mesa.changes +++ b/Mesa.changes @@ -1,3 +1,8 @@ +------------------------------------------------------------------- +Mon Mar 27 13:56:35 UTC 2017 - sndirsch@suse.com + +- disable libglvnd for openSUSE Leap 42.x and sle12 + ------------------------------------------------------------------- Fri Mar 24 14:45:49 UTC 2017 - sndirsch@suse.com diff --git a/Mesa.spec b/Mesa.spec index dedbaea..778c791 100644 --- a/Mesa.spec +++ b/Mesa.spec @@ -20,7 +20,10 @@ # They may fix KDE on Nouveau. They may also deadlock your userland. %define use_broken_nouveau_locking_patches 0 +%define libglvnd 0 +%if 0%{?suse_version} >= 1330 %define libglvnd 1 +%endif %define glamor 1 %define _name_archive mesa %define _version 17.0.2 From aa012f3f2c530922d26b5d7c3d93bd87bf37226229ab7ff31f2c4a415e875598 Mon Sep 17 00:00:00 2001 From: Stefan Dirsch Date: Wed, 29 Mar 2017 09:44:09 +0000 Subject: [PATCH 5/9] - specfile: only require libglvnd0/libglvnd-devel, if libglvnd build is enabled - baselibs.conf: added requires to libglvnd0/libglvnd-devel where needed OBS-URL: https://build.opensuse.org/package/show/X11:XOrg/Mesa?expand=0&rev=586 --- Mesa.changes | 8 ++++++++ Mesa.spec | 18 ++++++++++++++++++ baselibs.conf | 13 +++++++++++-- 3 files changed, 37 insertions(+), 2 deletions(-) diff --git a/Mesa.changes b/Mesa.changes index 5395cb1..7cb3890 100644 --- a/Mesa.changes +++ b/Mesa.changes @@ -1,3 +1,11 @@ +------------------------------------------------------------------- +Wed Mar 29 09:23:27 UTC 2017 - sndirsch@suse.com + +- specfile: only require libglvnd0/libglvnd-devel, if libglvnd build + is enabled +- baselibs.conf: added requires to libglvnd0/libglvnd-devel where + needed + ------------------------------------------------------------------- Mon Mar 27 13:56:35 UTC 2017 - sndirsch@suse.com diff --git a/Mesa.spec b/Mesa.spec index 778c791..35a4020 100644 --- a/Mesa.spec +++ b/Mesa.spec @@ -20,6 +20,8 @@ # They may fix KDE on Nouveau. They may also deadlock your userland. %define use_broken_nouveau_locking_patches 0 +# Remove requires to libglvnd0/libglvnd-devel from baselibs.conf when +# disabling libglvnd build %define libglvnd 0 %if 0%{?suse_version} >= 1330 %define libglvnd 1 @@ -229,7 +231,9 @@ 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 +%if 0%{?libglvnd} Requires: libglvnd0 >= 0.1.0 +%endif %description -n Mesa-libEGL1 This package contains the EGL native platform graphics interface @@ -246,7 +250,9 @@ support. Summary: Development files for the EGL API Group: Development/Libraries/C and C++ Requires: Mesa-libEGL1 = %{version} +%if 0%{?libglvnd} Requires: libglvnd-devel >= 0.1.0 +%endif # Other requires taken care of by pkgconfig already %description -n Mesa-libEGL-devel @@ -263,7 +269,9 @@ programs against the EGL library. Summary: The GL/GLX runtime of the Mesa 3D graphics library Group: System/Libraries Requires: Mesa = %{version} +%if 0%{?libglvnd} Requires: libglvnd0 >= 0.1.0 +%endif %description -n Mesa-libGL1 Mesa is a software library for 3D computer graphics that provides a @@ -279,7 +287,9 @@ the X Window System. Summary: GL/GLX development files of the OpenGL API Group: Development/Libraries/C and C++ Requires: Mesa-libGL1 = %{version} +%if 0%{?libglvnd} Requires: libglvnd-devel >= 0.1.0 +%endif %description -n Mesa-libGL-devel Mesa is a software library for 3D computer graphics that provides a @@ -292,7 +302,9 @@ programs with Mesa. %package -n Mesa-libGLESv1_CM1 Summary: Free implementation of the OpenGL|ES 1.x Common Profile API Group: System/Libraries +%if 0%{?libglvnd} Requires: libglvnd0 >= 0.1.0 +%endif %description -n Mesa-libGLESv1_CM1 OpenGL|ES is a cross-platform API for full-function 2D and 3D @@ -306,7 +318,9 @@ 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} +%if 0%{?libglvnd} Requires: libglvnd-devel >= 0.1.0 +%endif Requires: pkgconfig(egl) %description -n Mesa-libGLESv1_CM-devel @@ -323,7 +337,9 @@ 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 +%if 0%{?libglvnd} Requires: libglvnd0 >= 0.1.0 +%endif %description -n Mesa-libGLESv2-2 OpenGL|ES is a cross-platform API for full-function 2D and 3D @@ -341,7 +357,9 @@ 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} +%if 0%{?libglvnd} Requires: libglvnd-devel >= 0.1.0 +%endif Requires: pkgconfig(egl) %description -n Mesa-libGLESv2-devel diff --git a/baselibs.conf b/baselibs.conf index ebe1ac0..6e4042a 100644 --- a/baselibs.conf +++ b/baselibs.conf @@ -3,6 +3,7 @@ Mesa provides "XFree86-Mesa- xorg-x11-Mesa-" provides "Mesa-libIndirectGL1- = " obsoletes "Mesa-libIndirectGL1- < " + requires "libglvnd0- >= 0.1.0" Mesa-devel #We need Mesa-!, do not put requires -Mesa-. requires "Mesa- = " @@ -14,28 +15,36 @@ Mesa-devel requires "Mesa-libglapi-devel- = " requires "libOSMesa-devel- = " requires "libgbm-devel- = " - #Activate libwayland-egl-devel once 12.2 is gone - #requires "libwayland-egl-devel- = " + requires "libwayland-egl-devel- = " + requires "libglvnd-devel- >= 0.1.0" obsoletes "XFree86-Mesa-devel- xorg-x11-Mesa-devel-" provides "XFree86-Mesa-devel- xorg-x11-Mesa-devel-" obsoletes "Mesa-libIndirectGL-devel- < " provides "Mesa-libIndirectGL-devel- = " Mesa-libEGL1 + requires "libglvnd0- >= 0.1.0" Mesa-libEGL-devel requires "Mesa-libEGL1- = " + requires "libglvnd-devel- >= 0.1.0" Mesa-libGL1 requires "Mesa-" + requires "libglvnd0- >= 0.1.0" Mesa-libGL-devel requires "Mesa-libGL1- = " + requires "libglvnd-devel- >= 0.1.0" Mesa-libGLESv1_CM1 + requires "libglvnd0- >= 0.1.0" Mesa-libGLESv1_CM-devel requires "Mesa-libEGL-devel- = " requires "Mesa-libGLESv1_CM1- = " + requires "libglvnd-devel- >= 0.1.0" Mesa-libGLESv2-2 + requires "libglvnd0- >= 0.1.0" Mesa-libGLESv2-devel requires "Mesa-libEGL-devel- = " requires "Mesa-libGLESv2-2- = " + requires "libglvnd-devel- >= 0.1.0" Mesa-libGLESv3-devel requires "Mesa-libEGL-devel- = " libOSMesa8 From 7cd393408da7a17cf1532ced6b09a98bc4c09482f4019d89586db8f20ad199c8 Mon Sep 17 00:00:00 2001 From: Stefan Dirsch Date: Wed, 29 Mar 2017 15:20:32 +0000 Subject: [PATCH 6/9] - specfile: Remove requires to libglvnd0/libglvnd-devel from baselibs.conf when libglvnd build has been disabled; ugly ... OBS-URL: https://build.opensuse.org/package/show/X11:XOrg/Mesa?expand=0&rev=587 --- Mesa.changes | 6 ++++++ Mesa.spec | 9 +++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/Mesa.changes b/Mesa.changes index 7cb3890..3354970 100644 --- a/Mesa.changes +++ b/Mesa.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Wed Mar 29 15:18:19 UTC 2017 - sndirsch@suse.com + +- specfile: Remove requires to libglvnd0/libglvnd-devel from + baselibs.conf when libglvnd build has been disabled; ugly ... + ------------------------------------------------------------------- Wed Mar 29 09:23:27 UTC 2017 - sndirsch@suse.com diff --git a/Mesa.spec b/Mesa.spec index 35a4020..17f0267 100644 --- a/Mesa.spec +++ b/Mesa.spec @@ -20,8 +20,6 @@ # They may fix KDE on Nouveau. They may also deadlock your userland. %define use_broken_nouveau_locking_patches 0 -# Remove requires to libglvnd0/libglvnd-devel from baselibs.conf when -# disabling libglvnd build %define libglvnd 0 %if 0%{?suse_version} >= 1330 %define libglvnd 1 @@ -669,6 +667,13 @@ rm -rf docs/README.{VMS,WIN32,OS2} %patch65 -p1 %endif +# Remove requires to libglvnd0/libglvnd-devel from baselibs.conf when +# disabling libglvnd build; ugly ... +%if 0%{?libglvnd} == 0 +grep -v libglvnd $RPM_SOURCE_DIR/baselibs.conf > $RPM_SOURCE_DIR/temp && \ + mv $RPM_SOURCE_DIR/temp $RPM_SOURCE_DIR/baselibs.conf +%endif + %build %if 0%{?suse_version} > 1320 egl_platforms=x11,drm,wayland From 2c7d130c532df507e89665e219f36342754777565b066c1d45f2f4481ed54cf9 Mon Sep 17 00:00:00 2001 From: Stefan Dirsch Date: Sat, 1 Apr 2017 18:06:22 +0000 Subject: [PATCH 7/9] Accepting request 484351 from home:mimi_vx:branches:X11:XOrg - update to 17.0.3 - change Mesa.keyring to new release manager key * fdo#96743 [BYT, HSW, SKL, BXT, KBL] GPU hangs with GfxBench 4.0 CarChase * fdo#99246 [d3dadapter+radeonsi] EVE-Online : hang on wormhole sight * fdo#100061 LODQ instruction generated with invalid dst mask * fdo#100182 Flickering in The Talos Principle on Sky Lake GT4 * radeonsi: add new polaris12 pci id * many fixes for RADV, ANV, i915, radeonsi and freedreno drivers OBS-URL: https://build.opensuse.org/request/show/484351 OBS-URL: https://build.opensuse.org/package/show/X11:XOrg/Mesa?expand=0&rev=588 --- Mesa.changes | 12 ++++ Mesa.keyring | 136 ++++++++++++++++++++++++++--------------- Mesa.spec | 8 +-- mesa-17.0.2.tar.xz | 3 - mesa-17.0.2.tar.xz.sig | Bin 566 -> 0 bytes mesa-17.0.3.tar.xz | 3 + mesa-17.0.3.tar.xz.sig | Bin 0 -> 566 bytes 7 files changed, 106 insertions(+), 56 deletions(-) delete mode 100644 mesa-17.0.2.tar.xz delete mode 100644 mesa-17.0.2.tar.xz.sig create mode 100644 mesa-17.0.3.tar.xz create mode 100644 mesa-17.0.3.tar.xz.sig diff --git a/Mesa.changes b/Mesa.changes index 3354970..cc681ac 100644 --- a/Mesa.changes +++ b/Mesa.changes @@ -1,3 +1,15 @@ +------------------------------------------------------------------- +Sat Apr 1 15:59:08 UTC 2017 - mimi.vx@gmail.com + +- update to 17.0.3 +- change Mesa.keyring to new release manager key + * fdo#96743 [BYT, HSW, SKL, BXT, KBL] GPU hangs with GfxBench 4.0 CarChase + * fdo#99246 [d3dadapter+radeonsi] EVE-Online : hang on wormhole sight + * fdo#100061 LODQ instruction generated with invalid dst mask + * fdo#100182 Flickering in The Talos Principle on Sky Lake GT4 + * radeonsi: add new polaris12 pci id + * many fixes for RADV, ANV, i915, radeonsi and freedreno drivers + ------------------------------------------------------------------- Wed Mar 29 15:18:19 UTC 2017 - sndirsch@suse.com diff --git a/Mesa.keyring b/Mesa.keyring index 2086361..3b26134 100644 --- a/Mesa.keyring +++ b/Mesa.keyring @@ -1,52 +1,90 @@ -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: GnuPG v2 -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 -Omj3BC4KcQ== -=XQbm +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 +=ttHE -----END PGP PUBLIC KEY BLOCK----- diff --git a/Mesa.spec b/Mesa.spec index 17f0267..b62827e 100644 --- a/Mesa.spec +++ b/Mesa.spec @@ -26,7 +26,7 @@ %endif %define glamor 1 %define _name_archive mesa -%define _version 17.0.2 +%define _version 17.0.3 %define with_opencl 0 %define with_vulkan 0 %ifarch %ix86 x86_64 %arm ppc ppc64 ppc64le s390x @@ -53,7 +53,7 @@ %endif Name: Mesa -Version: 17.0.2 +Version: 17.0.3 Release: 0 Summary: System for rendering interactive 3-D graphics License: MIT @@ -391,8 +391,8 @@ applications using the OpenGL|ES 3.x APIs. %package -n libOSMesa8 Summary: Mesa Off-screen rendering extension -Group: System/Libraries # Wrongly named package shipped .so.8 +Group: System/Libraries Obsoletes: libOSMesa9 < %{version}-%{release} Provides: libOSMesa9 = %{version}-%{release} @@ -498,8 +498,8 @@ implementation of Mesa. %package libd3d Summary: Mesa Direct3D9 state tracker -Group: System/Libraries # Manually provide d3d library (bnc#918294) +Group: System/Libraries %ifarch x86_64 s390x ppc64le aarch64 Provides: d3dadapter9.so.1()(64bit) %else diff --git a/mesa-17.0.2.tar.xz b/mesa-17.0.2.tar.xz deleted file mode 100644 index 267b513..0000000 --- a/mesa-17.0.2.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f8f191f909e01e65de38d5bdea5fb057f21649a3aed20948be02348e77a689d4 -size 9451056 diff --git a/mesa-17.0.2.tar.xz.sig b/mesa-17.0.2.tar.xz.sig deleted file mode 100644 index 9231166125729ea5d79a88d43492bee3010ab751d05de9095b83b1de47fb530b..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 566 zcmV-60?GY}0y6{v0SEvc79j+O1GaDue&B6-Ik?vCt~anO>q!j-0$9)D^Z*J85bdrv zuq^9I4Ir%$0H%>MC`f9|@{n^%PHIX&V6j+I0_1sX^v34MYU0w73zzfI?&%M%wx~X( z8SEABq1d9H5Yvd#3++v?Q$^}cG6!P}(WXcj3x9J%@QRc>N7H%E4pox;tO798ofD)W zyw~u$-R!s|RWA;E+6erb2{heHNCaa+nk~lOsccvpPvpIM|V(km~)N8}FvusHQL7H+`lr+t%^u_3X7=rEP<=f+=-h^JqHaH5%4RgSB-2 zj*L0)L?Ak=aSy}#m)PvNBQ~!m-JN8QBO)GJy&sc?T`u-zFLcYTs{%!m8^X(3e5~2K z<*T@Qnt@%rmPXG(RUNRNExV$>L~ax6&uG`nbCb$vtQx!*bqzkrfq1aCOXybNT5)(lG&vi)Qs?l=`|* E{gP-C=Kufz diff --git a/mesa-17.0.3.tar.xz b/mesa-17.0.3.tar.xz new file mode 100644 index 0000000..6137827 --- /dev/null +++ b/mesa-17.0.3.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ca646f5075a002d60ef9123c8a4331cede155c01712ef945a65c59a5e69fe7ed +size 9485792 diff --git a/mesa-17.0.3.tar.xz.sig b/mesa-17.0.3.tar.xz.sig new file mode 100644 index 0000000000000000000000000000000000000000000000000000000000000000..8ffe0716d17ae7754a6866b841e17293184446f43e2bab621dbb6420e78f471b GIT binary patch literal 566 zcmV-60?GY}0y6{v0SEvc79j+bZ3(sH$%I~G2Ve2oVa1lGAT(A50$AV3z5ogd5ZPhH zmZu;zR%Y1`|8YbI&izGSFDfq&ECGs&yOPv-oN=OPS#jX_*5Vg%F%-{G_#K+J zc;eaZ;}(?a<_M)0NSV1hzRl6Rz8*jNBN+$z5?CQ?H&1dB-z;r6QpTpvzL=o%NlWuhOG)7EAT42iz zHGod%7=PU1lF}@jp;Q)W@$*6#(eLVg(GtK=pF~PzI>QW?x^Snj!;qb!o)+0CC}-c5 z)-levRfD9#gYoGvi;T!UJn>qyG<_64*e)5oo_2Zv(M zl&GkB3^<>jYw(WEfu2BdN~p|p_e+q|_m>Pi9Fv62`j1q}P!Gn0e;)I-J Ef7KHpX#fBK literal 0 HcmV?d00001 From a514a471cd092fc15629e7a2d74b4ddffbbc784a36679c729c506578ac9f970d Mon Sep 17 00:00:00 2001 From: Stefan Dirsch Date: Mon, 3 Apr 2017 09:26:48 +0000 Subject: [PATCH 8/9] OBS-URL: https://build.opensuse.org/package/show/X11:XOrg/Mesa?expand=0&rev=589 --- Mesa.spec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Mesa.spec b/Mesa.spec index b62827e..a545049 100644 --- a/Mesa.spec +++ b/Mesa.spec @@ -391,8 +391,8 @@ applications using the OpenGL|ES 3.x APIs. %package -n libOSMesa8 Summary: Mesa Off-screen rendering extension -# Wrongly named package shipped .so.8 Group: System/Libraries +# Wrongly named package shipped .so.8 Obsoletes: libOSMesa9 < %{version}-%{release} Provides: libOSMesa9 = %{version}-%{release} @@ -498,8 +498,8 @@ implementation of Mesa. %package libd3d Summary: Mesa Direct3D9 state tracker -# Manually provide d3d library (bnc#918294) Group: System/Libraries +# Manually provide d3d library (bnc#918294) %ifarch x86_64 s390x ppc64le aarch64 Provides: d3dadapter9.so.1()(64bit) %else From fd56f9108c267ccaec00363ae358181d8d01c983c94e07adc47fd26e71f6eef7 Mon Sep 17 00:00:00 2001 From: Stefan Dirsch Date: Wed, 5 Apr 2017 12:32:09 +0000 Subject: [PATCH 9/9] Accepting request 485802 from home:a_faerber:branches:X11:XOrg Enable Clover for s390x OBS-URL: https://build.opensuse.org/request/show/485802 OBS-URL: https://build.opensuse.org/package/show/X11:XOrg/Mesa?expand=0&rev=590 --- Mesa.changes | 8 ++++++++ Mesa.spec | 12 ++++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/Mesa.changes b/Mesa.changes index cc681ac..321a7e7 100644 --- a/Mesa.changes +++ b/Mesa.changes @@ -1,3 +1,11 @@ +------------------------------------------------------------------- +Wed Apr 5 11:32:26 UTC 2017 - afaerber@suse.de + +- Prepare building OpenCL for non-x86 architectures, too +* s390x can build it right away (swrast) +* %arm aarch64 ppc64 ppc64le depend on LLVM amdgpu target for r600 +- Fix typo in specfile comment + ------------------------------------------------------------------- Sat Apr 1 15:59:08 UTC 2017 - mimi.vx@gmail.com diff --git a/Mesa.spec b/Mesa.spec index a545049..3344262 100644 --- a/Mesa.spec +++ b/Mesa.spec @@ -29,7 +29,7 @@ %define _version 17.0.3 %define with_opencl 0 %define with_vulkan 0 -%ifarch %ix86 x86_64 %arm ppc ppc64 ppc64le s390x +%ifarch %ix86 x86_64 %arm aarch64 ppc ppc64 ppc64le s390x %define gallium_loader 1 %else %define gallium_loader 0 @@ -45,9 +45,13 @@ %endif %ifarch %ix86 x86_64 %define with_nine 1 +%endif %if 0%{gallium_loader} && 0%{?suse_version} >= 1330 # llvm >= 3.9 not provided for <= 1330 +%ifarch %ix86 x86_64 s390x %define with_opencl 1 +%endif +%ifarch %ix86 x86_64 %define with_vulkan 1 %endif %endif @@ -153,8 +157,12 @@ BuildRequires: pkgconfig(libdrm_freedreno) >= 2.4.74 %ifarch x86_64 %ix86 BuildRequires: libelf-devel BuildRequires: pkgconfig(libdrm_intel) >= 2.4.61 +%else +%if 0%{with_opencl} +BuildRequires: libelf-devel %endif -# Requirments for wayland bumped up from 17.0 +%endif +# Requirements for wayland bumped up from 17.0 %if 0%{?suse_version} > 1320 BuildRequires: pkgconfig(wayland-client) BuildRequires: pkgconfig(wayland-server)