On 25/01/17 13:13, Bas Nieuwenhuizen wrote:

On Wed, Jan 25, 2017, at 05:06, Lionel Landwerlin wrote:
Just to confirm, are you fine with the header update triggering warnings
fixed by the following commit?
Can't you update the  switches before updating the header? That would
avoid any warnings unless I'm missing stuff.

Fair enough, thanks :)


Thanks!

On 25/01/17 12:45, Bas Nieuwenhuizen wrote:
Can you split the switch changes to a different commit? With that,

Reviewed-by: Bas Nieuwenhuizen <[email protected]>

for the series.

On Wed, Jan 25, 2017, at 04:39, Lionel Landwerlin wrote:
Signed-off-by: Lionel Landwerlin <[email protected]>
---
   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

_______________________________________________
mesa-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-dev
_______________________________________________
mesa-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


_______________________________________________
mesa-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to