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());
 			}