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
