Whitelist supported capabilities
Helps drive out the test bugs we're running into.
Bug: b/132879304
Test: dEQP-VK.renderpass.suballocation.*
Change-Id: I33e168a9bdc2385beff9f5d42e44f8632934febe
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/31568
Tested-by: Chris Forbes <chrisforbes@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
diff --git a/src/Pipeline/SpirvShader.cpp b/src/Pipeline/SpirvShader.cpp
index 8552f46..9f003f7 100644
--- a/src/Pipeline/SpirvShader.cpp
+++ b/src/Pipeline/SpirvShader.cpp
@@ -666,7 +666,30 @@
break;
case spv::OpCapability:
+ {
+ auto capability = static_cast<spv::Capability>(insn.word(1));
+ switch (capability)
+ {
+ case spv::CapabilityMatrix:
+ case spv::CapabilityShader:
+ case spv::CapabilityInputAttachment:
+ case spv::CapabilitySampled1D:
+ case spv::CapabilityImage1D:
+ case spv::CapabilitySampledBuffer:
+ case spv::CapabilityImageBuffer:
+ case spv::CapabilityImageQuery:
+ case spv::CapabilityDerivativeControl:
+ case spv::CapabilityMultiView:
+ case spv::CapabilityDeviceGroup:
+ case spv::CapabilityGroupNonUniform:
+ break;
+
+ default:
+ UNSUPPORTED("Unsupported capability %u", insn.word(1));
+ }
break; // Various capabilities will be declared, but none affect our code generation at this point.
+ }
+
case spv::OpMemoryModel:
break; // Memory model does not affect our code generation until we decide to do Vulkan Memory Model support.