diff --git a/renderdoc/driver/shaders/spirv/gen_spirv_code.py b/renderdoc/driver/shaders/spirv/gen_spirv_code.py
index c044652b0..15a1784be 100644
--- a/renderdoc/driver/shaders/spirv/gen_spirv_code.py
+++ b/renderdoc/driver/shaders/spirv/gen_spirv_code.py
@@ -882,6 +882,7 @@ for inst in spirv['instructions']:
stringise += ' STRINGISE_ENUM_CLASS({});\n'.format(inst['opname'][2:])
result = -1
+ resultCount = 0
resultType = -1
used_ids += ' case rdcspv::Op::{}:\n'.format(inst['opname'][2:])
@@ -895,6 +896,9 @@ for inst in spirv['instructions']:
for i,operand in enumerate(operands):
if operand['kind'] == 'IdResult':
result = i+1
+ resultCount += 1
+ elif 'name' in operand and operand['name'][0:6] == 'result':
+ resultCount += 1
if operand['kind'] == 'IdResultType':
resultType = i+1
@@ -906,7 +910,9 @@ for inst in spirv['instructions']:
disassemble += ' OpDecoder decoded(it);\n'.format(inst['opname'][2:])
- if resultType > 0 and result > 0:
+ if resultCount == 2:
+ raise ValueError("Unexpected multiple results without decoded opcode")
+ elif resultType > 0 and result > 0:
disassemble += ' ret += declName(decoded.resultType, decoded.result) + " = ";\n'
elif resultType > 0 and result == -1:
raise ValueError("Unexpected result type without result")
@@ -933,7 +939,9 @@ for inst in spirv['instructions']:
disassemble += ' Op{} decoded(it);\n'.format(inst['opname'][2:])
- if resultType > 0 and result > 0:
+ if resultCount == 2:
+ disassemble += ' ret += declName(decoded.resultType, decoded.result0) + ", " + idName(decoded.result1) + " = ";\n'
+ elif resultType > 0 and result > 0:
disassemble += ' ret += declName(decoded.resultType, decoded.result) + " = ";\n'
elif resultType > 0 and result == -1:
raise ValueError("Unexpected result type without result")
diff --git a/renderdoc/driver/shaders/spirv/spir-v.xml b/renderdoc/driver/shaders/spirv/spir-v.xml
index 2fac9c5ff..1298052d4 100644
--- a/renderdoc/driver/shaders/spirv/spir-v.xml
+++ b/renderdoc/driver/shaders/spirv/spir-v.xml
@@ -23,10 +23,11 @@
MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
-->
@@ -72,32 +73,45 @@
-
+
+
+
+
+
-
-
+
@@ -112,15 +126,41 @@
-
-
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -143,4 +183,22 @@
+
+
+
+
+
+
+
+
+
diff --git a/renderdoc/driver/shaders/spirv/spirv.core.grammar.json b/renderdoc/driver/shaders/spirv/spirv.core.grammar.json
index 45bac526d..6efa7aa40 100644
--- a/renderdoc/driver/shaders/spirv/spirv.core.grammar.json
+++ b/renderdoc/driver/shaders/spirv/spirv.core.grammar.json
@@ -1,6 +1,6 @@
{
"copyright" : [
- "Copyright (c) 2014-2016 The Khronos Group Inc.",
+ "Copyright (c) 2014-2020 The Khronos Group Inc.",
"",
"Permission is hereby granted, free of charge, to any person obtaining a copy",
"of this software and/or associated documentation files (the \"Materials\"),",
@@ -27,7 +27,7 @@
"magic_number" : "0x07230203",
"major_version" : 1,
"minor_version" : 5,
- "revision" : 1,
+ "revision" : 3,
"instruction_printing_class" : [
{
"tag" : "@exclude"
@@ -4101,6 +4101,16 @@
"capabilities" : [ "Addresses", "VariablePointers", "VariablePointersStorageBuffer" ],
"version" : "1.4"
},
+ {
+ "opname" : "OpTerminateInvocation",
+ "class" : "Control-Flow",
+ "opcode" : 4416,
+ "extensions" : [
+ "SPV_KHR_terminate_invocation"
+ ],
+ "capabilities" : [ "Shader" ],
+ "version" : "None"
+ },
{
"opname" : "OpSubgroupBallotKHR",
"class" : "Group",
@@ -4186,6 +4196,142 @@
"extensions" : [ "SPV_KHR_shader_ballot" ],
"version" : "None"
},
+ {
+ "opname" : "OpTypeRayQueryProvisionalKHR",
+ "class" : "Reserved",
+ "opcode" : 4472,
+ "operands" : [
+ { "kind" : "IdResult" }
+ ],
+ "capabilities" : [ "RayQueryProvisionalKHR" ],
+ "extensions" : [ "SPV_KHR_ray_query" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpRayQueryInitializeKHR",
+ "class" : "Reserved",
+ "opcode" : 4473,
+ "operands" : [
+ {
+ "kind" : "IdRef",
+ "name" : "'RayQuery'"
+ },
+ {
+ "kind" : "IdRef",
+ "name" : "'Accel'"
+ },
+ {
+ "kind" : "IdRef",
+ "name" : "'RayFlags'"
+ },
+ {
+ "kind" : "IdRef",
+ "name" : "'CullMask'"
+ },
+ {
+ "kind" : "IdRef",
+ "name" : "'RayOrigin'"
+ },
+ {
+ "kind" : "IdRef",
+ "name" : "'RayTMin'"
+ },
+ {
+ "kind" : "IdRef",
+ "name" : "'RayDirection'"
+ },
+ {
+ "kind" : "IdRef",
+ "name" : "'RayTMax'"
+ }
+
+ ],
+ "capabilities" : [ "RayQueryProvisionalKHR" ],
+ "extensions" : [ "SPV_KHR_ray_query" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpRayQueryTerminateKHR",
+ "class" : "Reserved",
+ "opcode" : 4474,
+ "operands" : [
+ {
+ "kind" : "IdRef",
+ "name" : "'RayQuery'"
+ }
+ ],
+ "capabilities" : [ "RayQueryProvisionalKHR" ],
+ "extensions" : [ "SPV_KHR_ray_query" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpRayQueryGenerateIntersectionKHR",
+ "class" : "Reserved",
+ "opcode" : 4475,
+ "operands" : [
+ {
+ "kind" : "IdRef",
+ "name" : "'RayQuery'"
+ },
+ {
+ "kind" : "IdRef",
+ "name" : "'HitT'"
+ }
+ ],
+ "capabilities" : [ "RayQueryProvisionalKHR" ],
+ "extensions" : [ "SPV_KHR_ray_query" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpRayQueryConfirmIntersectionKHR",
+ "class" : "Reserved",
+ "opcode" : 4476,
+ "operands" : [
+ {
+ "kind" : "IdRef",
+ "name" : "'RayQuery'"
+ }
+ ],
+ "capabilities" : [ "RayQueryProvisionalKHR" ],
+ "extensions" : [ "SPV_KHR_ray_query" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpRayQueryProceedKHR",
+ "class" : "Reserved",
+ "opcode" : 4477,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ {
+ "kind" : "IdRef",
+ "name" : "'RayQuery'"
+ }
+ ],
+ "capabilities" : [ "RayQueryProvisionalKHR" ],
+ "extensions" : [ "SPV_KHR_ray_query" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpRayQueryGetIntersectionTypeKHR",
+ "class" : "Reserved",
+ "opcode" : 4479,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ {
+ "kind" : "IdRef",
+ "name" : "'RayQuery'"
+ },
+ {
+ "kind" : "IdRef",
+ "name" : "'Intersection'"
+ }
+ ],
+ "capabilities" : [ "RayQueryProvisionalKHR" ],
+ "extensions" : [ "SPV_KHR_ray_query" ],
+ "version" : "None"
+ },
{
"opname" : "OpGroupIAddNonUniformAMD",
"class" : "Group",
@@ -4400,26 +4546,54 @@
{ "kind" : "IdRef", "name" : "'Hit'" },
{ "kind" : "IdRef", "name" : "'HitKind'" }
],
- "capabilities" : [ "RayTracingNV" ],
- "extensions" : [ "SPV_NV_ray_tracing" ],
+ "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+ "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpReportIntersectionKHR",
+ "class" : "Reserved",
+ "opcode" : 5334,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ { "kind" : "IdRef", "name" : "'Hit'" },
+ { "kind" : "IdRef", "name" : "'HitKind'" }
+ ],
+ "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+ "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
"version" : "None"
},
{
"opname" : "OpIgnoreIntersectionNV",
"class" : "Reserved",
"opcode" : 5335,
-
- "capabilities" : [ "RayTracingNV" ],
- "extensions" : [ "SPV_NV_ray_tracing" ],
+ "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+ "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpIgnoreIntersectionKHR",
+ "class" : "Reserved",
+ "opcode" : 5335,
+ "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+ "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
"version" : "None"
},
{
"opname" : "OpTerminateRayNV",
"class" : "Reserved",
"opcode" : 5336,
-
- "capabilities" : [ "RayTracingNV" ],
- "extensions" : [ "SPV_NV_ray_tracing" ],
+ "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+ "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpTerminateRayKHR",
+ "class" : "Reserved",
+ "opcode" : 5336,
+ "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+ "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
"version" : "None"
},
{
@@ -4440,8 +4614,30 @@
{ "kind" : "IdRef", "name" : "'Ray Tmax'" },
{ "kind" : "IdRef", "name" : "'PayloadId'" }
],
- "capabilities" : [ "RayTracingNV" ],
- "extensions" : [ "SPV_NV_ray_tracing" ],
+ "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+ "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpTraceRayKHR",
+ "class" : "Reserved",
+ "opcode" : 5337,
+ "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" : "'PayloadId'" }
+ ],
+ "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+ "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
"version" : "None"
},
{
@@ -4451,8 +4647,19 @@
"operands" : [
{ "kind" : "IdResult" }
],
- "capabilities" : [ "RayTracingNV" ],
- "extensions" : [ "SPV_NV_ray_tracing" ],
+ "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR", "RayQueryProvisionalKHR" ],
+ "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing", "SPV_KHR_ray_query" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpTypeAccelerationStructureKHR",
+ "class" : "Reserved",
+ "opcode" : 5341,
+ "operands" : [
+ { "kind" : "IdResult" }
+ ],
+ "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR", "RayQueryProvisionalKHR" ],
+ "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing", "SPV_KHR_ray_query" ],
"version" : "None"
},
{
@@ -4464,8 +4671,21 @@
{ "kind" : "IdRef", "name" : "'SBT Index'" },
{ "kind" : "IdRef", "name" : "'Callable DataId'" }
],
- "capabilities" : [ "RayTracingNV" ],
- "extensions" : [ "SPV_NV_ray_tracing" ],
+ "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+ "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpExecuteCallableKHR",
+ "class" : "Reserved",
+ "opcode" : 5344,
+ "operands" : [
+
+ { "kind" : "IdRef", "name" : "'SBT Index'" },
+ { "kind" : "IdRef", "name" : "'Callable DataId'" }
+ ],
+ "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+ "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
"version" : "None"
},
{
@@ -4889,6 +5109,32 @@
"capabilities" : [ "IntegerFunctions2INTEL" ],
"version" : "None"
},
+ {
+ "opname" : "OpFunctionPointerINTEL",
+ "class" : "@exclude",
+ "opcode" : 5600,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ { "kind" : "IdRef", "name" : "'Function'" }
+ ],
+ "capabilities" : [ "FunctionPointersINTEL" ],
+ "extensions" : [ "SPV_INTEL_function_pointers" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpFunctionPointerCallINTEL",
+ "class" : "@exclude",
+ "opcode" : 5601,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ { "kind" : "IdRef", "quantifier" : "*", "name" : "'Operand 1'" }
+ ],
+ "capabilities" : [ "FunctionPointersINTEL" ],
+ "extensions" : [ "SPV_INTEL_function_pointers" ],
+ "version" : "None"
+ },
{
"opname" : "OpDecorateString",
"class" : "Annotation",
@@ -6451,6 +6697,395 @@
],
"capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
"version" : "None"
+ },
+ {
+ "opname" : "OpLoopControlINTEL",
+ "class" : "Reserved",
+ "opcode" : 5887,
+ "operands" : [
+ { "kind" : "LiteralInteger", "quantifier" : "*", "name" : "'Loop Control Parameters'" }
+ ],
+ "capabilities" : [ "UnstructuredLoopControlsINTEL" ],
+ "extensions" : [ "SPV_INTEL_unstructured_loop_controls" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpReadPipeBlockingINTEL",
+ "class" : "Pipe",
+ "opcode" : 5946,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ { "kind" : "IdRef", "name" : "'Packet Size'" },
+ { "kind" : "IdRef", "name" : "'Packet Alignment'" }
+ ],
+ "capabilities" : [ "BlockingPipesINTEL" ],
+ "extensions" : [ "SPV_INTEL_blocking_pipes" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpWritePipeBlockingINTEL",
+ "class" : "Pipe",
+ "opcode" : 5947,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ { "kind" : "IdRef", "name" : "'Packet Size'" },
+ { "kind" : "IdRef", "name" : "'Packet Alignment'" }
+ ],
+ "capabilities" : [ "BlockingPipesINTEL" ],
+ "extensions" : [ "SPV_INTEL_blocking_pipes" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpFPGARegINTEL",
+ "class" : "Reserved",
+ "opcode" : 5949,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ { "kind" : "IdRef", "name" : "'Result'" },
+ { "kind" : "IdRef", "name" : "'Input'" }
+ ],
+ "capabilities" : [ "FPGARegINTEL" ],
+ "extensions" : [ "SPV_INTEL_fpga_reg" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpRayQueryGetRayTMinKHR",
+ "class" : "Reserved",
+ "opcode" : 6016,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ {
+ "kind" : "IdRef",
+ "name" : "'RayQuery'"
+ }
+ ],
+ "capabilities" : [ "RayQueryProvisionalKHR" ],
+ "extensions" : [ "SPV_KHR_ray_query" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpRayQueryGetRayFlagsKHR",
+ "class" : "Reserved",
+ "opcode" : 6017,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ {
+ "kind" : "IdRef",
+ "name" : "'RayQuery'"
+ }
+ ],
+ "capabilities" : [ "RayQueryProvisionalKHR" ],
+ "extensions" : [ "SPV_KHR_ray_query" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpRayQueryGetIntersectionTKHR",
+ "class" : "Reserved",
+ "opcode" : 6018,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ {
+ "kind" : "IdRef",
+ "name" : "'RayQuery'"
+ },
+ {
+ "kind" : "IdRef",
+ "name" : "'Intersection'"
+ }
+ ],
+ "capabilities" : [ "RayQueryProvisionalKHR" ],
+ "extensions" : [ "SPV_KHR_ray_query" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpRayQueryGetIntersectionInstanceCustomIndexKHR",
+ "class" : "Reserved",
+ "opcode" : 6019,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ {
+ "kind" : "IdRef",
+ "name" : "'RayQuery'"
+ },
+ {
+ "kind" : "IdRef",
+ "name" : "'Intersection'"
+ }
+ ],
+ "capabilities" : [ "RayQueryProvisionalKHR" ],
+ "extensions" : [ "SPV_KHR_ray_query" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpRayQueryGetIntersectionInstanceIdKHR",
+ "class" : "Reserved",
+ "opcode" : 6020,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ {
+ "kind" : "IdRef",
+ "name" : "'RayQuery'"
+ },
+ {
+ "kind" : "IdRef",
+ "name" : "'Intersection'"
+ }
+ ],
+ "capabilities" : [ "RayQueryProvisionalKHR" ],
+ "extensions" : [ "SPV_KHR_ray_query" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR",
+ "class" : "Reserved",
+ "opcode" : 6021,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ {
+ "kind" : "IdRef",
+ "name" : "'RayQuery'"
+ },
+ {
+ "kind" : "IdRef",
+ "name" : "'Intersection'"
+ }
+ ],
+ "capabilities" : [ "RayQueryProvisionalKHR" ],
+ "extensions" : [ "SPV_KHR_ray_query" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpRayQueryGetIntersectionGeometryIndexKHR",
+ "class" : "Reserved",
+ "opcode" : 6022,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ {
+ "kind" : "IdRef",
+ "name" : "'RayQuery'"
+ },
+ {
+ "kind" : "IdRef",
+ "name" : "'Intersection'"
+ }
+ ],
+ "capabilities" : [ "RayQueryProvisionalKHR" ],
+ "extensions" : [ "SPV_KHR_ray_query" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpRayQueryGetIntersectionPrimitiveIndexKHR",
+ "class" : "Reserved",
+ "opcode" : 6023,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ {
+ "kind" : "IdRef",
+ "name" : "'RayQuery'"
+ },
+ {
+ "kind" : "IdRef",
+ "name" : "'Intersection'"
+ }
+ ],
+ "capabilities" : [ "RayQueryProvisionalKHR" ],
+ "extensions" : [ "SPV_KHR_ray_query" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpRayQueryGetIntersectionBarycentricsKHR",
+ "class" : "Reserved",
+ "opcode" : 6024,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ {
+ "kind" : "IdRef",
+ "name" : "'RayQuery'"
+ },
+ {
+ "kind" : "IdRef",
+ "name" : "'Intersection'"
+ }
+ ],
+ "capabilities" : [ "RayQueryProvisionalKHR" ],
+ "extensions" : [ "SPV_KHR_ray_query" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpRayQueryGetIntersectionFrontFaceKHR",
+ "class" : "Reserved",
+ "opcode" : 6025,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ {
+ "kind" : "IdRef",
+ "name" : "'RayQuery'"
+ },
+ {
+ "kind" : "IdRef",
+ "name" : "'Intersection'"
+ }
+ ],
+ "capabilities" : [ "RayQueryProvisionalKHR" ],
+ "extensions" : [ "SPV_KHR_ray_query" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpRayQueryGetIntersectionCandidateAABBOpaqueKHR",
+ "class" : "Reserved",
+ "opcode" : 6026,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ {
+ "kind" : "IdRef",
+ "name" : "'RayQuery'"
+ }
+ ],
+ "capabilities" : [ "RayQueryProvisionalKHR" ],
+ "extensions" : [ "SPV_KHR_ray_query" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpRayQueryGetIntersectionObjectRayDirectionKHR",
+ "class" : "Reserved",
+ "opcode" : 6027,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ {
+ "kind" : "IdRef",
+ "name" : "'RayQuery'"
+ },
+ {
+ "kind" : "IdRef",
+ "name" : "'Intersection'"
+ }
+ ],
+ "capabilities" : [ "RayQueryProvisionalKHR" ],
+ "extensions" : [ "SPV_KHR_ray_query" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpRayQueryGetIntersectionObjectRayOriginKHR",
+ "class" : "Reserved",
+ "opcode" : 6028,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ {
+ "kind" : "IdRef",
+ "name" : "'RayQuery'"
+ },
+ {
+ "kind" : "IdRef",
+ "name" : "'Intersection'"
+ }
+ ],
+ "capabilities" : [ "RayQueryProvisionalKHR" ],
+ "extensions" : [ "SPV_KHR_ray_query" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpRayQueryGetWorldRayDirectionKHR",
+ "class" : "Reserved",
+ "opcode" : 6029,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ {
+ "kind" : "IdRef",
+ "name" : "'RayQuery'"
+ }
+ ],
+ "capabilities" : [ "RayQueryProvisionalKHR" ],
+ "extensions" : [ "SPV_KHR_ray_query" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpRayQueryGetWorldRayOriginKHR",
+ "class" : "Reserved",
+ "opcode" : 6030,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ {
+ "kind" : "IdRef",
+ "name" : "'RayQuery'"
+ }
+ ],
+ "capabilities" : [ "RayQueryProvisionalKHR" ],
+ "extensions" : [ "SPV_KHR_ray_query" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpRayQueryGetIntersectionObjectToWorldKHR",
+ "class" : "Reserved",
+ "opcode" : 6031,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ {
+ "kind" : "IdRef",
+ "name" : "'RayQuery'"
+ },
+ {
+ "kind" : "IdRef",
+ "name" : "'Intersection'"
+ }
+ ],
+ "capabilities" : [ "RayQueryProvisionalKHR" ],
+ "extensions" : [ "SPV_KHR_ray_query" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpRayQueryGetIntersectionWorldToObjectKHR",
+ "class" : "Reserved",
+ "opcode" : 6032,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ {
+ "kind" : "IdRef",
+ "name" : "'RayQuery'"
+ },
+ {
+ "kind" : "IdRef",
+ "name" : "'Intersection'"
+ }
+ ],
+ "capabilities" : [ "RayQueryProvisionalKHR" ],
+ "extensions" : [ "SPV_KHR_ray_query" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpAtomicFAddEXT",
+ "class" : "Atomic",
+ "opcode" : 6035,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ { "kind" : "IdRef", "name" : "'Pointer'" },
+ { "kind" : "IdScope", "name" : "'Memory'" },
+ { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
+ { "kind" : "IdRef", "name" : "'Value'" }
+ ],
+ "capabilities" : [ "AtomicFloat32AddEXT", "AtomicFloat64AddEXT" ],
+ "extensions" : [ "SPV_EXT_shader_atomic_float_add" ],
+ "version" : "None"
}
],
"operand_kinds" : [
@@ -6720,6 +7355,76 @@
{ "kind" : "LiteralInteger" }
],
"version" : "1.4"
+ },
+ {
+ "enumerant" : "InitiationIntervalINTEL",
+ "value" : "0x10000",
+ "parameters" : [
+ { "kind" : "LiteralInteger" }
+ ],
+ "capabilities" : [ "FPGALoopControlsINTEL" ],
+ "extensions" : [ "SPV_INTEL_fpga_loop_controls" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "MaxConcurrencyINTEL",
+ "value" : "0x20000",
+ "parameters" : [
+ { "kind" : "LiteralInteger" }
+ ],
+ "capabilities" : [ "FPGALoopControlsINTEL" ],
+ "extensions" : [ "SPV_INTEL_fpga_loop_controls" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "DependencyArrayINTEL",
+ "value" : "0x40000",
+ "parameters" : [
+ { "kind" : "LiteralInteger" }
+ ],
+ "capabilities" : [ "FPGALoopControlsINTEL" ],
+ "extensions" : [ "SPV_INTEL_fpga_loop_controls" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "PipelineEnableINTEL",
+ "value" : "0x80000",
+ "parameters" : [
+ { "kind" : "LiteralInteger" }
+ ],
+ "capabilities" : [ "FPGALoopControlsINTEL" ],
+ "extensions" : [ "SPV_INTEL_fpga_loop_controls" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "LoopCoalesceINTEL",
+ "value" : "0x100000",
+ "parameters" : [
+ { "kind" : "LiteralInteger" }
+ ],
+ "capabilities" : [ "FPGALoopControlsINTEL" ],
+ "extensions" : [ "SPV_INTEL_fpga_loop_controls" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "MaxInterleavingINTEL",
+ "value" : "0x200000",
+ "parameters" : [
+ { "kind" : "LiteralInteger" }
+ ],
+ "capabilities" : [ "FPGALoopControlsINTEL" ],
+ "extensions" : [ "SPV_INTEL_fpga_loop_controls" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "SpeculatedIterationsINTEL",
+ "value" : "0x400000",
+ "parameters" : [
+ { "kind" : "LiteralInteger" }
+ ],
+ "capabilities" : [ "FPGALoopControlsINTEL" ],
+ "extensions" : [ "SPV_INTEL_fpga_loop_controls" ],
+ "version" : "None"
}
]
},
@@ -6942,6 +7647,108 @@
}
]
},
+ {
+ "category" : "BitEnum",
+ "kind" : "RayFlags",
+ "enumerants" : [
+ {
+ "enumerant" : "NoneKHR",
+ "value" : "0x0000",
+ "capabilities" : [ "RayQueryProvisionalKHR","RayTracingProvisionalKHR" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "OpaqueKHR",
+ "value" : "0x0001",
+ "capabilities" : [ "RayQueryProvisionalKHR","RayTracingProvisionalKHR" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "NoOpaqueKHR",
+ "value" : "0x0002",
+ "capabilities" : [ "RayQueryProvisionalKHR","RayTracingProvisionalKHR" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "TerminateOnFirstHitKHR",
+ "value" : "0x0004",
+ "capabilities" : [ "RayQueryProvisionalKHR","RayTracingProvisionalKHR" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "SkipClosestHitShaderKHR",
+ "value" : "0x0008",
+ "capabilities" : [ "RayQueryProvisionalKHR","RayTracingProvisionalKHR" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "CullBackFacingTrianglesKHR",
+ "value" : "0x0010",
+ "capabilities" : [ "RayQueryProvisionalKHR","RayTracingProvisionalKHR" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "CullFrontFacingTrianglesKHR",
+ "value" : "0x0020",
+ "capabilities" : [ "RayQueryProvisionalKHR","RayTracingProvisionalKHR" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "CullOpaqueKHR",
+ "value" : "0x0040",
+ "capabilities" : [ "RayQueryProvisionalKHR","RayTracingProvisionalKHR" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "CullNoOpaqueKHR",
+ "value" : "0x0080",
+ "capabilities" : [ "RayQueryProvisionalKHR","RayTracingProvisionalKHR" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "SkipTrianglesKHR",
+ "value" : "0x0100",
+ "capabilities" : [ "RayTraversalPrimitiveCullingProvisionalKHR" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "SkipAABBsKHR",
+ "value" : "0x0200",
+ "capabilities" : [ "RayTraversalPrimitiveCullingProvisionalKHR" ],
+ "version" : "None"
+ }
+ ]
+ },
+ {
+ "category" : "BitEnum",
+ "kind" : "FragmentShadingRate",
+ "enumerants" : [
+ {
+ "enumerant" : "Vertical2Pixels",
+ "value" : "0x0001",
+ "capabilities" : [ "FragmentShadingRateKHR" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "Vertical4Pixels",
+ "value" : "0x0002",
+ "capabilities" : [ "FragmentShadingRateKHR" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "Horizontal2Pixels",
+ "value" : "0x0004",
+ "capabilities" : [ "FragmentShadingRateKHR" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "Horizontal4Pixels",
+ "value" : "0x0008",
+ "capabilities" : [ "FragmentShadingRateKHR" ],
+ "version" : "None"
+ }
+ ]
+ },
{
"category" : "ValueEnum",
"kind" : "SourceLanguage",
@@ -7026,37 +7833,73 @@
{
"enumerant" : "RayGenerationNV",
"value" : 5313,
- "capabilities" : [ "RayTracingNV" ],
+ "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "RayGenerationKHR",
+ "value" : 5313,
+ "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
"version" : "None"
},
{
"enumerant" : "IntersectionNV",
"value" : 5314,
- "capabilities" : [ "RayTracingNV" ],
+ "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "IntersectionKHR",
+ "value" : 5314,
+ "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
"version" : "None"
},
{
"enumerant" : "AnyHitNV",
"value" : 5315,
- "capabilities" : [ "RayTracingNV" ],
+ "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "AnyHitKHR",
+ "value" : 5315,
+ "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
"version" : "None"
},
{
"enumerant" : "ClosestHitNV",
"value" : 5316,
- "capabilities" : [ "RayTracingNV" ],
+ "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "ClosestHitKHR",
+ "value" : 5316,
+ "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
"version" : "None"
},
{
"enumerant" : "MissNV",
"value" : 5317,
- "capabilities" : [ "RayTracingNV" ],
+ "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "MissKHR",
+ "value" : 5317,
+ "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
"version" : "None"
},
{
"enumerant" : "CallableNV",
"value" : 5318,
- "capabilities" : [ "RayTracingNV" ],
+ "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "CallableKHR",
+ "value" : 5318,
+ "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
"version" : "None"
}
]
@@ -7507,6 +8350,45 @@
"capabilities" : [ "FragmentShaderShadingRateInterlockEXT" ],
"extensions" : [ "SPV_EXT_fragment_shader_interlock" ],
"version" : "None"
+ },
+ {
+ "enumerant" : "MaxWorkgroupSizeINTEL",
+ "value" : 5893,
+ "parameters" : [
+ { "kind" : "LiteralInteger", "name" : "'max_x_size'" },
+ { "kind" : "LiteralInteger", "name" : "'max_y_size'" },
+ { "kind" : "LiteralInteger", "name" : "'max_z_size'" }
+ ],
+ "capabilities" : [ "KernelAttributesINTEL" ],
+ "extensions" : [ "SPV_INTEL_kernel_attributes" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "MaxWorkDimINTEL",
+ "value" : 5894,
+ "parameters" : [
+ { "kind" : "LiteralInteger", "name" : "'max_dimensions'" }
+ ],
+ "capabilities" : [ "KernelAttributesINTEL" ],
+ "extensions" : [ "SPV_INTEL_kernel_attributes" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "NoGlobalOffsetINTEL",
+ "value" : 5895,
+ "capabilities" : [ "KernelAttributesINTEL" ],
+ "extensions" : [ "SPV_INTEL_kernel_attributes" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "NumSIMDWorkitemsINTEL",
+ "value" : 5896,
+ "parameters" : [
+ { "kind" : "LiteralInteger", "name" : "'vector_width'" }
+ ],
+ "capabilities" : [ "FPGAKernelAttributesINTEL" ],
+ "extensions" : [ "SPV_INTEL_kernel_attributes" ],
+ "version" : "None"
}
]
},
@@ -7581,43 +8463,85 @@
{
"enumerant" : "CallableDataNV",
"value" : 5328,
- "extensions" : [ "SPV_NV_ray_tracing" ],
- "capabilities" : [ "RayTracingNV" ],
+ "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+ "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "CallableDataKHR",
+ "value" : 5328,
+ "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+ "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
"version" : "None"
},
{
"enumerant" : "IncomingCallableDataNV",
"value" : 5329,
- "extensions" : [ "SPV_NV_ray_tracing" ],
- "capabilities" : [ "RayTracingNV" ],
+ "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+ "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "IncomingCallableDataKHR",
+ "value" : 5329,
+ "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+ "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
"version" : "None"
},
{
"enumerant" : "RayPayloadNV",
"value" : 5338,
- "extensions" : [ "SPV_NV_ray_tracing" ],
- "capabilities" : [ "RayTracingNV" ],
+ "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+ "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "RayPayloadKHR",
+ "value" : 5338,
+ "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+ "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
"version" : "None"
},
{
"enumerant" : "HitAttributeNV",
"value" : 5339,
- "extensions" : [ "SPV_NV_ray_tracing" ],
- "capabilities" : [ "RayTracingNV" ],
+ "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+ "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "HitAttributeKHR",
+ "value" : 5339,
+ "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+ "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
"version" : "None"
},
{
"enumerant" : "IncomingRayPayloadNV",
"value" : 5342,
- "extensions" : [ "SPV_NV_ray_tracing" ],
- "capabilities" : [ "RayTracingNV" ],
+ "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+ "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "IncomingRayPayloadKHR",
+ "value" : 5342,
+ "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+ "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
"version" : "None"
},
{
"enumerant" : "ShaderRecordBufferNV",
"value" : 5343,
- "extensions" : [ "SPV_NV_ray_tracing" ],
- "capabilities" : [ "RayTracingNV" ],
+ "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+ "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "ShaderRecordBufferKHR",
+ "value" : 5343,
+ "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+ "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
"version" : "None"
},
{
@@ -7633,6 +8557,13 @@
"extensions" : [ "SPV_EXT_physical_storage_buffer" ],
"capabilities" : [ "PhysicalStorageBufferAddresses" ],
"version" : "1.5"
+ },
+ {
+ "enumerant" : "CodeSectionINTEL",
+ "value" : 5605,
+ "extensions" : [ "SPV_INTEL_function_pointers" ],
+ "capabilities" : [ "FunctionPointersINTEL" ],
+ "version" : "None"
}
]
},
@@ -7925,6 +8856,16 @@
"enumerant" : "R8ui",
"value" : 39,
"capabilities" : [ "StorageImageExtendedFormats" ]
+ },
+ {
+ "enumerant" : "R64ui",
+ "value" : 40,
+ "capabilities" : [ "Int64ImageEXT" ]
+ },
+ {
+ "enumerant" : "R64i",
+ "value" : 41,
+ "capabilities" : [ "Int64ImageEXT" ]
}
]
},
@@ -8653,6 +9594,13 @@
"extensions" : [ "SPV_EXT_physical_storage_buffer" ],
"version" : "1.5"
},
+ {
+ "enumerant" : "ReferencedIndirectlyINTEL",
+ "value" : 5602,
+ "capabilities" : [ "IndirectReferencesINTEL" ],
+ "extensions" : [ "SPV_INTEL_function_pointers" ],
+ "version" : "None"
+ },
{
"enumerant" : "CounterBuffer",
"value" : 5634,
@@ -8695,6 +9643,115 @@
],
"extensions" : [ "SPV_GOOGLE_user_type" ],
"version" : "None"
+ },
+ {
+ "enumerant" : "RegisterINTEL",
+ "value" : 5825,
+ "capabilities" : [ "FPGAMemoryAttributesINTEL" ],
+ "extensions" : [ "SPV_INTEL_fpga_memory_attributes" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "MemoryINTEL",
+ "value" : 5826,
+ "parameters" : [
+ { "kind" : "LiteralString", "name" : "'Memory Type'" }
+ ],
+ "capabilities" : [ "FPGAMemoryAttributesINTEL" ],
+ "extensions" : [ "SPV_INTEL_fpga_memory_attributes" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "NumbanksINTEL",
+ "value" : 5827,
+ "parameters" : [
+ { "kind" : "LiteralInteger", "name" : "'Banks'" }
+ ],
+ "capabilities" : [ "FPGAMemoryAttributesINTEL" ],
+ "extensions" : [ "SPV_INTEL_fpga_memory_attributes" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "BankwidthINTEL",
+ "value" : 5828,
+ "parameters" : [
+ { "kind" : "LiteralInteger", "name" : "'Bank Width'" }
+ ],
+ "capabilities" : [ "FPGAMemoryAttributesINTEL" ],
+ "extensions" : [ "SPV_INTEL_fpga_memory_attributes" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "MaxPrivateCopiesINTEL",
+ "value" : 5829,
+ "parameters" : [
+ { "kind" : "LiteralInteger", "name" : "'Maximum Copies'" }
+ ],
+ "capabilities" : [ "FPGAMemoryAttributesINTEL" ],
+ "extensions" : [ "SPV_INTEL_fpga_memory_attributes" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "SinglepumpINTEL",
+ "value" : 5830,
+ "capabilities" : [ "FPGAMemoryAttributesINTEL" ],
+ "extensions" : [ "SPV_INTEL_fpga_memory_attributes" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "DoublepumpINTEL",
+ "value" : 5831,
+ "capabilities" : [ "FPGAMemoryAttributesINTEL" ],
+ "extensions" : [ "SPV_INTEL_fpga_memory_attributes" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "MaxReplicatesINTEL",
+ "value" : 5832,
+ "parameters" : [
+ { "kind" : "LiteralInteger", "name" : "'Maximum Replicates'" }
+ ],
+ "capabilities" : [ "FPGAMemoryAttributesINTEL" ],
+ "extensions" : [ "SPV_INTEL_fpga_memory_attributes" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "SimpleDualPortINTEL",
+ "value" : 5833,
+ "capabilities" : [ "FPGAMemoryAttributesINTEL" ],
+ "extensions" : [ "SPV_INTEL_fpga_memory_attributes" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "MergeINTEL",
+ "value" : 5834,
+ "parameters" : [
+ { "kind" : "LiteralString", "name" : "'Merge Key'" },
+ { "kind" : "LiteralString", "name" : "'Merge Type'" }
+ ],
+ "capabilities" : [ "FPGAMemoryAttributesINTEL" ],
+ "extensions" : [ "SPV_INTEL_fpga_memory_attributes" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "BankBitsINTEL",
+ "value" : 5835,
+ "parameters" : [
+ { "kind" : "LiteralInteger", "quantifier" : "*", "name" : "'Bank Bits'" }
+ ],
+ "capabilities" : [ "FPGAMemoryAttributesINTEL" ],
+ "extensions" : [ "SPV_INTEL_fpga_memory_attributes" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "ForcePow2DepthINTEL",
+ "value" : 5836,
+ "parameters" : [
+ { "kind" : "LiteralInteger", "name" : "'Force Key'" }
+ ],
+ "capabilities" : [ "FPGAMemoryAttributesINTEL" ],
+ "extensions" : [ "SPV_INTEL_fpga_memory_attributes" ],
+ "version" : "None"
}
]
},
@@ -8735,7 +9792,7 @@
{
"enumerant" : "PrimitiveId",
"value" : 7,
- "capabilities" : [ "Geometry", "Tessellation", "RayTracingNV" ]
+ "capabilities" : [ "Geometry", "Tessellation", "RayTracingNV", "RayTracingProvisionalKHR" ]
},
{
"enumerant" : "InvocationId",
@@ -8987,6 +10044,13 @@
"extensions" : [ "SPV_KHR_shader_draw_parameters", "SPV_NV_mesh_shader" ],
"version" : "1.3"
},
+ {
+ "enumerant" : "PrimitiveShadingRateKHR",
+ "value" : 4432,
+ "capabilities" : [ "FragmentShadingRateKHR" ],
+ "extensions" : [ "SPV_KHR_fragment_shading_rate" ],
+ "version" : "None"
+ },
{
"enumerant" : "DeviceIndex",
"value" : 4438,
@@ -9001,6 +10065,13 @@
"extensions" : [ "SPV_KHR_multiview" ],
"version" : "1.3"
},
+ {
+ "enumerant" : "ShadingRateKHR",
+ "value" : 4444,
+ "capabilities" : [ "FragmentShadingRateKHR" ],
+ "extensions" : [ "SPV_KHR_fragment_shading_rate" ],
+ "version" : "None"
+ },
{
"enumerant" : "BaryCoordNoPerspAMD",
"value" : 4992,
@@ -9193,99 +10264,204 @@
{
"enumerant" : "LaunchIdNV",
"value" : 5319,
- "capabilities" : [ "RayTracingNV" ],
- "extensions" : [ "SPV_NV_ray_tracing" ],
+ "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+ "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "LaunchIdKHR",
+ "value" : 5319,
+ "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+ "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
"version" : "None"
},
{
"enumerant" : "LaunchSizeNV",
"value" : 5320,
- "capabilities" : [ "RayTracingNV" ],
- "extensions" : [ "SPV_NV_ray_tracing" ],
+ "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+ "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "LaunchSizeKHR",
+ "value" : 5320,
+ "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+ "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
"version" : "None"
},
{
"enumerant" : "WorldRayOriginNV",
"value" : 5321,
- "capabilities" : [ "RayTracingNV" ],
- "extensions" : [ "SPV_NV_ray_tracing" ],
+ "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+ "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "WorldRayOriginKHR",
+ "value" : 5321,
+ "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+ "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
"version" : "None"
},
{
"enumerant" : "WorldRayDirectionNV",
"value" : 5322,
- "capabilities" : [ "RayTracingNV" ],
- "extensions" : [ "SPV_NV_ray_tracing" ],
+ "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+ "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "WorldRayDirectionKHR",
+ "value" : 5322,
+ "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+ "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
"version" : "None"
},
{
"enumerant" : "ObjectRayOriginNV",
"value" : 5323,
- "capabilities" : [ "RayTracingNV" ],
- "extensions" : [ "SPV_NV_ray_tracing" ],
+ "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+ "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "ObjectRayOriginKHR",
+ "value" : 5323,
+ "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+ "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
"version" : "None"
},
{
"enumerant" : "ObjectRayDirectionNV",
"value" : 5324,
- "capabilities" : [ "RayTracingNV" ],
- "extensions" : [ "SPV_NV_ray_tracing" ],
+ "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+ "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "ObjectRayDirectionKHR",
+ "value" : 5324,
+ "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+ "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
"version" : "None"
},
{
"enumerant" : "RayTminNV",
"value" : 5325,
- "capabilities" : [ "RayTracingNV" ],
- "extensions" : [ "SPV_NV_ray_tracing" ],
+ "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+ "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "RayTminKHR",
+ "value" : 5325,
+ "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+ "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
"version" : "None"
},
{
"enumerant" : "RayTmaxNV",
"value" : 5326,
- "capabilities" : [ "RayTracingNV" ],
- "extensions" : [ "SPV_NV_ray_tracing" ],
+ "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+ "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "RayTmaxKHR",
+ "value" : 5326,
+ "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+ "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
"version" : "None"
},
{
"enumerant" : "InstanceCustomIndexNV",
"value" : 5327,
- "capabilities" : [ "RayTracingNV" ],
- "extensions" : [ "SPV_NV_ray_tracing" ],
+ "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+ "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "InstanceCustomIndexKHR",
+ "value" : 5327,
+ "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+ "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
"version" : "None"
},
{
"enumerant" : "ObjectToWorldNV",
"value" : 5330,
- "capabilities" : [ "RayTracingNV" ],
- "extensions" : [ "SPV_NV_ray_tracing" ],
+ "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+ "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "ObjectToWorldKHR",
+ "value" : 5330,
+ "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+ "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
"version" : "None"
},
{
"enumerant" : "WorldToObjectNV",
"value" : 5331,
- "capabilities" : [ "RayTracingNV" ],
- "extensions" : [ "SPV_NV_ray_tracing" ],
+ "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+ "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "WorldToObjectKHR",
+ "value" : 5331,
+ "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+ "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
"version" : "None"
},
{
"enumerant" : "HitTNV",
"value" : 5332,
- "capabilities" : [ "RayTracingNV" ],
- "extensions" : [ "SPV_NV_ray_tracing" ],
+ "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+ "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "HitTKHR",
+ "value" : 5332,
+ "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+ "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
"version" : "None"
},
{
"enumerant" : "HitKindNV",
"value" : 5333,
- "capabilities" : [ "RayTracingNV" ],
- "extensions" : [ "SPV_NV_ray_tracing" ],
+ "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+ "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "HitKindKHR",
+ "value" : 5333,
+ "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+ "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
"version" : "None"
},
{
"enumerant" : "IncomingRayFlagsNV",
"value" : 5351,
- "capabilities" : [ "RayTracingNV" ],
- "extensions" : [ "SPV_NV_ray_tracing" ],
+ "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+ "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "IncomingRayFlagsKHR",
+ "value" : 5351,
+ "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+ "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "RayGeometryIndexKHR",
+ "value" : 5352,
+ "capabilities" : [ "RayTracingProvisionalKHR" ],
+ "extensions" : [ "SPV_KHR_ray_tracing" ],
"version" : "None"
},
{
@@ -9353,6 +10529,12 @@
"value" : 5,
"capabilities" : [ "VulkanMemoryModel" ],
"version" : "1.5"
+ },
+ {
+ "enumerant" : "ShaderCallKHR",
+ "value" : 6,
+ "capabilities" : [ "RayTracingProvisionalKHR" ],
+ "version" : "None"
}
]
},
@@ -9773,6 +10955,13 @@
"value" : 70,
"version" : "1.5"
},
+ {
+ "enumerant" : "FragmentShadingRateKHR",
+ "value" : 4422,
+ "capabilities" : [ "Shader" ],
+ "extensions" : [ "SPV_KHR_fragment_shading_rate" ],
+ "version" : "None"
+ },
{
"enumerant" : "SubgroupBallotKHR",
"value" : 4423,
@@ -9924,6 +11113,20 @@
"extensions" : [ "SPV_KHR_float_controls" ],
"version" : "1.4"
},
+ {
+ "enumerant" : "RayQueryProvisionalKHR",
+ "value" : 4471,
+ "capabilities" : [ "Shader" ],
+ "extensions" : [ "SPV_KHR_ray_query" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "RayTraversalPrimitiveCullingProvisionalKHR",
+ "value" : 4478,
+ "capabilities" : [ "RayQueryProvisionalKHR","RayTracingProvisionalKHR" ],
+ "extensions" : [ "SPV_KHR_ray_query","SPV_KHR_ray_tracing" ],
+ "version" : "None"
+ },
{
"enumerant" : "Float16ImageAMD",
"value" : 5008,
@@ -9959,6 +11162,13 @@
"extensions" : [ "SPV_AMD_shader_image_load_store_lod" ],
"version" : "None"
},
+ {
+ "enumerant" : "Int64ImageEXT",
+ "value" : 5016,
+ "capabilities" : [ "Shader" ],
+ "extensions" : [ "SPV_EXT_shader_image_int64" ],
+ "version" : "None"
+ },
{
"enumerant" : "ShaderClockKHR",
"value" : 5055,
@@ -10272,6 +11482,13 @@
"extensions" : [ "SPV_NV_compute_shader_derivatives" ],
"version" : "None"
},
+ {
+ "enumerant" : "RayTracingProvisionalKHR",
+ "value" : 5353,
+ "capabilities" : [ "Shader" ],
+ "extensions" : [ "SPV_KHR_ray_tracing" ],
+ "version" : "None"
+ },
{
"enumerant" : "CooperativeMatrixNV",
"value" : 5357,
@@ -10345,6 +11562,18 @@
"extensions" : [ "SPV_INTEL_shader_integer_functions2" ],
"version" : "None"
},
+ {
+ "enumerant" : "FunctionPointersINTEL",
+ "value" : 5603,
+ "extensions" : [ "SPV_INTEL_function_pointers" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "IndirectReferencesINTEL",
+ "value" : 5604,
+ "extensions" : [ "SPV_INTEL_function_pointers" ],
+ "version" : "None"
+ },
{
"enumerant" : "SubgroupAvcMotionEstimationINTEL",
"value" : 5696,
@@ -10362,6 +11591,122 @@
"value" : 5698,
"extensions" : [ "SPV_INTEL_device_side_avc_motion_estimation" ],
"version" : "None"
+ },
+ {
+ "enumerant" : "FPGAMemoryAttributesINTEL",
+ "value" : 5824,
+ "extensions" : [ "SPV_INTEL_fpga_memory_attributes" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "UnstructuredLoopControlsINTEL",
+ "value" : 5886,
+ "extensions" : [ "SPV_INTEL_unstructured_loop_controls" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "FPGALoopControlsINTEL",
+ "value" : 5888,
+ "extensions" : [ "SPV_INTEL_fpga_loop_controls" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "KernelAttributesINTEL",
+ "value" : 5892,
+ "extensions" : [ "SPV_INTEL_kernel_attributes" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "FPGAKernelAttributesINTEL",
+ "value" : 5897,
+ "extensions" : [ "SPV_INTEL_kernel_attributes" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "BlockingPipesINTEL",
+ "value" : 5945,
+ "extensions" : [ "SPV_INTEL_blocking_pipes" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "FPGARegINTEL",
+ "value" : 5948,
+ "extensions" : [ "SPV_INTEL_fpga_reg" ],
+ "version" : "None"
+ },
+ {
+ "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"
+ }
+ ]
+ },
+ {
+ "category" : "ValueEnum",
+ "kind" : "RayQueryIntersection",
+ "enumerants" : [
+ {
+ "enumerant" : "RayQueryCandidateIntersectionKHR",
+ "value" : 0,
+ "capabilities" : [ "RayQueryProvisionalKHR" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "RayQueryCommittedIntersectionKHR",
+ "value" : 1,
+ "capabilities" : [ "RayQueryProvisionalKHR" ],
+ "version" : "None"
+ }
+ ]
+ },
+ {
+ "category" : "ValueEnum",
+ "kind" : "RayQueryCommittedIntersectionType",
+ "enumerants" : [
+ {
+ "enumerant" : "RayQueryCommittedIntersectionNoneKHR",
+ "value" : 0,
+ "capabilities" : [ "RayQueryProvisionalKHR" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "RayQueryCommittedIntersectionTriangleKHR",
+ "value" : 1,
+ "capabilities" : [ "RayQueryProvisionalKHR" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "RayQueryCommittedIntersectionGeneratedKHR",
+ "value" : 2,
+ "capabilities" : [ "RayQueryProvisionalKHR" ],
+ "version" : "None"
+ }
+ ]
+ },
+ {
+ "category" : "ValueEnum",
+ "kind" : "RayQueryCandidateIntersectionType",
+ "enumerants" : [
+ {
+ "enumerant" : "RayQueryCandidateIntersectionTriangleKHR",
+ "value" : 0,
+ "capabilities" : [ "RayQueryProvisionalKHR" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "RayQueryCandidateIntersectionAABBKHR",
+ "value" : 1,
+ "capabilities" : [ "RayQueryProvisionalKHR" ],
+ "version" : "None"
}
]
},
diff --git a/renderdoc/driver/shaders/spirv/spirv_debug.cpp b/renderdoc/driver/shaders/spirv/spirv_debug.cpp
index f440c54f8..28e3a8a17 100644
--- a/renderdoc/driver/shaders/spirv/spirv_debug.cpp
+++ b/renderdoc/driver/shaders/spirv/spirv_debug.cpp
@@ -2596,6 +2596,7 @@ void ThreadState::StepNext(ShaderDebugState *state, const rdcarray
break;
}
+ case Op::TerminateInvocation:
case Op::Kill:
{
killed = true;
@@ -3082,6 +3083,7 @@ void ThreadState::StepNext(ShaderDebugState *state, const rdcarray
break;
}
+ case Op::AtomicFAddEXT:
case Op::GroupIAddNonUniformAMD:
case Op::GroupFAddNonUniformAMD:
case Op::GroupFMinNonUniformAMD:
@@ -3250,6 +3252,33 @@ void ThreadState::StepNext(ShaderDebugState *state, const rdcarray
case Op::SubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL:
case Op::SubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL:
case Op::SubgroupAvcSicGetInterRawSadsINTEL:
+ case Op::FunctionPointerINTEL:
+ case Op::FunctionPointerCallINTEL:
+ case Op::LoopControlINTEL:
+ case Op::RayQueryGetRayTMinKHR:
+ case Op::RayQueryGetRayFlagsKHR:
+ case Op::RayQueryGetIntersectionTKHR:
+ case Op::RayQueryGetIntersectionInstanceCustomIndexKHR:
+ case Op::RayQueryGetIntersectionInstanceIdKHR:
+ case Op::RayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR:
+ case Op::RayQueryGetIntersectionGeometryIndexKHR:
+ case Op::RayQueryGetIntersectionPrimitiveIndexKHR:
+ case Op::RayQueryGetIntersectionBarycentricsKHR:
+ case Op::RayQueryGetIntersectionFrontFaceKHR:
+ case Op::RayQueryGetIntersectionCandidateAABBOpaqueKHR:
+ case Op::RayQueryGetIntersectionObjectRayDirectionKHR:
+ case Op::RayQueryGetIntersectionObjectRayOriginKHR:
+ case Op::RayQueryGetWorldRayDirectionKHR:
+ case Op::RayQueryGetWorldRayOriginKHR:
+ case Op::RayQueryGetIntersectionObjectToWorldKHR:
+ case Op::RayQueryGetIntersectionWorldToObjectKHR:
+ case Op::TypeRayQueryProvisionalKHR:
+ case Op::RayQueryInitializeKHR:
+ case Op::RayQueryTerminateKHR:
+ case Op::RayQueryGenerateIntersectionKHR:
+ case Op::RayQueryConfirmIntersectionKHR:
+ case Op::RayQueryProceedKHR:
+ case Op::RayQueryGetIntersectionTypeKHR:
{
RDCERR("Unsupported extension opcode used %s", ToStr(opdata.op).c_str());
@@ -3381,6 +3410,9 @@ void ThreadState::StepNext(ShaderDebugState *state, const rdcarray
case Op::TypePipeStorage:
case Op::ConstantPipeStorage:
case Op::CreatePipeFromPipeStorage:
+ case Op::FPGARegINTEL:
+ case Op::ReadPipeBlockingINTEL:
+ case Op::WritePipeBlockingINTEL:
{
// these are kernel only
RDCERR("Encountered unexpected kernel SPIR-V operation %s", ToStr(opdata.op).c_str());
diff --git a/renderdoc/driver/shaders/spirv/spirv_debug_setup.cpp b/renderdoc/driver/shaders/spirv/spirv_debug_setup.cpp
index ed1998925..0b279e035 100644
--- a/renderdoc/driver/shaders/spirv/spirv_debug_setup.cpp
+++ b/renderdoc/driver/shaders/spirv/spirv_debug_setup.cpp
@@ -207,7 +207,8 @@ void Reflector::CheckDebuggable(bool &debuggable, rdcstr &debugStatus) const
ext == "SPV_EXT_descriptor_indexing" || ext == "SPV_KHR_vulkan_memory_model" ||
ext == "SPV_EXT_fragment_invocation_density" ||
ext == "SPV_KHR_no_integer_wrap_decoration" || ext == "SPV_KHR_float_controls" ||
- ext == "SPV_KHR_shader_clock" || ext == "SPV_KHR_non_semantic_info")
+ ext == "SPV_KHR_shader_clock" || ext == "SPV_KHR_non_semantic_info" ||
+ ext == "SPV_KHR_terminate_invocation")
{
continue;
}
@@ -309,6 +310,9 @@ void Reflector::CheckDebuggable(bool &debuggable, rdcstr &debugStatus) const
// atomics
case Capability::Int64Atomics:
+ case Capability::Int64ImageEXT:
+ case Capability::AtomicFloat32AddEXT:
+ case Capability::AtomicFloat64AddEXT:
// physical pointers
case Capability::PhysicalStorageBufferAddresses:
@@ -352,6 +356,22 @@ void Reflector::CheckDebuggable(bool &debuggable, rdcstr &debugStatus) const
break;
}
+ // fragment shading rate
+ case Capability::FragmentShadingRateKHR:
+ {
+ supported = false;
+ break;
+ }
+
+ // raytracing
+ case Capability::RayQueryProvisionalKHR:
+ case Capability::RayTraversalPrimitiveCullingProvisionalKHR:
+ case Capability::RayTracingProvisionalKHR:
+ {
+ supported = false;
+ break;
+ }
+
// no plans to support these - mostly Kernel/OpenCL related or vendor extensions
case Capability::Addresses:
case Capability::Linkage:
@@ -393,6 +413,15 @@ void Reflector::CheckDebuggable(bool &debuggable, rdcstr &debugStatus) const
case Capability::SubgroupAvcMotionEstimationINTEL:
case Capability::SubgroupAvcMotionEstimationIntraINTEL:
case Capability::SubgroupAvcMotionEstimationChromaINTEL:
+ case Capability::FunctionPointersINTEL:
+ case Capability::IndirectReferencesINTEL:
+ case Capability::FPGAKernelAttributesINTEL:
+ case Capability::FPGALoopControlsINTEL:
+ case Capability::FPGAMemoryAttributesINTEL:
+ case Capability::FPGARegINTEL:
+ case Capability::UnstructuredLoopControlsINTEL:
+ case Capability::KernelAttributesINTEL:
+ case Capability::BlockingPipesINTEL:
case Capability::Max:
case Capability::Invalid:
{
diff --git a/renderdoc/driver/shaders/spirv/spirv_gen.cpp b/renderdoc/driver/shaders/spirv/spirv_gen.cpp
index f955ba6dc..8d81ce0e5 100644
--- a/renderdoc/driver/shaders/spirv/spirv_gen.cpp
+++ b/renderdoc/driver/shaders/spirv/spirv_gen.cpp
@@ -25,7 +25,7 @@
/******************************************************************************
* Generated from Khronos SPIR-V machine-readable JSON grammar.
*
- * Copyright (c) 2014-2016 The Khronos Group Inc.
+ * Copyright (c) 2014-2020 The Khronos Group Inc.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and/or associated documentation files (the "Materials"),
@@ -132,6 +132,13 @@ rdcstr DoStringise(const rdcspv::LoopControl &el)
STRINGISE_BITFIELD_CLASS_BIT(IterationMultiple);
STRINGISE_BITFIELD_CLASS_BIT(PeelCount);
STRINGISE_BITFIELD_CLASS_BIT(PartialCount);
+ STRINGISE_BITFIELD_CLASS_BIT(InitiationIntervalINTEL);
+ STRINGISE_BITFIELD_CLASS_BIT(MaxConcurrencyINTEL);
+ STRINGISE_BITFIELD_CLASS_BIT(DependencyArrayINTEL);
+ STRINGISE_BITFIELD_CLASS_BIT(PipelineEnableINTEL);
+ STRINGISE_BITFIELD_CLASS_BIT(LoopCoalesceINTEL);
+ STRINGISE_BITFIELD_CLASS_BIT(MaxInterleavingINTEL);
+ STRINGISE_BITFIELD_CLASS_BIT(SpeculatedIterationsINTEL);
}
END_BITFIELD_STRINGISE();
}
@@ -204,6 +211,39 @@ rdcstr DoStringise(const rdcspv::KernelProfilingInfo &el)
END_BITFIELD_STRINGISE();
}
+template <>
+rdcstr DoStringise(const rdcspv::RayFlags &el)
+{
+ BEGIN_BITFIELD_STRINGISE(rdcspv::RayFlags);
+ {
+ STRINGISE_BITFIELD_CLASS_BIT(NoneKHR);
+ STRINGISE_BITFIELD_CLASS_BIT(OpaqueKHR);
+ STRINGISE_BITFIELD_CLASS_BIT(NoOpaqueKHR);
+ STRINGISE_BITFIELD_CLASS_BIT(TerminateOnFirstHitKHR);
+ STRINGISE_BITFIELD_CLASS_BIT(SkipClosestHitShaderKHR);
+ STRINGISE_BITFIELD_CLASS_BIT(CullBackFacingTrianglesKHR);
+ STRINGISE_BITFIELD_CLASS_BIT(CullFrontFacingTrianglesKHR);
+ STRINGISE_BITFIELD_CLASS_BIT(CullOpaqueKHR);
+ STRINGISE_BITFIELD_CLASS_BIT(CullNoOpaqueKHR);
+ STRINGISE_BITFIELD_CLASS_BIT(SkipTrianglesKHR);
+ STRINGISE_BITFIELD_CLASS_BIT(SkipAABBsKHR);
+ }
+ END_BITFIELD_STRINGISE();
+}
+
+template <>
+rdcstr DoStringise(const rdcspv::FragmentShadingRate &el)
+{
+ BEGIN_BITFIELD_STRINGISE(rdcspv::FragmentShadingRate);
+ {
+ STRINGISE_BITFIELD_CLASS_BIT(Vertical2Pixels);
+ STRINGISE_BITFIELD_CLASS_BIT(Vertical4Pixels);
+ STRINGISE_BITFIELD_CLASS_BIT(Horizontal2Pixels);
+ STRINGISE_BITFIELD_CLASS_BIT(Horizontal4Pixels);
+ }
+ END_BITFIELD_STRINGISE();
+}
+
template <>
rdcstr DoStringise(const rdcspv::SourceLanguage &el)
{
@@ -330,6 +370,10 @@ rdcstr DoStringise(const rdcspv::ExecutionMode &el)
STRINGISE_ENUM_CLASS(SampleInterlockUnorderedEXT);
STRINGISE_ENUM_CLASS(ShadingRateInterlockOrderedEXT);
STRINGISE_ENUM_CLASS(ShadingRateInterlockUnorderedEXT);
+ STRINGISE_ENUM_CLASS(MaxWorkgroupSizeINTEL);
+ STRINGISE_ENUM_CLASS(MaxWorkDimINTEL);
+ STRINGISE_ENUM_CLASS(NoGlobalOffsetINTEL);
+ STRINGISE_ENUM_CLASS(NumSIMDWorkitemsINTEL);
}
END_ENUM_STRINGISE();
}
@@ -359,6 +403,7 @@ rdcstr DoStringise(const rdcspv::StorageClass &el)
STRINGISE_ENUM_CLASS(IncomingRayPayloadNV);
STRINGISE_ENUM_CLASS(ShaderRecordBufferNV);
STRINGISE_ENUM_CLASS(PhysicalStorageBuffer);
+ STRINGISE_ENUM_CLASS(CodeSectionINTEL);
}
END_ENUM_STRINGISE();
}
@@ -449,6 +494,8 @@ rdcstr DoStringise(const rdcspv::ImageFormat &el)
STRINGISE_ENUM_CLASS(Rg8ui);
STRINGISE_ENUM_CLASS(R16ui);
STRINGISE_ENUM_CLASS(R8ui);
+ STRINGISE_ENUM_CLASS(R64ui);
+ STRINGISE_ENUM_CLASS(R64i);
}
END_ENUM_STRINGISE();
}
@@ -627,9 +674,22 @@ rdcstr DoStringise(const rdcspv::Decoration &el)
STRINGISE_ENUM_CLASS(NonUniform);
STRINGISE_ENUM_CLASS(RestrictPointer);
STRINGISE_ENUM_CLASS(AliasedPointer);
+ STRINGISE_ENUM_CLASS(ReferencedIndirectlyINTEL);
STRINGISE_ENUM_CLASS(CounterBuffer);
STRINGISE_ENUM_CLASS(UserSemantic);
STRINGISE_ENUM_CLASS(UserTypeGOOGLE);
+ STRINGISE_ENUM_CLASS(RegisterINTEL);
+ STRINGISE_ENUM_CLASS(MemoryINTEL);
+ STRINGISE_ENUM_CLASS(NumbanksINTEL);
+ STRINGISE_ENUM_CLASS(BankwidthINTEL);
+ STRINGISE_ENUM_CLASS(MaxPrivateCopiesINTEL);
+ STRINGISE_ENUM_CLASS(SinglepumpINTEL);
+ STRINGISE_ENUM_CLASS(DoublepumpINTEL);
+ STRINGISE_ENUM_CLASS(MaxReplicatesINTEL);
+ STRINGISE_ENUM_CLASS(SimpleDualPortINTEL);
+ STRINGISE_ENUM_CLASS(MergeINTEL);
+ STRINGISE_ENUM_CLASS(BankBitsINTEL);
+ STRINGISE_ENUM_CLASS(ForcePow2DepthINTEL);
}
END_ENUM_STRINGISE();
}
@@ -688,8 +748,10 @@ rdcstr DoStringise(const rdcspv::BuiltIn &el)
STRINGISE_ENUM_CLASS(BaseVertex);
STRINGISE_ENUM_CLASS(BaseInstance);
STRINGISE_ENUM_CLASS(DrawIndex);
+ STRINGISE_ENUM_CLASS(PrimitiveShadingRateKHR);
STRINGISE_ENUM_CLASS(DeviceIndex);
STRINGISE_ENUM_CLASS(ViewIndex);
+ STRINGISE_ENUM_CLASS(ShadingRateKHR);
STRINGISE_ENUM_CLASS(BaryCoordNoPerspAMD);
STRINGISE_ENUM_CLASS(BaryCoordNoPerspCentroidAMD);
STRINGISE_ENUM_CLASS(BaryCoordNoPerspSampleAMD);
@@ -730,6 +792,7 @@ rdcstr DoStringise(const rdcspv::BuiltIn &el)
STRINGISE_ENUM_CLASS(HitTNV);
STRINGISE_ENUM_CLASS(HitKindNV);
STRINGISE_ENUM_CLASS(IncomingRayFlagsNV);
+ STRINGISE_ENUM_CLASS(RayGeometryIndexKHR);
STRINGISE_ENUM_CLASS(WarpsPerSMNV);
STRINGISE_ENUM_CLASS(SMCountNV);
STRINGISE_ENUM_CLASS(WarpIDNV);
@@ -749,6 +812,7 @@ rdcstr DoStringise(const rdcspv::Scope &el)
STRINGISE_ENUM_CLASS(Subgroup);
STRINGISE_ENUM_CLASS(Invocation);
STRINGISE_ENUM_CLASS(QueueFamily);
+ STRINGISE_ENUM_CLASS(ShaderCallKHR);
}
END_ENUM_STRINGISE();
}
@@ -855,6 +919,7 @@ rdcstr DoStringise(const rdcspv::Capability &el)
STRINGISE_ENUM_CLASS(GroupNonUniformQuad);
STRINGISE_ENUM_CLASS(ShaderLayer);
STRINGISE_ENUM_CLASS(ShaderViewportIndex);
+ STRINGISE_ENUM_CLASS(FragmentShadingRateKHR);
STRINGISE_ENUM_CLASS(SubgroupBallotKHR);
STRINGISE_ENUM_CLASS(DrawParameters);
STRINGISE_ENUM_CLASS(SubgroupVoteKHR);
@@ -876,11 +941,14 @@ rdcstr DoStringise(const rdcspv::Capability &el)
STRINGISE_ENUM_CLASS(SignedZeroInfNanPreserve);
STRINGISE_ENUM_CLASS(RoundingModeRTE);
STRINGISE_ENUM_CLASS(RoundingModeRTZ);
+ STRINGISE_ENUM_CLASS(RayQueryProvisionalKHR);
+ STRINGISE_ENUM_CLASS(RayTraversalPrimitiveCullingProvisionalKHR);
STRINGISE_ENUM_CLASS(Float16ImageAMD);
STRINGISE_ENUM_CLASS(ImageGatherBiasLodAMD);
STRINGISE_ENUM_CLASS(FragmentMaskAMD);
STRINGISE_ENUM_CLASS(StencilExportEXT);
STRINGISE_ENUM_CLASS(ImageReadWriteLodAMD);
+ STRINGISE_ENUM_CLASS(Int64ImageEXT);
STRINGISE_ENUM_CLASS(ShaderClockKHR);
STRINGISE_ENUM_CLASS(SampleMaskOverrideCoverageNV);
STRINGISE_ENUM_CLASS(GeometryShaderPassthroughNV);
@@ -912,6 +980,7 @@ rdcstr DoStringise(const rdcspv::Capability &el)
STRINGISE_ENUM_CLASS(VulkanMemoryModelDeviceScope);
STRINGISE_ENUM_CLASS(PhysicalStorageBufferAddresses);
STRINGISE_ENUM_CLASS(ComputeDerivativeGroupLinearNV);
+ STRINGISE_ENUM_CLASS(RayTracingProvisionalKHR);
STRINGISE_ENUM_CLASS(CooperativeMatrixNV);
STRINGISE_ENUM_CLASS(FragmentShaderSampleInterlockEXT);
STRINGISE_ENUM_CLASS(FragmentShaderShadingRateInterlockEXT);
@@ -923,9 +992,54 @@ rdcstr DoStringise(const rdcspv::Capability &el)
STRINGISE_ENUM_CLASS(SubgroupImageBlockIOINTEL);
STRINGISE_ENUM_CLASS(SubgroupImageMediaBlockIOINTEL);
STRINGISE_ENUM_CLASS(IntegerFunctions2INTEL);
+ STRINGISE_ENUM_CLASS(FunctionPointersINTEL);
+ STRINGISE_ENUM_CLASS(IndirectReferencesINTEL);
STRINGISE_ENUM_CLASS(SubgroupAvcMotionEstimationINTEL);
STRINGISE_ENUM_CLASS(SubgroupAvcMotionEstimationIntraINTEL);
STRINGISE_ENUM_CLASS(SubgroupAvcMotionEstimationChromaINTEL);
+ STRINGISE_ENUM_CLASS(FPGAMemoryAttributesINTEL);
+ STRINGISE_ENUM_CLASS(UnstructuredLoopControlsINTEL);
+ STRINGISE_ENUM_CLASS(FPGALoopControlsINTEL);
+ STRINGISE_ENUM_CLASS(KernelAttributesINTEL);
+ STRINGISE_ENUM_CLASS(FPGAKernelAttributesINTEL);
+ STRINGISE_ENUM_CLASS(BlockingPipesINTEL);
+ STRINGISE_ENUM_CLASS(FPGARegINTEL);
+ STRINGISE_ENUM_CLASS(AtomicFloat32AddEXT);
+ STRINGISE_ENUM_CLASS(AtomicFloat64AddEXT);
+ }
+ END_ENUM_STRINGISE();
+}
+
+template <>
+rdcstr DoStringise(const rdcspv::RayQueryIntersection &el)
+{
+ BEGIN_ENUM_STRINGISE(rdcspv::RayQueryIntersection);
+ {
+ STRINGISE_ENUM_CLASS(RayQueryCandidateIntersectionKHR);
+ STRINGISE_ENUM_CLASS(RayQueryCommittedIntersectionKHR);
+ }
+ END_ENUM_STRINGISE();
+}
+
+template <>
+rdcstr DoStringise(const rdcspv::RayQueryCommittedIntersectionType &el)
+{
+ BEGIN_ENUM_STRINGISE(rdcspv::RayQueryCommittedIntersectionType);
+ {
+ STRINGISE_ENUM_CLASS(RayQueryCommittedIntersectionNoneKHR);
+ STRINGISE_ENUM_CLASS(RayQueryCommittedIntersectionTriangleKHR);
+ STRINGISE_ENUM_CLASS(RayQueryCommittedIntersectionGeneratedKHR);
+ }
+ END_ENUM_STRINGISE();
+}
+
+template <>
+rdcstr DoStringise(const rdcspv::RayQueryCandidateIntersectionType &el)
+{
+ BEGIN_ENUM_STRINGISE(rdcspv::RayQueryCandidateIntersectionType);
+ {
+ STRINGISE_ENUM_CLASS(RayQueryCandidateIntersectionTriangleKHR);
+ STRINGISE_ENUM_CLASS(RayQueryCandidateIntersectionAABBKHR);
}
END_ENUM_STRINGISE();
}
@@ -1279,12 +1393,20 @@ rdcstr DoStringise(const rdcspv::Op &el)
STRINGISE_ENUM_CLASS(PtrEqual);
STRINGISE_ENUM_CLASS(PtrNotEqual);
STRINGISE_ENUM_CLASS(PtrDiff);
+ STRINGISE_ENUM_CLASS(TerminateInvocation);
STRINGISE_ENUM_CLASS(SubgroupBallotKHR);
STRINGISE_ENUM_CLASS(SubgroupFirstInvocationKHR);
STRINGISE_ENUM_CLASS(SubgroupAllKHR);
STRINGISE_ENUM_CLASS(SubgroupAnyKHR);
STRINGISE_ENUM_CLASS(SubgroupAllEqualKHR);
STRINGISE_ENUM_CLASS(SubgroupReadInvocationKHR);
+ STRINGISE_ENUM_CLASS(TypeRayQueryProvisionalKHR);
+ STRINGISE_ENUM_CLASS(RayQueryInitializeKHR);
+ STRINGISE_ENUM_CLASS(RayQueryTerminateKHR);
+ STRINGISE_ENUM_CLASS(RayQueryGenerateIntersectionKHR);
+ STRINGISE_ENUM_CLASS(RayQueryConfirmIntersectionKHR);
+ STRINGISE_ENUM_CLASS(RayQueryProceedKHR);
+ STRINGISE_ENUM_CLASS(RayQueryGetIntersectionTypeKHR);
STRINGISE_ENUM_CLASS(GroupIAddNonUniformAMD);
STRINGISE_ENUM_CLASS(GroupFAddNonUniformAMD);
STRINGISE_ENUM_CLASS(GroupFMinNonUniformAMD);
@@ -1338,6 +1460,8 @@ rdcstr DoStringise(const rdcspv::Op &el)
STRINGISE_ENUM_CLASS(USubSatINTEL);
STRINGISE_ENUM_CLASS(IMul32x16INTEL);
STRINGISE_ENUM_CLASS(UMul32x16INTEL);
+ STRINGISE_ENUM_CLASS(FunctionPointerINTEL);
+ STRINGISE_ENUM_CLASS(FunctionPointerCallINTEL);
STRINGISE_ENUM_CLASS(DecorateString);
STRINGISE_ENUM_CLASS(MemberDecorateString);
STRINGISE_ENUM_CLASS(VmeImageINTEL);
@@ -1458,6 +1582,28 @@ rdcstr DoStringise(const rdcspv::Op &el)
STRINGISE_ENUM_CLASS(SubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL);
STRINGISE_ENUM_CLASS(SubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL);
STRINGISE_ENUM_CLASS(SubgroupAvcSicGetInterRawSadsINTEL);
+ STRINGISE_ENUM_CLASS(LoopControlINTEL);
+ STRINGISE_ENUM_CLASS(ReadPipeBlockingINTEL);
+ STRINGISE_ENUM_CLASS(WritePipeBlockingINTEL);
+ STRINGISE_ENUM_CLASS(FPGARegINTEL);
+ STRINGISE_ENUM_CLASS(RayQueryGetRayTMinKHR);
+ STRINGISE_ENUM_CLASS(RayQueryGetRayFlagsKHR);
+ STRINGISE_ENUM_CLASS(RayQueryGetIntersectionTKHR);
+ STRINGISE_ENUM_CLASS(RayQueryGetIntersectionInstanceCustomIndexKHR);
+ STRINGISE_ENUM_CLASS(RayQueryGetIntersectionInstanceIdKHR);
+ STRINGISE_ENUM_CLASS(RayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR);
+ STRINGISE_ENUM_CLASS(RayQueryGetIntersectionGeometryIndexKHR);
+ STRINGISE_ENUM_CLASS(RayQueryGetIntersectionPrimitiveIndexKHR);
+ STRINGISE_ENUM_CLASS(RayQueryGetIntersectionBarycentricsKHR);
+ STRINGISE_ENUM_CLASS(RayQueryGetIntersectionFrontFaceKHR);
+ STRINGISE_ENUM_CLASS(RayQueryGetIntersectionCandidateAABBOpaqueKHR);
+ STRINGISE_ENUM_CLASS(RayQueryGetIntersectionObjectRayDirectionKHR);
+ STRINGISE_ENUM_CLASS(RayQueryGetIntersectionObjectRayOriginKHR);
+ STRINGISE_ENUM_CLASS(RayQueryGetWorldRayDirectionKHR);
+ STRINGISE_ENUM_CLASS(RayQueryGetWorldRayOriginKHR);
+ STRINGISE_ENUM_CLASS(RayQueryGetIntersectionObjectToWorldKHR);
+ STRINGISE_ENUM_CLASS(RayQueryGetIntersectionWorldToObjectKHR);
+ STRINGISE_ENUM_CLASS(AtomicFAddEXT);
}
END_ENUM_STRINGISE();
}
@@ -1563,6 +1709,20 @@ rdcstr ParamToStr(const std::function &idName, const rdcspv:
ret += "PeelCount" "(" + ToStr(el.peelCount) + ")" ", ";
if(el.flags & LoopControl::PartialCount)
ret += "PartialCount" "(" + ToStr(el.partialCount) + ")" ", ";
+ if(el.flags & LoopControl::InitiationIntervalINTEL)
+ ret += "InitiationIntervalINTEL" "(" + ToStr(el.initiationIntervalINTEL) + ")" ", ";
+ if(el.flags & LoopControl::MaxConcurrencyINTEL)
+ ret += "MaxConcurrencyINTEL" "(" + ToStr(el.maxConcurrencyINTEL) + ")" ", ";
+ if(el.flags & LoopControl::DependencyArrayINTEL)
+ ret += "DependencyArrayINTEL" "(" + ToStr(el.dependencyArrayINTEL) + ")" ", ";
+ if(el.flags & LoopControl::PipelineEnableINTEL)
+ ret += "PipelineEnableINTEL" "(" + ToStr(el.pipelineEnableINTEL) + ")" ", ";
+ if(el.flags & LoopControl::LoopCoalesceINTEL)
+ ret += "LoopCoalesceINTEL" "(" + ToStr(el.loopCoalesceINTEL) + ")" ", ";
+ if(el.flags & LoopControl::MaxInterleavingINTEL)
+ ret += "MaxInterleavingINTEL" "(" + ToStr(el.maxInterleavingINTEL) + ")" ", ";
+ if(el.flags & LoopControl::SpeculatedIterationsINTEL)
+ ret += "SpeculatedIterationsINTEL" "(" + ToStr(el.speculatedIterationsINTEL) + ")" ", ";
// remove trailing ", "
if(ret.size() > 2)
@@ -1637,6 +1797,12 @@ rdcstr ParamToStr(const std::function &idName, const rdcspv:
ret += "(" + ToStr(el.roundingModeRTZ) + ")"; break;
case ExecutionMode::OutputPrimitivesNV:
ret += "(" + ToStr(el.outputPrimitivesNV) + ")"; break;
+ case ExecutionMode::MaxWorkgroupSizeINTEL:
+ ret += "(" + ToStr(el.maxWorkgroupSizeINTEL.max_x_size) + ", " + ToStr(el.maxWorkgroupSizeINTEL.max_y_size) + ", " + ToStr(el.maxWorkgroupSizeINTEL.max_z_size) + ")"; break;
+ case ExecutionMode::MaxWorkDimINTEL:
+ ret += "(" + ToStr(el.maxWorkDimINTEL) + ")"; break;
+ case ExecutionMode::NumSIMDWorkitemsINTEL:
+ ret += "(" + ToStr(el.numSIMDWorkitemsINTEL) + ")"; break;
default:
break;
}
@@ -1699,6 +1865,18 @@ rdcstr ParamToStr(const std::function &idName, const rdcspv:
ret += "(" + ToStr(el.secondaryViewportRelativeNV) + ")"; break;
case Decoration::CounterBuffer:
ret += "(" + idName(el.counterBuffer) + ")"; break;
+ case Decoration::NumbanksINTEL:
+ ret += "(" + ToStr(el.numbanksINTEL) + ")"; break;
+ case Decoration::BankwidthINTEL:
+ ret += "(" + ToStr(el.bankwidthINTEL) + ")"; break;
+ case Decoration::MaxPrivateCopiesINTEL:
+ ret += "(" + ToStr(el.maxPrivateCopiesINTEL) + ")"; break;
+ case Decoration::MaxReplicatesINTEL:
+ ret += "(" + ToStr(el.maxReplicatesINTEL) + ")"; break;
+ case Decoration::BankBitsINTEL:
+ ret += "(" + ToStr(el.bankBitsINTEL) + ")"; break;
+ case Decoration::ForcePow2DepthINTEL:
+ ret += "(" + ToStr(el.forcePow2DepthINTEL) + ")"; break;
default:
break;
}
@@ -3600,6 +3778,8 @@ void OpDecoder::ForEachID(const ConstIter &it, const std::function &words, const LoopControlAndParamData
{
words.push_back((uint32_t)param.partialCount);
}
+ if(param.flags & LoopControl::InitiationIntervalINTEL)
+ {
+ words.push_back((uint32_t)param.initiationIntervalINTEL);
+ }
+ if(param.flags & LoopControl::MaxConcurrencyINTEL)
+ {
+ words.push_back((uint32_t)param.maxConcurrencyINTEL);
+ }
+ if(param.flags & LoopControl::DependencyArrayINTEL)
+ {
+ words.push_back((uint32_t)param.dependencyArrayINTEL);
+ }
+ if(param.flags & LoopControl::PipelineEnableINTEL)
+ {
+ words.push_back((uint32_t)param.pipelineEnableINTEL);
+ }
+ if(param.flags & LoopControl::LoopCoalesceINTEL)
+ {
+ words.push_back((uint32_t)param.loopCoalesceINTEL);
+ }
+ if(param.flags & LoopControl::MaxInterleavingINTEL)
+ {
+ words.push_back((uint32_t)param.maxInterleavingINTEL);
+ }
+ if(param.flags & LoopControl::SpeculatedIterationsINTEL)
+ {
+ words.push_back((uint32_t)param.speculatedIterationsINTEL);
+ }
}
inline uint16_t ExtraWordCount(const LoopControl loopControl)
@@ -381,6 +444,13 @@ inline uint16_t ExtraWordCount(const LoopControl loopControl)
case LoopControl::IterationMultiple: return 1;
case LoopControl::PeelCount: return 1;
case LoopControl::PartialCount: return 1;
+ case LoopControl::InitiationIntervalINTEL: return 1;
+ case LoopControl::MaxConcurrencyINTEL: return 1;
+ case LoopControl::DependencyArrayINTEL: return 1;
+ case LoopControl::PipelineEnableINTEL: return 1;
+ case LoopControl::LoopCoalesceINTEL: return 1;
+ case LoopControl::MaxInterleavingINTEL: return 1;
+ case LoopControl::SpeculatedIterationsINTEL: return 1;
default: break;
}
return 0;
@@ -664,6 +734,47 @@ struct ExecutionModeParam
}
};
+template<>
+struct ExecutionModeParam
+{
+ MaxWorkgroupSizeINTELParams maxWorkgroupSizeINTEL;
+ ExecutionModeParam(uint32_t max_x_size, uint32_t max_y_size, uint32_t max_z_size) { maxWorkgroupSizeINTEL.max_x_size = max_x_size; maxWorkgroupSizeINTEL.max_y_size = max_y_size; maxWorkgroupSizeINTEL.max_z_size = max_z_size; }
+ operator ExecutionModeAndParamData()
+ {
+ ExecutionModeAndParamData ret(ExecutionMode::MaxWorkgroupSizeINTEL);
+ ret.maxWorkgroupSizeINTEL.max_x_size = maxWorkgroupSizeINTEL.max_x_size;
+ ret.maxWorkgroupSizeINTEL.max_y_size = maxWorkgroupSizeINTEL.max_y_size;
+ ret.maxWorkgroupSizeINTEL.max_z_size = maxWorkgroupSizeINTEL.max_z_size;
+ return ret;
+ }
+};
+
+template<>
+struct ExecutionModeParam
+{
+ uint32_t maxWorkDimINTEL;
+ ExecutionModeParam(uint32_t maxWorkDimINTELParam) { maxWorkDimINTEL = maxWorkDimINTELParam; }
+ operator ExecutionModeAndParamData()
+ {
+ ExecutionModeAndParamData ret(ExecutionMode::MaxWorkDimINTEL);
+ ret.maxWorkDimINTEL = maxWorkDimINTEL;
+ return ret;
+ }
+};
+
+template<>
+struct ExecutionModeParam
+{
+ uint32_t numSIMDWorkitemsINTEL;
+ ExecutionModeParam(uint32_t numSIMDWorkitemsINTELParam) { numSIMDWorkitemsINTEL = numSIMDWorkitemsINTELParam; }
+ operator ExecutionModeAndParamData()
+ {
+ ExecutionModeAndParamData ret(ExecutionMode::NumSIMDWorkitemsINTEL);
+ ret.numSIMDWorkitemsINTEL = numSIMDWorkitemsINTEL;
+ return ret;
+ }
+};
+
template<>
@@ -745,6 +856,20 @@ inline ExecutionModeAndParamData DecodeParam(const ConstIter &it, uint32_t &word
ret.outputPrimitivesNV = (uint32_t)it.word(word);
word += 1;
break;
+ case ExecutionMode::MaxWorkgroupSizeINTEL:
+ ret.maxWorkgroupSizeINTEL.max_x_size = (uint32_t)it.word(word+0);
+ ret.maxWorkgroupSizeINTEL.max_y_size = (uint32_t)it.word(word+1);
+ ret.maxWorkgroupSizeINTEL.max_z_size = (uint32_t)it.word(word+2);
+ word += 3;
+ break;
+ case ExecutionMode::MaxWorkDimINTEL:
+ ret.maxWorkDimINTEL = (uint32_t)it.word(word);
+ word += 1;
+ break;
+ case ExecutionMode::NumSIMDWorkitemsINTEL:
+ ret.numSIMDWorkitemsINTEL = (uint32_t)it.word(word);
+ word += 1;
+ break;
default: break;
}
return ret;
@@ -809,6 +934,17 @@ inline void EncodeParam(rdcarray &words, const ExecutionModeAndParamDa
case ExecutionMode::OutputPrimitivesNV:
words.push_back((uint32_t)param.outputPrimitivesNV);
break;
+ case ExecutionMode::MaxWorkgroupSizeINTEL:
+ words.push_back((uint32_t)param.maxWorkgroupSizeINTEL.max_x_size);
+ words.push_back((uint32_t)param.maxWorkgroupSizeINTEL.max_y_size);
+ words.push_back((uint32_t)param.maxWorkgroupSizeINTEL.max_z_size);
+ break;
+ case ExecutionMode::MaxWorkDimINTEL:
+ words.push_back((uint32_t)param.maxWorkDimINTEL);
+ break;
+ case ExecutionMode::NumSIMDWorkitemsINTEL:
+ words.push_back((uint32_t)param.numSIMDWorkitemsINTEL);
+ break;
default: break;
}
}
@@ -833,6 +969,9 @@ inline uint16_t ExtraWordCount(const ExecutionMode executionMode)
case ExecutionMode::RoundingModeRTE: return 1;
case ExecutionMode::RoundingModeRTZ: return 1;
case ExecutionMode::OutputPrimitivesNV: return 1;
+ case ExecutionMode::MaxWorkgroupSizeINTEL: return 3;
+ case ExecutionMode::MaxWorkDimINTEL: return 1;
+ case ExecutionMode::NumSIMDWorkitemsINTEL: return 1;
default: break;
}
return 0;
@@ -1174,6 +1313,84 @@ struct DecorationParam
}
};
+template<>
+struct DecorationParam
+{
+ uint32_t numbanksINTEL;
+ DecorationParam(uint32_t numbanksINTELParam) { numbanksINTEL = numbanksINTELParam; }
+ operator DecorationAndParamData()
+ {
+ DecorationAndParamData ret(Decoration::NumbanksINTEL);
+ ret.numbanksINTEL = numbanksINTEL;
+ return ret;
+ }
+};
+
+template<>
+struct DecorationParam
+{
+ uint32_t bankwidthINTEL;
+ DecorationParam(uint32_t bankwidthINTELParam) { bankwidthINTEL = bankwidthINTELParam; }
+ operator DecorationAndParamData()
+ {
+ DecorationAndParamData ret(Decoration::BankwidthINTEL);
+ ret.bankwidthINTEL = bankwidthINTEL;
+ return ret;
+ }
+};
+
+template<>
+struct DecorationParam
+{
+ uint32_t maxPrivateCopiesINTEL;
+ DecorationParam(uint32_t maxPrivateCopiesINTELParam) { maxPrivateCopiesINTEL = maxPrivateCopiesINTELParam; }
+ operator DecorationAndParamData()
+ {
+ DecorationAndParamData ret(Decoration::MaxPrivateCopiesINTEL);
+ ret.maxPrivateCopiesINTEL = maxPrivateCopiesINTEL;
+ return ret;
+ }
+};
+
+template<>
+struct DecorationParam
+{
+ uint32_t maxReplicatesINTEL;
+ DecorationParam(uint32_t maxReplicatesINTELParam) { maxReplicatesINTEL = maxReplicatesINTELParam; }
+ operator DecorationAndParamData()
+ {
+ DecorationAndParamData ret(Decoration::MaxReplicatesINTEL);
+ ret.maxReplicatesINTEL = maxReplicatesINTEL;
+ return ret;
+ }
+};
+
+template<>
+struct DecorationParam
+{
+ uint32_t bankBitsINTEL;
+ DecorationParam(uint32_t bankBitsINTELParam) { bankBitsINTEL = bankBitsINTELParam; }
+ operator DecorationAndParamData()
+ {
+ DecorationAndParamData ret(Decoration::BankBitsINTEL);
+ ret.bankBitsINTEL = bankBitsINTEL;
+ return ret;
+ }
+};
+
+template<>
+struct DecorationParam
+{
+ uint32_t forcePow2DepthINTEL;
+ DecorationParam(uint32_t forcePow2DepthINTELParam) { forcePow2DepthINTEL = forcePow2DepthINTELParam; }
+ operator DecorationAndParamData()
+ {
+ DecorationAndParamData ret(Decoration::ForcePow2DepthINTEL);
+ ret.forcePow2DepthINTEL = forcePow2DepthINTEL;
+ return ret;
+ }
+};
+
template<>
@@ -1281,6 +1498,30 @@ inline DecorationAndParamData DecodeParam(const ConstIter &it, uint32_t &word)
ret.counterBuffer = Id::fromWord(it.word(word));
word += 1;
break;
+ case Decoration::NumbanksINTEL:
+ ret.numbanksINTEL = (uint32_t)it.word(word);
+ word += 1;
+ break;
+ case Decoration::BankwidthINTEL:
+ ret.bankwidthINTEL = (uint32_t)it.word(word);
+ word += 1;
+ break;
+ case Decoration::MaxPrivateCopiesINTEL:
+ ret.maxPrivateCopiesINTEL = (uint32_t)it.word(word);
+ word += 1;
+ break;
+ case Decoration::MaxReplicatesINTEL:
+ ret.maxReplicatesINTEL = (uint32_t)it.word(word);
+ word += 1;
+ break;
+ case Decoration::BankBitsINTEL:
+ ret.bankBitsINTEL = (uint32_t)it.word(word);
+ word += 1;
+ break;
+ case Decoration::ForcePow2DepthINTEL:
+ ret.forcePow2DepthINTEL = (uint32_t)it.word(word);
+ word += 1;
+ break;
default: break;
}
return ret;
@@ -1363,6 +1604,24 @@ inline void EncodeParam(rdcarray &words, const DecorationAndParamData
case Decoration::CounterBuffer:
words.push_back(param.counterBuffer.value());
break;
+ case Decoration::NumbanksINTEL:
+ words.push_back((uint32_t)param.numbanksINTEL);
+ break;
+ case Decoration::BankwidthINTEL:
+ words.push_back((uint32_t)param.bankwidthINTEL);
+ break;
+ case Decoration::MaxPrivateCopiesINTEL:
+ words.push_back((uint32_t)param.maxPrivateCopiesINTEL);
+ break;
+ case Decoration::MaxReplicatesINTEL:
+ words.push_back((uint32_t)param.maxReplicatesINTEL);
+ break;
+ case Decoration::BankBitsINTEL:
+ words.push_back((uint32_t)param.bankBitsINTEL);
+ break;
+ case Decoration::ForcePow2DepthINTEL:
+ words.push_back((uint32_t)param.forcePow2DepthINTEL);
+ break;
default: break;
}
}
@@ -1395,6 +1654,12 @@ inline uint16_t ExtraWordCount(const Decoration decoration)
case Decoration::MaxByteOffsetId: return 1;
case Decoration::SecondaryViewportRelativeNV: return 1;
case Decoration::CounterBuffer: return 1;
+ case Decoration::NumbanksINTEL: return 1;
+ case Decoration::BankwidthINTEL: return 1;
+ case Decoration::MaxPrivateCopiesINTEL: return 1;
+ case Decoration::MaxReplicatesINTEL: return 1;
+ case Decoration::BankBitsINTEL: return 1;
+ case Decoration::ForcePow2DepthINTEL: return 1;
default: break;
}
return 0;
@@ -1410,6 +1675,12 @@ inline uint16_t OptionalWordCount(const KernelEnqueueFlags val) { return val !=
inline uint16_t OptionalWordCount(const Capability val) { return val != Capability::Invalid ? 1 : 0; }
+inline uint16_t OptionalWordCount(const RayQueryIntersection val) { return val != RayQueryIntersection::Invalid ? 1 : 0; }
+
+inline uint16_t OptionalWordCount(const RayQueryCommittedIntersectionType val) { return val != RayQueryCommittedIntersectionType::Invalid ? 1 : 0; }
+
+inline uint16_t OptionalWordCount(const RayQueryCandidateIntersectionType val) { return val != RayQueryCandidateIntersectionType::Invalid ? 1 : 0; }
+
inline uint16_t ExtraWordCount(const rdcstr &val)
{
@@ -11645,6 +11916,26 @@ struct OpPtrDiff
Id operand2;
};
+struct OpTerminateInvocation
+{
+ OpTerminateInvocation(const ConstIter &it)
+ {
+ memcpy(this, it.words(), sizeof(*this));
+ }
+ OpTerminateInvocation()
+ : op(Op::TerminateInvocation)
+ , wordCount(FixedWordSize)
+ {
+ // no operands
+ }
+
+ static constexpr Op OpCode = Op::TerminateInvocation;
+ static constexpr uint16_t FixedWordSize = 1U;
+ Op op;
+ uint16_t wordCount;
+ // no operands
+};
+
struct OpSubgroupBallotKHR
{
OpSubgroupBallotKHR(const ConstIter &it)
@@ -11791,6 +12082,172 @@ struct OpSubgroupReadInvocationKHR
Id index;
};
+struct OpTypeRayQueryProvisionalKHR
+{
+ OpTypeRayQueryProvisionalKHR(const ConstIter &it)
+ {
+ memcpy(this, it.words(), sizeof(*this));
+ }
+ OpTypeRayQueryProvisionalKHR(IdResult result)
+ : op(Op::TypeRayQueryProvisionalKHR)
+ , wordCount(FixedWordSize)
+ {
+ this->result = result;
+ }
+
+ static constexpr Op OpCode = Op::TypeRayQueryProvisionalKHR;
+ static constexpr uint16_t FixedWordSize = 2U;
+ Op op;
+ uint16_t wordCount;
+ IdResult result;
+};
+
+struct OpRayQueryInitializeKHR
+{
+ OpRayQueryInitializeKHR(const ConstIter &it)
+ {
+ memcpy(this, it.words(), sizeof(*this));
+ }
+ OpRayQueryInitializeKHR(Id rayQuery, Id accel, Id rayFlags, Id cullMask, Id rayOrigin, Id rayTMin, Id rayDirection, Id rayTMax)
+ : op(Op::RayQueryInitializeKHR)
+ , wordCount(FixedWordSize)
+ {
+ this->rayQuery = rayQuery;
+ this->accel = accel;
+ this->rayFlags = rayFlags;
+ this->cullMask = cullMask;
+ this->rayOrigin = rayOrigin;
+ this->rayTMin = rayTMin;
+ this->rayDirection = rayDirection;
+ this->rayTMax = rayTMax;
+ }
+
+ static constexpr Op OpCode = Op::RayQueryInitializeKHR;
+ static constexpr uint16_t FixedWordSize = 9U;
+ Op op;
+ uint16_t wordCount;
+ Id rayQuery;
+ Id accel;
+ Id rayFlags;
+ Id cullMask;
+ Id rayOrigin;
+ Id rayTMin;
+ Id rayDirection;
+ Id rayTMax;
+};
+
+struct OpRayQueryTerminateKHR
+{
+ OpRayQueryTerminateKHR(const ConstIter &it)
+ {
+ memcpy(this, it.words(), sizeof(*this));
+ }
+ OpRayQueryTerminateKHR(Id rayQuery)
+ : op(Op::RayQueryTerminateKHR)
+ , wordCount(FixedWordSize)
+ {
+ this->rayQuery = rayQuery;
+ }
+
+ static constexpr Op OpCode = Op::RayQueryTerminateKHR;
+ static constexpr uint16_t FixedWordSize = 2U;
+ Op op;
+ uint16_t wordCount;
+ Id rayQuery;
+};
+
+struct OpRayQueryGenerateIntersectionKHR
+{
+ OpRayQueryGenerateIntersectionKHR(const ConstIter &it)
+ {
+ memcpy(this, it.words(), sizeof(*this));
+ }
+ OpRayQueryGenerateIntersectionKHR(Id rayQuery, Id hitT)
+ : op(Op::RayQueryGenerateIntersectionKHR)
+ , wordCount(FixedWordSize)
+ {
+ this->rayQuery = rayQuery;
+ this->hitT = hitT;
+ }
+
+ static constexpr Op OpCode = Op::RayQueryGenerateIntersectionKHR;
+ static constexpr uint16_t FixedWordSize = 3U;
+ Op op;
+ uint16_t wordCount;
+ Id rayQuery;
+ Id hitT;
+};
+
+struct OpRayQueryConfirmIntersectionKHR
+{
+ OpRayQueryConfirmIntersectionKHR(const ConstIter &it)
+ {
+ memcpy(this, it.words(), sizeof(*this));
+ }
+ OpRayQueryConfirmIntersectionKHR(Id rayQuery)
+ : op(Op::RayQueryConfirmIntersectionKHR)
+ , wordCount(FixedWordSize)
+ {
+ this->rayQuery = rayQuery;
+ }
+
+ static constexpr Op OpCode = Op::RayQueryConfirmIntersectionKHR;
+ static constexpr uint16_t FixedWordSize = 2U;
+ Op op;
+ uint16_t wordCount;
+ Id rayQuery;
+};
+
+struct OpRayQueryProceedKHR
+{
+ OpRayQueryProceedKHR(const ConstIter &it)
+ {
+ memcpy(this, it.words(), sizeof(*this));
+ }
+ OpRayQueryProceedKHR(IdResultType resultType, IdResult result, Id rayQuery)
+ : op(Op::RayQueryProceedKHR)
+ , wordCount(FixedWordSize)
+ {
+ this->resultType = resultType;
+ this->result = result;
+ this->rayQuery = rayQuery;
+ }
+
+ static constexpr Op OpCode = Op::RayQueryProceedKHR;
+ static constexpr uint16_t FixedWordSize = 4U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+ Id rayQuery;
+};
+
+struct OpRayQueryGetIntersectionTypeKHR
+{
+ OpRayQueryGetIntersectionTypeKHR(const ConstIter &it)
+ {
+ memcpy(this, it.words(), sizeof(*this));
+ }
+ OpRayQueryGetIntersectionTypeKHR(IdResultType resultType, IdResult result, Id rayQuery, Id intersection)
+ : op(Op::RayQueryGetIntersectionTypeKHR)
+ , wordCount(FixedWordSize)
+ {
+ this->resultType = resultType;
+ this->result = result;
+ this->rayQuery = rayQuery;
+ this->intersection = intersection;
+ }
+
+ static constexpr Op OpCode = Op::RayQueryGetIntersectionTypeKHR;
+ static constexpr uint16_t FixedWordSize = 5U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+ Id rayQuery;
+ Id intersection;
+};
+
struct OpGroupIAddNonUniformAMD
{
OpGroupIAddNonUniformAMD(const ConstIter &it)
@@ -13218,6 +13675,70 @@ struct OpUMul32x16INTEL
Id operand2;
};
+struct OpFunctionPointerINTEL
+{
+ OpFunctionPointerINTEL(const ConstIter &it)
+ {
+ memcpy(this, it.words(), sizeof(*this));
+ }
+ OpFunctionPointerINTEL(IdResultType resultType, IdResult result, Id function)
+ : op(Op::FunctionPointerINTEL)
+ , wordCount(FixedWordSize)
+ {
+ this->resultType = resultType;
+ this->result = result;
+ this->function = function;
+ }
+
+ static constexpr Op OpCode = Op::FunctionPointerINTEL;
+ static constexpr uint16_t FixedWordSize = 4U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+ Id function;
+};
+
+struct OpFunctionPointerCallINTEL
+{
+ OpFunctionPointerCallINTEL(const ConstIter &it)
+ {
+ this->op = OpCode;
+ this->wordCount = (uint16_t)it.size();
+ this->resultType = Id::fromWord(it.word(1));
+ this->result = Id::fromWord(it.word(2));
+ uint32_t word = 3;
+ this->operand1 = MultiParam(it, word);
+ }
+ OpFunctionPointerCallINTEL(IdResultType resultType, IdResult result, const rdcarray &operand1 = {})
+ : op(Op::FunctionPointerCallINTEL)
+ , wordCount(MinWordSize + MultiWordCount(operand1))
+ {
+ this->resultType = resultType;
+ this->result = result;
+ this->operand1 = operand1;
+ }
+ operator Operation() const
+ {
+ rdcarray words;
+ words.push_back(resultType.value());
+ words.push_back(result.value());
+ for(size_t i=0; i < operand1.size(); i++)
+ {
+ words.push_back(operand1[i].value());
+ }
+ return Operation(OpCode, words);
+ }
+
+ static constexpr Op OpCode = Op::FunctionPointerCallINTEL;
+ static constexpr uint16_t MinWordSize = 3U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+ rdcarray operand1;
+};
+
struct OpDecorateString
{
OpDecorateString(const ConstIter &it)
@@ -16322,6 +16843,578 @@ struct OpSubgroupAvcSicGetInterRawSadsINTEL
Id payload;
};
+struct OpLoopControlINTEL
+{
+ OpLoopControlINTEL(const ConstIter &it)
+ {
+ this->op = OpCode;
+ this->wordCount = (uint16_t)it.size();
+ uint32_t word = 1;
+ this->loopControlParameters = MultiParam(it, word);
+ }
+ OpLoopControlINTEL(const rdcarray &loopControlParameters = {})
+ : op(Op::LoopControlINTEL)
+ , wordCount(MinWordSize + MultiWordCount(loopControlParameters))
+ {
+ this->loopControlParameters = loopControlParameters;
+ }
+ operator Operation() const
+ {
+ rdcarray words;
+ for(size_t i=0; i < loopControlParameters.size(); i++)
+ {
+ words.push_back((uint32_t)loopControlParameters[i]);
+ }
+ return Operation(OpCode, words);
+ }
+
+ static constexpr Op OpCode = Op::LoopControlINTEL;
+ static constexpr uint16_t MinWordSize = 1U;
+ Op op;
+ uint16_t wordCount;
+ rdcarray loopControlParameters;
+};
+
+struct OpReadPipeBlockingINTEL
+{
+ OpReadPipeBlockingINTEL(const ConstIter &it)
+ {
+ memcpy(this, it.words(), sizeof(*this));
+ }
+ OpReadPipeBlockingINTEL(IdResultType resultType, IdResult result, Id packetSize, Id packetAlignment)
+ : op(Op::ReadPipeBlockingINTEL)
+ , wordCount(FixedWordSize)
+ {
+ this->resultType = resultType;
+ this->result = result;
+ this->packetSize = packetSize;
+ this->packetAlignment = packetAlignment;
+ }
+
+ static constexpr Op OpCode = Op::ReadPipeBlockingINTEL;
+ static constexpr uint16_t FixedWordSize = 5U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+ Id packetSize;
+ Id packetAlignment;
+};
+
+struct OpWritePipeBlockingINTEL
+{
+ OpWritePipeBlockingINTEL(const ConstIter &it)
+ {
+ memcpy(this, it.words(), sizeof(*this));
+ }
+ OpWritePipeBlockingINTEL(IdResultType resultType, IdResult result, Id packetSize, Id packetAlignment)
+ : op(Op::WritePipeBlockingINTEL)
+ , wordCount(FixedWordSize)
+ {
+ this->resultType = resultType;
+ this->result = result;
+ this->packetSize = packetSize;
+ this->packetAlignment = packetAlignment;
+ }
+
+ static constexpr Op OpCode = Op::WritePipeBlockingINTEL;
+ static constexpr uint16_t FixedWordSize = 5U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+ Id packetSize;
+ Id packetAlignment;
+};
+
+struct OpFPGARegINTEL
+{
+ OpFPGARegINTEL(const ConstIter &it)
+ {
+ memcpy(this, it.words(), sizeof(*this));
+ }
+ OpFPGARegINTEL(IdResultType resultType, IdResult result0, Id result1, Id input)
+ : op(Op::FPGARegINTEL)
+ , wordCount(FixedWordSize)
+ {
+ this->resultType = resultType;
+ this->result0 = result0;
+ this->result1 = result1;
+ this->input = input;
+ }
+
+ static constexpr Op OpCode = Op::FPGARegINTEL;
+ static constexpr uint16_t FixedWordSize = 5U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result0;
+ Id result1;
+ Id input;
+};
+
+struct OpRayQueryGetRayTMinKHR
+{
+ OpRayQueryGetRayTMinKHR(const ConstIter &it)
+ {
+ memcpy(this, it.words(), sizeof(*this));
+ }
+ OpRayQueryGetRayTMinKHR(IdResultType resultType, IdResult result, Id rayQuery)
+ : op(Op::RayQueryGetRayTMinKHR)
+ , wordCount(FixedWordSize)
+ {
+ this->resultType = resultType;
+ this->result = result;
+ this->rayQuery = rayQuery;
+ }
+
+ static constexpr Op OpCode = Op::RayQueryGetRayTMinKHR;
+ static constexpr uint16_t FixedWordSize = 4U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+ Id rayQuery;
+};
+
+struct OpRayQueryGetRayFlagsKHR
+{
+ OpRayQueryGetRayFlagsKHR(const ConstIter &it)
+ {
+ memcpy(this, it.words(), sizeof(*this));
+ }
+ OpRayQueryGetRayFlagsKHR(IdResultType resultType, IdResult result, Id rayQuery)
+ : op(Op::RayQueryGetRayFlagsKHR)
+ , wordCount(FixedWordSize)
+ {
+ this->resultType = resultType;
+ this->result = result;
+ this->rayQuery = rayQuery;
+ }
+
+ static constexpr Op OpCode = Op::RayQueryGetRayFlagsKHR;
+ static constexpr uint16_t FixedWordSize = 4U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+ Id rayQuery;
+};
+
+struct OpRayQueryGetIntersectionTKHR
+{
+ OpRayQueryGetIntersectionTKHR(const ConstIter &it)
+ {
+ memcpy(this, it.words(), sizeof(*this));
+ }
+ OpRayQueryGetIntersectionTKHR(IdResultType resultType, IdResult result, Id rayQuery, Id intersection)
+ : op(Op::RayQueryGetIntersectionTKHR)
+ , wordCount(FixedWordSize)
+ {
+ this->resultType = resultType;
+ this->result = result;
+ this->rayQuery = rayQuery;
+ this->intersection = intersection;
+ }
+
+ static constexpr Op OpCode = Op::RayQueryGetIntersectionTKHR;
+ static constexpr uint16_t FixedWordSize = 5U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+ Id rayQuery;
+ Id intersection;
+};
+
+struct OpRayQueryGetIntersectionInstanceCustomIndexKHR
+{
+ OpRayQueryGetIntersectionInstanceCustomIndexKHR(const ConstIter &it)
+ {
+ memcpy(this, it.words(), sizeof(*this));
+ }
+ OpRayQueryGetIntersectionInstanceCustomIndexKHR(IdResultType resultType, IdResult result, Id rayQuery, Id intersection)
+ : op(Op::RayQueryGetIntersectionInstanceCustomIndexKHR)
+ , wordCount(FixedWordSize)
+ {
+ this->resultType = resultType;
+ this->result = result;
+ this->rayQuery = rayQuery;
+ this->intersection = intersection;
+ }
+
+ static constexpr Op OpCode = Op::RayQueryGetIntersectionInstanceCustomIndexKHR;
+ static constexpr uint16_t FixedWordSize = 5U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+ Id rayQuery;
+ Id intersection;
+};
+
+struct OpRayQueryGetIntersectionInstanceIdKHR
+{
+ OpRayQueryGetIntersectionInstanceIdKHR(const ConstIter &it)
+ {
+ memcpy(this, it.words(), sizeof(*this));
+ }
+ OpRayQueryGetIntersectionInstanceIdKHR(IdResultType resultType, IdResult result, Id rayQuery, Id intersection)
+ : op(Op::RayQueryGetIntersectionInstanceIdKHR)
+ , wordCount(FixedWordSize)
+ {
+ this->resultType = resultType;
+ this->result = result;
+ this->rayQuery = rayQuery;
+ this->intersection = intersection;
+ }
+
+ static constexpr Op OpCode = Op::RayQueryGetIntersectionInstanceIdKHR;
+ static constexpr uint16_t FixedWordSize = 5U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+ Id rayQuery;
+ Id intersection;
+};
+
+struct OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR
+{
+ OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR(const ConstIter &it)
+ {
+ memcpy(this, it.words(), sizeof(*this));
+ }
+ OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR(IdResultType resultType, IdResult result, Id rayQuery, Id intersection)
+ : op(Op::RayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR)
+ , wordCount(FixedWordSize)
+ {
+ this->resultType = resultType;
+ this->result = result;
+ this->rayQuery = rayQuery;
+ this->intersection = intersection;
+ }
+
+ static constexpr Op OpCode = Op::RayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR;
+ static constexpr uint16_t FixedWordSize = 5U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+ Id rayQuery;
+ Id intersection;
+};
+
+struct OpRayQueryGetIntersectionGeometryIndexKHR
+{
+ OpRayQueryGetIntersectionGeometryIndexKHR(const ConstIter &it)
+ {
+ memcpy(this, it.words(), sizeof(*this));
+ }
+ OpRayQueryGetIntersectionGeometryIndexKHR(IdResultType resultType, IdResult result, Id rayQuery, Id intersection)
+ : op(Op::RayQueryGetIntersectionGeometryIndexKHR)
+ , wordCount(FixedWordSize)
+ {
+ this->resultType = resultType;
+ this->result = result;
+ this->rayQuery = rayQuery;
+ this->intersection = intersection;
+ }
+
+ static constexpr Op OpCode = Op::RayQueryGetIntersectionGeometryIndexKHR;
+ static constexpr uint16_t FixedWordSize = 5U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+ Id rayQuery;
+ Id intersection;
+};
+
+struct OpRayQueryGetIntersectionPrimitiveIndexKHR
+{
+ OpRayQueryGetIntersectionPrimitiveIndexKHR(const ConstIter &it)
+ {
+ memcpy(this, it.words(), sizeof(*this));
+ }
+ OpRayQueryGetIntersectionPrimitiveIndexKHR(IdResultType resultType, IdResult result, Id rayQuery, Id intersection)
+ : op(Op::RayQueryGetIntersectionPrimitiveIndexKHR)
+ , wordCount(FixedWordSize)
+ {
+ this->resultType = resultType;
+ this->result = result;
+ this->rayQuery = rayQuery;
+ this->intersection = intersection;
+ }
+
+ static constexpr Op OpCode = Op::RayQueryGetIntersectionPrimitiveIndexKHR;
+ static constexpr uint16_t FixedWordSize = 5U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+ Id rayQuery;
+ Id intersection;
+};
+
+struct OpRayQueryGetIntersectionBarycentricsKHR
+{
+ OpRayQueryGetIntersectionBarycentricsKHR(const ConstIter &it)
+ {
+ memcpy(this, it.words(), sizeof(*this));
+ }
+ OpRayQueryGetIntersectionBarycentricsKHR(IdResultType resultType, IdResult result, Id rayQuery, Id intersection)
+ : op(Op::RayQueryGetIntersectionBarycentricsKHR)
+ , wordCount(FixedWordSize)
+ {
+ this->resultType = resultType;
+ this->result = result;
+ this->rayQuery = rayQuery;
+ this->intersection = intersection;
+ }
+
+ static constexpr Op OpCode = Op::RayQueryGetIntersectionBarycentricsKHR;
+ static constexpr uint16_t FixedWordSize = 5U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+ Id rayQuery;
+ Id intersection;
+};
+
+struct OpRayQueryGetIntersectionFrontFaceKHR
+{
+ OpRayQueryGetIntersectionFrontFaceKHR(const ConstIter &it)
+ {
+ memcpy(this, it.words(), sizeof(*this));
+ }
+ OpRayQueryGetIntersectionFrontFaceKHR(IdResultType resultType, IdResult result, Id rayQuery, Id intersection)
+ : op(Op::RayQueryGetIntersectionFrontFaceKHR)
+ , wordCount(FixedWordSize)
+ {
+ this->resultType = resultType;
+ this->result = result;
+ this->rayQuery = rayQuery;
+ this->intersection = intersection;
+ }
+
+ static constexpr Op OpCode = Op::RayQueryGetIntersectionFrontFaceKHR;
+ static constexpr uint16_t FixedWordSize = 5U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+ Id rayQuery;
+ Id intersection;
+};
+
+struct OpRayQueryGetIntersectionCandidateAABBOpaqueKHR
+{
+ OpRayQueryGetIntersectionCandidateAABBOpaqueKHR(const ConstIter &it)
+ {
+ memcpy(this, it.words(), sizeof(*this));
+ }
+ OpRayQueryGetIntersectionCandidateAABBOpaqueKHR(IdResultType resultType, IdResult result, Id rayQuery)
+ : op(Op::RayQueryGetIntersectionCandidateAABBOpaqueKHR)
+ , wordCount(FixedWordSize)
+ {
+ this->resultType = resultType;
+ this->result = result;
+ this->rayQuery = rayQuery;
+ }
+
+ static constexpr Op OpCode = Op::RayQueryGetIntersectionCandidateAABBOpaqueKHR;
+ static constexpr uint16_t FixedWordSize = 4U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+ Id rayQuery;
+};
+
+struct OpRayQueryGetIntersectionObjectRayDirectionKHR
+{
+ OpRayQueryGetIntersectionObjectRayDirectionKHR(const ConstIter &it)
+ {
+ memcpy(this, it.words(), sizeof(*this));
+ }
+ OpRayQueryGetIntersectionObjectRayDirectionKHR(IdResultType resultType, IdResult result, Id rayQuery, Id intersection)
+ : op(Op::RayQueryGetIntersectionObjectRayDirectionKHR)
+ , wordCount(FixedWordSize)
+ {
+ this->resultType = resultType;
+ this->result = result;
+ this->rayQuery = rayQuery;
+ this->intersection = intersection;
+ }
+
+ static constexpr Op OpCode = Op::RayQueryGetIntersectionObjectRayDirectionKHR;
+ static constexpr uint16_t FixedWordSize = 5U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+ Id rayQuery;
+ Id intersection;
+};
+
+struct OpRayQueryGetIntersectionObjectRayOriginKHR
+{
+ OpRayQueryGetIntersectionObjectRayOriginKHR(const ConstIter &it)
+ {
+ memcpy(this, it.words(), sizeof(*this));
+ }
+ OpRayQueryGetIntersectionObjectRayOriginKHR(IdResultType resultType, IdResult result, Id rayQuery, Id intersection)
+ : op(Op::RayQueryGetIntersectionObjectRayOriginKHR)
+ , wordCount(FixedWordSize)
+ {
+ this->resultType = resultType;
+ this->result = result;
+ this->rayQuery = rayQuery;
+ this->intersection = intersection;
+ }
+
+ static constexpr Op OpCode = Op::RayQueryGetIntersectionObjectRayOriginKHR;
+ static constexpr uint16_t FixedWordSize = 5U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+ Id rayQuery;
+ Id intersection;
+};
+
+struct OpRayQueryGetWorldRayDirectionKHR
+{
+ OpRayQueryGetWorldRayDirectionKHR(const ConstIter &it)
+ {
+ memcpy(this, it.words(), sizeof(*this));
+ }
+ OpRayQueryGetWorldRayDirectionKHR(IdResultType resultType, IdResult result, Id rayQuery)
+ : op(Op::RayQueryGetWorldRayDirectionKHR)
+ , wordCount(FixedWordSize)
+ {
+ this->resultType = resultType;
+ this->result = result;
+ this->rayQuery = rayQuery;
+ }
+
+ static constexpr Op OpCode = Op::RayQueryGetWorldRayDirectionKHR;
+ static constexpr uint16_t FixedWordSize = 4U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+ Id rayQuery;
+};
+
+struct OpRayQueryGetWorldRayOriginKHR
+{
+ OpRayQueryGetWorldRayOriginKHR(const ConstIter &it)
+ {
+ memcpy(this, it.words(), sizeof(*this));
+ }
+ OpRayQueryGetWorldRayOriginKHR(IdResultType resultType, IdResult result, Id rayQuery)
+ : op(Op::RayQueryGetWorldRayOriginKHR)
+ , wordCount(FixedWordSize)
+ {
+ this->resultType = resultType;
+ this->result = result;
+ this->rayQuery = rayQuery;
+ }
+
+ static constexpr Op OpCode = Op::RayQueryGetWorldRayOriginKHR;
+ static constexpr uint16_t FixedWordSize = 4U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+ Id rayQuery;
+};
+
+struct OpRayQueryGetIntersectionObjectToWorldKHR
+{
+ OpRayQueryGetIntersectionObjectToWorldKHR(const ConstIter &it)
+ {
+ memcpy(this, it.words(), sizeof(*this));
+ }
+ OpRayQueryGetIntersectionObjectToWorldKHR(IdResultType resultType, IdResult result, Id rayQuery, Id intersection)
+ : op(Op::RayQueryGetIntersectionObjectToWorldKHR)
+ , wordCount(FixedWordSize)
+ {
+ this->resultType = resultType;
+ this->result = result;
+ this->rayQuery = rayQuery;
+ this->intersection = intersection;
+ }
+
+ static constexpr Op OpCode = Op::RayQueryGetIntersectionObjectToWorldKHR;
+ static constexpr uint16_t FixedWordSize = 5U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+ Id rayQuery;
+ Id intersection;
+};
+
+struct OpRayQueryGetIntersectionWorldToObjectKHR
+{
+ OpRayQueryGetIntersectionWorldToObjectKHR(const ConstIter &it)
+ {
+ memcpy(this, it.words(), sizeof(*this));
+ }
+ OpRayQueryGetIntersectionWorldToObjectKHR(IdResultType resultType, IdResult result, Id rayQuery, Id intersection)
+ : op(Op::RayQueryGetIntersectionWorldToObjectKHR)
+ , wordCount(FixedWordSize)
+ {
+ this->resultType = resultType;
+ this->result = result;
+ this->rayQuery = rayQuery;
+ this->intersection = intersection;
+ }
+
+ static constexpr Op OpCode = Op::RayQueryGetIntersectionWorldToObjectKHR;
+ static constexpr uint16_t FixedWordSize = 5U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+ Id rayQuery;
+ Id intersection;
+};
+
+struct OpAtomicFAddEXT
+{
+ OpAtomicFAddEXT(const ConstIter &it)
+ {
+ memcpy(this, it.words(), sizeof(*this));
+ }
+ OpAtomicFAddEXT(IdResultType resultType, IdResult result, Id pointer, IdScope memory, IdMemorySemantics semantics, Id value)
+ : op(Op::AtomicFAddEXT)
+ , wordCount(FixedWordSize)
+ {
+ this->resultType = resultType;
+ this->result = result;
+ this->pointer = pointer;
+ this->memory = memory;
+ this->semantics = semantics;
+ this->value = value;
+ }
+
+ static constexpr Op OpCode = Op::AtomicFAddEXT;
+ static constexpr uint16_t FixedWordSize = 7U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+ Id pointer;
+ IdScope memory;
+ IdMemorySemantics semantics;
+ Id value;
+};
+
template
inline rdcstr ParamToStr(const std::function &idName, const T &el)
{