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
 }