From 5a1e56f344c0007f877ada78721c33d4fe61419a Mon Sep 17 00:00:00 2001 From: Jason Ekstrand Date: Thu, 2 Jun 2016 13:43:19 -0700 Subject: nir/spirv: Complete the list of capabilities Previously we supported a subset of capabilities and just left a default case for the others. It's time to stop being lazy and actually audit the capabilities. This should bring them up-to-date with reality. Signed-off-by: Jason Ekstrand Cc: "12.0" --- src/compiler/spirv/spirv_to_nir.c | 48 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 45 insertions(+), 3 deletions(-) diff --git a/src/compiler/spirv/spirv_to_nir.c b/src/compiler/spirv/spirv_to_nir.c index cece645c6b..d51089f3c8 100644 --- a/src/compiler/spirv/spirv_to_nir.c +++ b/src/compiler/spirv/spirv_to_nir.c @@ -2266,7 +2266,6 @@ vtn_handle_preamble_instruction(struct vtn_builder *b, SpvOp opcode, case SpvCapabilityMatrix: case SpvCapabilityShader: case SpvCapabilityGeometry: - case SpvCapabilityTessellationPointSize: case SpvCapabilityGeometryPointSize: case SpvCapabilityUniformBufferArrayDynamicIndexing: case SpvCapabilitySampledImageArrayDynamicIndexing: @@ -2280,14 +2279,57 @@ vtn_handle_preamble_instruction(struct vtn_builder *b, SpvOp opcode, case SpvCapabilitySampledBuffer: case SpvCapabilityImageBuffer: case SpvCapabilityImageQuery: + case SpvCapabilityDerivativeControl: + case SpvCapabilityInterpolationFunction: + case SpvCapabilityMultiViewport: break; case SpvCapabilityClipDistance: case SpvCapabilityCullDistance: case SpvCapabilityGeometryStreams: + /* glslang sometimes throws these at us even though it doesn't + * actually use the associated variable. + */ fprintf(stderr, "WARNING: Unsupported SPIR-V Capability\n"); break; - default: - assert(!"Unsupported capability"); + case SpvCapabilityTessellation: + case SpvCapabilityTessellationPointSize: + case SpvCapabilityLinkage: + case SpvCapabilityVector16: + case SpvCapabilityFloat16Buffer: + case SpvCapabilityFloat16: + case SpvCapabilityFloat64: + case SpvCapabilityInt64: + case SpvCapabilityInt64Atomics: + case SpvCapabilityAtomicStorage: + case SpvCapabilityInt16: + case SpvCapabilityImageGatherExtended: + case SpvCapabilityStorageImageMultisample: + case SpvCapabilityImageCubeArray: + case SpvCapabilitySampleRateShading: + case SpvCapabilityInt8: + case SpvCapabilityInputAttachment: + case SpvCapabilitySparseResidency: + case SpvCapabilityMinLod: + case SpvCapabilityImageMSArray: + case SpvCapabilityStorageImageExtendedFormats: + case SpvCapabilityTransformFeedback: + case SpvCapabilityStorageImageReadWithoutFormat: + case SpvCapabilityStorageImageWriteWithoutFormat: + unreachable("Unsupported SPIR-V Capability"); + break; + + case SpvCapabilityAddresses: + case SpvCapabilityKernel: + case SpvCapabilityImageBasic: + case SpvCapabilityImageReadWrite: + case SpvCapabilityImageMipmap: + case SpvCapabilityPipes: + case SpvCapabilityGroups: + case SpvCapabilityDeviceEnqueue: + case SpvCapabilityLiteralSampler: + case SpvCapabilityGenericPointer: + unreachable("Unsupported OpenCL-style Capability"); + break; } break; } -- cgit v1.2.3