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",
"major_version" : 1,
"minor_version" : 5,
"revision" : 4,
"minor_version" : 6,
"revision" : 1,
"instruction_printing_class" : [
{
"tag" : "@exclude"
@ -394,9 +394,7 @@
"opcode" : 30,
"operands" : [
{ "kind" : "IdResult" },
{ "kind" : "IdRef",
"quantifier" : "*",
"name" : "'Member 0 type', +\n'member 1 type', +\n..." }
{ "kind" : "IdRef", "quantifier" : "*", "name" : "'Member 0 type', +\n'member 1 type', +\n..." }
]
},
{
@ -1737,7 +1735,8 @@
{ "kind" : "IdRef", "name" : "'x'" },
{ "kind" : "IdRef", "name" : "'y'" }
],
"capabilities" : [ "Kernel" ]
"capabilities" : [ "Kernel" ],
"lastVersion" : "1.5"
},
{
"opname" : "OpOrdered",
@ -4111,7 +4110,7 @@
"SPV_KHR_terminate_invocation"
],
"capabilities" : [ "Shader" ],
"version" : "None"
"version" : "1.6"
},
{
"opname" : "OpSubgroupBallotKHR",
@ -4262,6 +4261,20 @@
"extensions" : [ "SPV_KHR_ray_tracing" ],
"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",
"class" : "Arithmetic",
@ -4274,7 +4287,22 @@
{ "kind" : "PackedVectorFormat", "name" : "'Packed Vector Format'", "quantifier" : "?" }
],
"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",
@ -4288,7 +4316,22 @@
{ "kind" : "PackedVectorFormat", "name" : "'Packed Vector Format'", "quantifier" : "?" }
],
"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",
@ -4302,7 +4345,23 @@
{ "kind" : "PackedVectorFormat", "name" : "'Packed Vector Format'", "quantifier" : "?" }
],
"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",
@ -4317,7 +4376,23 @@
{ "kind" : "PackedVectorFormat", "name" : "'Packed Vector Format'", "quantifier" : "?" }
],
"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",
@ -4332,7 +4407,23 @@
{ "kind" : "PackedVectorFormat", "name" : "'Packed Vector Format'", "quantifier" : "?" }
],
"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",
@ -4347,7 +4438,8 @@
{ "kind" : "PackedVectorFormat", "name" : "'Packed Vector Format'", "quantifier" : "?" }
],
"capabilities" : [ "DotProductKHR" ],
"version" : "None"
"extensions" : [ "SPV_KHR_integer_dot_product" ],
"version" : "1.6"
},
{
"opname" : "OpTypeRayQueryKHR",
@ -4927,12 +5019,18 @@
"version" : "None"
},
{
"opname" : "OpDemoteToHelperInvocationEXT",
"class" : "Reserved",
"opname" : "OpDemoteToHelperInvocation",
"class" : "Control-Flow",
"opcode" : 5380,
"capabilities" : [ "DemoteToHelperInvocationEXT" ],
"extensions" : [ "SPV_EXT_demote_to_helper_invocation" ],
"version" : "None"
"capabilities" : [ "DemoteToHelperInvocation" ],
"version" : "1.6"
},
{
"opname" : "OpDemoteToHelperInvocationEXT",
"class" : "Control-Flow",
"opcode" : 5380,
"capabilities" : [ "DemoteToHelperInvocation" ],
"version" : "1.6"
},
{
"opname" : "OpIsHelperInvocationEXT",
@ -4946,6 +5044,88 @@
"extensions" : [ "SPV_EXT_demote_to_helper_invocation" ],
"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",
"class" : "Group",
@ -5258,7 +5438,7 @@
"version" : "None"
},
{
"opname" : "OpConstFunctionPointerINTEL",
"opname" : "OpConstantFunctionPointerINTEL",
"class" : "@exclude",
"opcode" : 5600,
"operands" : [
@ -7678,24 +7858,6 @@
"capabilities" : [ "ArbitraryPrecisionFloatingPointINTEL" ],
"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",
"class" : "Reserved",
@ -8495,6 +8657,18 @@
"enumerant" : "ZeroExtend",
"value" : "0x2000",
"version" : "1.4"
},
{
"enumerant" : "Nontemporal",
"value" : "0x4000",
"version" : "1.6"
},
{
"enumerant" : "Offsets",
"value" : "0x10000",
"parameters" : [
{ "kind" : "IdRef" }
]
}
]
},
@ -8508,40 +8682,35 @@
},
{
"enumerant" : "NotNaN",
"value" : "0x0001",
"capabilities" : [ "Kernel" ]
"value" : "0x0001"
},
{
"enumerant" : "NotInf",
"value" : "0x0002",
"capabilities" : [ "Kernel" ]
"value" : "0x0002"
},
{
"enumerant" : "NSZ",
"value" : "0x0004",
"capabilities" : [ "Kernel" ]
"value" : "0x0004"
},
{
"enumerant" : "AllowRecip",
"value" : "0x0008",
"capabilities" : [ "Kernel" ]
"value" : "0x0008"
},
{
"enumerant" : "Fast",
"value" : "0x0010",
"capabilities" : [ "Kernel" ]
"value" : "0x0010"
},
{
"enumerant" : "AllowContractFastINTEL",
"value" : "0x10000",
"capabilities" : [ "FPFastMathModeINTEL" ],
"version" : "None"
"version" : "None"
},
{
"enumerant" : "AllowReassocINTEL",
"value" : "0x20000",
"capabilities" : [ "FPFastMathModeINTEL" ],
"version" : "None"
"version" : "None"
}
]
},
@ -10813,12 +10982,12 @@
{
"enumerant" : "Uniform",
"value" : 26,
"capabilities" : [ "Shader" ]
"capabilities" : [ "Shader", "UniformDecoration" ]
},
{
"enumerant" : "UniformId",
"value" : 27,
"capabilities" : [ "Shader" ],
"capabilities" : [ "Shader", "UniformDecoration" ],
"parameters" : [
{ "kind" : "IdScope", "name" : "'Execution'" }
],
@ -11050,11 +11219,18 @@
"extensions" : [ "SPV_NV_mesh_shader" ],
"version" : "None"
},
{
"enumerant" : "PerVertexKHR",
"value" : 5285,
"capabilities" : [ "FragmentBarycentricNV", "FragmentBarycentricKHR" ],
"extensions" : [ "SPV_NV_fragment_shader_barycentric", "SPV_KHR_fragment_shader_barycentric" ],
"version" : "None"
},
{
"enumerant" : "PerVertexNV",
"value" : 5285,
"capabilities" : [ "FragmentBarycentricNV" ],
"extensions" : [ "SPV_NV_fragment_shader_barycentric" ],
"capabilities" : [ "FragmentBarycentricNV", "FragmentBarycentricKHR" ],
"extensions" : [ "SPV_NV_fragment_shader_barycentric", "SPV_KHR_fragment_shader_barycentric" ],
"version" : "None"
},
{
@ -11098,6 +11274,30 @@
"extensions" : [ "SPV_EXT_physical_storage_buffer" ],
"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",
"value" : 5599,
@ -11418,6 +11618,12 @@
"value" : 6087,
"capabilities" : [ "VectorComputeINTEL" ],
"version" : "None"
},
{
"enumerant" : "MediaBlockIOINTEL",
"value" : 6140,
"capabilities" : [ "VectorComputeINTEL" ],
"version" : "None"
}
]
},
@ -11885,18 +12091,32 @@
"extensions" : [ "SPV_NV_mesh_shader" ],
"version" : "None"
},
{
"enumerant" : "BaryCoordKHR",
"value" : 5286,
"capabilities" : [ "FragmentBarycentricNV", "FragmentBarycentricKHR" ],
"extensions" : [ "SPV_NV_fragment_shader_barycentric", "SPV_KHR_fragment_shader_barycentric" ],
"version" : "None"
},
{
"enumerant" : "BaryCoordNV",
"value" : 5286,
"capabilities" : [ "FragmentBarycentricNV" ],
"extensions" : [ "SPV_NV_fragment_shader_barycentric" ],
"capabilities" : [ "FragmentBarycentricNV", "FragmentBarycentricKHR" ],
"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"
},
{
"enumerant" : "BaryCoordNoPerspNV",
"value" : 5287,
"capabilities" : [ "FragmentBarycentricNV" ],
"extensions" : [ "SPV_NV_fragment_shader_barycentric" ],
"capabilities" : [ "FragmentBarycentricNV", "FragmentBarycentricKHR" ],
"extensions" : [ "SPV_NV_fragment_shader_barycentric", "SPV_KHR_fragment_shader_barycentric" ],
"version" : "None"
},
{
@ -12621,6 +12841,11 @@
"value" : 70,
"version" : "1.5"
},
{
"enumerant" : "UniformDecoration",
"value" : 71,
"version" : "1.6"
},
{
"enumerant" : "FragmentShadingRateKHR",
"value" : 4422,
@ -12946,10 +13171,16 @@
"extensions" : [ "SPV_NV_shader_image_footprint" ],
"version" : "None"
},
{
"enumerant" : "FragmentBarycentricKHR",
"value" : 5284,
"extensions" : [ "SPV_NV_fragment_shader_barycentric", "SPV_KHR_fragment_shader_barycentric" ],
"version" : "None"
},
{
"enumerant" : "FragmentBarycentricNV",
"value" : 5284,
"extensions" : [ "SPV_NV_fragment_shader_barycentric" ],
"extensions" : [ "SPV_NV_fragment_shader_barycentric", "SPV_KHR_fragment_shader_barycentric" ],
"version" : "None"
},
{
@ -13232,11 +13463,23 @@
"extensions" : [ "SPV_EXT_fragment_shader_interlock" ],
"version" : "None"
},
{
"enumerant" : "DemoteToHelperInvocation",
"value" : 5379,
"capabilities" : [ "Shader" ],
"version" : "1.6"
},
{
"enumerant" : "DemoteToHelperInvocationEXT",
"value" : 5379,
"capabilities" : [ "Shader" ],
"extensions" : [ "SPV_EXT_demote_to_helper_invocation" ],
"version" : "1.6"
},
{
"enumerant" : "BindlessTextureNV",
"value" : 5390,
"extensions" : [ "SPV_NV_bindless_texture" ],
"version" : "None"
},
{
@ -13470,30 +13713,51 @@
"extensions" : [ "SPV_INTEL_fpga_reg" ],
"version" : "None"
},
{
"enumerant" : "DotProductInputAll",
"value" : 6016,
"version" : "1.6"
},
{
"enumerant" : "DotProductInputAllKHR",
"value" : 6016,
"extensions" : [ "SPV_KHR_integer_dot_product" ],
"version" : "None"
"version" : "1.6"
},
{
"enumerant" : "DotProductInput4x8Bit",
"value" : 6017,
"capabilities" : [ "Int8" ],
"version" : "1.6"
},
{
"enumerant" : "DotProductInput4x8BitKHR",
"value" : 6017,
"capabilities" : [ "Int8" ],
"extensions" : [ "SPV_KHR_integer_dot_product" ],
"version" : "None"
"version" : "1.6"
},
{
"enumerant" : "DotProductInput4x8BitPacked",
"value" : 6018,
"version" : "1.6"
},
{
"enumerant" : "DotProductInput4x8BitPackedKHR",
"value" : 6018,
"extensions" : [ "SPV_KHR_integer_dot_product" ],
"version" : "None"
"version" : "1.6"
},
{
"enumerant" : "DotProduct",
"value" : 6019,
"version" : "1.6"
},
{
"enumerant" : "DotProductKHR",
"value" : 6019,
"extensions" : [ "SPV_KHR_integer_dot_product" ],
"version" : "None"
"version" : "1.6"
},
{
"enumerant" : "BitInstructions",
@ -13504,14 +13768,12 @@
{
"enumerant" : "AtomicFloat32AddEXT",
"value" : 6033,
"capabilities" : [ "Shader" ],
"extensions" : [ "SPV_EXT_shader_atomic_float_add" ],
"version" : "None"
},
{
"enumerant" : "AtomicFloat64AddEXT",
"value" : 6034,
"capabilities" : [ "Shader" ],
"extensions" : [ "SPV_EXT_shader_atomic_float_add" ],
"version" : "None"
},
@ -13530,7 +13792,6 @@
{
"enumerant" : "AtomicFloat16AddEXT",
"value" : 6095,
"capabilities" : [ "Shader" ],
"extensions" : [ "SPV_EXT_shader_atomic_float16_add" ],
"version" : "None"
},
@ -13606,11 +13867,16 @@
"category" : "ValueEnum",
"kind" : "PackedVectorFormat",
"enumerants" : [
{
"enumerant" : "PackedVectorFormat4x8Bit",
"value" : 0,
"version" : "1.6"
},
{
"enumerant" : "PackedVectorFormat4x8BitKHR",
"value" : 0,
"extensions" : [ "SPV_KHR_integer_dot_product" ],
"version" : "None"
"version" : "1.6"
}
]
},

View File

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

View File

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