Track SPIR-V version in VkConfig.hpp Multiple places in the codebase use SPV_VERSION_1_1, which makes updating the SPIR-V version a nuissance. Now only VkConfig.hpp tracks that information. Bug: b/172837769 Change-Id: I9ba09b431e48e2205cf0d8b428417b72a3f514cb Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/50128 Reviewed-by: Alexis Hétu <sugoi@google.com> Kokoro-Result: kokoro <noreply+kokoro@google.com> Tested-by: Sean Risser <srisser@google.com>
diff --git a/src/Pipeline/SpirvShader.cpp b/src/Pipeline/SpirvShader.cpp index 37c7bd5..a529f74 100644 --- a/src/Pipeline/SpirvShader.cpp +++ b/src/Pipeline/SpirvShader.cpp
@@ -1632,7 +1632,7 @@ #if SPIRV_SHADER_ENABLE_DBG { auto text = spvtools::spvInstructionBinaryToText( - SPV_ENV_VULKAN_1_1, + vk::SPIRV_VERSION, insn.wordPointer(0), insn.wordCount(), insns.data(),
diff --git a/src/Pipeline/SpirvShaderDebugger.cpp b/src/Pipeline/SpirvShaderDebugger.cpp index aa20743..de29a07 100644 --- a/src/Pipeline/SpirvShaderDebugger.cpp +++ b/src/Pipeline/SpirvShaderDebugger.cpp
@@ -2549,7 +2549,7 @@ for(auto insn : *this) { auto instruction = spvtools::spvInstructionBinaryToText( - SPV_ENV_VULKAN_1_1, + vk::SPIRV_VERSION, insn.wordPointer(0), insn.wordCount(), insns.data(), @@ -2648,7 +2648,7 @@ # if PRINT_EACH_EMITTED_INSTRUCTION { auto instruction = spvtools::spvInstructionBinaryToText( - SPV_ENV_VULKAN_1_1, + vk::SPIRV_VERSION, insn.wordPointer(0), insn.wordCount(), insns.data(), @@ -2661,7 +2661,7 @@ # if PRINT_EACH_EXECUTED_INSTRUCTION { auto instruction = spvtools::spvInstructionBinaryToText( - SPV_ENV_VULKAN_1_1, + vk::SPIRV_VERSION, insn.wordPointer(0), insn.wordCount(), insns.data(), @@ -2757,7 +2757,7 @@ # if PRINT_EACH_DEFINED_DBG_INSTRUCTION { auto instruction = spvtools::spvInstructionBinaryToText( - SPV_ENV_VULKAN_1_1, + vk::SPIRV_VERSION, insn.wordPointer(0), insn.wordCount(), insns.data(),
diff --git a/src/Vulkan/VkConfig.hpp b/src/Vulkan/VkConfig.hpp index 37708fc..ecb2132 100644 --- a/src/Vulkan/VkConfig.hpp +++ b/src/Vulkan/VkConfig.hpp
@@ -18,6 +18,7 @@ #include "Version.hpp" #include "Vulkan/VulkanPlatform.hpp" +#include "spirv-tools/libspirv.h" namespace vk { @@ -26,6 +27,8 @@ #define SWIFTSHADER_DEVICE_NAME "SwiftShader Device" // Max length: VK_MAX_PHYSICAL_DEVICE_NAME_SIZE #define SWIFTSHADER_UUID "SwiftShaderUUID" // Max length: VK_UUID_SIZE (16) +const spv_target_env SPIRV_VERSION = SPV_ENV_VULKAN_1_1; + enum { API_VERSION = VK_API_VERSION_1_1,
diff --git a/src/Vulkan/VkPipeline.cpp b/src/Vulkan/VkPipeline.cpp index 86913ec..31c8b09 100644 --- a/src/Vulkan/VkPipeline.cpp +++ b/src/Vulkan/VkPipeline.cpp
@@ -38,7 +38,7 @@ VkSpecializationInfo const *specializationInfo, bool optimize) { - spvtools::Optimizer opt{ SPV_ENV_VULKAN_1_1 }; + spvtools::Optimizer opt{ vk::SPIRV_VERSION }; opt.SetMessageConsumer([](spv_message_level_t level, const char *source, const spv_position_t &position, const char *message) { switch(level) @@ -79,7 +79,7 @@ if(false) { - spvtools::SpirvTools core(SPV_ENV_VULKAN_1_1); + spvtools::SpirvTools core(vk::SPIRV_VERSION); std::string preOpt; core.Disassemble(code, &preOpt, SPV_BINARY_TO_TEXT_OPTION_NONE); std::string postOpt;
diff --git a/src/Vulkan/VkShaderModule.cpp b/src/Vulkan/VkShaderModule.cpp index 55c091d..4f94af9 100644 --- a/src/Vulkan/VkShaderModule.cpp +++ b/src/Vulkan/VkShaderModule.cpp
@@ -30,7 +30,7 @@ wordCount = static_cast<uint32_t>(pCreateInfo->codeSize / sizeof(uint32_t)); #if !defined(NDEBUG) || defined(DCHECK_ALWAYS_ON) - spvtools::SpirvTools spirvTools(SPV_ENV_VULKAN_1_1); + spvtools::SpirvTools spirvTools(SPIRV_VERSION); ASSERT(spirvTools.Validate(getCode())); // The SPIR-V code passed to vkCreateShaderModule must be valid (b/158228522) #endif }