mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-09-11 00:05:51 +00:00
Update SPIR-V grammar and generated headers
This commit is contained in:
@@ -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")
|
||||
|
||||
@@ -23,10 +23,11 @@
|
||||
MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
||||
-->
|
||||
<!--
|
||||
This file, spir-v.xml, is the SPIR-V Tool ID and Opcode registry. The
|
||||
canonical version of the registry, together with related schema and
|
||||
This file, spir-v.xml, is the SPIR-V Tool ID, opcode and enumerant registry.
|
||||
The canonical version of the registry, together with related schema and
|
||||
documentation, can be found in the Khronos Registry at
|
||||
http://www.khronos.org/registry/spir-v/
|
||||
include/spirv/spir-v.xml in the master branch at
|
||||
https://github.com/KhronosGroup/SPIRV-Headers
|
||||
-->
|
||||
|
||||
<!-- SECTION: SPIR-V Tool ID Definitions -->
|
||||
@@ -72,32 +73,45 @@
|
||||
<id value="20" vendor="W3C WebGPU Group" tool="WHLSL Shader Translator" comment="https://github.com/gpuweb/WHLSL"/>
|
||||
<id value="21" vendor="Google" tool="Clspv" comment="Contact David Neto, dneto@google.com"/>
|
||||
<id value="22" vendor="Google" tool="MLIR SPIR-V Serializer" comment="Contact Lei Zhang, antiagainst@google.com"/>
|
||||
<unused start="23" end="0xFFFF" comment="Tool ID range reservable for future use by vendors"/>
|
||||
<id value="23" vendor="Google" tool="Tint Compiler" comment="Contact David Neto, dneto@google.com"/>
|
||||
<id value="24" vendor="Google" tool="ANGLE Shader Compiler" comment="Contact Shahbaz Youssefi, syoussefi@google.com"/>
|
||||
<id value="25" vendor="Netease Games" tool="Messiah Shader Compiler" comment="Contact Yuwen Wu, atyuwen@gmail.com"/>
|
||||
<id value="26" vendor="Xenia" tool="Xenia Emulator Microcode Translator" comment="Contact Vitaliy Kuzmin, triang3l@yandex.ru, https://github.com/xenia-project/xenia"/>
|
||||
<unused start="27" end="0xFFFF" comment="Tool ID range reservable for future use by vendors"/>
|
||||
</ids>
|
||||
|
||||
<!-- SECTION: SPIR-V Opcodes and Enumerants -->
|
||||
<!-- Reserve new ranges for vendors in contiguous blocks of 64
|
||||
preceding the "Future use" block below, and modify that block
|
||||
accordingly.
|
||||
|
||||
Each vendor determines the use of values in their own ranges.
|
||||
Vendors are not required to disclose those uses. If the use of a
|
||||
value is included in an extension that is adopted by a Khronos
|
||||
extension or specification, then that value's use may be permanently
|
||||
<!-- Vendors reserve new ranges of:
|
||||
- opcode enumerants in the "opcode" list below, and
|
||||
- non-opcode enumerants in the non-opcodes "enumerant" list below.
|
||||
Both are reserved by contiguous blocks of 64, preceding the given
|
||||
"Future use" blocks.
|
||||
|
||||
SPIR-V background:
|
||||
- SPIR-V currently has well over 30 enums, including the opcode enum
|
||||
- each enum has its own name space, allowing reuse of enumerants
|
||||
- SPIR-V restricts opcode enumerants to 16 bits
|
||||
- all other enums use 32-bit enumerants
|
||||
|
||||
Reservation rules:
|
||||
- opcode reservations ("opcode") are only valid for opcodes
|
||||
- non-opcode reservations ("enumerant") are not valid for opcodes
|
||||
- reservations in the enumerant list are valid for all non-opcode enums
|
||||
- it is simpler to use each non-opcode enumerant for only one purpose
|
||||
but this is left to the discretion of the vendor
|
||||
- all enumerants in a range should be used before allocating a new range
|
||||
(several extensions can use enumerants from the same range)
|
||||
|
||||
Each vendor determines the use of enumerants in the ranges they
|
||||
reserve. Vendors are not required to disclose those uses. If the use
|
||||
of an enumerant is included in an extension that is adopted by a Khronos
|
||||
extension or specification, then that enumerant's use may be permanently
|
||||
fixed as if originally reserved in a Khronos range.
|
||||
|
||||
The SPIR Working Group strongly recommends:
|
||||
- Each value is used for only one purpose.
|
||||
- All values in a range should be used before allocating a new range.
|
||||
For example, to avoid unused gaps in ranges, it is customary for
|
||||
several extensions to use values from the same range.
|
||||
|
||||
The Id type "enum" is a synonym for "opcode".
|
||||
|
||||
Note that SPIR-V restricts opcode values to 16 bits.
|
||||
-->
|
||||
|
||||
<!-- Reserved opcode & enumerant blocks -->
|
||||
<!-- Begin reservations of opcode enumerants -->
|
||||
<ids type="opcode" start="0" end="4095" vendor="Khronos" comment="Reserved opcodes, not available to vendors - see the SPIR-V Specification"/>
|
||||
<ids type="opcode" start="4096" end="4159" vendor="Mesa" comment="Contact TBD"/>
|
||||
<ids type="opcode" start="4160" end="4415" vendor="ARM"/>
|
||||
@@ -112,15 +126,41 @@
|
||||
<ids type="opcode" start="5824" end="5951" vendor="Intel" comment="Contact michael.kinsner@intel.com"/>
|
||||
<ids type="opcode" start="5952" end="6015" vendor="Codeplay" comment="Contact victor@codeplay.com"/>
|
||||
<ids type="opcode" start="6016" end="6079" vendor="Khronos" comment="Contact @tobski"/>
|
||||
<!-- Opcodes & enumerants reservable for future use. To get a block, allocate
|
||||
<ids type="opcode" start="6080" end="6143" vendor="Intel" comment="Contact mariusz.merecki@intel.com"/>
|
||||
<!-- Opcode enumerants to reserve for future use. To get a block, allocate
|
||||
multiples of 64 starting at the lowest available point in this
|
||||
block and add a corresponding <ids> tag immediately above. Make
|
||||
sure to fill in the vendor attribute, and preferably add a contact
|
||||
person/address in a comment attribute. -->
|
||||
|
||||
<!-- Example new block: <ids type="opcode" start="XXXX" end="XXXX+64n-1" vendor="Add vendor" comment="Contact TBD"/> -->
|
||||
<ids type="opcode" start="6144" end="65535" comment="Opcode range reservable for future use by vendors"/>
|
||||
<!-- End reservations of opcodes -->
|
||||
|
||||
<ids type="opcode" start="6080" end="4294967295" comment="Opcode range reservable for future use by vendors"/>
|
||||
|
||||
<!-- Begin reservations of non-opcode enumerants -->
|
||||
<ids type="enumerant" start="0" end="4095" vendor="Khronos" comment="Reserved enumerants, not available to vendors - see the SPIR-V Specification"/>
|
||||
<ids type="enumerant" start="4096" end="4159" vendor="Mesa" comment="Contact TBD"/>
|
||||
<ids type="enumerant" start="4160" end="4415" vendor="ARM"/>
|
||||
<ids type="enumerant" start="4416" end="4479" vendor="Khronos" comment="SPV_ARB_shader_ballot - contact Neil Henning, neil.henning@amd.com"/>
|
||||
<ids type="enumerant" start="4480" end="4991" vendor="Qualcomm" comment="Contact weifengz@qti.qualcomm.com"/>
|
||||
<ids type="enumerant" start="4992" end="5247" vendor="AMD"/>
|
||||
<ids type="enumerant" start="5248" end="5503" vendor="NVIDIA"/>
|
||||
<ids type="enumerant" start="5504" end="5567" vendor="Imagination"/>
|
||||
<ids type="enumerant" start="5568" end="5631" vendor="Intel" comment="Contact ben.ashbaugh@intel.com"/>
|
||||
<ids type="enumerant" start="5632" end="5695" vendor="Google" comment="Contact dneto@google.com"/>
|
||||
<ids type="enumerant" start="5696" end="5823" vendor="Intel" comment="Contact ben.ashbaugh@intel.com"/>
|
||||
<ids type="enumerant" start="5824" end="5951" vendor="Intel" comment="Contact michael.kinsner@intel.com"/>
|
||||
<ids type="enumerant" start="5952" end="6015" vendor="Codeplay" comment="Contact victor@codeplay.com"/>
|
||||
<ids type="enumerant" start="6016" end="6079" vendor="Khronos" comment="Contact @tobski"/>
|
||||
<ids type="enumerant" start="6080" end="6143" vendor="Intel" comment="Contact mariusz.merecki@intel.com"/>
|
||||
<!-- Enumerants to reserve for future use. To get a block, allocate
|
||||
multiples of 64 starting at the lowest available point in this
|
||||
block and add a corresponding <ids> tag immediately above. Make
|
||||
sure to fill in the vendor attribute, and preferably add a contact
|
||||
person/address in a comment attribute. -->
|
||||
<!-- Example new block: <ids type="enumerant" start="XXXX" end="XXXX+64n-1" vendor="Add vendor" comment="Contact TBD"/> -->
|
||||
<ids type="enumerant" start="6144" end="4294967295" comment="Enumerant range reservable for future use by vendors"/>
|
||||
<!-- End reservations of enumerants -->
|
||||
|
||||
|
||||
<!-- SECTION: SPIR-V Loop Control Bit Reservations -->
|
||||
@@ -143,4 +183,22 @@
|
||||
<ids type="LoopControl" start="23" end="30" comment="Unreserved bits reservable for use by vendors"/>
|
||||
<ids type="LoopControl" start="31" end="31" vendor="Khronos" comment="Reserved LoopControl bit, not available to vendors"/>
|
||||
|
||||
|
||||
<!-- SECTION: SPIR-V FP Fast Math Mode Bit Reservations -->
|
||||
<!-- Reserve ranges of bits in the "FP Fast Math Mode" bitfield.
|
||||
Each vendor determines the use of values in their own ranges.
|
||||
Vendors are not required to disclose those uses. If the use of a
|
||||
value is included in an extension that is adopted by a Khronos
|
||||
extension or specification, then that value's use may be permanently
|
||||
fixed as if originally reserved in a Khronos range.
|
||||
The SPIR Working Group strongly recommends:
|
||||
- Each value is used for only one purpose.
|
||||
- All values in a range should be used before allocating a new range.
|
||||
-->
|
||||
|
||||
<!-- Reserved FP fast math mode bits -->
|
||||
<ids type="FPFastMathMode" start="0" end="15" vendor="Khronos" comment="Reserved FPFastMathMode bits, not available to vendors - see the SPIR-V Specification"/>
|
||||
<ids type="FPFastMathMode" start="16" end="17" vendor="Intel" comment="Contact michael.kinsner@intel.com"/>
|
||||
<ids type="FPFastMathMode" start="18" end="31" comment="Unreserved bits reservable for use by vendors"/>
|
||||
|
||||
</registry>
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -2596,6 +2596,7 @@ void ThreadState::StepNext(ShaderDebugState *state, const rdcarray<ThreadState>
|
||||
break;
|
||||
}
|
||||
|
||||
case Op::TerminateInvocation:
|
||||
case Op::Kill:
|
||||
{
|
||||
killed = true;
|
||||
@@ -3082,6 +3083,7 @@ void ThreadState::StepNext(ShaderDebugState *state, const rdcarray<ThreadState>
|
||||
break;
|
||||
}
|
||||
|
||||
case Op::AtomicFAddEXT:
|
||||
case Op::GroupIAddNonUniformAMD:
|
||||
case Op::GroupFAddNonUniformAMD:
|
||||
case Op::GroupFMinNonUniformAMD:
|
||||
@@ -3250,6 +3252,33 @@ void ThreadState::StepNext(ShaderDebugState *state, const rdcarray<ThreadState>
|
||||
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<ThreadState>
|
||||
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());
|
||||
|
||||
@@ -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:
|
||||
{
|
||||
|
||||
@@ -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<rdcstr(rdcspv::Id)> &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<rdcstr(rdcspv::Id)> &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<rdcstr(rdcspv::Id)> &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<void(Id,bool)
|
||||
callback(Id::fromWord(it.word(3)), false);
|
||||
callback(Id::fromWord(it.word(4)), false);
|
||||
break;
|
||||
case rdcspv::Op::TerminateInvocation:
|
||||
break;
|
||||
case rdcspv::Op::SubgroupBallotKHR:
|
||||
callback(Id::fromWord(it.word(1)), false);
|
||||
callback(Id::fromWord(it.word(2)), true);
|
||||
@@ -3631,6 +3811,40 @@ void OpDecoder::ForEachID(const ConstIter &it, const std::function<void(Id,bool)
|
||||
callback(Id::fromWord(it.word(3)), false);
|
||||
callback(Id::fromWord(it.word(4)), false);
|
||||
break;
|
||||
case rdcspv::Op::TypeRayQueryProvisionalKHR:
|
||||
callback(Id::fromWord(it.word(1)), true);
|
||||
break;
|
||||
case rdcspv::Op::RayQueryInitializeKHR:
|
||||
callback(Id::fromWord(it.word(1)), false);
|
||||
callback(Id::fromWord(it.word(2)), false);
|
||||
callback(Id::fromWord(it.word(3)), false);
|
||||
callback(Id::fromWord(it.word(4)), false);
|
||||
callback(Id::fromWord(it.word(5)), false);
|
||||
callback(Id::fromWord(it.word(6)), false);
|
||||
callback(Id::fromWord(it.word(7)), false);
|
||||
callback(Id::fromWord(it.word(8)), false);
|
||||
break;
|
||||
case rdcspv::Op::RayQueryTerminateKHR:
|
||||
callback(Id::fromWord(it.word(1)), false);
|
||||
break;
|
||||
case rdcspv::Op::RayQueryGenerateIntersectionKHR:
|
||||
callback(Id::fromWord(it.word(1)), false);
|
||||
callback(Id::fromWord(it.word(2)), false);
|
||||
break;
|
||||
case rdcspv::Op::RayQueryConfirmIntersectionKHR:
|
||||
callback(Id::fromWord(it.word(1)), false);
|
||||
break;
|
||||
case rdcspv::Op::RayQueryProceedKHR:
|
||||
callback(Id::fromWord(it.word(1)), false);
|
||||
callback(Id::fromWord(it.word(2)), true);
|
||||
callback(Id::fromWord(it.word(3)), false);
|
||||
break;
|
||||
case rdcspv::Op::RayQueryGetIntersectionTypeKHR:
|
||||
callback(Id::fromWord(it.word(1)), false);
|
||||
callback(Id::fromWord(it.word(2)), true);
|
||||
callback(Id::fromWord(it.word(3)), false);
|
||||
callback(Id::fromWord(it.word(4)), false);
|
||||
break;
|
||||
case rdcspv::Op::GroupIAddNonUniformAMD:
|
||||
callback(Id::fromWord(it.word(1)), false);
|
||||
callback(Id::fromWord(it.word(2)), true);
|
||||
@@ -3929,6 +4143,16 @@ void OpDecoder::ForEachID(const ConstIter &it, const std::function<void(Id,bool)
|
||||
callback(Id::fromWord(it.word(3)), false);
|
||||
callback(Id::fromWord(it.word(4)), false);
|
||||
break;
|
||||
case rdcspv::Op::FunctionPointerINTEL:
|
||||
callback(Id::fromWord(it.word(1)), false);
|
||||
callback(Id::fromWord(it.word(2)), true);
|
||||
callback(Id::fromWord(it.word(3)), false);
|
||||
break;
|
||||
case rdcspv::Op::FunctionPointerCallINTEL:
|
||||
callback(Id::fromWord(it.word(1)), false);
|
||||
callback(Id::fromWord(it.word(2)), true);
|
||||
for(size_t i=0; i < size-3; i++) callback(Id::fromWord(it.word(3+i)), false);
|
||||
break;
|
||||
case rdcspv::Op::DecorateString:
|
||||
callback(Id::fromWord(it.word(1)), false);
|
||||
break;
|
||||
@@ -4626,6 +4850,131 @@ void OpDecoder::ForEachID(const ConstIter &it, const std::function<void(Id,bool)
|
||||
callback(Id::fromWord(it.word(2)), true);
|
||||
callback(Id::fromWord(it.word(3)), false);
|
||||
break;
|
||||
case rdcspv::Op::LoopControlINTEL:
|
||||
break;
|
||||
case rdcspv::Op::ReadPipeBlockingINTEL:
|
||||
callback(Id::fromWord(it.word(1)), false);
|
||||
callback(Id::fromWord(it.word(2)), true);
|
||||
callback(Id::fromWord(it.word(3)), false);
|
||||
callback(Id::fromWord(it.word(4)), false);
|
||||
break;
|
||||
case rdcspv::Op::WritePipeBlockingINTEL:
|
||||
callback(Id::fromWord(it.word(1)), false);
|
||||
callback(Id::fromWord(it.word(2)), true);
|
||||
callback(Id::fromWord(it.word(3)), false);
|
||||
callback(Id::fromWord(it.word(4)), false);
|
||||
break;
|
||||
case rdcspv::Op::FPGARegINTEL:
|
||||
callback(Id::fromWord(it.word(1)), false);
|
||||
callback(Id::fromWord(it.word(2)), true);
|
||||
callback(Id::fromWord(it.word(3)), false);
|
||||
callback(Id::fromWord(it.word(4)), false);
|
||||
break;
|
||||
case rdcspv::Op::RayQueryGetRayTMinKHR:
|
||||
callback(Id::fromWord(it.word(1)), false);
|
||||
callback(Id::fromWord(it.word(2)), true);
|
||||
callback(Id::fromWord(it.word(3)), false);
|
||||
break;
|
||||
case rdcspv::Op::RayQueryGetRayFlagsKHR:
|
||||
callback(Id::fromWord(it.word(1)), false);
|
||||
callback(Id::fromWord(it.word(2)), true);
|
||||
callback(Id::fromWord(it.word(3)), false);
|
||||
break;
|
||||
case rdcspv::Op::RayQueryGetIntersectionTKHR:
|
||||
callback(Id::fromWord(it.word(1)), false);
|
||||
callback(Id::fromWord(it.word(2)), true);
|
||||
callback(Id::fromWord(it.word(3)), false);
|
||||
callback(Id::fromWord(it.word(4)), false);
|
||||
break;
|
||||
case rdcspv::Op::RayQueryGetIntersectionInstanceCustomIndexKHR:
|
||||
callback(Id::fromWord(it.word(1)), false);
|
||||
callback(Id::fromWord(it.word(2)), true);
|
||||
callback(Id::fromWord(it.word(3)), false);
|
||||
callback(Id::fromWord(it.word(4)), false);
|
||||
break;
|
||||
case rdcspv::Op::RayQueryGetIntersectionInstanceIdKHR:
|
||||
callback(Id::fromWord(it.word(1)), false);
|
||||
callback(Id::fromWord(it.word(2)), true);
|
||||
callback(Id::fromWord(it.word(3)), false);
|
||||
callback(Id::fromWord(it.word(4)), false);
|
||||
break;
|
||||
case rdcspv::Op::RayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR:
|
||||
callback(Id::fromWord(it.word(1)), false);
|
||||
callback(Id::fromWord(it.word(2)), true);
|
||||
callback(Id::fromWord(it.word(3)), false);
|
||||
callback(Id::fromWord(it.word(4)), false);
|
||||
break;
|
||||
case rdcspv::Op::RayQueryGetIntersectionGeometryIndexKHR:
|
||||
callback(Id::fromWord(it.word(1)), false);
|
||||
callback(Id::fromWord(it.word(2)), true);
|
||||
callback(Id::fromWord(it.word(3)), false);
|
||||
callback(Id::fromWord(it.word(4)), false);
|
||||
break;
|
||||
case rdcspv::Op::RayQueryGetIntersectionPrimitiveIndexKHR:
|
||||
callback(Id::fromWord(it.word(1)), false);
|
||||
callback(Id::fromWord(it.word(2)), true);
|
||||
callback(Id::fromWord(it.word(3)), false);
|
||||
callback(Id::fromWord(it.word(4)), false);
|
||||
break;
|
||||
case rdcspv::Op::RayQueryGetIntersectionBarycentricsKHR:
|
||||
callback(Id::fromWord(it.word(1)), false);
|
||||
callback(Id::fromWord(it.word(2)), true);
|
||||
callback(Id::fromWord(it.word(3)), false);
|
||||
callback(Id::fromWord(it.word(4)), false);
|
||||
break;
|
||||
case rdcspv::Op::RayQueryGetIntersectionFrontFaceKHR:
|
||||
callback(Id::fromWord(it.word(1)), false);
|
||||
callback(Id::fromWord(it.word(2)), true);
|
||||
callback(Id::fromWord(it.word(3)), false);
|
||||
callback(Id::fromWord(it.word(4)), false);
|
||||
break;
|
||||
case rdcspv::Op::RayQueryGetIntersectionCandidateAABBOpaqueKHR:
|
||||
callback(Id::fromWord(it.word(1)), false);
|
||||
callback(Id::fromWord(it.word(2)), true);
|
||||
callback(Id::fromWord(it.word(3)), false);
|
||||
break;
|
||||
case rdcspv::Op::RayQueryGetIntersectionObjectRayDirectionKHR:
|
||||
callback(Id::fromWord(it.word(1)), false);
|
||||
callback(Id::fromWord(it.word(2)), true);
|
||||
callback(Id::fromWord(it.word(3)), false);
|
||||
callback(Id::fromWord(it.word(4)), false);
|
||||
break;
|
||||
case rdcspv::Op::RayQueryGetIntersectionObjectRayOriginKHR:
|
||||
callback(Id::fromWord(it.word(1)), false);
|
||||
callback(Id::fromWord(it.word(2)), true);
|
||||
callback(Id::fromWord(it.word(3)), false);
|
||||
callback(Id::fromWord(it.word(4)), false);
|
||||
break;
|
||||
case rdcspv::Op::RayQueryGetWorldRayDirectionKHR:
|
||||
callback(Id::fromWord(it.word(1)), false);
|
||||
callback(Id::fromWord(it.word(2)), true);
|
||||
callback(Id::fromWord(it.word(3)), false);
|
||||
break;
|
||||
case rdcspv::Op::RayQueryGetWorldRayOriginKHR:
|
||||
callback(Id::fromWord(it.word(1)), false);
|
||||
callback(Id::fromWord(it.word(2)), true);
|
||||
callback(Id::fromWord(it.word(3)), false);
|
||||
break;
|
||||
case rdcspv::Op::RayQueryGetIntersectionObjectToWorldKHR:
|
||||
callback(Id::fromWord(it.word(1)), false);
|
||||
callback(Id::fromWord(it.word(2)), true);
|
||||
callback(Id::fromWord(it.word(3)), false);
|
||||
callback(Id::fromWord(it.word(4)), false);
|
||||
break;
|
||||
case rdcspv::Op::RayQueryGetIntersectionWorldToObjectKHR:
|
||||
callback(Id::fromWord(it.word(1)), false);
|
||||
callback(Id::fromWord(it.word(2)), true);
|
||||
callback(Id::fromWord(it.word(3)), false);
|
||||
callback(Id::fromWord(it.word(4)), false);
|
||||
break;
|
||||
case rdcspv::Op::AtomicFAddEXT:
|
||||
callback(Id::fromWord(it.word(1)), false);
|
||||
callback(Id::fromWord(it.word(2)), true);
|
||||
callback(Id::fromWord(it.word(3)), false);
|
||||
callback(Id::fromWord(it.word(4)), false);
|
||||
callback(Id::fromWord(it.word(5)), false);
|
||||
callback(Id::fromWord(it.word(6)), false);
|
||||
break;
|
||||
case Op::Max: break;
|
||||
}
|
||||
}
|
||||
@@ -6988,6 +7337,12 @@ rdcstr OpDecoder::Disassemble(const ConstIter &it, const std::function<rdcstr(Id
|
||||
ret += "PtrDiff(" + ParamToStr(idName, decoded.operand1) + ", " + ParamToStr(idName, decoded.operand2) + ")";
|
||||
break;
|
||||
}
|
||||
case rdcspv::Op::TerminateInvocation:
|
||||
{
|
||||
OpTerminateInvocation decoded(it);
|
||||
ret += "TerminateInvocation(" ")";
|
||||
break;
|
||||
}
|
||||
case rdcspv::Op::SubgroupBallotKHR:
|
||||
{
|
||||
OpSubgroupBallotKHR decoded(it);
|
||||
@@ -7030,6 +7385,51 @@ rdcstr OpDecoder::Disassemble(const ConstIter &it, const std::function<rdcstr(Id
|
||||
ret += "SubgroupReadInvocationKHR(" + ParamToStr(idName, decoded.value) + ", " + ParamToStr(idName, decoded.index) + ")";
|
||||
break;
|
||||
}
|
||||
case rdcspv::Op::TypeRayQueryProvisionalKHR:
|
||||
{
|
||||
OpTypeRayQueryProvisionalKHR decoded(it);
|
||||
ret += idName(decoded.result) + " = ";
|
||||
ret += "TypeRayQueryProvisionalKHR(" ")";
|
||||
break;
|
||||
}
|
||||
case rdcspv::Op::RayQueryInitializeKHR:
|
||||
{
|
||||
OpRayQueryInitializeKHR decoded(it);
|
||||
ret += "RayQueryInitializeKHR(" + ParamToStr(idName, decoded.rayQuery) + ", " + ParamToStr(idName, decoded.accel) + ", " + ParamToStr(idName, decoded.rayFlags) + ", " + ParamToStr(idName, decoded.cullMask) + ", " + ParamToStr(idName, decoded.rayOrigin) + ", " + ParamToStr(idName, decoded.rayTMin) + ", " + ParamToStr(idName, decoded.rayDirection) + ", " + ParamToStr(idName, decoded.rayTMax) + ")";
|
||||
break;
|
||||
}
|
||||
case rdcspv::Op::RayQueryTerminateKHR:
|
||||
{
|
||||
OpRayQueryTerminateKHR decoded(it);
|
||||
ret += "RayQueryTerminateKHR(" + ParamToStr(idName, decoded.rayQuery) + ")";
|
||||
break;
|
||||
}
|
||||
case rdcspv::Op::RayQueryGenerateIntersectionKHR:
|
||||
{
|
||||
OpRayQueryGenerateIntersectionKHR decoded(it);
|
||||
ret += "RayQueryGenerateIntersectionKHR(" + ParamToStr(idName, decoded.rayQuery) + ", " + ParamToStr(idName, decoded.hitT) + ")";
|
||||
break;
|
||||
}
|
||||
case rdcspv::Op::RayQueryConfirmIntersectionKHR:
|
||||
{
|
||||
OpRayQueryConfirmIntersectionKHR decoded(it);
|
||||
ret += "RayQueryConfirmIntersectionKHR(" + ParamToStr(idName, decoded.rayQuery) + ")";
|
||||
break;
|
||||
}
|
||||
case rdcspv::Op::RayQueryProceedKHR:
|
||||
{
|
||||
OpRayQueryProceedKHR decoded(it);
|
||||
ret += declName(decoded.resultType, decoded.result) + " = ";
|
||||
ret += "RayQueryProceedKHR(" + ParamToStr(idName, decoded.rayQuery) + ")";
|
||||
break;
|
||||
}
|
||||
case rdcspv::Op::RayQueryGetIntersectionTypeKHR:
|
||||
{
|
||||
OpRayQueryGetIntersectionTypeKHR decoded(it);
|
||||
ret += declName(decoded.resultType, decoded.result) + " = ";
|
||||
ret += "RayQueryGetIntersectionTypeKHR(" + ParamToStr(idName, decoded.rayQuery) + ", " + ParamToStr(idName, decoded.intersection) + ")";
|
||||
break;
|
||||
}
|
||||
case rdcspv::Op::GroupIAddNonUniformAMD:
|
||||
{
|
||||
OpGroupIAddNonUniformAMD decoded(it);
|
||||
@@ -7389,6 +7789,20 @@ rdcstr OpDecoder::Disassemble(const ConstIter &it, const std::function<rdcstr(Id
|
||||
ret += "UMul32x16INTEL(" + ParamToStr(idName, decoded.operand1) + ", " + ParamToStr(idName, decoded.operand2) + ")";
|
||||
break;
|
||||
}
|
||||
case rdcspv::Op::FunctionPointerINTEL:
|
||||
{
|
||||
OpFunctionPointerINTEL decoded(it);
|
||||
ret += declName(decoded.resultType, decoded.result) + " = ";
|
||||
ret += "FunctionPointerINTEL(" + ParamToStr(idName, decoded.function) + ")";
|
||||
break;
|
||||
}
|
||||
case rdcspv::Op::FunctionPointerCallINTEL:
|
||||
{
|
||||
OpFunctionPointerCallINTEL decoded(it);
|
||||
ret += declName(decoded.resultType, decoded.result) + " = ";
|
||||
ret += "FunctionPointerCallINTEL(" + ParamsToStr(idName, decoded.operand1) + ")";
|
||||
break;
|
||||
}
|
||||
case rdcspv::Op::DecorateString:
|
||||
{
|
||||
OpDecorateString decoded(it);
|
||||
@@ -8227,6 +8641,159 @@ rdcstr OpDecoder::Disassemble(const ConstIter &it, const std::function<rdcstr(Id
|
||||
ret += "SubgroupAvcSicGetInterRawSadsINTEL(" + ParamToStr(idName, decoded.payload) + ")";
|
||||
break;
|
||||
}
|
||||
case rdcspv::Op::LoopControlINTEL:
|
||||
{
|
||||
OpLoopControlINTEL decoded(it);
|
||||
ret += "LoopControlINTEL(" + ParamsToStr(idName, decoded.loopControlParameters) + ")";
|
||||
break;
|
||||
}
|
||||
case rdcspv::Op::ReadPipeBlockingINTEL:
|
||||
{
|
||||
OpReadPipeBlockingINTEL decoded(it);
|
||||
ret += declName(decoded.resultType, decoded.result) + " = ";
|
||||
ret += "ReadPipeBlockingINTEL(" + ParamToStr(idName, decoded.packetSize) + ", " + ParamToStr(idName, decoded.packetAlignment) + ")";
|
||||
break;
|
||||
}
|
||||
case rdcspv::Op::WritePipeBlockingINTEL:
|
||||
{
|
||||
OpWritePipeBlockingINTEL decoded(it);
|
||||
ret += declName(decoded.resultType, decoded.result) + " = ";
|
||||
ret += "WritePipeBlockingINTEL(" + ParamToStr(idName, decoded.packetSize) + ", " + ParamToStr(idName, decoded.packetAlignment) + ")";
|
||||
break;
|
||||
}
|
||||
case rdcspv::Op::FPGARegINTEL:
|
||||
{
|
||||
OpFPGARegINTEL decoded(it);
|
||||
ret += declName(decoded.resultType, decoded.result0) + ", " + idName(decoded.result1) + " = ";
|
||||
ret += "FPGARegINTEL(" + ParamToStr(idName, decoded.result1) + ", " + ParamToStr(idName, decoded.input) + ")";
|
||||
break;
|
||||
}
|
||||
case rdcspv::Op::RayQueryGetRayTMinKHR:
|
||||
{
|
||||
OpRayQueryGetRayTMinKHR decoded(it);
|
||||
ret += declName(decoded.resultType, decoded.result) + " = ";
|
||||
ret += "RayQueryGetRayTMinKHR(" + ParamToStr(idName, decoded.rayQuery) + ")";
|
||||
break;
|
||||
}
|
||||
case rdcspv::Op::RayQueryGetRayFlagsKHR:
|
||||
{
|
||||
OpRayQueryGetRayFlagsKHR decoded(it);
|
||||
ret += declName(decoded.resultType, decoded.result) + " = ";
|
||||
ret += "RayQueryGetRayFlagsKHR(" + ParamToStr(idName, decoded.rayQuery) + ")";
|
||||
break;
|
||||
}
|
||||
case rdcspv::Op::RayQueryGetIntersectionTKHR:
|
||||
{
|
||||
OpRayQueryGetIntersectionTKHR decoded(it);
|
||||
ret += declName(decoded.resultType, decoded.result) + " = ";
|
||||
ret += "RayQueryGetIntersectionTKHR(" + ParamToStr(idName, decoded.rayQuery) + ", " + ParamToStr(idName, decoded.intersection) + ")";
|
||||
break;
|
||||
}
|
||||
case rdcspv::Op::RayQueryGetIntersectionInstanceCustomIndexKHR:
|
||||
{
|
||||
OpRayQueryGetIntersectionInstanceCustomIndexKHR decoded(it);
|
||||
ret += declName(decoded.resultType, decoded.result) + " = ";
|
||||
ret += "RayQueryGetIntersectionInstanceCustomIndexKHR(" + ParamToStr(idName, decoded.rayQuery) + ", " + ParamToStr(idName, decoded.intersection) + ")";
|
||||
break;
|
||||
}
|
||||
case rdcspv::Op::RayQueryGetIntersectionInstanceIdKHR:
|
||||
{
|
||||
OpRayQueryGetIntersectionInstanceIdKHR decoded(it);
|
||||
ret += declName(decoded.resultType, decoded.result) + " = ";
|
||||
ret += "RayQueryGetIntersectionInstanceIdKHR(" + ParamToStr(idName, decoded.rayQuery) + ", " + ParamToStr(idName, decoded.intersection) + ")";
|
||||
break;
|
||||
}
|
||||
case rdcspv::Op::RayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR:
|
||||
{
|
||||
OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR decoded(it);
|
||||
ret += declName(decoded.resultType, decoded.result) + " = ";
|
||||
ret += "RayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR(" + ParamToStr(idName, decoded.rayQuery) + ", " + ParamToStr(idName, decoded.intersection) + ")";
|
||||
break;
|
||||
}
|
||||
case rdcspv::Op::RayQueryGetIntersectionGeometryIndexKHR:
|
||||
{
|
||||
OpRayQueryGetIntersectionGeometryIndexKHR decoded(it);
|
||||
ret += declName(decoded.resultType, decoded.result) + " = ";
|
||||
ret += "RayQueryGetIntersectionGeometryIndexKHR(" + ParamToStr(idName, decoded.rayQuery) + ", " + ParamToStr(idName, decoded.intersection) + ")";
|
||||
break;
|
||||
}
|
||||
case rdcspv::Op::RayQueryGetIntersectionPrimitiveIndexKHR:
|
||||
{
|
||||
OpRayQueryGetIntersectionPrimitiveIndexKHR decoded(it);
|
||||
ret += declName(decoded.resultType, decoded.result) + " = ";
|
||||
ret += "RayQueryGetIntersectionPrimitiveIndexKHR(" + ParamToStr(idName, decoded.rayQuery) + ", " + ParamToStr(idName, decoded.intersection) + ")";
|
||||
break;
|
||||
}
|
||||
case rdcspv::Op::RayQueryGetIntersectionBarycentricsKHR:
|
||||
{
|
||||
OpRayQueryGetIntersectionBarycentricsKHR decoded(it);
|
||||
ret += declName(decoded.resultType, decoded.result) + " = ";
|
||||
ret += "RayQueryGetIntersectionBarycentricsKHR(" + ParamToStr(idName, decoded.rayQuery) + ", " + ParamToStr(idName, decoded.intersection) + ")";
|
||||
break;
|
||||
}
|
||||
case rdcspv::Op::RayQueryGetIntersectionFrontFaceKHR:
|
||||
{
|
||||
OpRayQueryGetIntersectionFrontFaceKHR decoded(it);
|
||||
ret += declName(decoded.resultType, decoded.result) + " = ";
|
||||
ret += "RayQueryGetIntersectionFrontFaceKHR(" + ParamToStr(idName, decoded.rayQuery) + ", " + ParamToStr(idName, decoded.intersection) + ")";
|
||||
break;
|
||||
}
|
||||
case rdcspv::Op::RayQueryGetIntersectionCandidateAABBOpaqueKHR:
|
||||
{
|
||||
OpRayQueryGetIntersectionCandidateAABBOpaqueKHR decoded(it);
|
||||
ret += declName(decoded.resultType, decoded.result) + " = ";
|
||||
ret += "RayQueryGetIntersectionCandidateAABBOpaqueKHR(" + ParamToStr(idName, decoded.rayQuery) + ")";
|
||||
break;
|
||||
}
|
||||
case rdcspv::Op::RayQueryGetIntersectionObjectRayDirectionKHR:
|
||||
{
|
||||
OpRayQueryGetIntersectionObjectRayDirectionKHR decoded(it);
|
||||
ret += declName(decoded.resultType, decoded.result) + " = ";
|
||||
ret += "RayQueryGetIntersectionObjectRayDirectionKHR(" + ParamToStr(idName, decoded.rayQuery) + ", " + ParamToStr(idName, decoded.intersection) + ")";
|
||||
break;
|
||||
}
|
||||
case rdcspv::Op::RayQueryGetIntersectionObjectRayOriginKHR:
|
||||
{
|
||||
OpRayQueryGetIntersectionObjectRayOriginKHR decoded(it);
|
||||
ret += declName(decoded.resultType, decoded.result) + " = ";
|
||||
ret += "RayQueryGetIntersectionObjectRayOriginKHR(" + ParamToStr(idName, decoded.rayQuery) + ", " + ParamToStr(idName, decoded.intersection) + ")";
|
||||
break;
|
||||
}
|
||||
case rdcspv::Op::RayQueryGetWorldRayDirectionKHR:
|
||||
{
|
||||
OpRayQueryGetWorldRayDirectionKHR decoded(it);
|
||||
ret += declName(decoded.resultType, decoded.result) + " = ";
|
||||
ret += "RayQueryGetWorldRayDirectionKHR(" + ParamToStr(idName, decoded.rayQuery) + ")";
|
||||
break;
|
||||
}
|
||||
case rdcspv::Op::RayQueryGetWorldRayOriginKHR:
|
||||
{
|
||||
OpRayQueryGetWorldRayOriginKHR decoded(it);
|
||||
ret += declName(decoded.resultType, decoded.result) + " = ";
|
||||
ret += "RayQueryGetWorldRayOriginKHR(" + ParamToStr(idName, decoded.rayQuery) + ")";
|
||||
break;
|
||||
}
|
||||
case rdcspv::Op::RayQueryGetIntersectionObjectToWorldKHR:
|
||||
{
|
||||
OpRayQueryGetIntersectionObjectToWorldKHR decoded(it);
|
||||
ret += declName(decoded.resultType, decoded.result) + " = ";
|
||||
ret += "RayQueryGetIntersectionObjectToWorldKHR(" + ParamToStr(idName, decoded.rayQuery) + ", " + ParamToStr(idName, decoded.intersection) + ")";
|
||||
break;
|
||||
}
|
||||
case rdcspv::Op::RayQueryGetIntersectionWorldToObjectKHR:
|
||||
{
|
||||
OpRayQueryGetIntersectionWorldToObjectKHR decoded(it);
|
||||
ret += declName(decoded.resultType, decoded.result) + " = ";
|
||||
ret += "RayQueryGetIntersectionWorldToObjectKHR(" + ParamToStr(idName, decoded.rayQuery) + ", " + ParamToStr(idName, decoded.intersection) + ")";
|
||||
break;
|
||||
}
|
||||
case rdcspv::Op::AtomicFAddEXT:
|
||||
{
|
||||
OpAtomicFAddEXT decoded(it);
|
||||
ret += declName(decoded.resultType, decoded.result) + " = ";
|
||||
ret += "AtomicFAddEXT(" + ParamToStr(idName, decoded.pointer) + ", " + ToStr(Scope(constIntVal(decoded.memory))) + ", " + ToStr(MemorySemantics(constIntVal(decoded.semantics))) + ", " + ParamToStr(idName, decoded.value) + ")";
|
||||
break;
|
||||
}
|
||||
case Op::Max: break;
|
||||
}
|
||||
return ret;
|
||||
@@ -8582,12 +9149,20 @@ OpDecoder::OpDecoder(const ConstIter &it)
|
||||
case rdcspv::Op::PtrEqual: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::PtrNotEqual: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::PtrDiff: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::TerminateInvocation: result = Id(); resultType = Id(); break;
|
||||
case rdcspv::Op::SubgroupBallotKHR: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::SubgroupFirstInvocationKHR: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::SubgroupAllKHR: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::SubgroupAnyKHR: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::SubgroupAllEqualKHR: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::SubgroupReadInvocationKHR: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::TypeRayQueryProvisionalKHR: result = Id::fromWord(it.word(1)); resultType = Id(); break;
|
||||
case rdcspv::Op::RayQueryInitializeKHR: result = Id(); resultType = Id(); break;
|
||||
case rdcspv::Op::RayQueryTerminateKHR: result = Id(); resultType = Id(); break;
|
||||
case rdcspv::Op::RayQueryGenerateIntersectionKHR: result = Id(); resultType = Id(); break;
|
||||
case rdcspv::Op::RayQueryConfirmIntersectionKHR: result = Id(); resultType = Id(); break;
|
||||
case rdcspv::Op::RayQueryProceedKHR: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::RayQueryGetIntersectionTypeKHR: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::GroupIAddNonUniformAMD: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::GroupFAddNonUniformAMD: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::GroupFMinNonUniformAMD: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
@@ -8641,6 +9216,8 @@ OpDecoder::OpDecoder(const ConstIter &it)
|
||||
case rdcspv::Op::USubSatINTEL: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::IMul32x16INTEL: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::UMul32x16INTEL: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::FunctionPointerINTEL: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::FunctionPointerCallINTEL: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::DecorateString: result = Id(); resultType = Id(); break;
|
||||
case rdcspv::Op::MemberDecorateString: result = Id(); resultType = Id(); break;
|
||||
case rdcspv::Op::VmeImageINTEL: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
@@ -8761,6 +9338,28 @@ OpDecoder::OpDecoder(const ConstIter &it)
|
||||
case rdcspv::Op::SubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::SubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::SubgroupAvcSicGetInterRawSadsINTEL: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::LoopControlINTEL: result = Id(); resultType = Id(); break;
|
||||
case rdcspv::Op::ReadPipeBlockingINTEL: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::WritePipeBlockingINTEL: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::FPGARegINTEL: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::RayQueryGetRayTMinKHR: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::RayQueryGetRayFlagsKHR: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::RayQueryGetIntersectionTKHR: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::RayQueryGetIntersectionInstanceCustomIndexKHR: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::RayQueryGetIntersectionInstanceIdKHR: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::RayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::RayQueryGetIntersectionGeometryIndexKHR: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::RayQueryGetIntersectionPrimitiveIndexKHR: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::RayQueryGetIntersectionBarycentricsKHR: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::RayQueryGetIntersectionFrontFaceKHR: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::RayQueryGetIntersectionCandidateAABBOpaqueKHR: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::RayQueryGetIntersectionObjectRayDirectionKHR: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::RayQueryGetIntersectionObjectRayOriginKHR: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::RayQueryGetWorldRayDirectionKHR: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::RayQueryGetWorldRayOriginKHR: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::RayQueryGetIntersectionObjectToWorldKHR: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::RayQueryGetIntersectionWorldToObjectKHR: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case rdcspv::Op::AtomicFAddEXT: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
|
||||
case Op::Max: break;
|
||||
}
|
||||
}
|
||||
@@ -8875,6 +9474,10 @@ rdcstr DoStringise(const rdcspv::Generator &el)
|
||||
STRINGISE_ENUM_CLASS_NAMED(WHLSLShaderTranslator, "WHLSL Shader Translator from W3C WebGPU Group - https://github.com/gpuweb/WHLSL");
|
||||
STRINGISE_ENUM_CLASS_NAMED(Clspv, "Clspv from Google - Contact David Neto, dneto@google.com");
|
||||
STRINGISE_ENUM_CLASS_NAMED(MLIRSPIRVSerializer, "MLIR SPIR-V Serializer from Google - Contact Lei Zhang, antiagainst@google.com");
|
||||
STRINGISE_ENUM_CLASS_NAMED(TintCompiler, "Tint Compiler from Google - Contact David Neto, dneto@google.com");
|
||||
STRINGISE_ENUM_CLASS_NAMED(ANGLEShaderCompiler, "ANGLE Shader Compiler from Google - Contact Shahbaz Youssefi, syoussefi@google.com");
|
||||
STRINGISE_ENUM_CLASS_NAMED(MessiahShaderCompiler, "Messiah Shader Compiler from Netease Games - Contact Yuwen Wu, atyuwen@gmail.com");
|
||||
STRINGISE_ENUM_CLASS_NAMED(XeniaEmulatorMicrocodeTranslator, "Xenia Emulator Microcode Translator from Xenia - Contact Vitaliy Kuzmin, triang3l@yandex.ru, https://github.com/xenia-project/xenia");
|
||||
}
|
||||
END_ENUM_STRINGISE();
|
||||
}
|
||||
|
||||
@@ -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"),
|
||||
@@ -72,7 +72,7 @@ namespace rdcspv
|
||||
static const uint32_t MagicNumber = 0x07230203;
|
||||
static const uint32_t VersionMajor = 1;
|
||||
static const uint32_t VersionMinor = 5;
|
||||
static const uint32_t VersionRevision = 1;
|
||||
static const uint32_t VersionRevision = 3;
|
||||
static const uint32_t VersionPacked = (1 << 16) | (5 << 8);
|
||||
static const uint32_t OpCodeMask = 0xffff;
|
||||
static const uint32_t WordCountShift = 16;
|
||||
@@ -111,6 +111,10 @@ enum class Generator : uint32_t
|
||||
WHLSLShaderTranslator = 20,
|
||||
Clspv = 21,
|
||||
MLIRSPIRVSerializer = 22,
|
||||
TintCompiler = 23,
|
||||
ANGLEShaderCompiler = 24,
|
||||
MessiahShaderCompiler = 25,
|
||||
XeniaEmulatorMicrocodeTranslator = 26,
|
||||
};
|
||||
|
||||
enum class ImageOperands : uint32_t
|
||||
@@ -177,6 +181,13 @@ enum class LoopControl : uint32_t
|
||||
IterationMultiple = 0x0040,
|
||||
PeelCount = 0x0080,
|
||||
PartialCount = 0x0100,
|
||||
InitiationIntervalINTEL = 0x10000,
|
||||
MaxConcurrencyINTEL = 0x20000,
|
||||
DependencyArrayINTEL = 0x40000,
|
||||
PipelineEnableINTEL = 0x80000,
|
||||
LoopCoalesceINTEL = 0x100000,
|
||||
MaxInterleavingINTEL = 0x200000,
|
||||
SpeculatedIterationsINTEL = 0x400000,
|
||||
Max,
|
||||
Invalid = ~0U,
|
||||
};
|
||||
@@ -251,6 +262,37 @@ enum class KernelProfilingInfo : uint32_t
|
||||
|
||||
BITMASK_OPERATORS(KernelProfilingInfo);
|
||||
|
||||
enum class RayFlags : uint32_t
|
||||
{
|
||||
NoneKHR = 0x0000,
|
||||
OpaqueKHR = 0x0001,
|
||||
NoOpaqueKHR = 0x0002,
|
||||
TerminateOnFirstHitKHR = 0x0004,
|
||||
SkipClosestHitShaderKHR = 0x0008,
|
||||
CullBackFacingTrianglesKHR = 0x0010,
|
||||
CullFrontFacingTrianglesKHR = 0x0020,
|
||||
CullOpaqueKHR = 0x0040,
|
||||
CullNoOpaqueKHR = 0x0080,
|
||||
SkipTrianglesKHR = 0x0100,
|
||||
SkipAABBsKHR = 0x0200,
|
||||
Max,
|
||||
Invalid = ~0U,
|
||||
};
|
||||
|
||||
BITMASK_OPERATORS(RayFlags);
|
||||
|
||||
enum class FragmentShadingRate : uint32_t
|
||||
{
|
||||
Vertical2Pixels = 0x0001,
|
||||
Vertical4Pixels = 0x0002,
|
||||
Horizontal2Pixels = 0x0004,
|
||||
Horizontal4Pixels = 0x0008,
|
||||
Max,
|
||||
Invalid = ~0U,
|
||||
};
|
||||
|
||||
BITMASK_OPERATORS(FragmentShadingRate);
|
||||
|
||||
enum class SourceLanguage : uint32_t
|
||||
{
|
||||
Unknown = 0,
|
||||
@@ -275,11 +317,17 @@ enum class ExecutionModel : uint32_t
|
||||
TaskNV = 5267,
|
||||
MeshNV = 5268,
|
||||
RayGenerationNV = 5313,
|
||||
RayGenerationKHR = 5313,
|
||||
IntersectionNV = 5314,
|
||||
IntersectionKHR = 5314,
|
||||
AnyHitNV = 5315,
|
||||
AnyHitKHR = 5315,
|
||||
ClosestHitNV = 5316,
|
||||
ClosestHitKHR = 5316,
|
||||
MissNV = 5317,
|
||||
MissKHR = 5317,
|
||||
CallableNV = 5318,
|
||||
CallableKHR = 5318,
|
||||
Max,
|
||||
Invalid = ~0U,
|
||||
};
|
||||
@@ -364,6 +412,10 @@ enum class ExecutionMode : uint32_t
|
||||
SampleInterlockUnorderedEXT = 5369,
|
||||
ShadingRateInterlockOrderedEXT = 5370,
|
||||
ShadingRateInterlockUnorderedEXT = 5371,
|
||||
MaxWorkgroupSizeINTEL = 5893,
|
||||
MaxWorkDimINTEL = 5894,
|
||||
NoGlobalOffsetINTEL = 5895,
|
||||
NumSIMDWorkitemsINTEL = 5896,
|
||||
Max,
|
||||
Invalid = ~0U,
|
||||
};
|
||||
@@ -384,13 +436,20 @@ enum class StorageClass : uint32_t
|
||||
Image = 11,
|
||||
StorageBuffer = 12,
|
||||
CallableDataNV = 5328,
|
||||
CallableDataKHR = 5328,
|
||||
IncomingCallableDataNV = 5329,
|
||||
IncomingCallableDataKHR = 5329,
|
||||
RayPayloadNV = 5338,
|
||||
RayPayloadKHR = 5338,
|
||||
HitAttributeNV = 5339,
|
||||
HitAttributeKHR = 5339,
|
||||
IncomingRayPayloadNV = 5342,
|
||||
IncomingRayPayloadKHR = 5342,
|
||||
ShaderRecordBufferNV = 5343,
|
||||
ShaderRecordBufferKHR = 5343,
|
||||
PhysicalStorageBuffer = 5349,
|
||||
PhysicalStorageBufferEXT = 5349,
|
||||
CodeSectionINTEL = 5605,
|
||||
Max,
|
||||
Invalid = ~0U,
|
||||
};
|
||||
@@ -469,6 +528,8 @@ enum class ImageFormat : uint32_t
|
||||
Rg8ui = 37,
|
||||
R16ui = 38,
|
||||
R8ui = 39,
|
||||
R64ui = 40,
|
||||
R64i = 41,
|
||||
Max,
|
||||
Invalid = ~0U,
|
||||
};
|
||||
@@ -629,11 +690,24 @@ enum class Decoration : uint32_t
|
||||
RestrictPointerEXT = 5355,
|
||||
AliasedPointer = 5356,
|
||||
AliasedPointerEXT = 5356,
|
||||
ReferencedIndirectlyINTEL = 5602,
|
||||
CounterBuffer = 5634,
|
||||
HlslCounterBufferGOOGLE = 5634,
|
||||
UserSemantic = 5635,
|
||||
HlslSemanticGOOGLE = 5635,
|
||||
UserTypeGOOGLE = 5636,
|
||||
RegisterINTEL = 5825,
|
||||
MemoryINTEL = 5826,
|
||||
NumbanksINTEL = 5827,
|
||||
BankwidthINTEL = 5828,
|
||||
MaxPrivateCopiesINTEL = 5829,
|
||||
SinglepumpINTEL = 5830,
|
||||
DoublepumpINTEL = 5831,
|
||||
MaxReplicatesINTEL = 5832,
|
||||
SimpleDualPortINTEL = 5833,
|
||||
MergeINTEL = 5834,
|
||||
BankBitsINTEL = 5835,
|
||||
ForcePow2DepthINTEL = 5836,
|
||||
Max,
|
||||
Invalid = ~0U,
|
||||
};
|
||||
@@ -694,8 +768,10 @@ enum class BuiltIn : uint32_t
|
||||
BaseVertex = 4424,
|
||||
BaseInstance = 4425,
|
||||
DrawIndex = 4426,
|
||||
PrimitiveShadingRateKHR = 4432,
|
||||
DeviceIndex = 4438,
|
||||
ViewIndex = 4440,
|
||||
ShadingRateKHR = 4444,
|
||||
BaryCoordNoPerspAMD = 4992,
|
||||
BaryCoordNoPerspCentroidAMD = 4993,
|
||||
BaryCoordNoPerspSampleAMD = 4994,
|
||||
@@ -725,19 +801,34 @@ enum class BuiltIn : uint32_t
|
||||
FragInvocationCountEXT = 5293,
|
||||
InvocationsPerPixelNV = 5293,
|
||||
LaunchIdNV = 5319,
|
||||
LaunchIdKHR = 5319,
|
||||
LaunchSizeNV = 5320,
|
||||
LaunchSizeKHR = 5320,
|
||||
WorldRayOriginNV = 5321,
|
||||
WorldRayOriginKHR = 5321,
|
||||
WorldRayDirectionNV = 5322,
|
||||
WorldRayDirectionKHR = 5322,
|
||||
ObjectRayOriginNV = 5323,
|
||||
ObjectRayOriginKHR = 5323,
|
||||
ObjectRayDirectionNV = 5324,
|
||||
ObjectRayDirectionKHR = 5324,
|
||||
RayTminNV = 5325,
|
||||
RayTminKHR = 5325,
|
||||
RayTmaxNV = 5326,
|
||||
RayTmaxKHR = 5326,
|
||||
InstanceCustomIndexNV = 5327,
|
||||
InstanceCustomIndexKHR = 5327,
|
||||
ObjectToWorldNV = 5330,
|
||||
ObjectToWorldKHR = 5330,
|
||||
WorldToObjectNV = 5331,
|
||||
WorldToObjectKHR = 5331,
|
||||
HitTNV = 5332,
|
||||
HitTKHR = 5332,
|
||||
HitKindNV = 5333,
|
||||
HitKindKHR = 5333,
|
||||
IncomingRayFlagsNV = 5351,
|
||||
IncomingRayFlagsKHR = 5351,
|
||||
RayGeometryIndexKHR = 5352,
|
||||
WarpsPerSMNV = 5374,
|
||||
SMCountNV = 5375,
|
||||
WarpIDNV = 5376,
|
||||
@@ -755,6 +846,7 @@ enum class Scope : uint32_t
|
||||
Invocation = 4,
|
||||
QueueFamily = 5,
|
||||
QueueFamilyKHR = 5,
|
||||
ShaderCallKHR = 6,
|
||||
Max,
|
||||
Invalid = ~0U,
|
||||
};
|
||||
@@ -852,6 +944,7 @@ enum class Capability : uint32_t
|
||||
GroupNonUniformQuad = 68,
|
||||
ShaderLayer = 69,
|
||||
ShaderViewportIndex = 70,
|
||||
FragmentShadingRateKHR = 4422,
|
||||
SubgroupBallotKHR = 4423,
|
||||
DrawParameters = 4427,
|
||||
SubgroupVoteKHR = 4431,
|
||||
@@ -875,11 +968,14 @@ enum class Capability : uint32_t
|
||||
SignedZeroInfNanPreserve = 4466,
|
||||
RoundingModeRTE = 4467,
|
||||
RoundingModeRTZ = 4468,
|
||||
RayQueryProvisionalKHR = 4471,
|
||||
RayTraversalPrimitiveCullingProvisionalKHR = 4478,
|
||||
Float16ImageAMD = 5008,
|
||||
ImageGatherBiasLodAMD = 5009,
|
||||
FragmentMaskAMD = 5010,
|
||||
StencilExportEXT = 5013,
|
||||
ImageReadWriteLodAMD = 5015,
|
||||
Int64ImageEXT = 5016,
|
||||
ShaderClockKHR = 5055,
|
||||
SampleMaskOverrideCoverageNV = 5249,
|
||||
GeometryShaderPassthroughNV = 5251,
|
||||
@@ -928,6 +1024,7 @@ enum class Capability : uint32_t
|
||||
PhysicalStorageBufferAddresses = 5347,
|
||||
PhysicalStorageBufferAddressesEXT = 5347,
|
||||
ComputeDerivativeGroupLinearNV = 5350,
|
||||
RayTracingProvisionalKHR = 5353,
|
||||
CooperativeMatrixNV = 5357,
|
||||
FragmentShaderSampleInterlockEXT = 5363,
|
||||
FragmentShaderShadingRateInterlockEXT = 5372,
|
||||
@@ -939,9 +1036,45 @@ enum class Capability : uint32_t
|
||||
SubgroupImageBlockIOINTEL = 5570,
|
||||
SubgroupImageMediaBlockIOINTEL = 5579,
|
||||
IntegerFunctions2INTEL = 5584,
|
||||
FunctionPointersINTEL = 5603,
|
||||
IndirectReferencesINTEL = 5604,
|
||||
SubgroupAvcMotionEstimationINTEL = 5696,
|
||||
SubgroupAvcMotionEstimationIntraINTEL = 5697,
|
||||
SubgroupAvcMotionEstimationChromaINTEL = 5698,
|
||||
FPGAMemoryAttributesINTEL = 5824,
|
||||
UnstructuredLoopControlsINTEL = 5886,
|
||||
FPGALoopControlsINTEL = 5888,
|
||||
KernelAttributesINTEL = 5892,
|
||||
FPGAKernelAttributesINTEL = 5897,
|
||||
BlockingPipesINTEL = 5945,
|
||||
FPGARegINTEL = 5948,
|
||||
AtomicFloat32AddEXT = 6033,
|
||||
AtomicFloat64AddEXT = 6034,
|
||||
Max,
|
||||
Invalid = ~0U,
|
||||
};
|
||||
|
||||
enum class RayQueryIntersection : uint32_t
|
||||
{
|
||||
RayQueryCandidateIntersectionKHR = 0,
|
||||
RayQueryCommittedIntersectionKHR = 1,
|
||||
Max,
|
||||
Invalid = ~0U,
|
||||
};
|
||||
|
||||
enum class RayQueryCommittedIntersectionType : uint32_t
|
||||
{
|
||||
RayQueryCommittedIntersectionNoneKHR = 0,
|
||||
RayQueryCommittedIntersectionTriangleKHR = 1,
|
||||
RayQueryCommittedIntersectionGeneratedKHR = 2,
|
||||
Max,
|
||||
Invalid = ~0U,
|
||||
};
|
||||
|
||||
enum class RayQueryCandidateIntersectionType : uint32_t
|
||||
{
|
||||
RayQueryCandidateIntersectionTriangleKHR = 0,
|
||||
RayQueryCandidateIntersectionAABBKHR = 1,
|
||||
Max,
|
||||
Invalid = ~0U,
|
||||
};
|
||||
@@ -1029,6 +1162,13 @@ struct LoopControlAndParamDatas
|
||||
uint32_t iterationMultiple;
|
||||
uint32_t peelCount;
|
||||
uint32_t partialCount;
|
||||
uint32_t initiationIntervalINTEL;
|
||||
uint32_t maxConcurrencyINTEL;
|
||||
uint32_t dependencyArrayINTEL;
|
||||
uint32_t pipelineEnableINTEL;
|
||||
uint32_t loopCoalesceINTEL;
|
||||
uint32_t maxInterleavingINTEL;
|
||||
uint32_t speculatedIterationsINTEL;
|
||||
|
||||
operator LoopControl() const { return flags; }
|
||||
bool operator &(const LoopControl v) const { return bool(flags & v); }
|
||||
@@ -1052,6 +1192,20 @@ struct LoopControlAndParamDatas
|
||||
void unsetPeelCount() { flags &= ~LoopControl::PeelCount; }
|
||||
void setPartialCount(uint32_t partialCountParam) { flags |= LoopControl::PartialCount; partialCount = partialCountParam; }
|
||||
void unsetPartialCount() { flags &= ~LoopControl::PartialCount; }
|
||||
void setInitiationIntervalINTEL(uint32_t initiationIntervalINTELParam) { flags |= LoopControl::InitiationIntervalINTEL; initiationIntervalINTEL = initiationIntervalINTELParam; }
|
||||
void unsetInitiationIntervalINTEL() { flags &= ~LoopControl::InitiationIntervalINTEL; }
|
||||
void setMaxConcurrencyINTEL(uint32_t maxConcurrencyINTELParam) { flags |= LoopControl::MaxConcurrencyINTEL; maxConcurrencyINTEL = maxConcurrencyINTELParam; }
|
||||
void unsetMaxConcurrencyINTEL() { flags &= ~LoopControl::MaxConcurrencyINTEL; }
|
||||
void setDependencyArrayINTEL(uint32_t dependencyArrayINTELParam) { flags |= LoopControl::DependencyArrayINTEL; dependencyArrayINTEL = dependencyArrayINTELParam; }
|
||||
void unsetDependencyArrayINTEL() { flags &= ~LoopControl::DependencyArrayINTEL; }
|
||||
void setPipelineEnableINTEL(uint32_t pipelineEnableINTELParam) { flags |= LoopControl::PipelineEnableINTEL; pipelineEnableINTEL = pipelineEnableINTELParam; }
|
||||
void unsetPipelineEnableINTEL() { flags &= ~LoopControl::PipelineEnableINTEL; }
|
||||
void setLoopCoalesceINTEL(uint32_t loopCoalesceINTELParam) { flags |= LoopControl::LoopCoalesceINTEL; loopCoalesceINTEL = loopCoalesceINTELParam; }
|
||||
void unsetLoopCoalesceINTEL() { flags &= ~LoopControl::LoopCoalesceINTEL; }
|
||||
void setMaxInterleavingINTEL(uint32_t maxInterleavingINTELParam) { flags |= LoopControl::MaxInterleavingINTEL; maxInterleavingINTEL = maxInterleavingINTELParam; }
|
||||
void unsetMaxInterleavingINTEL() { flags &= ~LoopControl::MaxInterleavingINTEL; }
|
||||
void setSpeculatedIterationsINTEL(uint32_t speculatedIterationsINTELParam) { flags |= LoopControl::SpeculatedIterationsINTEL; speculatedIterationsINTEL = speculatedIterationsINTELParam; }
|
||||
void unsetSpeculatedIterationsINTEL() { flags &= ~LoopControl::SpeculatedIterationsINTEL; }
|
||||
};
|
||||
|
||||
struct MemoryAccessAndParamDatas
|
||||
@@ -1109,6 +1263,13 @@ struct LocalSizeIdParams
|
||||
Id zsize;
|
||||
};
|
||||
|
||||
struct MaxWorkgroupSizeINTELParams
|
||||
{
|
||||
uint32_t max_x_size;
|
||||
uint32_t max_y_size;
|
||||
uint32_t max_z_size;
|
||||
};
|
||||
|
||||
struct ExecutionModeAndParamData
|
||||
{
|
||||
ExecutionModeAndParamData(ExecutionMode v = ExecutionMode::Invalid) : value(v) {}
|
||||
@@ -1131,6 +1292,9 @@ struct ExecutionModeAndParamData
|
||||
uint32_t roundingModeRTE;
|
||||
uint32_t roundingModeRTZ;
|
||||
uint32_t outputPrimitivesNV;
|
||||
MaxWorkgroupSizeINTELParams maxWorkgroupSizeINTEL;
|
||||
uint32_t maxWorkDimINTEL;
|
||||
uint32_t numSIMDWorkitemsINTEL;
|
||||
};
|
||||
|
||||
operator ExecutionMode() const { return value; }
|
||||
@@ -1168,6 +1332,12 @@ struct DecorationAndParamData
|
||||
uint32_t secondaryViewportRelativeNV;
|
||||
Id counterBuffer;
|
||||
Id hlslCounterBufferGOOGLE;
|
||||
uint32_t numbanksINTEL;
|
||||
uint32_t bankwidthINTEL;
|
||||
uint32_t maxPrivateCopiesINTEL;
|
||||
uint32_t maxReplicatesINTEL;
|
||||
uint32_t bankBitsINTEL;
|
||||
uint32_t forcePow2DepthINTEL;
|
||||
};
|
||||
|
||||
operator Decoration() const { return value; }
|
||||
@@ -1520,12 +1690,20 @@ enum class Op : uint16_t
|
||||
PtrEqual = 401,
|
||||
PtrNotEqual = 402,
|
||||
PtrDiff = 403,
|
||||
TerminateInvocation = 4416,
|
||||
SubgroupBallotKHR = 4421,
|
||||
SubgroupFirstInvocationKHR = 4422,
|
||||
SubgroupAllKHR = 4428,
|
||||
SubgroupAnyKHR = 4429,
|
||||
SubgroupAllEqualKHR = 4430,
|
||||
SubgroupReadInvocationKHR = 4432,
|
||||
TypeRayQueryProvisionalKHR = 4472,
|
||||
RayQueryInitializeKHR = 4473,
|
||||
RayQueryTerminateKHR = 4474,
|
||||
RayQueryGenerateIntersectionKHR = 4475,
|
||||
RayQueryConfirmIntersectionKHR = 4476,
|
||||
RayQueryProceedKHR = 4477,
|
||||
RayQueryGetIntersectionTypeKHR = 4479,
|
||||
GroupIAddNonUniformAMD = 5000,
|
||||
GroupFAddNonUniformAMD = 5001,
|
||||
GroupFMinNonUniformAMD = 5002,
|
||||
@@ -1541,11 +1719,17 @@ enum class Op : uint16_t
|
||||
GroupNonUniformPartitionNV = 5296,
|
||||
WritePackedPrimitiveIndices4x8NV = 5299,
|
||||
ReportIntersectionNV = 5334,
|
||||
ReportIntersectionKHR = 5334,
|
||||
IgnoreIntersectionNV = 5335,
|
||||
IgnoreIntersectionKHR = 5335,
|
||||
TerminateRayNV = 5336,
|
||||
TerminateRayKHR = 5336,
|
||||
TraceNV = 5337,
|
||||
TraceRayKHR = 5337,
|
||||
TypeAccelerationStructureNV = 5341,
|
||||
TypeAccelerationStructureKHR = 5341,
|
||||
ExecuteCallableNV = 5344,
|
||||
ExecuteCallableKHR = 5344,
|
||||
TypeCooperativeMatrixNV = 5358,
|
||||
CooperativeMatrixLoadNV = 5359,
|
||||
CooperativeMatrixStoreNV = 5360,
|
||||
@@ -1579,6 +1763,8 @@ enum class Op : uint16_t
|
||||
USubSatINTEL = 5596,
|
||||
IMul32x16INTEL = 5597,
|
||||
UMul32x16INTEL = 5598,
|
||||
FunctionPointerINTEL = 5600,
|
||||
FunctionPointerCallINTEL = 5601,
|
||||
DecorateString = 5632,
|
||||
DecorateStringGOOGLE = 5632,
|
||||
MemberDecorateString = 5633,
|
||||
@@ -1701,6 +1887,28 @@ enum class Op : uint16_t
|
||||
SubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL = 5814,
|
||||
SubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL = 5815,
|
||||
SubgroupAvcSicGetInterRawSadsINTEL = 5816,
|
||||
LoopControlINTEL = 5887,
|
||||
ReadPipeBlockingINTEL = 5946,
|
||||
WritePipeBlockingINTEL = 5947,
|
||||
FPGARegINTEL = 5949,
|
||||
RayQueryGetRayTMinKHR = 6016,
|
||||
RayQueryGetRayFlagsKHR = 6017,
|
||||
RayQueryGetIntersectionTKHR = 6018,
|
||||
RayQueryGetIntersectionInstanceCustomIndexKHR = 6019,
|
||||
RayQueryGetIntersectionInstanceIdKHR = 6020,
|
||||
RayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR = 6021,
|
||||
RayQueryGetIntersectionGeometryIndexKHR = 6022,
|
||||
RayQueryGetIntersectionPrimitiveIndexKHR = 6023,
|
||||
RayQueryGetIntersectionBarycentricsKHR = 6024,
|
||||
RayQueryGetIntersectionFrontFaceKHR = 6025,
|
||||
RayQueryGetIntersectionCandidateAABBOpaqueKHR = 6026,
|
||||
RayQueryGetIntersectionObjectRayDirectionKHR = 6027,
|
||||
RayQueryGetIntersectionObjectRayOriginKHR = 6028,
|
||||
RayQueryGetWorldRayDirectionKHR = 6029,
|
||||
RayQueryGetWorldRayOriginKHR = 6030,
|
||||
RayQueryGetIntersectionObjectToWorldKHR = 6031,
|
||||
RayQueryGetIntersectionWorldToObjectKHR = 6032,
|
||||
AtomicFAddEXT = 6035,
|
||||
|
||||
Max,
|
||||
};
|
||||
@@ -1807,6 +2015,8 @@ DECLARE_STRINGISE_TYPE(rdcspv::FunctionControl);
|
||||
DECLARE_STRINGISE_TYPE(rdcspv::MemorySemantics);
|
||||
DECLARE_STRINGISE_TYPE(rdcspv::MemoryAccess);
|
||||
DECLARE_STRINGISE_TYPE(rdcspv::KernelProfilingInfo);
|
||||
DECLARE_STRINGISE_TYPE(rdcspv::RayFlags);
|
||||
DECLARE_STRINGISE_TYPE(rdcspv::FragmentShadingRate);
|
||||
DECLARE_STRINGISE_TYPE(rdcspv::SourceLanguage);
|
||||
DECLARE_STRINGISE_TYPE(rdcspv::ExecutionModel);
|
||||
DECLARE_STRINGISE_TYPE(rdcspv::AddressingModel);
|
||||
@@ -1829,3 +2039,6 @@ DECLARE_STRINGISE_TYPE(rdcspv::Scope);
|
||||
DECLARE_STRINGISE_TYPE(rdcspv::GroupOperation);
|
||||
DECLARE_STRINGISE_TYPE(rdcspv::KernelEnqueueFlags);
|
||||
DECLARE_STRINGISE_TYPE(rdcspv::Capability);
|
||||
DECLARE_STRINGISE_TYPE(rdcspv::RayQueryIntersection);
|
||||
DECLARE_STRINGISE_TYPE(rdcspv::RayQueryCommittedIntersectionType);
|
||||
DECLARE_STRINGISE_TYPE(rdcspv::RayQueryCandidateIntersectionType);
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user