Commit e7b7d572 by Alexis Hetu

Squashed 'third_party/SPIRV-Headers/' changes from 979924c8b..7845730ca

7845730ca Bump revision to 4, for SPIR-V 1.5. 05836bdba Add SPV_EXT_shader_image_int64 (#170) be32cb6c8 Added SPV_KHR_fragment_shading_rate (#172) c43a43c7c Register the Xenia emulator as a generator (#171) d4e76fb32 Register the Messiah SPIR-V CodeGen (#169) 060627f0b Register the ANGLE compiler (#168) 03a842f95 Rebuild of latest headers, which slightly moves OpTerminateInvocation 3fdabd0da Reserve SPIR-V token range for upcoming Intel extensions. (#165) 5538bf438 Update BUILD.bazel and BUILD.gn (#166) 96013f32b Publish the headers for the clspv embedded reflection non-semantic extended instruction set (#164) 76afa6397 Update the registry in spir-v.xml to modernize and split out opcodes. (#156) git-subtree-dir: third_party/SPIRV-Headers git-subtree-split: 7845730cab6ebbdeb621e7349b7dc1a59c3377be
parent 91f0d257
...@@ -71,6 +71,46 @@ filegroup( ...@@ -71,6 +71,46 @@ filegroup(
srcs = ["include/spirv/spir-v.xml"], srcs = ["include/spirv/spir-v.xml"],
) )
filegroup(
name = "spirv_ext_inst_debuginfo_grammar_unified1",
srcs = ["include/spirv/unified1/extinst.debuginfo.grammar.json"],
)
filegroup(
name = "spirv_ext_inst_nonsemantic_clspvreflection_grammar_unified1",
srcs = ["include/spirv/unified1/extinst.nonsemantic.clspvreflection.grammar.json"],
)
filegroup(
name = "spirv_ext_inst_nonsemantic_debugprintf_grammar_unified1",
srcs = ["include/spirv/unified1/extinst.nonsemantic.debugprintf.grammar.json"],
)
filegroup(
name = "spirv_ext_inst_opencl_debuginfo_100_grammar_unified1",
srcs = ["include/spirv/unified1/extinst.opencl.debuginfo.100.grammar.json"],
)
filegroup(
name = "spirv_ext_inst_spv_amd_gcn_shader_grammar_unified1",
srcs = ["include/spirv/unified1/extinst.spv-amd-gcn-shader.grammar.json"],
)
filegroup(
name = "spirv_ext_inst_spv_amd_shader_ballot_grammar_unified1",
srcs = ["include/spirv/unified1/extinst.spv-amd-shader-ballot.grammar.json"],
)
filegroup(
name = "spirv_ext_inst_spv_amd_shader_explicit_vertex_parameter_grammar_unified1",
srcs = ["include/spirv/unified1/extinst.spv-amd-shader-explicit-vertex-parameter.grammar.json"],
)
filegroup(
name = "spirv_ext_inst_spv_amd_shader_trinary_minmax_grammar_unified1",
srcs = ["include/spirv/unified1/extinst.spv-amd-shader-trinary-minmax.grammar.json"],
)
cc_library( cc_library(
name = "spirv_common_headers", name = "spirv_common_headers",
hdrs = [ hdrs = [
...@@ -81,6 +121,7 @@ cc_library( ...@@ -81,6 +121,7 @@ cc_library(
"include/spirv/1.2/GLSL.std.450.h", "include/spirv/1.2/GLSL.std.450.h",
"include/spirv/1.2/OpenCL.std.h", "include/spirv/1.2/OpenCL.std.h",
"include/spirv/unified1/GLSL.std.450.h", "include/spirv/unified1/GLSL.std.450.h",
"include/spirv/unified1/NonSemanticClspvReflection.h",
"include/spirv/unified1/NonSemanticDebugPrintf.h", "include/spirv/unified1/NonSemanticDebugPrintf.h",
"include/spirv/unified1/OpenCL.std.h", "include/spirv/unified1/OpenCL.std.h",
], ],
......
...@@ -33,6 +33,7 @@ source_set("spv_headers") { ...@@ -33,6 +33,7 @@ source_set("spv_headers") {
"include/spirv/1.2/spirv.h", "include/spirv/1.2/spirv.h",
"include/spirv/1.2/spirv.hpp", "include/spirv/1.2/spirv.hpp",
"include/spirv/unified1/GLSL.std.450.h", "include/spirv/unified1/GLSL.std.450.h",
"include/spirv/unified1/NonSemanticClspvReflection.h",
"include/spirv/unified1/NonSemanticDebugPrintf.h", "include/spirv/unified1/NonSemanticDebugPrintf.h",
"include/spirv/unified1/OpenCL.std.h", "include/spirv/unified1/OpenCL.std.h",
"include/spirv/unified1/spirv.h", "include/spirv/unified1/spirv.h",
......
...@@ -23,10 +23,11 @@ ...@@ -23,10 +23,11 @@
MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. 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 This file, spir-v.xml, is the SPIR-V Tool ID, opcode and enumerant registry.
canonical version of the registry, together with related schema and The canonical version of the registry, together with related schema and
documentation, can be found in the Khronos Registry at 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 --> <!-- SECTION: SPIR-V Tool ID Definitions -->
...@@ -73,32 +74,44 @@ ...@@ -73,32 +74,44 @@
<id value="21" vendor="Google" tool="Clspv" comment="Contact David Neto, dneto@google.com"/> <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"/> <id value="22" vendor="Google" tool="MLIR SPIR-V Serializer" comment="Contact Lei Zhang, antiagainst@google.com"/>
<id value="23" vendor="Google" tool="Tint Compiler" comment="Contact David Neto, dneto@google.com"/> <id value="23" vendor="Google" tool="Tint Compiler" comment="Contact David Neto, dneto@google.com"/>
<unused start="24" end="0xFFFF" comment="Tool ID range reservable for future use by vendors"/> <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> </ids>
<!-- SECTION: SPIR-V Opcodes and Enumerants --> <!-- 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 reserve new ranges of:
Vendors are not required to disclose those uses. If the use of a - opcode enumerants in the "opcode" list below, and
value is included in an extension that is adopted by a Khronos - non-opcode enumerants in the non-opcodes "enumerant" list below.
extension or specification, then that value's use may be permanently 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. 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="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="4096" end="4159" vendor="Mesa" comment="Contact TBD"/>
<ids type="opcode" start="4160" end="4415" vendor="ARM"/> <ids type="opcode" start="4160" end="4415" vendor="ARM"/>
...@@ -113,15 +126,41 @@ ...@@ -113,15 +126,41 @@
<ids type="opcode" start="5824" end="5951" vendor="Intel" comment="Contact michael.kinsner@intel.com"/> <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="5952" end="6015" vendor="Codeplay" comment="Contact victor@codeplay.com"/>
<ids type="opcode" start="6016" end="6079" vendor="Khronos" comment="Contact @tobski"/> <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 multiples of 64 starting at the lowest available point in this
block and add a corresponding <ids> tag immediately above. Make block and add a corresponding <ids> tag immediately above. Make
sure to fill in the vendor attribute, and preferably add a contact sure to fill in the vendor attribute, and preferably add a contact
person/address in a comment attribute. --> person/address in a comment attribute. -->
<!-- Example new block: <ids type="opcode" start="XXXX" end="XXXX+64n-1" vendor="Add vendor" comment="Contact TBD"/> --> <!-- 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"/>
<ids type="opcode" start="6080" end="4294967295" comment="Opcode range reservable for future use by vendors"/> <!-- End reservations of opcodes -->
<!-- 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 --> <!-- SECTION: SPIR-V Loop Control Bit Reservations -->
......
// Copyright (c) 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"), to deal in the Materials without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Materials, and to
// permit persons to whom the Materials are furnished to do so, subject to
// the following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Materials.
//
// MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS
// KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS
// SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT
// https://www.khronos.org/registry/
//
// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
// MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
//
#ifndef SPIRV_UNIFIED1_NonSemanticClspvReflection_H_
#define SPIRV_UNIFIED1_NonSemanticClspvReflection_H_
#ifdef __cplusplus
extern "C" {
#endif
enum {
NonSemanticClspvReflectionRevision = 1,
NonSemanticClspvReflectionRevision_BitWidthPadding = 0x7fffffff
};
enum NonSemanticClspvReflectionInstructions {
NonSemanticClspvReflectionKernel = 1,
NonSemanticClspvReflectionArgumentInfo = 2,
NonSemanticClspvReflectionArgumentStorageBuffer = 3,
NonSemanticClspvReflectionArgumentUniform = 4,
NonSemanticClspvReflectionArgumentPodStorageBuffer = 5,
NonSemanticClspvReflectionArgumentPodUniform = 6,
NonSemanticClspvReflectionArgumentPodPushConstant = 7,
NonSemanticClspvReflectionArgumentSampledImage = 8,
NonSemanticClspvReflectionArgumentStorageImage = 9,
NonSemanticClspvReflectionArgumentSampler = 10,
NonSemanticClspvReflectionArgumentWorkgroup = 11,
NonSemanticClspvReflectionSpecConstantWorkgroupSize = 12,
NonSemanticClspvReflectionSpecConstantGlobalOffset = 13,
NonSemanticClspvReflectionSpecConstantWorkDim = 14,
NonSemanticClspvReflectionPushConstantGlobalOffset = 15,
NonSemanticClspvReflectionPushConstantEnqueuedLocalSize = 16,
NonSemanticClspvReflectionPushConstantGlobalSize = 17,
NonSemanticClspvReflectionPushConstantRegionOffset = 18,
NonSemanticClspvReflectionPushConstantNumWorkgroups = 19,
NonSemanticClspvReflectionPushConstantRegionGroupOffset = 20,
NonSemanticClspvReflectionConstantDataStorageBuffer = 21,
NonSemanticClspvReflectionConstantDataUniform = 22,
NonSemanticClspvReflectionLiteralSampler = 23,
NonSemanticClspvReflectionPropertyRequiredWorkgroupSize = 24,
NonSemanticClspvReflectionInstructionsMax = 0x7fffffff
};
#ifdef __cplusplus
}
#endif
#endif // SPIRV_UNIFIED1_NonSemanticClspvReflection_H_
{
"revision" : 1,
"instructions" : [
{
"opname" : "Kernel",
"opcode" : 1,
"operands" : [
{ "kind" : "IdRef", "name" : "Kernel" },
{ "kind" : "IdRef", "name" : "Name" }
]
},
{
"opname" : "ArgumentInfo",
"opcode" : 2,
"operands" : [
{ "kind" : "IdRef", "name" : "Name" },
{ "kind" : "IdRef", "name" : "Type Name", "quantifier" : "?" },
{ "kind" : "IdRef", "name" : "Address Qualifier", "quantifier" : "?" },
{ "kind" : "IdRef", "name" : "Access Qualifier", "quantifier" : "?" },
{ "kind" : "IdRef", "name" : "Type Qualifier", "quantifier" : "?" }
]
},
{
"opname" : "ArgumentStorageBuffer",
"opcode" : 3,
"operands" : [
{ "kind" : "IdRef", "name" : "Decl" },
{ "kind" : "IdRef", "name" : "Ordinal" },
{ "kind" : "IdRef", "name" : "DescriptorSet" },
{ "kind" : "IdRef", "name" : "Binding" },
{ "kind" : "IdRef", "name" : "ArgInfo", "quantifier" : "?" }
]
},
{
"opname" : "ArgumentUniform",
"opcode" : 4,
"operands" : [
{ "kind" : "IdRef", "name" : "Decl" },
{ "kind" : "IdRef", "name" : "Ordinal" },
{ "kind" : "IdRef", "name" : "DescriptorSet" },
{ "kind" : "IdRef", "name" : "Binding" },
{ "kind" : "IdRef", "name" : "ArgInfo", "quantifier" : "?" }
]
},
{
"opname" : "ArgumentPodStorageBuffer",
"opcode" : 5,
"operands" : [
{ "kind" : "IdRef", "name" : "Decl" },
{ "kind" : "IdRef", "name" : "Ordinal" },
{ "kind" : "IdRef", "name" : "DescriptorSet" },
{ "kind" : "IdRef", "name" : "Binding" },
{ "kind" : "IdRef", "name" : "Offset" },
{ "kind" : "IdRef", "name" : "Size" },
{ "kind" : "IdRef", "name" : "ArgInfo", "quantifier" : "?" }
]
},
{
"opname" : "ArgumentPodUniform",
"opcode" : 6,
"operands" : [
{ "kind" : "IdRef", "name" : "Decl" },
{ "kind" : "IdRef", "name" : "Ordinal" },
{ "kind" : "IdRef", "name" : "DescriptorSet" },
{ "kind" : "IdRef", "name" : "Binding" },
{ "kind" : "IdRef", "name" : "Offset" },
{ "kind" : "IdRef", "name" : "Size" },
{ "kind" : "IdRef", "name" : "ArgInfo", "quantifier" : "?" }
]
},
{
"opname" : "ArgumentPodPushConstant",
"opcode" : 7,
"operands" : [
{ "kind" : "IdRef", "name" : "Decl" },
{ "kind" : "IdRef", "name" : "Ordinal" },
{ "kind" : "IdRef", "name" : "Offset" },
{ "kind" : "IdRef", "name" : "Size" },
{ "kind" : "IdRef", "name" : "ArgInfo", "quantifier" : "?" }
]
},
{
"opname" : "ArgumentSampledImage",
"opcode" : 8,
"operands" : [
{ "kind" : "IdRef", "name" : "Decl" },
{ "kind" : "IdRef", "name" : "Ordinal" },
{ "kind" : "IdRef", "name" : "DescriptorSet" },
{ "kind" : "IdRef", "name" : "Binding" },
{ "kind" : "IdRef", "name" : "ArgInfo", "quantifier" : "?" }
]
},
{
"opname" : "ArgumentStorageImage",
"opcode" : 9,
"operands" : [
{ "kind" : "IdRef", "name" : "Decl" },
{ "kind" : "IdRef", "name" : "Ordinal" },
{ "kind" : "IdRef", "name" : "DescriptorSet" },
{ "kind" : "IdRef", "name" : "Binding" },
{ "kind" : "IdRef", "name" : "ArgInfo", "quantifier" : "?" }
]
},
{
"opname" : "ArgumentSampler",
"opcode" : 10,
"operands" : [
{ "kind" : "IdRef", "name" : "Decl" },
{ "kind" : "IdRef", "name" : "Ordinal" },
{ "kind" : "IdRef", "name" : "DescriptorSet" },
{ "kind" : "IdRef", "name" : "Binding" },
{ "kind" : "IdRef", "name" : "ArgInfo", "quantifier" : "?" }
]
},
{
"opname" : "ArgumentWorkgroup",
"opcode" : 11,
"operands" : [
{ "kind" : "IdRef", "name" : "Decl" },
{ "kind" : "IdRef", "name" : "Ordinal" },
{ "kind" : "IdRef", "name" : "SpecId" },
{ "kind" : "IdRef", "name" : "ElemSize" },
{ "kind" : "IdRef", "name" : "ArgInfo", "quantifier" : "?" }
]
},
{
"opname" : "SpecConstantWorkgroupSize",
"opcode" : 12,
"operands" : [
{ "kind" : "IdRef", "name" : "X" },
{ "kind" : "IdRef", "name" : "Y" },
{ "kind" : "IdRef", "name" : "Z" }
]
},
{
"opname" : "SpecConstantGlobalOffset",
"opcode" : 13,
"operands" : [
{ "kind" : "IdRef", "name" : "X" },
{ "kind" : "IdRef", "name" : "Y" },
{ "kind" : "IdRef", "name" : "Z" }
]
},
{
"opname" : "SpecConstantWorkDim",
"opcode" : 14,
"operands" : [
{ "kind" : "IdRef", "name" : "Dim" }
]
},
{
"opname" : "PushConstantGlobalOffset",
"opcode" : 15,
"operands" : [
{ "kind" : "IdRef", "name" : "Offset" },
{ "kind" : "IdRef", "name" : "Size" }
]
},
{
"opname" : "PushConstantEnqueuedLocalSize",
"opcode" : 16,
"operands" : [
{ "kind" : "IdRef", "name" : "Offset" },
{ "kind" : "IdRef", "name" : "Size" }
]
},
{
"opname" : "PushConstantGlobalSize",
"opcode" : 17,
"operands" : [
{ "kind" : "IdRef", "name" : "Offset" },
{ "kind" : "IdRef", "name" : "Size" }
]
},
{
"opname" : "PushConstantRegionOffset",
"opcode" : 18,
"operands" : [
{ "kind" : "IdRef", "name" : "Offset" },
{ "kind" : "IdRef", "name" : "Size" }
]
},
{
"opname" : "PushConstantNumWorkgroups",
"opcode" : 19,
"operands" : [
{ "kind" : "IdRef", "name" : "Offset" },
{ "kind" : "IdRef", "name" : "Size" }
]
},
{
"opname" : "PushConstantRegionGroupOffset",
"opcode" : 20,
"operands" : [
{ "kind" : "IdRef", "name" : "Offset" },
{ "kind" : "IdRef", "name" : "Size" }
]
},
{
"opname" : "ConstantDataStorageBuffer",
"opcode" : 21,
"operands" : [
{ "kind" : "IdRef", "name" : "DescriptorSet" },
{ "kind" : "IdRef", "name" : "Binding" },
{ "kind" : "IdRef", "name" : "Data" }
]
},
{
"opname" : "ConstantDataUniform",
"opcode" : 22,
"operands" : [
{ "kind" : "IdRef", "name" : "DescriptorSet" },
{ "kind" : "IdRef", "name" : "Binding" },
{ "kind" : "IdRef", "name" : "Data" }
]
},
{
"opname" : "LiteralSampler",
"opcode" : 23,
"operands" : [
{ "kind" : "IdRef", "name" : "DescriptorSet" },
{ "kind" : "IdRef", "name" : "Binding" },
{ "kind" : "IdRef", "name" : "Mask" }
]
},
{
"opname" : "PropertyRequiredWorkgroupSize",
"opcode" : 24,
"operands" : [
{ "kind" : "IdRef", "name" : "Kernel" },
{ "kind" : "IdRef", "name" : "X" },
{ "kind" : "IdRef", "name" : "Y" },
{ "kind" : "IdRef", "name" : "Z" }
]
}
]
}
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
"magic_number" : "0x07230203", "magic_number" : "0x07230203",
"major_version" : 1, "major_version" : 1,
"minor_version" : 5, "minor_version" : 5,
"revision" : 3, "revision" : 4,
"instruction_printing_class" : [ "instruction_printing_class" : [
{ {
"tag" : "@exclude" "tag" : "@exclude"
...@@ -7720,6 +7720,36 @@ ...@@ -7720,6 +7720,36 @@
] ]
}, },
{ {
"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", "category" : "ValueEnum",
"kind" : "SourceLanguage", "kind" : "SourceLanguage",
"enumerants" : [ "enumerants" : [
...@@ -8826,6 +8856,16 @@ ...@@ -8826,6 +8856,16 @@
"enumerant" : "R8ui", "enumerant" : "R8ui",
"value" : 39, "value" : 39,
"capabilities" : [ "StorageImageExtendedFormats" ] "capabilities" : [ "StorageImageExtendedFormats" ]
},
{
"enumerant" : "R64ui",
"value" : 40,
"capabilities" : [ "Int64ImageEXT" ]
},
{
"enumerant" : "R64i",
"value" : 41,
"capabilities" : [ "Int64ImageEXT" ]
} }
] ]
}, },
...@@ -10005,6 +10045,13 @@ ...@@ -10005,6 +10045,13 @@
"version" : "1.3" "version" : "1.3"
}, },
{ {
"enumerant" : "PrimitiveShadingRateKHR",
"value" : 4432,
"capabilities" : [ "FragmentShadingRateKHR" ],
"extensions" : [ "SPV_KHR_fragment_shading_rate" ],
"version" : "None"
},
{
"enumerant" : "DeviceIndex", "enumerant" : "DeviceIndex",
"value" : 4438, "value" : 4438,
"capabilities" : [ "DeviceGroup" ], "capabilities" : [ "DeviceGroup" ],
...@@ -10019,6 +10066,13 @@ ...@@ -10019,6 +10066,13 @@
"version" : "1.3" "version" : "1.3"
}, },
{ {
"enumerant" : "ShadingRateKHR",
"value" : 4444,
"capabilities" : [ "FragmentShadingRateKHR" ],
"extensions" : [ "SPV_KHR_fragment_shading_rate" ],
"version" : "None"
},
{
"enumerant" : "BaryCoordNoPerspAMD", "enumerant" : "BaryCoordNoPerspAMD",
"value" : 4992, "value" : 4992,
"extensions" : [ "SPV_AMD_shader_explicit_vertex_parameter" ], "extensions" : [ "SPV_AMD_shader_explicit_vertex_parameter" ],
...@@ -10902,6 +10956,13 @@ ...@@ -10902,6 +10956,13 @@
"version" : "1.5" "version" : "1.5"
}, },
{ {
"enumerant" : "FragmentShadingRateKHR",
"value" : 4422,
"capabilities" : [ "Shader" ],
"extensions" : [ "SPV_KHR_fragment_shading_rate" ],
"version" : "None"
},
{
"enumerant" : "SubgroupBallotKHR", "enumerant" : "SubgroupBallotKHR",
"value" : 4423, "value" : 4423,
"extensions" : [ "SPV_KHR_shader_ballot" ], "extensions" : [ "SPV_KHR_shader_ballot" ],
...@@ -11102,6 +11163,13 @@ ...@@ -11102,6 +11163,13 @@
"version" : "None" "version" : "None"
}, },
{ {
"enumerant" : "Int64ImageEXT",
"value" : 5016,
"capabilities" : [ "Shader" ],
"extensions" : [ "SPV_EXT_shader_image_int64" ],
"version" : "None"
},
{
"enumerant" : "ShaderClockKHR", "enumerant" : "ShaderClockKHR",
"value" : 5055, "value" : 5055,
"capabilities" : [ "Shader" ], "capabilities" : [ "Shader" ],
......
...@@ -49,7 +49,7 @@ namespace Spv ...@@ -49,7 +49,7 @@ namespace Spv
{ {
public const uint MagicNumber = 0x07230203; public const uint MagicNumber = 0x07230203;
public const uint Version = 0x00010500; public const uint Version = 0x00010500;
public const uint Revision = 3; public const uint Revision = 4;
public const uint OpCodeMask = 0xffff; public const uint OpCodeMask = 0xffff;
public const uint WordCountShift = 16; public const uint WordCountShift = 16;
...@@ -270,6 +270,8 @@ namespace Spv ...@@ -270,6 +270,8 @@ namespace Spv
Rg8ui = 37, Rg8ui = 37,
R16ui = 38, R16ui = 38,
R8ui = 39, R8ui = 39,
R64ui = 40,
R64i = 41,
} }
public enum ImageChannelOrder public enum ImageChannelOrder
...@@ -556,8 +558,10 @@ namespace Spv ...@@ -556,8 +558,10 @@ namespace Spv
BaseVertex = 4424, BaseVertex = 4424,
BaseInstance = 4425, BaseInstance = 4425,
DrawIndex = 4426, DrawIndex = 4426,
PrimitiveShadingRateKHR = 4432,
DeviceIndex = 4438, DeviceIndex = 4438,
ViewIndex = 4440, ViewIndex = 4440,
ShadingRateKHR = 4444,
BaryCoordNoPerspAMD = 4992, BaryCoordNoPerspAMD = 4992,
BaryCoordNoPerspCentroidAMD = 4993, BaryCoordNoPerspCentroidAMD = 4993,
BaryCoordNoPerspSampleAMD = 4994, BaryCoordNoPerspSampleAMD = 4994,
...@@ -874,6 +878,7 @@ namespace Spv ...@@ -874,6 +878,7 @@ namespace Spv
GroupNonUniformQuad = 68, GroupNonUniformQuad = 68,
ShaderLayer = 69, ShaderLayer = 69,
ShaderViewportIndex = 70, ShaderViewportIndex = 70,
FragmentShadingRateKHR = 4422,
SubgroupBallotKHR = 4423, SubgroupBallotKHR = 4423,
DrawParameters = 4427, DrawParameters = 4427,
SubgroupVoteKHR = 4431, SubgroupVoteKHR = 4431,
...@@ -904,6 +909,7 @@ namespace Spv ...@@ -904,6 +909,7 @@ namespace Spv
FragmentMaskAMD = 5010, FragmentMaskAMD = 5010,
StencilExportEXT = 5013, StencilExportEXT = 5013,
ImageReadWriteLodAMD = 5015, ImageReadWriteLodAMD = 5015,
Int64ImageEXT = 5016,
ShaderClockKHR = 5055, ShaderClockKHR = 5055,
SampleMaskOverrideCoverageNV = 5249, SampleMaskOverrideCoverageNV = 5249,
GeometryShaderPassthroughNV = 5251, GeometryShaderPassthroughNV = 5251,
...@@ -1028,6 +1034,23 @@ namespace Spv ...@@ -1028,6 +1034,23 @@ namespace Spv
RayQueryCandidateIntersectionAABBKHR = 1, RayQueryCandidateIntersectionAABBKHR = 1,
} }
public enum FragmentShadingRateShift
{
Vertical2Pixels = 0,
Vertical4Pixels = 1,
Horizontal2Pixels = 2,
Horizontal4Pixels = 3,
}
public enum FragmentShadingRateMask
{
MaskNone = 0,
Vertical2Pixels = 0x00000001,
Vertical4Pixels = 0x00000002,
Horizontal2Pixels = 0x00000004,
Horizontal4Pixels = 0x00000008,
}
public enum Op public enum Op
{ {
OpNop = 0, OpNop = 0,
......
...@@ -54,11 +54,11 @@ ...@@ -54,11 +54,11 @@
typedef unsigned int SpvId; typedef unsigned int SpvId;
#define SPV_VERSION 0x10500 #define SPV_VERSION 0x10500
#define SPV_REVISION 3 #define SPV_REVISION 4
static const unsigned int SpvMagicNumber = 0x07230203; static const unsigned int SpvMagicNumber = 0x07230203;
static const unsigned int SpvVersion = 0x00010500; static const unsigned int SpvVersion = 0x00010500;
static const unsigned int SpvRevision = 3; static const unsigned int SpvRevision = 4;
static const unsigned int SpvOpCodeMask = 0xffff; static const unsigned int SpvOpCodeMask = 0xffff;
static const unsigned int SpvWordCountShift = 16; static const unsigned int SpvWordCountShift = 16;
...@@ -278,6 +278,8 @@ typedef enum SpvImageFormat_ { ...@@ -278,6 +278,8 @@ typedef enum SpvImageFormat_ {
SpvImageFormatRg8ui = 37, SpvImageFormatRg8ui = 37,
SpvImageFormatR16ui = 38, SpvImageFormatR16ui = 38,
SpvImageFormatR8ui = 39, SpvImageFormatR8ui = 39,
SpvImageFormatR64ui = 40,
SpvImageFormatR64i = 41,
SpvImageFormatMax = 0x7fffffff, SpvImageFormatMax = 0x7fffffff,
} SpvImageFormat; } SpvImageFormat;
...@@ -562,8 +564,10 @@ typedef enum SpvBuiltIn_ { ...@@ -562,8 +564,10 @@ typedef enum SpvBuiltIn_ {
SpvBuiltInBaseVertex = 4424, SpvBuiltInBaseVertex = 4424,
SpvBuiltInBaseInstance = 4425, SpvBuiltInBaseInstance = 4425,
SpvBuiltInDrawIndex = 4426, SpvBuiltInDrawIndex = 4426,
SpvBuiltInPrimitiveShadingRateKHR = 4432,
SpvBuiltInDeviceIndex = 4438, SpvBuiltInDeviceIndex = 4438,
SpvBuiltInViewIndex = 4440, SpvBuiltInViewIndex = 4440,
SpvBuiltInShadingRateKHR = 4444,
SpvBuiltInBaryCoordNoPerspAMD = 4992, SpvBuiltInBaryCoordNoPerspAMD = 4992,
SpvBuiltInBaryCoordNoPerspCentroidAMD = 4993, SpvBuiltInBaryCoordNoPerspCentroidAMD = 4993,
SpvBuiltInBaryCoordNoPerspSampleAMD = 4994, SpvBuiltInBaryCoordNoPerspSampleAMD = 4994,
...@@ -874,6 +878,7 @@ typedef enum SpvCapability_ { ...@@ -874,6 +878,7 @@ typedef enum SpvCapability_ {
SpvCapabilityGroupNonUniformQuad = 68, SpvCapabilityGroupNonUniformQuad = 68,
SpvCapabilityShaderLayer = 69, SpvCapabilityShaderLayer = 69,
SpvCapabilityShaderViewportIndex = 70, SpvCapabilityShaderViewportIndex = 70,
SpvCapabilityFragmentShadingRateKHR = 4422,
SpvCapabilitySubgroupBallotKHR = 4423, SpvCapabilitySubgroupBallotKHR = 4423,
SpvCapabilityDrawParameters = 4427, SpvCapabilityDrawParameters = 4427,
SpvCapabilitySubgroupVoteKHR = 4431, SpvCapabilitySubgroupVoteKHR = 4431,
...@@ -904,6 +909,7 @@ typedef enum SpvCapability_ { ...@@ -904,6 +909,7 @@ typedef enum SpvCapability_ {
SpvCapabilityFragmentMaskAMD = 5010, SpvCapabilityFragmentMaskAMD = 5010,
SpvCapabilityStencilExportEXT = 5013, SpvCapabilityStencilExportEXT = 5013,
SpvCapabilityImageReadWriteLodAMD = 5015, SpvCapabilityImageReadWriteLodAMD = 5015,
SpvCapabilityInt64ImageEXT = 5016,
SpvCapabilityShaderClockKHR = 5055, SpvCapabilityShaderClockKHR = 5055,
SpvCapabilitySampleMaskOverrideCoverageNV = 5249, SpvCapabilitySampleMaskOverrideCoverageNV = 5249,
SpvCapabilityGeometryShaderPassthroughNV = 5251, SpvCapabilityGeometryShaderPassthroughNV = 5251,
...@@ -1028,6 +1034,22 @@ typedef enum SpvRayQueryCandidateIntersectionType_ { ...@@ -1028,6 +1034,22 @@ typedef enum SpvRayQueryCandidateIntersectionType_ {
SpvRayQueryCandidateIntersectionTypeMax = 0x7fffffff, SpvRayQueryCandidateIntersectionTypeMax = 0x7fffffff,
} SpvRayQueryCandidateIntersectionType; } SpvRayQueryCandidateIntersectionType;
typedef enum SpvFragmentShadingRateShift_ {
SpvFragmentShadingRateVertical2PixelsShift = 0,
SpvFragmentShadingRateVertical4PixelsShift = 1,
SpvFragmentShadingRateHorizontal2PixelsShift = 2,
SpvFragmentShadingRateHorizontal4PixelsShift = 3,
SpvFragmentShadingRateMax = 0x7fffffff,
} SpvFragmentShadingRateShift;
typedef enum SpvFragmentShadingRateMask_ {
SpvFragmentShadingRateMaskNone = 0,
SpvFragmentShadingRateVertical2PixelsMask = 0x00000001,
SpvFragmentShadingRateVertical4PixelsMask = 0x00000002,
SpvFragmentShadingRateHorizontal2PixelsMask = 0x00000004,
SpvFragmentShadingRateHorizontal4PixelsMask = 0x00000008,
} SpvFragmentShadingRateMask;
typedef enum SpvOp_ { typedef enum SpvOp_ {
SpvOpNop = 0, SpvOpNop = 0,
SpvOpUndef = 1, SpvOpUndef = 1,
...@@ -1944,9 +1966,9 @@ inline void SpvHasResultAndType(SpvOp opcode, bool *hasResult, bool *hasResultTy ...@@ -1944,9 +1966,9 @@ inline void SpvHasResultAndType(SpvOp opcode, bool *hasResult, bool *hasResultTy
case SpvOpPtrEqual: *hasResult = true; *hasResultType = true; break; case SpvOpPtrEqual: *hasResult = true; *hasResultType = true; break;
case SpvOpPtrNotEqual: *hasResult = true; *hasResultType = true; break; case SpvOpPtrNotEqual: *hasResult = true; *hasResultType = true; break;
case SpvOpPtrDiff: *hasResult = true; *hasResultType = true; break; case SpvOpPtrDiff: *hasResult = true; *hasResultType = true; break;
case SpvOpTerminateInvocation: *hasResult = false; *hasResultType = false; break;
case SpvOpSubgroupBallotKHR: *hasResult = true; *hasResultType = true; break; case SpvOpSubgroupBallotKHR: *hasResult = true; *hasResultType = true; break;
case SpvOpSubgroupFirstInvocationKHR: *hasResult = true; *hasResultType = true; break; case SpvOpSubgroupFirstInvocationKHR: *hasResult = true; *hasResultType = true; break;
case SpvOpTerminateInvocation: *hasResult = false; *hasResultType = false; break;
case SpvOpSubgroupAllKHR: *hasResult = true; *hasResultType = true; break; case SpvOpSubgroupAllKHR: *hasResult = true; *hasResultType = true; break;
case SpvOpSubgroupAnyKHR: *hasResult = true; *hasResultType = true; break; case SpvOpSubgroupAnyKHR: *hasResult = true; *hasResultType = true; break;
case SpvOpSubgroupAllEqualKHR: *hasResult = true; *hasResultType = true; break; case SpvOpSubgroupAllEqualKHR: *hasResult = true; *hasResultType = true; break;
......
...@@ -50,11 +50,11 @@ namespace spv { ...@@ -50,11 +50,11 @@ namespace spv {
typedef unsigned int Id; typedef unsigned int Id;
#define SPV_VERSION 0x10500 #define SPV_VERSION 0x10500
#define SPV_REVISION 3 #define SPV_REVISION 4
static const unsigned int MagicNumber = 0x07230203; static const unsigned int MagicNumber = 0x07230203;
static const unsigned int Version = 0x00010500; static const unsigned int Version = 0x00010500;
static const unsigned int Revision = 3; static const unsigned int Revision = 4;
static const unsigned int OpCodeMask = 0xffff; static const unsigned int OpCodeMask = 0xffff;
static const unsigned int WordCountShift = 16; static const unsigned int WordCountShift = 16;
...@@ -274,6 +274,8 @@ enum ImageFormat { ...@@ -274,6 +274,8 @@ enum ImageFormat {
ImageFormatRg8ui = 37, ImageFormatRg8ui = 37,
ImageFormatR16ui = 38, ImageFormatR16ui = 38,
ImageFormatR8ui = 39, ImageFormatR8ui = 39,
ImageFormatR64ui = 40,
ImageFormatR64i = 41,
ImageFormatMax = 0x7fffffff, ImageFormatMax = 0x7fffffff,
}; };
...@@ -558,8 +560,10 @@ enum BuiltIn { ...@@ -558,8 +560,10 @@ enum BuiltIn {
BuiltInBaseVertex = 4424, BuiltInBaseVertex = 4424,
BuiltInBaseInstance = 4425, BuiltInBaseInstance = 4425,
BuiltInDrawIndex = 4426, BuiltInDrawIndex = 4426,
BuiltInPrimitiveShadingRateKHR = 4432,
BuiltInDeviceIndex = 4438, BuiltInDeviceIndex = 4438,
BuiltInViewIndex = 4440, BuiltInViewIndex = 4440,
BuiltInShadingRateKHR = 4444,
BuiltInBaryCoordNoPerspAMD = 4992, BuiltInBaryCoordNoPerspAMD = 4992,
BuiltInBaryCoordNoPerspCentroidAMD = 4993, BuiltInBaryCoordNoPerspCentroidAMD = 4993,
BuiltInBaryCoordNoPerspSampleAMD = 4994, BuiltInBaryCoordNoPerspSampleAMD = 4994,
...@@ -870,6 +874,7 @@ enum Capability { ...@@ -870,6 +874,7 @@ enum Capability {
CapabilityGroupNonUniformQuad = 68, CapabilityGroupNonUniformQuad = 68,
CapabilityShaderLayer = 69, CapabilityShaderLayer = 69,
CapabilityShaderViewportIndex = 70, CapabilityShaderViewportIndex = 70,
CapabilityFragmentShadingRateKHR = 4422,
CapabilitySubgroupBallotKHR = 4423, CapabilitySubgroupBallotKHR = 4423,
CapabilityDrawParameters = 4427, CapabilityDrawParameters = 4427,
CapabilitySubgroupVoteKHR = 4431, CapabilitySubgroupVoteKHR = 4431,
...@@ -900,6 +905,7 @@ enum Capability { ...@@ -900,6 +905,7 @@ enum Capability {
CapabilityFragmentMaskAMD = 5010, CapabilityFragmentMaskAMD = 5010,
CapabilityStencilExportEXT = 5013, CapabilityStencilExportEXT = 5013,
CapabilityImageReadWriteLodAMD = 5015, CapabilityImageReadWriteLodAMD = 5015,
CapabilityInt64ImageEXT = 5016,
CapabilityShaderClockKHR = 5055, CapabilityShaderClockKHR = 5055,
CapabilitySampleMaskOverrideCoverageNV = 5249, CapabilitySampleMaskOverrideCoverageNV = 5249,
CapabilityGeometryShaderPassthroughNV = 5251, CapabilityGeometryShaderPassthroughNV = 5251,
...@@ -1024,6 +1030,22 @@ enum RayQueryCandidateIntersectionType { ...@@ -1024,6 +1030,22 @@ enum RayQueryCandidateIntersectionType {
RayQueryCandidateIntersectionTypeMax = 0x7fffffff, RayQueryCandidateIntersectionTypeMax = 0x7fffffff,
}; };
enum FragmentShadingRateShift {
FragmentShadingRateVertical2PixelsShift = 0,
FragmentShadingRateVertical4PixelsShift = 1,
FragmentShadingRateHorizontal2PixelsShift = 2,
FragmentShadingRateHorizontal4PixelsShift = 3,
FragmentShadingRateMax = 0x7fffffff,
};
enum FragmentShadingRateMask {
FragmentShadingRateMaskNone = 0,
FragmentShadingRateVertical2PixelsMask = 0x00000001,
FragmentShadingRateVertical4PixelsMask = 0x00000002,
FragmentShadingRateHorizontal2PixelsMask = 0x00000004,
FragmentShadingRateHorizontal4PixelsMask = 0x00000008,
};
enum Op { enum Op {
OpNop = 0, OpNop = 0,
OpUndef = 1, OpUndef = 1,
...@@ -1940,9 +1962,9 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) { ...@@ -1940,9 +1962,9 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
case OpPtrEqual: *hasResult = true; *hasResultType = true; break; case OpPtrEqual: *hasResult = true; *hasResultType = true; break;
case OpPtrNotEqual: *hasResult = true; *hasResultType = true; break; case OpPtrNotEqual: *hasResult = true; *hasResultType = true; break;
case OpPtrDiff: *hasResult = true; *hasResultType = true; break; case OpPtrDiff: *hasResult = true; *hasResultType = true; break;
case OpTerminateInvocation: *hasResult = false; *hasResultType = false; break;
case OpSubgroupBallotKHR: *hasResult = true; *hasResultType = true; break; case OpSubgroupBallotKHR: *hasResult = true; *hasResultType = true; break;
case OpSubgroupFirstInvocationKHR: *hasResult = true; *hasResultType = true; break; case OpSubgroupFirstInvocationKHR: *hasResult = true; *hasResultType = true; break;
case OpTerminateInvocation: *hasResult = false; *hasResultType = false; break;
case OpSubgroupAllKHR: *hasResult = true; *hasResultType = true; break; case OpSubgroupAllKHR: *hasResult = true; *hasResultType = true; break;
case OpSubgroupAnyKHR: *hasResult = true; *hasResultType = true; break; case OpSubgroupAnyKHR: *hasResult = true; *hasResultType = true; break;
case OpSubgroupAllEqualKHR: *hasResult = true; *hasResultType = true; break; case OpSubgroupAllEqualKHR: *hasResult = true; *hasResultType = true; break;
...@@ -2166,6 +2188,7 @@ inline MemorySemanticsMask operator|(MemorySemanticsMask a, MemorySemanticsMask ...@@ -2166,6 +2188,7 @@ inline MemorySemanticsMask operator|(MemorySemanticsMask a, MemorySemanticsMask
inline MemoryAccessMask operator|(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) | unsigned(b)); } inline MemoryAccessMask operator|(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) | unsigned(b)); }
inline KernelProfilingInfoMask operator|(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) | unsigned(b)); } inline KernelProfilingInfoMask operator|(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) | unsigned(b)); }
inline RayFlagsMask operator|(RayFlagsMask a, RayFlagsMask b) { return RayFlagsMask(unsigned(a) | unsigned(b)); } inline RayFlagsMask operator|(RayFlagsMask a, RayFlagsMask b) { return RayFlagsMask(unsigned(a) | unsigned(b)); }
inline FragmentShadingRateMask operator|(FragmentShadingRateMask a, FragmentShadingRateMask b) { return FragmentShadingRateMask(unsigned(a) | unsigned(b)); }
} // end namespace spv } // end namespace spv
......
...@@ -50,11 +50,11 @@ namespace spv { ...@@ -50,11 +50,11 @@ namespace spv {
typedef unsigned int Id; typedef unsigned int Id;
#define SPV_VERSION 0x10500 #define SPV_VERSION 0x10500
#define SPV_REVISION 3 #define SPV_REVISION 4
static const unsigned int MagicNumber = 0x07230203; static const unsigned int MagicNumber = 0x07230203;
static const unsigned int Version = 0x00010500; static const unsigned int Version = 0x00010500;
static const unsigned int Revision = 3; static const unsigned int Revision = 4;
static const unsigned int OpCodeMask = 0xffff; static const unsigned int OpCodeMask = 0xffff;
static const unsigned int WordCountShift = 16; static const unsigned int WordCountShift = 16;
...@@ -274,6 +274,8 @@ enum class ImageFormat : unsigned { ...@@ -274,6 +274,8 @@ enum class ImageFormat : unsigned {
Rg8ui = 37, Rg8ui = 37,
R16ui = 38, R16ui = 38,
R8ui = 39, R8ui = 39,
R64ui = 40,
R64i = 41,
Max = 0x7fffffff, Max = 0x7fffffff,
}; };
...@@ -558,8 +560,10 @@ enum class BuiltIn : unsigned { ...@@ -558,8 +560,10 @@ enum class BuiltIn : unsigned {
BaseVertex = 4424, BaseVertex = 4424,
BaseInstance = 4425, BaseInstance = 4425,
DrawIndex = 4426, DrawIndex = 4426,
PrimitiveShadingRateKHR = 4432,
DeviceIndex = 4438, DeviceIndex = 4438,
ViewIndex = 4440, ViewIndex = 4440,
ShadingRateKHR = 4444,
BaryCoordNoPerspAMD = 4992, BaryCoordNoPerspAMD = 4992,
BaryCoordNoPerspCentroidAMD = 4993, BaryCoordNoPerspCentroidAMD = 4993,
BaryCoordNoPerspSampleAMD = 4994, BaryCoordNoPerspSampleAMD = 4994,
...@@ -870,6 +874,7 @@ enum class Capability : unsigned { ...@@ -870,6 +874,7 @@ enum class Capability : unsigned {
GroupNonUniformQuad = 68, GroupNonUniformQuad = 68,
ShaderLayer = 69, ShaderLayer = 69,
ShaderViewportIndex = 70, ShaderViewportIndex = 70,
FragmentShadingRateKHR = 4422,
SubgroupBallotKHR = 4423, SubgroupBallotKHR = 4423,
DrawParameters = 4427, DrawParameters = 4427,
SubgroupVoteKHR = 4431, SubgroupVoteKHR = 4431,
...@@ -900,6 +905,7 @@ enum class Capability : unsigned { ...@@ -900,6 +905,7 @@ enum class Capability : unsigned {
FragmentMaskAMD = 5010, FragmentMaskAMD = 5010,
StencilExportEXT = 5013, StencilExportEXT = 5013,
ImageReadWriteLodAMD = 5015, ImageReadWriteLodAMD = 5015,
Int64ImageEXT = 5016,
ShaderClockKHR = 5055, ShaderClockKHR = 5055,
SampleMaskOverrideCoverageNV = 5249, SampleMaskOverrideCoverageNV = 5249,
GeometryShaderPassthroughNV = 5251, GeometryShaderPassthroughNV = 5251,
...@@ -1024,6 +1030,22 @@ enum class RayQueryCandidateIntersectionType : unsigned { ...@@ -1024,6 +1030,22 @@ enum class RayQueryCandidateIntersectionType : unsigned {
Max = 0x7fffffff, Max = 0x7fffffff,
}; };
enum class FragmentShadingRateShift : unsigned {
Vertical2Pixels = 0,
Vertical4Pixels = 1,
Horizontal2Pixels = 2,
Horizontal4Pixels = 3,
Max = 0x7fffffff,
};
enum class FragmentShadingRateMask : unsigned {
MaskNone = 0,
Vertical2Pixels = 0x00000001,
Vertical4Pixels = 0x00000002,
Horizontal2Pixels = 0x00000004,
Horizontal4Pixels = 0x00000008,
};
enum class Op : unsigned { enum class Op : unsigned {
OpNop = 0, OpNop = 0,
OpUndef = 1, OpUndef = 1,
...@@ -1940,9 +1962,9 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) { ...@@ -1940,9 +1962,9 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
case Op::OpPtrEqual: *hasResult = true; *hasResultType = true; break; case Op::OpPtrEqual: *hasResult = true; *hasResultType = true; break;
case Op::OpPtrNotEqual: *hasResult = true; *hasResultType = true; break; case Op::OpPtrNotEqual: *hasResult = true; *hasResultType = true; break;
case Op::OpPtrDiff: *hasResult = true; *hasResultType = true; break; case Op::OpPtrDiff: *hasResult = true; *hasResultType = true; break;
case Op::OpTerminateInvocation: *hasResult = false; *hasResultType = false; break;
case Op::OpSubgroupBallotKHR: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupBallotKHR: *hasResult = true; *hasResultType = true; break;
case Op::OpSubgroupFirstInvocationKHR: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupFirstInvocationKHR: *hasResult = true; *hasResultType = true; break;
case Op::OpTerminateInvocation: *hasResult = false; *hasResultType = false; break;
case Op::OpSubgroupAllKHR: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAllKHR: *hasResult = true; *hasResultType = true; break;
case Op::OpSubgroupAnyKHR: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAnyKHR: *hasResult = true; *hasResultType = true; break;
case Op::OpSubgroupAllEqualKHR: *hasResult = true; *hasResultType = true; break; case Op::OpSubgroupAllEqualKHR: *hasResult = true; *hasResultType = true; break;
...@@ -2166,6 +2188,7 @@ inline MemorySemanticsMask operator|(MemorySemanticsMask a, MemorySemanticsMask ...@@ -2166,6 +2188,7 @@ inline MemorySemanticsMask operator|(MemorySemanticsMask a, MemorySemanticsMask
inline MemoryAccessMask operator|(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) | unsigned(b)); } inline MemoryAccessMask operator|(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) | unsigned(b)); }
inline KernelProfilingInfoMask operator|(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) | unsigned(b)); } inline KernelProfilingInfoMask operator|(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) | unsigned(b)); }
inline RayFlagsMask operator|(RayFlagsMask a, RayFlagsMask b) { return RayFlagsMask(unsigned(a) | unsigned(b)); } inline RayFlagsMask operator|(RayFlagsMask a, RayFlagsMask b) { return RayFlagsMask(unsigned(a) | unsigned(b)); }
inline FragmentShadingRateMask operator|(FragmentShadingRateMask a, FragmentShadingRateMask b) { return FragmentShadingRateMask(unsigned(a) | unsigned(b)); }
} // end namespace spv } // end namespace spv
......
...@@ -55,7 +55,7 @@ ...@@ -55,7 +55,7 @@
], ],
"MagicNumber": 119734787, "MagicNumber": 119734787,
"Version": 66816, "Version": 66816,
"Revision": 3, "Revision": 4,
"OpCodeMask": 65535, "OpCodeMask": 65535,
"WordCountShift": 16 "WordCountShift": 16
}, },
...@@ -307,7 +307,9 @@ ...@@ -307,7 +307,9 @@
"Rg16ui": 36, "Rg16ui": 36,
"Rg8ui": 37, "Rg8ui": 37,
"R16ui": 38, "R16ui": 38,
"R8ui": 39 "R8ui": 39,
"R64ui": 40,
"R64i": 41
} }
}, },
{ {
...@@ -591,8 +593,10 @@ ...@@ -591,8 +593,10 @@
"BaseVertex": 4424, "BaseVertex": 4424,
"BaseInstance": 4425, "BaseInstance": 4425,
"DrawIndex": 4426, "DrawIndex": 4426,
"PrimitiveShadingRateKHR": 4432,
"DeviceIndex": 4438, "DeviceIndex": 4438,
"ViewIndex": 4440, "ViewIndex": 4440,
"ShadingRateKHR": 4444,
"BaryCoordNoPerspAMD": 4992, "BaryCoordNoPerspAMD": 4992,
"BaryCoordNoPerspCentroidAMD": 4993, "BaryCoordNoPerspCentroidAMD": 4993,
"BaryCoordNoPerspSampleAMD": 4994, "BaryCoordNoPerspSampleAMD": 4994,
...@@ -860,6 +864,7 @@ ...@@ -860,6 +864,7 @@
"GroupNonUniformQuad": 68, "GroupNonUniformQuad": 68,
"ShaderLayer": 69, "ShaderLayer": 69,
"ShaderViewportIndex": 70, "ShaderViewportIndex": 70,
"FragmentShadingRateKHR": 4422,
"SubgroupBallotKHR": 4423, "SubgroupBallotKHR": 4423,
"DrawParameters": 4427, "DrawParameters": 4427,
"SubgroupVoteKHR": 4431, "SubgroupVoteKHR": 4431,
...@@ -890,6 +895,7 @@ ...@@ -890,6 +895,7 @@
"FragmentMaskAMD": 5010, "FragmentMaskAMD": 5010,
"StencilExportEXT": 5013, "StencilExportEXT": 5013,
"ImageReadWriteLodAMD": 5015, "ImageReadWriteLodAMD": 5015,
"Int64ImageEXT": 5016,
"ShaderClockKHR": 5055, "ShaderClockKHR": 5055,
"SampleMaskOverrideCoverageNV": 5249, "SampleMaskOverrideCoverageNV": 5249,
"GeometryShaderPassthroughNV": 5251, "GeometryShaderPassthroughNV": 5251,
...@@ -1012,6 +1018,17 @@ ...@@ -1012,6 +1018,17 @@
} }
}, },
{ {
"Name": "FragmentShadingRate",
"Type": "Bit",
"Values":
{
"Vertical2Pixels": 0,
"Vertical4Pixels": 1,
"Horizontal2Pixels": 2,
"Horizontal4Pixels": 3
}
},
{
"Name": "Op", "Name": "Op",
"Type": "Value", "Type": "Value",
"Values": "Values":
......
...@@ -45,7 +45,7 @@ ...@@ -45,7 +45,7 @@
spv = { spv = {
MagicNumber = 0x07230203, MagicNumber = 0x07230203,
Version = 0x00010500, Version = 0x00010500,
Revision = 3, Revision = 4,
OpCodeMask = 0xffff, OpCodeMask = 0xffff,
WordCountShift = 16, WordCountShift = 16,
...@@ -256,6 +256,8 @@ spv = { ...@@ -256,6 +256,8 @@ spv = {
Rg8ui = 37, Rg8ui = 37,
R16ui = 38, R16ui = 38,
R8ui = 39, R8ui = 39,
R64ui = 40,
R64i = 41,
}, },
ImageChannelOrder = { ImageChannelOrder = {
...@@ -530,8 +532,10 @@ spv = { ...@@ -530,8 +532,10 @@ spv = {
BaseVertex = 4424, BaseVertex = 4424,
BaseInstance = 4425, BaseInstance = 4425,
DrawIndex = 4426, DrawIndex = 4426,
PrimitiveShadingRateKHR = 4432,
DeviceIndex = 4438, DeviceIndex = 4438,
ViewIndex = 4440, ViewIndex = 4440,
ShadingRateKHR = 4444,
BaryCoordNoPerspAMD = 4992, BaryCoordNoPerspAMD = 4992,
BaryCoordNoPerspCentroidAMD = 4993, BaryCoordNoPerspCentroidAMD = 4993,
BaryCoordNoPerspSampleAMD = 4994, BaryCoordNoPerspSampleAMD = 4994,
...@@ -832,6 +836,7 @@ spv = { ...@@ -832,6 +836,7 @@ spv = {
GroupNonUniformQuad = 68, GroupNonUniformQuad = 68,
ShaderLayer = 69, ShaderLayer = 69,
ShaderViewportIndex = 70, ShaderViewportIndex = 70,
FragmentShadingRateKHR = 4422,
SubgroupBallotKHR = 4423, SubgroupBallotKHR = 4423,
DrawParameters = 4427, DrawParameters = 4427,
SubgroupVoteKHR = 4431, SubgroupVoteKHR = 4431,
...@@ -862,6 +867,7 @@ spv = { ...@@ -862,6 +867,7 @@ spv = {
FragmentMaskAMD = 5010, FragmentMaskAMD = 5010,
StencilExportEXT = 5013, StencilExportEXT = 5013,
ImageReadWriteLodAMD = 5015, ImageReadWriteLodAMD = 5015,
Int64ImageEXT = 5016,
ShaderClockKHR = 5055, ShaderClockKHR = 5055,
SampleMaskOverrideCoverageNV = 5249, SampleMaskOverrideCoverageNV = 5249,
GeometryShaderPassthroughNV = 5251, GeometryShaderPassthroughNV = 5251,
...@@ -981,6 +987,21 @@ spv = { ...@@ -981,6 +987,21 @@ spv = {
RayQueryCandidateIntersectionAABBKHR = 1, RayQueryCandidateIntersectionAABBKHR = 1,
}, },
FragmentShadingRateShift = {
Vertical2Pixels = 0,
Vertical4Pixels = 1,
Horizontal2Pixels = 2,
Horizontal4Pixels = 3,
},
FragmentShadingRateMask = {
MaskNone = 0,
Vertical2Pixels = 0x00000001,
Vertical4Pixels = 0x00000002,
Horizontal2Pixels = 0x00000004,
Horizontal4Pixels = 0x00000008,
},
Op = { Op = {
OpNop = 0, OpNop = 0,
OpUndef = 1, OpUndef = 1,
......
...@@ -45,7 +45,7 @@ ...@@ -45,7 +45,7 @@
spv = { spv = {
'MagicNumber' : 0x07230203, 'MagicNumber' : 0x07230203,
'Version' : 0x00010500, 'Version' : 0x00010500,
'Revision' : 3, 'Revision' : 4,
'OpCodeMask' : 0xffff, 'OpCodeMask' : 0xffff,
'WordCountShift' : 16, 'WordCountShift' : 16,
...@@ -256,6 +256,8 @@ spv = { ...@@ -256,6 +256,8 @@ spv = {
'Rg8ui' : 37, 'Rg8ui' : 37,
'R16ui' : 38, 'R16ui' : 38,
'R8ui' : 39, 'R8ui' : 39,
'R64ui' : 40,
'R64i' : 41,
}, },
'ImageChannelOrder' : { 'ImageChannelOrder' : {
...@@ -530,8 +532,10 @@ spv = { ...@@ -530,8 +532,10 @@ spv = {
'BaseVertex' : 4424, 'BaseVertex' : 4424,
'BaseInstance' : 4425, 'BaseInstance' : 4425,
'DrawIndex' : 4426, 'DrawIndex' : 4426,
'PrimitiveShadingRateKHR' : 4432,
'DeviceIndex' : 4438, 'DeviceIndex' : 4438,
'ViewIndex' : 4440, 'ViewIndex' : 4440,
'ShadingRateKHR' : 4444,
'BaryCoordNoPerspAMD' : 4992, 'BaryCoordNoPerspAMD' : 4992,
'BaryCoordNoPerspCentroidAMD' : 4993, 'BaryCoordNoPerspCentroidAMD' : 4993,
'BaryCoordNoPerspSampleAMD' : 4994, 'BaryCoordNoPerspSampleAMD' : 4994,
...@@ -832,6 +836,7 @@ spv = { ...@@ -832,6 +836,7 @@ spv = {
'GroupNonUniformQuad' : 68, 'GroupNonUniformQuad' : 68,
'ShaderLayer' : 69, 'ShaderLayer' : 69,
'ShaderViewportIndex' : 70, 'ShaderViewportIndex' : 70,
'FragmentShadingRateKHR' : 4422,
'SubgroupBallotKHR' : 4423, 'SubgroupBallotKHR' : 4423,
'DrawParameters' : 4427, 'DrawParameters' : 4427,
'SubgroupVoteKHR' : 4431, 'SubgroupVoteKHR' : 4431,
...@@ -862,6 +867,7 @@ spv = { ...@@ -862,6 +867,7 @@ spv = {
'FragmentMaskAMD' : 5010, 'FragmentMaskAMD' : 5010,
'StencilExportEXT' : 5013, 'StencilExportEXT' : 5013,
'ImageReadWriteLodAMD' : 5015, 'ImageReadWriteLodAMD' : 5015,
'Int64ImageEXT' : 5016,
'ShaderClockKHR' : 5055, 'ShaderClockKHR' : 5055,
'SampleMaskOverrideCoverageNV' : 5249, 'SampleMaskOverrideCoverageNV' : 5249,
'GeometryShaderPassthroughNV' : 5251, 'GeometryShaderPassthroughNV' : 5251,
...@@ -981,6 +987,21 @@ spv = { ...@@ -981,6 +987,21 @@ spv = {
'RayQueryCandidateIntersectionAABBKHR' : 1, 'RayQueryCandidateIntersectionAABBKHR' : 1,
}, },
'FragmentShadingRateShift' : {
'Vertical2Pixels' : 0,
'Vertical4Pixels' : 1,
'Horizontal2Pixels' : 2,
'Horizontal4Pixels' : 3,
},
'FragmentShadingRateMask' : {
'MaskNone' : 0,
'Vertical2Pixels' : 0x00000001,
'Vertical4Pixels' : 0x00000002,
'Horizontal2Pixels' : 0x00000004,
'Horizontal4Pixels' : 0x00000008,
},
'Op' : { 'Op' : {
'OpNop' : 0, 'OpNop' : 0,
'OpUndef' : 1, 'OpUndef' : 1,
......
...@@ -52,7 +52,7 @@ module spv; ...@@ -52,7 +52,7 @@ module spv;
enum uint MagicNumber = 0x07230203; enum uint MagicNumber = 0x07230203;
enum uint Version = 0x00010500; enum uint Version = 0x00010500;
enum uint Revision = 3; enum uint Revision = 4;
enum uint OpCodeMask = 0xffff; enum uint OpCodeMask = 0xffff;
enum uint WordCountShift = 16; enum uint WordCountShift = 16;
...@@ -273,6 +273,8 @@ enum ImageFormat : uint ...@@ -273,6 +273,8 @@ enum ImageFormat : uint
Rg8ui = 37, Rg8ui = 37,
R16ui = 38, R16ui = 38,
R8ui = 39, R8ui = 39,
R64ui = 40,
R64i = 41,
} }
enum ImageChannelOrder : uint enum ImageChannelOrder : uint
...@@ -559,8 +561,10 @@ enum BuiltIn : uint ...@@ -559,8 +561,10 @@ enum BuiltIn : uint
BaseVertex = 4424, BaseVertex = 4424,
BaseInstance = 4425, BaseInstance = 4425,
DrawIndex = 4426, DrawIndex = 4426,
PrimitiveShadingRateKHR = 4432,
DeviceIndex = 4438, DeviceIndex = 4438,
ViewIndex = 4440, ViewIndex = 4440,
ShadingRateKHR = 4444,
BaryCoordNoPerspAMD = 4992, BaryCoordNoPerspAMD = 4992,
BaryCoordNoPerspCentroidAMD = 4993, BaryCoordNoPerspCentroidAMD = 4993,
BaryCoordNoPerspSampleAMD = 4994, BaryCoordNoPerspSampleAMD = 4994,
...@@ -877,6 +881,7 @@ enum Capability : uint ...@@ -877,6 +881,7 @@ enum Capability : uint
GroupNonUniformQuad = 68, GroupNonUniformQuad = 68,
ShaderLayer = 69, ShaderLayer = 69,
ShaderViewportIndex = 70, ShaderViewportIndex = 70,
FragmentShadingRateKHR = 4422,
SubgroupBallotKHR = 4423, SubgroupBallotKHR = 4423,
DrawParameters = 4427, DrawParameters = 4427,
SubgroupVoteKHR = 4431, SubgroupVoteKHR = 4431,
...@@ -907,6 +912,7 @@ enum Capability : uint ...@@ -907,6 +912,7 @@ enum Capability : uint
FragmentMaskAMD = 5010, FragmentMaskAMD = 5010,
StencilExportEXT = 5013, StencilExportEXT = 5013,
ImageReadWriteLodAMD = 5015, ImageReadWriteLodAMD = 5015,
Int64ImageEXT = 5016,
ShaderClockKHR = 5055, ShaderClockKHR = 5055,
SampleMaskOverrideCoverageNV = 5249, SampleMaskOverrideCoverageNV = 5249,
GeometryShaderPassthroughNV = 5251, GeometryShaderPassthroughNV = 5251,
...@@ -1031,6 +1037,23 @@ enum RayQueryCandidateIntersectionType : uint ...@@ -1031,6 +1037,23 @@ enum RayQueryCandidateIntersectionType : uint
RayQueryCandidateIntersectionAABBKHR = 1, RayQueryCandidateIntersectionAABBKHR = 1,
} }
enum FragmentShadingRateShift : uint
{
Vertical2Pixels = 0,
Vertical4Pixels = 1,
Horizontal2Pixels = 2,
Horizontal4Pixels = 3,
}
enum FragmentShadingRateMask : uint
{
MaskNone = 0,
Vertical2Pixels = 0x00000001,
Vertical4Pixels = 0x00000002,
Horizontal2Pixels = 0x00000004,
Horizontal4Pixels = 0x00000008,
}
enum Op : uint enum Op : uint
{ {
OpNop = 0, OpNop = 0,
......
...@@ -25,3 +25,4 @@ mk_extinst('AMD_shader_ballot', 'extinst.spv-amd-shader-ballot.grammar.json') ...@@ -25,3 +25,4 @@ mk_extinst('AMD_shader_ballot', 'extinst.spv-amd-shader-ballot.grammar.json')
mk_extinst('AMD_shader_explicit_vertex_parameter', 'extinst.spv-amd-shader-explicit-vertex-parameter.grammar.json') mk_extinst('AMD_shader_explicit_vertex_parameter', 'extinst.spv-amd-shader-explicit-vertex-parameter.grammar.json')
mk_extinst('AMD_shader_trinary_minmax', 'extinst.spv-amd-shader-trinary-minmax.grammar.json') mk_extinst('AMD_shader_trinary_minmax', 'extinst.spv-amd-shader-trinary-minmax.grammar.json')
mk_extinst('NonSemanticDebugPrintf', 'extinst.nonsemantic.debugprintf.grammar.json') mk_extinst('NonSemanticDebugPrintf', 'extinst.nonsemantic.debugprintf.grammar.json')
mk_extinst('NonSemanticClspvReflection', 'extinst.nonsemantic.clspvreflection.grammar.json')
...@@ -70,8 +70,8 @@ namespace { ...@@ -70,8 +70,8 @@ namespace {
static const int DocMagicNumber = 0x07230203; static const int DocMagicNumber = 0x07230203;
static const int DocVersion = 0x00010500; static const int DocVersion = 0x00010500;
static const int DocRevision = 3; static const int DocRevision = 4;
#define DocRevisionString "3" #define DocRevisionString "4"
static const std::string DocCopyright; static const std::string DocCopyright;
static const std::string DocComment1; static const std::string DocComment1;
static const std::string DocComment2; static const std::string DocComment2;
......
...@@ -81,6 +81,7 @@ EnumValues RayFlagsParams; ...@@ -81,6 +81,7 @@ EnumValues RayFlagsParams;
EnumValues RayQueryIntersectionParams; EnumValues RayQueryIntersectionParams;
EnumValues RayQueryCommittedIntersectionTypeParams; EnumValues RayQueryCommittedIntersectionTypeParams;
EnumValues RayQueryCandidateIntersectionTypeParams; EnumValues RayQueryCandidateIntersectionTypeParams;
EnumValues FragmentShadingRateParams;
std::pair<bool, std::string> ReadFile(const std::string& path) std::pair<bool, std::string> ReadFile(const std::string& path)
{ {
...@@ -215,6 +216,8 @@ ClassOptionality ToOperandClassAndOptionality(const std::string& operandKind, co ...@@ -215,6 +216,8 @@ ClassOptionality ToOperandClassAndOptionality(const std::string& operandKind, co
type = OperandRayQueryCommittedIntersectionType; type = OperandRayQueryCommittedIntersectionType;
} else if (operandKind == "RayQueryCandidateIntersectionType") { } else if (operandKind == "RayQueryCandidateIntersectionType") {
type = OperandRayQueryCandidateIntersectionType; type = OperandRayQueryCandidateIntersectionType;
} else if (operandKind == "FragmentShadingRate") {
type = OperandFragmentShadingRate;
} }
if (type == OperandNone) { if (type == OperandNone) {
...@@ -483,6 +486,8 @@ void jsonToSpirv(const std::string& jsonPath, bool buildingHeaders) ...@@ -483,6 +486,8 @@ void jsonToSpirv(const std::string& jsonPath, bool buildingHeaders)
establishOperandClass(enumName, OperandRayQueryCommittedIntersectionType, &RayQueryCommittedIntersectionTypeParams, operandEnum, category); establishOperandClass(enumName, OperandRayQueryCommittedIntersectionType, &RayQueryCommittedIntersectionTypeParams, operandEnum, category);
} else if (enumName == "RayQueryCandidateIntersectionType") { } else if (enumName == "RayQueryCandidateIntersectionType") {
establishOperandClass(enumName, OperandRayQueryCandidateIntersectionType, &RayQueryCandidateIntersectionTypeParams, operandEnum, category); establishOperandClass(enumName, OperandRayQueryCandidateIntersectionType, &RayQueryCandidateIntersectionTypeParams, operandEnum, category);
} else if (enumName == "FragmentShadingRate") {
establishOperandClass(enumName, OperandFragmentShadingRate, &FragmentShadingRateParams, operandEnum, category);
} }
} }
} }
......
...@@ -88,6 +88,7 @@ enum OperandClass { ...@@ -88,6 +88,7 @@ enum OperandClass {
OperandRayQueryIntersection, OperandRayQueryIntersection,
OperandRayQueryCommittedIntersectionType, OperandRayQueryCommittedIntersectionType,
OperandRayQueryCandidateIntersectionType, OperandRayQueryCandidateIntersectionType,
OperandFragmentShadingRate,
OperandOpcode, OperandOpcode,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment