Add support for OpExtension
Accept SPV_KHR_storage_buffer_storage_class, which is part of SPIRV 1.3.
Bug: b/130937460
Test: dEQP-VK.spirv_assembly.*
Change-Id: Ifbef9f3093ce7cca90edd75ebd86831f16b630cf
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/29508
Tested-by: Chris Forbes <chrisforbes@google.com>
Presubmit-Ready: Chris Forbes <chrisforbes@google.com>
Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
diff --git a/src/Pipeline/SpirvShader.cpp b/src/Pipeline/SpirvShader.cpp
index 51a419e..8312c71 100644
--- a/src/Pipeline/SpirvShader.cpp
+++ b/src/Pipeline/SpirvShader.cpp
@@ -703,6 +703,16 @@
// Don't need to do anything during analysis pass
break;
+ case spv::OpExtension:
+ {
+ auto p = reinterpret_cast<char const *>(insn.wordPointer(1));
+ // Part of core SPIR-V 1.3. Vulkan 1.1 implementations must also accept the pre-1.3
+ // extension per Appendix A, `Vulkan Environment for SPIR-V`.
+ if (!strcmp(p, "SPV_KHR_storage_buffer_storage_class")) break;
+ UNIMPLEMENTED("Unknown extension %s", p);
+ break;
+ }
+
default:
UNIMPLEMENTED("%s", OpcodeName(insn.opcode()).c_str());
}