Browse Source

Revert "spirv-reflect: Update to latest commit, adds SPIRV 1.6 support"

This reverts commit 912c2062e6ce38b2aaff6b87920ef4d2ef307555.
Rémi Verschelde 3 years ago
parent
commit
e11f0d9bfd

+ 1 - 1
thirdparty/README.md

@@ -552,7 +552,7 @@ Godot. Please check the file to know what's new.
 ## spirv-reflect
 ## spirv-reflect
 
 
 - Upstream: https://github.com/KhronosGroup/SPIRV-Reflect
 - Upstream: https://github.com/KhronosGroup/SPIRV-Reflect
-- Version: git (1aceb6af56e74b92a00378842dda5c5a73f49a4b, 2022)
+- Version: git (cc937caab141d889c9c9dff572c5a6854d5cf9b4, 2021)
 - License: Apache 2.0
 - License: Apache 2.0
 
 
 Does not track Vulkan SDK releases closely, but try to package a commit newer
 Does not track Vulkan SDK releases closely, but try to package a commit newer

+ 7 - 313
thirdparty/spirv-reflect/include/spirv/unified1/spirv.h

@@ -53,12 +53,12 @@
 
 
 typedef unsigned int SpvId;
 typedef unsigned int SpvId;
 
 
-#define SPV_VERSION 0x10600
-#define SPV_REVISION 1
+#define SPV_VERSION 0x10500
+#define SPV_REVISION 4
 
 
 static const unsigned int SpvMagicNumber = 0x07230203;
 static const unsigned int SpvMagicNumber = 0x07230203;
-static const unsigned int SpvVersion = 0x00010600;
-static const unsigned int SpvRevision = 1;
+static const unsigned int SpvVersion = 0x00010500;
+static const unsigned int SpvRevision = 4;
 static const unsigned int SpvOpCodeMask = 0xffff;
 static const unsigned int SpvOpCodeMask = 0xffff;
 static const unsigned int SpvWordCountShift = 16;
 static const unsigned int SpvWordCountShift = 16;
 
 
@@ -69,7 +69,6 @@ typedef enum SpvSourceLanguage_ {
     SpvSourceLanguageOpenCL_C = 3,
     SpvSourceLanguageOpenCL_C = 3,
     SpvSourceLanguageOpenCL_CPP = 4,
     SpvSourceLanguageOpenCL_CPP = 4,
     SpvSourceLanguageHLSL = 5,
     SpvSourceLanguageHLSL = 5,
-    SpvSourceLanguageCPP_for_OpenCL = 6,
     SpvSourceLanguageMax = 0x7fffffff,
     SpvSourceLanguageMax = 0x7fffffff,
 } SpvSourceLanguage;
 } SpvSourceLanguage;
 
 
@@ -155,7 +154,6 @@ typedef enum SpvExecutionMode_ {
     SpvExecutionModeSubgroupsPerWorkgroupId = 37,
     SpvExecutionModeSubgroupsPerWorkgroupId = 37,
     SpvExecutionModeLocalSizeId = 38,
     SpvExecutionModeLocalSizeId = 38,
     SpvExecutionModeLocalSizeHintId = 39,
     SpvExecutionModeLocalSizeHintId = 39,
-    SpvExecutionModeSubgroupUniformControlFlowKHR = 4421,
     SpvExecutionModePostDepthCoverage = 4446,
     SpvExecutionModePostDepthCoverage = 4446,
     SpvExecutionModeDenormPreserve = 4459,
     SpvExecutionModeDenormPreserve = 4459,
     SpvExecutionModeDenormFlushToZero = 4460,
     SpvExecutionModeDenormFlushToZero = 4460,
@@ -174,16 +172,10 @@ typedef enum SpvExecutionMode_ {
     SpvExecutionModeSampleInterlockUnorderedEXT = 5369,
     SpvExecutionModeSampleInterlockUnorderedEXT = 5369,
     SpvExecutionModeShadingRateInterlockOrderedEXT = 5370,
     SpvExecutionModeShadingRateInterlockOrderedEXT = 5370,
     SpvExecutionModeShadingRateInterlockUnorderedEXT = 5371,
     SpvExecutionModeShadingRateInterlockUnorderedEXT = 5371,
-    SpvExecutionModeSharedLocalMemorySizeINTEL = 5618,
-    SpvExecutionModeRoundingModeRTPINTEL = 5620,
-    SpvExecutionModeRoundingModeRTNINTEL = 5621,
-    SpvExecutionModeFloatingPointModeALTINTEL = 5622,
-    SpvExecutionModeFloatingPointModeIEEEINTEL = 5623,
     SpvExecutionModeMaxWorkgroupSizeINTEL = 5893,
     SpvExecutionModeMaxWorkgroupSizeINTEL = 5893,
     SpvExecutionModeMaxWorkDimINTEL = 5894,
     SpvExecutionModeMaxWorkDimINTEL = 5894,
     SpvExecutionModeNoGlobalOffsetINTEL = 5895,
     SpvExecutionModeNoGlobalOffsetINTEL = 5895,
     SpvExecutionModeNumSIMDWorkitemsINTEL = 5896,
     SpvExecutionModeNumSIMDWorkitemsINTEL = 5896,
-    SpvExecutionModeSchedulerTargetFmaxMhzINTEL = 5903,
     SpvExecutionModeMax = 0x7fffffff,
     SpvExecutionModeMax = 0x7fffffff,
 } SpvExecutionMode;
 } SpvExecutionMode;
 
 
@@ -216,8 +208,6 @@ typedef enum SpvStorageClass_ {
     SpvStorageClassPhysicalStorageBuffer = 5349,
     SpvStorageClassPhysicalStorageBuffer = 5349,
     SpvStorageClassPhysicalStorageBufferEXT = 5349,
     SpvStorageClassPhysicalStorageBufferEXT = 5349,
     SpvStorageClassCodeSectionINTEL = 5605,
     SpvStorageClassCodeSectionINTEL = 5605,
-    SpvStorageClassDeviceOnlyINTEL = 5936,
-    SpvStorageClassHostOnlyINTEL = 5937,
     SpvStorageClassMax = 0x7fffffff,
     SpvStorageClassMax = 0x7fffffff,
 } SpvStorageClass;
 } SpvStorageClass;
 
 
@@ -357,8 +347,6 @@ typedef enum SpvImageOperandsShift_ {
     SpvImageOperandsVolatileTexelKHRShift = 11,
     SpvImageOperandsVolatileTexelKHRShift = 11,
     SpvImageOperandsSignExtendShift = 12,
     SpvImageOperandsSignExtendShift = 12,
     SpvImageOperandsZeroExtendShift = 13,
     SpvImageOperandsZeroExtendShift = 13,
-    SpvImageOperandsNontemporalShift = 14,
-    SpvImageOperandsOffsetsShift = 16,
     SpvImageOperandsMax = 0x7fffffff,
     SpvImageOperandsMax = 0x7fffffff,
 } SpvImageOperandsShift;
 } SpvImageOperandsShift;
 
 
@@ -382,8 +370,6 @@ typedef enum SpvImageOperandsMask_ {
     SpvImageOperandsVolatileTexelKHRMask = 0x00000800,
     SpvImageOperandsVolatileTexelKHRMask = 0x00000800,
     SpvImageOperandsSignExtendMask = 0x00001000,
     SpvImageOperandsSignExtendMask = 0x00001000,
     SpvImageOperandsZeroExtendMask = 0x00002000,
     SpvImageOperandsZeroExtendMask = 0x00002000,
-    SpvImageOperandsNontemporalMask = 0x00004000,
-    SpvImageOperandsOffsetsMask = 0x00010000,
 } SpvImageOperandsMask;
 } SpvImageOperandsMask;
 
 
 typedef enum SpvFPFastMathModeShift_ {
 typedef enum SpvFPFastMathModeShift_ {
@@ -392,8 +378,6 @@ typedef enum SpvFPFastMathModeShift_ {
     SpvFPFastMathModeNSZShift = 2,
     SpvFPFastMathModeNSZShift = 2,
     SpvFPFastMathModeAllowRecipShift = 3,
     SpvFPFastMathModeAllowRecipShift = 3,
     SpvFPFastMathModeFastShift = 4,
     SpvFPFastMathModeFastShift = 4,
-    SpvFPFastMathModeAllowContractFastINTELShift = 16,
-    SpvFPFastMathModeAllowReassocINTELShift = 17,
     SpvFPFastMathModeMax = 0x7fffffff,
     SpvFPFastMathModeMax = 0x7fffffff,
 } SpvFPFastMathModeShift;
 } SpvFPFastMathModeShift;
 
 
@@ -404,8 +388,6 @@ typedef enum SpvFPFastMathModeMask_ {
     SpvFPFastMathModeNSZMask = 0x00000004,
     SpvFPFastMathModeNSZMask = 0x00000004,
     SpvFPFastMathModeAllowRecipMask = 0x00000008,
     SpvFPFastMathModeAllowRecipMask = 0x00000008,
     SpvFPFastMathModeFastMask = 0x00000010,
     SpvFPFastMathModeFastMask = 0x00000010,
-    SpvFPFastMathModeAllowContractFastINTELMask = 0x00010000,
-    SpvFPFastMathModeAllowReassocINTELMask = 0x00020000,
 } SpvFPFastMathModeMask;
 } SpvFPFastMathModeMask;
 
 
 typedef enum SpvFPRoundingMode_ {
 typedef enum SpvFPRoundingMode_ {
@@ -419,7 +401,6 @@ typedef enum SpvFPRoundingMode_ {
 typedef enum SpvLinkageType_ {
 typedef enum SpvLinkageType_ {
     SpvLinkageTypeExport = 0,
     SpvLinkageTypeExport = 0,
     SpvLinkageTypeImport = 1,
     SpvLinkageTypeImport = 1,
-    SpvLinkageTypeLinkOnceODR = 2,
     SpvLinkageTypeMax = 0x7fffffff,
     SpvLinkageTypeMax = 0x7fffffff,
 } SpvLinkageType;
 } SpvLinkageType;
 
 
@@ -500,7 +481,6 @@ typedef enum SpvDecoration_ {
     SpvDecorationPerPrimitiveNV = 5271,
     SpvDecorationPerPrimitiveNV = 5271,
     SpvDecorationPerViewNV = 5272,
     SpvDecorationPerViewNV = 5272,
     SpvDecorationPerTaskNV = 5273,
     SpvDecorationPerTaskNV = 5273,
-    SpvDecorationPerVertexKHR = 5285,
     SpvDecorationPerVertexNV = 5285,
     SpvDecorationPerVertexNV = 5285,
     SpvDecorationNonUniform = 5300,
     SpvDecorationNonUniform = 5300,
     SpvDecorationNonUniformEXT = 5300,
     SpvDecorationNonUniformEXT = 5300,
@@ -508,26 +488,12 @@ typedef enum SpvDecoration_ {
     SpvDecorationRestrictPointerEXT = 5355,
     SpvDecorationRestrictPointerEXT = 5355,
     SpvDecorationAliasedPointer = 5356,
     SpvDecorationAliasedPointer = 5356,
     SpvDecorationAliasedPointerEXT = 5356,
     SpvDecorationAliasedPointerEXT = 5356,
-    SpvDecorationBindlessSamplerNV = 5398,
-    SpvDecorationBindlessImageNV = 5399,
-    SpvDecorationBoundSamplerNV = 5400,
-    SpvDecorationBoundImageNV = 5401,
-    SpvDecorationSIMTCallINTEL = 5599,
     SpvDecorationReferencedIndirectlyINTEL = 5602,
     SpvDecorationReferencedIndirectlyINTEL = 5602,
-    SpvDecorationClobberINTEL = 5607,
-    SpvDecorationSideEffectsINTEL = 5608,
-    SpvDecorationVectorComputeVariableINTEL = 5624,
-    SpvDecorationFuncParamIOKindINTEL = 5625,
-    SpvDecorationVectorComputeFunctionINTEL = 5626,
-    SpvDecorationStackCallINTEL = 5627,
-    SpvDecorationGlobalVariableOffsetINTEL = 5628,
     SpvDecorationCounterBuffer = 5634,
     SpvDecorationCounterBuffer = 5634,
     SpvDecorationHlslCounterBufferGOOGLE = 5634,
     SpvDecorationHlslCounterBufferGOOGLE = 5634,
     SpvDecorationHlslSemanticGOOGLE = 5635,
     SpvDecorationHlslSemanticGOOGLE = 5635,
     SpvDecorationUserSemantic = 5635,
     SpvDecorationUserSemantic = 5635,
     SpvDecorationUserTypeGOOGLE = 5636,
     SpvDecorationUserTypeGOOGLE = 5636,
-    SpvDecorationFunctionRoundingModeINTEL = 5822,
-    SpvDecorationFunctionDenormModeINTEL = 5823,
     SpvDecorationRegisterINTEL = 5825,
     SpvDecorationRegisterINTEL = 5825,
     SpvDecorationMemoryINTEL = 5826,
     SpvDecorationMemoryINTEL = 5826,
     SpvDecorationNumbanksINTEL = 5827,
     SpvDecorationNumbanksINTEL = 5827,
@@ -540,18 +506,6 @@ typedef enum SpvDecoration_ {
     SpvDecorationMergeINTEL = 5834,
     SpvDecorationMergeINTEL = 5834,
     SpvDecorationBankBitsINTEL = 5835,
     SpvDecorationBankBitsINTEL = 5835,
     SpvDecorationForcePow2DepthINTEL = 5836,
     SpvDecorationForcePow2DepthINTEL = 5836,
-    SpvDecorationBurstCoalesceINTEL = 5899,
-    SpvDecorationCacheSizeINTEL = 5900,
-    SpvDecorationDontStaticallyCoalesceINTEL = 5901,
-    SpvDecorationPrefetchINTEL = 5902,
-    SpvDecorationStallEnableINTEL = 5905,
-    SpvDecorationFuseLoopsInFunctionINTEL = 5907,
-    SpvDecorationBufferLocationINTEL = 5921,
-    SpvDecorationIOPipeStorageINTEL = 5944,
-    SpvDecorationFunctionFloatingPointModeINTEL = 6080,
-    SpvDecorationSingleElementVectorINTEL = 6085,
-    SpvDecorationVectorComputeCallableFunctionINTEL = 6087,
-    SpvDecorationMediaBlockIOINTEL = 6140,
     SpvDecorationMax = 0x7fffffff,
     SpvDecorationMax = 0x7fffffff,
 } SpvDecoration;
 } SpvDecoration;
 
 
@@ -636,9 +590,7 @@ typedef enum SpvBuiltIn_ {
     SpvBuiltInLayerPerViewNV = 5279,
     SpvBuiltInLayerPerViewNV = 5279,
     SpvBuiltInMeshViewCountNV = 5280,
     SpvBuiltInMeshViewCountNV = 5280,
     SpvBuiltInMeshViewIndicesNV = 5281,
     SpvBuiltInMeshViewIndicesNV = 5281,
-    SpvBuiltInBaryCoordKHR = 5286,
     SpvBuiltInBaryCoordNV = 5286,
     SpvBuiltInBaryCoordNV = 5286,
-    SpvBuiltInBaryCoordNoPerspKHR = 5287,
     SpvBuiltInBaryCoordNoPerspNV = 5287,
     SpvBuiltInBaryCoordNoPerspNV = 5287,
     SpvBuiltInFragSizeEXT = 5292,
     SpvBuiltInFragSizeEXT = 5292,
     SpvBuiltInFragmentSizeNV = 5292,
     SpvBuiltInFragmentSizeNV = 5292,
@@ -669,7 +621,6 @@ typedef enum SpvBuiltIn_ {
     SpvBuiltInHitTNV = 5332,
     SpvBuiltInHitTNV = 5332,
     SpvBuiltInHitKindKHR = 5333,
     SpvBuiltInHitKindKHR = 5333,
     SpvBuiltInHitKindNV = 5333,
     SpvBuiltInHitKindNV = 5333,
-    SpvBuiltInCurrentRayTimeNV = 5334,
     SpvBuiltInIncomingRayFlagsKHR = 5351,
     SpvBuiltInIncomingRayFlagsKHR = 5351,
     SpvBuiltInIncomingRayFlagsNV = 5351,
     SpvBuiltInIncomingRayFlagsNV = 5351,
     SpvBuiltInRayGeometryIndexKHR = 5352,
     SpvBuiltInRayGeometryIndexKHR = 5352,
@@ -709,7 +660,6 @@ typedef enum SpvLoopControlShift_ {
     SpvLoopControlLoopCoalesceINTELShift = 20,
     SpvLoopControlLoopCoalesceINTELShift = 20,
     SpvLoopControlMaxInterleavingINTELShift = 21,
     SpvLoopControlMaxInterleavingINTELShift = 21,
     SpvLoopControlSpeculatedIterationsINTELShift = 22,
     SpvLoopControlSpeculatedIterationsINTELShift = 22,
-    SpvLoopControlNoFusionINTELShift = 23,
     SpvLoopControlMax = 0x7fffffff,
     SpvLoopControlMax = 0x7fffffff,
 } SpvLoopControlShift;
 } SpvLoopControlShift;
 
 
@@ -731,7 +681,6 @@ typedef enum SpvLoopControlMask_ {
     SpvLoopControlLoopCoalesceINTELMask = 0x00100000,
     SpvLoopControlLoopCoalesceINTELMask = 0x00100000,
     SpvLoopControlMaxInterleavingINTELMask = 0x00200000,
     SpvLoopControlMaxInterleavingINTELMask = 0x00200000,
     SpvLoopControlSpeculatedIterationsINTELMask = 0x00400000,
     SpvLoopControlSpeculatedIterationsINTELMask = 0x00400000,
-    SpvLoopControlNoFusionINTELMask = 0x00800000,
 } SpvLoopControlMask;
 } SpvLoopControlMask;
 
 
 typedef enum SpvFunctionControlShift_ {
 typedef enum SpvFunctionControlShift_ {
@@ -739,7 +688,6 @@ typedef enum SpvFunctionControlShift_ {
     SpvFunctionControlDontInlineShift = 1,
     SpvFunctionControlDontInlineShift = 1,
     SpvFunctionControlPureShift = 2,
     SpvFunctionControlPureShift = 2,
     SpvFunctionControlConstShift = 3,
     SpvFunctionControlConstShift = 3,
-    SpvFunctionControlOptNoneINTELShift = 16,
     SpvFunctionControlMax = 0x7fffffff,
     SpvFunctionControlMax = 0x7fffffff,
 } SpvFunctionControlShift;
 } SpvFunctionControlShift;
 
 
@@ -749,7 +697,6 @@ typedef enum SpvFunctionControlMask_ {
     SpvFunctionControlDontInlineMask = 0x00000002,
     SpvFunctionControlDontInlineMask = 0x00000002,
     SpvFunctionControlPureMask = 0x00000004,
     SpvFunctionControlPureMask = 0x00000004,
     SpvFunctionControlConstMask = 0x00000008,
     SpvFunctionControlConstMask = 0x00000008,
-    SpvFunctionControlOptNoneINTELMask = 0x00010000,
 } SpvFunctionControlMask;
 } SpvFunctionControlMask;
 
 
 typedef enum SpvMemorySemanticsShift_ {
 typedef enum SpvMemorySemanticsShift_ {
@@ -930,13 +877,9 @@ typedef enum SpvCapability_ {
     SpvCapabilityGroupNonUniformQuad = 68,
     SpvCapabilityGroupNonUniformQuad = 68,
     SpvCapabilityShaderLayer = 69,
     SpvCapabilityShaderLayer = 69,
     SpvCapabilityShaderViewportIndex = 70,
     SpvCapabilityShaderViewportIndex = 70,
-    SpvCapabilityUniformDecoration = 71,
     SpvCapabilityFragmentShadingRateKHR = 4422,
     SpvCapabilityFragmentShadingRateKHR = 4422,
     SpvCapabilitySubgroupBallotKHR = 4423,
     SpvCapabilitySubgroupBallotKHR = 4423,
     SpvCapabilityDrawParameters = 4427,
     SpvCapabilityDrawParameters = 4427,
-    SpvCapabilityWorkgroupMemoryExplicitLayoutKHR = 4428,
-    SpvCapabilityWorkgroupMemoryExplicitLayout8BitAccessKHR = 4429,
-    SpvCapabilityWorkgroupMemoryExplicitLayout16BitAccessKHR = 4430,
     SpvCapabilitySubgroupVoteKHR = 4431,
     SpvCapabilitySubgroupVoteKHR = 4431,
     SpvCapabilityStorageBuffer16BitAccess = 4433,
     SpvCapabilityStorageBuffer16BitAccess = 4433,
     SpvCapabilityStorageUniformBufferBlock16 = 4433,
     SpvCapabilityStorageUniformBufferBlock16 = 4433,
@@ -979,7 +922,6 @@ typedef enum SpvCapability_ {
     SpvCapabilityFragmentFullyCoveredEXT = 5265,
     SpvCapabilityFragmentFullyCoveredEXT = 5265,
     SpvCapabilityMeshShadingNV = 5266,
     SpvCapabilityMeshShadingNV = 5266,
     SpvCapabilityImageFootprintNV = 5282,
     SpvCapabilityImageFootprintNV = 5282,
-    SpvCapabilityFragmentBarycentricKHR = 5284,
     SpvCapabilityFragmentBarycentricNV = 5284,
     SpvCapabilityFragmentBarycentricNV = 5284,
     SpvCapabilityComputeDerivativeGroupQuadsNV = 5288,
     SpvCapabilityComputeDerivativeGroupQuadsNV = 5288,
     SpvCapabilityFragmentDensityEXT = 5291,
     SpvCapabilityFragmentDensityEXT = 5291,
@@ -1010,7 +952,6 @@ typedef enum SpvCapability_ {
     SpvCapabilityStorageTexelBufferArrayNonUniformIndexing = 5312,
     SpvCapabilityStorageTexelBufferArrayNonUniformIndexing = 5312,
     SpvCapabilityStorageTexelBufferArrayNonUniformIndexingEXT = 5312,
     SpvCapabilityStorageTexelBufferArrayNonUniformIndexingEXT = 5312,
     SpvCapabilityRayTracingNV = 5340,
     SpvCapabilityRayTracingNV = 5340,
-    SpvCapabilityRayTracingMotionBlurNV = 5341,
     SpvCapabilityVulkanMemoryModel = 5345,
     SpvCapabilityVulkanMemoryModel = 5345,
     SpvCapabilityVulkanMemoryModelKHR = 5345,
     SpvCapabilityVulkanMemoryModelKHR = 5345,
     SpvCapabilityVulkanMemoryModelDeviceScope = 5346,
     SpvCapabilityVulkanMemoryModelDeviceScope = 5346,
@@ -1024,62 +965,26 @@ typedef enum SpvCapability_ {
     SpvCapabilityFragmentShaderShadingRateInterlockEXT = 5372,
     SpvCapabilityFragmentShaderShadingRateInterlockEXT = 5372,
     SpvCapabilityShaderSMBuiltinsNV = 5373,
     SpvCapabilityShaderSMBuiltinsNV = 5373,
     SpvCapabilityFragmentShaderPixelInterlockEXT = 5378,
     SpvCapabilityFragmentShaderPixelInterlockEXT = 5378,
-    SpvCapabilityDemoteToHelperInvocation = 5379,
     SpvCapabilityDemoteToHelperInvocationEXT = 5379,
     SpvCapabilityDemoteToHelperInvocationEXT = 5379,
-    SpvCapabilityBindlessTextureNV = 5390,
     SpvCapabilitySubgroupShuffleINTEL = 5568,
     SpvCapabilitySubgroupShuffleINTEL = 5568,
     SpvCapabilitySubgroupBufferBlockIOINTEL = 5569,
     SpvCapabilitySubgroupBufferBlockIOINTEL = 5569,
     SpvCapabilitySubgroupImageBlockIOINTEL = 5570,
     SpvCapabilitySubgroupImageBlockIOINTEL = 5570,
     SpvCapabilitySubgroupImageMediaBlockIOINTEL = 5579,
     SpvCapabilitySubgroupImageMediaBlockIOINTEL = 5579,
-    SpvCapabilityRoundToInfinityINTEL = 5582,
-    SpvCapabilityFloatingPointModeINTEL = 5583,
     SpvCapabilityIntegerFunctions2INTEL = 5584,
     SpvCapabilityIntegerFunctions2INTEL = 5584,
     SpvCapabilityFunctionPointersINTEL = 5603,
     SpvCapabilityFunctionPointersINTEL = 5603,
     SpvCapabilityIndirectReferencesINTEL = 5604,
     SpvCapabilityIndirectReferencesINTEL = 5604,
-    SpvCapabilityAsmINTEL = 5606,
-    SpvCapabilityAtomicFloat32MinMaxEXT = 5612,
-    SpvCapabilityAtomicFloat64MinMaxEXT = 5613,
-    SpvCapabilityAtomicFloat16MinMaxEXT = 5616,
-    SpvCapabilityVectorComputeINTEL = 5617,
-    SpvCapabilityVectorAnyINTEL = 5619,
-    SpvCapabilityExpectAssumeKHR = 5629,
     SpvCapabilitySubgroupAvcMotionEstimationINTEL = 5696,
     SpvCapabilitySubgroupAvcMotionEstimationINTEL = 5696,
     SpvCapabilitySubgroupAvcMotionEstimationIntraINTEL = 5697,
     SpvCapabilitySubgroupAvcMotionEstimationIntraINTEL = 5697,
     SpvCapabilitySubgroupAvcMotionEstimationChromaINTEL = 5698,
     SpvCapabilitySubgroupAvcMotionEstimationChromaINTEL = 5698,
-    SpvCapabilityVariableLengthArrayINTEL = 5817,
-    SpvCapabilityFunctionFloatControlINTEL = 5821,
     SpvCapabilityFPGAMemoryAttributesINTEL = 5824,
     SpvCapabilityFPGAMemoryAttributesINTEL = 5824,
-    SpvCapabilityFPFastMathModeINTEL = 5837,
-    SpvCapabilityArbitraryPrecisionIntegersINTEL = 5844,
-    SpvCapabilityArbitraryPrecisionFloatingPointINTEL = 5845,
     SpvCapabilityUnstructuredLoopControlsINTEL = 5886,
     SpvCapabilityUnstructuredLoopControlsINTEL = 5886,
     SpvCapabilityFPGALoopControlsINTEL = 5888,
     SpvCapabilityFPGALoopControlsINTEL = 5888,
     SpvCapabilityKernelAttributesINTEL = 5892,
     SpvCapabilityKernelAttributesINTEL = 5892,
     SpvCapabilityFPGAKernelAttributesINTEL = 5897,
     SpvCapabilityFPGAKernelAttributesINTEL = 5897,
-    SpvCapabilityFPGAMemoryAccessesINTEL = 5898,
-    SpvCapabilityFPGAClusterAttributesINTEL = 5904,
-    SpvCapabilityLoopFuseINTEL = 5906,
-    SpvCapabilityFPGABufferLocationINTEL = 5920,
-    SpvCapabilityArbitraryPrecisionFixedPointINTEL = 5922,
-    SpvCapabilityUSMStorageClassesINTEL = 5935,
-    SpvCapabilityIOPipesINTEL = 5943,
     SpvCapabilityBlockingPipesINTEL = 5945,
     SpvCapabilityBlockingPipesINTEL = 5945,
     SpvCapabilityFPGARegINTEL = 5948,
     SpvCapabilityFPGARegINTEL = 5948,
-    SpvCapabilityDotProductInputAll = 6016,
-    SpvCapabilityDotProductInputAllKHR = 6016,
-    SpvCapabilityDotProductInput4x8Bit = 6017,
-    SpvCapabilityDotProductInput4x8BitKHR = 6017,
-    SpvCapabilityDotProductInput4x8BitPacked = 6018,
-    SpvCapabilityDotProductInput4x8BitPackedKHR = 6018,
-    SpvCapabilityDotProduct = 6019,
-    SpvCapabilityDotProductKHR = 6019,
-    SpvCapabilityBitInstructions = 6025,
     SpvCapabilityAtomicFloat32AddEXT = 6033,
     SpvCapabilityAtomicFloat32AddEXT = 6033,
     SpvCapabilityAtomicFloat64AddEXT = 6034,
     SpvCapabilityAtomicFloat64AddEXT = 6034,
-    SpvCapabilityLongConstantCompositeINTEL = 6089,
-    SpvCapabilityOptNoneINTEL = 6094,
-    SpvCapabilityAtomicFloat16AddEXT = 6095,
-    SpvCapabilityDebugInfoModuleINTEL = 6114,
     SpvCapabilityMax = 0x7fffffff,
     SpvCapabilityMax = 0x7fffffff,
 } SpvCapability;
 } SpvCapability;
 
 
@@ -1146,44 +1051,6 @@ typedef enum SpvFragmentShadingRateMask_ {
     SpvFragmentShadingRateHorizontal4PixelsMask = 0x00000008,
     SpvFragmentShadingRateHorizontal4PixelsMask = 0x00000008,
 } SpvFragmentShadingRateMask;
 } SpvFragmentShadingRateMask;
 
 
-typedef enum SpvFPDenormMode_ {
-    SpvFPDenormModePreserve = 0,
-    SpvFPDenormModeFlushToZero = 1,
-    SpvFPDenormModeMax = 0x7fffffff,
-} SpvFPDenormMode;
-
-typedef enum SpvFPOperationMode_ {
-    SpvFPOperationModeIEEE = 0,
-    SpvFPOperationModeALT = 1,
-    SpvFPOperationModeMax = 0x7fffffff,
-} SpvFPOperationMode;
-
-typedef enum SpvQuantizationModes_ {
-    SpvQuantizationModesTRN = 0,
-    SpvQuantizationModesTRN_ZERO = 1,
-    SpvQuantizationModesRND = 2,
-    SpvQuantizationModesRND_ZERO = 3,
-    SpvQuantizationModesRND_INF = 4,
-    SpvQuantizationModesRND_MIN_INF = 5,
-    SpvQuantizationModesRND_CONV = 6,
-    SpvQuantizationModesRND_CONV_ODD = 7,
-    SpvQuantizationModesMax = 0x7fffffff,
-} SpvQuantizationModes;
-
-typedef enum SpvOverflowModes_ {
-    SpvOverflowModesWRAP = 0,
-    SpvOverflowModesSAT = 1,
-    SpvOverflowModesSAT_ZERO = 2,
-    SpvOverflowModesSAT_SYM = 3,
-    SpvOverflowModesMax = 0x7fffffff,
-} SpvOverflowModes;
-
-typedef enum SpvPackedVectorFormat_ {
-    SpvPackedVectorFormatPackedVectorFormat4x8Bit = 0,
-    SpvPackedVectorFormatPackedVectorFormat4x8BitKHR = 0,
-    SpvPackedVectorFormatMax = 0x7fffffff,
-} SpvPackedVectorFormat;
-
 typedef enum SpvOp_ {
 typedef enum SpvOp_ {
     SpvOpNop = 0,
     SpvOpNop = 0,
     SpvOpUndef = 1,
     SpvOpUndef = 1,
@@ -1541,18 +1408,6 @@ typedef enum SpvOp_ {
     SpvOpConvertUToAccelerationStructureKHR = 4447,
     SpvOpConvertUToAccelerationStructureKHR = 4447,
     SpvOpIgnoreIntersectionKHR = 4448,
     SpvOpIgnoreIntersectionKHR = 4448,
     SpvOpTerminateRayKHR = 4449,
     SpvOpTerminateRayKHR = 4449,
-    SpvOpSDot = 4450,
-    SpvOpSDotKHR = 4450,
-    SpvOpUDot = 4451,
-    SpvOpUDotKHR = 4451,
-    SpvOpSUDot = 4452,
-    SpvOpSUDotKHR = 4452,
-    SpvOpSDotAccSat = 4453,
-    SpvOpSDotAccSatKHR = 4453,
-    SpvOpUDotAccSat = 4454,
-    SpvOpUDotAccSatKHR = 4454,
-    SpvOpSUDotAccSat = 4455,
-    SpvOpSUDotAccSatKHR = 4455,
     SpvOpTypeRayQueryKHR = 4472,
     SpvOpTypeRayQueryKHR = 4472,
     SpvOpRayQueryInitializeKHR = 4473,
     SpvOpRayQueryInitializeKHR = 4473,
     SpvOpRayQueryTerminateKHR = 4474,
     SpvOpRayQueryTerminateKHR = 4474,
@@ -1579,8 +1434,6 @@ typedef enum SpvOp_ {
     SpvOpIgnoreIntersectionNV = 5335,
     SpvOpIgnoreIntersectionNV = 5335,
     SpvOpTerminateRayNV = 5336,
     SpvOpTerminateRayNV = 5336,
     SpvOpTraceNV = 5337,
     SpvOpTraceNV = 5337,
-    SpvOpTraceMotionNV = 5338,
-    SpvOpTraceRayMotionNV = 5339,
     SpvOpTypeAccelerationStructureKHR = 5341,
     SpvOpTypeAccelerationStructureKHR = 5341,
     SpvOpTypeAccelerationStructureNV = 5341,
     SpvOpTypeAccelerationStructureNV = 5341,
     SpvOpExecuteCallableNV = 5344,
     SpvOpExecuteCallableNV = 5344,
@@ -1591,16 +1444,8 @@ typedef enum SpvOp_ {
     SpvOpCooperativeMatrixLengthNV = 5362,
     SpvOpCooperativeMatrixLengthNV = 5362,
     SpvOpBeginInvocationInterlockEXT = 5364,
     SpvOpBeginInvocationInterlockEXT = 5364,
     SpvOpEndInvocationInterlockEXT = 5365,
     SpvOpEndInvocationInterlockEXT = 5365,
-    SpvOpDemoteToHelperInvocation = 5380,
     SpvOpDemoteToHelperInvocationEXT = 5380,
     SpvOpDemoteToHelperInvocationEXT = 5380,
     SpvOpIsHelperInvocationEXT = 5381,
     SpvOpIsHelperInvocationEXT = 5381,
-    SpvOpConvertUToImageNV = 5391,
-    SpvOpConvertUToSamplerNV = 5392,
-    SpvOpConvertImageToUNV = 5393,
-    SpvOpConvertSamplerToUNV = 5394,
-    SpvOpConvertUToSampledImageNV = 5395,
-    SpvOpConvertSampledImageToUNV = 5396,
-    SpvOpSamplerImageAddressingModeNV = 5397,
     SpvOpSubgroupShuffleINTEL = 5571,
     SpvOpSubgroupShuffleINTEL = 5571,
     SpvOpSubgroupShuffleDownINTEL = 5572,
     SpvOpSubgroupShuffleDownINTEL = 5572,
     SpvOpSubgroupShuffleUpINTEL = 5573,
     SpvOpSubgroupShuffleUpINTEL = 5573,
@@ -1625,15 +1470,8 @@ typedef enum SpvOp_ {
     SpvOpUSubSatINTEL = 5596,
     SpvOpUSubSatINTEL = 5596,
     SpvOpIMul32x16INTEL = 5597,
     SpvOpIMul32x16INTEL = 5597,
     SpvOpUMul32x16INTEL = 5598,
     SpvOpUMul32x16INTEL = 5598,
-    SpvOpConstantFunctionPointerINTEL = 5600,
+    SpvOpFunctionPointerINTEL = 5600,
     SpvOpFunctionPointerCallINTEL = 5601,
     SpvOpFunctionPointerCallINTEL = 5601,
-    SpvOpAsmTargetINTEL = 5609,
-    SpvOpAsmINTEL = 5610,
-    SpvOpAsmCallINTEL = 5611,
-    SpvOpAtomicFMinEXT = 5614,
-    SpvOpAtomicFMaxEXT = 5615,
-    SpvOpAssumeTrueKHR = 5630,
-    SpvOpExpectKHR = 5631,
     SpvOpDecorateString = 5632,
     SpvOpDecorateString = 5632,
     SpvOpDecorateStringGOOGLE = 5632,
     SpvOpDecorateStringGOOGLE = 5632,
     SpvOpMemberDecorateString = 5633,
     SpvOpMemberDecorateString = 5633,
@@ -1756,64 +1594,7 @@ typedef enum SpvOp_ {
     SpvOpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL = 5814,
     SpvOpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL = 5814,
     SpvOpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL = 5815,
     SpvOpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL = 5815,
     SpvOpSubgroupAvcSicGetInterRawSadsINTEL = 5816,
     SpvOpSubgroupAvcSicGetInterRawSadsINTEL = 5816,
-    SpvOpVariableLengthArrayINTEL = 5818,
-    SpvOpSaveMemoryINTEL = 5819,
-    SpvOpRestoreMemoryINTEL = 5820,
-    SpvOpArbitraryFloatSinCosPiINTEL = 5840,
-    SpvOpArbitraryFloatCastINTEL = 5841,
-    SpvOpArbitraryFloatCastFromIntINTEL = 5842,
-    SpvOpArbitraryFloatCastToIntINTEL = 5843,
-    SpvOpArbitraryFloatAddINTEL = 5846,
-    SpvOpArbitraryFloatSubINTEL = 5847,
-    SpvOpArbitraryFloatMulINTEL = 5848,
-    SpvOpArbitraryFloatDivINTEL = 5849,
-    SpvOpArbitraryFloatGTINTEL = 5850,
-    SpvOpArbitraryFloatGEINTEL = 5851,
-    SpvOpArbitraryFloatLTINTEL = 5852,
-    SpvOpArbitraryFloatLEINTEL = 5853,
-    SpvOpArbitraryFloatEQINTEL = 5854,
-    SpvOpArbitraryFloatRecipINTEL = 5855,
-    SpvOpArbitraryFloatRSqrtINTEL = 5856,
-    SpvOpArbitraryFloatCbrtINTEL = 5857,
-    SpvOpArbitraryFloatHypotINTEL = 5858,
-    SpvOpArbitraryFloatSqrtINTEL = 5859,
-    SpvOpArbitraryFloatLogINTEL = 5860,
-    SpvOpArbitraryFloatLog2INTEL = 5861,
-    SpvOpArbitraryFloatLog10INTEL = 5862,
-    SpvOpArbitraryFloatLog1pINTEL = 5863,
-    SpvOpArbitraryFloatExpINTEL = 5864,
-    SpvOpArbitraryFloatExp2INTEL = 5865,
-    SpvOpArbitraryFloatExp10INTEL = 5866,
-    SpvOpArbitraryFloatExpm1INTEL = 5867,
-    SpvOpArbitraryFloatSinINTEL = 5868,
-    SpvOpArbitraryFloatCosINTEL = 5869,
-    SpvOpArbitraryFloatSinCosINTEL = 5870,
-    SpvOpArbitraryFloatSinPiINTEL = 5871,
-    SpvOpArbitraryFloatCosPiINTEL = 5872,
-    SpvOpArbitraryFloatASinINTEL = 5873,
-    SpvOpArbitraryFloatASinPiINTEL = 5874,
-    SpvOpArbitraryFloatACosINTEL = 5875,
-    SpvOpArbitraryFloatACosPiINTEL = 5876,
-    SpvOpArbitraryFloatATanINTEL = 5877,
-    SpvOpArbitraryFloatATanPiINTEL = 5878,
-    SpvOpArbitraryFloatATan2INTEL = 5879,
-    SpvOpArbitraryFloatPowINTEL = 5880,
-    SpvOpArbitraryFloatPowRINTEL = 5881,
-    SpvOpArbitraryFloatPowNINTEL = 5882,
     SpvOpLoopControlINTEL = 5887,
     SpvOpLoopControlINTEL = 5887,
-    SpvOpFixedSqrtINTEL = 5923,
-    SpvOpFixedRecipINTEL = 5924,
-    SpvOpFixedRsqrtINTEL = 5925,
-    SpvOpFixedSinINTEL = 5926,
-    SpvOpFixedCosINTEL = 5927,
-    SpvOpFixedSinCosINTEL = 5928,
-    SpvOpFixedSinPiINTEL = 5929,
-    SpvOpFixedCosPiINTEL = 5930,
-    SpvOpFixedSinCosPiINTEL = 5931,
-    SpvOpFixedLogINTEL = 5932,
-    SpvOpFixedExpINTEL = 5933,
-    SpvOpPtrCastToCrossWorkgroupINTEL = 5934,
-    SpvOpCrossWorkgroupCastToPtrINTEL = 5938,
     SpvOpReadPipeBlockingINTEL = 5946,
     SpvOpReadPipeBlockingINTEL = 5946,
     SpvOpWritePipeBlockingINTEL = 5947,
     SpvOpWritePipeBlockingINTEL = 5947,
     SpvOpFPGARegINTEL = 5949,
     SpvOpFPGARegINTEL = 5949,
@@ -1835,10 +1616,6 @@ typedef enum SpvOp_ {
     SpvOpRayQueryGetIntersectionObjectToWorldKHR = 6031,
     SpvOpRayQueryGetIntersectionObjectToWorldKHR = 6031,
     SpvOpRayQueryGetIntersectionWorldToObjectKHR = 6032,
     SpvOpRayQueryGetIntersectionWorldToObjectKHR = 6032,
     SpvOpAtomicFAddEXT = 6035,
     SpvOpAtomicFAddEXT = 6035,
-    SpvOpTypeBufferSurfaceINTEL = 6086,
-    SpvOpTypeStructContinuedINTEL = 6090,
-    SpvOpConstantCompositeContinuedINTEL = 6091,
-    SpvOpSpecConstantCompositeContinuedINTEL = 6092,
     SpvOpMax = 0x7fffffff,
     SpvOpMax = 0x7fffffff,
 } SpvOp;
 } SpvOp;
 
 
@@ -2203,12 +1980,6 @@ inline void SpvHasResultAndType(SpvOp opcode, bool *hasResult, bool *hasResultTy
     case SpvOpConvertUToAccelerationStructureKHR: *hasResult = true; *hasResultType = true; break;
     case SpvOpConvertUToAccelerationStructureKHR: *hasResult = true; *hasResultType = true; break;
     case SpvOpIgnoreIntersectionKHR: *hasResult = false; *hasResultType = false; break;
     case SpvOpIgnoreIntersectionKHR: *hasResult = false; *hasResultType = false; break;
     case SpvOpTerminateRayKHR: *hasResult = false; *hasResultType = false; break;
     case SpvOpTerminateRayKHR: *hasResult = false; *hasResultType = false; break;
-    case SpvOpSDot: *hasResult = true; *hasResultType = true; break;
-    case SpvOpUDot: *hasResult = true; *hasResultType = true; break;
-    case SpvOpSUDot: *hasResult = true; *hasResultType = true; break;
-    case SpvOpSDotAccSat: *hasResult = true; *hasResultType = true; break;
-    case SpvOpUDotAccSat: *hasResult = true; *hasResultType = true; break;
-    case SpvOpSUDotAccSat: *hasResult = true; *hasResultType = true; break;
     case SpvOpTypeRayQueryKHR: *hasResult = true; *hasResultType = false; break;
     case SpvOpTypeRayQueryKHR: *hasResult = true; *hasResultType = false; break;
     case SpvOpRayQueryInitializeKHR: *hasResult = false; *hasResultType = false; break;
     case SpvOpRayQueryInitializeKHR: *hasResult = false; *hasResultType = false; break;
     case SpvOpRayQueryTerminateKHR: *hasResult = false; *hasResultType = false; break;
     case SpvOpRayQueryTerminateKHR: *hasResult = false; *hasResultType = false; break;
@@ -2234,8 +2005,6 @@ inline void SpvHasResultAndType(SpvOp opcode, bool *hasResult, bool *hasResultTy
     case SpvOpIgnoreIntersectionNV: *hasResult = false; *hasResultType = false; break;
     case SpvOpIgnoreIntersectionNV: *hasResult = false; *hasResultType = false; break;
     case SpvOpTerminateRayNV: *hasResult = false; *hasResultType = false; break;
     case SpvOpTerminateRayNV: *hasResult = false; *hasResultType = false; break;
     case SpvOpTraceNV: *hasResult = false; *hasResultType = false; break;
     case SpvOpTraceNV: *hasResult = false; *hasResultType = false; break;
-    case SpvOpTraceMotionNV: *hasResult = false; *hasResultType = false; break;
-    case SpvOpTraceRayMotionNV: *hasResult = false; *hasResultType = false; break;
     case SpvOpTypeAccelerationStructureNV: *hasResult = true; *hasResultType = false; break;
     case SpvOpTypeAccelerationStructureNV: *hasResult = true; *hasResultType = false; break;
     case SpvOpExecuteCallableNV: *hasResult = false; *hasResultType = false; break;
     case SpvOpExecuteCallableNV: *hasResult = false; *hasResultType = false; break;
     case SpvOpTypeCooperativeMatrixNV: *hasResult = true; *hasResultType = false; break;
     case SpvOpTypeCooperativeMatrixNV: *hasResult = true; *hasResultType = false; break;
@@ -2245,15 +2014,8 @@ inline void SpvHasResultAndType(SpvOp opcode, bool *hasResult, bool *hasResultTy
     case SpvOpCooperativeMatrixLengthNV: *hasResult = true; *hasResultType = true; break;
     case SpvOpCooperativeMatrixLengthNV: *hasResult = true; *hasResultType = true; break;
     case SpvOpBeginInvocationInterlockEXT: *hasResult = false; *hasResultType = false; break;
     case SpvOpBeginInvocationInterlockEXT: *hasResult = false; *hasResultType = false; break;
     case SpvOpEndInvocationInterlockEXT: *hasResult = false; *hasResultType = false; break;
     case SpvOpEndInvocationInterlockEXT: *hasResult = false; *hasResultType = false; break;
-    case SpvOpDemoteToHelperInvocation: *hasResult = false; *hasResultType = false; break;
+    case SpvOpDemoteToHelperInvocationEXT: *hasResult = false; *hasResultType = false; break;
     case SpvOpIsHelperInvocationEXT: *hasResult = true; *hasResultType = true; break;
     case SpvOpIsHelperInvocationEXT: *hasResult = true; *hasResultType = true; break;
-    case SpvOpConvertUToImageNV: *hasResult = true; *hasResultType = true; break;
-    case SpvOpConvertUToSamplerNV: *hasResult = true; *hasResultType = true; break;
-    case SpvOpConvertImageToUNV: *hasResult = true; *hasResultType = true; break;
-    case SpvOpConvertSamplerToUNV: *hasResult = true; *hasResultType = true; break;
-    case SpvOpConvertUToSampledImageNV: *hasResult = true; *hasResultType = true; break;
-    case SpvOpConvertSampledImageToUNV: *hasResult = true; *hasResultType = true; break;
-    case SpvOpSamplerImageAddressingModeNV: *hasResult = false; *hasResultType = false; break;
     case SpvOpSubgroupShuffleINTEL: *hasResult = true; *hasResultType = true; break;
     case SpvOpSubgroupShuffleINTEL: *hasResult = true; *hasResultType = true; break;
     case SpvOpSubgroupShuffleDownINTEL: *hasResult = true; *hasResultType = true; break;
     case SpvOpSubgroupShuffleDownINTEL: *hasResult = true; *hasResultType = true; break;
     case SpvOpSubgroupShuffleUpINTEL: *hasResult = true; *hasResultType = true; break;
     case SpvOpSubgroupShuffleUpINTEL: *hasResult = true; *hasResultType = true; break;
@@ -2278,15 +2040,8 @@ inline void SpvHasResultAndType(SpvOp opcode, bool *hasResult, bool *hasResultTy
     case SpvOpUSubSatINTEL: *hasResult = true; *hasResultType = true; break;
     case SpvOpUSubSatINTEL: *hasResult = true; *hasResultType = true; break;
     case SpvOpIMul32x16INTEL: *hasResult = true; *hasResultType = true; break;
     case SpvOpIMul32x16INTEL: *hasResult = true; *hasResultType = true; break;
     case SpvOpUMul32x16INTEL: *hasResult = true; *hasResultType = true; break;
     case SpvOpUMul32x16INTEL: *hasResult = true; *hasResultType = true; break;
-    case SpvOpConstantFunctionPointerINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpFunctionPointerINTEL: *hasResult = true; *hasResultType = true; break;
     case SpvOpFunctionPointerCallINTEL: *hasResult = true; *hasResultType = true; break;
     case SpvOpFunctionPointerCallINTEL: *hasResult = true; *hasResultType = true; break;
-    case SpvOpAsmTargetINTEL: *hasResult = true; *hasResultType = true; break;
-    case SpvOpAsmINTEL: *hasResult = true; *hasResultType = true; break;
-    case SpvOpAsmCallINTEL: *hasResult = true; *hasResultType = true; break;
-    case SpvOpAtomicFMinEXT: *hasResult = true; *hasResultType = true; break;
-    case SpvOpAtomicFMaxEXT: *hasResult = true; *hasResultType = true; break;
-    case SpvOpAssumeTrueKHR: *hasResult = false; *hasResultType = false; break;
-    case SpvOpExpectKHR: *hasResult = true; *hasResultType = true; break;
     case SpvOpDecorateString: *hasResult = false; *hasResultType = false; break;
     case SpvOpDecorateString: *hasResult = false; *hasResultType = false; break;
     case SpvOpMemberDecorateString: *hasResult = false; *hasResultType = false; break;
     case SpvOpMemberDecorateString: *hasResult = false; *hasResultType = false; break;
     case SpvOpVmeImageINTEL: *hasResult = true; *hasResultType = true; break;
     case SpvOpVmeImageINTEL: *hasResult = true; *hasResultType = true; break;
@@ -2407,64 +2162,7 @@ inline void SpvHasResultAndType(SpvOp opcode, bool *hasResult, bool *hasResultTy
     case SpvOpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL: *hasResult = true; *hasResultType = true; break;
     case SpvOpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL: *hasResult = true; *hasResultType = true; break;
     case SpvOpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL: *hasResult = true; *hasResultType = true; break;
     case SpvOpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL: *hasResult = true; *hasResultType = true; break;
     case SpvOpSubgroupAvcSicGetInterRawSadsINTEL: *hasResult = true; *hasResultType = true; break;
     case SpvOpSubgroupAvcSicGetInterRawSadsINTEL: *hasResult = true; *hasResultType = true; break;
-    case SpvOpVariableLengthArrayINTEL: *hasResult = true; *hasResultType = true; break;
-    case SpvOpSaveMemoryINTEL: *hasResult = true; *hasResultType = true; break;
-    case SpvOpRestoreMemoryINTEL: *hasResult = false; *hasResultType = false; break;
-    case SpvOpArbitraryFloatSinCosPiINTEL: *hasResult = true; *hasResultType = true; break;
-    case SpvOpArbitraryFloatCastINTEL: *hasResult = true; *hasResultType = true; break;
-    case SpvOpArbitraryFloatCastFromIntINTEL: *hasResult = true; *hasResultType = true; break;
-    case SpvOpArbitraryFloatCastToIntINTEL: *hasResult = true; *hasResultType = true; break;
-    case SpvOpArbitraryFloatAddINTEL: *hasResult = true; *hasResultType = true; break;
-    case SpvOpArbitraryFloatSubINTEL: *hasResult = true; *hasResultType = true; break;
-    case SpvOpArbitraryFloatMulINTEL: *hasResult = true; *hasResultType = true; break;
-    case SpvOpArbitraryFloatDivINTEL: *hasResult = true; *hasResultType = true; break;
-    case SpvOpArbitraryFloatGTINTEL: *hasResult = true; *hasResultType = true; break;
-    case SpvOpArbitraryFloatGEINTEL: *hasResult = true; *hasResultType = true; break;
-    case SpvOpArbitraryFloatLTINTEL: *hasResult = true; *hasResultType = true; break;
-    case SpvOpArbitraryFloatLEINTEL: *hasResult = true; *hasResultType = true; break;
-    case SpvOpArbitraryFloatEQINTEL: *hasResult = true; *hasResultType = true; break;
-    case SpvOpArbitraryFloatRecipINTEL: *hasResult = true; *hasResultType = true; break;
-    case SpvOpArbitraryFloatRSqrtINTEL: *hasResult = true; *hasResultType = true; break;
-    case SpvOpArbitraryFloatCbrtINTEL: *hasResult = true; *hasResultType = true; break;
-    case SpvOpArbitraryFloatHypotINTEL: *hasResult = true; *hasResultType = true; break;
-    case SpvOpArbitraryFloatSqrtINTEL: *hasResult = true; *hasResultType = true; break;
-    case SpvOpArbitraryFloatLogINTEL: *hasResult = true; *hasResultType = true; break;
-    case SpvOpArbitraryFloatLog2INTEL: *hasResult = true; *hasResultType = true; break;
-    case SpvOpArbitraryFloatLog10INTEL: *hasResult = true; *hasResultType = true; break;
-    case SpvOpArbitraryFloatLog1pINTEL: *hasResult = true; *hasResultType = true; break;
-    case SpvOpArbitraryFloatExpINTEL: *hasResult = true; *hasResultType = true; break;
-    case SpvOpArbitraryFloatExp2INTEL: *hasResult = true; *hasResultType = true; break;
-    case SpvOpArbitraryFloatExp10INTEL: *hasResult = true; *hasResultType = true; break;
-    case SpvOpArbitraryFloatExpm1INTEL: *hasResult = true; *hasResultType = true; break;
-    case SpvOpArbitraryFloatSinINTEL: *hasResult = true; *hasResultType = true; break;
-    case SpvOpArbitraryFloatCosINTEL: *hasResult = true; *hasResultType = true; break;
-    case SpvOpArbitraryFloatSinCosINTEL: *hasResult = true; *hasResultType = true; break;
-    case SpvOpArbitraryFloatSinPiINTEL: *hasResult = true; *hasResultType = true; break;
-    case SpvOpArbitraryFloatCosPiINTEL: *hasResult = true; *hasResultType = true; break;
-    case SpvOpArbitraryFloatASinINTEL: *hasResult = true; *hasResultType = true; break;
-    case SpvOpArbitraryFloatASinPiINTEL: *hasResult = true; *hasResultType = true; break;
-    case SpvOpArbitraryFloatACosINTEL: *hasResult = true; *hasResultType = true; break;
-    case SpvOpArbitraryFloatACosPiINTEL: *hasResult = true; *hasResultType = true; break;
-    case SpvOpArbitraryFloatATanINTEL: *hasResult = true; *hasResultType = true; break;
-    case SpvOpArbitraryFloatATanPiINTEL: *hasResult = true; *hasResultType = true; break;
-    case SpvOpArbitraryFloatATan2INTEL: *hasResult = true; *hasResultType = true; break;
-    case SpvOpArbitraryFloatPowINTEL: *hasResult = true; *hasResultType = true; break;
-    case SpvOpArbitraryFloatPowRINTEL: *hasResult = true; *hasResultType = true; break;
-    case SpvOpArbitraryFloatPowNINTEL: *hasResult = true; *hasResultType = true; break;
     case SpvOpLoopControlINTEL: *hasResult = false; *hasResultType = false; break;
     case SpvOpLoopControlINTEL: *hasResult = false; *hasResultType = false; break;
-    case SpvOpFixedSqrtINTEL: *hasResult = true; *hasResultType = true; break;
-    case SpvOpFixedRecipINTEL: *hasResult = true; *hasResultType = true; break;
-    case SpvOpFixedRsqrtINTEL: *hasResult = true; *hasResultType = true; break;
-    case SpvOpFixedSinINTEL: *hasResult = true; *hasResultType = true; break;
-    case SpvOpFixedCosINTEL: *hasResult = true; *hasResultType = true; break;
-    case SpvOpFixedSinCosINTEL: *hasResult = true; *hasResultType = true; break;
-    case SpvOpFixedSinPiINTEL: *hasResult = true; *hasResultType = true; break;
-    case SpvOpFixedCosPiINTEL: *hasResult = true; *hasResultType = true; break;
-    case SpvOpFixedSinCosPiINTEL: *hasResult = true; *hasResultType = true; break;
-    case SpvOpFixedLogINTEL: *hasResult = true; *hasResultType = true; break;
-    case SpvOpFixedExpINTEL: *hasResult = true; *hasResultType = true; break;
-    case SpvOpPtrCastToCrossWorkgroupINTEL: *hasResult = true; *hasResultType = true; break;
-    case SpvOpCrossWorkgroupCastToPtrINTEL: *hasResult = true; *hasResultType = true; break;
     case SpvOpReadPipeBlockingINTEL: *hasResult = true; *hasResultType = true; break;
     case SpvOpReadPipeBlockingINTEL: *hasResult = true; *hasResultType = true; break;
     case SpvOpWritePipeBlockingINTEL: *hasResult = true; *hasResultType = true; break;
     case SpvOpWritePipeBlockingINTEL: *hasResult = true; *hasResultType = true; break;
     case SpvOpFPGARegINTEL: *hasResult = true; *hasResultType = true; break;
     case SpvOpFPGARegINTEL: *hasResult = true; *hasResultType = true; break;
@@ -2486,10 +2184,6 @@ inline void SpvHasResultAndType(SpvOp opcode, bool *hasResult, bool *hasResultTy
     case SpvOpRayQueryGetIntersectionObjectToWorldKHR: *hasResult = true; *hasResultType = true; break;
     case SpvOpRayQueryGetIntersectionObjectToWorldKHR: *hasResult = true; *hasResultType = true; break;
     case SpvOpRayQueryGetIntersectionWorldToObjectKHR: *hasResult = true; *hasResultType = true; break;
     case SpvOpRayQueryGetIntersectionWorldToObjectKHR: *hasResult = true; *hasResultType = true; break;
     case SpvOpAtomicFAddEXT: *hasResult = true; *hasResultType = true; break;
     case SpvOpAtomicFAddEXT: *hasResult = true; *hasResultType = true; break;
-    case SpvOpTypeBufferSurfaceINTEL: *hasResult = true; *hasResultType = false; break;
-    case SpvOpTypeStructContinuedINTEL: *hasResult = false; *hasResultType = false; break;
-    case SpvOpConstantCompositeContinuedINTEL: *hasResult = false; *hasResultType = false; break;
-    case SpvOpSpecConstantCompositeContinuedINTEL: *hasResult = false; *hasResultType = false; break;
     }
     }
 }
 }
 #endif /* SPV_ENABLE_UTILITY_CODE */
 #endif /* SPV_ENABLE_UTILITY_CODE */

+ 19 - 19
thirdparty/spirv-reflect/patches/specialization-constants.patch

@@ -1,8 +1,8 @@
 diff --git a/thirdparty/spirv-reflect/spirv_reflect.c b/thirdparty/spirv-reflect/spirv_reflect.c
 diff --git a/thirdparty/spirv-reflect/spirv_reflect.c b/thirdparty/spirv-reflect/spirv_reflect.c
-index e9b11bf495..f181df5fa2 100644
+index 1c94a2e00e..2786a7f3ad 100644
 --- a/thirdparty/spirv-reflect/spirv_reflect.c
 --- a/thirdparty/spirv-reflect/spirv_reflect.c
 +++ b/thirdparty/spirv-reflect/spirv_reflect.c
 +++ b/thirdparty/spirv-reflect/spirv_reflect.c
-@@ -125,6 +125,9 @@ typedef struct SpvReflectPrvDecorations {
+@@ -124,6 +124,9 @@ typedef struct SpvReflectPrvDecorations {
    SpvReflectPrvNumberDecoration   location;
    SpvReflectPrvNumberDecoration   location;
    SpvReflectPrvNumberDecoration   offset;
    SpvReflectPrvNumberDecoration   offset;
    SpvReflectPrvNumberDecoration   uav_counter_buffer;
    SpvReflectPrvNumberDecoration   uav_counter_buffer;
@@ -12,7 +12,7 @@ index e9b11bf495..f181df5fa2 100644
    SpvReflectPrvStringDecoration   semantic;
    SpvReflectPrvStringDecoration   semantic;
    uint32_t                        array_stride;
    uint32_t                        array_stride;
    uint32_t                        matrix_stride;
    uint32_t                        matrix_stride;
-@@ -631,6 +634,9 @@ static SpvReflectResult ParseNodes(SpvReflectPrvParser* p_parser)
+@@ -629,6 +632,9 @@ static SpvReflectResult ParseNodes(SpvReflectPrvParser* p_parser)
      p_parser->nodes[i].decorations.offset.value = (uint32_t)INVALID_VALUE;
      p_parser->nodes[i].decorations.offset.value = (uint32_t)INVALID_VALUE;
      p_parser->nodes[i].decorations.uav_counter_buffer.value = (uint32_t)INVALID_VALUE;
      p_parser->nodes[i].decorations.uav_counter_buffer.value = (uint32_t)INVALID_VALUE;
      p_parser->nodes[i].decorations.built_in = (SpvBuiltIn)INVALID_VALUE;
      p_parser->nodes[i].decorations.built_in = (SpvBuiltIn)INVALID_VALUE;
@@ -22,7 +22,7 @@ index e9b11bf495..f181df5fa2 100644
    }
    }
    // Mark source file id node
    // Mark source file id node
    p_parser->source_file_id = (uint32_t)INVALID_VALUE;
    p_parser->source_file_id = (uint32_t)INVALID_VALUE;
-@@ -821,10 +827,16 @@ static SpvReflectResult ParseNodes(SpvReflectPrvParser* p_parser)
+@@ -819,10 +825,16 @@ static SpvReflectResult ParseNodes(SpvReflectPrvParser* p_parser)
          CHECKED_READU32(p_parser, p_node->word_offset + 2, p_node->result_id);
          CHECKED_READU32(p_parser, p_node->word_offset + 2, p_node->result_id);
        }
        }
        break;
        break;
@@ -41,7 +41,7 @@ index e9b11bf495..f181df5fa2 100644
        case SpvOpSpecConstantComposite:
        case SpvOpSpecConstantComposite:
        case SpvOpSpecConstantOp: {
        case SpvOpSpecConstantOp: {
          CHECKED_READU32(p_parser, p_node->word_offset + 1, p_node->result_type_id);
          CHECKED_READU32(p_parser, p_node->word_offset + 1, p_node->result_type_id);
-@@ -856,7 +868,7 @@ static SpvReflectResult ParseNodes(SpvReflectPrvParser* p_parser)
+@@ -854,7 +866,7 @@ static SpvReflectResult ParseNodes(SpvReflectPrvParser* p_parser)
          CHECKED_READU32(p_parser, p_node->word_offset + 3, p_access_chain->base_id);
          CHECKED_READU32(p_parser, p_node->word_offset + 3, p_access_chain->base_id);
          //
          //
          // SPIRV_ACCESS_CHAIN_INDEX_OFFSET (4) is the number of words up until the first index:
          // SPIRV_ACCESS_CHAIN_INDEX_OFFSET (4) is the number of words up until the first index:
@@ -50,17 +50,17 @@ index e9b11bf495..f181df5fa2 100644
          //
          //
          p_access_chain->index_count = (node_word_count - SPIRV_ACCESS_CHAIN_INDEX_OFFSET);
          p_access_chain->index_count = (node_word_count - SPIRV_ACCESS_CHAIN_INDEX_OFFSET);
          if (p_access_chain->index_count > 0) {
          if (p_access_chain->index_count > 0) {
-@@ -1338,6 +1350,9 @@ static SpvReflectResult ParseDecorations(SpvReflectPrvParser* p_parser)
+@@ -1334,6 +1346,9 @@ static SpvReflectResult ParseDecorations(SpvReflectPrvParser* p_parser)
          skip = true;
          skip = true;
        }
        }
-       break;
+       break; 
 +// -- GODOT begin --
 +// -- GODOT begin --
 +      case SpvDecorationSpecId:
 +      case SpvDecorationSpecId:
 +// -- GODOT end --
 +// -- GODOT end --
-       case SpvDecorationRelaxedPrecision:
        case SpvDecorationBlock:
        case SpvDecorationBlock:
        case SpvDecorationBufferBlock:
        case SpvDecorationBufferBlock:
-@@ -1481,7 +1496,14 @@ static SpvReflectResult ParseDecorations(SpvReflectPrvParser* p_parser)
+       case SpvDecorationColMajor:
+@@ -1466,7 +1481,14 @@ static SpvReflectResult ParseDecorations(SpvReflectPrvParser* p_parser)
          p_target_decorations->input_attachment_index.word_offset = word_offset;
          p_target_decorations->input_attachment_index.word_offset = word_offset;
        }
        }
        break;
        break;
@@ -76,7 +76,7 @@ index e9b11bf495..f181df5fa2 100644
        case SpvReflectDecorationHlslCounterBufferGOOGLE: {
        case SpvReflectDecorationHlslCounterBufferGOOGLE: {
          uint32_t word_offset = p_node->word_offset + member_offset+ 3;
          uint32_t word_offset = p_node->word_offset + member_offset+ 3;
          CHECKED_READU32(p_parser, word_offset, p_target_decorations->uav_counter_buffer.value);
          CHECKED_READU32(p_parser, word_offset, p_target_decorations->uav_counter_buffer.value);
-@@ -1789,6 +1811,13 @@ static SpvReflectResult ParseType(
+@@ -1766,6 +1788,13 @@ static SpvReflectResult ParseType(
          p_type->type_flags |= SPV_REFLECT_TYPE_FLAG_EXTERNAL_ACCELERATION_STRUCTURE;
          p_type->type_flags |= SPV_REFLECT_TYPE_FLAG_EXTERNAL_ACCELERATION_STRUCTURE;
        }
        }
        break;
        break;
@@ -90,7 +90,7 @@ index e9b11bf495..f181df5fa2 100644
      }
      }
  
  
      if (result == SPV_REFLECT_RESULT_SUCCESS) {
      if (result == SPV_REFLECT_RESULT_SUCCESS) {
-@@ -3269,6 +3298,69 @@ static SpvReflectResult ParseExecutionModes(
+@@ -3236,6 +3265,69 @@ static SpvReflectResult ParseExecutionModes(
    return SPV_REFLECT_RESULT_SUCCESS;
    return SPV_REFLECT_RESULT_SUCCESS;
  }
  }
  
  
@@ -160,7 +160,7 @@ index e9b11bf495..f181df5fa2 100644
  static SpvReflectResult ParsePushConstantBlocks(
  static SpvReflectResult ParsePushConstantBlocks(
    SpvReflectPrvParser*    p_parser, 
    SpvReflectPrvParser*    p_parser, 
    SpvReflectShaderModule* p_module)
    SpvReflectShaderModule* p_module)
-@@ -3650,6 +3742,12 @@ static SpvReflectResult CreateShaderModule(
+@@ -3613,6 +3705,12 @@ SpvReflectResult spvReflectCreateShaderModule(
      result = ParsePushConstantBlocks(&parser, p_module);
      result = ParsePushConstantBlocks(&parser, p_module);
      SPV_REFLECT_ASSERT(result == SPV_REFLECT_RESULT_SUCCESS);
      SPV_REFLECT_ASSERT(result == SPV_REFLECT_RESULT_SUCCESS);
    }
    }
@@ -173,7 +173,7 @@ index e9b11bf495..f181df5fa2 100644
    if (result == SPV_REFLECT_RESULT_SUCCESS) {
    if (result == SPV_REFLECT_RESULT_SUCCESS) {
      result = ParseEntryPoints(&parser, p_module);
      result = ParseEntryPoints(&parser, p_module);
      SPV_REFLECT_ASSERT(result == SPV_REFLECT_RESULT_SUCCESS);
      SPV_REFLECT_ASSERT(result == SPV_REFLECT_RESULT_SUCCESS);
-@@ -3807,6 +3905,9 @@ void spvReflectDestroyShaderModule(SpvReflectShaderModule* p_module)
+@@ -3742,6 +3840,9 @@ void spvReflectDestroyShaderModule(SpvReflectShaderModule* p_module)
      SafeFree(p_entry->used_push_constants);
      SafeFree(p_entry->used_push_constants);
    }
    }
    SafeFree(p_module->entry_points);
    SafeFree(p_module->entry_points);
@@ -183,7 +183,7 @@ index e9b11bf495..f181df5fa2 100644
  
  
    // Push constants
    // Push constants
    for (size_t i = 0; i < p_module->push_constant_block_count; ++i) {
    for (size_t i = 0; i < p_module->push_constant_block_count; ++i) {
-@@ -4077,6 +4178,38 @@ SpvReflectResult spvReflectEnumerateEntryPointInterfaceVariables(
+@@ -4010,6 +4111,38 @@ SpvReflectResult spvReflectEnumerateEntryPointInterfaceVariables(
    return SPV_REFLECT_RESULT_SUCCESS;
    return SPV_REFLECT_RESULT_SUCCESS;
  }
  }
  
  
@@ -223,10 +223,10 @@ index e9b11bf495..f181df5fa2 100644
    const SpvReflectShaderModule* p_module,
    const SpvReflectShaderModule* p_module,
    uint32_t*                     p_count,
    uint32_t*                     p_count,
 diff --git a/thirdparty/spirv-reflect/spirv_reflect.h b/thirdparty/spirv-reflect/spirv_reflect.h
 diff --git a/thirdparty/spirv-reflect/spirv_reflect.h b/thirdparty/spirv-reflect/spirv_reflect.h
-index e9e4c40755..948533d3c0 100644
+index da05400973..50cc65222b 100644
 --- a/thirdparty/spirv-reflect/spirv_reflect.h
 --- a/thirdparty/spirv-reflect/spirv_reflect.h
 +++ b/thirdparty/spirv-reflect/spirv_reflect.h
 +++ b/thirdparty/spirv-reflect/spirv_reflect.h
-@@ -323,6 +323,28 @@ typedef struct SpvReflectTypeDescription {
+@@ -292,6 +292,28 @@ typedef struct SpvReflectTypeDescription {
    struct SpvReflectTypeDescription* members;
    struct SpvReflectTypeDescription* members;
  } SpvReflectTypeDescription;
  } SpvReflectTypeDescription;
  
  
@@ -255,7 +255,7 @@ index e9e4c40755..948533d3c0 100644
  
  
  /*! @struct SpvReflectInterfaceVariable
  /*! @struct SpvReflectInterfaceVariable
  
  
-@@ -472,6 +494,10 @@ typedef struct SpvReflectShaderModule {
+@@ -439,6 +461,10 @@ typedef struct SpvReflectShaderModule {
    SpvReflectInterfaceVariable*      interface_variables;                              // Uses value(s) from first entry point
    SpvReflectInterfaceVariable*      interface_variables;                              // Uses value(s) from first entry point
    uint32_t                          push_constant_block_count;                        // Uses value(s) from first entry point
    uint32_t                          push_constant_block_count;                        // Uses value(s) from first entry point
    SpvReflectBlockVariable*          push_constant_blocks;                             // Uses value(s) from first entry point
    SpvReflectBlockVariable*          push_constant_blocks;                             // Uses value(s) from first entry point
@@ -265,8 +265,8 @@ index e9e4c40755..948533d3c0 100644
 +  // -- GODOT end --
 +  // -- GODOT end --
  
  
    struct Internal {
    struct Internal {
-     SpvReflectModuleFlags           module_flags;
-@@ -744,6 +770,33 @@ SpvReflectResult spvReflectEnumerateInputVariables(
+     size_t                          spirv_size;
+@@ -694,6 +720,33 @@ SpvReflectResult spvReflectEnumerateInputVariables(
    SpvReflectInterfaceVariable** pp_variables
    SpvReflectInterfaceVariable** pp_variables
  );
  );
  
  

+ 67 - 144
thirdparty/spirv-reflect/spirv_reflect.c

@@ -1,5 +1,5 @@
 /*
 /*
- Copyright 2017-2022 Google Inc.
+ Copyright 2017-2018 Google Inc.
 
 
  Licensed under the Apache License, Version 2.0 (the "License");
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  you may not use this file except in compliance with the License.
@@ -110,7 +110,6 @@ typedef struct SpvReflectPrvStringDecoration {
 
 
 // clang-format off
 // clang-format off
 typedef struct SpvReflectPrvDecorations {
 typedef struct SpvReflectPrvDecorations {
-  bool                            is_relaxed_precision;
   bool                            is_block;
   bool                            is_block;
   bool                            is_buffer_block;
   bool                            is_buffer_block;
   bool                            is_row_major;
   bool                            is_row_major;
@@ -239,10 +238,12 @@ static uint32_t RoundUp(
 #define IsNotNull(ptr) \
 #define IsNotNull(ptr) \
   (ptr != NULL)
   (ptr != NULL)
 
 
-#define SafeFree(ptr)  \
-  {                    \
-     free((void*)ptr); \
-     ptr = NULL;       \
+#define SafeFree(ptr)    \
+  {                      \
+     if (ptr != NULL) {  \
+       free((void*)ptr); \
+       ptr = NULL;       \
+     }                   \
   }
   }
 
 
 static int SortCompareUint32(
 static int SortCompareUint32(
@@ -461,9 +462,6 @@ static SpvReflectResult ReadStr(
 static SpvReflectDecorationFlags ApplyDecorations(const SpvReflectPrvDecorations* p_decoration_fields)
 static SpvReflectDecorationFlags ApplyDecorations(const SpvReflectPrvDecorations* p_decoration_fields)
 {
 {
   SpvReflectDecorationFlags decorations = SPV_REFLECT_DECORATION_NONE;
   SpvReflectDecorationFlags decorations = SPV_REFLECT_DECORATION_NONE;
-  if (p_decoration_fields->is_relaxed_precision) {
-    decorations |= SPV_REFLECT_DECORATION_RELAXED_PRECISION;
-  }
   if (p_decoration_fields->is_block) {
   if (p_decoration_fields->is_block) {
     decorations |= SPV_REFLECT_DECORATION_BLOCK;
     decorations |= SPV_REFLECT_DECORATION_BLOCK;
   }
   }
@@ -1048,7 +1046,6 @@ static SpvReflectResult ParseFunction(
       case SpvOpGenericPtrMemSemantics:
       case SpvOpGenericPtrMemSemantics:
       case SpvOpInBoundsPtrAccessChain:
       case SpvOpInBoundsPtrAccessChain:
       case SpvOpStore:
       case SpvOpStore:
-      case SpvOpImageTexelPointer:
       {
       {
         ++(p_func->accessed_ptr_count);
         ++(p_func->accessed_ptr_count);
       }
       }
@@ -1100,7 +1097,6 @@ static SpvReflectResult ParseFunction(
       case SpvOpArrayLength:
       case SpvOpArrayLength:
       case SpvOpGenericPtrMemSemantics:
       case SpvOpGenericPtrMemSemantics:
       case SpvOpInBoundsPtrAccessChain:
       case SpvOpInBoundsPtrAccessChain:
-      case SpvOpImageTexelPointer:
       {
       {
         CHECKED_READU32(p_parser, p_node->word_offset + 3,
         CHECKED_READU32(p_parser, p_node->word_offset + 3,
                         p_func->accessed_ptrs[p_func->accessed_ptr_count]);
                         p_func->accessed_ptrs[p_func->accessed_ptr_count]);
@@ -1349,11 +1345,10 @@ static SpvReflectResult ParseDecorations(SpvReflectPrvParser* p_parser)
       default: {
       default: {
         skip = true;
         skip = true;
       }
       }
-      break;
+      break; 
 // -- GODOT begin --
 // -- GODOT begin --
       case SpvDecorationSpecId:
       case SpvDecorationSpecId:
 // -- GODOT end --
 // -- GODOT end --
-      case SpvDecorationRelaxedPrecision:
       case SpvDecorationBlock:
       case SpvDecorationBlock:
       case SpvDecorationBufferBlock:
       case SpvDecorationBufferBlock:
       case SpvDecorationColMajor:
       case SpvDecorationColMajor:
@@ -1384,11 +1379,6 @@ static SpvReflectResult ParseDecorations(SpvReflectPrvParser* p_parser)
     CHECKED_READU32(p_parser, p_node->word_offset + 1, target_id);
     CHECKED_READU32(p_parser, p_node->word_offset + 1, target_id);
     SpvReflectPrvNode* p_target_node = FindNode(p_parser, target_id);
     SpvReflectPrvNode* p_target_node = FindNode(p_parser, target_id);
     if (IsNull(p_target_node)) {
     if (IsNull(p_target_node)) {
-      if ((p_node->op == (uint32_t)SpvOpDecorate) && (decoration == SpvDecorationRelaxedPrecision)) {
-        // Many OPs can be decorated that we don't care about. Ignore those.
-        // See https://github.com/KhronosGroup/SPIRV-Reflect/issues/134
-        continue;
-      }
       return SPV_REFLECT_RESULT_ERROR_SPIRV_INVALID_ID_REFERENCE;
       return SPV_REFLECT_RESULT_ERROR_SPIRV_INVALID_ID_REFERENCE;
     }
     }
     // Get decorations
     // Get decorations
@@ -1403,11 +1393,6 @@ static SpvReflectResult ParseDecorations(SpvReflectPrvParser* p_parser)
     switch (decoration) {
     switch (decoration) {
       default: break;
       default: break;
 
 
-      case SpvDecorationRelaxedPrecision: {
-        p_target_decorations->is_relaxed_precision = true;
-      }
-      break;
-
       case SpvDecorationBlock: {
       case SpvDecorationBlock: {
         p_target_decorations->is_block = true;
         p_target_decorations->is_block = true;
       }
       }
@@ -1700,19 +1685,16 @@ static SpvReflectResult ParseType(
           // Get length for current dimension
           // Get length for current dimension
           SpvReflectPrvNode* p_length_node = FindNode(p_parser, length_id);
           SpvReflectPrvNode* p_length_node = FindNode(p_parser, length_id);
           if (IsNotNull(p_length_node)) {
           if (IsNotNull(p_length_node)) {
-            uint32_t dim_index = p_type->traits.array.dims_count;
             if (p_length_node->op == SpvOpSpecConstant ||
             if (p_length_node->op == SpvOpSpecConstant ||
                 p_length_node->op == SpvOpSpecConstantOp) {
                 p_length_node->op == SpvOpSpecConstantOp) {
-              p_type->traits.array.dims[dim_index] = 0xFFFFFFFF;
-              p_type->traits.array.spec_constant_op_ids[dim_index] = length_id;
+              p_type->traits.array.dims[p_type->traits.array.dims_count] = 0xFFFFFFFF;
               p_type->traits.array.dims_count += 1;
               p_type->traits.array.dims_count += 1;
             } else {
             } else {
               uint32_t length = 0;
               uint32_t length = 0;
               IF_READU32(result, p_parser, p_length_node->word_offset + 3, length);
               IF_READU32(result, p_parser, p_length_node->word_offset + 3, length);
               if (result == SPV_REFLECT_RESULT_SUCCESS) {
               if (result == SPV_REFLECT_RESULT_SUCCESS) {
                 // Write the array dim and increment the count and offset
                 // Write the array dim and increment the count and offset
-                p_type->traits.array.dims[dim_index] = length;
-                p_type->traits.array.spec_constant_op_ids[dim_index] = 0xFFFFFFFF;
+                p_type->traits.array.dims[p_type->traits.array.dims_count] = length;
                 p_type->traits.array.dims_count += 1;
                 p_type->traits.array.dims_count += 1;
               } else {
               } else {
                 result = SPV_REFLECT_RESULT_ERROR_SPIRV_INVALID_ID_REFERENCE;
                 result = SPV_REFLECT_RESULT_ERROR_SPIRV_INVALID_ID_REFERENCE;
@@ -1737,11 +1719,6 @@ static SpvReflectResult ParseType(
         p_type->type_flags |= SPV_REFLECT_TYPE_FLAG_ARRAY;
         p_type->type_flags |= SPV_REFLECT_TYPE_FLAG_ARRAY;
         uint32_t element_type_id = (uint32_t)INVALID_VALUE;
         uint32_t element_type_id = (uint32_t)INVALID_VALUE;
         IF_READU32(result, p_parser, p_node->word_offset + 2, element_type_id);
         IF_READU32(result, p_parser, p_node->word_offset + 2, element_type_id);
-        p_type->traits.array.stride = p_node->decorations.array_stride;
-        uint32_t dim_index = p_type->traits.array.dims_count;
-        p_type->traits.array.dims[dim_index] = 0;
-        p_type->traits.array.spec_constant_op_ids[dim_index] = 0;
-        p_type->traits.array.dims_count += 1;
         // Parse next dimension or element type
         // Parse next dimension or element type
         SpvReflectPrvNode* p_next_node = FindNode(p_parser, element_type_id);
         SpvReflectPrvNode* p_next_node = FindNode(p_parser, element_type_id);
         if (IsNotNull(p_next_node)) {
         if (IsNotNull(p_next_node)) {
@@ -2198,19 +2175,22 @@ static SpvReflectResult ParseDescriptorBlockVariable(
       return SPV_REFLECT_RESULT_ERROR_SPIRV_INVALID_ID_REFERENCE;
       return SPV_REFLECT_RESULT_ERROR_SPIRV_INVALID_ID_REFERENCE;
     }
     }
     // Resolve to element type if current type is array or run time array
     // Resolve to element type if current type is array or run time array
-    while (p_type_node->op == SpvOpTypeArray || p_type_node->op == SpvOpTypeRuntimeArray) {
-      if (p_type_node->op == SpvOpTypeArray) {
+    if (p_type_node->op == SpvOpTypeArray) {
+      while (p_type_node->op == SpvOpTypeArray) {
         p_type_node = FindNode(p_parser, p_type_node->array_traits.element_type_id);
         p_type_node = FindNode(p_parser, p_type_node->array_traits.element_type_id);
-      }
-      else {
-        // Element type description
-        SpvReflectTypeDescription* p_type_temp = FindType(p_module, p_type_node->array_traits.element_type_id);
-        if (IsNull(p_type_temp)) {
+        if (IsNull(p_type_node)) {
           return SPV_REFLECT_RESULT_ERROR_SPIRV_INVALID_ID_REFERENCE;
           return SPV_REFLECT_RESULT_ERROR_SPIRV_INVALID_ID_REFERENCE;
         }
         }
-        // Element type node
-        p_type_node = FindNode(p_parser, p_type_temp->id);
       }
       }
+    }
+    else if(p_type_node->op == SpvOpTypeRuntimeArray) {
+      // Element type description
+      p_type = FindType(p_module, p_type_node->array_traits.element_type_id);
+      if (IsNull(p_type)) {
+        return SPV_REFLECT_RESULT_ERROR_SPIRV_INVALID_ID_REFERENCE;
+      }
+      // Element type node
+      p_type_node = FindNode(p_parser, p_type->id);
       if (IsNull(p_type_node)) {
       if (IsNull(p_type_node)) {
         return SPV_REFLECT_RESULT_ERROR_SPIRV_INVALID_ID_REFERENCE;
         return SPV_REFLECT_RESULT_ERROR_SPIRV_INVALID_ID_REFERENCE;
       }
       }
@@ -2682,7 +2662,6 @@ static SpvReflectResult ParseFormat(
 
 
 static SpvReflectResult ParseInterfaceVariable(
 static SpvReflectResult ParseInterfaceVariable(
   SpvReflectPrvParser*            p_parser,
   SpvReflectPrvParser*            p_parser,
-  const SpvReflectPrvDecorations* p_var_node_decorations,
   const SpvReflectPrvDecorations* p_type_node_decorations,
   const SpvReflectPrvDecorations* p_type_node_decorations,
   SpvReflectShaderModule*         p_module,
   SpvReflectShaderModule*         p_module,
   SpvReflectTypeDescription*      p_type,
   SpvReflectTypeDescription*      p_type,
@@ -2706,7 +2685,7 @@ static SpvReflectResult ParseInterfaceVariable(
       SpvReflectPrvDecorations* p_member_decorations = &p_type_node->member_decorations[member_index];
       SpvReflectPrvDecorations* p_member_decorations = &p_type_node->member_decorations[member_index];
       SpvReflectTypeDescription* p_member_type = &p_type->members[member_index];
       SpvReflectTypeDescription* p_member_type = &p_type->members[member_index];
       SpvReflectInterfaceVariable* p_member_var = &p_var->members[member_index];
       SpvReflectInterfaceVariable* p_member_var = &p_var->members[member_index];
-      SpvReflectResult result = ParseInterfaceVariable(p_parser, NULL, p_member_decorations, p_module, p_member_type, p_member_var, p_has_built_in);
+      SpvReflectResult result = ParseInterfaceVariable(p_parser, p_member_decorations, p_module, p_member_type, p_member_var, p_has_built_in);
       if (result != SPV_REFLECT_RESULT_SUCCESS) {
       if (result != SPV_REFLECT_RESULT_SUCCESS) {
         SPV_REFLECT_ASSERT(false);
         SPV_REFLECT_ASSERT(false);
         return result;
         return result;
@@ -2716,9 +2695,6 @@ static SpvReflectResult ParseInterfaceVariable(
 
 
   p_var->name = p_type_node->name;
   p_var->name = p_type_node->name;
   p_var->decoration_flags = ApplyDecorations(p_type_node_decorations);
   p_var->decoration_flags = ApplyDecorations(p_type_node_decorations);
-  if (p_var_node_decorations != NULL) {
-    p_var->decoration_flags |= ApplyDecorations(p_var_node_decorations);
-  }
   p_var->built_in = p_type_node_decorations->built_in;
   p_var->built_in = p_type_node_decorations->built_in;
   ApplyNumericTraits(p_type, &p_var->numeric);
   ApplyNumericTraits(p_type, &p_var->numeric);
   if (p_type->op == SpvOpTypeArray) {
   if (p_type->op == SpvOpTypeArray) {
@@ -2754,21 +2730,21 @@ static SpvReflectResult ParseInterfaceVariables(
   }
   }
 
 
   p_entry->interface_variable_count = interface_variable_count;
   p_entry->interface_variable_count = interface_variable_count;
-  p_entry->input_variable_count = 0;
-  p_entry->output_variable_count = 0;  
-  for (size_t i = 0; i < interface_variable_count; ++i) {
-    uint32_t var_result_id = *(p_interface_variable_ids + i);
-    SpvReflectPrvNode* p_node = FindNode(p_parser, var_result_id);
-    if (IsNull(p_node)) {
-      return SPV_REFLECT_RESULT_ERROR_SPIRV_INVALID_ID_REFERENCE;
-    }
+ p_entry->input_variable_count = 0;
+ p_entry->output_variable_count = 0;  
+ for (size_t i = 0; i < interface_variable_count; ++i) {
+   uint32_t var_result_id = *(p_interface_variable_ids + i);
+   SpvReflectPrvNode* p_node = FindNode(p_parser, var_result_id);
+   if (IsNull(p_node)) {
+     return SPV_REFLECT_RESULT_ERROR_SPIRV_INVALID_ID_REFERENCE;
+   }
  
  
-    if (p_node->storage_class == SpvStorageClassInput) {
-      p_entry->input_variable_count += 1;
-    }
-    else if (p_node->storage_class == SpvStorageClassOutput) {
-      p_entry->output_variable_count += 1;
-    }
+   if (p_node->storage_class == SpvStorageClassInput) {
+     p_entry->input_variable_count += 1;
+   }
+   else if (p_node->storage_class == SpvStorageClassOutput) {
+     p_entry->output_variable_count += 1;
+   }
  }
  }
  
  
  if (p_entry->input_variable_count > 0) {
  if (p_entry->input_variable_count > 0) {
@@ -2830,7 +2806,6 @@ static SpvReflectResult ParseInterfaceVariables(
     bool has_built_in = p_node->decorations.is_built_in;
     bool has_built_in = p_node->decorations.is_built_in;
     SpvReflectResult result = ParseInterfaceVariable(
     SpvReflectResult result = ParseInterfaceVariable(
       p_parser,
       p_parser,
-      &p_node->decorations,
       &p_type_node->decorations,
       &p_type_node->decorations,
       p_module,
       p_module,
       p_type,
       p_type,
@@ -3233,11 +3208,7 @@ static SpvReflectResult ParseExecutionModes(
         }
         }
         break;
         break;
 
 
-        case SpvExecutionModeInvocations: {
-          CHECKED_READU32(p_parser, p_node->word_offset + 3, p_entry_point->invocations);
-        }
-        break;
-
+        case SpvExecutionModeInvocations:
         case SpvExecutionModeSpacingEqual:
         case SpvExecutionModeSpacingEqual:
         case SpvExecutionModeSpacingFractionalEven:
         case SpvExecutionModeSpacingFractionalEven:
         case SpvExecutionModeSpacingFractionalOdd:
         case SpvExecutionModeSpacingFractionalOdd:
@@ -3260,7 +3231,7 @@ static SpvReflectResult ParseExecutionModes(
           CHECKED_READU32(p_parser, p_node->word_offset + 4, p_entry_point->local_size.y);
           CHECKED_READU32(p_parser, p_node->word_offset + 4, p_entry_point->local_size.y);
           CHECKED_READU32(p_parser, p_node->word_offset + 5, p_entry_point->local_size.z);
           CHECKED_READU32(p_parser, p_node->word_offset + 5, p_entry_point->local_size.z);
         }
         }
-        break;
+        break;                                        
 
 
         case SpvExecutionModeLocalSizeHint:
         case SpvExecutionModeLocalSizeHint:
         case SpvExecutionModeInputPoints:
         case SpvExecutionModeInputPoints:
@@ -3270,11 +3241,7 @@ static SpvReflectResult ParseExecutionModes(
         case SpvExecutionModeInputTrianglesAdjacency:
         case SpvExecutionModeInputTrianglesAdjacency:
         case SpvExecutionModeQuads:
         case SpvExecutionModeQuads:
         case SpvExecutionModeIsolines:
         case SpvExecutionModeIsolines:
-        case SpvExecutionModeOutputVertices: {
-          CHECKED_READU32(p_parser, p_node->word_offset + 3, p_entry_point->output_vertices);
-        }
-        break;
-
+        case SpvExecutionModeOutputVertices:
         case SpvExecutionModeOutputPoints:
         case SpvExecutionModeOutputPoints:
         case SpvExecutionModeOutputLineStrip:
         case SpvExecutionModeOutputLineStrip:
         case SpvExecutionModeOutputTriangleStrip:
         case SpvExecutionModeOutputTriangleStrip:
@@ -3624,8 +3591,16 @@ static SpvReflectResult SynchronizeDescriptorSets(SpvReflectShaderModule* p_modu
   return result;
   return result;
 }
 }
 
 
-static SpvReflectResult CreateShaderModule(
-  uint32_t                 flags,
+SpvReflectResult spvReflectGetShaderModule(
+  size_t                   size,
+  const void*              p_code,
+  SpvReflectShaderModule*  p_module
+)
+{
+  return spvReflectCreateShaderModule(size, p_code, p_module);
+}
+
+SpvReflectResult spvReflectCreateShaderModule(
   size_t                   size,
   size_t                   size,
   const void*              p_code,
   const void*              p_code,
   SpvReflectShaderModule*  p_module
   SpvReflectShaderModule*  p_module
@@ -3643,27 +3618,15 @@ static SpvReflectResult CreateShaderModule(
   if (IsNull(p_module->_internal)) {
   if (IsNull(p_module->_internal)) {
     return SPV_REFLECT_RESULT_ERROR_ALLOC_FAILED;
     return SPV_REFLECT_RESULT_ERROR_ALLOC_FAILED;
   }
   }
-  // Copy flags
-  p_module->_internal->module_flags = flags;
-  // Figure out if we need to copy the SPIR-V code or not
-  if (flags & SPV_REFLECT_MODULE_FLAG_NO_COPY) {
-    // Set internal size and pointer to args passed in
-    p_module->_internal->spirv_size = size;
-    p_module->_internal->spirv_code = (void*)p_code; // cast that const away
-    p_module->_internal->spirv_word_count = (uint32_t)(size / SPIRV_WORD_SIZE);
-  }
-  else {
-    // Allocate SPIR-V code storage
-    p_module->_internal->spirv_size = size;
-    p_module->_internal->spirv_code = (uint32_t*)calloc(1, p_module->_internal->spirv_size);
-    p_module->_internal->spirv_word_count = (uint32_t)(size / SPIRV_WORD_SIZE);
-    if (IsNull(p_module->_internal->spirv_code)) {
-      SafeFree(p_module->_internal);
-      return SPV_REFLECT_RESULT_ERROR_ALLOC_FAILED;
-    }
-    // Copy SPIR-V to code storage
-    memcpy(p_module->_internal->spirv_code, p_code, size);
+  // Allocate SPIR-V code storage
+  p_module->_internal->spirv_size = size;
+  p_module->_internal->spirv_code = (uint32_t*)calloc(1, p_module->_internal->spirv_size);
+  p_module->_internal->spirv_word_count = (uint32_t)(size / SPIRV_WORD_SIZE);
+  if (IsNull(p_module->_internal->spirv_code)) {
+    SafeFree(p_module->_internal);
+    return SPV_REFLECT_RESULT_ERROR_ALLOC_FAILED;
   }
   }
+  memcpy(p_module->_internal->spirv_code, p_code, size);
 
 
   SpvReflectPrvParser parser = { 0 };
   SpvReflectPrvParser parser = { 0 };
   SpvReflectResult result = CreateParser(p_module->_internal->spirv_size,
   SpvReflectResult result = CreateParser(p_module->_internal->spirv_size,
@@ -3788,34 +3751,6 @@ static SpvReflectResult CreateShaderModule(
   return result;
   return result;
 }
 }
 
 
-SpvReflectResult spvReflectCreateShaderModule(
-  size_t                   size,
-  const void*              p_code,
-  SpvReflectShaderModule*  p_module
-)
-{
-    return CreateShaderModule(0, size, p_code, p_module);
-}
-
-SpvReflectResult spvReflectCreateShaderModule2(
-  uint32_t                 flags,
-  size_t                   size,
-  const void*              p_code,
-  SpvReflectShaderModule*  p_module
-)
-{
-  return CreateShaderModule(flags, size, p_code, p_module);
-}
-
-SpvReflectResult spvReflectGetShaderModule(
-  size_t                   size,
-  const void*              p_code,
-  SpvReflectShaderModule*  p_module
-)
-{
-    return spvReflectCreateShaderModule(size, p_code, p_module);
-}
-
 static void SafeFreeTypes(SpvReflectTypeDescription* p_type)
 static void SafeFreeTypes(SpvReflectTypeDescription* p_type)
 {
 {
   if (IsNull(p_type)) {
   if (IsNull(p_type)) {
@@ -3925,10 +3860,8 @@ void spvReflectDestroyShaderModule(SpvReflectShaderModule* p_module)
   }
   }
   SafeFree(p_module->_internal->type_descriptions);
   SafeFree(p_module->_internal->type_descriptions);
 
 
-  // Free SPIR-V code if there was a copy
-  if ((p_module->_internal->module_flags & SPV_REFLECT_MODULE_FLAG_NO_COPY) == 0) {
-    SafeFree(p_module->_internal->spirv_code);
-  }
+  // Free SPIR-V code
+  SafeFree(p_module->_internal->spirv_code);
   // Free internal
   // Free internal
   SafeFree(p_module->_internal);
   SafeFree(p_module->_internal);
 }
 }
@@ -5086,25 +5019,15 @@ SpvReflectResult spvReflectChangeOutputVariableLocation(
 const char* spvReflectSourceLanguage(SpvSourceLanguage source_lang)
 const char* spvReflectSourceLanguage(SpvSourceLanguage source_lang)
 {
 {
   switch (source_lang) {
   switch (source_lang) {
-    case SpvSourceLanguageUnknown        : return "Unknown";
-    case SpvSourceLanguageESSL           : return "ESSL";
-    case SpvSourceLanguageGLSL           : return "GLSL";
-    case SpvSourceLanguageOpenCL_C       : return "OpenCL_C";
-    case SpvSourceLanguageOpenCL_CPP     : return "OpenCL_CPP";
-    case SpvSourceLanguageHLSL           : return "HLSL";
-    case SpvSourceLanguageCPP_for_OpenCL : return "CPP_for_OpenCL";
+    case SpvSourceLanguageUnknown    : return "Unknown";
+    case SpvSourceLanguageESSL       : return "ESSL";
+    case SpvSourceLanguageGLSL       : return "GLSL";
+    case SpvSourceLanguageOpenCL_C   : return "OpenCL_C";
+    case SpvSourceLanguageOpenCL_CPP : return "OpenCL_CPP";
+    case SpvSourceLanguageHLSL       : return "HLSL";
+
     case SpvSourceLanguageMax:
     case SpvSourceLanguageMax:
       break;
       break;
   }
   }
   return "";
   return "";
 }
 }
-
-const char* spvReflectBlockVariableTypeName(
-  const SpvReflectBlockVariable* p_var
-)
-{
-    if (p_var == NULL) {
-        return NULL;
-    }
-    return p_var->type_description->type_name;
-}

+ 17 - 80
thirdparty/spirv-reflect/spirv_reflect.h

@@ -1,5 +1,5 @@
 /*
 /*
- Copyright 2017-2022 Google Inc.
+ Copyright 2017-2018 Google Inc.
 
 
  Licensed under the Apache License, Version 2.0 (the "License");
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  you may not use this file except in compliance with the License.
@@ -76,25 +76,6 @@ typedef enum SpvReflectResult {
   SPV_REFLECT_RESULT_ERROR_SPIRV_INVALID_EXECUTION_MODE,
   SPV_REFLECT_RESULT_ERROR_SPIRV_INVALID_EXECUTION_MODE,
 } SpvReflectResult;
 } SpvReflectResult;
 
 
-/*! @enum SpvReflectModuleFlagBits
-
-SPV_REFLECT_MODULE_FLAG_NO_COPY - Disables copying of SPIR-V code 
-  when a SPIRV-Reflect shader module is created. It is the 
-  responsibility of the calling program to ensure that the pointer
-  remains valid and the memory it's pointing to is not freed while
-  SPIRV-Reflect operations are taking place. Freeing the backing 
-  memory will cause undefined behavior or most likely a crash.
-  This is flag is intended for cases where the memory overhead of
-  storing the copied SPIR-V is undesirable.
-
-*/
-typedef enum SpvReflectModuleFlagBits {
-  SPV_REFLECT_MODULE_FLAG_NONE    = 0x00000000,
-  SPV_REFLECT_MODULE_FLAG_NO_COPY = 0x00000001,
-} SpvReflectModuleFlagBits;
-
-typedef uint32_t SpvReflectModuleFlags;
-
 /*! @enum SpvReflectTypeFlagBits
 /*! @enum SpvReflectTypeFlagBits
 
 
 */
 */
@@ -120,13 +101,6 @@ typedef uint32_t SpvReflectTypeFlags;
 
 
 /*! @enum SpvReflectDecorationBits
 /*! @enum SpvReflectDecorationBits
 
 
-NOTE: HLSL row_major and column_major decorations are reversed
-      in SPIR-V. Meaning that matrices declrations with row_major
-      will get reflected as column_major and vice versa. The
-      row and column decorations get appied during the compilation.
-      SPIRV-Reflect reads the data as is and does not make any
-      attempt to correct it to match what's in the source.
-
 */
 */
 typedef enum SpvReflectDecorationFlagBits {
 typedef enum SpvReflectDecorationFlagBits {
   SPV_REFLECT_DECORATION_NONE                   = 0x00000000,
   SPV_REFLECT_DECORATION_NONE                   = 0x00000000,
@@ -138,7 +112,6 @@ typedef enum SpvReflectDecorationFlagBits {
   SPV_REFLECT_DECORATION_NOPERSPECTIVE          = 0x00000020,
   SPV_REFLECT_DECORATION_NOPERSPECTIVE          = 0x00000020,
   SPV_REFLECT_DECORATION_FLAT                   = 0x00000040,
   SPV_REFLECT_DECORATION_FLAT                   = 0x00000040,
   SPV_REFLECT_DECORATION_NON_WRITABLE           = 0x00000080,
   SPV_REFLECT_DECORATION_NON_WRITABLE           = 0x00000080,
-  SPV_REFLECT_DECORATION_RELAXED_PRECISION      = 0x00000100,
 } SpvReflectDecorationFlagBits;
 } SpvReflectDecorationFlagBits;
 
 
 typedef uint32_t SpvReflectDecorationFlags;
 typedef uint32_t SpvReflectDecorationFlags;
@@ -225,12 +198,12 @@ typedef enum SpvReflectShaderStageFlagBits {
   SPV_REFLECT_SHADER_STAGE_COMPUTE_BIT                 = 0x00000020, // = VK_SHADER_STAGE_COMPUTE_BIT
   SPV_REFLECT_SHADER_STAGE_COMPUTE_BIT                 = 0x00000020, // = VK_SHADER_STAGE_COMPUTE_BIT
   SPV_REFLECT_SHADER_STAGE_TASK_BIT_NV                 = 0x00000040, // = VK_SHADER_STAGE_TASK_BIT_NV
   SPV_REFLECT_SHADER_STAGE_TASK_BIT_NV                 = 0x00000040, // = VK_SHADER_STAGE_TASK_BIT_NV
   SPV_REFLECT_SHADER_STAGE_MESH_BIT_NV                 = 0x00000080, // = VK_SHADER_STAGE_MESH_BIT_NV
   SPV_REFLECT_SHADER_STAGE_MESH_BIT_NV                 = 0x00000080, // = VK_SHADER_STAGE_MESH_BIT_NV
-  SPV_REFLECT_SHADER_STAGE_RAYGEN_BIT_KHR              = 0x00000100, // = VK_SHADER_STAGE_RAYGEN_BIT_KHR
-  SPV_REFLECT_SHADER_STAGE_ANY_HIT_BIT_KHR             = 0x00000200, // = VK_SHADER_STAGE_ANY_HIT_BIT_KHR
-  SPV_REFLECT_SHADER_STAGE_CLOSEST_HIT_BIT_KHR         = 0x00000400, // = VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR
-  SPV_REFLECT_SHADER_STAGE_MISS_BIT_KHR                = 0x00000800, // = VK_SHADER_STAGE_MISS_BIT_KHR
-  SPV_REFLECT_SHADER_STAGE_INTERSECTION_BIT_KHR        = 0x00001000, // = VK_SHADER_STAGE_INTERSECTION_BIT_KHR
-  SPV_REFLECT_SHADER_STAGE_CALLABLE_BIT_KHR            = 0x00002000, // = VK_SHADER_STAGE_CALLABLE_BIT_KHR
+  SPV_REFLECT_SHADER_STAGE_RAYGEN_BIT_KHR              = 0x00000100, // VK_SHADER_STAGE_RAYGEN_BIT_KHR
+  SPV_REFLECT_SHADER_STAGE_ANY_HIT_BIT_KHR             = 0x00000200, // VK_SHADER_STAGE_ANY_HIT_BIT_KHR
+  SPV_REFLECT_SHADER_STAGE_CLOSEST_HIT_BIT_KHR         = 0x00000400, // VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR
+  SPV_REFLECT_SHADER_STAGE_MISS_BIT_KHR                = 0x00000800, // VK_SHADER_STAGE_MISS_BIT_KHR
+  SPV_REFLECT_SHADER_STAGE_INTERSECTION_BIT_KHR        = 0x00001000, // VK_SHADER_STAGE_INTERSECTION_BIT_KHR
+  SPV_REFLECT_SHADER_STAGE_CALLABLE_BIT_KHR            = 0x00002000, // VK_SHADER_STAGE_CALLABLE_BIT_KHR
 
 
 } SpvReflectShaderStageFlagBits;
 } SpvReflectShaderStageFlagBits;
 
 
@@ -288,11 +261,7 @@ typedef struct SpvReflectImageTraits {
 
 
 typedef struct SpvReflectArrayTraits {
 typedef struct SpvReflectArrayTraits {
   uint32_t                          dims_count;
   uint32_t                          dims_count;
-  // Each entry is: 0xFFFFFFFF for a specialization constant dimension,
-  // 0 for a runtime array dimension, and the array length otherwise.
   uint32_t                          dims[SPV_REFLECT_MAX_ARRAY_DIMS];
   uint32_t                          dims[SPV_REFLECT_MAX_ARRAY_DIMS];
-  // Stores Ids for dimensions that are specialization constants
-  uint32_t                          spec_constant_op_ids[SPV_REFLECT_MAX_ARRAY_DIMS];
   uint32_t                          stride; // Measured in bytes
   uint32_t                          stride; // Measured in bytes
 } SpvReflectArrayTraits;
 } SpvReflectArrayTraits;
 
 
@@ -463,8 +432,6 @@ typedef struct SpvReflectEntryPoint {
     uint32_t                        y;
     uint32_t                        y;
     uint32_t                        z;
     uint32_t                        z;
   } local_size;
   } local_size;
-  uint32_t                          invocations; // valid for geometry
-  uint32_t                          output_vertices; // valid for geometry, tesselation
 } SpvReflectEntryPoint;
 } SpvReflectEntryPoint;
 
 
 /*! @struct SpvReflectShaderModule
 /*! @struct SpvReflectShaderModule
@@ -500,7 +467,6 @@ typedef struct SpvReflectShaderModule {
   // -- GODOT end --
   // -- GODOT end --
 
 
   struct Internal {
   struct Internal {
-    SpvReflectModuleFlags           module_flags;
     size_t                          spirv_size;
     size_t                          spirv_size;
     uint32_t*                       spirv_code;
     uint32_t*                       spirv_code;
     uint32_t                        spirv_word_count;
     uint32_t                        spirv_word_count;
@@ -529,22 +495,6 @@ SpvReflectResult spvReflectCreateShaderModule(
   SpvReflectShaderModule*  p_module
   SpvReflectShaderModule*  p_module
 );
 );
 
 
-/*! @fn spvReflectCreateShaderModule2
-
- @param  flags     Flags for module creations.
- @param  size      Size in bytes of SPIR-V code.
- @param  p_code    Pointer to SPIR-V code.
- @param  p_module  Pointer to an instance of SpvReflectShaderModule.
- @return           SPV_REFLECT_RESULT_SUCCESS on success.
-
-*/
-SpvReflectResult spvReflectCreateShaderModule2(
-  SpvReflectModuleFlags    flags,
-  size_t                   size,
-  const void*              p_code,
-  SpvReflectShaderModule*  p_module
-);
-
 SPV_REFLECT_DEPRECATED("renamed to spvReflectCreateShaderModule")
 SPV_REFLECT_DEPRECATED("renamed to spvReflectCreateShaderModule")
 SpvReflectResult spvReflectGetShaderModule(
 SpvReflectResult spvReflectGetShaderModule(
   size_t                   size,
   size_t                   size,
@@ -1432,7 +1382,7 @@ SpvReflectResult spvReflectChangeInputVariableLocation(
          by multiple entry points in the module, it will be changed in all of
          by multiple entry points in the module, it will be changed in all of
          them.
          them.
  @param  p_module          Pointer to an instance of SpvReflectShaderModule.
  @param  p_module          Pointer to an instance of SpvReflectShaderModule.
- @param  p_output_variable Pointer to the output variable to update.
+ @param  p_output_variable  Pointer to the output variable to update.
  @param  new_location      The new location to assign to p_output_variable.
  @param  new_location      The new location to assign to p_output_variable.
  @return                   If successful, returns SPV_REFLECT_RESULT_SUCCESS.
  @return                   If successful, returns SPV_REFLECT_RESULT_SUCCESS.
                            Otherwise, the error code indicates the cause of
                            Otherwise, the error code indicates the cause of
@@ -1454,16 +1404,6 @@ SpvReflectResult spvReflectChangeOutputVariableLocation(
 */
 */
 const char* spvReflectSourceLanguage(SpvSourceLanguage source_lang);
 const char* spvReflectSourceLanguage(SpvSourceLanguage source_lang);
 
 
-/*! @fn spvReflectBlockVariableTypeName
-
- @param  p_var Pointer to block variable.
- @return Returns string of block variable's type description type name
-         or NULL if p_var is NULL.
-*/
-const char* spvReflectBlockVariableTypeName(
-  const SpvReflectBlockVariable* p_var
-);
-
 #if defined(__cplusplus)
 #if defined(__cplusplus)
 };
 };
 #endif
 #endif
@@ -1481,9 +1421,9 @@ namespace spv_reflect {
 class ShaderModule {
 class ShaderModule {
 public:
 public:
   ShaderModule();
   ShaderModule();
-  ShaderModule(size_t size, const void* p_code, SpvReflectModuleFlags flags = SPV_REFLECT_MODULE_FLAG_NONE);
-  ShaderModule(const std::vector<uint8_t>& code, SpvReflectModuleFlags flags = SPV_REFLECT_MODULE_FLAG_NONE);
-  ShaderModule(const std::vector<uint32_t>& code, SpvReflectModuleFlags flags = SPV_REFLECT_MODULE_FLAG_NONE);
+  ShaderModule(size_t size, const void* p_code);
+  ShaderModule(const std::vector<uint8_t>& code);
+  ShaderModule(const std::vector<uint32_t>& code);
   ~ShaderModule();
   ~ShaderModule();
 
 
   ShaderModule(ShaderModule&& other);
   ShaderModule(ShaderModule&& other);
@@ -1593,9 +1533,8 @@ inline ShaderModule::ShaderModule() {}
   @param  p_code
   @param  p_code
 
 
 */
 */
-inline ShaderModule::ShaderModule(size_t size, const void* p_code, SpvReflectModuleFlags flags) {
-  m_result = spvReflectCreateShaderModule2(
-    flags,
+inline ShaderModule::ShaderModule(size_t size, const void* p_code) {
+  m_result = spvReflectCreateShaderModule(
     size,
     size,
     p_code,
     p_code,
     &m_module);
     &m_module);
@@ -1606,9 +1545,8 @@ inline ShaderModule::ShaderModule(size_t size, const void* p_code, SpvReflectMod
   @param  code
   @param  code
   
   
 */
 */
-inline ShaderModule::ShaderModule(const std::vector<uint8_t>& code, SpvReflectModuleFlags flags) {
-  m_result = spvReflectCreateShaderModule2(
-    flags,
+inline ShaderModule::ShaderModule(const std::vector<uint8_t>& code) {
+  m_result = spvReflectCreateShaderModule(
     code.size(),
     code.size(),
     code.data(),
     code.data(),
     &m_module);
     &m_module);
@@ -1619,9 +1557,8 @@ inline ShaderModule::ShaderModule(const std::vector<uint8_t>& code, SpvReflectMo
   @param  code
   @param  code
   
   
 */
 */
-inline ShaderModule::ShaderModule(const std::vector<uint32_t>& code, SpvReflectModuleFlags flags) {
-  m_result = spvReflectCreateShaderModule2(
-    flags,
+inline ShaderModule::ShaderModule(const std::vector<uint32_t>& code) {
+  m_result = spvReflectCreateShaderModule(
     code.size() * sizeof(uint32_t),
     code.size() * sizeof(uint32_t),
     code.data(),
     code.data(),
     &m_module);
     &m_module);