mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-09-28 16:45:38 +00:00
Update to SPIR-V 1.6
This commit is contained in:
@@ -55,7 +55,7 @@
|
||||
<id value="2" vendor="Valve" comment="Contact TBD"/>
|
||||
<id value="3" vendor="Codeplay" comment="Contact Victor Lomuller, victor@codeplay.com"/>
|
||||
<id value="4" vendor="NVIDIA" comment="Contact Kerch Holt, kholt@nvidia.com"/>
|
||||
<id value="5" vendor="ARM" comment="Contact Alexander Galazin, alexander.galazin@arm.com"/>
|
||||
<id value="5" vendor="ARM" comment="Contact Kevin Petit, kevin.petit@arm.com"/>
|
||||
<id value="6" vendor="Khronos" tool="LLVM/SPIR-V Translator" comment="Contact Yaxun (Sam) Liu, yaxun.liu@amd.com"/>
|
||||
<id value="7" vendor="Khronos" tool="SPIR-V Tools Assembler" comment="Contact David Neto, dneto@google.com"/>
|
||||
<id value="8" vendor="Khronos" tool="Glslang Reference Front End" comment="Contact John Kessenich, johnkessenich@google.com"/>
|
||||
@@ -82,7 +82,9 @@
|
||||
<id value="29" vendor="Mikkosoft Productions" tool="MSP Shader Compiler" comment="Contact Mikko Rasa, tdb@tdb.fi"/>
|
||||
<id value="30" vendor="SpvGenTwo community" tool="SpvGenTwo SPIR-V IR Tools" comment="https://github.com/rAzoR8/SpvGenTwo"/>
|
||||
<id value="31" vendor="Google" tool="Skia SkSL" comment="Contact Ethan Nicholas, ethannicholas@google.com"/>
|
||||
<unused start="32" end="0xFFFF" comment="Tool ID range reservable for future use by vendors"/>
|
||||
<id value="32" vendor="TornadoVM" tool="SPIRV Beehive Toolkit" comment="https://github.com/beehive-lab/spirv-beehive-toolkit"/>
|
||||
<id value="33" vendor="DragonJoker" tool="ShaderWriter" comment="Contact Sylvain Doremus, https://github.com/DragonJoker/ShaderWriter"/>
|
||||
<unused start="34" end="0xFFFF" comment="Tool ID range reservable for future use by vendors"/>
|
||||
</ids>
|
||||
|
||||
<!-- SECTION: SPIR-V Opcodes and Enumerants -->
|
||||
@@ -119,7 +121,7 @@
|
||||
<!-- Begin reservations of opcode enumerants -->
|
||||
<ids type="opcode" start="0" end="4095" vendor="Khronos" comment="Reserved opcodes, not available to vendors - see the SPIR-V Specification"/>
|
||||
<ids type="opcode" start="4096" end="4159" vendor="Mesa" comment="Contact TBD"/>
|
||||
<ids type="opcode" start="4160" end="4415" vendor="ARM"/>
|
||||
<ids type="opcode" start="4160" end="4415" vendor="ARM" comment="Contact kevin.petit@arm.com"/>
|
||||
<ids type="opcode" start="4416" end="4479" vendor="Khronos" comment="SPV_ARB_shader_ballot - contact Neil Henning, neil.henning@amd.com"/>
|
||||
<ids type="opcode" start="4480" end="4991" vendor="Qualcomm" comment="Contact weifengz@qti.qualcomm.com"/>
|
||||
<ids type="opcode" start="4992" end="5247" vendor="AMD"/>
|
||||
@@ -148,7 +150,7 @@
|
||||
<!-- Begin reservations of non-opcode enumerants -->
|
||||
<ids type="enumerant" start="0" end="4095" vendor="Khronos" comment="Reserved enumerants, not available to vendors - see the SPIR-V Specification"/>
|
||||
<ids type="enumerant" start="4096" end="4159" vendor="Mesa" comment="Contact TBD"/>
|
||||
<ids type="enumerant" start="4160" end="4415" vendor="ARM"/>
|
||||
<ids type="enumerant" start="4160" end="4415" vendor="ARM" comment="Contact kevin.petit@arm.com"/>
|
||||
<ids type="enumerant" start="4416" end="4479" vendor="Khronos" comment="SPV_ARB_shader_ballot - contact Neil Henning, neil.henning@amd.com"/>
|
||||
<ids type="enumerant" start="4480" end="4991" vendor="Qualcomm" comment="Contact weifengz@qti.qualcomm.com"/>
|
||||
<ids type="enumerant" start="4992" end="5247" vendor="AMD"/>
|
||||
|
||||
@@ -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",
|
||||
@@ -4925,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",
|
||||
@@ -4944,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",
|
||||
@@ -5256,7 +5438,7 @@
|
||||
"version" : "None"
|
||||
},
|
||||
{
|
||||
"opname" : "OpConstFunctionPointerINTEL",
|
||||
"opname" : "OpConstantFunctionPointerINTEL",
|
||||
"class" : "@exclude",
|
||||
"opcode" : 5600,
|
||||
"operands" : [
|
||||
@@ -8476,6 +8658,11 @@
|
||||
"value" : "0x2000",
|
||||
"version" : "1.4"
|
||||
},
|
||||
{
|
||||
"enumerant" : "Nontemporal",
|
||||
"value" : "0x4000",
|
||||
"version" : "1.6"
|
||||
},
|
||||
{
|
||||
"enumerant" : "Offsets",
|
||||
"value" : "0x10000",
|
||||
@@ -10795,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'" }
|
||||
],
|
||||
@@ -11032,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"
|
||||
},
|
||||
{
|
||||
@@ -11080,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,
|
||||
@@ -11400,6 +11618,12 @@
|
||||
"value" : 6087,
|
||||
"capabilities" : [ "VectorComputeINTEL" ],
|
||||
"version" : "None"
|
||||
},
|
||||
{
|
||||
"enumerant" : "MediaBlockIOINTEL",
|
||||
"value" : 6140,
|
||||
"capabilities" : [ "VectorComputeINTEL" ],
|
||||
"version" : "None"
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -11867,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"
|
||||
},
|
||||
{
|
||||
@@ -12603,6 +12841,11 @@
|
||||
"value" : 70,
|
||||
"version" : "1.5"
|
||||
},
|
||||
{
|
||||
"enumerant" : "UniformDecoration",
|
||||
"value" : 71,
|
||||
"version" : "1.6"
|
||||
},
|
||||
{
|
||||
"enumerant" : "FragmentShadingRateKHR",
|
||||
"value" : 4422,
|
||||
@@ -12928,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"
|
||||
},
|
||||
{
|
||||
@@ -13214,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"
|
||||
},
|
||||
{
|
||||
@@ -13452,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",
|
||||
@@ -13486,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"
|
||||
},
|
||||
@@ -13512,7 +13792,6 @@
|
||||
{
|
||||
"enumerant" : "AtomicFloat16AddEXT",
|
||||
"value" : 6095,
|
||||
"capabilities" : [ "Shader" ],
|
||||
"extensions" : [ "SPV_EXT_shader_atomic_float16_add" ],
|
||||
"version" : "None"
|
||||
},
|
||||
@@ -13588,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"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
@@ -3731,7 +3731,7 @@ void ThreadState::StepNext(ShaderDebugState *state, const rdcarray<ThreadState>
|
||||
case Op::VariableLengthArrayINTEL:
|
||||
case Op::TraceMotionNV:
|
||||
case Op::TraceRayMotionNV:
|
||||
case Op::ConstFunctionPointerINTEL:
|
||||
case Op::ConstantFunctionPointerINTEL:
|
||||
case Op::AsmTargetINTEL:
|
||||
case Op::AsmCallINTEL:
|
||||
case Op::SaveMemoryINTEL:
|
||||
@@ -3794,6 +3794,13 @@ void ThreadState::StepNext(ShaderDebugState *state, const rdcarray<ThreadState>
|
||||
case Op::TypeStructContinuedINTEL:
|
||||
case Op::ConstantCompositeContinuedINTEL:
|
||||
case Op::SpecConstantCompositeContinuedINTEL:
|
||||
case Op::ConvertUToImageNV:
|
||||
case Op::ConvertUToSamplerNV:
|
||||
case Op::ConvertUToSampledImageNV:
|
||||
case Op::ConvertImageToUNV:
|
||||
case Op::ConvertSamplerToUNV:
|
||||
case Op::ConvertSampledImageToUNV:
|
||||
case Op::SamplerImageAddressingModeNV:
|
||||
{
|
||||
RDCERR("Unsupported extension opcode used %s", ToStr(opdata.op).c_str());
|
||||
|
||||
|
||||
@@ -365,6 +365,7 @@ void Reflector::CheckDebuggable(bool &debuggable, rdcstr &debugStatus) const
|
||||
case Capability::Int64ImageEXT:
|
||||
case Capability::ExpectAssumeKHR:
|
||||
case Capability::BitInstructions:
|
||||
case Capability::UniformDecoration:
|
||||
{
|
||||
supported = true;
|
||||
break;
|
||||
@@ -516,6 +517,7 @@ void Reflector::CheckDebuggable(bool &debuggable, rdcstr &debugStatus) const
|
||||
case Capability::IOPipesINTEL:
|
||||
case Capability::LongConstantCompositeINTEL:
|
||||
case Capability::DebugInfoModuleINTEL:
|
||||
case Capability::BindlessTextureNV:
|
||||
case Capability::Max:
|
||||
case Capability::Invalid:
|
||||
{
|
||||
|
||||
@@ -83,6 +83,7 @@ rdcstr DoStringise(const rdcspv::ImageOperands &el)
|
||||
STRINGISE_BITFIELD_CLASS_BIT(VolatileTexel);
|
||||
STRINGISE_BITFIELD_CLASS_BIT(SignExtend);
|
||||
STRINGISE_BITFIELD_CLASS_BIT(ZeroExtend);
|
||||
STRINGISE_BITFIELD_CLASS_BIT(Nontemporal);
|
||||
STRINGISE_BITFIELD_CLASS_BIT(Offsets);
|
||||
}
|
||||
END_BITFIELD_STRINGISE();
|
||||
@@ -738,10 +739,14 @@ rdcstr DoStringise(const rdcspv::Decoration &el)
|
||||
STRINGISE_ENUM_CLASS(PerPrimitiveNV);
|
||||
STRINGISE_ENUM_CLASS(PerViewNV);
|
||||
STRINGISE_ENUM_CLASS(PerTaskNV);
|
||||
STRINGISE_ENUM_CLASS(PerVertexNV);
|
||||
STRINGISE_ENUM_CLASS(PerVertexKHR);
|
||||
STRINGISE_ENUM_CLASS(NonUniform);
|
||||
STRINGISE_ENUM_CLASS(RestrictPointer);
|
||||
STRINGISE_ENUM_CLASS(AliasedPointer);
|
||||
STRINGISE_ENUM_CLASS(BindlessSamplerNV);
|
||||
STRINGISE_ENUM_CLASS(BindlessImageNV);
|
||||
STRINGISE_ENUM_CLASS(BoundSamplerNV);
|
||||
STRINGISE_ENUM_CLASS(BoundImageNV);
|
||||
STRINGISE_ENUM_CLASS(SIMTCallINTEL);
|
||||
STRINGISE_ENUM_CLASS(ReferencedIndirectlyINTEL);
|
||||
STRINGISE_ENUM_CLASS(ClobberINTEL);
|
||||
@@ -779,6 +784,7 @@ rdcstr DoStringise(const rdcspv::Decoration &el)
|
||||
STRINGISE_ENUM_CLASS(FunctionFloatingPointModeINTEL);
|
||||
STRINGISE_ENUM_CLASS(SingleElementVectorINTEL);
|
||||
STRINGISE_ENUM_CLASS(VectorComputeCallableFunctionINTEL);
|
||||
STRINGISE_ENUM_CLASS(MediaBlockIOINTEL);
|
||||
}
|
||||
END_ENUM_STRINGISE();
|
||||
}
|
||||
@@ -863,8 +869,8 @@ rdcstr DoStringise(const rdcspv::BuiltIn &el)
|
||||
STRINGISE_ENUM_CLASS(LayerPerViewNV);
|
||||
STRINGISE_ENUM_CLASS(MeshViewCountNV);
|
||||
STRINGISE_ENUM_CLASS(MeshViewIndicesNV);
|
||||
STRINGISE_ENUM_CLASS(BaryCoordNV);
|
||||
STRINGISE_ENUM_CLASS(BaryCoordNoPerspNV);
|
||||
STRINGISE_ENUM_CLASS(BaryCoordKHR);
|
||||
STRINGISE_ENUM_CLASS(BaryCoordNoPerspKHR);
|
||||
STRINGISE_ENUM_CLASS(FragSizeEXT);
|
||||
STRINGISE_ENUM_CLASS(FragInvocationCountEXT);
|
||||
STRINGISE_ENUM_CLASS(LaunchIdNV);
|
||||
@@ -1009,6 +1015,7 @@ rdcstr DoStringise(const rdcspv::Capability &el)
|
||||
STRINGISE_ENUM_CLASS(GroupNonUniformQuad);
|
||||
STRINGISE_ENUM_CLASS(ShaderLayer);
|
||||
STRINGISE_ENUM_CLASS(ShaderViewportIndex);
|
||||
STRINGISE_ENUM_CLASS(UniformDecoration);
|
||||
STRINGISE_ENUM_CLASS(FragmentShadingRateKHR);
|
||||
STRINGISE_ENUM_CLASS(SubgroupBallotKHR);
|
||||
STRINGISE_ENUM_CLASS(DrawParameters);
|
||||
@@ -1054,7 +1061,7 @@ rdcstr DoStringise(const rdcspv::Capability &el)
|
||||
STRINGISE_ENUM_CLASS(FragmentFullyCoveredEXT);
|
||||
STRINGISE_ENUM_CLASS(MeshShadingNV);
|
||||
STRINGISE_ENUM_CLASS(ImageFootprintNV);
|
||||
STRINGISE_ENUM_CLASS(FragmentBarycentricNV);
|
||||
STRINGISE_ENUM_CLASS(FragmentBarycentricKHR);
|
||||
STRINGISE_ENUM_CLASS(ComputeDerivativeGroupQuadsNV);
|
||||
STRINGISE_ENUM_CLASS(FragmentDensityEXT);
|
||||
STRINGISE_ENUM_CLASS(GroupNonUniformPartitionedNV);
|
||||
@@ -1082,7 +1089,8 @@ rdcstr DoStringise(const rdcspv::Capability &el)
|
||||
STRINGISE_ENUM_CLASS(FragmentShaderShadingRateInterlockEXT);
|
||||
STRINGISE_ENUM_CLASS(ShaderSMBuiltinsNV);
|
||||
STRINGISE_ENUM_CLASS(FragmentShaderPixelInterlockEXT);
|
||||
STRINGISE_ENUM_CLASS(DemoteToHelperInvocationEXT);
|
||||
STRINGISE_ENUM_CLASS(DemoteToHelperInvocation);
|
||||
STRINGISE_ENUM_CLASS(BindlessTextureNV);
|
||||
STRINGISE_ENUM_CLASS(SubgroupShuffleINTEL);
|
||||
STRINGISE_ENUM_CLASS(SubgroupBufferBlockIOINTEL);
|
||||
STRINGISE_ENUM_CLASS(SubgroupImageBlockIOINTEL);
|
||||
@@ -1121,10 +1129,10 @@ rdcstr DoStringise(const rdcspv::Capability &el)
|
||||
STRINGISE_ENUM_CLASS(IOPipesINTEL);
|
||||
STRINGISE_ENUM_CLASS(BlockingPipesINTEL);
|
||||
STRINGISE_ENUM_CLASS(FPGARegINTEL);
|
||||
STRINGISE_ENUM_CLASS(DotProductInputAllKHR);
|
||||
STRINGISE_ENUM_CLASS(DotProductInput4x8BitKHR);
|
||||
STRINGISE_ENUM_CLASS(DotProductInput4x8BitPackedKHR);
|
||||
STRINGISE_ENUM_CLASS(DotProductKHR);
|
||||
STRINGISE_ENUM_CLASS(DotProductInputAll);
|
||||
STRINGISE_ENUM_CLASS(DotProductInput4x8Bit);
|
||||
STRINGISE_ENUM_CLASS(DotProductInput4x8BitPacked);
|
||||
STRINGISE_ENUM_CLASS(DotProduct);
|
||||
STRINGISE_ENUM_CLASS(BitInstructions);
|
||||
STRINGISE_ENUM_CLASS(AtomicFloat32AddEXT);
|
||||
STRINGISE_ENUM_CLASS(AtomicFloat64AddEXT);
|
||||
@@ -1175,7 +1183,7 @@ rdcstr DoStringise(const rdcspv::PackedVectorFormat &el)
|
||||
{
|
||||
BEGIN_ENUM_STRINGISE(rdcspv::PackedVectorFormat);
|
||||
{
|
||||
STRINGISE_ENUM_CLASS(PackedVectorFormat4x8BitKHR);
|
||||
STRINGISE_ENUM_CLASS(PackedVectorFormat4x8Bit);
|
||||
}
|
||||
END_ENUM_STRINGISE();
|
||||
}
|
||||
@@ -1541,12 +1549,12 @@ rdcstr DoStringise(const rdcspv::Op &el)
|
||||
STRINGISE_ENUM_CLASS(ConvertUToAccelerationStructureKHR);
|
||||
STRINGISE_ENUM_CLASS(IgnoreIntersectionKHR);
|
||||
STRINGISE_ENUM_CLASS(TerminateRayKHR);
|
||||
STRINGISE_ENUM_CLASS(SDotKHR);
|
||||
STRINGISE_ENUM_CLASS(UDotKHR);
|
||||
STRINGISE_ENUM_CLASS(SUDotKHR);
|
||||
STRINGISE_ENUM_CLASS(SDotAccSatKHR);
|
||||
STRINGISE_ENUM_CLASS(UDotAccSatKHR);
|
||||
STRINGISE_ENUM_CLASS(SUDotAccSatKHR);
|
||||
STRINGISE_ENUM_CLASS(SDot);
|
||||
STRINGISE_ENUM_CLASS(UDot);
|
||||
STRINGISE_ENUM_CLASS(SUDot);
|
||||
STRINGISE_ENUM_CLASS(SDotAccSat);
|
||||
STRINGISE_ENUM_CLASS(UDotAccSat);
|
||||
STRINGISE_ENUM_CLASS(SUDotAccSat);
|
||||
STRINGISE_ENUM_CLASS(TypeRayQueryKHR);
|
||||
STRINGISE_ENUM_CLASS(RayQueryInitializeKHR);
|
||||
STRINGISE_ENUM_CLASS(RayQueryTerminateKHR);
|
||||
@@ -1583,8 +1591,15 @@ rdcstr DoStringise(const rdcspv::Op &el)
|
||||
STRINGISE_ENUM_CLASS(CooperativeMatrixLengthNV);
|
||||
STRINGISE_ENUM_CLASS(BeginInvocationInterlockEXT);
|
||||
STRINGISE_ENUM_CLASS(EndInvocationInterlockEXT);
|
||||
STRINGISE_ENUM_CLASS(DemoteToHelperInvocationEXT);
|
||||
STRINGISE_ENUM_CLASS(DemoteToHelperInvocation);
|
||||
STRINGISE_ENUM_CLASS(IsHelperInvocationEXT);
|
||||
STRINGISE_ENUM_CLASS(ConvertUToImageNV);
|
||||
STRINGISE_ENUM_CLASS(ConvertUToSamplerNV);
|
||||
STRINGISE_ENUM_CLASS(ConvertImageToUNV);
|
||||
STRINGISE_ENUM_CLASS(ConvertSamplerToUNV);
|
||||
STRINGISE_ENUM_CLASS(ConvertUToSampledImageNV);
|
||||
STRINGISE_ENUM_CLASS(ConvertSampledImageToUNV);
|
||||
STRINGISE_ENUM_CLASS(SamplerImageAddressingModeNV);
|
||||
STRINGISE_ENUM_CLASS(SubgroupShuffleINTEL);
|
||||
STRINGISE_ENUM_CLASS(SubgroupShuffleDownINTEL);
|
||||
STRINGISE_ENUM_CLASS(SubgroupShuffleUpINTEL);
|
||||
@@ -1609,7 +1624,7 @@ rdcstr DoStringise(const rdcspv::Op &el)
|
||||
STRINGISE_ENUM_CLASS(USubSatINTEL);
|
||||
STRINGISE_ENUM_CLASS(IMul32x16INTEL);
|
||||
STRINGISE_ENUM_CLASS(UMul32x16INTEL);
|
||||
STRINGISE_ENUM_CLASS(ConstFunctionPointerINTEL);
|
||||
STRINGISE_ENUM_CLASS(ConstantFunctionPointerINTEL);
|
||||
STRINGISE_ENUM_CLASS(FunctionPointerCallINTEL);
|
||||
STRINGISE_ENUM_CLASS(AsmTargetINTEL);
|
||||
STRINGISE_ENUM_CLASS(AsmINTEL);
|
||||
@@ -1893,6 +1908,8 @@ rdcstr ParamToStr(const std::function<rdcstr(rdcspv::Id)> &idName, const rdcspv:
|
||||
ret += "SignExtend" ", ";
|
||||
if(el.flags & ImageOperands::ZeroExtend)
|
||||
ret += "ZeroExtend" ", ";
|
||||
if(el.flags & ImageOperands::Nontemporal)
|
||||
ret += "Nontemporal" ", ";
|
||||
if(el.flags & ImageOperands::Offsets)
|
||||
ret += "Offsets" "(" + idName(el.offsets) + ")" ", ";
|
||||
|
||||
@@ -4090,39 +4107,39 @@ void OpDecoder::ForEachID(const ConstIter &it, const std::function<void(Id,bool)
|
||||
break;
|
||||
case rdcspv::Op::TerminateRayKHR:
|
||||
break;
|
||||
case rdcspv::Op::SDotKHR:
|
||||
case rdcspv::Op::SDot:
|
||||
callback(Id::fromWord(it.word(1)), false);
|
||||
callback(Id::fromWord(it.word(2)), true);
|
||||
callback(Id::fromWord(it.word(3)), false);
|
||||
callback(Id::fromWord(it.word(4)), false);
|
||||
break;
|
||||
case rdcspv::Op::UDotKHR:
|
||||
case rdcspv::Op::UDot:
|
||||
callback(Id::fromWord(it.word(1)), false);
|
||||
callback(Id::fromWord(it.word(2)), true);
|
||||
callback(Id::fromWord(it.word(3)), false);
|
||||
callback(Id::fromWord(it.word(4)), false);
|
||||
break;
|
||||
case rdcspv::Op::SUDotKHR:
|
||||
case rdcspv::Op::SUDot:
|
||||
callback(Id::fromWord(it.word(1)), false);
|
||||
callback(Id::fromWord(it.word(2)), true);
|
||||
callback(Id::fromWord(it.word(3)), false);
|
||||
callback(Id::fromWord(it.word(4)), false);
|
||||
break;
|
||||
case rdcspv::Op::SDotAccSatKHR:
|
||||
case rdcspv::Op::SDotAccSat:
|
||||
callback(Id::fromWord(it.word(1)), false);
|
||||
callback(Id::fromWord(it.word(2)), true);
|
||||
callback(Id::fromWord(it.word(3)), false);
|
||||
callback(Id::fromWord(it.word(4)), false);
|
||||
callback(Id::fromWord(it.word(5)), false);
|
||||
break;
|
||||
case rdcspv::Op::UDotAccSatKHR:
|
||||
case rdcspv::Op::UDotAccSat:
|
||||
callback(Id::fromWord(it.word(1)), false);
|
||||
callback(Id::fromWord(it.word(2)), true);
|
||||
callback(Id::fromWord(it.word(3)), false);
|
||||
callback(Id::fromWord(it.word(4)), false);
|
||||
callback(Id::fromWord(it.word(5)), false);
|
||||
break;
|
||||
case rdcspv::Op::SUDotAccSatKHR:
|
||||
case rdcspv::Op::SUDotAccSat:
|
||||
callback(Id::fromWord(it.word(1)), false);
|
||||
callback(Id::fromWord(it.word(2)), true);
|
||||
callback(Id::fromWord(it.word(3)), false);
|
||||
@@ -4340,12 +4357,44 @@ void OpDecoder::ForEachID(const ConstIter &it, const std::function<void(Id,bool)
|
||||
break;
|
||||
case rdcspv::Op::EndInvocationInterlockEXT:
|
||||
break;
|
||||
case rdcspv::Op::DemoteToHelperInvocationEXT:
|
||||
case rdcspv::Op::DemoteToHelperInvocation:
|
||||
break;
|
||||
case rdcspv::Op::IsHelperInvocationEXT:
|
||||
callback(Id::fromWord(it.word(1)), false);
|
||||
callback(Id::fromWord(it.word(2)), true);
|
||||
break;
|
||||
case rdcspv::Op::ConvertUToImageNV:
|
||||
callback(Id::fromWord(it.word(1)), false);
|
||||
callback(Id::fromWord(it.word(2)), true);
|
||||
callback(Id::fromWord(it.word(3)), false);
|
||||
break;
|
||||
case rdcspv::Op::ConvertUToSamplerNV:
|
||||
callback(Id::fromWord(it.word(1)), false);
|
||||
callback(Id::fromWord(it.word(2)), true);
|
||||
callback(Id::fromWord(it.word(3)), false);
|
||||
break;
|
||||
case rdcspv::Op::ConvertImageToUNV:
|
||||
callback(Id::fromWord(it.word(1)), false);
|
||||
callback(Id::fromWord(it.word(2)), true);
|
||||
callback(Id::fromWord(it.word(3)), false);
|
||||
break;
|
||||
case rdcspv::Op::ConvertSamplerToUNV:
|
||||
callback(Id::fromWord(it.word(1)), false);
|
||||
callback(Id::fromWord(it.word(2)), true);
|
||||
callback(Id::fromWord(it.word(3)), false);
|
||||
break;
|
||||
case rdcspv::Op::ConvertUToSampledImageNV:
|
||||
callback(Id::fromWord(it.word(1)), false);
|
||||
callback(Id::fromWord(it.word(2)), true);
|
||||
callback(Id::fromWord(it.word(3)), false);
|
||||
break;
|
||||
case rdcspv::Op::ConvertSampledImageToUNV:
|
||||
callback(Id::fromWord(it.word(1)), false);
|
||||
callback(Id::fromWord(it.word(2)), true);
|
||||
callback(Id::fromWord(it.word(3)), false);
|
||||
break;
|
||||
case rdcspv::Op::SamplerImageAddressingModeNV:
|
||||
break;
|
||||
case rdcspv::Op::SubgroupShuffleINTEL:
|
||||
callback(Id::fromWord(it.word(1)), false);
|
||||
callback(Id::fromWord(it.word(2)), true);
|
||||
@@ -4489,7 +4538,7 @@ void OpDecoder::ForEachID(const ConstIter &it, const std::function<void(Id,bool)
|
||||
callback(Id::fromWord(it.word(3)), false);
|
||||
callback(Id::fromWord(it.word(4)), false);
|
||||
break;
|
||||
case rdcspv::Op::ConstFunctionPointerINTEL:
|
||||
case rdcspv::Op::ConstantFunctionPointerINTEL:
|
||||
callback(Id::fromWord(it.word(1)), false);
|
||||
callback(Id::fromWord(it.word(2)), true);
|
||||
callback(Id::fromWord(it.word(3)), false);
|
||||
@@ -8122,46 +8171,46 @@ rdcstr OpDecoder::Disassemble(const ConstIter &it, const std::function<rdcstr(Id
|
||||
ret += "TerminateRayKHR(" ")";
|
||||
break;
|
||||
}
|
||||
case rdcspv::Op::SDotKHR:
|
||||
case rdcspv::Op::SDot:
|
||||
{
|
||||
OpSDotKHR decoded(it);
|
||||
OpSDot decoded(it);
|
||||
ret += declName(decoded.resultType, decoded.result) + " = ";
|
||||
ret += "SDotKHR(" + ParamToStr(idName, decoded.vector1) + ", " + ParamToStr(idName, decoded.vector2) + ", " + ParamToStr(idName, decoded.packedVectorFormat) + ")";
|
||||
ret += "SDot(" + ParamToStr(idName, decoded.vector1) + ", " + ParamToStr(idName, decoded.vector2) + ", " + ParamToStr(idName, decoded.packedVectorFormat) + ")";
|
||||
break;
|
||||
}
|
||||
case rdcspv::Op::UDotKHR:
|
||||
case rdcspv::Op::UDot:
|
||||
{
|
||||
OpUDotKHR decoded(it);
|
||||
OpUDot decoded(it);
|
||||
ret += declName(decoded.resultType, decoded.result) + " = ";
|
||||
ret += "UDotKHR(" + ParamToStr(idName, decoded.vector1) + ", " + ParamToStr(idName, decoded.vector2) + ", " + ParamToStr(idName, decoded.packedVectorFormat) + ")";
|
||||
ret += "UDot(" + ParamToStr(idName, decoded.vector1) + ", " + ParamToStr(idName, decoded.vector2) + ", " + ParamToStr(idName, decoded.packedVectorFormat) + ")";
|
||||
break;
|
||||
}
|
||||
case rdcspv::Op::SUDotKHR:
|
||||
case rdcspv::Op::SUDot:
|
||||
{
|
||||
OpSUDotKHR decoded(it);
|
||||
OpSUDot decoded(it);
|
||||
ret += declName(decoded.resultType, decoded.result) + " = ";
|
||||
ret += "SUDotKHR(" + ParamToStr(idName, decoded.vector1) + ", " + ParamToStr(idName, decoded.vector2) + ", " + ParamToStr(idName, decoded.packedVectorFormat) + ")";
|
||||
ret += "SUDot(" + ParamToStr(idName, decoded.vector1) + ", " + ParamToStr(idName, decoded.vector2) + ", " + ParamToStr(idName, decoded.packedVectorFormat) + ")";
|
||||
break;
|
||||
}
|
||||
case rdcspv::Op::SDotAccSatKHR:
|
||||
case rdcspv::Op::SDotAccSat:
|
||||
{
|
||||
OpSDotAccSatKHR decoded(it);
|
||||
OpSDotAccSat decoded(it);
|
||||
ret += declName(decoded.resultType, decoded.result) + " = ";
|
||||
ret += "SDotAccSatKHR(" + ParamToStr(idName, decoded.vector1) + ", " + ParamToStr(idName, decoded.vector2) + ", " + ParamToStr(idName, decoded.accumulator) + ", " + ParamToStr(idName, decoded.packedVectorFormat) + ")";
|
||||
ret += "SDotAccSat(" + ParamToStr(idName, decoded.vector1) + ", " + ParamToStr(idName, decoded.vector2) + ", " + ParamToStr(idName, decoded.accumulator) + ", " + ParamToStr(idName, decoded.packedVectorFormat) + ")";
|
||||
break;
|
||||
}
|
||||
case rdcspv::Op::UDotAccSatKHR:
|
||||
case rdcspv::Op::UDotAccSat:
|
||||
{
|
||||
OpUDotAccSatKHR decoded(it);
|
||||
OpUDotAccSat decoded(it);
|
||||
ret += declName(decoded.resultType, decoded.result) + " = ";
|
||||
ret += "UDotAccSatKHR(" + ParamToStr(idName, decoded.vector1) + ", " + ParamToStr(idName, decoded.vector2) + ", " + ParamToStr(idName, decoded.accumulator) + ", " + ParamToStr(idName, decoded.packedVectorFormat) + ")";
|
||||
ret += "UDotAccSat(" + ParamToStr(idName, decoded.vector1) + ", " + ParamToStr(idName, decoded.vector2) + ", " + ParamToStr(idName, decoded.accumulator) + ", " + ParamToStr(idName, decoded.packedVectorFormat) + ")";
|
||||
break;
|
||||
}
|
||||
case rdcspv::Op::SUDotAccSatKHR:
|
||||
case rdcspv::Op::SUDotAccSat:
|
||||
{
|
||||
OpSUDotAccSatKHR decoded(it);
|
||||
OpSUDotAccSat decoded(it);
|
||||
ret += declName(decoded.resultType, decoded.result) + " = ";
|
||||
ret += "SUDotAccSatKHR(" + ParamToStr(idName, decoded.vector1) + ", " + ParamToStr(idName, decoded.vector2) + ", " + ParamToStr(idName, decoded.accumulator) + ", " + ParamToStr(idName, decoded.packedVectorFormat) + ")";
|
||||
ret += "SUDotAccSat(" + ParamToStr(idName, decoded.vector1) + ", " + ParamToStr(idName, decoded.vector2) + ", " + ParamToStr(idName, decoded.accumulator) + ", " + ParamToStr(idName, decoded.packedVectorFormat) + ")";
|
||||
break;
|
||||
}
|
||||
case rdcspv::Op::TypeRayQueryKHR:
|
||||
@@ -8402,10 +8451,10 @@ rdcstr OpDecoder::Disassemble(const ConstIter &it, const std::function<rdcstr(Id
|
||||
ret += "EndInvocationInterlockEXT(" ")";
|
||||
break;
|
||||
}
|
||||
case rdcspv::Op::DemoteToHelperInvocationEXT:
|
||||
case rdcspv::Op::DemoteToHelperInvocation:
|
||||
{
|
||||
OpDemoteToHelperInvocationEXT decoded(it);
|
||||
ret += "DemoteToHelperInvocationEXT(" ")";
|
||||
OpDemoteToHelperInvocation decoded(it);
|
||||
ret += "DemoteToHelperInvocation(" ")";
|
||||
break;
|
||||
}
|
||||
case rdcspv::Op::IsHelperInvocationEXT:
|
||||
@@ -8415,6 +8464,54 @@ rdcstr OpDecoder::Disassemble(const ConstIter &it, const std::function<rdcstr(Id
|
||||
ret += "IsHelperInvocationEXT(" ")";
|
||||
break;
|
||||
}
|
||||
case rdcspv::Op::ConvertUToImageNV:
|
||||
{
|
||||
OpConvertUToImageNV decoded(it);
|
||||
ret += declName(decoded.resultType, decoded.result) + " = ";
|
||||
ret += "ConvertUToImageNV(" + ParamToStr(idName, decoded.operand) + ")";
|
||||
break;
|
||||
}
|
||||
case rdcspv::Op::ConvertUToSamplerNV:
|
||||
{
|
||||
OpConvertUToSamplerNV decoded(it);
|
||||
ret += declName(decoded.resultType, decoded.result) + " = ";
|
||||
ret += "ConvertUToSamplerNV(" + ParamToStr(idName, decoded.operand) + ")";
|
||||
break;
|
||||
}
|
||||
case rdcspv::Op::ConvertImageToUNV:
|
||||
{
|
||||
OpConvertImageToUNV decoded(it);
|
||||
ret += declName(decoded.resultType, decoded.result) + " = ";
|
||||
ret += "ConvertImageToUNV(" + ParamToStr(idName, decoded.operand) + ")";
|
||||
break;
|
||||
}
|
||||
case rdcspv::Op::ConvertSamplerToUNV:
|
||||
{
|
||||
OpConvertSamplerToUNV decoded(it);
|
||||
ret += declName(decoded.resultType, decoded.result) + " = ";
|
||||
ret += "ConvertSamplerToUNV(" + ParamToStr(idName, decoded.operand) + ")";
|
||||
break;
|
||||
}
|
||||
case rdcspv::Op::ConvertUToSampledImageNV:
|
||||
{
|
||||
OpConvertUToSampledImageNV decoded(it);
|
||||
ret += declName(decoded.resultType, decoded.result) + " = ";
|
||||
ret += "ConvertUToSampledImageNV(" + ParamToStr(idName, decoded.operand) + ")";
|
||||
break;
|
||||
}
|
||||
case rdcspv::Op::ConvertSampledImageToUNV:
|
||||
{
|
||||
OpConvertSampledImageToUNV decoded(it);
|
||||
ret += declName(decoded.resultType, decoded.result) + " = ";
|
||||
ret += "ConvertSampledImageToUNV(" + ParamToStr(idName, decoded.operand) + ")";
|
||||
break;
|
||||
}
|
||||
case rdcspv::Op::SamplerImageAddressingModeNV:
|
||||
{
|
||||
OpSamplerImageAddressingModeNV decoded(it);
|
||||
ret += "SamplerImageAddressingModeNV(" + ParamToStr(idName, decoded.bitWidth) + ")";
|
||||
break;
|
||||
}
|
||||
case rdcspv::Op::SubgroupShuffleINTEL:
|
||||
{
|
||||
OpSubgroupShuffleINTEL decoded(it);
|
||||
@@ -8580,11 +8677,11 @@ rdcstr OpDecoder::Disassemble(const ConstIter &it, const std::function<rdcstr(Id
|
||||
ret += "UMul32x16INTEL(" + ParamToStr(idName, decoded.operand1) + ", " + ParamToStr(idName, decoded.operand2) + ")";
|
||||
break;
|
||||
}
|
||||
case rdcspv::Op::ConstFunctionPointerINTEL:
|
||||
case rdcspv::Op::ConstantFunctionPointerINTEL:
|
||||
{
|
||||
OpConstFunctionPointerINTEL decoded(it);
|
||||
OpConstantFunctionPointerINTEL decoded(it);
|
||||
ret += declName(decoded.resultType, decoded.result) + " = ";
|
||||
ret += "ConstFunctionPointerINTEL(" + ParamToStr(idName, decoded.function) + ")";
|
||||
ret += "ConstantFunctionPointerINTEL(" + ParamToStr(idName, decoded.function) + ")";
|
||||
break;
|
||||
}
|
||||
case rdcspv::Op::FunctionPointerCallINTEL:
|
||||
@@ -10423,12 +10520,12 @@ OpDecoder::OpDecoder(const ConstIter &it)
|
||||
case rdcspv::Op::ConvertUToAccelerationStructureKHR: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::IgnoreIntersectionKHR: result = Id(); resultType = Id(); break;
|
||||
case rdcspv::Op::TerminateRayKHR: result = Id(); resultType = Id(); break;
|
||||
case rdcspv::Op::SDotKHR: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::UDotKHR: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::SUDotKHR: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::SDotAccSatKHR: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::UDotAccSatKHR: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::SUDotAccSatKHR: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::SDot: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::UDot: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::SUDot: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::SDotAccSat: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::UDotAccSat: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::SUDotAccSat: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::TypeRayQueryKHR: result = Id::fromWord(it.word(1)); resultType = Id(); break;
|
||||
case rdcspv::Op::RayQueryInitializeKHR: result = Id(); resultType = Id(); break;
|
||||
case rdcspv::Op::RayQueryTerminateKHR: result = Id(); resultType = Id(); break;
|
||||
@@ -10465,8 +10562,15 @@ OpDecoder::OpDecoder(const ConstIter &it)
|
||||
case rdcspv::Op::CooperativeMatrixLengthNV: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::BeginInvocationInterlockEXT: result = Id(); resultType = Id(); break;
|
||||
case rdcspv::Op::EndInvocationInterlockEXT: result = Id(); resultType = Id(); break;
|
||||
case rdcspv::Op::DemoteToHelperInvocationEXT: result = Id(); resultType = Id(); break;
|
||||
case rdcspv::Op::DemoteToHelperInvocation: result = Id(); resultType = Id(); break;
|
||||
case rdcspv::Op::IsHelperInvocationEXT: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::ConvertUToImageNV: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::ConvertUToSamplerNV: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::ConvertImageToUNV: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::ConvertSamplerToUNV: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::ConvertUToSampledImageNV: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::ConvertSampledImageToUNV: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::SamplerImageAddressingModeNV: result = Id(); resultType = Id(); break;
|
||||
case rdcspv::Op::SubgroupShuffleINTEL: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::SubgroupShuffleDownINTEL: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::SubgroupShuffleUpINTEL: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
@@ -10491,7 +10595,7 @@ OpDecoder::OpDecoder(const ConstIter &it)
|
||||
case rdcspv::Op::USubSatINTEL: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::IMul32x16INTEL: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::UMul32x16INTEL: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::ConstFunctionPointerINTEL: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::ConstantFunctionPointerINTEL: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::FunctionPointerCallINTEL: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::AsmTargetINTEL: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::AsmINTEL: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
@@ -10826,6 +10930,8 @@ rdcstr DoStringise(const rdcspv::Generator &el)
|
||||
STRINGISE_ENUM_CLASS_NAMED(MSPShaderCompiler, "MSP Shader Compiler from Mikkosoft Productions - Contact Mikko Rasa, tdb@tdb.fi");
|
||||
STRINGISE_ENUM_CLASS_NAMED(SpvGenTwoSPIRVIRTools, "SpvGenTwo SPIR-V IR Tools from SpvGenTwo community - https://github.com/rAzoR8/SpvGenTwo");
|
||||
STRINGISE_ENUM_CLASS_NAMED(SkiaSkSL, "Skia SkSL from Google - Contact Ethan Nicholas, ethannicholas@google.com");
|
||||
STRINGISE_ENUM_CLASS_NAMED(SPIRVBeehiveToolkit, "SPIRV Beehive Toolkit from TornadoVM - https://github.com/beehive-lab/spirv-beehive-toolkit");
|
||||
STRINGISE_ENUM_CLASS_NAMED(ShaderWriter, "ShaderWriter from DragonJoker - Contact Sylvain Doremus, https://github.com/DragonJoker/ShaderWriter");
|
||||
}
|
||||
END_ENUM_STRINGISE();
|
||||
}
|
||||
|
||||
@@ -71,9 +71,9 @@ namespace rdcspv
|
||||
{
|
||||
static const uint32_t MagicNumber = 0x07230203;
|
||||
static const uint32_t VersionMajor = 1;
|
||||
static const uint32_t VersionMinor = 5;
|
||||
static const uint32_t VersionRevision = 4;
|
||||
static const uint32_t VersionPacked = (1 << 16) | (5 << 8);
|
||||
static const uint32_t VersionMinor = 6;
|
||||
static const uint32_t VersionRevision = 1;
|
||||
static const uint32_t VersionPacked = (1 << 16) | (6 << 8);
|
||||
static const uint32_t OpCodeMask = 0xffff;
|
||||
static const uint32_t WordCountShift = 16;
|
||||
static const uint32_t FirstRealWord = 5;
|
||||
@@ -120,6 +120,8 @@ enum class Generator : uint32_t
|
||||
MSPShaderCompiler = 29,
|
||||
SpvGenTwoSPIRVIRTools = 30,
|
||||
SkiaSkSL = 31,
|
||||
SPIRVBeehiveToolkit = 32,
|
||||
ShaderWriter = 33,
|
||||
};
|
||||
|
||||
enum class ImageOperands : uint32_t
|
||||
@@ -143,6 +145,7 @@ enum class ImageOperands : uint32_t
|
||||
VolatileTexelKHR = 0x0800,
|
||||
SignExtend = 0x1000,
|
||||
ZeroExtend = 0x2000,
|
||||
Nontemporal = 0x4000,
|
||||
Offsets = 0x10000,
|
||||
Max,
|
||||
Invalid = ~0U,
|
||||
@@ -744,6 +747,7 @@ enum class Decoration : uint32_t
|
||||
PerPrimitiveNV = 5271,
|
||||
PerViewNV = 5272,
|
||||
PerTaskNV = 5273,
|
||||
PerVertexKHR = 5285,
|
||||
PerVertexNV = 5285,
|
||||
NonUniform = 5300,
|
||||
NonUniformEXT = 5300,
|
||||
@@ -751,6 +755,10 @@ enum class Decoration : uint32_t
|
||||
RestrictPointerEXT = 5355,
|
||||
AliasedPointer = 5356,
|
||||
AliasedPointerEXT = 5356,
|
||||
BindlessSamplerNV = 5398,
|
||||
BindlessImageNV = 5399,
|
||||
BoundSamplerNV = 5400,
|
||||
BoundImageNV = 5401,
|
||||
SIMTCallINTEL = 5599,
|
||||
ReferencedIndirectlyINTEL = 5602,
|
||||
ClobberINTEL = 5607,
|
||||
@@ -790,6 +798,7 @@ enum class Decoration : uint32_t
|
||||
FunctionFloatingPointModeINTEL = 6080,
|
||||
SingleElementVectorINTEL = 6085,
|
||||
VectorComputeCallableFunctionINTEL = 6087,
|
||||
MediaBlockIOINTEL = 6140,
|
||||
Max,
|
||||
Invalid = ~0U,
|
||||
};
|
||||
@@ -876,7 +885,9 @@ enum class BuiltIn : uint32_t
|
||||
LayerPerViewNV = 5279,
|
||||
MeshViewCountNV = 5280,
|
||||
MeshViewIndicesNV = 5281,
|
||||
BaryCoordKHR = 5286,
|
||||
BaryCoordNV = 5286,
|
||||
BaryCoordNoPerspKHR = 5287,
|
||||
BaryCoordNoPerspNV = 5287,
|
||||
FragSizeEXT = 5292,
|
||||
FragmentSizeNV = 5292,
|
||||
@@ -1026,6 +1037,7 @@ enum class Capability : uint32_t
|
||||
GroupNonUniformQuad = 68,
|
||||
ShaderLayer = 69,
|
||||
ShaderViewportIndex = 70,
|
||||
UniformDecoration = 71,
|
||||
FragmentShadingRateKHR = 4422,
|
||||
SubgroupBallotKHR = 4423,
|
||||
DrawParameters = 4427,
|
||||
@@ -1074,6 +1086,7 @@ enum class Capability : uint32_t
|
||||
FragmentFullyCoveredEXT = 5265,
|
||||
MeshShadingNV = 5266,
|
||||
ImageFootprintNV = 5282,
|
||||
FragmentBarycentricKHR = 5284,
|
||||
FragmentBarycentricNV = 5284,
|
||||
ComputeDerivativeGroupQuadsNV = 5288,
|
||||
FragmentDensityEXT = 5291,
|
||||
@@ -1118,7 +1131,9 @@ enum class Capability : uint32_t
|
||||
FragmentShaderShadingRateInterlockEXT = 5372,
|
||||
ShaderSMBuiltinsNV = 5373,
|
||||
FragmentShaderPixelInterlockEXT = 5378,
|
||||
DemoteToHelperInvocation = 5379,
|
||||
DemoteToHelperInvocationEXT = 5379,
|
||||
BindlessTextureNV = 5390,
|
||||
SubgroupShuffleINTEL = 5568,
|
||||
SubgroupBufferBlockIOINTEL = 5569,
|
||||
SubgroupImageBlockIOINTEL = 5570,
|
||||
@@ -1157,9 +1172,13 @@ enum class Capability : uint32_t
|
||||
IOPipesINTEL = 5943,
|
||||
BlockingPipesINTEL = 5945,
|
||||
FPGARegINTEL = 5948,
|
||||
DotProductInputAll = 6016,
|
||||
DotProductInputAllKHR = 6016,
|
||||
DotProductInput4x8Bit = 6017,
|
||||
DotProductInput4x8BitKHR = 6017,
|
||||
DotProductInput4x8BitPacked = 6018,
|
||||
DotProductInput4x8BitPackedKHR = 6018,
|
||||
DotProduct = 6019,
|
||||
DotProductKHR = 6019,
|
||||
BitInstructions = 6025,
|
||||
AtomicFloat32AddEXT = 6033,
|
||||
@@ -1199,6 +1218,7 @@ enum class RayQueryCandidateIntersectionType : uint32_t
|
||||
|
||||
enum class PackedVectorFormat : uint32_t
|
||||
{
|
||||
PackedVectorFormat4x8Bit = 0,
|
||||
PackedVectorFormat4x8BitKHR = 0,
|
||||
Max,
|
||||
Invalid = ~0U,
|
||||
@@ -1276,6 +1296,8 @@ struct ImageOperandsAndParamDatas
|
||||
void unsetSignExtend() { flags &= ~ImageOperands::SignExtend; }
|
||||
void setZeroExtend() { flags |= ImageOperands::ZeroExtend; }
|
||||
void unsetZeroExtend() { flags &= ~ImageOperands::ZeroExtend; }
|
||||
void setNontemporal() { flags |= ImageOperands::Nontemporal; }
|
||||
void unsetNontemporal() { flags &= ~ImageOperands::Nontemporal; }
|
||||
void setOffsets(Id offsetsParam) { flags |= ImageOperands::Offsets; offsets = offsetsParam; }
|
||||
void unsetOffsets() { flags &= ~ImageOperands::Offsets; }
|
||||
};
|
||||
@@ -1874,11 +1896,17 @@ enum class Op : uint16_t
|
||||
ConvertUToAccelerationStructureKHR = 4447,
|
||||
IgnoreIntersectionKHR = 4448,
|
||||
TerminateRayKHR = 4449,
|
||||
SDot = 4450,
|
||||
SDotKHR = 4450,
|
||||
UDot = 4451,
|
||||
UDotKHR = 4451,
|
||||
SUDot = 4452,
|
||||
SUDotKHR = 4452,
|
||||
SDotAccSat = 4453,
|
||||
SDotAccSatKHR = 4453,
|
||||
UDotAccSat = 4454,
|
||||
UDotAccSatKHR = 4454,
|
||||
SUDotAccSat = 4455,
|
||||
SUDotAccSatKHR = 4455,
|
||||
TypeRayQueryKHR = 4472,
|
||||
RayQueryInitializeKHR = 4473,
|
||||
@@ -1918,8 +1946,16 @@ enum class Op : uint16_t
|
||||
CooperativeMatrixLengthNV = 5362,
|
||||
BeginInvocationInterlockEXT = 5364,
|
||||
EndInvocationInterlockEXT = 5365,
|
||||
DemoteToHelperInvocation = 5380,
|
||||
DemoteToHelperInvocationEXT = 5380,
|
||||
IsHelperInvocationEXT = 5381,
|
||||
ConvertUToImageNV = 5391,
|
||||
ConvertUToSamplerNV = 5392,
|
||||
ConvertImageToUNV = 5393,
|
||||
ConvertSamplerToUNV = 5394,
|
||||
ConvertUToSampledImageNV = 5395,
|
||||
ConvertSampledImageToUNV = 5396,
|
||||
SamplerImageAddressingModeNV = 5397,
|
||||
SubgroupShuffleINTEL = 5571,
|
||||
SubgroupShuffleDownINTEL = 5572,
|
||||
SubgroupShuffleUpINTEL = 5573,
|
||||
@@ -1944,7 +1980,7 @@ enum class Op : uint16_t
|
||||
USubSatINTEL = 5596,
|
||||
IMul32x16INTEL = 5597,
|
||||
UMul32x16INTEL = 5598,
|
||||
ConstFunctionPointerINTEL = 5600,
|
||||
ConstantFunctionPointerINTEL = 5600,
|
||||
FunctionPointerCallINTEL = 5601,
|
||||
AsmTargetINTEL = 5609,
|
||||
AsmINTEL = 5610,
|
||||
|
||||
@@ -12672,9 +12672,9 @@ struct OpTerminateRayKHR
|
||||
// no operands
|
||||
};
|
||||
|
||||
struct OpSDotKHR
|
||||
struct OpSDot
|
||||
{
|
||||
OpSDotKHR(const ConstIter &it)
|
||||
OpSDot(const ConstIter &it)
|
||||
{
|
||||
uint32_t word = 0;(void)word;
|
||||
this->op = OpCode;
|
||||
@@ -12685,8 +12685,8 @@ struct OpSDotKHR
|
||||
this->vector2 = Id::fromWord(it.word(4));
|
||||
this->packedVectorFormat = (it.size() > 5) ? (PackedVectorFormat)it.word(5) : PackedVectorFormat::Invalid;
|
||||
}
|
||||
OpSDotKHR(IdResultType resultType, IdResult result, Id vector1, Id vector2, PackedVectorFormat packedVectorFormat = PackedVectorFormat::Invalid)
|
||||
: op(Op::SDotKHR)
|
||||
OpSDot(IdResultType resultType, IdResult result, Id vector1, Id vector2, PackedVectorFormat packedVectorFormat = PackedVectorFormat::Invalid)
|
||||
: op(Op::SDot)
|
||||
, wordCount(MinWordSize + OptionalWordCount(packedVectorFormat))
|
||||
{
|
||||
this->resultType = resultType;
|
||||
@@ -12706,7 +12706,7 @@ struct OpSDotKHR
|
||||
return Operation(OpCode, words);
|
||||
}
|
||||
|
||||
static constexpr Op OpCode = Op::SDotKHR;
|
||||
static constexpr Op OpCode = Op::SDot;
|
||||
static constexpr uint16_t MinWordSize = 5U;
|
||||
Op op;
|
||||
uint16_t wordCount;
|
||||
@@ -12719,9 +12719,9 @@ struct OpSDotKHR
|
||||
bool HasPackedVectorFormat() const { return wordCount > 5; }
|
||||
};
|
||||
|
||||
struct OpUDotKHR
|
||||
struct OpUDot
|
||||
{
|
||||
OpUDotKHR(const ConstIter &it)
|
||||
OpUDot(const ConstIter &it)
|
||||
{
|
||||
uint32_t word = 0;(void)word;
|
||||
this->op = OpCode;
|
||||
@@ -12732,8 +12732,8 @@ struct OpUDotKHR
|
||||
this->vector2 = Id::fromWord(it.word(4));
|
||||
this->packedVectorFormat = (it.size() > 5) ? (PackedVectorFormat)it.word(5) : PackedVectorFormat::Invalid;
|
||||
}
|
||||
OpUDotKHR(IdResultType resultType, IdResult result, Id vector1, Id vector2, PackedVectorFormat packedVectorFormat = PackedVectorFormat::Invalid)
|
||||
: op(Op::UDotKHR)
|
||||
OpUDot(IdResultType resultType, IdResult result, Id vector1, Id vector2, PackedVectorFormat packedVectorFormat = PackedVectorFormat::Invalid)
|
||||
: op(Op::UDot)
|
||||
, wordCount(MinWordSize + OptionalWordCount(packedVectorFormat))
|
||||
{
|
||||
this->resultType = resultType;
|
||||
@@ -12753,7 +12753,7 @@ struct OpUDotKHR
|
||||
return Operation(OpCode, words);
|
||||
}
|
||||
|
||||
static constexpr Op OpCode = Op::UDotKHR;
|
||||
static constexpr Op OpCode = Op::UDot;
|
||||
static constexpr uint16_t MinWordSize = 5U;
|
||||
Op op;
|
||||
uint16_t wordCount;
|
||||
@@ -12766,9 +12766,9 @@ struct OpUDotKHR
|
||||
bool HasPackedVectorFormat() const { return wordCount > 5; }
|
||||
};
|
||||
|
||||
struct OpSUDotKHR
|
||||
struct OpSUDot
|
||||
{
|
||||
OpSUDotKHR(const ConstIter &it)
|
||||
OpSUDot(const ConstIter &it)
|
||||
{
|
||||
uint32_t word = 0;(void)word;
|
||||
this->op = OpCode;
|
||||
@@ -12779,8 +12779,8 @@ struct OpSUDotKHR
|
||||
this->vector2 = Id::fromWord(it.word(4));
|
||||
this->packedVectorFormat = (it.size() > 5) ? (PackedVectorFormat)it.word(5) : PackedVectorFormat::Invalid;
|
||||
}
|
||||
OpSUDotKHR(IdResultType resultType, IdResult result, Id vector1, Id vector2, PackedVectorFormat packedVectorFormat = PackedVectorFormat::Invalid)
|
||||
: op(Op::SUDotKHR)
|
||||
OpSUDot(IdResultType resultType, IdResult result, Id vector1, Id vector2, PackedVectorFormat packedVectorFormat = PackedVectorFormat::Invalid)
|
||||
: op(Op::SUDot)
|
||||
, wordCount(MinWordSize + OptionalWordCount(packedVectorFormat))
|
||||
{
|
||||
this->resultType = resultType;
|
||||
@@ -12800,7 +12800,7 @@ struct OpSUDotKHR
|
||||
return Operation(OpCode, words);
|
||||
}
|
||||
|
||||
static constexpr Op OpCode = Op::SUDotKHR;
|
||||
static constexpr Op OpCode = Op::SUDot;
|
||||
static constexpr uint16_t MinWordSize = 5U;
|
||||
Op op;
|
||||
uint16_t wordCount;
|
||||
@@ -12813,9 +12813,9 @@ struct OpSUDotKHR
|
||||
bool HasPackedVectorFormat() const { return wordCount > 5; }
|
||||
};
|
||||
|
||||
struct OpSDotAccSatKHR
|
||||
struct OpSDotAccSat
|
||||
{
|
||||
OpSDotAccSatKHR(const ConstIter &it)
|
||||
OpSDotAccSat(const ConstIter &it)
|
||||
{
|
||||
uint32_t word = 0;(void)word;
|
||||
this->op = OpCode;
|
||||
@@ -12827,8 +12827,8 @@ struct OpSDotAccSatKHR
|
||||
this->accumulator = Id::fromWord(it.word(5));
|
||||
this->packedVectorFormat = (it.size() > 6) ? (PackedVectorFormat)it.word(6) : PackedVectorFormat::Invalid;
|
||||
}
|
||||
OpSDotAccSatKHR(IdResultType resultType, IdResult result, Id vector1, Id vector2, Id accumulator, PackedVectorFormat packedVectorFormat = PackedVectorFormat::Invalid)
|
||||
: op(Op::SDotAccSatKHR)
|
||||
OpSDotAccSat(IdResultType resultType, IdResult result, Id vector1, Id vector2, Id accumulator, PackedVectorFormat packedVectorFormat = PackedVectorFormat::Invalid)
|
||||
: op(Op::SDotAccSat)
|
||||
, wordCount(MinWordSize + OptionalWordCount(packedVectorFormat))
|
||||
{
|
||||
this->resultType = resultType;
|
||||
@@ -12850,7 +12850,7 @@ struct OpSDotAccSatKHR
|
||||
return Operation(OpCode, words);
|
||||
}
|
||||
|
||||
static constexpr Op OpCode = Op::SDotAccSatKHR;
|
||||
static constexpr Op OpCode = Op::SDotAccSat;
|
||||
static constexpr uint16_t MinWordSize = 6U;
|
||||
Op op;
|
||||
uint16_t wordCount;
|
||||
@@ -12864,9 +12864,9 @@ struct OpSDotAccSatKHR
|
||||
bool HasPackedVectorFormat() const { return wordCount > 6; }
|
||||
};
|
||||
|
||||
struct OpUDotAccSatKHR
|
||||
struct OpUDotAccSat
|
||||
{
|
||||
OpUDotAccSatKHR(const ConstIter &it)
|
||||
OpUDotAccSat(const ConstIter &it)
|
||||
{
|
||||
uint32_t word = 0;(void)word;
|
||||
this->op = OpCode;
|
||||
@@ -12878,8 +12878,8 @@ struct OpUDotAccSatKHR
|
||||
this->accumulator = Id::fromWord(it.word(5));
|
||||
this->packedVectorFormat = (it.size() > 6) ? (PackedVectorFormat)it.word(6) : PackedVectorFormat::Invalid;
|
||||
}
|
||||
OpUDotAccSatKHR(IdResultType resultType, IdResult result, Id vector1, Id vector2, Id accumulator, PackedVectorFormat packedVectorFormat = PackedVectorFormat::Invalid)
|
||||
: op(Op::UDotAccSatKHR)
|
||||
OpUDotAccSat(IdResultType resultType, IdResult result, Id vector1, Id vector2, Id accumulator, PackedVectorFormat packedVectorFormat = PackedVectorFormat::Invalid)
|
||||
: op(Op::UDotAccSat)
|
||||
, wordCount(MinWordSize + OptionalWordCount(packedVectorFormat))
|
||||
{
|
||||
this->resultType = resultType;
|
||||
@@ -12901,7 +12901,7 @@ struct OpUDotAccSatKHR
|
||||
return Operation(OpCode, words);
|
||||
}
|
||||
|
||||
static constexpr Op OpCode = Op::UDotAccSatKHR;
|
||||
static constexpr Op OpCode = Op::UDotAccSat;
|
||||
static constexpr uint16_t MinWordSize = 6U;
|
||||
Op op;
|
||||
uint16_t wordCount;
|
||||
@@ -12915,9 +12915,9 @@ struct OpUDotAccSatKHR
|
||||
bool HasPackedVectorFormat() const { return wordCount > 6; }
|
||||
};
|
||||
|
||||
struct OpSUDotAccSatKHR
|
||||
struct OpSUDotAccSat
|
||||
{
|
||||
OpSUDotAccSatKHR(const ConstIter &it)
|
||||
OpSUDotAccSat(const ConstIter &it)
|
||||
{
|
||||
uint32_t word = 0;(void)word;
|
||||
this->op = OpCode;
|
||||
@@ -12929,8 +12929,8 @@ struct OpSUDotAccSatKHR
|
||||
this->accumulator = Id::fromWord(it.word(5));
|
||||
this->packedVectorFormat = (it.size() > 6) ? (PackedVectorFormat)it.word(6) : PackedVectorFormat::Invalid;
|
||||
}
|
||||
OpSUDotAccSatKHR(IdResultType resultType, IdResult result, Id vector1, Id vector2, Id accumulator, PackedVectorFormat packedVectorFormat = PackedVectorFormat::Invalid)
|
||||
: op(Op::SUDotAccSatKHR)
|
||||
OpSUDotAccSat(IdResultType resultType, IdResult result, Id vector1, Id vector2, Id accumulator, PackedVectorFormat packedVectorFormat = PackedVectorFormat::Invalid)
|
||||
: op(Op::SUDotAccSat)
|
||||
, wordCount(MinWordSize + OptionalWordCount(packedVectorFormat))
|
||||
{
|
||||
this->resultType = resultType;
|
||||
@@ -12952,7 +12952,7 @@ struct OpSUDotAccSatKHR
|
||||
return Operation(OpCode, words);
|
||||
}
|
||||
|
||||
static constexpr Op OpCode = Op::SUDotAccSatKHR;
|
||||
static constexpr Op OpCode = Op::SUDotAccSat;
|
||||
static constexpr uint16_t MinWordSize = 6U;
|
||||
Op op;
|
||||
uint16_t wordCount;
|
||||
@@ -13982,20 +13982,20 @@ struct OpEndInvocationInterlockEXT
|
||||
// no operands
|
||||
};
|
||||
|
||||
struct OpDemoteToHelperInvocationEXT
|
||||
struct OpDemoteToHelperInvocation
|
||||
{
|
||||
OpDemoteToHelperInvocationEXT(const ConstIter &it)
|
||||
OpDemoteToHelperInvocation(const ConstIter &it)
|
||||
{
|
||||
memcpy(this, it.words(), sizeof(*this));
|
||||
}
|
||||
OpDemoteToHelperInvocationEXT()
|
||||
: op(Op::DemoteToHelperInvocationEXT)
|
||||
OpDemoteToHelperInvocation()
|
||||
: op(Op::DemoteToHelperInvocation)
|
||||
, wordCount(FixedWordSize)
|
||||
{
|
||||
// no operands
|
||||
}
|
||||
|
||||
static constexpr Op OpCode = Op::DemoteToHelperInvocationEXT;
|
||||
static constexpr Op OpCode = Op::DemoteToHelperInvocation;
|
||||
static constexpr uint16_t FixedWordSize = 1U;
|
||||
Op op;
|
||||
uint16_t wordCount;
|
||||
@@ -14024,6 +14024,170 @@ struct OpIsHelperInvocationEXT
|
||||
IdResult result;
|
||||
};
|
||||
|
||||
struct OpConvertUToImageNV
|
||||
{
|
||||
OpConvertUToImageNV(const ConstIter &it)
|
||||
{
|
||||
memcpy(this, it.words(), sizeof(*this));
|
||||
}
|
||||
OpConvertUToImageNV(IdResultType resultType, IdResult result, Id operand)
|
||||
: op(Op::ConvertUToImageNV)
|
||||
, wordCount(FixedWordSize)
|
||||
{
|
||||
this->resultType = resultType;
|
||||
this->result = result;
|
||||
this->operand = operand;
|
||||
}
|
||||
|
||||
static constexpr Op OpCode = Op::ConvertUToImageNV;
|
||||
static constexpr uint16_t FixedWordSize = 4U;
|
||||
Op op;
|
||||
uint16_t wordCount;
|
||||
IdResultType resultType;
|
||||
IdResult result;
|
||||
Id operand;
|
||||
};
|
||||
|
||||
struct OpConvertUToSamplerNV
|
||||
{
|
||||
OpConvertUToSamplerNV(const ConstIter &it)
|
||||
{
|
||||
memcpy(this, it.words(), sizeof(*this));
|
||||
}
|
||||
OpConvertUToSamplerNV(IdResultType resultType, IdResult result, Id operand)
|
||||
: op(Op::ConvertUToSamplerNV)
|
||||
, wordCount(FixedWordSize)
|
||||
{
|
||||
this->resultType = resultType;
|
||||
this->result = result;
|
||||
this->operand = operand;
|
||||
}
|
||||
|
||||
static constexpr Op OpCode = Op::ConvertUToSamplerNV;
|
||||
static constexpr uint16_t FixedWordSize = 4U;
|
||||
Op op;
|
||||
uint16_t wordCount;
|
||||
IdResultType resultType;
|
||||
IdResult result;
|
||||
Id operand;
|
||||
};
|
||||
|
||||
struct OpConvertImageToUNV
|
||||
{
|
||||
OpConvertImageToUNV(const ConstIter &it)
|
||||
{
|
||||
memcpy(this, it.words(), sizeof(*this));
|
||||
}
|
||||
OpConvertImageToUNV(IdResultType resultType, IdResult result, Id operand)
|
||||
: op(Op::ConvertImageToUNV)
|
||||
, wordCount(FixedWordSize)
|
||||
{
|
||||
this->resultType = resultType;
|
||||
this->result = result;
|
||||
this->operand = operand;
|
||||
}
|
||||
|
||||
static constexpr Op OpCode = Op::ConvertImageToUNV;
|
||||
static constexpr uint16_t FixedWordSize = 4U;
|
||||
Op op;
|
||||
uint16_t wordCount;
|
||||
IdResultType resultType;
|
||||
IdResult result;
|
||||
Id operand;
|
||||
};
|
||||
|
||||
struct OpConvertSamplerToUNV
|
||||
{
|
||||
OpConvertSamplerToUNV(const ConstIter &it)
|
||||
{
|
||||
memcpy(this, it.words(), sizeof(*this));
|
||||
}
|
||||
OpConvertSamplerToUNV(IdResultType resultType, IdResult result, Id operand)
|
||||
: op(Op::ConvertSamplerToUNV)
|
||||
, wordCount(FixedWordSize)
|
||||
{
|
||||
this->resultType = resultType;
|
||||
this->result = result;
|
||||
this->operand = operand;
|
||||
}
|
||||
|
||||
static constexpr Op OpCode = Op::ConvertSamplerToUNV;
|
||||
static constexpr uint16_t FixedWordSize = 4U;
|
||||
Op op;
|
||||
uint16_t wordCount;
|
||||
IdResultType resultType;
|
||||
IdResult result;
|
||||
Id operand;
|
||||
};
|
||||
|
||||
struct OpConvertUToSampledImageNV
|
||||
{
|
||||
OpConvertUToSampledImageNV(const ConstIter &it)
|
||||
{
|
||||
memcpy(this, it.words(), sizeof(*this));
|
||||
}
|
||||
OpConvertUToSampledImageNV(IdResultType resultType, IdResult result, Id operand)
|
||||
: op(Op::ConvertUToSampledImageNV)
|
||||
, wordCount(FixedWordSize)
|
||||
{
|
||||
this->resultType = resultType;
|
||||
this->result = result;
|
||||
this->operand = operand;
|
||||
}
|
||||
|
||||
static constexpr Op OpCode = Op::ConvertUToSampledImageNV;
|
||||
static constexpr uint16_t FixedWordSize = 4U;
|
||||
Op op;
|
||||
uint16_t wordCount;
|
||||
IdResultType resultType;
|
||||
IdResult result;
|
||||
Id operand;
|
||||
};
|
||||
|
||||
struct OpConvertSampledImageToUNV
|
||||
{
|
||||
OpConvertSampledImageToUNV(const ConstIter &it)
|
||||
{
|
||||
memcpy(this, it.words(), sizeof(*this));
|
||||
}
|
||||
OpConvertSampledImageToUNV(IdResultType resultType, IdResult result, Id operand)
|
||||
: op(Op::ConvertSampledImageToUNV)
|
||||
, wordCount(FixedWordSize)
|
||||
{
|
||||
this->resultType = resultType;
|
||||
this->result = result;
|
||||
this->operand = operand;
|
||||
}
|
||||
|
||||
static constexpr Op OpCode = Op::ConvertSampledImageToUNV;
|
||||
static constexpr uint16_t FixedWordSize = 4U;
|
||||
Op op;
|
||||
uint16_t wordCount;
|
||||
IdResultType resultType;
|
||||
IdResult result;
|
||||
Id operand;
|
||||
};
|
||||
|
||||
struct OpSamplerImageAddressingModeNV
|
||||
{
|
||||
OpSamplerImageAddressingModeNV(const ConstIter &it)
|
||||
{
|
||||
memcpy(this, it.words(), sizeof(*this));
|
||||
}
|
||||
OpSamplerImageAddressingModeNV(uint32_t bitWidth)
|
||||
: op(Op::SamplerImageAddressingModeNV)
|
||||
, wordCount(FixedWordSize)
|
||||
{
|
||||
this->bitWidth = bitWidth;
|
||||
}
|
||||
|
||||
static constexpr Op OpCode = Op::SamplerImageAddressingModeNV;
|
||||
static constexpr uint16_t FixedWordSize = 2U;
|
||||
Op op;
|
||||
uint16_t wordCount;
|
||||
uint32_t bitWidth;
|
||||
};
|
||||
|
||||
struct OpSubgroupShuffleINTEL
|
||||
{
|
||||
OpSubgroupShuffleINTEL(const ConstIter &it)
|
||||
@@ -14646,14 +14810,14 @@ struct OpUMul32x16INTEL
|
||||
Id operand2;
|
||||
};
|
||||
|
||||
struct OpConstFunctionPointerINTEL
|
||||
struct OpConstantFunctionPointerINTEL
|
||||
{
|
||||
OpConstFunctionPointerINTEL(const ConstIter &it)
|
||||
OpConstantFunctionPointerINTEL(const ConstIter &it)
|
||||
{
|
||||
memcpy(this, it.words(), sizeof(*this));
|
||||
}
|
||||
OpConstFunctionPointerINTEL(IdResultType resultType, IdResult result, Id function)
|
||||
: op(Op::ConstFunctionPointerINTEL)
|
||||
OpConstantFunctionPointerINTEL(IdResultType resultType, IdResult result, Id function)
|
||||
: op(Op::ConstantFunctionPointerINTEL)
|
||||
, wordCount(FixedWordSize)
|
||||
{
|
||||
this->resultType = resultType;
|
||||
@@ -14661,7 +14825,7 @@ struct OpConstFunctionPointerINTEL
|
||||
this->function = function;
|
||||
}
|
||||
|
||||
static constexpr Op OpCode = Op::ConstFunctionPointerINTEL;
|
||||
static constexpr Op OpCode = Op::ConstantFunctionPointerINTEL;
|
||||
static constexpr uint16_t FixedWordSize = 4U;
|
||||
Op op;
|
||||
uint16_t wordCount;
|
||||
|
||||
Reference in New Issue
Block a user