Accepting request 577310 from X11:XOrg
OBS-URL: https://build.opensuse.org/request/show/577310 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/Mesa?expand=0&rev=315
This commit is contained in:
commit
cc55aa88d2
@ -1,3 +1,38 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Feb 16 14:59:04 UTC 2018 - mstaudt@suse.com
|
||||||
|
|
||||||
|
- Split Nouveau and VC4 from the main driver package on all systems
|
||||||
|
|
||||||
|
Fixes (boo#1081210).
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Feb 15 09:25:16 UTC 2018 - mimi.vx@gmail.com
|
||||||
|
|
||||||
|
- remove %{release} based dependecies
|
||||||
|
Unfortuanetly Mesa and Mesa-drivers can have different release number
|
||||||
|
Release is Commit_Count.Build_Count and build count can be different
|
||||||
|
because both packages have different dependencies
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Feb 14 09:48:41 UTC 2018 - mimi.vx@gmail.com
|
||||||
|
|
||||||
|
- add u_glsl-linker-error.patch
|
||||||
|
* Fix attaching multiple shader objects for the same stage to a
|
||||||
|
GLSL program triggers a linker error (fdo#104777, bnc#1080492)
|
||||||
|
* Fixes issue with wine applications.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Feb 12 12:31:05 UTC 2018 - joop.boonen@opensuse.org
|
||||||
|
|
||||||
|
- Added %{release} so the correct package release is used
|
||||||
|
when a package has been patched
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Feb 9 13:45:16 UTC 2018 - sndirsch@suse.com
|
||||||
|
|
||||||
|
- Update to 18.0.0-rc4
|
||||||
|
- supersedes u_mesa-st-shader_cache-restore-num_tgsi_tokens-when-loading.patch
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Tue Feb 6 08:42:03 UTC 2018 - msrb@suse.com
|
Tue Feb 6 08:42:03 UTC 2018 - msrb@suse.com
|
||||||
|
|
||||||
|
@ -43,7 +43,7 @@
|
|||||||
|
|
||||||
%define glamor 1
|
%define glamor 1
|
||||||
%define _name_archive mesa
|
%define _name_archive mesa
|
||||||
%define _version 18.0.0-rc3
|
%define _version 18.0.0-rc4
|
||||||
%define with_opencl 0
|
%define with_opencl 0
|
||||||
%define with_vulkan 0
|
%define with_vulkan 0
|
||||||
%define with_llvm 0
|
%define with_llvm 0
|
||||||
@ -141,8 +141,8 @@ Patch31: archlinux_0001-Fix-linkage-against-shared-glapi.patch
|
|||||||
Patch32: archlinux_glvnd-fix-gl-dot-pc.patch
|
Patch32: archlinux_glvnd-fix-gl-dot-pc.patch
|
||||||
# Upstream
|
# Upstream
|
||||||
Patch43: u_mesa-python3-only.patch
|
Patch43: u_mesa-python3-only.patch
|
||||||
Patch44: u_mesa-st-shader_cache-restore-num_tgsi_tokens-when-loading.patch
|
|
||||||
Patch45: n_Disable-AMDGPU-GFX9-Vega-on-LLVM-lessthan-6.0.0.patch
|
Patch45: n_Disable-AMDGPU-GFX9-Vega-on-LLVM-lessthan-6.0.0.patch
|
||||||
|
Patch46: u_glsl-linker-error.patch
|
||||||
|
|
||||||
BuildRequires: autoconf >= 2.60
|
BuildRequires: autoconf >= 2.60
|
||||||
BuildRequires: automake
|
BuildRequires: automake
|
||||||
@ -467,8 +467,8 @@ applications using the OpenGL|ES 3.x APIs.
|
|||||||
Summary: Mesa Off-screen rendering extension
|
Summary: Mesa Off-screen rendering extension
|
||||||
# Wrongly named package shipped .so.8
|
# Wrongly named package shipped .so.8
|
||||||
Group: System/Libraries
|
Group: System/Libraries
|
||||||
Obsoletes: libOSMesa9 < %{version}-%{release}
|
Obsoletes: libOSMesa9 < %{version}
|
||||||
Provides: libOSMesa9 = %{version}-%{release}
|
Provides: libOSMesa9 = %{version}
|
||||||
|
|
||||||
%description -n libOSMesa8
|
%description -n libOSMesa8
|
||||||
OSmesa is a Mesa extension that allows programs to render to an
|
OSmesa is a Mesa extension that allows programs to render to an
|
||||||
@ -533,6 +533,16 @@ This package contains nouveau_dri.so, which is necessary for
|
|||||||
Nouveau's 3D acceleration to work. It is packaged separately
|
Nouveau's 3D acceleration to work. It is packaged separately
|
||||||
since it is still experimental.
|
since it is still experimental.
|
||||||
|
|
||||||
|
%package -n Mesa-dri-vc4
|
||||||
|
Summary: Mesa DRI plug-in for 3D acceleration on Raspberry Pi
|
||||||
|
Group: System/Libraries
|
||||||
|
Requires: Mesa = %{version}
|
||||||
|
|
||||||
|
%description -n Mesa-dri-vc4
|
||||||
|
This package contains vc4_dri.so, which is necessary for 3D
|
||||||
|
acceleration on the Raspberry Pi to work. It is packaged separately
|
||||||
|
since it is still experimental.
|
||||||
|
|
||||||
%package -n Mesa-gallium
|
%package -n Mesa-gallium
|
||||||
Summary: Mesa Gallium GPU drivers
|
Summary: Mesa Gallium GPU drivers
|
||||||
Group: System/Libraries
|
Group: System/Libraries
|
||||||
@ -750,8 +760,8 @@ rm -rf docs/README.{VMS,WIN32,OS2}
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
%patch43 -p1
|
%patch43 -p1
|
||||||
%patch44 -p1
|
|
||||||
%patch45 -p1
|
%patch45 -p1
|
||||||
|
%patch46 -p1
|
||||||
|
|
||||||
# Remove requires to libglvnd/libglvnd-devel from baselibs.conf when
|
# Remove requires to libglvnd/libglvnd-devel from baselibs.conf when
|
||||||
# disabling libglvnd build; ugly ...
|
# disabling libglvnd build; ugly ...
|
||||||
@ -1170,11 +1180,12 @@ echo "The \"Mesa\" package does not have the ability to render, but is supplemen
|
|||||||
%files -n Mesa-dri
|
%files -n Mesa-dri
|
||||||
%dir %{_libdir}/dri
|
%dir %{_libdir}/dri
|
||||||
%{_libdir}/dri/*_dri.so
|
%{_libdir}/dri/*_dri.so
|
||||||
%if 0%{?is_opensuse}
|
|
||||||
%ifarch %ix86 x86_64 aarch64 %arm ppc64 ppc64le
|
%ifarch %ix86 x86_64 aarch64 %arm ppc64 ppc64le
|
||||||
%exclude %{_libdir}/dri/nouveau_dri.so
|
%exclude %{_libdir}/dri/nouveau_dri.so
|
||||||
%exclude %{_libdir}/dri/nouveau_vieux_dri.so
|
%exclude %{_libdir}/dri/nouveau_vieux_dri.so
|
||||||
%endif
|
%endif
|
||||||
|
%ifarch %arm aarch64
|
||||||
|
%exclude %{_libdir}/dri/vc4_dri.so
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%if 0%{with_opencl}
|
%if 0%{with_opencl}
|
||||||
@ -1184,12 +1195,15 @@ echo "The \"Mesa\" package does not have the ability to render, but is supplemen
|
|||||||
%{_libdir}/gallium-pipe/pipe_*.so
|
%{_libdir}/gallium-pipe/pipe_*.so
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%if 0%{?is_opensuse}
|
|
||||||
%ifarch %ix86 x86_64 aarch64 %arm ppc64 ppc64le
|
%ifarch %ix86 x86_64 aarch64 %arm ppc64 ppc64le
|
||||||
%files -n Mesa-dri-nouveau
|
%files -n Mesa-dri-nouveau
|
||||||
%{_libdir}/dri/nouveau_dri.so
|
%{_libdir}/dri/nouveau_dri.so
|
||||||
%{_libdir}/dri/nouveau_vieux_dri.so
|
%{_libdir}/dri/nouveau_vieux_dri.so
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
%ifarch aarch64 %arm
|
||||||
|
%files -n Mesa-dri-vc4
|
||||||
|
%{_libdir}/dri/vc4_dri.so
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
# drivers
|
# drivers
|
||||||
|
35
Mesa.changes
35
Mesa.changes
@ -1,3 +1,38 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Feb 16 14:59:04 UTC 2018 - mstaudt@suse.com
|
||||||
|
|
||||||
|
- Split Nouveau and VC4 from the main driver package on all systems
|
||||||
|
|
||||||
|
Fixes (boo#1081210).
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Feb 15 09:25:16 UTC 2018 - mimi.vx@gmail.com
|
||||||
|
|
||||||
|
- remove %{release} based dependecies
|
||||||
|
Unfortuanetly Mesa and Mesa-drivers can have different release number
|
||||||
|
Release is Commit_Count.Build_Count and build count can be different
|
||||||
|
because both packages have different dependencies
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Feb 14 09:48:41 UTC 2018 - mimi.vx@gmail.com
|
||||||
|
|
||||||
|
- add u_glsl-linker-error.patch
|
||||||
|
* Fix attaching multiple shader objects for the same stage to a
|
||||||
|
GLSL program triggers a linker error (fdo#104777, bnc#1080492)
|
||||||
|
* Fixes issue with wine applications.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Feb 12 12:31:05 UTC 2018 - joop.boonen@opensuse.org
|
||||||
|
|
||||||
|
- Added %{release} so the correct package release is used
|
||||||
|
when a package has been patched
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Feb 9 13:45:16 UTC 2018 - sndirsch@suse.com
|
||||||
|
|
||||||
|
- Update to 18.0.0-rc4
|
||||||
|
- supersedes u_mesa-st-shader_cache-restore-num_tgsi_tokens-when-loading.patch
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Tue Feb 6 08:42:03 UTC 2018 - msrb@suse.com
|
Tue Feb 6 08:42:03 UTC 2018 - msrb@suse.com
|
||||||
|
|
||||||
|
28
Mesa.spec
28
Mesa.spec
@ -42,7 +42,7 @@
|
|||||||
|
|
||||||
%define glamor 1
|
%define glamor 1
|
||||||
%define _name_archive mesa
|
%define _name_archive mesa
|
||||||
%define _version 18.0.0-rc3
|
%define _version 18.0.0-rc4
|
||||||
%define with_opencl 0
|
%define with_opencl 0
|
||||||
%define with_vulkan 0
|
%define with_vulkan 0
|
||||||
%define with_llvm 0
|
%define with_llvm 0
|
||||||
@ -140,8 +140,8 @@ Patch31: archlinux_0001-Fix-linkage-against-shared-glapi.patch
|
|||||||
Patch32: archlinux_glvnd-fix-gl-dot-pc.patch
|
Patch32: archlinux_glvnd-fix-gl-dot-pc.patch
|
||||||
# Upstream
|
# Upstream
|
||||||
Patch43: u_mesa-python3-only.patch
|
Patch43: u_mesa-python3-only.patch
|
||||||
Patch44: u_mesa-st-shader_cache-restore-num_tgsi_tokens-when-loading.patch
|
|
||||||
Patch45: n_Disable-AMDGPU-GFX9-Vega-on-LLVM-lessthan-6.0.0.patch
|
Patch45: n_Disable-AMDGPU-GFX9-Vega-on-LLVM-lessthan-6.0.0.patch
|
||||||
|
Patch46: u_glsl-linker-error.patch
|
||||||
|
|
||||||
BuildRequires: autoconf >= 2.60
|
BuildRequires: autoconf >= 2.60
|
||||||
BuildRequires: automake
|
BuildRequires: automake
|
||||||
@ -466,8 +466,8 @@ applications using the OpenGL|ES 3.x APIs.
|
|||||||
Summary: Mesa Off-screen rendering extension
|
Summary: Mesa Off-screen rendering extension
|
||||||
# Wrongly named package shipped .so.8
|
# Wrongly named package shipped .so.8
|
||||||
Group: System/Libraries
|
Group: System/Libraries
|
||||||
Obsoletes: libOSMesa9 < %{version}-%{release}
|
Obsoletes: libOSMesa9 < %{version}
|
||||||
Provides: libOSMesa9 = %{version}-%{release}
|
Provides: libOSMesa9 = %{version}
|
||||||
|
|
||||||
%description -n libOSMesa8
|
%description -n libOSMesa8
|
||||||
OSmesa is a Mesa extension that allows programs to render to an
|
OSmesa is a Mesa extension that allows programs to render to an
|
||||||
@ -532,6 +532,16 @@ This package contains nouveau_dri.so, which is necessary for
|
|||||||
Nouveau's 3D acceleration to work. It is packaged separately
|
Nouveau's 3D acceleration to work. It is packaged separately
|
||||||
since it is still experimental.
|
since it is still experimental.
|
||||||
|
|
||||||
|
%package -n Mesa-dri-vc4
|
||||||
|
Summary: Mesa DRI plug-in for 3D acceleration on Raspberry Pi
|
||||||
|
Group: System/Libraries
|
||||||
|
Requires: Mesa = %{version}
|
||||||
|
|
||||||
|
%description -n Mesa-dri-vc4
|
||||||
|
This package contains vc4_dri.so, which is necessary for 3D
|
||||||
|
acceleration on the Raspberry Pi to work. It is packaged separately
|
||||||
|
since it is still experimental.
|
||||||
|
|
||||||
%package -n Mesa-gallium
|
%package -n Mesa-gallium
|
||||||
Summary: Mesa Gallium GPU drivers
|
Summary: Mesa Gallium GPU drivers
|
||||||
Group: System/Libraries
|
Group: System/Libraries
|
||||||
@ -749,8 +759,8 @@ rm -rf docs/README.{VMS,WIN32,OS2}
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
%patch43 -p1
|
%patch43 -p1
|
||||||
%patch44 -p1
|
|
||||||
%patch45 -p1
|
%patch45 -p1
|
||||||
|
%patch46 -p1
|
||||||
|
|
||||||
# Remove requires to libglvnd/libglvnd-devel from baselibs.conf when
|
# Remove requires to libglvnd/libglvnd-devel from baselibs.conf when
|
||||||
# disabling libglvnd build; ugly ...
|
# disabling libglvnd build; ugly ...
|
||||||
@ -1169,11 +1179,12 @@ echo "The \"Mesa\" package does not have the ability to render, but is supplemen
|
|||||||
%files -n Mesa-dri
|
%files -n Mesa-dri
|
||||||
%dir %{_libdir}/dri
|
%dir %{_libdir}/dri
|
||||||
%{_libdir}/dri/*_dri.so
|
%{_libdir}/dri/*_dri.so
|
||||||
%if 0%{?is_opensuse}
|
|
||||||
%ifarch %ix86 x86_64 aarch64 %arm ppc64 ppc64le
|
%ifarch %ix86 x86_64 aarch64 %arm ppc64 ppc64le
|
||||||
%exclude %{_libdir}/dri/nouveau_dri.so
|
%exclude %{_libdir}/dri/nouveau_dri.so
|
||||||
%exclude %{_libdir}/dri/nouveau_vieux_dri.so
|
%exclude %{_libdir}/dri/nouveau_vieux_dri.so
|
||||||
%endif
|
%endif
|
||||||
|
%ifarch %arm aarch64
|
||||||
|
%exclude %{_libdir}/dri/vc4_dri.so
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%if 0%{with_opencl}
|
%if 0%{with_opencl}
|
||||||
@ -1183,12 +1194,15 @@ echo "The \"Mesa\" package does not have the ability to render, but is supplemen
|
|||||||
%{_libdir}/gallium-pipe/pipe_*.so
|
%{_libdir}/gallium-pipe/pipe_*.so
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%if 0%{?is_opensuse}
|
|
||||||
%ifarch %ix86 x86_64 aarch64 %arm ppc64 ppc64le
|
%ifarch %ix86 x86_64 aarch64 %arm ppc64 ppc64le
|
||||||
%files -n Mesa-dri-nouveau
|
%files -n Mesa-dri-nouveau
|
||||||
%{_libdir}/dri/nouveau_dri.so
|
%{_libdir}/dri/nouveau_dri.so
|
||||||
%{_libdir}/dri/nouveau_vieux_dri.so
|
%{_libdir}/dri/nouveau_vieux_dri.so
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
%ifarch aarch64 %arm
|
||||||
|
%files -n Mesa-dri-vc4
|
||||||
|
%{_libdir}/dri/vc4_dri.so
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
# drivers
|
# drivers
|
||||||
|
@ -106,6 +106,7 @@ libvdpau_r300
|
|||||||
libvdpau_r600
|
libvdpau_r600
|
||||||
libvdpau_radeonsi
|
libvdpau_radeonsi
|
||||||
libwayland-egl1
|
libwayland-egl1
|
||||||
|
Mesa-dri-vc4
|
||||||
Mesa-dri-nouveau
|
Mesa-dri-nouveau
|
||||||
Mesa-dri
|
Mesa-dri
|
||||||
supplements "Mesa-<targettype> = <version>"
|
supplements "Mesa-<targettype> = <version>"
|
||||||
|
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:27c1ade098d9e0afaa7ecaa2d4ce7fe1e84f105b82c0d19926f9694087ea5758
|
|
||||||
size 10964880
|
|
Binary file not shown.
3
mesa-18.0.0-rc4.tar.xz
Normal file
3
mesa-18.0.0-rc4.tar.xz
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:ad575becea192f04403b6783492955f395dd8faad7e51cbcbad203be70eb9075
|
||||||
|
size 11027596
|
BIN
mesa-18.0.0-rc4.tar.xz.sig
Normal file
BIN
mesa-18.0.0-rc4.tar.xz.sig
Normal file
Binary file not shown.
115
u_glsl-linker-error.patch
Normal file
115
u_glsl-linker-error.patch
Normal file
@ -0,0 +1,115 @@
|
|||||||
|
From 4195eed961ccfe404ae81b9112189fc93a254ded Mon Sep 17 00:00:00 2001
|
||||||
|
From: "Juan A. Suarez Romero" <jasuarez@igalia.com>
|
||||||
|
Date: Mon, 5 Feb 2018 17:38:39 +0100
|
||||||
|
Subject: glsl/linker: check same name is not used in block and outside
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
According with OpenGL GLSL 3.20 spec, section 4.3.9:
|
||||||
|
|
||||||
|
"It is a link-time error if any particular shader interface
|
||||||
|
contains:
|
||||||
|
- two different blocks, each having no instance name, and each
|
||||||
|
having a member of the same name, or
|
||||||
|
- a variable outside a block, and a block with no instance name,
|
||||||
|
where the variable has the same name as a member in the block."
|
||||||
|
|
||||||
|
This fixes a previous commit 9b894c8 ("glsl/linker: link-error using the
|
||||||
|
same name in unnamed block and outside") that covered this case, but
|
||||||
|
did not take in account that precision qualifiers are ignored when
|
||||||
|
comparing blocks with no instance name.
|
||||||
|
|
||||||
|
With this commit, the original tests
|
||||||
|
KHR-GL*.shaders.uniform_block.common.name_matching keep fixed, and also
|
||||||
|
dEQP-GLES31.functional.shaders.linkage.uniform.block.differing_precision
|
||||||
|
regression is fixed, which was broken by previous commit.
|
||||||
|
|
||||||
|
v2: use helper varibles (Matteo Bruni)
|
||||||
|
|
||||||
|
Fixes: 9b894c8 ("glsl/linker: link-error using the same name in unnamed block and outside")
|
||||||
|
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=104668
|
||||||
|
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=104777
|
||||||
|
CC: Mark Janes <mark.a.janes@intel.com>
|
||||||
|
CC: "18.0" <mesa-stable@lists.freedesktop.org>
|
||||||
|
Tested-by: Matteo Bruni <matteo.mystral@gmail.com>
|
||||||
|
Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
|
||||||
|
Signed-off-by: Juan A. Suarez Romero <jasuarez@igalia.com>
|
||||||
|
---
|
||||||
|
src/compiler/glsl/linker.cpp | 53 +++++++++++++++++++++++++-------------------
|
||||||
|
1 file changed, 30 insertions(+), 23 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/compiler/glsl/linker.cpp b/src/compiler/glsl/linker.cpp
|
||||||
|
index ce10193..d3d18c2 100644
|
||||||
|
--- a/src/compiler/glsl/linker.cpp
|
||||||
|
+++ b/src/compiler/glsl/linker.cpp
|
||||||
|
@@ -1111,29 +1111,6 @@ cross_validate_globals(struct gl_shader_program *prog,
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
- /* In OpenGL GLSL 4.20 spec, section 4.3.9, page 57:
|
||||||
|
- *
|
||||||
|
- * "It is a link-time error if any particular shader interface
|
||||||
|
- * contains:
|
||||||
|
- *
|
||||||
|
- * - two different blocks, each having no instance name, and each
|
||||||
|
- * having a member of the same name, or
|
||||||
|
- *
|
||||||
|
- * - a variable outside a block, and a block with no instance name,
|
||||||
|
- * where the variable has the same name as a member in the block."
|
||||||
|
- */
|
||||||
|
- if (var->data.mode == existing->data.mode &&
|
||||||
|
- var->get_interface_type() != existing->get_interface_type()) {
|
||||||
|
- linker_error(prog, "declarations for %s `%s` are in "
|
||||||
|
- "%s and %s\n",
|
||||||
|
- mode_string(var), var->name,
|
||||||
|
- existing->get_interface_type() ?
|
||||||
|
- existing->get_interface_type()->name : "outside a block",
|
||||||
|
- var->get_interface_type() ?
|
||||||
|
- var->get_interface_type()->name : "outside a block");
|
||||||
|
-
|
||||||
|
- return;
|
||||||
|
- }
|
||||||
|
/* Only in GLSL ES 3.10, the precision qualifier should not match
|
||||||
|
* between block members defined in matched block names within a
|
||||||
|
* shader interface.
|
||||||
|
@@ -1155,6 +1132,36 @@ cross_validate_globals(struct gl_shader_program *prog,
|
||||||
|
mode_string(var), var->name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+ /* In OpenGL GLSL 3.20 spec, section 4.3.9:
|
||||||
|
+ *
|
||||||
|
+ * "It is a link-time error if any particular shader interface
|
||||||
|
+ * contains:
|
||||||
|
+ *
|
||||||
|
+ * - two different blocks, each having no instance name, and each
|
||||||
|
+ * having a member of the same name, or
|
||||||
|
+ *
|
||||||
|
+ * - a variable outside a block, and a block with no instance name,
|
||||||
|
+ * where the variable has the same name as a member in the block."
|
||||||
|
+ */
|
||||||
|
+ const glsl_type *var_itype = var->get_interface_type();
|
||||||
|
+ const glsl_type *existing_itype = existing->get_interface_type();
|
||||||
|
+ if (var_itype != existing_itype) {
|
||||||
|
+ if (!var_itype || !existing_itype) {
|
||||||
|
+ linker_error(prog, "declarations for %s `%s` are inside block "
|
||||||
|
+ "`%s` and outside a block",
|
||||||
|
+ mode_string(var), var->name,
|
||||||
|
+ var_itype ? var_itype->name : existing_itype->name);
|
||||||
|
+ return;
|
||||||
|
+ } else if (strcmp(var_itype->name, existing_itype->name) != 0) {
|
||||||
|
+ linker_error(prog, "declarations for %s `%s` are inside blocks "
|
||||||
|
+ "`%s` and `%s`",
|
||||||
|
+ mode_string(var), var->name,
|
||||||
|
+ existing_itype->name,
|
||||||
|
+ var_itype->name);
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
} else
|
||||||
|
variables->add_variable(var);
|
||||||
|
}
|
||||||
|
--
|
||||||
|
cgit v1.1
|
||||||
|
|
@ -1,101 +0,0 @@
|
|||||||
Git-commit: 041b18cf23a0acf7b0eddf63cd7a2a10192432a1
|
|
||||||
Author: Timothy Arceri <tarceri@itsqueeze.com>
|
|
||||||
Subject: st/shader_cache: restore num_tgsi_tokens when loading from cache
|
|
||||||
References: bnc#1079465 fdo#104762
|
|
||||||
Patch-Mainline: Upstream
|
|
||||||
Signed-off-by: Michal Srb <msrb@suse.com>
|
|
||||||
|
|
||||||
Without this we will fail to correctly serialise programs when
|
|
||||||
using glGetProgramBinary() if the program was retrieved from
|
|
||||||
the disk cache rather than freshly compiled.
|
|
||||||
|
|
||||||
Fixes: c69b0dd6817b "st/glsl_to_tgsi: store num_tgsi_tokens in st_*_program"
|
|
||||||
|
|
||||||
Reviewed-by: Gert Wollny <gw.fossdev@gmail.com>
|
|
||||||
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=104762
|
|
||||||
---
|
|
||||||
src/mesa/state_tracker/st_shader_cache.c | 25 ++++++++++++++++---------
|
|
||||||
1 file changed, 16 insertions(+), 9 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/mesa/state_tracker/st_shader_cache.c b/src/mesa/state_tracker/st_shader_cache.c
|
|
||||||
index b1b9d275f8..12d73965bf 100644
|
|
||||||
--- a/src/mesa/state_tracker/st_shader_cache.c
|
|
||||||
+++ b/src/mesa/state_tracker/st_shader_cache.c
|
|
||||||
@@ -142,10 +142,11 @@ read_stream_out_from_cache(struct blob_reader *blob_reader,
|
|
||||||
|
|
||||||
static void
|
|
||||||
read_tgsi_from_cache(struct blob_reader *blob_reader,
|
|
||||||
- const struct tgsi_token **tokens)
|
|
||||||
+ const struct tgsi_token **tokens,
|
|
||||||
+ unsigned *num_tokens)
|
|
||||||
{
|
|
||||||
- uint32_t num_tokens = blob_read_uint32(blob_reader);
|
|
||||||
- unsigned tokens_size = num_tokens * sizeof(struct tgsi_token);
|
|
||||||
+ *num_tokens = blob_read_uint32(blob_reader);
|
|
||||||
+ unsigned tokens_size = *num_tokens * sizeof(struct tgsi_token);
|
|
||||||
*tokens = (const struct tgsi_token*) MALLOC(tokens_size);
|
|
||||||
blob_copy_bytes(blob_reader, (uint8_t *) *tokens, tokens_size);
|
|
||||||
}
|
|
||||||
@@ -175,7 +176,8 @@ st_deserialise_tgsi_program(struct gl_context *ctx,
|
|
||||||
sizeof(stvp->result_to_output));
|
|
||||||
|
|
||||||
read_stream_out_from_cache(&blob_reader, &stvp->tgsi);
|
|
||||||
- read_tgsi_from_cache(&blob_reader, &stvp->tgsi.tokens);
|
|
||||||
+ read_tgsi_from_cache(&blob_reader, &stvp->tgsi.tokens,
|
|
||||||
+ &stvp->num_tgsi_tokens);
|
|
||||||
|
|
||||||
if (st->vp == stvp)
|
|
||||||
st->dirty |= ST_NEW_VERTEX_PROGRAM(st, stvp);
|
|
||||||
@@ -189,7 +191,8 @@ st_deserialise_tgsi_program(struct gl_context *ctx,
|
|
||||||
&sttcp->variants, &sttcp->tgsi);
|
|
||||||
|
|
||||||
read_stream_out_from_cache(&blob_reader, &sttcp->tgsi);
|
|
||||||
- read_tgsi_from_cache(&blob_reader, &sttcp->tgsi.tokens);
|
|
||||||
+ read_tgsi_from_cache(&blob_reader, &sttcp->tgsi.tokens,
|
|
||||||
+ &sttcp->num_tgsi_tokens);
|
|
||||||
|
|
||||||
if (st->tcp == sttcp)
|
|
||||||
st->dirty |= sttcp->affected_states;
|
|
||||||
@@ -203,7 +206,8 @@ st_deserialise_tgsi_program(struct gl_context *ctx,
|
|
||||||
&sttep->variants, &sttep->tgsi);
|
|
||||||
|
|
||||||
read_stream_out_from_cache(&blob_reader, &sttep->tgsi);
|
|
||||||
- read_tgsi_from_cache(&blob_reader, &sttep->tgsi.tokens);
|
|
||||||
+ read_tgsi_from_cache(&blob_reader, &sttep->tgsi.tokens,
|
|
||||||
+ &sttep->num_tgsi_tokens);
|
|
||||||
|
|
||||||
if (st->tep == sttep)
|
|
||||||
st->dirty |= sttep->affected_states;
|
|
||||||
@@ -217,7 +221,8 @@ st_deserialise_tgsi_program(struct gl_context *ctx,
|
|
||||||
&stgp->tgsi);
|
|
||||||
|
|
||||||
read_stream_out_from_cache(&blob_reader, &stgp->tgsi);
|
|
||||||
- read_tgsi_from_cache(&blob_reader, &stgp->tgsi.tokens);
|
|
||||||
+ read_tgsi_from_cache(&blob_reader, &stgp->tgsi.tokens,
|
|
||||||
+ &stgp->num_tgsi_tokens);
|
|
||||||
|
|
||||||
if (st->gp == stgp)
|
|
||||||
st->dirty |= stgp->affected_states;
|
|
||||||
@@ -229,7 +234,8 @@ st_deserialise_tgsi_program(struct gl_context *ctx,
|
|
||||||
|
|
||||||
st_release_fp_variants(st, stfp);
|
|
||||||
|
|
||||||
- read_tgsi_from_cache(&blob_reader, &stfp->tgsi.tokens);
|
|
||||||
+ read_tgsi_from_cache(&blob_reader, &stfp->tgsi.tokens,
|
|
||||||
+ &stfp->num_tgsi_tokens);
|
|
||||||
|
|
||||||
if (st->fp == stfp)
|
|
||||||
st->dirty |= stfp->affected_states;
|
|
||||||
@@ -242,7 +248,8 @@ st_deserialise_tgsi_program(struct gl_context *ctx,
|
|
||||||
st_release_cp_variants(st, stcp);
|
|
||||||
|
|
||||||
read_tgsi_from_cache(&blob_reader,
|
|
||||||
- (const struct tgsi_token**) &stcp->tgsi.prog);
|
|
||||||
+ (const struct tgsi_token**) &stcp->tgsi.prog,
|
|
||||||
+ &stcp->num_tgsi_tokens);
|
|
||||||
|
|
||||||
stcp->tgsi.req_local_mem = stcp->Base.info.cs.shared_size;
|
|
||||||
stcp->tgsi.req_private_mem = 0;
|
|
||||||
--
|
|
||||||
2.13.6
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user