[Mesa-dev] [PATCH 1/5] nir/spirv: Complete the list of capabilities

Jason Ekstrand jason at jlekstrand.net
Thu Jun 2 21:39:16 UTC 2016


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 <jason at jlekstrand.net>
Cc: "12.0" <mesa-stable at lists.freedesktop.org>
---
 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 cece645..d51089f 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;
    }
-- 
2.5.0.400.gff86faf



More information about the mesa-dev mailing list