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

Bas Nieuwenhuizen bas at basnieuwenhuizen.nl
Wed Jan 25 13:13:14 UTC 2017



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. 

> 
> 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 <bas at basnieuwenhuizen.nl>
> >
> > for the series.
> >
> > On Wed, Jan 25, 2017, at 04:39, Lionel Landwerlin wrote:
> >> 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
> >>
> >> _______________________________________________
> >> mesa-dev mailing list
> >> mesa-dev at lists.freedesktop.org
> >> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
> > _______________________________________________
> > mesa-dev mailing list
> > mesa-dev at lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/mesa-dev
> 
> 


More information about the mesa-dev mailing list