diff --git a/src/compiler/spirv/spir-v.xml b/src/compiler/spirv/spir-v.xml
index 81ef5ae6941..eb4452b43a2 100644
--- a/src/compiler/spirv/spir-v.xml
+++ b/src/compiler/spirv/spir-v.xml
@@ -55,7 +55,7 @@
-
+
@@ -69,7 +69,7 @@
-
+
@@ -81,7 +81,9 @@
-
+
+
+
@@ -118,7 +120,7 @@
-
+
@@ -132,20 +134,22 @@
+
+
-
+
-
+
@@ -159,13 +163,15 @@
+
+
-
+
@@ -249,4 +255,24 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/compiler/spirv/spirv.core.grammar.json b/src/compiler/spirv/spirv.core.grammar.json
index 2ff4f9a4427..766a4ed21de 100644
--- a/src/compiler/spirv/spirv.core.grammar.json
+++ b/src/compiler/spirv/spirv.core.grammar.json
@@ -26,8 +26,8 @@
],
"magic_number" : "0x07230203",
"major_version" : 1,
- "minor_version" : 5,
- "revision" : 4,
+ "minor_version" : 6,
+ "revision" : 1,
"instruction_printing_class" : [
{
"tag" : "@exclude"
@@ -1735,7 +1735,8 @@
{ "kind" : "IdRef", "name" : "'x'" },
{ "kind" : "IdRef", "name" : "'y'" }
],
- "capabilities" : [ "Kernel" ]
+ "capabilities" : [ "Kernel" ],
+ "lastVersion" : "1.5"
},
{
"opname" : "OpOrdered",
@@ -4109,7 +4110,7 @@
"SPV_KHR_terminate_invocation"
],
"capabilities" : [ "Shader" ],
- "version" : "None"
+ "version" : "1.6"
},
{
"opname" : "OpSubgroupBallotKHR",
@@ -4260,6 +4261,20 @@
"extensions" : [ "SPV_KHR_ray_tracing" ],
"version" : "None"
},
+ {
+ "opname" : "OpSDot",
+ "class" : "Arithmetic",
+ "opcode" : 4450,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ { "kind" : "IdRef", "name" : "'Vector 1'" },
+ { "kind" : "IdRef", "name" : "'Vector 2'" },
+ { "kind" : "PackedVectorFormat", "name" : "'Packed Vector Format'", "quantifier" : "?" }
+ ],
+ "capabilities" : [ "DotProduct" ],
+ "version" : "1.6"
+ },
{
"opname" : "OpSDotKHR",
"class" : "Arithmetic",
@@ -4272,7 +4287,22 @@
{ "kind" : "PackedVectorFormat", "name" : "'Packed Vector Format'", "quantifier" : "?" }
],
"capabilities" : [ "DotProductKHR" ],
- "version" : "None"
+ "extensions" : [ "SPV_KHR_integer_dot_product" ],
+ "version" : "1.6"
+ },
+ {
+ "opname" : "OpUDot",
+ "class" : "Arithmetic",
+ "opcode" : 4451,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ { "kind" : "IdRef", "name" : "'Vector 1'" },
+ { "kind" : "IdRef", "name" : "'Vector 2'" },
+ { "kind" : "PackedVectorFormat", "name" : "'Packed Vector Format'", "quantifier" : "?" }
+ ],
+ "capabilities" : [ "DotProduct" ],
+ "version" : "1.6"
},
{
"opname" : "OpUDotKHR",
@@ -4286,7 +4316,22 @@
{ "kind" : "PackedVectorFormat", "name" : "'Packed Vector Format'", "quantifier" : "?" }
],
"capabilities" : [ "DotProductKHR" ],
- "version" : "None"
+ "extensions" : [ "SPV_KHR_integer_dot_product" ],
+ "version" : "1.6"
+ },
+ {
+ "opname" : "OpSUDot",
+ "class" : "Arithmetic",
+ "opcode" : 4452,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ { "kind" : "IdRef", "name" : "'Vector 1'" },
+ { "kind" : "IdRef", "name" : "'Vector 2'" },
+ { "kind" : "PackedVectorFormat", "name" : "'Packed Vector Format'", "quantifier" : "?" }
+ ],
+ "capabilities" : [ "DotProduct" ],
+ "version" : "1.6"
},
{
"opname" : "OpSUDotKHR",
@@ -4300,7 +4345,23 @@
{ "kind" : "PackedVectorFormat", "name" : "'Packed Vector Format'", "quantifier" : "?" }
],
"capabilities" : [ "DotProductKHR" ],
- "version" : "None"
+ "extensions" : [ "SPV_KHR_integer_dot_product" ],
+ "version" : "1.6"
+ },
+ {
+ "opname" : "OpSDotAccSat",
+ "class" : "Arithmetic",
+ "opcode" : 4453,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ { "kind" : "IdRef", "name" : "'Vector 1'" },
+ { "kind" : "IdRef", "name" : "'Vector 2'" },
+ { "kind" : "IdRef", "name" : "'Accumulator'" },
+ { "kind" : "PackedVectorFormat", "name" : "'Packed Vector Format'", "quantifier" : "?" }
+ ],
+ "capabilities" : [ "DotProduct" ],
+ "version" : "1.6"
},
{
"opname" : "OpSDotAccSatKHR",
@@ -4315,7 +4376,23 @@
{ "kind" : "PackedVectorFormat", "name" : "'Packed Vector Format'", "quantifier" : "?" }
],
"capabilities" : [ "DotProductKHR" ],
- "version" : "None"
+ "extensions" : [ "SPV_KHR_integer_dot_product" ],
+ "version" : "1.6"
+ },
+ {
+ "opname" : "OpUDotAccSat",
+ "class" : "Arithmetic",
+ "opcode" : 4454,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ { "kind" : "IdRef", "name" : "'Vector 1'" },
+ { "kind" : "IdRef", "name" : "'Vector 2'" },
+ { "kind" : "IdRef", "name" : "'Accumulator'" },
+ { "kind" : "PackedVectorFormat", "name" : "'Packed Vector Format'", "quantifier" : "?" }
+ ],
+ "capabilities" : [ "DotProduct" ],
+ "version" : "1.6"
},
{
"opname" : "OpUDotAccSatKHR",
@@ -4330,7 +4407,23 @@
{ "kind" : "PackedVectorFormat", "name" : "'Packed Vector Format'", "quantifier" : "?" }
],
"capabilities" : [ "DotProductKHR" ],
- "version" : "None"
+ "extensions" : [ "SPV_KHR_integer_dot_product" ],
+ "version" : "1.6"
+ },
+ {
+ "opname" : "OpSUDotAccSat",
+ "class" : "Arithmetic",
+ "opcode" : 4455,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ { "kind" : "IdRef", "name" : "'Vector 1'" },
+ { "kind" : "IdRef", "name" : "'Vector 2'" },
+ { "kind" : "IdRef", "name" : "'Accumulator'" },
+ { "kind" : "PackedVectorFormat", "name" : "'Packed Vector Format'", "quantifier" : "?" }
+ ],
+ "capabilities" : [ "DotProduct" ],
+ "version" : "1.6"
},
{
"opname" : "OpSUDotAccSatKHR",
@@ -4345,7 +4438,8 @@
{ "kind" : "PackedVectorFormat", "name" : "'Packed Vector Format'", "quantifier" : "?" }
],
"capabilities" : [ "DotProductKHR" ],
- "version" : "None"
+ "extensions" : [ "SPV_KHR_integer_dot_product" ],
+ "version" : "1.6"
},
{
"opname" : "OpTypeRayQueryKHR",
@@ -4753,6 +4847,52 @@
"extensions" : [ "SPV_NV_ray_tracing" ],
"version" : "None"
},
+ {
+ "opname" : "OpTraceMotionNV",
+ "class" : "Reserved",
+ "opcode" : 5338,
+ "operands" : [
+
+ { "kind" : "IdRef", "name" : "'Accel'" },
+ { "kind" : "IdRef", "name" : "'Ray Flags'" },
+ { "kind" : "IdRef", "name" : "'Cull Mask'" },
+ { "kind" : "IdRef", "name" : "'SBT Offset'" },
+ { "kind" : "IdRef", "name" : "'SBT Stride'" },
+ { "kind" : "IdRef", "name" : "'Miss Index'" },
+ { "kind" : "IdRef", "name" : "'Ray Origin'" },
+ { "kind" : "IdRef", "name" : "'Ray Tmin'" },
+ { "kind" : "IdRef", "name" : "'Ray Direction'" },
+ { "kind" : "IdRef", "name" : "'Ray Tmax'" },
+ { "kind" : "IdRef", "name" : "'Time'" },
+ { "kind" : "IdRef", "name" : "'PayloadId'" }
+ ],
+ "capabilities" : [ "RayTracingMotionBlurNV" ],
+ "extensions" : [ "SPV_NV_ray_tracing_motion_blur" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpTraceRayMotionNV",
+ "class" : "Reserved",
+ "opcode" : 5339,
+ "operands" : [
+
+ { "kind" : "IdRef", "name" : "'Accel'" },
+ { "kind" : "IdRef", "name" : "'Ray Flags'" },
+ { "kind" : "IdRef", "name" : "'Cull Mask'" },
+ { "kind" : "IdRef", "name" : "'SBT Offset'" },
+ { "kind" : "IdRef", "name" : "'SBT Stride'" },
+ { "kind" : "IdRef", "name" : "'Miss Index'" },
+ { "kind" : "IdRef", "name" : "'Ray Origin'" },
+ { "kind" : "IdRef", "name" : "'Ray Tmin'" },
+ { "kind" : "IdRef", "name" : "'Ray Direction'" },
+ { "kind" : "IdRef", "name" : "'Ray Tmax'" },
+ { "kind" : "IdRef", "name" : "'Time'" },
+ { "kind" : "IdRef", "name" : "'Payload'" }
+ ],
+ "capabilities" : [ "RayTracingMotionBlurNV" ],
+ "extensions" : [ "SPV_NV_ray_tracing_motion_blur" ],
+ "version" : "None"
+ },
{
"opname" : "OpTypeAccelerationStructureNV",
"class" : "Reserved",
@@ -4879,12 +5019,18 @@
"version" : "None"
},
{
- "opname" : "OpDemoteToHelperInvocationEXT",
- "class" : "Reserved",
+ "opname" : "OpDemoteToHelperInvocation",
+ "class" : "Control-Flow",
"opcode" : 5380,
- "capabilities" : [ "DemoteToHelperInvocationEXT" ],
- "extensions" : [ "SPV_EXT_demote_to_helper_invocation" ],
- "version" : "None"
+ "capabilities" : [ "DemoteToHelperInvocation" ],
+ "version" : "1.6"
+ },
+ {
+ "opname" : "OpDemoteToHelperInvocationEXT",
+ "class" : "Control-Flow",
+ "opcode" : 5380,
+ "capabilities" : [ "DemoteToHelperInvocation" ],
+ "version" : "1.6"
},
{
"opname" : "OpIsHelperInvocationEXT",
@@ -4898,6 +5044,88 @@
"extensions" : [ "SPV_EXT_demote_to_helper_invocation" ],
"version" : "None"
},
+ {
+ "opname" : "OpConvertUToImageNV",
+ "class" : "Reserved",
+ "opcode" : 5391,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ { "kind" : "IdRef", "name" : "'Operand'" }
+ ],
+ "capabilities" : [ "BindlessTextureNV" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpConvertUToSamplerNV",
+ "class" : "Reserved",
+ "opcode" : 5392,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ { "kind" : "IdRef", "name" : "'Operand'" }
+ ],
+ "capabilities" : [ "BindlessTextureNV" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpConvertImageToUNV",
+ "class" : "Reserved",
+ "opcode" : 5393,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ { "kind" : "IdRef", "name" : "'Operand'" }
+ ],
+ "capabilities" : [ "BindlessTextureNV" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpConvertSamplerToUNV",
+ "class" : "Reserved",
+ "opcode" : 5394,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ { "kind" : "IdRef", "name" : "'Operand'" }
+ ],
+ "capabilities" : [ "BindlessTextureNV" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpConvertUToSampledImageNV",
+ "class" : "Reserved",
+ "opcode" : 5395,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ { "kind" : "IdRef", "name" : "'Operand'" }
+ ],
+ "capabilities" : [ "BindlessTextureNV" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpConvertSampledImageToUNV",
+ "class" : "Reserved",
+ "opcode" : 5396,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ { "kind" : "IdRef", "name" : "'Operand'" }
+ ],
+ "capabilities" : [ "BindlessTextureNV" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpSamplerImageAddressingModeNV",
+ "class" : "Reserved",
+ "opcode" : 5397,
+ "operands" : [
+ { "kind" : "LiteralInteger", "name" : "'Bit Width'" }
+ ],
+ "capabilities" : [ "BindlessTextureNV" ],
+ "version" : "None"
+ },
{
"opname" : "OpSubgroupShuffleINTEL",
"class" : "Group",
@@ -5210,7 +5438,7 @@
"version" : "None"
},
{
- "opname" : "OpConstFunctionPointerINTEL",
+ "opname" : "OpConstantFunctionPointerINTEL",
"class" : "@exclude",
"opcode" : 5600,
"operands" : [
@@ -7630,24 +7858,6 @@
"capabilities" : [ "ArbitraryPrecisionFloatingPointINTEL" ],
"version" : "None"
},
- {
- "opname" : "OpArbitraryFloatPowNINTEL",
- "class" : "@exclude",
- "opcode" : 5882,
- "operands" : [
- { "kind" : "IdResultType" },
- { "kind" : "IdResult" },
- { "kind" : "IdRef", "name" : "'A'" },
- { "kind" : "LiteralInteger", "name" : "'M1'" },
- { "kind" : "IdRef", "name" : "'B'" },
- { "kind" : "LiteralInteger", "name" : "'Mout'" },
- { "kind" : "LiteralInteger", "name" : "'EnableSubnormals'" },
- { "kind" : "LiteralInteger", "name" : "'RoundingMode'" },
- { "kind" : "LiteralInteger", "name" : "'RoundingAccuracy'" }
- ],
- "capabilities" : [ "ArbitraryPrecisionFloatingPointINTEL" ],
- "version" : "None"
- },
{
"opname" : "OpLoopControlINTEL",
"class" : "Reserved",
@@ -8447,6 +8657,18 @@
"enumerant" : "ZeroExtend",
"value" : "0x2000",
"version" : "1.4"
+ },
+ {
+ "enumerant" : "Nontemporal",
+ "value" : "0x4000",
+ "version" : "1.6"
+ },
+ {
+ "enumerant" : "Offsets",
+ "value" : "0x10000",
+ "parameters" : [
+ { "kind" : "IdRef" }
+ ]
}
]
},
@@ -8460,40 +8682,35 @@
},
{
"enumerant" : "NotNaN",
- "value" : "0x0001",
- "capabilities" : [ "Kernel" ]
+ "value" : "0x0001"
},
{
"enumerant" : "NotInf",
- "value" : "0x0002",
- "capabilities" : [ "Kernel" ]
+ "value" : "0x0002"
},
{
"enumerant" : "NSZ",
- "value" : "0x0004",
- "capabilities" : [ "Kernel" ]
+ "value" : "0x0004"
},
{
"enumerant" : "AllowRecip",
- "value" : "0x0008",
- "capabilities" : [ "Kernel" ]
+ "value" : "0x0008"
},
{
"enumerant" : "Fast",
- "value" : "0x0010",
- "capabilities" : [ "Kernel" ]
+ "value" : "0x0010"
},
{
"enumerant" : "AllowContractFastINTEL",
"value" : "0x10000",
"capabilities" : [ "FPFastMathModeINTEL" ],
- "version" : "None"
+ "version" : "None"
},
{
"enumerant" : "AllowReassocINTEL",
"value" : "0x20000",
"capabilities" : [ "FPFastMathModeINTEL" ],
- "version" : "None"
+ "version" : "None"
}
]
},
@@ -8692,7 +8909,9 @@
},
{
"enumerant" : "OptNoneINTEL",
- "value" : "0x10000"
+ "value" : "0x10000",
+ "capabilities" : [ "OptNoneINTEL" ],
+ "version" : "None"
}
]
},
@@ -10763,12 +10982,12 @@
{
"enumerant" : "Uniform",
"value" : 26,
- "capabilities" : [ "Shader" ]
+ "capabilities" : [ "Shader", "UniformDecoration" ]
},
{
"enumerant" : "UniformId",
"value" : 27,
- "capabilities" : [ "Shader" ],
+ "capabilities" : [ "Shader", "UniformDecoration" ],
"parameters" : [
{ "kind" : "IdScope", "name" : "'Execution'" }
],
@@ -11000,11 +11219,18 @@
"extensions" : [ "SPV_NV_mesh_shader" ],
"version" : "None"
},
+ {
+ "enumerant" : "PerVertexKHR",
+ "value" : 5285,
+ "capabilities" : [ "FragmentBarycentricNV", "FragmentBarycentricKHR" ],
+ "extensions" : [ "SPV_NV_fragment_shader_barycentric", "SPV_KHR_fragment_shader_barycentric" ],
+ "version" : "None"
+ },
{
"enumerant" : "PerVertexNV",
"value" : 5285,
- "capabilities" : [ "FragmentBarycentricNV" ],
- "extensions" : [ "SPV_NV_fragment_shader_barycentric" ],
+ "capabilities" : [ "FragmentBarycentricNV", "FragmentBarycentricKHR" ],
+ "extensions" : [ "SPV_NV_fragment_shader_barycentric", "SPV_KHR_fragment_shader_barycentric" ],
"version" : "None"
},
{
@@ -11048,6 +11274,30 @@
"extensions" : [ "SPV_EXT_physical_storage_buffer" ],
"version" : "1.5"
},
+ {
+ "enumerant" : "BindlessSamplerNV",
+ "value" : 5398,
+ "capabilities" : [ "BindlessTextureNV" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "BindlessImageNV",
+ "value" : 5399,
+ "capabilities" : [ "BindlessTextureNV" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "BoundSamplerNV",
+ "value" : 5400,
+ "capabilities" : [ "BindlessTextureNV" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "BoundImageNV",
+ "value" : 5401,
+ "capabilities" : [ "BindlessTextureNV" ],
+ "version" : "None"
+ },
{
"enumerant" : "SIMTCallINTEL",
"value" : 5599,
@@ -11368,6 +11618,12 @@
"value" : 6087,
"capabilities" : [ "VectorComputeINTEL" ],
"version" : "None"
+ },
+ {
+ "enumerant" : "MediaBlockIOINTEL",
+ "value" : 6140,
+ "capabilities" : [ "VectorComputeINTEL" ],
+ "version" : "None"
}
]
},
@@ -11835,18 +12091,32 @@
"extensions" : [ "SPV_NV_mesh_shader" ],
"version" : "None"
},
+ {
+ "enumerant" : "BaryCoordKHR",
+ "value" : 5286,
+ "capabilities" : [ "FragmentBarycentricNV", "FragmentBarycentricKHR" ],
+ "extensions" : [ "SPV_NV_fragment_shader_barycentric", "SPV_KHR_fragment_shader_barycentric" ],
+ "version" : "None"
+ },
{
"enumerant" : "BaryCoordNV",
"value" : 5286,
- "capabilities" : [ "FragmentBarycentricNV" ],
- "extensions" : [ "SPV_NV_fragment_shader_barycentric" ],
+ "capabilities" : [ "FragmentBarycentricNV", "FragmentBarycentricKHR" ],
+ "extensions" : [ "SPV_NV_fragment_shader_barycentric", "SPV_KHR_fragment_shader_barycentric" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "BaryCoordNoPerspKHR",
+ "value" : 5287,
+ "capabilities" : [ "FragmentBarycentricNV", "FragmentBarycentricKHR" ],
+ "extensions" : [ "SPV_NV_fragment_shader_barycentric", "SPV_KHR_fragment_shader_barycentric" ],
"version" : "None"
},
{
"enumerant" : "BaryCoordNoPerspNV",
"value" : 5287,
- "capabilities" : [ "FragmentBarycentricNV" ],
- "extensions" : [ "SPV_NV_fragment_shader_barycentric" ],
+ "capabilities" : [ "FragmentBarycentricNV", "FragmentBarycentricKHR" ],
+ "extensions" : [ "SPV_NV_fragment_shader_barycentric", "SPV_KHR_fragment_shader_barycentric" ],
"version" : "None"
},
{
@@ -12052,6 +12322,13 @@
"extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
"version" : "None"
},
+ {
+ "enumerant" : "CurrentRayTimeNV",
+ "value" : 5334,
+ "capabilities" : [ "RayTracingMotionBlurNV" ],
+ "extensions" : [ "SPV_NV_ray_tracing_motion_blur" ],
+ "version" : "None"
+ },
{
"enumerant" : "IncomingRayFlagsNV",
"value" : 5351,
@@ -12564,6 +12841,11 @@
"value" : 70,
"version" : "1.5"
},
+ {
+ "enumerant" : "UniformDecoration",
+ "value" : 71,
+ "version" : "1.6"
+ },
{
"enumerant" : "FragmentShadingRateKHR",
"value" : 4422,
@@ -12889,10 +13171,16 @@
"extensions" : [ "SPV_NV_shader_image_footprint" ],
"version" : "None"
},
+ {
+ "enumerant" : "FragmentBarycentricKHR",
+ "value" : 5284,
+ "extensions" : [ "SPV_NV_fragment_shader_barycentric", "SPV_KHR_fragment_shader_barycentric" ],
+ "version" : "None"
+ },
{
"enumerant" : "FragmentBarycentricNV",
"value" : 5284,
- "extensions" : [ "SPV_NV_fragment_shader_barycentric" ],
+ "extensions" : [ "SPV_NV_fragment_shader_barycentric", "SPV_KHR_fragment_shader_barycentric" ],
"version" : "None"
},
{
@@ -13084,6 +13372,13 @@
"extensions" : [ "SPV_NV_ray_tracing" ],
"version" : "None"
},
+ {
+ "enumerant" : "RayTracingMotionBlurNV",
+ "value" : 5341,
+ "capabilities" : [ "Shader" ],
+ "extensions" : [ "SPV_NV_ray_tracing_motion_blur" ],
+ "version" : "None"
+ },
{
"enumerant" : "VulkanMemoryModel",
"value" : 5345,
@@ -13168,11 +13463,23 @@
"extensions" : [ "SPV_EXT_fragment_shader_interlock" ],
"version" : "None"
},
+ {
+ "enumerant" : "DemoteToHelperInvocation",
+ "value" : 5379,
+ "capabilities" : [ "Shader" ],
+ "version" : "1.6"
+ },
{
"enumerant" : "DemoteToHelperInvocationEXT",
"value" : 5379,
"capabilities" : [ "Shader" ],
"extensions" : [ "SPV_EXT_demote_to_helper_invocation" ],
+ "version" : "1.6"
+ },
+ {
+ "enumerant" : "BindlessTextureNV",
+ "value" : 5390,
+ "extensions" : [ "SPV_NV_bindless_texture" ],
"version" : "None"
},
{
@@ -13406,30 +13713,51 @@
"extensions" : [ "SPV_INTEL_fpga_reg" ],
"version" : "None"
},
+ {
+ "enumerant" : "DotProductInputAll",
+ "value" : 6016,
+ "version" : "1.6"
+ },
{
"enumerant" : "DotProductInputAllKHR",
"value" : 6016,
"extensions" : [ "SPV_KHR_integer_dot_product" ],
- "version" : "None"
+ "version" : "1.6"
+ },
+ {
+ "enumerant" : "DotProductInput4x8Bit",
+ "value" : 6017,
+ "capabilities" : [ "Int8" ],
+ "version" : "1.6"
},
{
"enumerant" : "DotProductInput4x8BitKHR",
"value" : 6017,
"capabilities" : [ "Int8" ],
"extensions" : [ "SPV_KHR_integer_dot_product" ],
- "version" : "None"
+ "version" : "1.6"
+ },
+ {
+ "enumerant" : "DotProductInput4x8BitPacked",
+ "value" : 6018,
+ "version" : "1.6"
},
{
"enumerant" : "DotProductInput4x8BitPackedKHR",
"value" : 6018,
"extensions" : [ "SPV_KHR_integer_dot_product" ],
- "version" : "None"
+ "version" : "1.6"
+ },
+ {
+ "enumerant" : "DotProduct",
+ "value" : 6019,
+ "version" : "1.6"
},
{
"enumerant" : "DotProductKHR",
"value" : 6019,
"extensions" : [ "SPV_KHR_integer_dot_product" ],
- "version" : "None"
+ "version" : "1.6"
},
{
"enumerant" : "BitInstructions",
@@ -13440,14 +13768,12 @@
{
"enumerant" : "AtomicFloat32AddEXT",
"value" : 6033,
- "capabilities" : [ "Shader" ],
"extensions" : [ "SPV_EXT_shader_atomic_float_add" ],
"version" : "None"
},
{
"enumerant" : "AtomicFloat64AddEXT",
"value" : 6034,
- "capabilities" : [ "Shader" ],
"extensions" : [ "SPV_EXT_shader_atomic_float_add" ],
"version" : "None"
},
@@ -13466,7 +13792,6 @@
{
"enumerant" : "AtomicFloat16AddEXT",
"value" : 6095,
- "capabilities" : [ "Shader" ],
"extensions" : [ "SPV_EXT_shader_atomic_float16_add" ],
"version" : "None"
},
@@ -13542,11 +13867,16 @@
"category" : "ValueEnum",
"kind" : "PackedVectorFormat",
"enumerants" : [
+ {
+ "enumerant" : "PackedVectorFormat4x8Bit",
+ "value" : 0,
+ "version" : "1.6"
+ },
{
"enumerant" : "PackedVectorFormat4x8BitKHR",
"value" : 0,
"extensions" : [ "SPV_KHR_integer_dot_product" ],
- "version" : "None"
+ "version" : "1.6"
}
]
},
diff --git a/src/compiler/spirv/spirv.h b/src/compiler/spirv/spirv.h
index 79aa4f548c9..c15736e255b 100644
--- a/src/compiler/spirv/spirv.h
+++ b/src/compiler/spirv/spirv.h
@@ -53,12 +53,12 @@
typedef unsigned int SpvId;
-#define SPV_VERSION 0x10500
-#define SPV_REVISION 4
+#define SPV_VERSION 0x10600
+#define SPV_REVISION 1
static const unsigned int SpvMagicNumber = 0x07230203;
-static const unsigned int SpvVersion = 0x00010500;
-static const unsigned int SpvRevision = 4;
+static const unsigned int SpvVersion = 0x00010600;
+static const unsigned int SpvRevision = 1;
static const unsigned int SpvOpCodeMask = 0xffff;
static const unsigned int SpvWordCountShift = 16;
@@ -357,6 +357,8 @@ typedef enum SpvImageOperandsShift_ {
SpvImageOperandsVolatileTexelKHRShift = 11,
SpvImageOperandsSignExtendShift = 12,
SpvImageOperandsZeroExtendShift = 13,
+ SpvImageOperandsNontemporalShift = 14,
+ SpvImageOperandsOffsetsShift = 16,
SpvImageOperandsMax = 0x7fffffff,
} SpvImageOperandsShift;
@@ -380,6 +382,8 @@ typedef enum SpvImageOperandsMask_ {
SpvImageOperandsVolatileTexelKHRMask = 0x00000800,
SpvImageOperandsSignExtendMask = 0x00001000,
SpvImageOperandsZeroExtendMask = 0x00002000,
+ SpvImageOperandsNontemporalMask = 0x00004000,
+ SpvImageOperandsOffsetsMask = 0x00010000,
} SpvImageOperandsMask;
typedef enum SpvFPFastMathModeShift_ {
@@ -496,6 +500,7 @@ typedef enum SpvDecoration_ {
SpvDecorationPerPrimitiveNV = 5271,
SpvDecorationPerViewNV = 5272,
SpvDecorationPerTaskNV = 5273,
+ SpvDecorationPerVertexKHR = 5285,
SpvDecorationPerVertexNV = 5285,
SpvDecorationNonUniform = 5300,
SpvDecorationNonUniformEXT = 5300,
@@ -503,6 +508,10 @@ typedef enum SpvDecoration_ {
SpvDecorationRestrictPointerEXT = 5355,
SpvDecorationAliasedPointer = 5356,
SpvDecorationAliasedPointerEXT = 5356,
+ SpvDecorationBindlessSamplerNV = 5398,
+ SpvDecorationBindlessImageNV = 5399,
+ SpvDecorationBoundSamplerNV = 5400,
+ SpvDecorationBoundImageNV = 5401,
SpvDecorationSIMTCallINTEL = 5599,
SpvDecorationReferencedIndirectlyINTEL = 5602,
SpvDecorationClobberINTEL = 5607,
@@ -542,6 +551,7 @@ typedef enum SpvDecoration_ {
SpvDecorationFunctionFloatingPointModeINTEL = 6080,
SpvDecorationSingleElementVectorINTEL = 6085,
SpvDecorationVectorComputeCallableFunctionINTEL = 6087,
+ SpvDecorationMediaBlockIOINTEL = 6140,
SpvDecorationMax = 0x7fffffff,
} SpvDecoration;
@@ -626,7 +636,9 @@ typedef enum SpvBuiltIn_ {
SpvBuiltInLayerPerViewNV = 5279,
SpvBuiltInMeshViewCountNV = 5280,
SpvBuiltInMeshViewIndicesNV = 5281,
+ SpvBuiltInBaryCoordKHR = 5286,
SpvBuiltInBaryCoordNV = 5286,
+ SpvBuiltInBaryCoordNoPerspKHR = 5287,
SpvBuiltInBaryCoordNoPerspNV = 5287,
SpvBuiltInFragSizeEXT = 5292,
SpvBuiltInFragmentSizeNV = 5292,
@@ -657,6 +669,7 @@ typedef enum SpvBuiltIn_ {
SpvBuiltInHitTNV = 5332,
SpvBuiltInHitKindKHR = 5333,
SpvBuiltInHitKindNV = 5333,
+ SpvBuiltInCurrentRayTimeNV = 5334,
SpvBuiltInIncomingRayFlagsKHR = 5351,
SpvBuiltInIncomingRayFlagsNV = 5351,
SpvBuiltInRayGeometryIndexKHR = 5352,
@@ -917,6 +930,7 @@ typedef enum SpvCapability_ {
SpvCapabilityGroupNonUniformQuad = 68,
SpvCapabilityShaderLayer = 69,
SpvCapabilityShaderViewportIndex = 70,
+ SpvCapabilityUniformDecoration = 71,
SpvCapabilityFragmentShadingRateKHR = 4422,
SpvCapabilitySubgroupBallotKHR = 4423,
SpvCapabilityDrawParameters = 4427,
@@ -965,6 +979,7 @@ typedef enum SpvCapability_ {
SpvCapabilityFragmentFullyCoveredEXT = 5265,
SpvCapabilityMeshShadingNV = 5266,
SpvCapabilityImageFootprintNV = 5282,
+ SpvCapabilityFragmentBarycentricKHR = 5284,
SpvCapabilityFragmentBarycentricNV = 5284,
SpvCapabilityComputeDerivativeGroupQuadsNV = 5288,
SpvCapabilityFragmentDensityEXT = 5291,
@@ -995,6 +1010,7 @@ typedef enum SpvCapability_ {
SpvCapabilityStorageTexelBufferArrayNonUniformIndexing = 5312,
SpvCapabilityStorageTexelBufferArrayNonUniformIndexingEXT = 5312,
SpvCapabilityRayTracingNV = 5340,
+ SpvCapabilityRayTracingMotionBlurNV = 5341,
SpvCapabilityVulkanMemoryModel = 5345,
SpvCapabilityVulkanMemoryModelKHR = 5345,
SpvCapabilityVulkanMemoryModelDeviceScope = 5346,
@@ -1008,7 +1024,9 @@ typedef enum SpvCapability_ {
SpvCapabilityFragmentShaderShadingRateInterlockEXT = 5372,
SpvCapabilityShaderSMBuiltinsNV = 5373,
SpvCapabilityFragmentShaderPixelInterlockEXT = 5378,
+ SpvCapabilityDemoteToHelperInvocation = 5379,
SpvCapabilityDemoteToHelperInvocationEXT = 5379,
+ SpvCapabilityBindlessTextureNV = 5390,
SpvCapabilitySubgroupShuffleINTEL = 5568,
SpvCapabilitySubgroupBufferBlockIOINTEL = 5569,
SpvCapabilitySubgroupImageBlockIOINTEL = 5570,
@@ -1047,9 +1065,13 @@ typedef enum SpvCapability_ {
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,
@@ -1157,6 +1179,7 @@ typedef enum SpvOverflowModes_ {
} SpvOverflowModes;
typedef enum SpvPackedVectorFormat_ {
+ SpvPackedVectorFormatPackedVectorFormat4x8Bit = 0,
SpvPackedVectorFormatPackedVectorFormat4x8BitKHR = 0,
SpvPackedVectorFormatMax = 0x7fffffff,
} SpvPackedVectorFormat;
@@ -1518,11 +1541,17 @@ 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,
@@ -1550,6 +1579,8 @@ typedef enum SpvOp_ {
SpvOpIgnoreIntersectionNV = 5335,
SpvOpTerminateRayNV = 5336,
SpvOpTraceNV = 5337,
+ SpvOpTraceMotionNV = 5338,
+ SpvOpTraceRayMotionNV = 5339,
SpvOpTypeAccelerationStructureKHR = 5341,
SpvOpTypeAccelerationStructureNV = 5341,
SpvOpExecuteCallableNV = 5344,
@@ -1560,8 +1591,16 @@ 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,
@@ -1586,7 +1625,7 @@ typedef enum SpvOp_ {
SpvOpUSubSatINTEL = 5596,
SpvOpIMul32x16INTEL = 5597,
SpvOpUMul32x16INTEL = 5598,
- SpvOpConstFunctionPointerINTEL = 5600,
+ SpvOpConstantFunctionPointerINTEL = 5600,
SpvOpFunctionPointerCallINTEL = 5601,
SpvOpAsmTargetINTEL = 5609,
SpvOpAsmINTEL = 5610,
@@ -2164,12 +2203,12 @@ 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 SpvOpSDotKHR: *hasResult = true; *hasResultType = true; break;
- case SpvOpUDotKHR: *hasResult = true; *hasResultType = true; break;
- case SpvOpSUDotKHR: *hasResult = true; *hasResultType = true; break;
- case SpvOpSDotAccSatKHR: *hasResult = true; *hasResultType = true; break;
- case SpvOpUDotAccSatKHR: *hasResult = true; *hasResultType = true; break;
- case SpvOpSUDotAccSatKHR: *hasResult = true; *hasResultType = true; 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;
@@ -2195,6 +2234,8 @@ 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;
@@ -2204,8 +2245,15 @@ 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 SpvOpDemoteToHelperInvocationEXT: *hasResult = false; *hasResultType = false; break;
+ case SpvOpDemoteToHelperInvocation: *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;
@@ -2230,7 +2278,7 @@ 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 SpvOpConstFunctionPointerINTEL: *hasResult = true; *hasResultType = true; break;
+ case SpvOpConstantFunctionPointerINTEL: *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;