summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2022-02-11 17:49:45 +0100
committerRémi Verschelde <rverschelde@gmail.com>2022-02-11 17:49:45 +0100
commite11f0d9bfd2d7ceae9f8d3c3fd7dd3422bb9edf6 (patch)
treeae44bc3c80d942b4ec7161e2ad6427bac8102e01
parent882ef8284ac2de66b5f8855a3bf3b1ad225e307b (diff)
Revert "spirv-reflect: Update to latest commit, adds SPIRV 1.6 support"
This reverts commit 912c2062e6ce38b2aaff6b87920ef4d2ef307555.
-rw-r--r--thirdparty/README.md2
-rw-r--r--thirdparty/spirv-reflect/include/spirv/unified1/spirv.h320
-rw-r--r--thirdparty/spirv-reflect/patches/specialization-constants.patch38
-rw-r--r--thirdparty/spirv-reflect/spirv_reflect.c211
-rw-r--r--thirdparty/spirv-reflect/spirv_reflect.h97
5 files changed, 111 insertions, 557 deletions
diff --git a/thirdparty/README.md b/thirdparty/README.md
index 012087526c..a23920225e 100644
--- a/thirdparty/README.md
+++ b/thirdparty/README.md
@@ -552,7 +552,7 @@ Godot. Please check the file to know what's new.
## spirv-reflect
- Upstream: https://github.com/KhronosGroup/SPIRV-Reflect
-- Version: git (1aceb6af56e74b92a00378842dda5c5a73f49a4b, 2022)
+- Version: git (cc937caab141d889c9c9dff572c5a6854d5cf9b4, 2021)
- License: Apache 2.0
Does not track Vulkan SDK releases closely, but try to package a commit newer
diff --git a/thirdparty/spirv-reflect/include/spirv/unified1/spirv.h b/thirdparty/spirv-reflect/include/spirv/unified1/spirv.h
index c15736e255..949f1980e7 100644
--- a/thirdparty/spirv-reflect/include/spirv/unified1/spirv.h
+++ b/thirdparty/spirv-reflect/include/spirv/unified1/spirv.h
@@ -53,12 +53,12 @@
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 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 SpvWordCountShift = 16;
@@ -69,7 +69,6 @@ typedef enum SpvSourceLanguage_ {
SpvSourceLanguageOpenCL_C = 3,
SpvSourceLanguageOpenCL_CPP = 4,
SpvSourceLanguageHLSL = 5,
- SpvSourceLanguageCPP_for_OpenCL = 6,
SpvSourceLanguageMax = 0x7fffffff,
} SpvSourceLanguage;
@@ -155,7 +154,6 @@ typedef enum SpvExecutionMode_ {
SpvExecutionModeSubgroupsPerWorkgroupId = 37,
SpvExecutionModeLocalSizeId = 38,
SpvExecutionModeLocalSizeHintId = 39,
- SpvExecutionModeSubgroupUniformControlFlowKHR = 4421,
SpvExecutionModePostDepthCoverage = 4446,
SpvExecutionModeDenormPreserve = 4459,
SpvExecutionModeDenormFlushToZero = 4460,
@@ -174,16 +172,10 @@ typedef enum SpvExecutionMode_ {
SpvExecutionModeSampleInterlockUnorderedEXT = 5369,
SpvExecutionModeShadingRateInterlockOrderedEXT = 5370,
SpvExecutionModeShadingRateInterlockUnorderedEXT = 5371,
- SpvExecutionModeSharedLocalMemorySizeINTEL = 5618,
- SpvExecutionModeRoundingModeRTPINTEL = 5620,
- SpvExecutionModeRoundingModeRTNINTEL = 5621,
- SpvExecutionModeFloatingPointModeALTINTEL = 5622,
- SpvExecutionModeFloatingPointModeIEEEINTEL = 5623,
SpvExecutionModeMaxWorkgroupSizeINTEL = 5893,
SpvExecutionModeMaxWorkDimINTEL = 5894,
SpvExecutionModeNoGlobalOffsetINTEL = 5895,
SpvExecutionModeNumSIMDWorkitemsINTEL = 5896,
- SpvExecutionModeSchedulerTargetFmaxMhzINTEL = 5903,
SpvExecutionModeMax = 0x7fffffff,
} SpvExecutionMode;
@@ -216,8 +208,6 @@ typedef enum SpvStorageClass_ {
SpvStorageClassPhysicalStorageBuffer = 5349,
SpvStorageClassPhysicalStorageBufferEXT = 5349,
SpvStorageClassCodeSectionINTEL = 5605,
- SpvStorageClassDeviceOnlyINTEL = 5936,
- SpvStorageClassHostOnlyINTEL = 5937,
SpvStorageClassMax = 0x7fffffff,
} SpvStorageClass;
@@ -357,8 +347,6 @@ typedef enum SpvImageOperandsShift_ {
SpvImageOperandsVolatileTexelKHRShift = 11,
SpvImageOperandsSignExtendShift = 12,
SpvImageOperandsZeroExtendShift = 13,
- SpvImageOperandsNontemporalShift = 14,
- SpvImageOperandsOffsetsShift = 16,
SpvImageOperandsMax = 0x7fffffff,
} SpvImageOperandsShift;
@@ -382,8 +370,6 @@ typedef enum SpvImageOperandsMask_ {
SpvImageOperandsVolatileTexelKHRMask = 0x00000800,
SpvImageOperandsSignExtendMask = 0x00001000,
SpvImageOperandsZeroExtendMask = 0x00002000,
- SpvImageOperandsNontemporalMask = 0x00004000,
- SpvImageOperandsOffsetsMask = 0x00010000,
} SpvImageOperandsMask;
typedef enum SpvFPFastMathModeShift_ {
@@ -392,8 +378,6 @@ typedef enum SpvFPFastMathModeShift_ {
SpvFPFastMathModeNSZShift = 2,
SpvFPFastMathModeAllowRecipShift = 3,
SpvFPFastMathModeFastShift = 4,
- SpvFPFastMathModeAllowContractFastINTELShift = 16,
- SpvFPFastMathModeAllowReassocINTELShift = 17,
SpvFPFastMathModeMax = 0x7fffffff,
} SpvFPFastMathModeShift;
@@ -404,8 +388,6 @@ typedef enum SpvFPFastMathModeMask_ {
SpvFPFastMathModeNSZMask = 0x00000004,
SpvFPFastMathModeAllowRecipMask = 0x00000008,
SpvFPFastMathModeFastMask = 0x00000010,
- SpvFPFastMathModeAllowContractFastINTELMask = 0x00010000,
- SpvFPFastMathModeAllowReassocINTELMask = 0x00020000,
} SpvFPFastMathModeMask;
typedef enum SpvFPRoundingMode_ {
@@ -419,7 +401,6 @@ typedef enum SpvFPRoundingMode_ {
typedef enum SpvLinkageType_ {
SpvLinkageTypeExport = 0,
SpvLinkageTypeImport = 1,
- SpvLinkageTypeLinkOnceODR = 2,
SpvLinkageTypeMax = 0x7fffffff,
} SpvLinkageType;
@@ -500,7 +481,6 @@ typedef enum SpvDecoration_ {
SpvDecorationPerPrimitiveNV = 5271,
SpvDecorationPerViewNV = 5272,
SpvDecorationPerTaskNV = 5273,
- SpvDecorationPerVertexKHR = 5285,
SpvDecorationPerVertexNV = 5285,
SpvDecorationNonUniform = 5300,
SpvDecorationNonUniformEXT = 5300,
@@ -508,26 +488,12 @@ typedef enum SpvDecoration_ {
SpvDecorationRestrictPointerEXT = 5355,
SpvDecorationAliasedPointer = 5356,
SpvDecorationAliasedPointerEXT = 5356,
- SpvDecorationBindlessSamplerNV = 5398,
- SpvDecorationBindlessImageNV = 5399,
- SpvDecorationBoundSamplerNV = 5400,
- SpvDecorationBoundImageNV = 5401,
- SpvDecorationSIMTCallINTEL = 5599,
SpvDecorationReferencedIndirectlyINTEL = 5602,
- SpvDecorationClobberINTEL = 5607,
- SpvDecorationSideEffectsINTEL = 5608,
- SpvDecorationVectorComputeVariableINTEL = 5624,
- SpvDecorationFuncParamIOKindINTEL = 5625,
- SpvDecorationVectorComputeFunctionINTEL = 5626,
- SpvDecorationStackCallINTEL = 5627,
- SpvDecorationGlobalVariableOffsetINTEL = 5628,
SpvDecorationCounterBuffer = 5634,
SpvDecorationHlslCounterBufferGOOGLE = 5634,
SpvDecorationHlslSemanticGOOGLE = 5635,
SpvDecorationUserSemantic = 5635,
SpvDecorationUserTypeGOOGLE = 5636,
- SpvDecorationFunctionRoundingModeINTEL = 5822,
- SpvDecorationFunctionDenormModeINTEL = 5823,
SpvDecorationRegisterINTEL = 5825,
SpvDecorationMemoryINTEL = 5826,
SpvDecorationNumbanksINTEL = 5827,
@@ -540,18 +506,6 @@ typedef enum SpvDecoration_ {
SpvDecorationMergeINTEL = 5834,
SpvDecorationBankBitsINTEL = 5835,
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,
} SpvDecoration;
@@ -636,9 +590,7 @@ typedef enum SpvBuiltIn_ {
SpvBuiltInLayerPerViewNV = 5279,
SpvBuiltInMeshViewCountNV = 5280,
SpvBuiltInMeshViewIndicesNV = 5281,
- SpvBuiltInBaryCoordKHR = 5286,
SpvBuiltInBaryCoordNV = 5286,
- SpvBuiltInBaryCoordNoPerspKHR = 5287,
SpvBuiltInBaryCoordNoPerspNV = 5287,
SpvBuiltInFragSizeEXT = 5292,
SpvBuiltInFragmentSizeNV = 5292,
@@ -669,7 +621,6 @@ typedef enum SpvBuiltIn_ {
SpvBuiltInHitTNV = 5332,
SpvBuiltInHitKindKHR = 5333,
SpvBuiltInHitKindNV = 5333,
- SpvBuiltInCurrentRayTimeNV = 5334,
SpvBuiltInIncomingRayFlagsKHR = 5351,
SpvBuiltInIncomingRayFlagsNV = 5351,
SpvBuiltInRayGeometryIndexKHR = 5352,
@@ -709,7 +660,6 @@ typedef enum SpvLoopControlShift_ {
SpvLoopControlLoopCoalesceINTELShift = 20,
SpvLoopControlMaxInterleavingINTELShift = 21,
SpvLoopControlSpeculatedIterationsINTELShift = 22,
- SpvLoopControlNoFusionINTELShift = 23,
SpvLoopControlMax = 0x7fffffff,
} SpvLoopControlShift;
@@ -731,7 +681,6 @@ typedef enum SpvLoopControlMask_ {
SpvLoopControlLoopCoalesceINTELMask = 0x00100000,
SpvLoopControlMaxInterleavingINTELMask = 0x00200000,
SpvLoopControlSpeculatedIterationsINTELMask = 0x00400000,
- SpvLoopControlNoFusionINTELMask = 0x00800000,
} SpvLoopControlMask;
typedef enum SpvFunctionControlShift_ {
@@ -739,7 +688,6 @@ typedef enum SpvFunctionControlShift_ {
SpvFunctionControlDontInlineShift = 1,
SpvFunctionControlPureShift = 2,
SpvFunctionControlConstShift = 3,
- SpvFunctionControlOptNoneINTELShift = 16,
SpvFunctionControlMax = 0x7fffffff,
} SpvFunctionControlShift;
@@ -749,7 +697,6 @@ typedef enum SpvFunctionControlMask_ {
SpvFunctionControlDontInlineMask = 0x00000002,
SpvFunctionControlPureMask = 0x00000004,
SpvFunctionControlConstMask = 0x00000008,
- SpvFunctionControlOptNoneINTELMask = 0x00010000,
} SpvFunctionControlMask;
typedef enum SpvMemorySemanticsShift_ {
@@ -930,13 +877,9 @@ typedef enum SpvCapability_ {
SpvCapabilityGroupNonUniformQuad = 68,
SpvCapabilityShaderLayer = 69,
SpvCapabilityShaderViewportIndex = 70,
- SpvCapabilityUniformDecoration = 71,
SpvCapabilityFragmentShadingRateKHR = 4422,
SpvCapabilitySubgroupBallotKHR = 4423,
SpvCapabilityDrawParameters = 4427,
- SpvCapabilityWorkgroupMemoryExplicitLayoutKHR = 4428,
- SpvCapabilityWorkgroupMemoryExplicitLayout8BitAccessKHR = 4429,
- SpvCapabilityWorkgroupMemoryExplicitLayout16BitAccessKHR = 4430,
SpvCapabilitySubgroupVoteKHR = 4431,
SpvCapabilityStorageBuffer16BitAccess = 4433,
SpvCapabilityStorageUniformBufferBlock16 = 4433,
@@ -979,7 +922,6 @@ typedef enum SpvCapability_ {
SpvCapabilityFragmentFullyCoveredEXT = 5265,
SpvCapabilityMeshShadingNV = 5266,
SpvCapabilityImageFootprintNV = 5282,
- SpvCapabilityFragmentBarycentricKHR = 5284,
SpvCapabilityFragmentBarycentricNV = 5284,
SpvCapabilityComputeDerivativeGroupQuadsNV = 5288,
SpvCapabilityFragmentDensityEXT = 5291,
@@ -1010,7 +952,6 @@ typedef enum SpvCapability_ {
SpvCapabilityStorageTexelBufferArrayNonUniformIndexing = 5312,
SpvCapabilityStorageTexelBufferArrayNonUniformIndexingEXT = 5312,
SpvCapabilityRayTracingNV = 5340,
- SpvCapabilityRayTracingMotionBlurNV = 5341,
SpvCapabilityVulkanMemoryModel = 5345,
SpvCapabilityVulkanMemoryModelKHR = 5345,
SpvCapabilityVulkanMemoryModelDeviceScope = 5346,
@@ -1024,62 +965,26 @@ typedef enum SpvCapability_ {
SpvCapabilityFragmentShaderShadingRateInterlockEXT = 5372,
SpvCapabilityShaderSMBuiltinsNV = 5373,
SpvCapabilityFragmentShaderPixelInterlockEXT = 5378,
- SpvCapabilityDemoteToHelperInvocation = 5379,
SpvCapabilityDemoteToHelperInvocationEXT = 5379,
- SpvCapabilityBindlessTextureNV = 5390,
SpvCapabilitySubgroupShuffleINTEL = 5568,
SpvCapabilitySubgroupBufferBlockIOINTEL = 5569,
SpvCapabilitySubgroupImageBlockIOINTEL = 5570,
SpvCapabilitySubgroupImageMediaBlockIOINTEL = 5579,
- SpvCapabilityRoundToInfinityINTEL = 5582,
- SpvCapabilityFloatingPointModeINTEL = 5583,
SpvCapabilityIntegerFunctions2INTEL = 5584,
SpvCapabilityFunctionPointersINTEL = 5603,
SpvCapabilityIndirectReferencesINTEL = 5604,
- SpvCapabilityAsmINTEL = 5606,
- SpvCapabilityAtomicFloat32MinMaxEXT = 5612,
- SpvCapabilityAtomicFloat64MinMaxEXT = 5613,
- SpvCapabilityAtomicFloat16MinMaxEXT = 5616,
- SpvCapabilityVectorComputeINTEL = 5617,
- SpvCapabilityVectorAnyINTEL = 5619,
- SpvCapabilityExpectAssumeKHR = 5629,
SpvCapabilitySubgroupAvcMotionEstimationINTEL = 5696,
SpvCapabilitySubgroupAvcMotionEstimationIntraINTEL = 5697,
SpvCapabilitySubgroupAvcMotionEstimationChromaINTEL = 5698,
- SpvCapabilityVariableLengthArrayINTEL = 5817,
- SpvCapabilityFunctionFloatControlINTEL = 5821,
SpvCapabilityFPGAMemoryAttributesINTEL = 5824,
- SpvCapabilityFPFastMathModeINTEL = 5837,
- SpvCapabilityArbitraryPrecisionIntegersINTEL = 5844,
- SpvCapabilityArbitraryPrecisionFloatingPointINTEL = 5845,
SpvCapabilityUnstructuredLoopControlsINTEL = 5886,
SpvCapabilityFPGALoopControlsINTEL = 5888,
SpvCapabilityKernelAttributesINTEL = 5892,
SpvCapabilityFPGAKernelAttributesINTEL = 5897,
- SpvCapabilityFPGAMemoryAccessesINTEL = 5898,
- SpvCapabilityFPGAClusterAttributesINTEL = 5904,
- SpvCapabilityLoopFuseINTEL = 5906,
- SpvCapabilityFPGABufferLocationINTEL = 5920,
- SpvCapabilityArbitraryPrecisionFixedPointINTEL = 5922,
- SpvCapabilityUSMStorageClassesINTEL = 5935,
- SpvCapabilityIOPipesINTEL = 5943,
SpvCapabilityBlockingPipesINTEL = 5945,
SpvCapabilityFPGARegINTEL = 5948,
- SpvCapabilityDotProductInputAll = 6016,
- SpvCapabilityDotProductInputAllKHR = 6016,
- SpvCapabilityDotProductInput4x8Bit = 6017,
- SpvCapabilityDotProductInput4x8BitKHR = 6017,
- SpvCapabilityDotProductInput4x8BitPacked = 6018,
- SpvCapabilityDotProductInput4x8BitPackedKHR = 6018,
- SpvCapabilityDotProduct = 6019,
- SpvCapabilityDotProductKHR = 6019,
- SpvCapabilityBitInstructions = 6025,
SpvCapabilityAtomicFloat32AddEXT = 6033,
SpvCapabilityAtomicFloat64AddEXT = 6034,
- SpvCapabilityLongConstantCompositeINTEL = 6089,
- SpvCapabilityOptNoneINTEL = 6094,
- SpvCapabilityAtomicFloat16AddEXT = 6095,
- SpvCapabilityDebugInfoModuleINTEL = 6114,
SpvCapabilityMax = 0x7fffffff,
} SpvCapability;
@@ -1146,44 +1051,6 @@ typedef enum SpvFragmentShadingRateMask_ {
SpvFragmentShadingRateHorizontal4PixelsMask = 0x00000008,
} 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_ {
SpvOpNop = 0,
SpvOpUndef = 1,
@@ -1541,18 +1408,6 @@ typedef enum SpvOp_ {
SpvOpConvertUToAccelerationStructureKHR = 4447,
SpvOpIgnoreIntersectionKHR = 4448,
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,
SpvOpRayQueryInitializeKHR = 4473,
SpvOpRayQueryTerminateKHR = 4474,
@@ -1579,8 +1434,6 @@ typedef enum SpvOp_ {
SpvOpIgnoreIntersectionNV = 5335,
SpvOpTerminateRayNV = 5336,
SpvOpTraceNV = 5337,
- SpvOpTraceMotionNV = 5338,
- SpvOpTraceRayMotionNV = 5339,
SpvOpTypeAccelerationStructureKHR = 5341,
SpvOpTypeAccelerationStructureNV = 5341,
SpvOpExecuteCallableNV = 5344,
@@ -1591,16 +1444,8 @@ typedef enum SpvOp_ {
SpvOpCooperativeMatrixLengthNV = 5362,
SpvOpBeginInvocationInterlockEXT = 5364,
SpvOpEndInvocationInterlockEXT = 5365,
- SpvOpDemoteToHelperInvocation = 5380,
SpvOpDemoteToHelperInvocationEXT = 5380,
SpvOpIsHelperInvocationEXT = 5381,
- SpvOpConvertUToImageNV = 5391,
- SpvOpConvertUToSamplerNV = 5392,
- SpvOpConvertImageToUNV = 5393,
- SpvOpConvertSamplerToUNV = 5394,
- SpvOpConvertUToSampledImageNV = 5395,
- SpvOpConvertSampledImageToUNV = 5396,
- SpvOpSamplerImageAddressingModeNV = 5397,
SpvOpSubgroupShuffleINTEL = 5571,
SpvOpSubgroupShuffleDownINTEL = 5572,
SpvOpSubgroupShuffleUpINTEL = 5573,
@@ -1625,15 +1470,8 @@ typedef enum SpvOp_ {
SpvOpUSubSatINTEL = 5596,
SpvOpIMul32x16INTEL = 5597,
SpvOpUMul32x16INTEL = 5598,
- SpvOpConstantFunctionPointerINTEL = 5600,
+ SpvOpFunctionPointerINTEL = 5600,
SpvOpFunctionPointerCallINTEL = 5601,
- SpvOpAsmTargetINTEL = 5609,
- SpvOpAsmINTEL = 5610,
- SpvOpAsmCallINTEL = 5611,
- SpvOpAtomicFMinEXT = 5614,
- SpvOpAtomicFMaxEXT = 5615,
- SpvOpAssumeTrueKHR = 5630,
- SpvOpExpectKHR = 5631,
SpvOpDecorateString = 5632,
SpvOpDecorateStringGOOGLE = 5632,
SpvOpMemberDecorateString = 5633,
@@ -1756,64 +1594,7 @@ typedef enum SpvOp_ {
SpvOpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL = 5814,
SpvOpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL = 5815,
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,
- 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,
SpvOpWritePipeBlockingINTEL = 5947,
SpvOpFPGARegINTEL = 5949,
@@ -1835,10 +1616,6 @@ typedef enum SpvOp_ {
SpvOpRayQueryGetIntersectionObjectToWorldKHR = 6031,
SpvOpRayQueryGetIntersectionWorldToObjectKHR = 6032,
SpvOpAtomicFAddEXT = 6035,
- SpvOpTypeBufferSurfaceINTEL = 6086,
- SpvOpTypeStructContinuedINTEL = 6090,
- SpvOpConstantCompositeContinuedINTEL = 6091,
- SpvOpSpecConstantCompositeContinuedINTEL = 6092,
SpvOpMax = 0x7fffffff,
} SpvOp;
@@ -2203,12 +1980,6 @@ inline void SpvHasResultAndType(SpvOp opcode, bool *hasResult, bool *hasResultTy
case SpvOpConvertUToAccelerationStructureKHR: *hasResult = true; *hasResultType = true; break;
case SpvOpIgnoreIntersectionKHR: *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 SpvOpRayQueryInitializeKHR: *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 SpvOpTerminateRayNV: *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 SpvOpExecuteCallableNV: *hasResult = false; *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 SpvOpBeginInvocationInterlockEXT: *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 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 SpvOpSubgroupShuffleDownINTEL: *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 SpvOpIMul32x16INTEL: *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 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 SpvOpMemberDecorateString: *hasResult = false; *hasResultType = false; 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 SpvOpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL: *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 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 SpvOpWritePipeBlockingINTEL: *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 SpvOpRayQueryGetIntersectionWorldToObjectKHR: *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 */
diff --git a/thirdparty/spirv-reflect/patches/specialization-constants.patch b/thirdparty/spirv-reflect/patches/specialization-constants.patch
index 9bb5f97cd3..efd89a76af 100644
--- a/thirdparty/spirv-reflect/patches/specialization-constants.patch
+++ b/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
-index e9b11bf495..f181df5fa2 100644
+index 1c94a2e00e..2786a7f3ad 100644
--- a/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 offset;
SpvReflectPrvNumberDecoration uav_counter_buffer;
@@ -12,7 +12,7 @@ index e9b11bf495..f181df5fa2 100644
SpvReflectPrvStringDecoration semantic;
uint32_t array_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.uav_counter_buffer.value = (uint32_t)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
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);
}
break;
@@ -41,7 +41,7 @@ index e9b11bf495..f181df5fa2 100644
case SpvOpSpecConstantComposite:
case SpvOpSpecConstantOp: {
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);
//
// 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);
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;
}
- break;
+ break;
+// -- GODOT begin --
+ case SpvDecorationSpecId:
+// -- GODOT end --
- case SpvDecorationRelaxedPrecision:
case SpvDecorationBlock:
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;
}
break;
@@ -76,7 +76,7 @@ index e9b11bf495..f181df5fa2 100644
case SpvReflectDecorationHlslCounterBufferGOOGLE: {
uint32_t word_offset = p_node->word_offset + member_offset+ 3;
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;
}
break;
@@ -90,7 +90,7 @@ index e9b11bf495..f181df5fa2 100644
}
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;
}
@@ -160,7 +160,7 @@ index e9b11bf495..f181df5fa2 100644
static SpvReflectResult ParsePushConstantBlocks(
SpvReflectPrvParser* p_parser,
SpvReflectShaderModule* p_module)
-@@ -3650,6 +3742,12 @@ static SpvReflectResult CreateShaderModule(
+@@ -3613,6 +3705,12 @@ SpvReflectResult spvReflectCreateShaderModule(
result = ParsePushConstantBlocks(&parser, p_module);
SPV_REFLECT_ASSERT(result == SPV_REFLECT_RESULT_SUCCESS);
}
@@ -173,7 +173,7 @@ index e9b11bf495..f181df5fa2 100644
if (result == SPV_REFLECT_RESULT_SUCCESS) {
result = ParseEntryPoints(&parser, p_module);
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_module->entry_points);
@@ -183,7 +183,7 @@ index e9b11bf495..f181df5fa2 100644
// Push constants
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;
}
@@ -223,10 +223,10 @@ index e9b11bf495..f181df5fa2 100644
const SpvReflectShaderModule* p_module,
uint32_t* p_count,
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
+++ b/thirdparty/spirv-reflect/spirv_reflect.h
-@@ -323,6 +323,28 @@ typedef struct SpvReflectTypeDescription {
+@@ -292,6 +292,28 @@ typedef struct SpvReflectTypeDescription {
struct SpvReflectTypeDescription* members;
} SpvReflectTypeDescription;
@@ -255,7 +255,7 @@ index e9e4c40755..948533d3c0 100644
/*! @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
uint32_t push_constant_block_count; // 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 --
struct Internal {
- SpvReflectModuleFlags module_flags;
-@@ -744,6 +770,33 @@ SpvReflectResult spvReflectEnumerateInputVariables(
+ size_t spirv_size;
+@@ -694,6 +720,33 @@ SpvReflectResult spvReflectEnumerateInputVariables(
SpvReflectInterfaceVariable** pp_variables
);
diff --git a/thirdparty/spirv-reflect/spirv_reflect.c b/thirdparty/spirv-reflect/spirv_reflect.c
index f181df5fa2..2786a7f3ad 100644
--- a/thirdparty/spirv-reflect/spirv_reflect.c
+++ b/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");
you may not use this file except in compliance with the License.
@@ -110,7 +110,6 @@ typedef struct SpvReflectPrvStringDecoration {
// clang-format off
typedef struct SpvReflectPrvDecorations {
- bool is_relaxed_precision;
bool is_block;
bool is_buffer_block;
bool is_row_major;
@@ -239,10 +238,12 @@ static uint32_t RoundUp(
#define IsNotNull(ptr) \
(ptr != NULL)
-#define SafeFree(ptr) \
- { \
- free((void*)ptr); \
- ptr = NULL; \
+#define SafeFree(ptr) \
+ { \
+ if (ptr != NULL) { \
+ free((void*)ptr); \
+ ptr = NULL; \
+ } \
}
static int SortCompareUint32(
@@ -461,9 +462,6 @@ static SpvReflectResult ReadStr(
static SpvReflectDecorationFlags ApplyDecorations(const SpvReflectPrvDecorations* p_decoration_fields)
{
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) {
decorations |= SPV_REFLECT_DECORATION_BLOCK;
}
@@ -1048,7 +1046,6 @@ static SpvReflectResult ParseFunction(
case SpvOpGenericPtrMemSemantics:
case SpvOpInBoundsPtrAccessChain:
case SpvOpStore:
- case SpvOpImageTexelPointer:
{
++(p_func->accessed_ptr_count);
}
@@ -1100,7 +1097,6 @@ static SpvReflectResult ParseFunction(
case SpvOpArrayLength:
case SpvOpGenericPtrMemSemantics:
case SpvOpInBoundsPtrAccessChain:
- case SpvOpImageTexelPointer:
{
CHECKED_READU32(p_parser, p_node->word_offset + 3,
p_func->accessed_ptrs[p_func->accessed_ptr_count]);
@@ -1349,11 +1345,10 @@ static SpvReflectResult ParseDecorations(SpvReflectPrvParser* p_parser)
default: {
skip = true;
}
- break;
+ break;
// -- GODOT begin --
case SpvDecorationSpecId:
// -- GODOT end --
- case SpvDecorationRelaxedPrecision:
case SpvDecorationBlock:
case SpvDecorationBufferBlock:
case SpvDecorationColMajor:
@@ -1384,11 +1379,6 @@ static SpvReflectResult ParseDecorations(SpvReflectPrvParser* p_parser)
CHECKED_READU32(p_parser, p_node->word_offset + 1, target_id);
SpvReflectPrvNode* p_target_node = FindNode(p_parser, target_id);
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;
}
// Get decorations
@@ -1403,11 +1393,6 @@ static SpvReflectResult ParseDecorations(SpvReflectPrvParser* p_parser)
switch (decoration) {
default: break;
- case SpvDecorationRelaxedPrecision: {
- p_target_decorations->is_relaxed_precision = true;
- }
- break;
-
case SpvDecorationBlock: {
p_target_decorations->is_block = true;
}
@@ -1700,19 +1685,16 @@ static SpvReflectResult ParseType(
// Get length for current dimension
SpvReflectPrvNode* p_length_node = FindNode(p_parser, length_id);
if (IsNotNull(p_length_node)) {
- uint32_t dim_index = p_type->traits.array.dims_count;
if (p_length_node->op == SpvOpSpecConstant ||
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;
} else {
uint32_t length = 0;
IF_READU32(result, p_parser, p_length_node->word_offset + 3, length);
if (result == SPV_REFLECT_RESULT_SUCCESS) {
// 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;
} else {
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;
uint32_t element_type_id = (uint32_t)INVALID_VALUE;
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
SpvReflectPrvNode* p_next_node = FindNode(p_parser, element_type_id);
if (IsNotNull(p_next_node)) {
@@ -2198,19 +2175,22 @@ static SpvReflectResult ParseDescriptorBlockVariable(
return SPV_REFLECT_RESULT_ERROR_SPIRV_INVALID_ID_REFERENCE;
}
// 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);
- }
- 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;
}
- // 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)) {
return SPV_REFLECT_RESULT_ERROR_SPIRV_INVALID_ID_REFERENCE;
}
@@ -2682,7 +2662,6 @@ static SpvReflectResult ParseFormat(
static SpvReflectResult ParseInterfaceVariable(
SpvReflectPrvParser* p_parser,
- const SpvReflectPrvDecorations* p_var_node_decorations,
const SpvReflectPrvDecorations* p_type_node_decorations,
SpvReflectShaderModule* p_module,
SpvReflectTypeDescription* p_type,
@@ -2706,7 +2685,7 @@ static SpvReflectResult ParseInterfaceVariable(
SpvReflectPrvDecorations* p_member_decorations = &p_type_node->member_decorations[member_index];
SpvReflectTypeDescription* p_member_type = &p_type->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) {
SPV_REFLECT_ASSERT(false);
return result;
@@ -2716,9 +2695,6 @@ static SpvReflectResult ParseInterfaceVariable(
p_var->name = p_type_node->name;
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;
ApplyNumericTraits(p_type, &p_var->numeric);
if (p_type->op == SpvOpTypeArray) {
@@ -2754,21 +2730,21 @@ static SpvReflectResult ParseInterfaceVariables(
}
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) {
@@ -2830,7 +2806,6 @@ static SpvReflectResult ParseInterfaceVariables(
bool has_built_in = p_node->decorations.is_built_in;
SpvReflectResult result = ParseInterfaceVariable(
p_parser,
- &p_node->decorations,
&p_type_node->decorations,
p_module,
p_type,
@@ -3233,11 +3208,7 @@ static SpvReflectResult ParseExecutionModes(
}
break;
- case SpvExecutionModeInvocations: {
- CHECKED_READU32(p_parser, p_node->word_offset + 3, p_entry_point->invocations);
- }
- break;
-
+ case SpvExecutionModeInvocations:
case SpvExecutionModeSpacingEqual:
case SpvExecutionModeSpacingFractionalEven:
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 + 5, p_entry_point->local_size.z);
}
- break;
+ break;
case SpvExecutionModeLocalSizeHint:
case SpvExecutionModeInputPoints:
@@ -3270,11 +3241,7 @@ static SpvReflectResult ParseExecutionModes(
case SpvExecutionModeInputTrianglesAdjacency:
case SpvExecutionModeQuads:
case SpvExecutionModeIsolines:
- case SpvExecutionModeOutputVertices: {
- CHECKED_READU32(p_parser, p_node->word_offset + 3, p_entry_point->output_vertices);
- }
- break;
-
+ case SpvExecutionModeOutputVertices:
case SpvExecutionModeOutputPoints:
case SpvExecutionModeOutputLineStrip:
case SpvExecutionModeOutputTriangleStrip:
@@ -3624,8 +3591,16 @@ static SpvReflectResult SynchronizeDescriptorSets(SpvReflectShaderModule* p_modu
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,
const void* p_code,
SpvReflectShaderModule* p_module
@@ -3643,27 +3618,15 @@ static SpvReflectResult CreateShaderModule(
if (IsNull(p_module->_internal)) {
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 };
SpvReflectResult result = CreateParser(p_module->_internal->spirv_size,
@@ -3788,34 +3751,6 @@ static SpvReflectResult CreateShaderModule(
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)
{
if (IsNull(p_type)) {
@@ -3925,10 +3860,8 @@ void spvReflectDestroyShaderModule(SpvReflectShaderModule* p_module)
}
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
SafeFree(p_module->_internal);
}
@@ -5086,25 +5019,15 @@ SpvReflectResult spvReflectChangeOutputVariableLocation(
const char* spvReflectSourceLanguage(SpvSourceLanguage 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:
break;
}
return "";
}
-
-const char* spvReflectBlockVariableTypeName(
- const SpvReflectBlockVariable* p_var
-)
-{
- if (p_var == NULL) {
- return NULL;
- }
- return p_var->type_description->type_name;
-}
diff --git a/thirdparty/spirv-reflect/spirv_reflect.h b/thirdparty/spirv-reflect/spirv_reflect.h
index 948533d3c0..50cc65222b 100644
--- a/thirdparty/spirv-reflect/spirv_reflect.h
+++ b/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");
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,
} 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
*/
@@ -120,13 +101,6 @@ typedef uint32_t SpvReflectTypeFlags;
/*! @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 {
SPV_REFLECT_DECORATION_NONE = 0x00000000,
@@ -138,7 +112,6 @@ typedef enum SpvReflectDecorationFlagBits {
SPV_REFLECT_DECORATION_NOPERSPECTIVE = 0x00000020,
SPV_REFLECT_DECORATION_FLAT = 0x00000040,
SPV_REFLECT_DECORATION_NON_WRITABLE = 0x00000080,
- SPV_REFLECT_DECORATION_RELAXED_PRECISION = 0x00000100,
} SpvReflectDecorationFlagBits;
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_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_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;
@@ -288,11 +261,7 @@ typedef struct SpvReflectImageTraits {
typedef struct SpvReflectArrayTraits {
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];
- // 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
} SpvReflectArrayTraits;
@@ -463,8 +432,6 @@ typedef struct SpvReflectEntryPoint {
uint32_t y;
uint32_t z;
} local_size;
- uint32_t invocations; // valid for geometry
- uint32_t output_vertices; // valid for geometry, tesselation
} SpvReflectEntryPoint;
/*! @struct SpvReflectShaderModule
@@ -500,7 +467,6 @@ typedef struct SpvReflectShaderModule {
// -- GODOT end --
struct Internal {
- SpvReflectModuleFlags module_flags;
size_t spirv_size;
uint32_t* spirv_code;
uint32_t spirv_word_count;
@@ -529,22 +495,6 @@ SpvReflectResult spvReflectCreateShaderModule(
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")
SpvReflectResult spvReflectGetShaderModule(
size_t size,
@@ -1432,7 +1382,7 @@ SpvReflectResult spvReflectChangeInputVariableLocation(
by multiple entry points in the module, it will be changed in all of
them.
@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.
@return If successful, returns SPV_REFLECT_RESULT_SUCCESS.
Otherwise, the error code indicates the cause of
@@ -1454,16 +1404,6 @@ SpvReflectResult spvReflectChangeOutputVariableLocation(
*/
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)
};
#endif
@@ -1481,9 +1421,9 @@ namespace spv_reflect {
class ShaderModule {
public:
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&& other);
@@ -1593,9 +1533,8 @@ inline ShaderModule::ShaderModule() {}
@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,
p_code,
&m_module);
@@ -1606,9 +1545,8 @@ inline ShaderModule::ShaderModule(size_t size, const void* p_code, SpvReflectMod
@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.data(),
&m_module);
@@ -1619,9 +1557,8 @@ inline ShaderModule::ShaderModule(const std::vector<uint8_t>& code, SpvReflectMo
@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.data(),
&m_module);