forked from pool/spirv-tools
- Update to release 2022.4 (SDK-1.3.231.0)
OBS-URL: https://build.opensuse.org/package/show/X11:Wayland/spirv-tools?expand=0&rev=88
This commit is contained in:
parent
b49384195f
commit
08ff6b0285
@ -1,97 +0,0 @@
|
|||||||
From 3a8a961cffb7699422a05dcbafdd721226b4547d Mon Sep 17 00:00:00 2001
|
|
||||||
From: Cassandra Beckley <cbeckley@google.com>
|
|
||||||
Date: Thu, 11 Aug 2022 09:59:37 -0700
|
|
||||||
Subject: [PATCH] Fix array copy propagation (#4890)
|
|
||||||
|
|
||||||
Array copy propagation was interpreting OpEntryPoint as a store
|
|
||||||
---
|
|
||||||
source/opt/copy_prop_arrays.cpp | 2 ++
|
|
||||||
source/opt/copy_prop_arrays.h | 2 +-
|
|
||||||
test/opt/copy_prop_array_test.cpp | 45 +++++++++++++++++++++++++++++++
|
|
||||||
3 files changed, 48 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/source/opt/copy_prop_arrays.cpp b/source/opt/copy_prop_arrays.cpp
|
|
||||||
index 321d4969..1c30138e 100644
|
|
||||||
--- a/source/opt/copy_prop_arrays.cpp
|
|
||||||
+++ b/source/opt/copy_prop_arrays.cpp
|
|
||||||
@@ -168,6 +168,8 @@ bool CopyPropagateArrays::HasNoStores(Instruction* ptr_inst) {
|
|
||||||
return false;
|
|
||||||
} else if (use->opcode() == SpvOpImageTexelPointer) {
|
|
||||||
return true;
|
|
||||||
+ } else if (use->opcode() == SpvOpEntryPoint) {
|
|
||||||
+ return true;
|
|
||||||
}
|
|
||||||
// Some other instruction. Be conservative.
|
|
||||||
return false;
|
|
||||||
diff --git a/source/opt/copy_prop_arrays.h b/source/opt/copy_prop_arrays.h
|
|
||||||
index 46a508cf..07747c10 100644
|
|
||||||
--- a/source/opt/copy_prop_arrays.h
|
|
||||||
+++ b/source/opt/copy_prop_arrays.h
|
|
||||||
@@ -195,7 +195,7 @@ class CopyPropagateArrays : public MemPass {
|
|
||||||
// Return true if |type_id| is a pointer type whose pointee type is an array.
|
|
||||||
bool IsPointerToArrayType(uint32_t type_id);
|
|
||||||
|
|
||||||
- // Returns true of there are not stores using |ptr_inst| or something derived
|
|
||||||
+ // Returns true if there are not stores using |ptr_inst| or something derived
|
|
||||||
// from it.
|
|
||||||
bool HasNoStores(Instruction* ptr_inst);
|
|
||||||
|
|
||||||
diff --git a/test/opt/copy_prop_array_test.cpp b/test/opt/copy_prop_array_test.cpp
|
|
||||||
index a4599f0f..f322f4ad 100644
|
|
||||||
--- a/test/opt/copy_prop_array_test.cpp
|
|
||||||
+++ b/test/opt/copy_prop_array_test.cpp
|
|
||||||
@@ -1839,6 +1839,51 @@ OpFunctionEnd
|
|
||||||
|
|
||||||
SinglePassRunAndCheck<CopyPropagateArrays>(text, text, false);
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+// Since Spir-V 1.4, resources that are used by a shader must be on the
|
|
||||||
+// OpEntryPoint instruction with the inputs and outputs. This test ensures that
|
|
||||||
+// this does not stop the pass from working.
|
|
||||||
+TEST_F(CopyPropArrayPassTest, EntryPointUser) {
|
|
||||||
+ const std::string before = R"(OpCapability Shader
|
|
||||||
+OpMemoryModel Logical GLSL450
|
|
||||||
+OpEntryPoint GLCompute %main "main" %g_rwTexture3d
|
|
||||||
+OpExecutionMode %main LocalSize 256 1 1
|
|
||||||
+OpSource HLSL 660
|
|
||||||
+OpName %type_3d_image "type.3d.image"
|
|
||||||
+OpName %g_rwTexture3d "g_rwTexture3d"
|
|
||||||
+OpName %main "main"
|
|
||||||
+OpDecorate %g_rwTexture3d DescriptorSet 0
|
|
||||||
+OpDecorate %g_rwTexture3d Binding 0
|
|
||||||
+%uint = OpTypeInt 32 0
|
|
||||||
+%uint_0 = OpConstant %uint 0
|
|
||||||
+%uint_1 = OpConstant %uint 1
|
|
||||||
+%uint_2 = OpConstant %uint 2
|
|
||||||
+%uint_3 = OpConstant %uint 3
|
|
||||||
+%v3uint = OpTypeVector %uint 3
|
|
||||||
+%10 = OpConstantComposite %v3uint %uint_1 %uint_2 %uint_3
|
|
||||||
+%type_3d_image = OpTypeImage %uint 3D 2 0 0 2 R32ui
|
|
||||||
+%_ptr_UniformConstant_type_3d_image = OpTypePointer UniformConstant %type_3d_image
|
|
||||||
+%void = OpTypeVoid
|
|
||||||
+%13 = OpTypeFunction %void
|
|
||||||
+%_ptr_Function_type_3d_image = OpTypePointer Function %type_3d_image
|
|
||||||
+%_ptr_Image_uint = OpTypePointer Image %uint
|
|
||||||
+%g_rwTexture3d = OpVariable %_ptr_UniformConstant_type_3d_image UniformConstant
|
|
||||||
+%main = OpFunction %void None %13
|
|
||||||
+%16 = OpLabel
|
|
||||||
+%17 = OpVariable %_ptr_Function_type_3d_image Function
|
|
||||||
+%18 = OpLoad %type_3d_image %g_rwTexture3d
|
|
||||||
+OpStore %17 %18
|
|
||||||
+; CHECK: %19 = OpImageTexelPointer %_ptr_Image_uint %g_rwTexture3d %10 %uint_0
|
|
||||||
+%19 = OpImageTexelPointer %_ptr_Image_uint %17 %10 %uint_0
|
|
||||||
+%20 = OpAtomicIAdd %uint %19 %uint_1 %uint_0 %uint_1
|
|
||||||
+OpReturn
|
|
||||||
+OpFunctionEnd
|
|
||||||
+)";
|
|
||||||
+
|
|
||||||
+ SetAssembleOptions(SPV_TEXT_TO_BINARY_OPTION_PRESERVE_NUMERIC_IDS);
|
|
||||||
+ SetTargetEnv(SPV_ENV_UNIVERSAL_1_4);
|
|
||||||
+ SinglePassRunAndMatch<CopyPropagateArrays>(before, false);
|
|
||||||
+}
|
|
||||||
} // namespace
|
|
||||||
} // namespace opt
|
|
||||||
} // namespace spvtools
|
|
||||||
--
|
|
||||||
2.37.2
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
libSPIRV-Tools-2022_3
|
libSPIRV-Tools-2022_4
|
||||||
spirv-tools-devel
|
spirv-tools-devel
|
||||||
requires -spirv-tools-<targettype>
|
requires -spirv-tools-<targettype>
|
||||||
requires "libSPIRV-Tools-2022_3-<targettype> = <version>"
|
requires "libSPIRV-Tools-2022_4-<targettype> = <version>"
|
||||||
|
30
gcc48.diff
30
gcc48.diff
@ -1,30 +0,0 @@
|
|||||||
From: Jan Engelhardt <jengelh@inai.de>
|
|
||||||
Date: 2017-02-02 19:42:44.679588946 +0100
|
|
||||||
|
|
||||||
build: workaround gcc 4.8 bug
|
|
||||||
|
|
||||||
tools/io.h:41:38:
|
|
||||||
error: ignoring return value of 'long int ftell(FILE*)',
|
|
||||||
declared with attribute warn_unused_result [-Werror=unused-result,-Werror]
|
|
||||||
if (sizeof(T) != 1 && (ftell(fp) % sizeof(T))) {
|
|
||||||
|
|
||||||
Workaround gcc 4.8's wrongful idea that ftell's return value
|
|
||||||
were ignored.
|
|
||||||
---
|
|
||||||
tools/io.h | 3 ++-
|
|
||||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
Index: SPIRV-Tools-2021.1/tools/io.h
|
|
||||||
===================================================================
|
|
||||||
--- SPIRV-Tools-2021.1.orig/tools/io.h
|
|
||||||
+++ SPIRV-Tools-2021.1/tools/io.h
|
|
||||||
@@ -60,7 +60,8 @@ bool WasFileCorrectlyRead(FILE* file, co
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
- if (sizeof(T) != 1 && (ftell(file) % sizeof(T))) {
|
|
||||||
+ long ftx = ftell(file);
|
|
||||||
+ if (sizeof(T) != 1 && ftx % sizeof(T) != 0) {
|
|
||||||
fprintf(
|
|
||||||
stderr,
|
|
||||||
"error: file size should be a multiple of %zd; file '%s' corrupt\n",
|
|
@ -1,3 +1,16 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Oct 24 19:46:06 UTC 2022 - Jan Engelhardt <jengelh@inai.de>
|
||||||
|
|
||||||
|
- Update to release 2022.4 (SDK-1.3.231.0)
|
||||||
|
* Add structs to eliminate dead input components
|
||||||
|
* spirv-val: Add SPV_KHR_ray_tracing storage class
|
||||||
|
* Improve algorithm to reorder blocks in a function
|
||||||
|
* spirv-val: Add initial SPV_EXT_mesh_shader validation
|
||||||
|
* spirv-val: Add SPV_ARM_core_builtins validation
|
||||||
|
* Support Narrow Types in BitCast Folding Rule
|
||||||
|
- Drop gcc48.diff, that compiler is long past its time.
|
||||||
|
- Drop 0001-Fix-array-copy-propagation-4890.patch (merged).
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Mon Aug 22 23:12:02 UTC 2022 - Jan Engelhardt <jengelh@inai.de>
|
Mon Aug 22 23:12:02 UTC 2022 - Jan Engelhardt <jengelh@inai.de>
|
||||||
|
|
||||||
|
@ -17,10 +17,10 @@
|
|||||||
|
|
||||||
|
|
||||||
%define _lto_cflags %nil
|
%define _lto_cflags %nil
|
||||||
%define lname libSPIRV-Tools-2022_3
|
%define lname libSPIRV-Tools-2022_4
|
||||||
|
|
||||||
Name: spirv-tools
|
Name: spirv-tools
|
||||||
Version: 2022.3
|
Version: 2022.4
|
||||||
Release: 0
|
Release: 0
|
||||||
Summary: API and commands for processing SPIR-V modules
|
Summary: API and commands for processing SPIR-V modules
|
||||||
License: Apache-2.0
|
License: Apache-2.0
|
||||||
@ -30,15 +30,13 @@ URL: https://github.com/KhronosGroup/SPIRV-Tools
|
|||||||
Source: https://github.com/KhronosGroup/SPIRV-Tools/archive/refs/tags/v%version.tar.gz
|
Source: https://github.com/KhronosGroup/SPIRV-Tools/archive/refs/tags/v%version.tar.gz
|
||||||
Source9: baselibs.conf
|
Source9: baselibs.conf
|
||||||
Patch1: ver.diff
|
Patch1: ver.diff
|
||||||
Patch2: gcc48.diff
|
|
||||||
Patch3: 0001-Fix-array-copy-propagation-4890.patch
|
|
||||||
BuildRequires: bison
|
BuildRequires: bison
|
||||||
BuildRequires: cmake >= 2.8.12
|
BuildRequires: cmake >= 2.8.12
|
||||||
BuildRequires: gcc-c++
|
BuildRequires: gcc-c++
|
||||||
BuildRequires: pkg-config
|
BuildRequires: pkg-config
|
||||||
BuildRequires: python3-base
|
BuildRequires: python3-base
|
||||||
BuildRequires: python3-xml
|
BuildRequires: python3-xml
|
||||||
BuildRequires: spirv-headers >= 1.6.1+sdk216
|
BuildRequires: spirv-headers >= 1.6.1+sdk231
|
||||||
|
|
||||||
%description
|
%description
|
||||||
The package includes an assembler, binary module parser,
|
The package includes an assembler, binary module parser,
|
||||||
@ -71,9 +69,6 @@ find . -type f -name CMakeLists.txt -exec \
|
|||||||
perl -i -pe 's{\@PACKAGE_VERSION\@}{%version}' CMakeLists.txt {} +
|
perl -i -pe 's{\@PACKAGE_VERSION\@}{%version}' CMakeLists.txt {} +
|
||||||
|
|
||||||
%build
|
%build
|
||||||
%if 0%{?suse_version} >= 1550
|
|
||||||
#export CXXFLAGS="%optflags -Wno-error=stringop-truncation"
|
|
||||||
%endif
|
|
||||||
%cmake -DSPIRV-Headers_SOURCE_DIR="%_prefix" \
|
%cmake -DSPIRV-Headers_SOURCE_DIR="%_prefix" \
|
||||||
-DSPIRV_TOOLS_BUILD_STATIC:BOOL=OFF -DBUILD_SHARED_LIBS:BOOL=ON
|
-DSPIRV_TOOLS_BUILD_STATIC:BOOL=OFF -DBUILD_SHARED_LIBS:BOOL=ON
|
||||||
%cmake_build
|
%cmake_build
|
||||||
|
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:df6dc5ed5351f99aaaa6acc78111342d3400b27b99f18148d3be408570144a70
|
|
||||||
size 3035130
|
|
3
v2022.4.tar.gz
Normal file
3
v2022.4.tar.gz
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:a156215a2d7c6c5b267933ed691877a9a66f07d75970da33ce9ad627a71389d7
|
||||||
|
size 3043339
|
Loading…
Reference in New Issue
Block a user