Browse Source

Updated spirv-headers.

Бранимир Караџић 5 years ago
parent
commit
7cf5eb0eba

+ 58 - 24
3rdparty/spirv-headers/include/spirv/spir-v.xml

@@ -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
-    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
     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  -->
@@ -77,28 +78,37 @@
     </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 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.
          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 +123,39 @@
     <ids type="opcode" start="5824" end="5951" vendor="Intel" comment="Contact [email protected]"/>
     <ids type="opcode" start="5824" end="5951" vendor="Intel" comment="Contact [email protected]"/>
     <ids type="opcode" start="5952" end="6015" vendor="Codeplay" comment="Contact [email protected]"/>
     <ids type="opcode" start="5952" end="6015" vendor="Codeplay" comment="Contact [email protected]"/>
     <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
+    <!-- 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="6080" end="4294967295" comment="Opcode range reservable for future use by vendors"/>
+    <ids type="opcode" start="6080" end="65535" 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, [email protected]"/>
+    <ids type="enumerant" start="4480" end="4991" vendor="Qualcomm" comment="Contact [email protected]"/>
+    <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 [email protected]"/>
+    <ids type="enumerant" start="5632" end="5695" vendor="Google" comment="Contact [email protected]"/>
+    <ids type="enumerant" start="5696" end="5823" vendor="Intel" comment="Contact [email protected]"/>
+    <ids type="enumerant" start="5824" end="5951" vendor="Intel" comment="Contact [email protected]"/>
+    <ids type="enumerant" start="5952" end="6015" vendor="Codeplay" comment="Contact [email protected]"/>
+    <ids type="enumerant" start="6016" end="6079" vendor="Khronos" comment="Contact @tobski"/>
+    <!-- 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="6080" 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 -->

+ 73 - 0
3rdparty/spirv-headers/include/spirv/unified1/NonSemanticClspvReflection.h

@@ -0,0 +1,73 @@
+// 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_

+ 237 - 0
3rdparty/spirv-headers/include/spirv/unified1/extinst.nonsemantic.clspvreflection.grammar.json

@@ -0,0 +1,237 @@
+{
+  "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" }
+      ]
+    }
+  ]
+}