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

Bas Nieuwenhuizen bas at basnieuwenhuizen.nl
Wed Jan 25 12:45:28 UTC 2017


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


More information about the mesa-dev mailing list