[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