Update tool

This commit is contained in:
red-prig 2022-01-24 14:33:02 +03:00
parent b0517dfee1
commit 45dd04e8f7
4 changed files with 1167 additions and 97 deletions

View File

@ -0,0 +1,642 @@
{
"copyright" : [
"Copyright (c) 2014-2016 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."
],
"version" : 100,
"revision" : 2,
"instructions" : [
{
"opname" : "Round",
"opcode" : 1,
"operands" : [
{ "kind" : "IdRef", "name" : "'x'" }
]
},
{
"opname" : "RoundEven",
"opcode" : 2,
"operands" : [
{ "kind" : "IdRef", "name" : "'x'" }
]
},
{
"opname" : "Trunc",
"opcode" : 3,
"operands" : [
{ "kind" : "IdRef", "name" : "'x'" }
]
},
{
"opname" : "FAbs",
"opcode" : 4,
"operands" : [
{ "kind" : "IdRef", "name" : "'x'" }
]
},
{
"opname" : "SAbs",
"opcode" : 5,
"operands" : [
{ "kind" : "IdRef", "name" : "'x'" }
]
},
{
"opname" : "FSign",
"opcode" : 6,
"operands" : [
{ "kind" : "IdRef", "name" : "'x'" }
]
},
{
"opname" : "SSign",
"opcode" : 7,
"operands" : [
{ "kind" : "IdRef", "name" : "'x'" }
]
},
{
"opname" : "Floor",
"opcode" : 8,
"operands" : [
{ "kind" : "IdRef", "name" : "'x'" }
]
},
{
"opname" : "Ceil",
"opcode" : 9,
"operands" : [
{ "kind" : "IdRef", "name" : "'x'" }
]
},
{
"opname" : "Fract",
"opcode" : 10,
"operands" : [
{ "kind" : "IdRef", "name" : "'x'" }
]
},
{
"opname" : "Radians",
"opcode" : 11,
"operands" : [
{ "kind" : "IdRef", "name" : "'degrees'" }
]
},
{
"opname" : "Degrees",
"opcode" : 12,
"operands" : [
{ "kind" : "IdRef", "name" : "'radians'" }
]
},
{
"opname" : "Sin",
"opcode" : 13,
"operands" : [
{ "kind" : "IdRef", "name" : "'x'" }
]
},
{
"opname" : "Cos",
"opcode" : 14,
"operands" : [
{ "kind" : "IdRef", "name" : "'x'" }
]
},
{
"opname" : "Tan",
"opcode" : 15,
"operands" : [
{ "kind" : "IdRef", "name" : "'x'" }
]
},
{
"opname" : "Asin",
"opcode" : 16,
"operands" : [
{ "kind" : "IdRef", "name" : "'x'" }
]
},
{
"opname" : "Acos",
"opcode" : 17,
"operands" : [
{ "kind" : "IdRef", "name" : "'x'" }
]
},
{
"opname" : "Atan",
"opcode" : 18,
"operands" : [
{ "kind" : "IdRef", "name" : "'y_over_x'" }
]
},
{
"opname" : "Sinh",
"opcode" : 19,
"operands" : [
{ "kind" : "IdRef", "name" : "'x'" }
]
},
{
"opname" : "Cosh",
"opcode" : 20,
"operands" : [
{ "kind" : "IdRef", "name" : "'x'" }
]
},
{
"opname" : "Tanh",
"opcode" : 21,
"operands" : [
{ "kind" : "IdRef", "name" : "'x'" }
]
},
{
"opname" : "Asinh",
"opcode" : 22,
"operands" : [
{ "kind" : "IdRef", "name" : "'x'" }
]
},
{
"opname" : "Acosh",
"opcode" : 23,
"operands" : [
{ "kind" : "IdRef", "name" : "'x'" }
]
},
{
"opname" : "Atanh",
"opcode" : 24,
"operands" : [
{ "kind" : "IdRef", "name" : "'x'" }
]
},
{
"opname" : "Atan2",
"opcode" : 25,
"operands" : [
{ "kind" : "IdRef", "name" : "'y'" },
{ "kind" : "IdRef", "name" : "'x'" }
]
},
{
"opname" : "Pow",
"opcode" : 26,
"operands" : [
{ "kind" : "IdRef", "name" : "'x'" },
{ "kind" : "IdRef", "name" : "'y'" }
]
},
{
"opname" : "Exp",
"opcode" : 27,
"operands" : [
{ "kind" : "IdRef", "name" : "'x'" }
]
},
{
"opname" : "Log",
"opcode" : 28,
"operands" : [
{ "kind" : "IdRef", "name" : "'x'" }
]
},
{
"opname" : "Exp2",
"opcode" : 29,
"operands" : [
{ "kind" : "IdRef", "name" : "'x'" }
]
},
{
"opname" : "Log2",
"opcode" : 30,
"operands" : [
{ "kind" : "IdRef", "name" : "'x'" }
]
},
{
"opname" : "Sqrt",
"opcode" : 31,
"operands" : [
{ "kind" : "IdRef", "name" : "'x'" }
]
},
{
"opname" : "InverseSqrt",
"opcode" : 32,
"operands" : [
{ "kind" : "IdRef", "name" : "'x'" }
]
},
{
"opname" : "Determinant",
"opcode" : 33,
"operands" : [
{ "kind" : "IdRef", "name" : "'x'" }
]
},
{
"opname" : "MatrixInverse",
"opcode" : 34,
"operands" : [
{ "kind" : "IdRef", "name" : "'x'" }
]
},
{
"opname" : "Modf",
"opcode" : 35,
"operands" : [
{ "kind" : "IdRef", "name" : "'x'" },
{ "kind" : "IdRef", "name" : "'i'" }
]
},
{
"opname" : "ModfStruct",
"opcode" : 36,
"operands" : [
{ "kind" : "IdRef", "name" : "'x'" }
]
},
{
"opname" : "FMin",
"opcode" : 37,
"operands" : [
{ "kind" : "IdRef", "name" : "'x'" },
{ "kind" : "IdRef", "name" : "'y'" }
]
},
{
"opname" : "UMin",
"opcode" : 38,
"operands" : [
{ "kind" : "IdRef", "name" : "'x'" },
{ "kind" : "IdRef", "name" : "'y'" }
]
},
{
"opname" : "SMin",
"opcode" : 39,
"operands" : [
{ "kind" : "IdRef", "name" : "'x'" },
{ "kind" : "IdRef", "name" : "'y'" }
]
},
{
"opname" : "FMax",
"opcode" : 40,
"operands" : [
{ "kind" : "IdRef", "name" : "'x'" },
{ "kind" : "IdRef", "name" : "'y'" }
]
},
{
"opname" : "UMax",
"opcode" : 41,
"operands" : [
{ "kind" : "IdRef", "name" : "'x'" },
{ "kind" : "IdRef", "name" : "'y'" }
]
},
{
"opname" : "SMax",
"opcode" : 42,
"operands" : [
{ "kind" : "IdRef", "name" : "'x'" },
{ "kind" : "IdRef", "name" : "'y'" }
]
},
{
"opname" : "FClamp",
"opcode" : 43,
"operands" : [
{ "kind" : "IdRef", "name" : "'x'" },
{ "kind" : "IdRef", "name" : "'minVal'" },
{ "kind" : "IdRef", "name" : "'maxVal'" }
]
},
{
"opname" : "UClamp",
"opcode" : 44,
"operands" : [
{ "kind" : "IdRef", "name" : "'x'" },
{ "kind" : "IdRef", "name" : "'minVal'" },
{ "kind" : "IdRef", "name" : "'maxVal'" }
]
},
{
"opname" : "SClamp",
"opcode" : 45,
"operands" : [
{ "kind" : "IdRef", "name" : "'x'" },
{ "kind" : "IdRef", "name" : "'minVal'" },
{ "kind" : "IdRef", "name" : "'maxVal'" }
]
},
{
"opname" : "FMix",
"opcode" : 46,
"operands" : [
{ "kind" : "IdRef", "name" : "'x'" },
{ "kind" : "IdRef", "name" : "'y'" },
{ "kind" : "IdRef", "name" : "'a'" }
]
},
{
"opname" : "IMix",
"opcode" : 47,
"operands" : [
{ "kind" : "IdRef", "name" : "'x'" },
{ "kind" : "IdRef", "name" : "'y'" },
{ "kind" : "IdRef", "name" : "'a'" }
]
},
{
"opname" : "Step",
"opcode" : 48,
"operands" : [
{ "kind" : "IdRef", "name" : "'edge'" },
{ "kind" : "IdRef", "name" : "'x'" }
]
},
{
"opname" : "SmoothStep",
"opcode" : 49,
"operands" : [
{ "kind" : "IdRef", "name" : "'edge0'" },
{ "kind" : "IdRef", "name" : "'edge1'" },
{ "kind" : "IdRef", "name" : "'x'" }
]
},
{
"opname" : "Fma",
"opcode" : 50,
"operands" : [
{ "kind" : "IdRef", "name" : "'a'" },
{ "kind" : "IdRef", "name" : "'b'" },
{ "kind" : "IdRef", "name" : "'c'" }
]
},
{
"opname" : "Frexp",
"opcode" : 51,
"operands" : [
{ "kind" : "IdRef", "name" : "'x'" },
{ "kind" : "IdRef", "name" : "'exp'" }
]
},
{
"opname" : "FrexpStruct",
"opcode" : 52,
"operands" : [
{ "kind" : "IdRef", "name" : "'x'" }
]
},
{
"opname" : "Ldexp",
"opcode" : 53,
"operands" : [
{ "kind" : "IdRef", "name" : "'x'" },
{ "kind" : "IdRef", "name" : "'exp'" }
]
},
{
"opname" : "PackSnorm4x8",
"opcode" : 54,
"operands" : [
{ "kind" : "IdRef", "name" : "'v'" }
]
},
{
"opname" : "PackUnorm4x8",
"opcode" : 55,
"operands" : [
{ "kind" : "IdRef", "name" : "'v'" }
]
},
{
"opname" : "PackSnorm2x16",
"opcode" : 56,
"operands" : [
{ "kind" : "IdRef", "name" : "'v'" }
]
},
{
"opname" : "PackUnorm2x16",
"opcode" : 57,
"operands" : [
{ "kind" : "IdRef", "name" : "'v'" }
]
},
{
"opname" : "PackHalf2x16",
"opcode" : 58,
"operands" : [
{ "kind" : "IdRef", "name" : "'v'" }
]
},
{
"opname" : "PackDouble2x32",
"opcode" : 59,
"operands" : [
{ "kind" : "IdRef", "name" : "'v'" }
],
"capabilities" : [ "Float64" ]
},
{
"opname" : "UnpackSnorm2x16",
"opcode" : 60,
"operands" : [
{ "kind" : "IdRef", "name" : "'p'" }
]
},
{
"opname" : "UnpackUnorm2x16",
"opcode" : 61,
"operands" : [
{ "kind" : "IdRef", "name" : "'p'" }
]
},
{
"opname" : "UnpackHalf2x16",
"opcode" : 62,
"operands" : [
{ "kind" : "IdRef", "name" : "'v'" }
]
},
{
"opname" : "UnpackSnorm4x8",
"opcode" : 63,
"operands" : [
{ "kind" : "IdRef", "name" : "'p'" }
]
},
{
"opname" : "UnpackUnorm4x8",
"opcode" : 64,
"operands" : [
{ "kind" : "IdRef", "name" : "'p'" }
]
},
{
"opname" : "UnpackDouble2x32",
"opcode" : 65,
"operands" : [
{ "kind" : "IdRef", "name" : "'v'" }
],
"capabilities" : [ "Float64" ]
},
{
"opname" : "Length",
"opcode" : 66,
"operands" : [
{ "kind" : "IdRef", "name" : "'x'" }
]
},
{
"opname" : "Distance",
"opcode" : 67,
"operands" : [
{ "kind" : "IdRef", "name" : "'p0'" },
{ "kind" : "IdRef", "name" : "'p1'" }
]
},
{
"opname" : "Cross",
"opcode" : 68,
"operands" : [
{ "kind" : "IdRef", "name" : "'x'" },
{ "kind" : "IdRef", "name" : "'y'" }
]
},
{
"opname" : "Normalize",
"opcode" : 69,
"operands" : [
{ "kind" : "IdRef", "name" : "'x'" }
]
},
{
"opname" : "FaceForward",
"opcode" : 70,
"operands" : [
{ "kind" : "IdRef", "name" : "'N'" },
{ "kind" : "IdRef", "name" : "'I'" },
{ "kind" : "IdRef", "name" : "'Nref'" }
]
},
{
"opname" : "Reflect",
"opcode" : 71,
"operands" : [
{ "kind" : "IdRef", "name" : "'I'" },
{ "kind" : "IdRef", "name" : "'N'" }
]
},
{
"opname" : "Refract",
"opcode" : 72,
"operands" : [
{ "kind" : "IdRef", "name" : "'I'" },
{ "kind" : "IdRef", "name" : "'N'" },
{ "kind" : "IdRef", "name" : "'eta'" }
]
},
{
"opname" : "FindILsb",
"opcode" : 73,
"operands" : [
{ "kind" : "IdRef", "name" : "'Value'" }
]
},
{
"opname" : "FindSMsb",
"opcode" : 74,
"operands" : [
{ "kind" : "IdRef", "name" : "'Value'" }
]
},
{
"opname" : "FindUMsb",
"opcode" : 75,
"operands" : [
{ "kind" : "IdRef", "name" : "'Value'" }
]
},
{
"opname" : "InterpolateAtCentroid",
"opcode" : 76,
"operands" : [
{ "kind" : "IdRef", "name" : "'interpolant'" }
],
"capabilities" : [ "InterpolationFunction" ]
},
{
"opname" : "InterpolateAtSample",
"opcode" : 77,
"operands" : [
{ "kind" : "IdRef", "name" : "'interpolant'" },
{ "kind" : "IdRef", "name" : "'sample'" }
],
"capabilities" : [ "InterpolationFunction" ]
},
{
"opname" : "InterpolateAtOffset",
"opcode" : 78,
"operands" : [
{ "kind" : "IdRef", "name" : "'interpolant'" },
{ "kind" : "IdRef", "name" : "'offset'" }
],
"capabilities" : [ "InterpolationFunction" ]
},
{
"opname" : "NMin",
"opcode" : 79,
"operands" : [
{ "kind" : "IdRef", "name" : "'x'" },
{ "kind" : "IdRef", "name" : "'y'" }
]
},
{
"opname" : "NMax",
"opcode" : 80,
"operands" : [
{ "kind" : "IdRef", "name" : "'x'" },
{ "kind" : "IdRef", "name" : "'y'" }
]
},
{
"opname" : "NClamp",
"opcode" : 81,
"operands" : [
{ "kind" : "IdRef", "name" : "'x'" },
{ "kind" : "IdRef", "name" : "'minVal'" },
{ "kind" : "IdRef", "name" : "'maxVal'" }
]
}
]
}

View File

@ -26,8 +26,8 @@
], ],
"magic_number" : "0x07230203", "magic_number" : "0x07230203",
"major_version" : 1, "major_version" : 1,
"minor_version" : 5, "minor_version" : 6,
"revision" : 4, "revision" : 1,
"instruction_printing_class" : [ "instruction_printing_class" : [
{ {
"tag" : "@exclude" "tag" : "@exclude"
@ -394,9 +394,7 @@
"opcode" : 30, "opcode" : 30,
"operands" : [ "operands" : [
{ "kind" : "IdResult" }, { "kind" : "IdResult" },
{ "kind" : "IdRef", { "kind" : "IdRef", "quantifier" : "*", "name" : "'Member 0 type', +\n'member 1 type', +\n..." }
"quantifier" : "*",
"name" : "'Member 0 type', +\n'member 1 type', +\n..." }
] ]
}, },
{ {
@ -1737,7 +1735,8 @@
{ "kind" : "IdRef", "name" : "'x'" }, { "kind" : "IdRef", "name" : "'x'" },
{ "kind" : "IdRef", "name" : "'y'" } { "kind" : "IdRef", "name" : "'y'" }
], ],
"capabilities" : [ "Kernel" ] "capabilities" : [ "Kernel" ],
"lastVersion" : "1.5"
}, },
{ {
"opname" : "OpOrdered", "opname" : "OpOrdered",
@ -4111,7 +4110,7 @@
"SPV_KHR_terminate_invocation" "SPV_KHR_terminate_invocation"
], ],
"capabilities" : [ "Shader" ], "capabilities" : [ "Shader" ],
"version" : "None" "version" : "1.6"
}, },
{ {
"opname" : "OpSubgroupBallotKHR", "opname" : "OpSubgroupBallotKHR",
@ -4262,6 +4261,20 @@
"extensions" : [ "SPV_KHR_ray_tracing" ], "extensions" : [ "SPV_KHR_ray_tracing" ],
"version" : "None" "version" : "None"
}, },
{
"opname" : "OpSDot",
"class" : "Arithmetic",
"opcode" : 4450,
"operands" : [
{ "kind" : "IdResultType" },
{ "kind" : "IdResult" },
{ "kind" : "IdRef", "name" : "'Vector 1'" },
{ "kind" : "IdRef", "name" : "'Vector 2'" },
{ "kind" : "PackedVectorFormat", "name" : "'Packed Vector Format'", "quantifier" : "?" }
],
"capabilities" : [ "DotProduct" ],
"version" : "1.6"
},
{ {
"opname" : "OpSDotKHR", "opname" : "OpSDotKHR",
"class" : "Arithmetic", "class" : "Arithmetic",
@ -4274,7 +4287,22 @@
{ "kind" : "PackedVectorFormat", "name" : "'Packed Vector Format'", "quantifier" : "?" } { "kind" : "PackedVectorFormat", "name" : "'Packed Vector Format'", "quantifier" : "?" }
], ],
"capabilities" : [ "DotProductKHR" ], "capabilities" : [ "DotProductKHR" ],
"version" : "None" "extensions" : [ "SPV_KHR_integer_dot_product" ],
"version" : "1.6"
},
{
"opname" : "OpUDot",
"class" : "Arithmetic",
"opcode" : 4451,
"operands" : [
{ "kind" : "IdResultType" },
{ "kind" : "IdResult" },
{ "kind" : "IdRef", "name" : "'Vector 1'" },
{ "kind" : "IdRef", "name" : "'Vector 2'" },
{ "kind" : "PackedVectorFormat", "name" : "'Packed Vector Format'", "quantifier" : "?" }
],
"capabilities" : [ "DotProduct" ],
"version" : "1.6"
}, },
{ {
"opname" : "OpUDotKHR", "opname" : "OpUDotKHR",
@ -4288,7 +4316,22 @@
{ "kind" : "PackedVectorFormat", "name" : "'Packed Vector Format'", "quantifier" : "?" } { "kind" : "PackedVectorFormat", "name" : "'Packed Vector Format'", "quantifier" : "?" }
], ],
"capabilities" : [ "DotProductKHR" ], "capabilities" : [ "DotProductKHR" ],
"version" : "None" "extensions" : [ "SPV_KHR_integer_dot_product" ],
"version" : "1.6"
},
{
"opname" : "OpSUDot",
"class" : "Arithmetic",
"opcode" : 4452,
"operands" : [
{ "kind" : "IdResultType" },
{ "kind" : "IdResult" },
{ "kind" : "IdRef", "name" : "'Vector 1'" },
{ "kind" : "IdRef", "name" : "'Vector 2'" },
{ "kind" : "PackedVectorFormat", "name" : "'Packed Vector Format'", "quantifier" : "?" }
],
"capabilities" : [ "DotProduct" ],
"version" : "1.6"
}, },
{ {
"opname" : "OpSUDotKHR", "opname" : "OpSUDotKHR",
@ -4302,7 +4345,23 @@
{ "kind" : "PackedVectorFormat", "name" : "'Packed Vector Format'", "quantifier" : "?" } { "kind" : "PackedVectorFormat", "name" : "'Packed Vector Format'", "quantifier" : "?" }
], ],
"capabilities" : [ "DotProductKHR" ], "capabilities" : [ "DotProductKHR" ],
"version" : "None" "extensions" : [ "SPV_KHR_integer_dot_product" ],
"version" : "1.6"
},
{
"opname" : "OpSDotAccSat",
"class" : "Arithmetic",
"opcode" : 4453,
"operands" : [
{ "kind" : "IdResultType" },
{ "kind" : "IdResult" },
{ "kind" : "IdRef", "name" : "'Vector 1'" },
{ "kind" : "IdRef", "name" : "'Vector 2'" },
{ "kind" : "IdRef", "name" : "'Accumulator'" },
{ "kind" : "PackedVectorFormat", "name" : "'Packed Vector Format'", "quantifier" : "?" }
],
"capabilities" : [ "DotProduct" ],
"version" : "1.6"
}, },
{ {
"opname" : "OpSDotAccSatKHR", "opname" : "OpSDotAccSatKHR",
@ -4317,7 +4376,23 @@
{ "kind" : "PackedVectorFormat", "name" : "'Packed Vector Format'", "quantifier" : "?" } { "kind" : "PackedVectorFormat", "name" : "'Packed Vector Format'", "quantifier" : "?" }
], ],
"capabilities" : [ "DotProductKHR" ], "capabilities" : [ "DotProductKHR" ],
"version" : "None" "extensions" : [ "SPV_KHR_integer_dot_product" ],
"version" : "1.6"
},
{
"opname" : "OpUDotAccSat",
"class" : "Arithmetic",
"opcode" : 4454,
"operands" : [
{ "kind" : "IdResultType" },
{ "kind" : "IdResult" },
{ "kind" : "IdRef", "name" : "'Vector 1'" },
{ "kind" : "IdRef", "name" : "'Vector 2'" },
{ "kind" : "IdRef", "name" : "'Accumulator'" },
{ "kind" : "PackedVectorFormat", "name" : "'Packed Vector Format'", "quantifier" : "?" }
],
"capabilities" : [ "DotProduct" ],
"version" : "1.6"
}, },
{ {
"opname" : "OpUDotAccSatKHR", "opname" : "OpUDotAccSatKHR",
@ -4332,7 +4407,23 @@
{ "kind" : "PackedVectorFormat", "name" : "'Packed Vector Format'", "quantifier" : "?" } { "kind" : "PackedVectorFormat", "name" : "'Packed Vector Format'", "quantifier" : "?" }
], ],
"capabilities" : [ "DotProductKHR" ], "capabilities" : [ "DotProductKHR" ],
"version" : "None" "extensions" : [ "SPV_KHR_integer_dot_product" ],
"version" : "1.6"
},
{
"opname" : "OpSUDotAccSat",
"class" : "Arithmetic",
"opcode" : 4455,
"operands" : [
{ "kind" : "IdResultType" },
{ "kind" : "IdResult" },
{ "kind" : "IdRef", "name" : "'Vector 1'" },
{ "kind" : "IdRef", "name" : "'Vector 2'" },
{ "kind" : "IdRef", "name" : "'Accumulator'" },
{ "kind" : "PackedVectorFormat", "name" : "'Packed Vector Format'", "quantifier" : "?" }
],
"capabilities" : [ "DotProduct" ],
"version" : "1.6"
}, },
{ {
"opname" : "OpSUDotAccSatKHR", "opname" : "OpSUDotAccSatKHR",
@ -4347,7 +4438,8 @@
{ "kind" : "PackedVectorFormat", "name" : "'Packed Vector Format'", "quantifier" : "?" } { "kind" : "PackedVectorFormat", "name" : "'Packed Vector Format'", "quantifier" : "?" }
], ],
"capabilities" : [ "DotProductKHR" ], "capabilities" : [ "DotProductKHR" ],
"version" : "None" "extensions" : [ "SPV_KHR_integer_dot_product" ],
"version" : "1.6"
}, },
{ {
"opname" : "OpTypeRayQueryKHR", "opname" : "OpTypeRayQueryKHR",
@ -4927,12 +5019,18 @@
"version" : "None" "version" : "None"
}, },
{ {
"opname" : "OpDemoteToHelperInvocationEXT", "opname" : "OpDemoteToHelperInvocation",
"class" : "Reserved", "class" : "Control-Flow",
"opcode" : 5380, "opcode" : 5380,
"capabilities" : [ "DemoteToHelperInvocationEXT" ], "capabilities" : [ "DemoteToHelperInvocation" ],
"extensions" : [ "SPV_EXT_demote_to_helper_invocation" ], "version" : "1.6"
"version" : "None" },
{
"opname" : "OpDemoteToHelperInvocationEXT",
"class" : "Control-Flow",
"opcode" : 5380,
"capabilities" : [ "DemoteToHelperInvocation" ],
"version" : "1.6"
}, },
{ {
"opname" : "OpIsHelperInvocationEXT", "opname" : "OpIsHelperInvocationEXT",
@ -4946,6 +5044,88 @@
"extensions" : [ "SPV_EXT_demote_to_helper_invocation" ], "extensions" : [ "SPV_EXT_demote_to_helper_invocation" ],
"version" : "None" "version" : "None"
}, },
{
"opname" : "OpConvertUToImageNV",
"class" : "Reserved",
"opcode" : 5391,
"operands" : [
{ "kind" : "IdResultType" },
{ "kind" : "IdResult" },
{ "kind" : "IdRef", "name" : "'Operand'" }
],
"capabilities" : [ "BindlessTextureNV" ],
"version" : "None"
},
{
"opname" : "OpConvertUToSamplerNV",
"class" : "Reserved",
"opcode" : 5392,
"operands" : [
{ "kind" : "IdResultType" },
{ "kind" : "IdResult" },
{ "kind" : "IdRef", "name" : "'Operand'" }
],
"capabilities" : [ "BindlessTextureNV" ],
"version" : "None"
},
{
"opname" : "OpConvertImageToUNV",
"class" : "Reserved",
"opcode" : 5393,
"operands" : [
{ "kind" : "IdResultType" },
{ "kind" : "IdResult" },
{ "kind" : "IdRef", "name" : "'Operand'" }
],
"capabilities" : [ "BindlessTextureNV" ],
"version" : "None"
},
{
"opname" : "OpConvertSamplerToUNV",
"class" : "Reserved",
"opcode" : 5394,
"operands" : [
{ "kind" : "IdResultType" },
{ "kind" : "IdResult" },
{ "kind" : "IdRef", "name" : "'Operand'" }
],
"capabilities" : [ "BindlessTextureNV" ],
"version" : "None"
},
{
"opname" : "OpConvertUToSampledImageNV",
"class" : "Reserved",
"opcode" : 5395,
"operands" : [
{ "kind" : "IdResultType" },
{ "kind" : "IdResult" },
{ "kind" : "IdRef", "name" : "'Operand'" }
],
"capabilities" : [ "BindlessTextureNV" ],
"version" : "None"
},
{
"opname" : "OpConvertSampledImageToUNV",
"class" : "Reserved",
"opcode" : 5396,
"operands" : [
{ "kind" : "IdResultType" },
{ "kind" : "IdResult" },
{ "kind" : "IdRef", "name" : "'Operand'" }
],
"capabilities" : [ "BindlessTextureNV" ],
"version" : "None"
},
{
"opname" : "OpSamplerImageAddressingModeNV",
"class" : "Reserved",
"opcode" : 5397,
"operands" : [
{ "kind" : "LiteralInteger", "name" : "'Bit Width'" }
],
"capabilities" : [ "BindlessTextureNV" ],
"version" : "None"
},
{ {
"opname" : "OpSubgroupShuffleINTEL", "opname" : "OpSubgroupShuffleINTEL",
"class" : "Group", "class" : "Group",
@ -5258,7 +5438,7 @@
"version" : "None" "version" : "None"
}, },
{ {
"opname" : "OpConstFunctionPointerINTEL", "opname" : "OpConstantFunctionPointerINTEL",
"class" : "@exclude", "class" : "@exclude",
"opcode" : 5600, "opcode" : 5600,
"operands" : [ "operands" : [
@ -7678,24 +7858,6 @@
"capabilities" : [ "ArbitraryPrecisionFloatingPointINTEL" ], "capabilities" : [ "ArbitraryPrecisionFloatingPointINTEL" ],
"version" : "None" "version" : "None"
}, },
{
"opname" : "OpArbitraryFloatPowNINTEL",
"class" : "@exclude",
"opcode" : 5882,
"operands" : [
{ "kind" : "IdResultType" },
{ "kind" : "IdResult" },
{ "kind" : "IdRef", "name" : "'A'" },
{ "kind" : "LiteralInteger", "name" : "'M1'" },
{ "kind" : "IdRef", "name" : "'B'" },
{ "kind" : "LiteralInteger", "name" : "'Mout'" },
{ "kind" : "LiteralInteger", "name" : "'EnableSubnormals'" },
{ "kind" : "LiteralInteger", "name" : "'RoundingMode'" },
{ "kind" : "LiteralInteger", "name" : "'RoundingAccuracy'" }
],
"capabilities" : [ "ArbitraryPrecisionFloatingPointINTEL" ],
"version" : "None"
},
{ {
"opname" : "OpLoopControlINTEL", "opname" : "OpLoopControlINTEL",
"class" : "Reserved", "class" : "Reserved",
@ -8495,6 +8657,18 @@
"enumerant" : "ZeroExtend", "enumerant" : "ZeroExtend",
"value" : "0x2000", "value" : "0x2000",
"version" : "1.4" "version" : "1.4"
},
{
"enumerant" : "Nontemporal",
"value" : "0x4000",
"version" : "1.6"
},
{
"enumerant" : "Offsets",
"value" : "0x10000",
"parameters" : [
{ "kind" : "IdRef" }
]
} }
] ]
}, },
@ -8508,40 +8682,35 @@
}, },
{ {
"enumerant" : "NotNaN", "enumerant" : "NotNaN",
"value" : "0x0001", "value" : "0x0001"
"capabilities" : [ "Kernel" ]
}, },
{ {
"enumerant" : "NotInf", "enumerant" : "NotInf",
"value" : "0x0002", "value" : "0x0002"
"capabilities" : [ "Kernel" ]
}, },
{ {
"enumerant" : "NSZ", "enumerant" : "NSZ",
"value" : "0x0004", "value" : "0x0004"
"capabilities" : [ "Kernel" ]
}, },
{ {
"enumerant" : "AllowRecip", "enumerant" : "AllowRecip",
"value" : "0x0008", "value" : "0x0008"
"capabilities" : [ "Kernel" ]
}, },
{ {
"enumerant" : "Fast", "enumerant" : "Fast",
"value" : "0x0010", "value" : "0x0010"
"capabilities" : [ "Kernel" ]
}, },
{ {
"enumerant" : "AllowContractFastINTEL", "enumerant" : "AllowContractFastINTEL",
"value" : "0x10000", "value" : "0x10000",
"capabilities" : [ "FPFastMathModeINTEL" ], "capabilities" : [ "FPFastMathModeINTEL" ],
"version" : "None" "version" : "None"
}, },
{ {
"enumerant" : "AllowReassocINTEL", "enumerant" : "AllowReassocINTEL",
"value" : "0x20000", "value" : "0x20000",
"capabilities" : [ "FPFastMathModeINTEL" ], "capabilities" : [ "FPFastMathModeINTEL" ],
"version" : "None" "version" : "None"
} }
] ]
}, },
@ -10813,12 +10982,12 @@
{ {
"enumerant" : "Uniform", "enumerant" : "Uniform",
"value" : 26, "value" : 26,
"capabilities" : [ "Shader" ] "capabilities" : [ "Shader", "UniformDecoration" ]
}, },
{ {
"enumerant" : "UniformId", "enumerant" : "UniformId",
"value" : 27, "value" : 27,
"capabilities" : [ "Shader" ], "capabilities" : [ "Shader", "UniformDecoration" ],
"parameters" : [ "parameters" : [
{ "kind" : "IdScope", "name" : "'Execution'" } { "kind" : "IdScope", "name" : "'Execution'" }
], ],
@ -11050,11 +11219,18 @@
"extensions" : [ "SPV_NV_mesh_shader" ], "extensions" : [ "SPV_NV_mesh_shader" ],
"version" : "None" "version" : "None"
}, },
{
"enumerant" : "PerVertexKHR",
"value" : 5285,
"capabilities" : [ "FragmentBarycentricNV", "FragmentBarycentricKHR" ],
"extensions" : [ "SPV_NV_fragment_shader_barycentric", "SPV_KHR_fragment_shader_barycentric" ],
"version" : "None"
},
{ {
"enumerant" : "PerVertexNV", "enumerant" : "PerVertexNV",
"value" : 5285, "value" : 5285,
"capabilities" : [ "FragmentBarycentricNV" ], "capabilities" : [ "FragmentBarycentricNV", "FragmentBarycentricKHR" ],
"extensions" : [ "SPV_NV_fragment_shader_barycentric" ], "extensions" : [ "SPV_NV_fragment_shader_barycentric", "SPV_KHR_fragment_shader_barycentric" ],
"version" : "None" "version" : "None"
}, },
{ {
@ -11098,6 +11274,30 @@
"extensions" : [ "SPV_EXT_physical_storage_buffer" ], "extensions" : [ "SPV_EXT_physical_storage_buffer" ],
"version" : "1.5" "version" : "1.5"
}, },
{
"enumerant" : "BindlessSamplerNV",
"value" : 5398,
"capabilities" : [ "BindlessTextureNV" ],
"version" : "None"
},
{
"enumerant" : "BindlessImageNV",
"value" : 5399,
"capabilities" : [ "BindlessTextureNV" ],
"version" : "None"
},
{
"enumerant" : "BoundSamplerNV",
"value" : 5400,
"capabilities" : [ "BindlessTextureNV" ],
"version" : "None"
},
{
"enumerant" : "BoundImageNV",
"value" : 5401,
"capabilities" : [ "BindlessTextureNV" ],
"version" : "None"
},
{ {
"enumerant" : "SIMTCallINTEL", "enumerant" : "SIMTCallINTEL",
"value" : 5599, "value" : 5599,
@ -11418,6 +11618,12 @@
"value" : 6087, "value" : 6087,
"capabilities" : [ "VectorComputeINTEL" ], "capabilities" : [ "VectorComputeINTEL" ],
"version" : "None" "version" : "None"
},
{
"enumerant" : "MediaBlockIOINTEL",
"value" : 6140,
"capabilities" : [ "VectorComputeINTEL" ],
"version" : "None"
} }
] ]
}, },
@ -11885,18 +12091,32 @@
"extensions" : [ "SPV_NV_mesh_shader" ], "extensions" : [ "SPV_NV_mesh_shader" ],
"version" : "None" "version" : "None"
}, },
{
"enumerant" : "BaryCoordKHR",
"value" : 5286,
"capabilities" : [ "FragmentBarycentricNV", "FragmentBarycentricKHR" ],
"extensions" : [ "SPV_NV_fragment_shader_barycentric", "SPV_KHR_fragment_shader_barycentric" ],
"version" : "None"
},
{ {
"enumerant" : "BaryCoordNV", "enumerant" : "BaryCoordNV",
"value" : 5286, "value" : 5286,
"capabilities" : [ "FragmentBarycentricNV" ], "capabilities" : [ "FragmentBarycentricNV", "FragmentBarycentricKHR" ],
"extensions" : [ "SPV_NV_fragment_shader_barycentric" ], "extensions" : [ "SPV_NV_fragment_shader_barycentric", "SPV_KHR_fragment_shader_barycentric" ],
"version" : "None"
},
{
"enumerant" : "BaryCoordNoPerspKHR",
"value" : 5287,
"capabilities" : [ "FragmentBarycentricNV", "FragmentBarycentricKHR" ],
"extensions" : [ "SPV_NV_fragment_shader_barycentric", "SPV_KHR_fragment_shader_barycentric" ],
"version" : "None" "version" : "None"
}, },
{ {
"enumerant" : "BaryCoordNoPerspNV", "enumerant" : "BaryCoordNoPerspNV",
"value" : 5287, "value" : 5287,
"capabilities" : [ "FragmentBarycentricNV" ], "capabilities" : [ "FragmentBarycentricNV", "FragmentBarycentricKHR" ],
"extensions" : [ "SPV_NV_fragment_shader_barycentric" ], "extensions" : [ "SPV_NV_fragment_shader_barycentric", "SPV_KHR_fragment_shader_barycentric" ],
"version" : "None" "version" : "None"
}, },
{ {
@ -12621,6 +12841,11 @@
"value" : 70, "value" : 70,
"version" : "1.5" "version" : "1.5"
}, },
{
"enumerant" : "UniformDecoration",
"value" : 71,
"version" : "1.6"
},
{ {
"enumerant" : "FragmentShadingRateKHR", "enumerant" : "FragmentShadingRateKHR",
"value" : 4422, "value" : 4422,
@ -12946,10 +13171,16 @@
"extensions" : [ "SPV_NV_shader_image_footprint" ], "extensions" : [ "SPV_NV_shader_image_footprint" ],
"version" : "None" "version" : "None"
}, },
{
"enumerant" : "FragmentBarycentricKHR",
"value" : 5284,
"extensions" : [ "SPV_NV_fragment_shader_barycentric", "SPV_KHR_fragment_shader_barycentric" ],
"version" : "None"
},
{ {
"enumerant" : "FragmentBarycentricNV", "enumerant" : "FragmentBarycentricNV",
"value" : 5284, "value" : 5284,
"extensions" : [ "SPV_NV_fragment_shader_barycentric" ], "extensions" : [ "SPV_NV_fragment_shader_barycentric", "SPV_KHR_fragment_shader_barycentric" ],
"version" : "None" "version" : "None"
}, },
{ {
@ -13232,11 +13463,23 @@
"extensions" : [ "SPV_EXT_fragment_shader_interlock" ], "extensions" : [ "SPV_EXT_fragment_shader_interlock" ],
"version" : "None" "version" : "None"
}, },
{
"enumerant" : "DemoteToHelperInvocation",
"value" : 5379,
"capabilities" : [ "Shader" ],
"version" : "1.6"
},
{ {
"enumerant" : "DemoteToHelperInvocationEXT", "enumerant" : "DemoteToHelperInvocationEXT",
"value" : 5379, "value" : 5379,
"capabilities" : [ "Shader" ], "capabilities" : [ "Shader" ],
"extensions" : [ "SPV_EXT_demote_to_helper_invocation" ], "extensions" : [ "SPV_EXT_demote_to_helper_invocation" ],
"version" : "1.6"
},
{
"enumerant" : "BindlessTextureNV",
"value" : 5390,
"extensions" : [ "SPV_NV_bindless_texture" ],
"version" : "None" "version" : "None"
}, },
{ {
@ -13470,30 +13713,51 @@
"extensions" : [ "SPV_INTEL_fpga_reg" ], "extensions" : [ "SPV_INTEL_fpga_reg" ],
"version" : "None" "version" : "None"
}, },
{
"enumerant" : "DotProductInputAll",
"value" : 6016,
"version" : "1.6"
},
{ {
"enumerant" : "DotProductInputAllKHR", "enumerant" : "DotProductInputAllKHR",
"value" : 6016, "value" : 6016,
"extensions" : [ "SPV_KHR_integer_dot_product" ], "extensions" : [ "SPV_KHR_integer_dot_product" ],
"version" : "None" "version" : "1.6"
},
{
"enumerant" : "DotProductInput4x8Bit",
"value" : 6017,
"capabilities" : [ "Int8" ],
"version" : "1.6"
}, },
{ {
"enumerant" : "DotProductInput4x8BitKHR", "enumerant" : "DotProductInput4x8BitKHR",
"value" : 6017, "value" : 6017,
"capabilities" : [ "Int8" ], "capabilities" : [ "Int8" ],
"extensions" : [ "SPV_KHR_integer_dot_product" ], "extensions" : [ "SPV_KHR_integer_dot_product" ],
"version" : "None" "version" : "1.6"
},
{
"enumerant" : "DotProductInput4x8BitPacked",
"value" : 6018,
"version" : "1.6"
}, },
{ {
"enumerant" : "DotProductInput4x8BitPackedKHR", "enumerant" : "DotProductInput4x8BitPackedKHR",
"value" : 6018, "value" : 6018,
"extensions" : [ "SPV_KHR_integer_dot_product" ], "extensions" : [ "SPV_KHR_integer_dot_product" ],
"version" : "None" "version" : "1.6"
},
{
"enumerant" : "DotProduct",
"value" : 6019,
"version" : "1.6"
}, },
{ {
"enumerant" : "DotProductKHR", "enumerant" : "DotProductKHR",
"value" : 6019, "value" : 6019,
"extensions" : [ "SPV_KHR_integer_dot_product" ], "extensions" : [ "SPV_KHR_integer_dot_product" ],
"version" : "None" "version" : "1.6"
}, },
{ {
"enumerant" : "BitInstructions", "enumerant" : "BitInstructions",
@ -13504,14 +13768,12 @@
{ {
"enumerant" : "AtomicFloat32AddEXT", "enumerant" : "AtomicFloat32AddEXT",
"value" : 6033, "value" : 6033,
"capabilities" : [ "Shader" ],
"extensions" : [ "SPV_EXT_shader_atomic_float_add" ], "extensions" : [ "SPV_EXT_shader_atomic_float_add" ],
"version" : "None" "version" : "None"
}, },
{ {
"enumerant" : "AtomicFloat64AddEXT", "enumerant" : "AtomicFloat64AddEXT",
"value" : 6034, "value" : 6034,
"capabilities" : [ "Shader" ],
"extensions" : [ "SPV_EXT_shader_atomic_float_add" ], "extensions" : [ "SPV_EXT_shader_atomic_float_add" ],
"version" : "None" "version" : "None"
}, },
@ -13530,7 +13792,6 @@
{ {
"enumerant" : "AtomicFloat16AddEXT", "enumerant" : "AtomicFloat16AddEXT",
"value" : 6095, "value" : 6095,
"capabilities" : [ "Shader" ],
"extensions" : [ "SPV_EXT_shader_atomic_float16_add" ], "extensions" : [ "SPV_EXT_shader_atomic_float16_add" ],
"version" : "None" "version" : "None"
}, },
@ -13606,11 +13867,16 @@
"category" : "ValueEnum", "category" : "ValueEnum",
"kind" : "PackedVectorFormat", "kind" : "PackedVectorFormat",
"enumerants" : [ "enumerants" : [
{
"enumerant" : "PackedVectorFormat4x8Bit",
"value" : 0,
"version" : "1.6"
},
{ {
"enumerant" : "PackedVectorFormat4x8BitKHR", "enumerant" : "PackedVectorFormat4x8BitKHR",
"value" : 0, "value" : 0,
"extensions" : [ "SPV_KHR_integer_dot_product" ], "extensions" : [ "SPV_KHR_integer_dot_product" ],
"version" : "None" "version" : "1.6"
} }
] ]
}, },

View File

@ -54,8 +54,8 @@
] ]
], ],
"MagicNumber": 119734787, "MagicNumber": 119734787,
"Version": 66816, "Version": 67072,
"Revision": 4, "Revision": 1,
"OpCodeMask": 65535, "OpCodeMask": 65535,
"WordCountShift": 16 "WordCountShift": 16
}, },
@ -395,7 +395,9 @@
"VolatileTexel": 11, "VolatileTexel": 11,
"VolatileTexelKHR": 11, "VolatileTexelKHR": 11,
"SignExtend": 12, "SignExtend": 12,
"ZeroExtend": 13 "ZeroExtend": 13,
"Nontemporal": 14,
"Offsets": 16
} }
}, },
{ {
@ -520,6 +522,7 @@
"PerPrimitiveNV": 5271, "PerPrimitiveNV": 5271,
"PerViewNV": 5272, "PerViewNV": 5272,
"PerTaskNV": 5273, "PerTaskNV": 5273,
"PerVertexKHR": 5285,
"PerVertexNV": 5285, "PerVertexNV": 5285,
"NonUniform": 5300, "NonUniform": 5300,
"NonUniformEXT": 5300, "NonUniformEXT": 5300,
@ -527,6 +530,10 @@
"RestrictPointerEXT": 5355, "RestrictPointerEXT": 5355,
"AliasedPointer": 5356, "AliasedPointer": 5356,
"AliasedPointerEXT": 5356, "AliasedPointerEXT": 5356,
"BindlessSamplerNV": 5398,
"BindlessImageNV": 5399,
"BoundSamplerNV": 5400,
"BoundImageNV": 5401,
"SIMTCallINTEL": 5599, "SIMTCallINTEL": 5599,
"ReferencedIndirectlyINTEL": 5602, "ReferencedIndirectlyINTEL": 5602,
"ClobberINTEL": 5607, "ClobberINTEL": 5607,
@ -565,7 +572,8 @@
"IOPipeStorageINTEL": 5944, "IOPipeStorageINTEL": 5944,
"FunctionFloatingPointModeINTEL": 6080, "FunctionFloatingPointModeINTEL": 6080,
"SingleElementVectorINTEL": 6085, "SingleElementVectorINTEL": 6085,
"VectorComputeCallableFunctionINTEL": 6087 "VectorComputeCallableFunctionINTEL": 6087,
"MediaBlockIOINTEL": 6140
} }
}, },
{ {
@ -653,7 +661,9 @@
"LayerPerViewNV": 5279, "LayerPerViewNV": 5279,
"MeshViewCountNV": 5280, "MeshViewCountNV": 5280,
"MeshViewIndicesNV": 5281, "MeshViewIndicesNV": 5281,
"BaryCoordKHR": 5286,
"BaryCoordNV": 5286, "BaryCoordNV": 5286,
"BaryCoordNoPerspKHR": 5287,
"BaryCoordNoPerspNV": 5287, "BaryCoordNoPerspNV": 5287,
"FragSizeEXT": 5292, "FragSizeEXT": 5292,
"FragmentSizeNV": 5292, "FragmentSizeNV": 5292,
@ -900,6 +910,7 @@
"GroupNonUniformQuad": 68, "GroupNonUniformQuad": 68,
"ShaderLayer": 69, "ShaderLayer": 69,
"ShaderViewportIndex": 70, "ShaderViewportIndex": 70,
"UniformDecoration": 71,
"FragmentShadingRateKHR": 4422, "FragmentShadingRateKHR": 4422,
"SubgroupBallotKHR": 4423, "SubgroupBallotKHR": 4423,
"DrawParameters": 4427, "DrawParameters": 4427,
@ -948,6 +959,7 @@
"FragmentFullyCoveredEXT": 5265, "FragmentFullyCoveredEXT": 5265,
"MeshShadingNV": 5266, "MeshShadingNV": 5266,
"ImageFootprintNV": 5282, "ImageFootprintNV": 5282,
"FragmentBarycentricKHR": 5284,
"FragmentBarycentricNV": 5284, "FragmentBarycentricNV": 5284,
"ComputeDerivativeGroupQuadsNV": 5288, "ComputeDerivativeGroupQuadsNV": 5288,
"FragmentDensityEXT": 5291, "FragmentDensityEXT": 5291,
@ -992,7 +1004,9 @@
"FragmentShaderShadingRateInterlockEXT": 5372, "FragmentShaderShadingRateInterlockEXT": 5372,
"ShaderSMBuiltinsNV": 5373, "ShaderSMBuiltinsNV": 5373,
"FragmentShaderPixelInterlockEXT": 5378, "FragmentShaderPixelInterlockEXT": 5378,
"DemoteToHelperInvocation": 5379,
"DemoteToHelperInvocationEXT": 5379, "DemoteToHelperInvocationEXT": 5379,
"BindlessTextureNV": 5390,
"SubgroupShuffleINTEL": 5568, "SubgroupShuffleINTEL": 5568,
"SubgroupBufferBlockIOINTEL": 5569, "SubgroupBufferBlockIOINTEL": 5569,
"SubgroupImageBlockIOINTEL": 5570, "SubgroupImageBlockIOINTEL": 5570,
@ -1031,9 +1045,13 @@
"IOPipesINTEL": 5943, "IOPipesINTEL": 5943,
"BlockingPipesINTEL": 5945, "BlockingPipesINTEL": 5945,
"FPGARegINTEL": 5948, "FPGARegINTEL": 5948,
"DotProductInputAll": 6016,
"DotProductInputAllKHR": 6016, "DotProductInputAllKHR": 6016,
"DotProductInput4x8Bit": 6017,
"DotProductInput4x8BitKHR": 6017, "DotProductInput4x8BitKHR": 6017,
"DotProductInput4x8BitPacked": 6018,
"DotProductInput4x8BitPackedKHR": 6018, "DotProductInput4x8BitPackedKHR": 6018,
"DotProduct": 6019,
"DotProductKHR": 6019, "DotProductKHR": 6019,
"BitInstructions": 6025, "BitInstructions": 6025,
"AtomicFloat32AddEXT": 6033, "AtomicFloat32AddEXT": 6033,
@ -1149,6 +1167,7 @@
"Type": "Value", "Type": "Value",
"Values": "Values":
{ {
"PackedVectorFormat4x8Bit": 0,
"PackedVectorFormat4x8BitKHR": 0 "PackedVectorFormat4x8BitKHR": 0
} }
}, },
@ -1513,11 +1532,17 @@
"OpConvertUToAccelerationStructureKHR": 4447, "OpConvertUToAccelerationStructureKHR": 4447,
"OpIgnoreIntersectionKHR": 4448, "OpIgnoreIntersectionKHR": 4448,
"OpTerminateRayKHR": 4449, "OpTerminateRayKHR": 4449,
"OpSDot": 4450,
"OpSDotKHR": 4450, "OpSDotKHR": 4450,
"OpUDot": 4451,
"OpUDotKHR": 4451, "OpUDotKHR": 4451,
"OpSUDot": 4452,
"OpSUDotKHR": 4452, "OpSUDotKHR": 4452,
"OpSDotAccSat": 4453,
"OpSDotAccSatKHR": 4453, "OpSDotAccSatKHR": 4453,
"OpUDotAccSat": 4454,
"OpUDotAccSatKHR": 4454, "OpUDotAccSatKHR": 4454,
"OpSUDotAccSat": 4455,
"OpSUDotAccSatKHR": 4455, "OpSUDotAccSatKHR": 4455,
"OpTypeRayQueryKHR": 4472, "OpTypeRayQueryKHR": 4472,
"OpRayQueryInitializeKHR": 4473, "OpRayQueryInitializeKHR": 4473,
@ -1557,8 +1582,16 @@
"OpCooperativeMatrixLengthNV": 5362, "OpCooperativeMatrixLengthNV": 5362,
"OpBeginInvocationInterlockEXT": 5364, "OpBeginInvocationInterlockEXT": 5364,
"OpEndInvocationInterlockEXT": 5365, "OpEndInvocationInterlockEXT": 5365,
"OpDemoteToHelperInvocation": 5380,
"OpDemoteToHelperInvocationEXT": 5380, "OpDemoteToHelperInvocationEXT": 5380,
"OpIsHelperInvocationEXT": 5381, "OpIsHelperInvocationEXT": 5381,
"OpConvertUToImageNV": 5391,
"OpConvertUToSamplerNV": 5392,
"OpConvertImageToUNV": 5393,
"OpConvertSamplerToUNV": 5394,
"OpConvertUToSampledImageNV": 5395,
"OpConvertSampledImageToUNV": 5396,
"OpSamplerImageAddressingModeNV": 5397,
"OpSubgroupShuffleINTEL": 5571, "OpSubgroupShuffleINTEL": 5571,
"OpSubgroupShuffleDownINTEL": 5572, "OpSubgroupShuffleDownINTEL": 5572,
"OpSubgroupShuffleUpINTEL": 5573, "OpSubgroupShuffleUpINTEL": 5573,
@ -1583,7 +1616,7 @@
"OpUSubSatINTEL": 5596, "OpUSubSatINTEL": 5596,
"OpIMul32x16INTEL": 5597, "OpIMul32x16INTEL": 5597,
"OpUMul32x16INTEL": 5598, "OpUMul32x16INTEL": 5598,
"OpConstFunctionPointerINTEL": 5600, "OpConstantFunctionPointerINTEL": 5600,
"OpFunctionPointerCallINTEL": 5601, "OpFunctionPointerCallINTEL": 5601,
"OpAsmTargetINTEL": 5609, "OpAsmTargetINTEL": 5609,
"OpAsmINTEL": 5610, "OpAsmINTEL": 5610,

View File

@ -60,12 +60,22 @@ begin
end; end;
var var
Comment:RawByteString; spirv:record
LConstMeta:TStringList; Comment:RawByteString;
LConstMeta:TStringList;
LEnums:TStringList; LEnums:TStringList;
OpInfoSet:TOpInfoSet; OpInfoSet:TOpInfoSet;
end;
glsl:record
Comment:RawByteString;
inst:TMapStr;
OpInfoSet:TOpInfoSet;
end;
function _getComment(sComment:Tjson):RawByteString; function _getComment(sComment:Tjson):RawByteString;
var var
@ -152,11 +162,14 @@ procedure LoadOp(LGroup:TMapGroup);
var var
IG:TMapGroup.TIterator; IG:TMapGroup.TIterator;
begin begin
OpInfoSet:=TOpInfoSet.Create; if (spirv.OpInfoSet=nil) then
begin
spirv.OpInfoSet:=TOpInfoSet.Create;
end;
IG:=LGroup.Min; IG:=LGroup.Min;
if Assigned(IG) then if Assigned(IG) then
repeat repeat
OpInfoSet.Insert(IG.Value,Default(TOpInfo)); spirv.OpInfoSet.Insert(IG.Value,Default(TOpInfo));
until (not IG.Next); until (not IG.Next);
FreeAndNil(IG); FreeAndNil(IG);
end; end;
@ -171,19 +184,19 @@ Var
begin begin
J:=Tjson.NewFromFile(fname); J:=Tjson.NewFromFile(fname);
Comment:=_getComment(J.Path['spv.meta.Comment']); spirv.Comment:=_getComment(J.Path['spv.meta.Comment']);
LConstMeta:=TStringList.Create; spirv.LConstMeta:=TStringList.Create;
meta:=J.Path['spv.meta']; meta:=J.Path['spv.meta'];
s:=meta.Count; s:=meta.Count;
if (s<>0) then if (s<>0) then
For i:=0 to s-1 do For i:=0 to s-1 do
if (meta.Name[i]<>'Comment') then if (meta.Name[i]<>'Comment') then
begin begin
LConstMeta.Add(meta.Name[i]+' = '+meta.Item[i].AsStr); spirv.LConstMeta.Add(meta.Name[i]+' = '+meta.Item[i].AsStr);
end; end;
LEnums:=TStringList.Create; spirv.LEnums:=TStringList.Create;
enum:=J.Path['spv.enum']; enum:=J.Path['spv.enum'];
s:=enum.Count; s:=enum.Count;
if (s<>0) then if (s<>0) then
@ -196,7 +209,7 @@ begin
LGroup:=_getGroup(tmp.Path['Values'],_type); LGroup:=_getGroup(tmp.Path['Values'],_type);
LGroup._type:=_type; LGroup._type:=_type;
LEnums.AddObject(_name,LGroup); spirv.LEnums.AddObject(_name,LGroup);
if (_name='Op') then if (_name='Op') then
LoadOp(LGroup); LoadOp(LGroup);
@ -267,7 +280,7 @@ begin
opname:=tmp.Path['opname'].AsStr; opname:=tmp.Path['opname'].AsStr;
OpInfo:=_get_OpInfo(tmp.Path['operands']); OpInfo:=_get_OpInfo(tmp.Path['operands']);
IT:=OpInfoSet.Find(opname); IT:=spirv.OpInfoSet.Find(opname);
if Assigned(IT) then if Assigned(IT) then
begin begin
IT.Value:=OpInfo; IT.Value:=OpInfo;
@ -279,6 +292,56 @@ begin
J.Free; J.Free;
end; end;
{
extinst_glsl_std_450:record
Comment:RawByteString;
inst:TMapStr;
OpInfoSet:TOpInfoSet;
end;
}
procedure loadGlslGrammarJson(Const fname:RawByteString);
Var
J,inst,tmp:Tjson;
i,s:Integer;
opname,opcode:RawByteString;
OpInfo:TOpInfo;
IT:TOpInfoSet.TIterator;
begin
J:=Tjson.NewFromFile(fname);
if (glsl.OpInfoSet=nil) then
begin
glsl.OpInfoSet:=TOpInfoSet.Create;
end;
if (glsl.inst=nil) then
begin
glsl.inst:=TMapStr.Create;
end;
glsl.Comment:=_getComment(J.Path['copyright']);
inst:=J.Path['instructions'];
s:=inst.Count;
if (s<>0) then
For i:=0 to s-1 do
begin
tmp:=inst.Item[i];
opname:=tmp.Path['opname'].AsStr;
opcode:=tmp.Path['opcode'].AsStr;
OpInfo:=_get_OpInfo(tmp.Path['operands']);
glsl.inst.Insert(opcode,opname);
glsl.OpInfoSet.Insert(opname,OpInfo);
end;
J.Free;
end;
Function IsJson(Const FName:RawByteString):Boolean; Function IsJson(Const FName:RawByteString):Boolean;
begin begin
Result:=False; Result:=False;
@ -316,7 +379,12 @@ Const
' end;'#$0D#$0A+ ' end;'#$0D#$0A+
' function GetInfo(w:Word):TOpInfo; static;'#$0D#$0A; ' function GetInfo(w:Word):TOpInfo; static;'#$0D#$0A;
LGetInfo_p='function Op.GetInfo(w:Word):TOpInfo; static;'#$0D#$0A+ LOpGetInfo_p='function Op.GetInfo(w:Word):TOpInfo; static;'#$0D#$0A+
'begin'#$0D#$0A+
' Result:=Default(TOpInfo);'#$0D#$0A+
' Case w of'#$0D#$0A;
LGlGetInfo_p='function GlslOp.GetInfo(w:Word):TOpInfo; static;'#$0D#$0A+
'begin'#$0D#$0A+ 'begin'#$0D#$0A+
' Result:=Default(TOpInfo);'#$0D#$0A+ ' Result:=Default(TOpInfo);'#$0D#$0A+
' Case w of'#$0D#$0A; ' Case w of'#$0D#$0A;
@ -344,29 +412,29 @@ Var
begin begin
F:=FileCreate(FName); F:=FileCreate(FName);
FileWrite(F,PChar(Comment)^,Length(Comment)); FileWrite(F,PChar(spirv.Comment)^,Length(spirv.Comment));
FileWrite(F,PChar(prologf)^,Length(prologf)); FileWrite(F,PChar(prologf)^,Length(prologf));
FileWrite(F,PChar(LConst)^,Length(LConst)); FileWrite(F,PChar(LConst)^,Length(LConst));
s:=LConstMeta.Count; s:=spirv.LConstMeta.Count;
if (s<>0) then if (s<>0) then
begin begin
For i:=0 to s-1 do For i:=0 to s-1 do
begin begin
_name:=' '+LConstMeta.Strings[i]+';'+NL; _name:=' '+spirv.LConstMeta.Strings[i]+';'+NL;
FileWrite(F,PChar(_name)^,Length(_name)); FileWrite(F,PChar(_name)^,Length(_name));
end; end;
FileWrite(F,PChar(NL)^,Length(NL)); FileWrite(F,PChar(NL)^,Length(NL));
end; end;
FileWrite(F,PChar(LType)^,Length(LType)); FileWrite(F,PChar(LType)^,Length(LType));
s:=LEnums.Count; s:=spirv.LEnums.Count;
if (s<>0) then if (s<>0) then
begin begin
For i:=0 to s-1 do For i:=0 to s-1 do
begin begin
LGroup:=TMapGroup(LEnums.Objects[i]); LGroup:=TMapGroup(spirv.LEnums.Objects[i]);
_name:=LEnums.Strings[i]; _name:=spirv.LEnums.Strings[i];
_name:=' '+_name+'=object'+' //'+LGroup._type+NL+' '+LConst; _name:=' '+_name+'=object'+' //'+LGroup._type+NL+' '+LConst;
FileWrite(F,PChar(_name)^,Length(_name)); FileWrite(F,PChar(_name)^,Length(_name));
@ -382,7 +450,7 @@ begin
if (LGroup._type='Value') then if (LGroup._type='Value') then
FileWrite(F,PChar(LGetStr_i)^,Length(LGetStr_i)); FileWrite(F,PChar(LGetStr_i)^,Length(LGetStr_i));
if (LEnums.Strings[i]='Op') then if (spirv.LEnums.Strings[i]='Op') then
FileWrite(F,PChar(LGetInfo_i)^,Length(LGetInfo_i)); FileWrite(F,PChar(LGetInfo_i)^,Length(LGetInfo_i));
FileWrite(F,PChar(LEnd)^,Length(LEnd)); FileWrite(F,PChar(LEnd)^,Length(LEnd));
@ -390,15 +458,37 @@ begin
end; end;
end; end;
//glsl.inst
_name:=' GlslOp=object //extinst.glsl.std.450'+NL+' '+LConst;
FileWrite(F,PChar(_name)^,Length(_name));
IG:=glsl.inst.Min;
if Assigned(IG) then
repeat
_name:=' '+GetPasLabel(IG.Value)+' = '+IG.Key+';'+NL;
FileWrite(F,PChar(_name)^,Length(_name));
until (not IG.Next);
FreeAndNil(IG);
FileWrite(F,PChar(LGetStr_i)^,Length(LGetStr_i));
FileWrite(F,PChar(LGetInfo_i)^,Length(LGetInfo_i));
FileWrite(F,PChar(LEnd)^,Length(LEnd));
FileWrite(F,PChar(NLNL)^,Length(NLNL));
//glsl.inst
FileWrite(F,PChar(ep_impl)^,Length(ep_impl)); FileWrite(F,PChar(ep_impl)^,Length(ep_impl));
s:=LEnums.Count; s:=spirv.LEnums.Count;
if (s<>0) then if (s<>0) then
begin begin
For i:=0 to s-1 do For i:=0 to s-1 do
begin begin
LGroup:=TMapGroup(LEnums.Objects[i]); LGroup:=TMapGroup(spirv.LEnums.Objects[i]);
if (LGroup._type<>'Value') then Continue; if (LGroup._type<>'Value') then Continue;
_name:=LEnums.Strings[i]; _name:=spirv.LEnums.Strings[i];
_name:=LFunc+_name+LGetStr_p; _name:=LFunc+_name+LGetStr_p;
@ -414,15 +504,15 @@ begin
FileWrite(F,PChar(LGetStr_e)^,Length(LGetStr_e)); FileWrite(F,PChar(LGetStr_e)^,Length(LGetStr_e));
if (LEnums.Strings[i]='Op') then if (spirv.LEnums.Strings[i]='Op') then
begin begin
FileWrite(F,PChar(LGetInfo_p)^,Length(LGetInfo_p)); FileWrite(F,PChar(LOpGetInfo_p)^,Length(LOpGetInfo_p));
IG:=LGroup.Min; IG:=LGroup.Min;
if Assigned(IG) then if Assigned(IG) then
repeat repeat
IT:=OpInfoSet.Find(IG.Value); IT:=spirv.OpInfoSet.Find(IG.Value);
if Assigned(IT) then if Assigned(IT) then
begin begin
_name:=' '+GetPasLabel(IG.Value)+':QWORD(Result):=$'+HexStr(QWORD(IT.Value),16)+';'+NL; _name:=' '+GetPasLabel(IG.Value)+':QWORD(Result):=$'+HexStr(QWORD(IT.Value),16)+';'+NL;
@ -439,6 +529,44 @@ begin
end; end;
end; end;
//LGroup:=glsl.inst;
_name:=LFunc+'GlslOp'+LGetStr_p;
FileWrite(F,PChar(_name)^,Length(_name));
IG:=glsl.inst.Min;
if Assigned(IG) then
repeat
_name:=' '+GetPasLabel(IG.Value)+':Result:='''+IG.Value+''';'+NL;
FileWrite(F,PChar(_name)^,Length(_name));
until (not IG.Next);
FreeAndNil(IG);
FileWrite(F,PChar(LGetStr_e)^,Length(LGetStr_e));
begin
FileWrite(F,PChar(LGlGetInfo_p)^,Length(LGlGetInfo_p));
IG:=glsl.inst.Min;
if Assigned(IG) then
repeat
IT:=glsl.OpInfoSet.Find(IG.Value);
if Assigned(IT) then
begin
_name:=' '+GetPasLabel(IG.Value)+':QWORD(Result):=$'+HexStr(QWORD(IT.Value),16)+';'+NL;
FileWrite(F,PChar(_name)^,Length(_name));
FreeAndNil(IT);
end;
until (not IG.Next);
FreeAndNil(IG);
FileWrite(F,PChar(LGetStr_e)^,Length(LGetStr_e));
end;
//
FileWrite(F,PChar(ep_func)^,Length(ep_func)); FileWrite(F,PChar(ep_func)^,Length(ep_func));
FileClose(F); FileClose(F);
end; end;
@ -452,6 +580,7 @@ begin
loadSpirvJson('spirv.json'); loadSpirvJson('spirv.json');
loadSpirvGrammarJson('spirv.core.grammar.json'); loadSpirvGrammarJson('spirv.core.grammar.json');
loadGlslGrammarJson('extinst.glsl.std.450.grammar.json');
Writeln('Load is Fin'); Writeln('Load is Fin');
SaveToPas('spirv.pas'); SaveToPas('spirv.pas');
Writeln('Save is Fin'); Writeln('Save is Fin');