aboutsummaryrefslogtreecommitdiff
path: root/graphics
diff options
context:
space:
mode:
authororbea <orbea@riseup.net>2020-12-28 15:37:52 -0800
committerWilly Sudiarto Raharjo <willysr@slackbuilds.org>2021-01-02 10:48:36 +0700
commit0fd6cac3253ab591b420eb04fe3fb47df4575f32 (patch)
treee9170c7cb1119103638a90f0704c834d3fc4fc6e /graphics
parentba241cdc6f3f4c33df3f9a15512fcc98779b553a (diff)
graphics/SPIRV-Tools: Updated for version 2020.6.
Signed-off-by: orbea <orbea@riseup.net> Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
Diffstat (limited to 'graphics')
-rw-r--r--graphics/SPIRV-Tools/SPIRV-Tools.SlackBuild12
-rw-r--r--graphics/SPIRV-Tools/SPIRV-Tools.info6
-rw-r--r--graphics/SPIRV-Tools/build-fix.patch373
-rw-r--r--graphics/SPIRV-Tools/build-shared.patch367
4 files changed, 4 insertions, 754 deletions
diff --git a/graphics/SPIRV-Tools/SPIRV-Tools.SlackBuild b/graphics/SPIRV-Tools/SPIRV-Tools.SlackBuild
index 81f0659b5e40b..cdde34904aac8 100644
--- a/graphics/SPIRV-Tools/SPIRV-Tools.SlackBuild
+++ b/graphics/SPIRV-Tools/SPIRV-Tools.SlackBuild
@@ -23,7 +23,7 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
PRGNAM=SPIRV-Tools
-VERSION=${VERSION:-2020.5}
+VERSION=${VERSION:-2020.6}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
@@ -69,16 +69,6 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-# Support SPV_KHR_fragment_shading_rate
-# https://github.com/KhronosGroup/SPIRV-Tools/commit/a1d38174b1f7d2651c718ae661886d606cb50a32
-# https://github.com/KhronosGroup/SPIRV-Tools/pull/3943
-patch -p1 < $CWD/build-fix.patch
-
-# CMake: Add SPIRV_TOOLS_BUILD_STATIC flag
-# https://github.com/KhronosGroup/SPIRV-Tools/commit/7403dfafd8a4b7216343dd9be891e540a5f30240
-# https://github.com/KhronosGroup/SPIRV-Tools/pull/3910
-patch -p1 < $CWD/build-shared.patch
-
mkdir -p build
cd build
cmake \
diff --git a/graphics/SPIRV-Tools/SPIRV-Tools.info b/graphics/SPIRV-Tools/SPIRV-Tools.info
index 4c0a93c902857..ab0b391ef3f2a 100644
--- a/graphics/SPIRV-Tools/SPIRV-Tools.info
+++ b/graphics/SPIRV-Tools/SPIRV-Tools.info
@@ -1,8 +1,8 @@
PRGNAM="SPIRV-Tools"
-VERSION="2020.5"
+VERSION="2020.6"
HOMEPAGE="https://github.com/KhronosGroup/SPIRV-Tools"
-DOWNLOAD="https://github.com/KhronosGroup/SPIRV-Tools/archive/v2020.5/SPIRV-Tools-2020.5.tar.gz"
-MD5SUM="294a6497fc918eb3bff1cb9693ce78cd"
+DOWNLOAD="https://github.com/KhronosGroup/SPIRV-Tools/archive/v2020.6/SPIRV-Tools-2020.6.tar.gz"
+MD5SUM="a5e7b94edc9f8ecc798c66a549bba181"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="SPIRV-Headers python3"
diff --git a/graphics/SPIRV-Tools/build-fix.patch b/graphics/SPIRV-Tools/build-fix.patch
deleted file mode 100644
index 4c6a4e4df717c..0000000000000
--- a/graphics/SPIRV-Tools/build-fix.patch
+++ /dev/null
@@ -1,373 +0,0 @@
-From a1d38174b1f7d2651c718ae661886d606cb50a32 Mon Sep 17 00:00:00 2001
-From: Tobski <TobyHector@hotmail.com>
-Date: Tue, 20 Oct 2020 13:00:13 +0100
-Subject: [PATCH] Support SPV_KHR_fragment_shading_rate (#3943)
-
----
- include/spirv-tools/libspirv.h | 13 +--
- source/operand.cpp | 3 +
- source/val/validate_builtins.cpp | 159 +++++++++++++++++++++++++++++++
- test/val/val_builtins_test.cpp | 104 ++++++++++++++++++++
- 4 files changed, 273 insertions(+), 6 deletions(-)
-
-diff --git a/include/spirv-tools/libspirv.h b/include/spirv-tools/libspirv.h
-index 16ea7ffac5..a0114c3f4b 100644
---- a/include/spirv-tools/libspirv.h
-+++ b/include/spirv-tools/libspirv.h
-@@ -176,12 +176,13 @@ typedef enum spv_operand_type_t {
-
- // Set 5: Operands that are a single word bitmask.
- // Sometimes a set bit indicates the instruction requires still more operands.
-- SPV_OPERAND_TYPE_IMAGE, // SPIR-V Sec 3.14
-- SPV_OPERAND_TYPE_FP_FAST_MATH_MODE, // SPIR-V Sec 3.15
-- SPV_OPERAND_TYPE_SELECTION_CONTROL, // SPIR-V Sec 3.22
-- SPV_OPERAND_TYPE_LOOP_CONTROL, // SPIR-V Sec 3.23
-- SPV_OPERAND_TYPE_FUNCTION_CONTROL, // SPIR-V Sec 3.24
-- SPV_OPERAND_TYPE_MEMORY_ACCESS, // SPIR-V Sec 3.26
-+ SPV_OPERAND_TYPE_IMAGE, // SPIR-V Sec 3.14
-+ SPV_OPERAND_TYPE_FP_FAST_MATH_MODE, // SPIR-V Sec 3.15
-+ SPV_OPERAND_TYPE_SELECTION_CONTROL, // SPIR-V Sec 3.22
-+ SPV_OPERAND_TYPE_LOOP_CONTROL, // SPIR-V Sec 3.23
-+ SPV_OPERAND_TYPE_FUNCTION_CONTROL, // SPIR-V Sec 3.24
-+ SPV_OPERAND_TYPE_MEMORY_ACCESS, // SPIR-V Sec 3.26
-+ SPV_OPERAND_TYPE_FRAGMENT_SHADING_RATE, // SPIR-V Sec 3.FSR
-
- // The remaining operand types are only used internally by the assembler.
- // There are two categories:
-diff --git a/source/operand.cpp b/source/operand.cpp
-index 7b2b98f2d1..d4b64a8b82 100644
---- a/source/operand.cpp
-+++ b/source/operand.cpp
-@@ -208,6 +208,8 @@ const char* spvOperandTypeStr(spv_operand_type_t type) {
- case SPV_OPERAND_TYPE_MEMORY_ACCESS:
- case SPV_OPERAND_TYPE_OPTIONAL_MEMORY_ACCESS:
- return "memory access";
-+ case SPV_OPERAND_TYPE_FRAGMENT_SHADING_RATE:
-+ return "shading rate";
- case SPV_OPERAND_TYPE_SCOPE_ID:
- return "scope ID";
- case SPV_OPERAND_TYPE_GROUP_OPERATION:
-@@ -360,6 +362,7 @@ bool spvOperandIsConcreteMask(spv_operand_type_t type) {
- case SPV_OPERAND_TYPE_LOOP_CONTROL:
- case SPV_OPERAND_TYPE_FUNCTION_CONTROL:
- case SPV_OPERAND_TYPE_MEMORY_ACCESS:
-+ case SPV_OPERAND_TYPE_FRAGMENT_SHADING_RATE:
- case SPV_OPERAND_TYPE_DEBUG_INFO_FLAGS:
- case SPV_OPERAND_TYPE_CLDEBUG100_DEBUG_INFO_FLAGS:
- return true;
-diff --git a/source/val/validate_builtins.cpp b/source/val/validate_builtins.cpp
-index 1d7017d118..5b9eed6407 100644
---- a/source/val/validate_builtins.cpp
-+++ b/source/val/validate_builtins.cpp
-@@ -1,4 +1,6 @@
- // Copyright (c) 2018 Google LLC.
-+// Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights
-+// reserved.
- //
- // Licensed under the Apache License, Version 2.0 (the "License");
- // you may not use this file except in compliance with the License.
-@@ -230,6 +232,12 @@ class BuiltInsValidator {
- spv_result_t ValidateComputeI32InputAtDefinition(const Decoration& decoration,
- const Instruction& inst);
-
-+ spv_result_t ValidatePrimitiveShadingRateAtDefinition(
-+ const Decoration& decoration, const Instruction& inst);
-+
-+ spv_result_t ValidateShadingRateAtDefinition(const Decoration& decoration,
-+ const Instruction& inst);
-+
- // The following section contains functions which are called when id defined
- // by |referenced_inst| is
- // 1. referenced by |referenced_from_inst|
-@@ -383,6 +391,16 @@ class BuiltInsValidator {
- const Instruction& referenced_inst,
- const Instruction& referenced_from_inst);
-
-+ spv_result_t ValidatePrimitiveShadingRateAtReference(
-+ const Decoration& decoration, const Instruction& built_in_inst,
-+ const Instruction& referenced_inst,
-+ const Instruction& referenced_from_inst);
-+
-+ spv_result_t ValidateShadingRateAtReference(
-+ const Decoration& decoration, const Instruction& built_in_inst,
-+ const Instruction& referenced_inst,
-+ const Instruction& referenced_from_inst);
-+
- // Validates that |built_in_inst| is not (even indirectly) referenced from
- // within a function which can be called with |execution_model|.
- //
-@@ -3314,6 +3332,142 @@ spv_result_t BuiltInsValidator::ValidateSMBuiltinsAtReference(
- return SPV_SUCCESS;
- }
-
-+spv_result_t BuiltInsValidator::ValidatePrimitiveShadingRateAtDefinition(
-+ const Decoration& decoration, const Instruction& inst) {
-+ if (spvIsVulkanEnv(_.context()->target_env)) {
-+ if (spv_result_t error = ValidateI32(
-+ decoration, inst,
-+ [this, &inst,
-+ &decoration](const std::string& message) -> spv_result_t {
-+ return _.diag(SPV_ERROR_INVALID_DATA, &inst)
-+ << _.VkErrorID(4486)
-+ << "According to the Vulkan spec BuiltIn "
-+ << _.grammar().lookupOperandName(SPV_OPERAND_TYPE_BUILT_IN,
-+ decoration.params()[0])
-+ << " variable needs to be a 32-bit int scalar. "
-+ << message;
-+ })) {
-+ return error;
-+ }
-+ }
-+
-+ // Seed at reference checks with this built-in.
-+ return ValidatePrimitiveShadingRateAtReference(decoration, inst, inst, inst);
-+}
-+
-+spv_result_t BuiltInsValidator::ValidatePrimitiveShadingRateAtReference(
-+ const Decoration& decoration, const Instruction& built_in_inst,
-+ const Instruction& referenced_inst,
-+ const Instruction& referenced_from_inst) {
-+ if (spvIsVulkanEnv(_.context()->target_env)) {
-+ const SpvStorageClass storage_class = GetStorageClass(referenced_from_inst);
-+ if (storage_class != SpvStorageClassMax &&
-+ storage_class != SpvStorageClassOutput) {
-+ return _.diag(SPV_ERROR_INVALID_DATA, &referenced_from_inst)
-+ << _.VkErrorID(4485) << "Vulkan spec allows BuiltIn "
-+ << _.grammar().lookupOperandName(SPV_OPERAND_TYPE_BUILT_IN,
-+ decoration.params()[0])
-+ << " to be only used for variables with Output storage class. "
-+ << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
-+ referenced_from_inst)
-+ << " " << GetStorageClassDesc(referenced_from_inst);
-+ }
-+
-+ for (const SpvExecutionModel execution_model : execution_models_) {
-+ switch (execution_model) {
-+ case SpvExecutionModelVertex:
-+ case SpvExecutionModelGeometry:
-+ case SpvExecutionModelMeshNV:
-+ break;
-+ default: {
-+ return _.diag(SPV_ERROR_INVALID_DATA, &referenced_from_inst)
-+ << _.VkErrorID(4484) << "Vulkan spec allows BuiltIn "
-+ << _.grammar().lookupOperandName(SPV_OPERAND_TYPE_BUILT_IN,
-+ decoration.params()[0])
-+ << " to be used only with Vertex, Geometry, or MeshNV "
-+ "execution models. "
-+ << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
-+ referenced_from_inst, execution_model);
-+ }
-+ }
-+ }
-+ }
-+
-+ if (function_id_ == 0) {
-+ // Propagate this rule to all dependant ids in the global scope.
-+ id_to_at_reference_checks_[referenced_from_inst.id()].push_back(
-+ std::bind(&BuiltInsValidator::ValidatePrimitiveShadingRateAtReference,
-+ this, decoration, built_in_inst, referenced_from_inst,
-+ std::placeholders::_1));
-+ }
-+
-+ return SPV_SUCCESS;
-+}
-+
-+spv_result_t BuiltInsValidator::ValidateShadingRateAtDefinition(
-+ const Decoration& decoration, const Instruction& inst) {
-+ if (spvIsVulkanEnv(_.context()->target_env)) {
-+ if (spv_result_t error = ValidateI32(
-+ decoration, inst,
-+ [this, &inst,
-+ &decoration](const std::string& message) -> spv_result_t {
-+ return _.diag(SPV_ERROR_INVALID_DATA, &inst)
-+ << _.VkErrorID(4492)
-+ << "According to the Vulkan spec BuiltIn "
-+ << _.grammar().lookupOperandName(SPV_OPERAND_TYPE_BUILT_IN,
-+ decoration.params()[0])
-+ << " variable needs to be a 32-bit int scalar. "
-+ << message;
-+ })) {
-+ return error;
-+ }
-+ }
-+
-+ // Seed at reference checks with this built-in.
-+ return ValidateShadingRateAtReference(decoration, inst, inst, inst);
-+}
-+
-+spv_result_t BuiltInsValidator::ValidateShadingRateAtReference(
-+ const Decoration& decoration, const Instruction& built_in_inst,
-+ const Instruction& referenced_inst,
-+ const Instruction& referenced_from_inst) {
-+ if (spvIsVulkanEnv(_.context()->target_env)) {
-+ const SpvStorageClass storage_class = GetStorageClass(referenced_from_inst);
-+ if (storage_class != SpvStorageClassMax &&
-+ storage_class != SpvStorageClassInput) {
-+ return _.diag(SPV_ERROR_INVALID_DATA, &referenced_from_inst)
-+ << _.VkErrorID(4491) << "Vulkan spec allows BuiltIn "
-+ << _.grammar().lookupOperandName(SPV_OPERAND_TYPE_BUILT_IN,
-+ decoration.params()[0])
-+ << " to be only used for variables with Input storage class. "
-+ << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
-+ referenced_from_inst)
-+ << " " << GetStorageClassDesc(referenced_from_inst);
-+ }
-+
-+ for (const SpvExecutionModel execution_model : execution_models_) {
-+ if (execution_model != SpvExecutionModelFragment) {
-+ return _.diag(SPV_ERROR_INVALID_DATA, &referenced_from_inst)
-+ << _.VkErrorID(4490) << "Vulkan spec allows BuiltIn "
-+ << _.grammar().lookupOperandName(SPV_OPERAND_TYPE_BUILT_IN,
-+ decoration.params()[0])
-+ << " to be used only with the Fragment execution model. "
-+ << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
-+ referenced_from_inst, execution_model);
-+ }
-+ }
-+ }
-+
-+ if (function_id_ == 0) {
-+ // Propagate this rule to all dependant ids in the global scope.
-+ id_to_at_reference_checks_[referenced_from_inst.id()].push_back(std::bind(
-+ &BuiltInsValidator::ValidateShadingRateAtReference, this, decoration,
-+ built_in_inst, referenced_from_inst, std::placeholders::_1));
-+ }
-+
-+ return SPV_SUCCESS;
-+}
-+
- spv_result_t BuiltInsValidator::ValidateSingleBuiltInAtDefinition(
- const Decoration& decoration, const Instruction& inst) {
- const SpvBuiltIn label = SpvBuiltIn(decoration.params()[0]);
-@@ -3514,6 +3668,11 @@ spv_result_t BuiltInsValidator::ValidateSingleBuiltInAtDefinition(
- case SpvBuiltInRayGeometryIndexKHR: {
- // No validation rules (for the moment).
- break;
-+
-+ case SpvBuiltInPrimitiveShadingRateKHR:
-+ return ValidatePrimitiveShadingRateAtDefinition(decoration, inst);
-+ case SpvBuiltInShadingRateKHR:
-+ return ValidateShadingRateAtDefinition(decoration, inst);
- }
- }
- return SPV_SUCCESS;
-diff --git a/test/val/val_builtins_test.cpp b/test/val/val_builtins_test.cpp
-index cc9bda67cf..4248caa9b1 100644
---- a/test/val/val_builtins_test.cpp
-+++ b/test/val/val_builtins_test.cpp
-@@ -1,4 +1,6 @@
- // Copyright (c) 2018 Google LLC.
-+// Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights
-+// reserved.
- //
- // Licensed under the Apache License, Version 2.0 (the "License");
- // you may not use this file except in compliance with the License.
-@@ -3723,6 +3725,108 @@ OpDecorate %int0 BuiltIn Position
- EXPECT_EQ(SPV_SUCCESS, ValidateInstructions());
- }
-
-+INSTANTIATE_TEST_SUITE_P(
-+ PrimitiveShadingRateOutputSuccess,
-+ ValidateVulkanCombineBuiltInExecutionModelDataTypeCapabilityExtensionResult,
-+ Combine(Values("PrimitiveShadingRateKHR"), Values("Vertex", "Geometry"),
-+ Values("Output"), Values("%u32"),
-+ Values("OpCapability FragmentShadingRateKHR\n"),
-+ Values("OpExtension \"SPV_KHR_fragment_shading_rate\"\n"),
-+ Values(nullptr), Values(TestResult())));
-+
-+INSTANTIATE_TEST_SUITE_P(
-+ PrimitiveShadingRateMeshOutputSuccess,
-+ ValidateVulkanCombineBuiltInExecutionModelDataTypeCapabilityExtensionResult,
-+ Combine(Values("PrimitiveShadingRateKHR"), Values("MeshNV"),
-+ Values("Output"), Values("%u32"),
-+ Values("OpCapability FragmentShadingRateKHR\nOpCapability "
-+ "MeshShadingNV\n"),
-+ Values("OpExtension \"SPV_KHR_fragment_shading_rate\"\nOpExtension "
-+ "\"SPV_NV_mesh_shader\"\n"),
-+ Values(nullptr), Values(TestResult())));
-+
-+INSTANTIATE_TEST_SUITE_P(
-+ PrimitiveShadingRateInvalidExecutionModel,
-+ ValidateVulkanCombineBuiltInExecutionModelDataTypeCapabilityExtensionResult,
-+ Combine(
-+ Values("PrimitiveShadingRateKHR"), Values("Fragment"), Values("Output"),
-+ Values("%u32"), Values("OpCapability FragmentShadingRateKHR\n"),
-+ Values("OpExtension \"SPV_KHR_fragment_shading_rate\"\n"),
-+ Values("VUID-PrimitiveShadingRateKHR-PrimitiveShadingRateKHR-04484 "),
-+ Values(TestResult(
-+ SPV_ERROR_INVALID_DATA,
-+ "Vulkan spec allows BuiltIn PrimitiveShadingRateKHR to be used "
-+ "only with Vertex, Geometry, or MeshNV execution models."))));
-+
-+INSTANTIATE_TEST_SUITE_P(
-+ PrimitiveShadingRateInvalidStorageClass,
-+ ValidateVulkanCombineBuiltInExecutionModelDataTypeCapabilityExtensionResult,
-+ Combine(
-+ Values("PrimitiveShadingRateKHR"), Values("Vertex"), Values("Input"),
-+ Values("%u32"), Values("OpCapability FragmentShadingRateKHR\n"),
-+ Values("OpExtension \"SPV_KHR_fragment_shading_rate\"\n"),
-+ Values("VUID-PrimitiveShadingRateKHR-PrimitiveShadingRateKHR-04485 "),
-+ Values(TestResult(
-+ SPV_ERROR_INVALID_DATA,
-+ "Vulkan spec allows BuiltIn PrimitiveShadingRateKHR to be only "
-+ "used for variables with Output storage class."))));
-+
-+INSTANTIATE_TEST_SUITE_P(
-+ PrimitiveShadingRateInvalidType,
-+ ValidateVulkanCombineBuiltInExecutionModelDataTypeCapabilityExtensionResult,
-+ Combine(
-+ Values("PrimitiveShadingRateKHR"), Values("Vertex"), Values("Output"),
-+ Values("%f32"), Values("OpCapability FragmentShadingRateKHR\n"),
-+ Values("OpExtension \"SPV_KHR_fragment_shading_rate\"\n"),
-+ Values("VUID-PrimitiveShadingRateKHR-PrimitiveShadingRateKHR-04485 "),
-+ Values(TestResult(
-+ SPV_ERROR_INVALID_DATA,
-+ "According to the Vulkan spec BuiltIn PrimitiveShadingRateKHR "
-+ "variable needs to be a 32-bit int scalar."))));
-+
-+INSTANTIATE_TEST_SUITE_P(
-+ ShadingRateInputSuccess,
-+ ValidateVulkanCombineBuiltInExecutionModelDataTypeCapabilityExtensionResult,
-+ Combine(Values("ShadingRateKHR"), Values("Fragment"), Values("Input"),
-+ Values("%u32"), Values("OpCapability FragmentShadingRateKHR\n"),
-+ Values("OpExtension \"SPV_KHR_fragment_shading_rate\"\n"),
-+ Values(nullptr), Values(TestResult())));
-+
-+INSTANTIATE_TEST_SUITE_P(
-+ ShadingRateInvalidExecutionModel,
-+ ValidateVulkanCombineBuiltInExecutionModelDataTypeCapabilityExtensionResult,
-+ Combine(Values("ShadingRateKHR"), Values("Vertex"), Values("Input"),
-+ Values("%u32"), Values("OpCapability FragmentShadingRateKHR\n"),
-+ Values("OpExtension \"SPV_KHR_fragment_shading_rate\"\n"),
-+ Values("VUID-ShadingRateKHR-ShadingRateKHR-04490 "),
-+ Values(TestResult(
-+ SPV_ERROR_INVALID_DATA,
-+ "Vulkan spec allows BuiltIn ShadingRateKHR to be used "
-+ "only with the Fragment execution model."))));
-+
-+INSTANTIATE_TEST_SUITE_P(
-+ ShadingRateInvalidStorageClass,
-+ ValidateVulkanCombineBuiltInExecutionModelDataTypeCapabilityExtensionResult,
-+ Combine(Values("ShadingRateKHR"), Values("Fragment"), Values("Output"),
-+ Values("%u32"), Values("OpCapability FragmentShadingRateKHR\n"),
-+ Values("OpExtension \"SPV_KHR_fragment_shading_rate\"\n"),
-+ Values("VUID-ShadingRateKHR-ShadingRateKHR-04491 "),
-+ Values(TestResult(
-+ SPV_ERROR_INVALID_DATA,
-+ "Vulkan spec allows BuiltIn ShadingRateKHR to be only "
-+ "used for variables with Input storage class."))));
-+
-+INSTANTIATE_TEST_SUITE_P(
-+ ShadingRateInvalidType,
-+ ValidateVulkanCombineBuiltInExecutionModelDataTypeCapabilityExtensionResult,
-+ Combine(
-+ Values("ShadingRateKHR"), Values("Fragment"), Values("Input"),
-+ Values("%f32"), Values("OpCapability FragmentShadingRateKHR\n"),
-+ Values("OpExtension \"SPV_KHR_fragment_shading_rate\"\n"),
-+ Values("VUID-ShadingRateKHR-ShadingRateKHR-04492 "),
-+ Values(TestResult(SPV_ERROR_INVALID_DATA,
-+ "According to the Vulkan spec BuiltIn ShadingRateKHR "
-+ "variable needs to be a 32-bit int scalar."))));
- } // namespace
- } // namespace val
- } // namespace spvtools
diff --git a/graphics/SPIRV-Tools/build-shared.patch b/graphics/SPIRV-Tools/build-shared.patch
deleted file mode 100644
index 0bee8ba4a39f0..0000000000000
--- a/graphics/SPIRV-Tools/build-shared.patch
+++ /dev/null
@@ -1,367 +0,0 @@
-From 7403dfafd8a4b7216343dd9be891e540a5f30240 Mon Sep 17 00:00:00 2001
-From: Ben Clayton <bclayton@google.com>
-Date: Thu, 29 Oct 2020 13:25:26 +0000
-Subject: [PATCH] CMake: Add SPIRV_TOOLS_BUILD_STATIC flag (#3910)
-
-If enabled the following targets will be created:
-
-* `${SPIRV_TOOLS}-static` - `STATIC` library. Has full public symbol visibility.
-* `${SPIRV_TOOLS}-shared` - `SHARED` library. Has default-hidden symbol visibility.
-* `${SPIRV_TOOLS}` - will alias to one of above, based on BUILD_SHARED_LIBS.
-
-If disabled the following targets will be created:
-
-* `${SPIRV_TOOLS}` - either `STATIC` or `SHARED` based on the new `SPIRV_TOOLS_LIBRARY_TYPE` flag. Has full public symbol visibility.
-* `${SPIRV_TOOLS}-shared` - `SHARED` library. Has default-hidden symbol visibility.
-
-Defaults to `ON`, matching existing build behavior.
-
-This flag can be used by package maintainers to ensure that all libraries are built as shared objects.
----
- CMakeLists.txt | 40 +++++++++++++++++++++
- source/CMakeLists.txt | 70 +++++++++++++++++++-----------------
- source/fuzz/CMakeLists.txt | 2 +-
- source/link/CMakeLists.txt | 2 +-
- source/opt/CMakeLists.txt | 4 +--
- source/reduce/CMakeLists.txt | 4 +--
- test/CMakeLists.txt | 6 ++--
- test/val/CMakeLists.txt | 10 +++---
- tools/CMakeLists.txt | 16 ++++-----
- 9 files changed, 100 insertions(+), 54 deletions(-)
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 30dde20a44..55f84e6d81 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -132,6 +132,46 @@ if (DEFINED SPIRV_TOOLS_EXTRA_DEFINITIONS)
- add_definitions(${SPIRV_TOOLS_EXTRA_DEFINITIONS})
- endif()
-
-+# Library build setting definitions:
-+#
-+# * SPIRV_TOOLS_BUILD_STATIC - ON or OFF - Defaults to ON.
-+# If enabled the following targets will be created:
-+# ${SPIRV_TOOLS}-static - STATIC library.
-+# Has full public symbol visibility.
-+# ${SPIRV_TOOLS}-shared - SHARED library.
-+# Has default-hidden symbol visibility.
-+# ${SPIRV_TOOLS} - will alias to one of above, based on BUILD_SHARED_LIBS.
-+# If disabled the following targets will be created:
-+# ${SPIRV_TOOLS} - either STATIC or SHARED based on SPIRV_TOOLS_LIBRARY_TYPE.
-+# Has full public symbol visibility.
-+# ${SPIRV_TOOLS}-shared - SHARED library.
-+# Has default-hidden symbol visibility.
-+#
-+# * SPIRV_TOOLS_LIBRARY_TYPE - SHARED or STATIC.
-+# Specifies the library type used for building SPIRV-Tools libraries.
-+# Defaults to SHARED when BUILD_SHARED_LIBS=1, otherwise STATIC.
-+#
-+# * SPIRV_TOOLS_FULL_VISIBILITY - "${SPIRV_TOOLS}-static" or "${SPIRV_TOOLS}"
-+# Evaluates to the SPIRV_TOOLS target library name that has no hidden symbols.
-+# This is used by internal targets for accessing symbols that are non-public.
-+# Note this target provides no API stability guarantees.
-+#
-+# Ideally, all of these will go away - see https://github.com/KhronosGroup/SPIRV-Tools/issues/3909.
-+option(SPIRV_TOOLS_BUILD_STATIC "Build ${SPIRV_TOOLS}-static target. ${SPIRV_TOOLS} will alias to ${SPIRV_TOOLS}-static or ${SPIRV_TOOLS}-shared based on BUILD_SHARED_LIBS" ON)
-+if(SPIRV_TOOLS_BUILD_STATIC)
-+ set(SPIRV_TOOLS_FULL_VISIBILITY ${SPIRV_TOOLS}-static)
-+ set(SPIRV_TOOLS_LIBRARY_TYPE "STATIC")
-+else(SPIRV_TOOLS_BUILD_STATIC)
-+ set(SPIRV_TOOLS_FULL_VISIBILITY ${SPIRV_TOOLS})
-+ if (NOT DEFINED SPIRV_TOOLS_LIBRARY_TYPE)
-+ if(BUILD_SHARED_LIBS)
-+ set(SPIRV_TOOLS_LIBRARY_TYPE "SHARED")
-+ else()
-+ set(SPIRV_TOOLS_LIBRARY_TYPE "STATIC")
-+ endif()
-+ endif()
-+endif(SPIRV_TOOLS_BUILD_STATIC)
-+
- function(spvtools_default_compile_options TARGET)
- target_compile_options(${TARGET} PRIVATE ${SPIRV_WARNINGS})
-
-diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt
-index fa900e03e1..65087f2c93 100644
---- a/source/CMakeLists.txt
-+++ b/source/CMakeLists.txt
-@@ -346,58 +346,64 @@ set_source_files_properties(
-
- spvtools_pch(SPIRV_SOURCES pch_source)
-
--add_library(${SPIRV_TOOLS}-static STATIC ${SPIRV_SOURCES})
--spvtools_default_compile_options(${SPIRV_TOOLS}-static)
--target_include_directories(${SPIRV_TOOLS}-static
-- PUBLIC
-- $<BUILD_INTERFACE:${spirv-tools_SOURCE_DIR}/include>
-- $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
-- PRIVATE ${spirv-tools_BINARY_DIR}
-- PRIVATE ${SPIRV_HEADER_INCLUDE_DIR}
-+# spirv_tools_default_target_options() sets the target options that are common
-+# for all ${SPIRV_TOOLS} targets.
-+function(spirv_tools_default_target_options target)
-+ spvtools_default_compile_options(${target})
-+ target_include_directories(${target}
-+ PUBLIC
-+ $<BUILD_INTERFACE:${spirv-tools_SOURCE_DIR}/include>
-+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
-+ PRIVATE ${spirv-tools_BINARY_DIR}
-+ PRIVATE ${SPIRV_HEADER_INCLUDE_DIR}
- )
--set_property(TARGET ${SPIRV_TOOLS}-static PROPERTY FOLDER "SPIRV-Tools libraries")
--spvtools_check_symbol_exports(${SPIRV_TOOLS}-static)
--add_dependencies(${SPIRV_TOOLS}-static core_tables enum_string_mapping extinst_tables)
--
--# The static target does not have the '-static' suffix.
--set_target_properties(${SPIRV_TOOLS}-static PROPERTIES OUTPUT_NAME "${SPIRV_TOOLS}")
-+ set_property(TARGET ${target} PROPERTY FOLDER "SPIRV-Tools libraries")
-+ spvtools_check_symbol_exports(${target})
-+ add_dependencies(${target} core_tables enum_string_mapping extinst_tables)
-+endfunction()
-
-+# Always build ${SPIRV_TOOLS}-shared. This is expected distro packages, and
-+# unlike the other SPIRV_TOOLS target, defaults to hidden symbol visibility.
- add_library(${SPIRV_TOOLS}-shared SHARED ${SPIRV_SOURCES})
--spvtools_default_compile_options(${SPIRV_TOOLS}-shared)
--target_include_directories(${SPIRV_TOOLS}-shared
-- PUBLIC
-- $<BUILD_INTERFACE:${spirv-tools_SOURCE_DIR}/include>
-- $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
-- PRIVATE ${spirv-tools_BINARY_DIR}
-- PRIVATE ${SPIRV_HEADER_INCLUDE_DIR}
-- )
-+spirv_tools_default_target_options(${SPIRV_TOOLS}-shared)
- set_target_properties(${SPIRV_TOOLS}-shared PROPERTIES CXX_VISIBILITY_PRESET hidden)
--set_property(TARGET ${SPIRV_TOOLS}-shared PROPERTY FOLDER "SPIRV-Tools libraries")
--spvtools_check_symbol_exports(${SPIRV_TOOLS}-shared)
- target_compile_definitions(${SPIRV_TOOLS}-shared
- PRIVATE SPIRV_TOOLS_IMPLEMENTATION
- PUBLIC SPIRV_TOOLS_SHAREDLIB
- )
--add_dependencies(${SPIRV_TOOLS}-shared core_tables enum_string_mapping extinst_tables)
-
--# Create the "${SPIRV_TOOLS}" target as an alias to either "${SPIRV_TOOLS}-static"
--# or "${SPIRV_TOOLS}-shared" depending on the value of BUILD_SHARED_LIBS.
--if(BUILD_SHARED_LIBS)
-+if(SPIRV_TOOLS_BUILD_STATIC)
-+ add_library(${SPIRV_TOOLS}-static STATIC ${SPIRV_SOURCES})
-+ spirv_tools_default_target_options(${SPIRV_TOOLS}-static)
-+ # The static target does not have the '-static' suffix.
-+ set_target_properties(${SPIRV_TOOLS}-static PROPERTIES OUTPUT_NAME "${SPIRV_TOOLS}")
-+
-+ # Create the "${SPIRV_TOOLS}" target as an alias to either "${SPIRV_TOOLS}-static"
-+ # or "${SPIRV_TOOLS}-shared" depending on the value of BUILD_SHARED_LIBS.
-+ if(BUILD_SHARED_LIBS)
- add_library(${SPIRV_TOOLS} ALIAS ${SPIRV_TOOLS}-shared)
--else()
-+ else()
- add_library(${SPIRV_TOOLS} ALIAS ${SPIRV_TOOLS}-static)
-+ endif()
-+
-+ set(SPIRV_TOOLS_TARGETS ${SPIRV_TOOLS}-static ${SPIRV_TOOLS}-shared)
-+else()
-+ add_library(${SPIRV_TOOLS} ${SPIRV_TOOLS_LIBRARY_TYPE} ${SPIRV_SOURCES})
-+ spirv_tools_default_target_options(${SPIRV_TOOLS})
-+ set(SPIRV_TOOLS_TARGETS ${SPIRV_TOOLS} ${SPIRV_TOOLS}-shared)
- endif()
-
- if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
- find_library(LIBRT rt)
- if(LIBRT)
-- target_link_libraries(${SPIRV_TOOLS}-static ${LIBRT})
-- target_link_libraries(${SPIRV_TOOLS}-shared ${LIBRT})
-+ foreach(target ${SPIRV_TOOLS_TARGETS})
-+ target_link_libraries(${target} ${LIBRT})
-+ endforeach()
- endif()
- endif()
-
- if(ENABLE_SPIRV_TOOLS_INSTALL)
-- install(TARGETS ${SPIRV_TOOLS}-static ${SPIRV_TOOLS}-shared EXPORT ${SPIRV_TOOLS}Targets
-+ install(TARGETS ${SPIRV_TOOLS_TARGETS} EXPORT ${SPIRV_TOOLS}Targets
- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
-diff --git a/source/fuzz/CMakeLists.txt b/source/fuzz/CMakeLists.txt
-index 63a6625177..d3aa9f1e03 100644
---- a/source/fuzz/CMakeLists.txt
-+++ b/source/fuzz/CMakeLists.txt
-@@ -447,7 +447,7 @@ if(SPIRV_BUILD_FUZZER)
-
- # The fuzzer reuses a lot of functionality from the SPIRV-Tools library.
- target_link_libraries(SPIRV-Tools-fuzz
-- PUBLIC ${SPIRV_TOOLS}-static
-+ PUBLIC ${SPIRV_TOOLS_FULL_VISIBILITY}
- PUBLIC SPIRV-Tools-opt
- PUBLIC SPIRV-Tools-reduce
- PUBLIC protobuf::libprotobuf)
-diff --git a/source/link/CMakeLists.txt b/source/link/CMakeLists.txt
-index bb058ea226..c8dd2f7153 100644
---- a/source/link/CMakeLists.txt
-+++ b/source/link/CMakeLists.txt
-@@ -11,7 +11,7 @@
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
--add_library(SPIRV-Tools-link STATIC
-+add_library(SPIRV-Tools-link ${SPIRV_TOOLS_LIBRARY_TYPE}
- linker.cpp
- )
-
-diff --git a/source/opt/CMakeLists.txt b/source/opt/CMakeLists.txt
-index 3630a06051..fa74690882 100644
---- a/source/opt/CMakeLists.txt
-+++ b/source/opt/CMakeLists.txt
-@@ -233,7 +233,7 @@ endif()
-
- spvtools_pch(SPIRV_TOOLS_OPT_SOURCES pch_source_opt)
-
--add_library(SPIRV-Tools-opt STATIC ${SPIRV_TOOLS_OPT_SOURCES})
-+add_library(SPIRV-Tools-opt ${SPIRV_TOOLS_LIBRARY_TYPE} ${SPIRV_TOOLS_OPT_SOURCES})
-
- spvtools_default_compile_options(SPIRV-Tools-opt)
- target_include_directories(SPIRV-Tools-opt
-@@ -245,7 +245,7 @@ target_include_directories(SPIRV-Tools-opt
- )
- # We need the assembling and disassembling functionalities in the main library.
- target_link_libraries(SPIRV-Tools-opt
-- PUBLIC ${SPIRV_TOOLS}-static)
-+ PUBLIC ${SPIRV_TOOLS_FULL_VISIBILITY})
-
- set_property(TARGET SPIRV-Tools-opt PROPERTY FOLDER "SPIRV-Tools libraries")
- spvtools_check_symbol_exports(SPIRV-Tools-opt)
-diff --git a/source/reduce/CMakeLists.txt b/source/reduce/CMakeLists.txt
-index e113ca2554..a3291c77b2 100644
---- a/source/reduce/CMakeLists.txt
-+++ b/source/reduce/CMakeLists.txt
-@@ -78,7 +78,7 @@ endif()
-
- spvtools_pch(SPIRV_TOOLS_REDUCE_SOURCES pch_source_reduce)
-
--add_library(SPIRV-Tools-reduce STATIC ${SPIRV_TOOLS_REDUCE_SOURCES})
-+add_library(SPIRV-Tools-reduce ${SPIRV_TOOLS_LIBRARY_TYPE} ${SPIRV_TOOLS_REDUCE_SOURCES})
-
- spvtools_default_compile_options(SPIRV-Tools-reduce)
- target_include_directories(SPIRV-Tools-reduce
-@@ -90,7 +90,7 @@ target_include_directories(SPIRV-Tools-reduce
- )
- # The reducer reuses a lot of functionality from the SPIRV-Tools library.
- target_link_libraries(SPIRV-Tools-reduce
-- PUBLIC ${SPIRV_TOOLS}-static
-+ PUBLIC ${SPIRV_TOOLS_FULL_VISIBILITY}
- PUBLIC SPIRV-Tools-opt)
-
- set_property(TARGET SPIRV-Tools-reduce PROPERTY FOLDER "SPIRV-Tools libraries")
-diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
-index 5dd4036c2a..8ede58bfa6 100644
---- a/test/CMakeLists.txt
-+++ b/test/CMakeLists.txt
-@@ -159,12 +159,12 @@ spvtools_pch(TEST_SOURCES pch_test)
- add_spvtools_unittest(
- TARGET spirv_unit_tests
- SRCS ${TEST_SOURCES}
-- LIBS ${SPIRV_TOOLS}-static)
-+ LIBS ${SPIRV_TOOLS_FULL_VISIBILITY})
-
- add_spvtools_unittest(
- TARGET c_interface
- SRCS c_interface_test.cpp
-- LIBS ${SPIRV_TOOLS}-static)
-+ LIBS ${SPIRV_TOOLS_FULL_VISIBILITY})
-
- add_spvtools_unittest(
- TARGET c_interface_shared
-@@ -181,7 +181,7 @@ if (${SPIRV_TIMER_ENABLED})
- add_spvtools_unittest(
- TARGET timer
- SRCS timer_test.cpp
-- LIBS ${SPIRV_TOOLS}-static)
-+ LIBS ${SPIRV_TOOLS_FULL_VISIBILITY})
- endif()
-
-
-diff --git a/test/val/CMakeLists.txt b/test/val/CMakeLists.txt
-index c458a2f93a..153a91670c 100644
---- a/test/val/CMakeLists.txt
-+++ b/test/val/CMakeLists.txt
-@@ -41,21 +41,21 @@ add_spvtools_unittest(TARGET val_abcde
- val_extension_spv_khr_terminate_invocation.cpp
- val_ext_inst_test.cpp
- ${VAL_TEST_COMMON_SRCS}
-- LIBS ${SPIRV_TOOLS}-static
-+ LIBS ${SPIRV_TOOLS_FULL_VISIBILITY}
- PCH_FILE pch_test_val
- )
-
- add_spvtools_unittest(TARGET val_capability
- SRCS
- val_capability_test.cpp
-- LIBS ${SPIRV_TOOLS}-static
-+ LIBS ${SPIRV_TOOLS_FULL_VISIBILITY}
- PCH_FILE pch_test_val
- )
-
- add_spvtools_unittest(TARGET val_limits
- SRCS val_limits_test.cpp
- ${VAL_TEST_COMMON_SRCS}
-- LIBS ${SPIRV_TOOLS}-static
-+ LIBS ${SPIRV_TOOLS_FULL_VISIBILITY}
- PCH_FILE pch_test_val
- )
-
-@@ -76,7 +76,7 @@ add_spvtools_unittest(TARGET val_fghijklmnop
- val_opencl_test.cpp
- val_primitives_test.cpp
- ${VAL_TEST_COMMON_SRCS}
-- LIBS ${SPIRV_TOOLS}-static
-+ LIBS ${SPIRV_TOOLS_FULL_VISIBILITY}
- PCH_FILE pch_test_val
- )
-
-@@ -91,6 +91,6 @@ add_spvtools_unittest(TARGET val_stuvw
- val_version_test.cpp
- val_webgpu_test.cpp
- ${VAL_TEST_COMMON_SRCS}
-- LIBS ${SPIRV_TOOLS}-static
-+ LIBS ${SPIRV_TOOLS_FULL_VISIBILITY}
- PCH_FILE pch_test_val
- )
-diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt
-index 67d606a849..124a33281a 100644
---- a/tools/CMakeLists.txt
-+++ b/tools/CMakeLists.txt
-@@ -40,19 +40,19 @@ function(add_spvtools_tool)
- endfunction()
-
- if (NOT ${SPIRV_SKIP_EXECUTABLES})
-- add_spvtools_tool(TARGET spirv-as SRCS as/as.cpp LIBS ${SPIRV_TOOLS}-static)
-- add_spvtools_tool(TARGET spirv-dis SRCS dis/dis.cpp LIBS ${SPIRV_TOOLS}-static)
-- add_spvtools_tool(TARGET spirv-val SRCS val/val.cpp util/cli_consumer.cpp LIBS ${SPIRV_TOOLS}-static)
-- add_spvtools_tool(TARGET spirv-opt SRCS opt/opt.cpp util/cli_consumer.cpp LIBS SPIRV-Tools-opt ${SPIRV_TOOLS}-static)
-+ add_spvtools_tool(TARGET spirv-as SRCS as/as.cpp LIBS ${SPIRV_TOOLS_FULL_VISIBILITY})
-+ add_spvtools_tool(TARGET spirv-dis SRCS dis/dis.cpp LIBS ${SPIRV_TOOLS_FULL_VISIBILITY})
-+ add_spvtools_tool(TARGET spirv-val SRCS val/val.cpp util/cli_consumer.cpp LIBS ${SPIRV_TOOLS_FULL_VISIBILITY})
-+ add_spvtools_tool(TARGET spirv-opt SRCS opt/opt.cpp util/cli_consumer.cpp LIBS SPIRV-Tools-opt ${SPIRV_TOOLS_FULL_VISIBILITY})
- if (NOT DEFINED IOS_PLATFORM) # iOS does not allow std::system calls which spirv-reduce requires
-- add_spvtools_tool(TARGET spirv-reduce SRCS reduce/reduce.cpp util/cli_consumer.cpp LIBS SPIRV-Tools-reduce ${SPIRV_TOOLS}-static)
-+ add_spvtools_tool(TARGET spirv-reduce SRCS reduce/reduce.cpp util/cli_consumer.cpp LIBS SPIRV-Tools-reduce ${SPIRV_TOOLS_FULL_VISIBILITY})
- endif()
-- add_spvtools_tool(TARGET spirv-link SRCS link/linker.cpp LIBS SPIRV-Tools-link ${SPIRV_TOOLS}-static)
-+ add_spvtools_tool(TARGET spirv-link SRCS link/linker.cpp LIBS SPIRV-Tools-link ${SPIRV_TOOLS_FULL_VISIBILITY})
- add_spvtools_tool(TARGET spirv-cfg
- SRCS cfg/cfg.cpp
- cfg/bin_to_dot.h
- cfg/bin_to_dot.cpp
-- LIBS ${SPIRV_TOOLS}-static)
-+ LIBS ${SPIRV_TOOLS_FULL_VISIBILITY})
- target_include_directories(spirv-cfg PRIVATE ${spirv-tools_SOURCE_DIR}
- ${SPIRV_HEADER_INCLUDE_DIR})
- set(SPIRV_INSTALL_TARGETS spirv-as spirv-dis spirv-val spirv-opt
-@@ -62,7 +62,7 @@ if (NOT ${SPIRV_SKIP_EXECUTABLES})
- endif()
-
- if(SPIRV_BUILD_FUZZER)
-- add_spvtools_tool(TARGET spirv-fuzz SRCS fuzz/fuzz.cpp util/cli_consumer.cpp LIBS SPIRV-Tools-fuzz ${SPIRV_TOOLS}-static)
-+ add_spvtools_tool(TARGET spirv-fuzz SRCS fuzz/fuzz.cpp util/cli_consumer.cpp LIBS SPIRV-Tools-fuzz ${SPIRV_TOOLS_FULL_VISIBILITY})
- set(SPIRV_INSTALL_TARGETS ${SPIRV_INSTALL_TARGETS} spirv-fuzz)
- endif(SPIRV_BUILD_FUZZER)
-