diff --git a/.gitignore b/.gitignore index f81fd54..031a38c 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/spirv-tools-1fbed83c8aab8517d821fcb4164c08567951938f.tar.gz +SOURCES/spirv-tools-21e3f681e2004590c7865bc8c0195a4ab8e66c88.tar.gz diff --git a/.spirv-tools.metadata b/.spirv-tools.metadata index 34d7abe..2fc929e 100644 --- a/.spirv-tools.metadata +++ b/.spirv-tools.metadata @@ -1 +1 @@ -bdb75c83663ab3dc120137ca8858fcdb41f1ed57 SOURCES/spirv-tools-1fbed83c8aab8517d821fcb4164c08567951938f.tar.gz +0ab8feda8d1e26ad379255c7d51ca38c28abfe6c SOURCES/spirv-tools-21e3f681e2004590c7865bc8c0195a4ab8e66c88.tar.gz diff --git a/SOURCES/0001-optimizer-restore-previous-ABI.patch b/SOURCES/0001-optimizer-restore-previous-ABI.patch new file mode 100644 index 0000000..41b9c17 --- /dev/null +++ b/SOURCES/0001-optimizer-restore-previous-ABI.patch @@ -0,0 +1,85 @@ +From 76e9ab018c24eaed0bc83c83cf72bc4542e5f1ad Mon Sep 17 00:00:00 2001 +From: Dave Airlie +Date: Mon, 6 Dec 2021 13:49:10 +1000 +Subject: [PATCH] optimizer: restore previous ABI. + +The change in +commit 4ac8e5e541ea992dc6f44a4d4eb065a8fe0888ec +Author: Greg Fischer +Date: Wed Sep 15 12:38:34 2021 -0600 + + Add preserve_interface mode to aggressive_dead_code_elim (#4520) + +Broke the C++ ABI for spirv-tools shared libraries on Linux, for not a great reason. + +Restore the previous ABI. +--- + include/spirv-tools/optimizer.hpp | 3 ++- + source/opt/optimizer.cpp | 17 +++++++++++------ + 2 files changed, 13 insertions(+), 7 deletions(-) + +diff --git a/include/spirv-tools/optimizer.hpp b/include/spirv-tools/optimizer.hpp +index 21059cbe..a0314b5f 100644 +--- a/include/spirv-tools/optimizer.hpp ++++ b/include/spirv-tools/optimizer.hpp +@@ -519,7 +519,8 @@ Optimizer::PassToken CreateDeadInsertElimPass(); + // interface are considered live and are not eliminated. This mode is needed + // by GPU-Assisted validation instrumentation, where a change in the interface + // is not allowed. +-Optimizer::PassToken CreateAggressiveDCEPass(bool preserve_interface = false); ++Optimizer::PassToken CreateAggressiveDCEPass(); ++Optimizer::PassToken CreateAggressiveDCEPassPreserveInterface(); + + // Creates a remove-unused-interface-variables pass. + // Removes variables referenced on the |OpEntryPoint| instruction that are not +diff --git a/source/opt/optimizer.cpp b/source/opt/optimizer.cpp +index e74db26f..d5534d08 100644 +--- a/source/opt/optimizer.cpp ++++ b/source/opt/optimizer.cpp +@@ -419,22 +419,22 @@ bool Optimizer::RegisterPassFromFlag(const std::string& flag) { + RegisterPass(CreateSimplificationPass()); + RegisterPass(CreateDeadBranchElimPass()); + RegisterPass(CreateBlockMergePass()); +- RegisterPass(CreateAggressiveDCEPass(true)); ++ RegisterPass(CreateAggressiveDCEPassPreserveInterface()); + } else if (pass_name == "inst-desc-idx-check") { + RegisterPass(CreateInstBindlessCheckPass(7, 23, true, true)); + RegisterPass(CreateSimplificationPass()); + RegisterPass(CreateDeadBranchElimPass()); + RegisterPass(CreateBlockMergePass()); +- RegisterPass(CreateAggressiveDCEPass(true)); ++ RegisterPass(CreateAggressiveDCEPassPreserveInterface()); + } else if (pass_name == "inst-buff-oob-check") { + RegisterPass(CreateInstBindlessCheckPass(7, 23, false, false, true, true)); + RegisterPass(CreateSimplificationPass()); + RegisterPass(CreateDeadBranchElimPass()); + RegisterPass(CreateBlockMergePass()); +- RegisterPass(CreateAggressiveDCEPass(true)); ++ RegisterPass(CreateAggressiveDCEPassPreserveInterface()); + } else if (pass_name == "inst-buff-addr-check") { + RegisterPass(CreateInstBuffAddrCheckPass(7, 23)); +- RegisterPass(CreateAggressiveDCEPass(true)); ++ RegisterPass(CreateAggressiveDCEPassPreserveInterface()); + } else if (pass_name == "convert-relaxed-to-half") { + RegisterPass(CreateConvertRelaxedToHalfPass()); + } else if (pass_name == "relax-float-ops") { +@@ -764,9 +764,14 @@ Optimizer::PassToken CreateLocalMultiStoreElimPass() { + MakeUnique()); + } + +-Optimizer::PassToken CreateAggressiveDCEPass(bool preserve_interface) { ++Optimizer::PassToken CreateAggressiveDCEPass() { + return MakeUnique( +- MakeUnique(preserve_interface)); ++ MakeUnique(false)); ++} ++ ++Optimizer::PassToken CreateAggressiveDCEPassPreserveInterface() { ++ return MakeUnique( ++ MakeUnique(true)); + } + + Optimizer::PassToken CreateRemoveUnusedInterfaceVariablesPass() { +-- +2.33.1 + diff --git a/SPECS/spirv-tools.spec b/SPECS/spirv-tools.spec index 5fd9f0b..39a5e51 100644 --- a/SPECS/spirv-tools.spec +++ b/SPECS/spirv-tools.spec @@ -1,17 +1,18 @@ -%global commit 1fbed83c8aab8517d821fcb4164c08567951938f +%global commit 21e3f681e2004590c7865bc8c0195a4ab8e66c88 %global shortcommit %(c=%{commit}; echo ${c:0:7}) -%global commit_date 20210825 +%global commit_date 20211110 %global gitrel .%{commit_date}.git%{shortcommit} Name: spirv-tools -Version: 2021.3 -Release: 1%{?gitrel}%{?dist} +Version: 2021.4 +Release: 2%{?gitrel}%{?dist} Summary: API and commands for processing SPIR-V modules License: ASL 2.0 URL: https://github.com/KhronosGroup/SPIRV-Tools Source0: %url/archive/%{commit}.tar.gz#/%{name}-%{commit}.tar.gz +Patch0: 0001-optimizer-restore-previous-ABI.patch BuildRequires: cmake BuildRequires: gcc-c++ BuildRequires: ninja-build @@ -90,6 +91,12 @@ popd %{_libdir}/pkgconfig/SPIRV-Tools.pc %changelog +* Thu Dec 09 2021 Dave Airlie - 2021.4-2.20211110.git21e3f68 +- Restore upstream ABI + +* Thu Nov 25 2021 Dave Airlie - 2021.4-1.20211110.git21e3f68 +- Update to 1.2.198.0 SDK Version + * Wed Sep 08 2021 Dave Airlie - 2021.3-1 - Update to 1.2.189.0 SDK version