[Mesa-dev] [PATCH 2/2] spirv: bump headers to SPIRV 1.1

Lionel Landwerlin lionel.g.landwerlin at intel.com
Wed Jan 25 12:39:18 UTC 2017


Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
---
 src/compiler/spirv/GLSL.std.450.h  | 12 ++++--
 src/compiler/spirv/spirv.h         | 77 +++++++++++++++++++++++++++++++++++---
 src/compiler/spirv/spirv_info.c    |  6 +++
 src/compiler/spirv/spirv_to_nir.c  | 12 ++++++
 src/compiler/spirv/vtn_variables.c |  3 ++
 5 files changed, 101 insertions(+), 9 deletions(-)

diff --git a/src/compiler/spirv/GLSL.std.450.h b/src/compiler/spirv/GLSL.std.450.h
index d1c9b5c1d4..54cc00e9a8 100644
--- a/src/compiler/spirv/GLSL.std.450.h
+++ b/src/compiler/spirv/GLSL.std.450.h
@@ -1,5 +1,5 @@
 /*
-** Copyright (c) 2014-2015 The Khronos Group Inc.
+** Copyright (c) 2014-2016 The Khronos Group Inc.
 **
 ** Permission is hereby granted, free of charge, to any person obtaining a copy
 ** of this software and/or associated documentation files (the "Materials"),
@@ -27,8 +27,8 @@
 #ifndef GLSLstd450_H
 #define GLSLstd450_H
 
-const int GLSLstd450Version = 99;
-const int GLSLstd450Revision = 3;
+static const int GLSLstd450Version = 100;
+static const int GLSLstd450Revision = 3;
 
 enum GLSLstd450 {
     GLSLstd450Bad = 0,              // Don't use
@@ -83,7 +83,7 @@ enum GLSLstd450 {
     GLSLstd450UClamp = 44,
     GLSLstd450SClamp = 45,
     GLSLstd450FMix = 46,
-    GLSLstd450IMix = 47,
+    GLSLstd450IMix = 47,            // Reserved
     GLSLstd450Step = 48,
     GLSLstd450SmoothStep = 49,
 
@@ -121,6 +121,10 @@ enum GLSLstd450 {
     GLSLstd450InterpolateAtSample = 77,
     GLSLstd450InterpolateAtOffset = 78,
 
+    GLSLstd450NMin = 79,
+    GLSLstd450NMax = 80,
+    GLSLstd450NClamp = 81,
+
     GLSLstd450Count
 };
 
diff --git a/src/compiler/spirv/spirv.h b/src/compiler/spirv/spirv.h
index 63bcb2f88d..769c10225d 100644
--- a/src/compiler/spirv/spirv.h
+++ b/src/compiler/spirv/spirv.h
@@ -1,5 +1,5 @@
 /*
-** Copyright (c) 2014-2015 The Khronos Group Inc.
+** Copyright (c) 2014-2016 The Khronos Group Inc.
 ** 
 ** Permission is hereby granted, free of charge, to any person obtaining a copy
 ** of this software and/or associated documentation files (the "Materials"),
@@ -50,12 +50,12 @@
 
 typedef unsigned int SpvId;
 
-#define SPV_VERSION 0x10000
-#define SPV_REVISION 2
+#define SPV_VERSION 0x10100
+#define SPV_REVISION 4
 
 static const unsigned int SpvMagicNumber = 0x07230203;
-static const unsigned int SpvVersion = 0x00010000;
-static const unsigned int SpvRevision = 2;
+static const unsigned int SpvVersion = 0x00010100;
+static const unsigned int SpvRevision = 4;
 static const unsigned int SpvOpCodeMask = 0xffff;
 static const unsigned int SpvWordCountShift = 16;
 
@@ -65,6 +65,7 @@ typedef enum SpvSourceLanguage_ {
     SpvSourceLanguageGLSL = 2,
     SpvSourceLanguageOpenCL_C = 3,
     SpvSourceLanguageOpenCL_CPP = 4,
+    SpvSourceLanguageMax = 0x7fffffff,
 } SpvSourceLanguage;
 
 typedef enum SpvExecutionModel_ {
@@ -75,18 +76,21 @@ typedef enum SpvExecutionModel_ {
     SpvExecutionModelFragment = 4,
     SpvExecutionModelGLCompute = 5,
     SpvExecutionModelKernel = 6,
+    SpvExecutionModelMax = 0x7fffffff,
 } SpvExecutionModel;
 
 typedef enum SpvAddressingModel_ {
     SpvAddressingModelLogical = 0,
     SpvAddressingModelPhysical32 = 1,
     SpvAddressingModelPhysical64 = 2,
+    SpvAddressingModelMax = 0x7fffffff,
 } SpvAddressingModel;
 
 typedef enum SpvMemoryModel_ {
     SpvMemoryModelSimple = 0,
     SpvMemoryModelGLSL450 = 1,
     SpvMemoryModelOpenCL = 2,
+    SpvMemoryModelMax = 0x7fffffff,
 } SpvMemoryModel;
 
 typedef enum SpvExecutionMode_ {
@@ -121,6 +125,11 @@ typedef enum SpvExecutionMode_ {
     SpvExecutionModeOutputTriangleStrip = 29,
     SpvExecutionModeVecTypeHint = 30,
     SpvExecutionModeContractionOff = 31,
+    SpvExecutionModeInitializer = 33,
+    SpvExecutionModeFinalizer = 34,
+    SpvExecutionModeSubgroupSize = 35,
+    SpvExecutionModeSubgroupsPerWorkgroup = 36,
+    SpvExecutionModeMax = 0x7fffffff,
 } SpvExecutionMode;
 
 typedef enum SpvStorageClass_ {
@@ -136,6 +145,7 @@ typedef enum SpvStorageClass_ {
     SpvStorageClassPushConstant = 9,
     SpvStorageClassAtomicCounter = 10,
     SpvStorageClassImage = 11,
+    SpvStorageClassMax = 0x7fffffff,
 } SpvStorageClass;
 
 typedef enum SpvDim_ {
@@ -146,6 +156,7 @@ typedef enum SpvDim_ {
     SpvDimRect = 4,
     SpvDimBuffer = 5,
     SpvDimSubpassData = 6,
+    SpvDimMax = 0x7fffffff,
 } SpvDim;
 
 typedef enum SpvSamplerAddressingMode_ {
@@ -154,11 +165,13 @@ typedef enum SpvSamplerAddressingMode_ {
     SpvSamplerAddressingModeClamp = 2,
     SpvSamplerAddressingModeRepeat = 3,
     SpvSamplerAddressingModeRepeatMirrored = 4,
+    SpvSamplerAddressingModeMax = 0x7fffffff,
 } SpvSamplerAddressingMode;
 
 typedef enum SpvSamplerFilterMode_ {
     SpvSamplerFilterModeNearest = 0,
     SpvSamplerFilterModeLinear = 1,
+    SpvSamplerFilterModeMax = 0x7fffffff,
 } SpvSamplerFilterMode;
 
 typedef enum SpvImageFormat_ {
@@ -202,6 +215,7 @@ typedef enum SpvImageFormat_ {
     SpvImageFormatRg8ui = 37,
     SpvImageFormatR16ui = 38,
     SpvImageFormatR8ui = 39,
+    SpvImageFormatMax = 0x7fffffff,
 } SpvImageFormat;
 
 typedef enum SpvImageChannelOrder_ {
@@ -224,6 +238,8 @@ typedef enum SpvImageChannelOrder_ {
     SpvImageChannelOrdersRGBx = 16,
     SpvImageChannelOrdersRGBA = 17,
     SpvImageChannelOrdersBGRA = 18,
+    SpvImageChannelOrderABGR = 19,
+    SpvImageChannelOrderMax = 0x7fffffff,
 } SpvImageChannelOrder;
 
 typedef enum SpvImageChannelDataType_ {
@@ -244,6 +260,7 @@ typedef enum SpvImageChannelDataType_ {
     SpvImageChannelDataTypeFloat = 14,
     SpvImageChannelDataTypeUnormInt24 = 15,
     SpvImageChannelDataTypeUnormInt101010_2 = 16,
+    SpvImageChannelDataTypeMax = 0x7fffffff,
 } SpvImageChannelDataType;
 
 typedef enum SpvImageOperandsShift_ {
@@ -255,6 +272,7 @@ typedef enum SpvImageOperandsShift_ {
     SpvImageOperandsConstOffsetsShift = 5,
     SpvImageOperandsSampleShift = 6,
     SpvImageOperandsMinLodShift = 7,
+    SpvImageOperandsMax = 0x7fffffff,
 } SpvImageOperandsShift;
 
 typedef enum SpvImageOperandsMask_ {
@@ -275,6 +293,7 @@ typedef enum SpvFPFastMathModeShift_ {
     SpvFPFastMathModeNSZShift = 2,
     SpvFPFastMathModeAllowRecipShift = 3,
     SpvFPFastMathModeFastShift = 4,
+    SpvFPFastMathModeMax = 0x7fffffff,
 } SpvFPFastMathModeShift;
 
 typedef enum SpvFPFastMathModeMask_ {
@@ -291,17 +310,20 @@ typedef enum SpvFPRoundingMode_ {
     SpvFPRoundingModeRTZ = 1,
     SpvFPRoundingModeRTP = 2,
     SpvFPRoundingModeRTN = 3,
+    SpvFPRoundingModeMax = 0x7fffffff,
 } SpvFPRoundingMode;
 
 typedef enum SpvLinkageType_ {
     SpvLinkageTypeExport = 0,
     SpvLinkageTypeImport = 1,
+    SpvLinkageTypeMax = 0x7fffffff,
 } SpvLinkageType;
 
 typedef enum SpvAccessQualifier_ {
     SpvAccessQualifierReadOnly = 0,
     SpvAccessQualifierWriteOnly = 1,
     SpvAccessQualifierReadWrite = 2,
+    SpvAccessQualifierMax = 0x7fffffff,
 } SpvAccessQualifier;
 
 typedef enum SpvFunctionParameterAttribute_ {
@@ -313,6 +335,7 @@ typedef enum SpvFunctionParameterAttribute_ {
     SpvFunctionParameterAttributeNoCapture = 5,
     SpvFunctionParameterAttributeNoWrite = 6,
     SpvFunctionParameterAttributeNoReadWrite = 7,
+    SpvFunctionParameterAttributeMax = 0x7fffffff,
 } SpvFunctionParameterAttribute;
 
 typedef enum SpvDecoration_ {
@@ -359,6 +382,8 @@ typedef enum SpvDecoration_ {
     SpvDecorationNoContraction = 42,
     SpvDecorationInputAttachmentIndex = 43,
     SpvDecorationAlignment = 44,
+    SpvDecorationMaxByteOffset = 45,
+    SpvDecorationMax = 0x7fffffff,
 } SpvDecoration;
 
 typedef enum SpvBuiltIn_ {
@@ -403,11 +428,21 @@ typedef enum SpvBuiltIn_ {
     SpvBuiltInSubgroupLocalInvocationId = 41,
     SpvBuiltInVertexIndex = 42,
     SpvBuiltInInstanceIndex = 43,
+    SpvBuiltInSubgroupEqMaskKHR = 4416,
+    SpvBuiltInSubgroupGeMaskKHR = 4417,
+    SpvBuiltInSubgroupGtMaskKHR = 4418,
+    SpvBuiltInSubgroupLeMaskKHR = 4419,
+    SpvBuiltInSubgroupLtMaskKHR = 4420,
+    SpvBuiltInBaseVertex = 4424,
+    SpvBuiltInBaseInstance = 4425,
+    SpvBuiltInDrawIndex = 4426,
+    SpvBuiltInMax = 0x7fffffff,
 } SpvBuiltIn;
 
 typedef enum SpvSelectionControlShift_ {
     SpvSelectionControlFlattenShift = 0,
     SpvSelectionControlDontFlattenShift = 1,
+    SpvSelectionControlMax = 0x7fffffff,
 } SpvSelectionControlShift;
 
 typedef enum SpvSelectionControlMask_ {
@@ -419,12 +454,17 @@ typedef enum SpvSelectionControlMask_ {
 typedef enum SpvLoopControlShift_ {
     SpvLoopControlUnrollShift = 0,
     SpvLoopControlDontUnrollShift = 1,
+    SpvLoopControlDependencyInfiniteShift = 2,
+    SpvLoopControlDependencyLengthShift = 3,
+    SpvLoopControlMax = 0x7fffffff,
 } SpvLoopControlShift;
 
 typedef enum SpvLoopControlMask_ {
     SpvLoopControlMaskNone = 0,
     SpvLoopControlUnrollMask = 0x00000001,
     SpvLoopControlDontUnrollMask = 0x00000002,
+    SpvLoopControlDependencyInfiniteMask = 0x00000004,
+    SpvLoopControlDependencyLengthMask = 0x00000008,
 } SpvLoopControlMask;
 
 typedef enum SpvFunctionControlShift_ {
@@ -432,6 +472,7 @@ typedef enum SpvFunctionControlShift_ {
     SpvFunctionControlDontInlineShift = 1,
     SpvFunctionControlPureShift = 2,
     SpvFunctionControlConstShift = 3,
+    SpvFunctionControlMax = 0x7fffffff,
 } SpvFunctionControlShift;
 
 typedef enum SpvFunctionControlMask_ {
@@ -453,6 +494,7 @@ typedef enum SpvMemorySemanticsShift_ {
     SpvMemorySemanticsCrossWorkgroupMemoryShift = 9,
     SpvMemorySemanticsAtomicCounterMemoryShift = 10,
     SpvMemorySemanticsImageMemoryShift = 11,
+    SpvMemorySemanticsMax = 0x7fffffff,
 } SpvMemorySemanticsShift;
 
 typedef enum SpvMemorySemanticsMask_ {
@@ -473,6 +515,7 @@ typedef enum SpvMemoryAccessShift_ {
     SpvMemoryAccessVolatileShift = 0,
     SpvMemoryAccessAlignedShift = 1,
     SpvMemoryAccessNontemporalShift = 2,
+    SpvMemoryAccessMax = 0x7fffffff,
 } SpvMemoryAccessShift;
 
 typedef enum SpvMemoryAccessMask_ {
@@ -488,22 +531,26 @@ typedef enum SpvScope_ {
     SpvScopeWorkgroup = 2,
     SpvScopeSubgroup = 3,
     SpvScopeInvocation = 4,
+    SpvScopeMax = 0x7fffffff,
 } SpvScope;
 
 typedef enum SpvGroupOperation_ {
     SpvGroupOperationReduce = 0,
     SpvGroupOperationInclusiveScan = 1,
     SpvGroupOperationExclusiveScan = 2,
+    SpvGroupOperationMax = 0x7fffffff,
 } SpvGroupOperation;
 
 typedef enum SpvKernelEnqueueFlags_ {
     SpvKernelEnqueueFlagsNoWait = 0,
     SpvKernelEnqueueFlagsWaitKernel = 1,
     SpvKernelEnqueueFlagsWaitWorkGroup = 2,
+    SpvKernelEnqueueFlagsMax = 0x7fffffff,
 } SpvKernelEnqueueFlags;
 
 typedef enum SpvKernelProfilingInfoShift_ {
     SpvKernelProfilingInfoCmdExecTimeShift = 0,
+    SpvKernelProfilingInfoMax = 0x7fffffff,
 } SpvKernelProfilingInfoShift;
 
 typedef enum SpvKernelProfilingInfoMask_ {
@@ -568,6 +615,12 @@ typedef enum SpvCapability_ {
     SpvCapabilityStorageImageReadWithoutFormat = 55,
     SpvCapabilityStorageImageWriteWithoutFormat = 56,
     SpvCapabilityMultiViewport = 57,
+    SpvCapabilitySubgroupDispatch = 58,
+    SpvCapabilityNamedBarrier = 59,
+    SpvCapabilityPipeStorage = 60,
+    SpvCapabilitySubgroupBallotKHR = 4423,
+    SpvCapabilityDrawParameters = 4427,
+    SpvCapabilityMax = 0x7fffffff,
 } SpvCapability;
 
 typedef enum SpvOp_ {
@@ -864,6 +917,20 @@ typedef enum SpvOp_ {
     SpvOpNoLine = 317,
     SpvOpAtomicFlagTestAndSet = 318,
     SpvOpAtomicFlagClear = 319,
+    SpvOpImageSparseRead = 320,
+    SpvOpSizeOf = 321,
+    SpvOpTypePipeStorage = 322,
+    SpvOpConstantPipeStorage = 323,
+    SpvOpCreatePipeFromPipeStorage = 324,
+    SpvOpGetKernelLocalSizeForSubgroupCount = 325,
+    SpvOpGetKernelMaxNumSubgroups = 326,
+    SpvOpTypeNamedBarrier = 327,
+    SpvOpNamedBarrierInitialize = 328,
+    SpvOpMemoryNamedBarrier = 329,
+    SpvOpModuleProcessed = 330,
+    SpvOpSubgroupBallotKHR = 4421,
+    SpvOpSubgroupFirstInvocationKHR = 4422,
+    SpvOpMax = 0x7fffffff,
 } SpvOp;
 
 #endif  // #ifndef spirv_H
diff --git a/src/compiler/spirv/spirv_info.c b/src/compiler/spirv/spirv_info.c
index 7a5774c443..1036b41c31 100644
--- a/src/compiler/spirv/spirv_info.c
+++ b/src/compiler/spirv/spirv_info.c
@@ -82,6 +82,11 @@ static const char * const capability_to_string[] = {
    CAPABILITY(StorageImageReadWithoutFormat),
    CAPABILITY(StorageImageWriteWithoutFormat),
    CAPABILITY(MultiViewport),
+   CAPABILITY(SubgroupDispatch),
+   CAPABILITY(NamedBarrier),
+   CAPABILITY(PipeStorage),
+   CAPABILITY(SubgroupBallotKHR),
+   CAPABILITY(DrawParameters),
 };
 
 const char *
@@ -138,6 +143,7 @@ static const char * const decoration_to_string[] = {
    DECORATION(NoContraction),
    DECORATION(InputAttachmentIndex),
    DECORATION(Alignment),
+   DECORATION(MaxByteOffset),
 };
 
 const char *
diff --git a/src/compiler/spirv/spirv_to_nir.c b/src/compiler/spirv/spirv_to_nir.c
index 968502c5fd..6f18af2018 100644
--- a/src/compiler/spirv/spirv_to_nir.c
+++ b/src/compiler/spirv/spirv_to_nir.c
@@ -561,6 +561,9 @@ struct_member_decoration_cb(struct vtn_builder *b,
       vtn_warn("Decoration only allowed for CL-style kernels: %s",
                spirv_decoration_to_string(dec->decoration));
       break;
+
+   default:
+      unreachable("Unhandled decoration");
    }
 }
 
@@ -638,6 +641,9 @@ type_decoration_cb(struct vtn_builder *b,
       vtn_warn("Decoration only allowed for CL-style kernels: %s",
                spirv_decoration_to_string(dec->decoration));
       break;
+
+   default:
+      unreachable("Unhandled decoration");
    }
 }
 
@@ -2653,6 +2659,9 @@ vtn_handle_preamble_instruction(struct vtn_builder *b, SpvOp opcode,
       case SpvCapabilityTessellationPointSize:
          spv_check_supported(tessellation, cap);
          break;
+
+      default:
+         unreachable("Unhandled capability");
       }
       break;
    }
@@ -2842,6 +2851,9 @@ vtn_handle_execution_mode(struct vtn_builder *b, struct vtn_value *entry_point,
    case SpvExecutionModeVecTypeHint:
    case SpvExecutionModeContractionOff:
       break; /* OpenCL */
+
+   default:
+      unreachable("Unhandled execution mode");
    }
 }
 
diff --git a/src/compiler/spirv/vtn_variables.c b/src/compiler/spirv/vtn_variables.c
index 4d1ec789cc..05ac91eedd 100644
--- a/src/compiler/spirv/vtn_variables.c
+++ b/src/compiler/spirv/vtn_variables.c
@@ -1139,6 +1139,9 @@ apply_var_decoration(struct vtn_builder *b, nir_variable *nir_var,
       vtn_warn("Decoration only allowed for CL-style kernels: %s",
                spirv_decoration_to_string(dec->decoration));
       break;
+
+   default:
+      unreachable("Unhandled decoration");
    }
 }
 
-- 
2.11.0



More information about the mesa-dev mailing list