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

Jason Ekstrand jason at jlekstrand.net
Wed Jan 25 17:07:18 UTC 2017


On Wed, Jan 25, 2017 at 4:45 AM, Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>
wrote:

> Can you split the switch changes to a different commit? With that,
>

Agreed,

Reviewed-by: Jason Ekstrand <jason at jlekstrand.net>


> 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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20170125/a24dfe95/attachment-0001.html>


More information about the mesa-dev mailing list