|
@@ -50,11 +50,11 @@ namespace spv {
|
|
|
typedef unsigned int Id;
|
|
typedef unsigned int Id;
|
|
|
|
|
|
|
|
#define SPV_VERSION 0x10500
|
|
#define SPV_VERSION 0x10500
|
|
|
-#define SPV_REVISION 3
|
|
|
|
|
|
|
+#define SPV_REVISION 4
|
|
|
|
|
|
|
|
static const unsigned int MagicNumber = 0x07230203;
|
|
static const unsigned int MagicNumber = 0x07230203;
|
|
|
static const unsigned int Version = 0x00010500;
|
|
static const unsigned int Version = 0x00010500;
|
|
|
-static const unsigned int Revision = 3;
|
|
|
|
|
|
|
+static const unsigned int Revision = 4;
|
|
|
static const unsigned int OpCodeMask = 0xffff;
|
|
static const unsigned int OpCodeMask = 0xffff;
|
|
|
static const unsigned int WordCountShift = 16;
|
|
static const unsigned int WordCountShift = 16;
|
|
|
|
|
|
|
@@ -274,6 +274,8 @@ enum ImageFormat {
|
|
|
ImageFormatRg8ui = 37,
|
|
ImageFormatRg8ui = 37,
|
|
|
ImageFormatR16ui = 38,
|
|
ImageFormatR16ui = 38,
|
|
|
ImageFormatR8ui = 39,
|
|
ImageFormatR8ui = 39,
|
|
|
|
|
+ ImageFormatR64ui = 40,
|
|
|
|
|
+ ImageFormatR64i = 41,
|
|
|
ImageFormatMax = 0x7fffffff,
|
|
ImageFormatMax = 0x7fffffff,
|
|
|
};
|
|
};
|
|
|
|
|
|
|
@@ -558,8 +560,10 @@ enum BuiltIn {
|
|
|
BuiltInBaseVertex = 4424,
|
|
BuiltInBaseVertex = 4424,
|
|
|
BuiltInBaseInstance = 4425,
|
|
BuiltInBaseInstance = 4425,
|
|
|
BuiltInDrawIndex = 4426,
|
|
BuiltInDrawIndex = 4426,
|
|
|
|
|
+ BuiltInPrimitiveShadingRateKHR = 4432,
|
|
|
BuiltInDeviceIndex = 4438,
|
|
BuiltInDeviceIndex = 4438,
|
|
|
BuiltInViewIndex = 4440,
|
|
BuiltInViewIndex = 4440,
|
|
|
|
|
+ BuiltInShadingRateKHR = 4444,
|
|
|
BuiltInBaryCoordNoPerspAMD = 4992,
|
|
BuiltInBaryCoordNoPerspAMD = 4992,
|
|
|
BuiltInBaryCoordNoPerspCentroidAMD = 4993,
|
|
BuiltInBaryCoordNoPerspCentroidAMD = 4993,
|
|
|
BuiltInBaryCoordNoPerspSampleAMD = 4994,
|
|
BuiltInBaryCoordNoPerspSampleAMD = 4994,
|
|
@@ -870,6 +874,7 @@ enum Capability {
|
|
|
CapabilityGroupNonUniformQuad = 68,
|
|
CapabilityGroupNonUniformQuad = 68,
|
|
|
CapabilityShaderLayer = 69,
|
|
CapabilityShaderLayer = 69,
|
|
|
CapabilityShaderViewportIndex = 70,
|
|
CapabilityShaderViewportIndex = 70,
|
|
|
|
|
+ CapabilityFragmentShadingRateKHR = 4422,
|
|
|
CapabilitySubgroupBallotKHR = 4423,
|
|
CapabilitySubgroupBallotKHR = 4423,
|
|
|
CapabilityDrawParameters = 4427,
|
|
CapabilityDrawParameters = 4427,
|
|
|
CapabilitySubgroupVoteKHR = 4431,
|
|
CapabilitySubgroupVoteKHR = 4431,
|
|
@@ -900,6 +905,7 @@ enum Capability {
|
|
|
CapabilityFragmentMaskAMD = 5010,
|
|
CapabilityFragmentMaskAMD = 5010,
|
|
|
CapabilityStencilExportEXT = 5013,
|
|
CapabilityStencilExportEXT = 5013,
|
|
|
CapabilityImageReadWriteLodAMD = 5015,
|
|
CapabilityImageReadWriteLodAMD = 5015,
|
|
|
|
|
+ CapabilityInt64ImageEXT = 5016,
|
|
|
CapabilityShaderClockKHR = 5055,
|
|
CapabilityShaderClockKHR = 5055,
|
|
|
CapabilitySampleMaskOverrideCoverageNV = 5249,
|
|
CapabilitySampleMaskOverrideCoverageNV = 5249,
|
|
|
CapabilityGeometryShaderPassthroughNV = 5251,
|
|
CapabilityGeometryShaderPassthroughNV = 5251,
|
|
@@ -972,6 +978,8 @@ enum Capability {
|
|
|
CapabilityFPGAKernelAttributesINTEL = 5897,
|
|
CapabilityFPGAKernelAttributesINTEL = 5897,
|
|
|
CapabilityBlockingPipesINTEL = 5945,
|
|
CapabilityBlockingPipesINTEL = 5945,
|
|
|
CapabilityFPGARegINTEL = 5948,
|
|
CapabilityFPGARegINTEL = 5948,
|
|
|
|
|
+ CapabilityAtomicFloat32AddEXT = 6033,
|
|
|
|
|
+ CapabilityAtomicFloat64AddEXT = 6034,
|
|
|
CapabilityMax = 0x7fffffff,
|
|
CapabilityMax = 0x7fffffff,
|
|
|
};
|
|
};
|
|
|
|
|
|
|
@@ -1022,6 +1030,22 @@ enum RayQueryCandidateIntersectionType {
|
|
|
RayQueryCandidateIntersectionTypeMax = 0x7fffffff,
|
|
RayQueryCandidateIntersectionTypeMax = 0x7fffffff,
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
|
|
+enum FragmentShadingRateShift {
|
|
|
|
|
+ FragmentShadingRateVertical2PixelsShift = 0,
|
|
|
|
|
+ FragmentShadingRateVertical4PixelsShift = 1,
|
|
|
|
|
+ FragmentShadingRateHorizontal2PixelsShift = 2,
|
|
|
|
|
+ FragmentShadingRateHorizontal4PixelsShift = 3,
|
|
|
|
|
+ FragmentShadingRateMax = 0x7fffffff,
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
|
|
+enum FragmentShadingRateMask {
|
|
|
|
|
+ FragmentShadingRateMaskNone = 0,
|
|
|
|
|
+ FragmentShadingRateVertical2PixelsMask = 0x00000001,
|
|
|
|
|
+ FragmentShadingRateVertical4PixelsMask = 0x00000002,
|
|
|
|
|
+ FragmentShadingRateHorizontal2PixelsMask = 0x00000004,
|
|
|
|
|
+ FragmentShadingRateHorizontal4PixelsMask = 0x00000008,
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
enum Op {
|
|
enum Op {
|
|
|
OpNop = 0,
|
|
OpNop = 0,
|
|
|
OpUndef = 1,
|
|
OpUndef = 1,
|
|
@@ -1367,6 +1391,7 @@ enum Op {
|
|
|
OpPtrEqual = 401,
|
|
OpPtrEqual = 401,
|
|
|
OpPtrNotEqual = 402,
|
|
OpPtrNotEqual = 402,
|
|
|
OpPtrDiff = 403,
|
|
OpPtrDiff = 403,
|
|
|
|
|
+ OpTerminateInvocation = 4416,
|
|
|
OpSubgroupBallotKHR = 4421,
|
|
OpSubgroupBallotKHR = 4421,
|
|
|
OpSubgroupFirstInvocationKHR = 4422,
|
|
OpSubgroupFirstInvocationKHR = 4422,
|
|
|
OpSubgroupAllKHR = 4428,
|
|
OpSubgroupAllKHR = 4428,
|
|
@@ -1584,6 +1609,7 @@ enum Op {
|
|
|
OpRayQueryGetWorldRayOriginKHR = 6030,
|
|
OpRayQueryGetWorldRayOriginKHR = 6030,
|
|
|
OpRayQueryGetIntersectionObjectToWorldKHR = 6031,
|
|
OpRayQueryGetIntersectionObjectToWorldKHR = 6031,
|
|
|
OpRayQueryGetIntersectionWorldToObjectKHR = 6032,
|
|
OpRayQueryGetIntersectionWorldToObjectKHR = 6032,
|
|
|
|
|
+ OpAtomicFAddEXT = 6035,
|
|
|
OpMax = 0x7fffffff,
|
|
OpMax = 0x7fffffff,
|
|
|
};
|
|
};
|
|
|
|
|
|
|
@@ -1936,6 +1962,7 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
|
|
|
case OpPtrEqual: *hasResult = true; *hasResultType = true; break;
|
|
case OpPtrEqual: *hasResult = true; *hasResultType = true; break;
|
|
|
case OpPtrNotEqual: *hasResult = true; *hasResultType = true; break;
|
|
case OpPtrNotEqual: *hasResult = true; *hasResultType = true; break;
|
|
|
case OpPtrDiff: *hasResult = true; *hasResultType = true; break;
|
|
case OpPtrDiff: *hasResult = true; *hasResultType = true; break;
|
|
|
|
|
+ case OpTerminateInvocation: *hasResult = false; *hasResultType = false; break;
|
|
|
case OpSubgroupBallotKHR: *hasResult = true; *hasResultType = true; break;
|
|
case OpSubgroupBallotKHR: *hasResult = true; *hasResultType = true; break;
|
|
|
case OpSubgroupFirstInvocationKHR: *hasResult = true; *hasResultType = true; break;
|
|
case OpSubgroupFirstInvocationKHR: *hasResult = true; *hasResultType = true; break;
|
|
|
case OpSubgroupAllKHR: *hasResult = true; *hasResultType = true; break;
|
|
case OpSubgroupAllKHR: *hasResult = true; *hasResultType = true; break;
|
|
@@ -2145,6 +2172,7 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
|
|
|
case OpRayQueryGetWorldRayOriginKHR: *hasResult = true; *hasResultType = true; break;
|
|
case OpRayQueryGetWorldRayOriginKHR: *hasResult = true; *hasResultType = true; break;
|
|
|
case OpRayQueryGetIntersectionObjectToWorldKHR: *hasResult = true; *hasResultType = true; break;
|
|
case OpRayQueryGetIntersectionObjectToWorldKHR: *hasResult = true; *hasResultType = true; break;
|
|
|
case OpRayQueryGetIntersectionWorldToObjectKHR: *hasResult = true; *hasResultType = true; break;
|
|
case OpRayQueryGetIntersectionWorldToObjectKHR: *hasResult = true; *hasResultType = true; break;
|
|
|
|
|
+ case OpAtomicFAddEXT: *hasResult = true; *hasResultType = true; break;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
#endif /* SPV_ENABLE_UTILITY_CODE */
|
|
#endif /* SPV_ENABLE_UTILITY_CODE */
|
|
@@ -2160,6 +2188,7 @@ inline MemorySemanticsMask operator|(MemorySemanticsMask a, MemorySemanticsMask
|
|
|
inline MemoryAccessMask operator|(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) | unsigned(b)); }
|
|
inline MemoryAccessMask operator|(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) | unsigned(b)); }
|
|
|
inline KernelProfilingInfoMask operator|(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) | unsigned(b)); }
|
|
inline KernelProfilingInfoMask operator|(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) | unsigned(b)); }
|
|
|
inline RayFlagsMask operator|(RayFlagsMask a, RayFlagsMask b) { return RayFlagsMask(unsigned(a) | unsigned(b)); }
|
|
inline RayFlagsMask operator|(RayFlagsMask a, RayFlagsMask b) { return RayFlagsMask(unsigned(a) | unsigned(b)); }
|
|
|
|
|
+inline FragmentShadingRateMask operator|(FragmentShadingRateMask a, FragmentShadingRateMask b) { return FragmentShadingRateMask(unsigned(a) | unsigned(b)); }
|
|
|
|
|
|
|
|
} // end namespace spv
|
|
} // end namespace spv
|
|
|
|
|
|