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.