vulkano 0.32.3

Safe wrapper for the Vulkan graphics API
Documentation
{
  "copyright" : [
    "Copyright (c) 2014-2020 The Khronos Group Inc.",
    "",
    "Permission is hereby granted, free of charge, to any person obtaining a copy",
    "of this software and/or associated documentation files (the \"Materials\"),",
    "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."
  ],
  "magic_number" : "0x07230203",
  "major_version" : 1,
  "minor_version" : 6,
  "revision" : 1,
  "instruction_printing_class" : [
    {
      "tag"     : "@exclude"
    },
    {
      "tag"     : "Miscellaneous",
      "heading" : "Miscellaneous Instructions"
    },
    {
      "tag"     : "Debug",
      "heading" : "Debug Instructions"
    },
    {
      "tag"     : "Annotation",
      "heading" : "Annotation Instructions"
    },
    {
      "tag"     : "Extension",
      "heading" : "Extension Instructions"
    },
    {
      "tag"     : "Mode-Setting",
      "heading" : "Mode-Setting Instructions"
    },
    {
      "tag"     : "Type-Declaration",
      "heading" : "Type-Declaration Instructions"
    },
    {
      "tag"     : "Constant-Creation",
      "heading" : "Constant-Creation Instructions"
    },
    {
      "tag"     : "Memory",
      "heading" : "Memory Instructions"
    },
    {
      "tag"     : "Function",
      "heading" : "Function Instructions"
    },
    {
      "tag"     : "Image",
      "heading" : "Image Instructions"
    },
    {
      "tag"     : "Conversion",
      "heading" : "Conversion Instructions"
    },
    {
      "tag"     : "Composite",
      "heading" : "Composite Instructions"
    },
    {
      "tag"     : "Arithmetic",
      "heading" : "Arithmetic Instructions"
    },
    {
      "tag"     : "Bit",
      "heading" : "Bit Instructions"
    },
    {
      "tag"     : "Relational_and_Logical",
      "heading" : "Relational and Logical Instructions"
    },
    {
      "tag"     : "Derivative",
      "heading" : "Derivative Instructions"
    },
    {
      "tag"     : "Control-Flow",
      "heading" : "Control-Flow Instructions"
    },
    {
      "tag"     : "Atomic",
      "heading" : "Atomic Instructions"
    },
    {
      "tag"     : "Primitive",
      "heading" : "Primitive Instructions"
    },
    {
      "tag"     : "Barrier",
      "heading" : "Barrier Instructions"
    },
    {
      "tag"     : "Group",
      "heading" : "Group and Subgroup Instructions"
    },
    {
      "tag"     : "Device-Side_Enqueue",
      "heading" : "Device-Side Enqueue Instructions"
    },
    {
      "tag"     : "Pipe",
      "heading" : "Pipe Instructions"
    },
    {
      "tag"     : "Non-Uniform",
      "heading" : "Non-Uniform Instructions"
    },
    {
      "tag"     : "Reserved",
      "heading" : "Reserved Instructions"
    }
  ],
  "instructions" : [
    {
      "opname" : "OpNop",
      "class"  : "Miscellaneous",
      "opcode" : 0
    },
    {
      "opname" : "OpUndef",
      "class"  : "Miscellaneous",
      "opcode" : 1,
      "operands" : [
        { "kind" : "IdResultType" },
        { "kind" : "IdResult" }
      ]
    },
    {
      "opname" : "OpSourceContinued",
      "class"  : "Debug",
      "opcode" : 2,
      "operands" : [
        { "kind" : "LiteralString", "name" : "'Continued Source'" }
      ]
    },
    {
      "opname" : "OpSource",
      "class"  : "Debug",
      "opcode" : 3,
      "operands" : [
        { "kind" : "SourceLanguage" },
        { "kind" : "LiteralInteger",                     "name" : "'Version'" },
        { "kind" : "IdRef",          "quantifier" : "?", "name" : "'File'" },
        { "kind" : "LiteralString",  "quantifier" : "?", "name" : "'Source'" }
      ]
    },
    {
      "opname" : "OpSourceExtension",
      "class"  : "Debug",
      "opcode" : 4,
      "operands" : [
        { "kind" : "LiteralString", "name" : "'Extension'" }
      ]
    },
    {
      "opname" : "OpName",
      "class"  : "Debug",
      "opcode" : 5,
      "operands" : [
        { "kind" : "IdRef",         "name" : "'Target'" },
        { "kind" : "LiteralString", "name" : "'Name'" }
      ]
    },
    {
      "opname" : "OpMemberName",
      "class"  : "Debug",
      "opcode" : 6,
      "operands" : [
        { "kind" : "IdRef",          "name" : "'Type'" },
        { "kind" : "LiteralInteger", "name" : "'Member'" },
        { "kind" : "LiteralString",  "name" : "'Name'" }
      ]
    },
    {
      "opname" : "OpString",
      "class"  : "Debug",
      "opcode" : 7,
      "operands" : [
        { "kind" : "IdResult" },
        { "kind" : "LiteralString", "name" : "'String'" }
      ]
    },
    {
      "opname" : "OpLine",
      "class"  : "Debug",
      "opcode" : 8,
      "operands" : [
        { "kind" : "IdRef",          "name" : "'File'" },
        { "kind" : "LiteralInteger", "name" : "'Line'" },
        { "kind" : "LiteralInteger", "name" : "'Column'" }
      ]
    },
    {
      "opname" : "OpExtension",
      "class"  : "Extension",
      "opcode" : 10,
      "operands" : [
        { "kind" : "LiteralString", "name" : "'Name'" }
      ]
    },
    {
      "opname" : "OpExtInstImport",
      "class"  : "Extension",
      "opcode" : 11,
      "operands" : [
        { "kind" : "IdResult" },
        { "kind" : "LiteralString", "name" : "'Name'" }
      ]
    },
    {
      "opname" : "OpExtInst",
      "class"  : "Extension",
      "opcode" : 12,
      "operands" : [
        { "kind" : "IdResultType" },
        { "kind" : "IdResult" },
        { "kind" : "IdRef",                                     "name" : "'Set'" },
        { "kind" : "LiteralExtInstInteger",                     "name" : "'Instruction'" },
        { "kind" : "IdRef",                 "quantifier" : "*", "name" : "'Operand 1', +\n'Operand 2', +\n..." }
      ]
    },
    {
      "opname" : "OpMemoryModel",
      "class"  : "Mode-Setting",
      "opcode" : 14,
      "operands" : [
        { "kind" : "AddressingModel" },
        { "kind" : "MemoryModel" }
      ]
    },
    {
      "opname" : "OpEntryPoint",
      "class"  : "Mode-Setting",
      "opcode" : 15,
      "operands" : [
        { "kind" : "ExecutionModel" },
        { "kind" : "IdRef",                              "name" : "'Entry Point'" },
        { "kind" : "LiteralString",                      "name" : "'Name'" },
        { "kind" : "IdRef",          "quantifier" : "*", "name" : "'Interface'" }
      ]
    },
    {
      "opname" : "OpExecutionMode",
      "class"  : "Mode-Setting",
      "opcode" : 16,
      "operands" : [
        { "kind" : "IdRef",         "name" : "'Entry Point'" },
        { "kind" : "ExecutionMode", "name" : "'Mode'" }
      ]
    },
    {
      "opname" : "OpCapability",
      "class"  : "Mode-Setting",
      "opcode" : 17,
      "operands" : [
        { "kind" : "Capability", "name" : "'Capability'" }
      ]
    },
    {
      "opname" : "OpTypeVoid",
      "class"  : "Type-Declaration",
      "opcode" : 19,
      "operands" : [
        { "kind" : "IdResult" }
      ]
    },
    {
      "opname" : "OpTypeBool",
      "class"  : "Type-Declaration",
      "opcode" : 20,
      "operands" : [
        { "kind" : "IdResult" }
      ]
    },
    {
      "opname" : "OpTypeInt",
      "class"  : "Type-Declaration",
      "opcode" : 21,
      "operands" : [
        { "kind" : "IdResult" },
        { "kind" : "LiteralInteger", "name" : "'Width'" },
        { "kind" : "LiteralInteger", "name" : "'Signedness'" }
      ]
    },
    {
      "opname" : "OpTypeFloat",
      "class"  : "Type-Declaration",
      "opcode" : 22,
      "operands" : [
        { "kind" : "IdResult" },
        { "kind" : "LiteralInteger", "name" : "'Width'" }
      ]
    },
    {
      "opname" : "OpTypeVector",
      "class"  : "Type-Declaration",
      "opcode" : 23,
      "operands" : [
        { "kind" : "IdResult" },
        { "kind" : "IdRef",          "name" : "'Component Type'" },
        { "kind" : "LiteralInteger", "name" : "'Component Count'" }
      ]
    },
    {
      "opname" : "OpTypeMatrix",
      "class"  : "Type-Declaration",
      "opcode" : 24,
      "operands" : [
        { "kind" : "IdResult" },
        { "kind" : "IdRef",          "name" : "'Column Type'" },
        { "kind" : "LiteralInteger", "name" : "'Column Count'" }
      ],
      "capabilities" : [ "Matrix" ]
    },
    {
      "opname" : "OpTypeImage",
      "class"  : "Type-Declaration",
      "opcode" : 25,
      "operands" : [
        { "kind" : "IdResult" },
        { "kind" : "IdRef",                               "name" : "'Sampled Type'" },
        { "kind" : "Dim" },
        { "kind" : "LiteralInteger",                      "name" : "'Depth'" },
        { "kind" : "LiteralInteger",                      "name" : "'Arrayed'" },
        { "kind" : "LiteralInteger",                      "name" : "'MS'" },
        { "kind" : "LiteralInteger",                      "name" : "'Sampled'" },
        { "kind" : "ImageFormat" },
        { "kind" : "AccessQualifier", "quantifier" : "?" }
      ]
    },
    {
      "opname" : "OpTypeSampler",
      "class"  : "Type-Declaration",
      "opcode" : 26,
      "operands" : [
        { "kind" : "IdResult" }
      ]
    },
    {
      "opname" : "OpTypeSampledImage",
      "class"  : "Type-Declaration",
      "opcode" : 27,
      "operands" : [
        { "kind" : "IdResult" },
        { "kind" : "IdRef",    "name" : "'Image Type'" }
      ]
    },
    {
      "opname" : "OpTypeArray",
      "class"  : "Type-Declaration",
      "opcode" : 28,
      "operands" : [
        { "kind" : "IdResult" },
        { "kind" : "IdRef",    "name" : "'Element Type'" },
        { "kind" : "IdRef",    "name" : "'Length'" }
      ]
    },
    {
      "opname" : "OpTypeRuntimeArray",
      "class"  : "Type-Declaration",
      "opcode" : 29,
      "operands" : [
        { "kind" : "IdResult" },
        { "kind" : "IdRef",    "name" : "'Element Type'" }
      ],
      "capabilities" : [ "Shader" ]
    },
    {
      "opname" : "OpTypeStruct",
      "class"  : "Type-Declaration",
      "opcode" : 30,
      "operands" : [
        { "kind" : "IdResult" },
        { "kind" : "IdRef",    "quantifier" : "*", "name" : "'Member 0 type', +\n'member 1 type', +\n..." }
      ]
    },
    {
      "opname" : "OpTypeOpaque",
      "class"  : "Type-Declaration",
      "opcode" : 31,
      "operands" : [
        { "kind" : "IdResult" },
        { "kind" : "LiteralString", "name" : "The name of the opaque type." }
      ],
      "capabilities" : [ "Kernel" ]
    },
    {
      "opname" : "OpTypePointer",
      "class"  : "Type-Declaration",
      "opcode" : 32,
      "operands" : [
        { "kind" : "IdResult" },
        { "kind" : "StorageClass" },
        { "kind" : "IdRef",        "name" : "'Type'" }
      ]
    },
    {
      "opname" : "OpTypeFunction",
      "class"  : "Type-Declaration",
      "opcode" : 33,
      "operands" : [
        { "kind" : "IdResult" },
        { "kind" : "IdRef",                        "name" : "'Return Type'" },
        { "kind" : "IdRef",    "quantifier" : "*", "name" : "'Parameter 0 Type', +\n'Parameter 1 Type', +\n..." }
      ]
    },
    {
      "opname" : "OpTypeEvent",
      "class"  : "Type-Declaration",
      "opcode" : 34,
      "operands" : [
        { "kind" : "IdResult" }
      ],
      "capabilities" : [ "Kernel" ]
    },
    {
      "opname" : "OpTypeDeviceEvent",
      "class"  : "Type-Declaration",
      "opcode" : 35,
      "operands" : [
        { "kind" : "IdResult" }
      ],
      "capabilities" : [ "DeviceEnqueue" ]
    },
    {
      "opname" : "OpTypeReserveId",
      "class"  : "Type-Declaration",
      "opcode" : 36,
      "operands" : [
        { "kind" : "IdResult" }
      ],
      "capabilities" : [ "Pipes" ]
    },
    {
      "opname" : "OpTypeQueue",
      "class"  : "Type-Declaration",
      "opcode" : 37,
      "operands" : [
        { "kind" : "IdResult" }
      ],
      "capabilities" : [ "DeviceEnqueue" ]
    },
    {
      "opname" : "OpTypePipe",
      "class"  : "Type-Declaration",
      "opcode" : 38,
      "operands" : [
        { "kind" : "IdResult" },
        { "kind" : "AccessQualifier", "name" : "'Qualifier'" }
      ],
      "capabilities" : [ "Pipes" ]
    },
    {
      "opname" : "OpTypeForwardPointer",
      "class"  : "Type-Declaration",
      "opcode" : 39,
      "operands" : [
        { "kind" : "IdRef",        "name" : "'Pointer Type'" },
        { "kind" : "StorageClass" }
      ],
      "capabilities" : [
        "Addresses",
        "PhysicalStorageBufferAddresses"
      ]
    },
    {
      "opname" : "OpConstantTrue",
      "class"  : "Constant-Creation",
      "opcode" : 41,
      "operands" : [
        { "kind" : "IdResultType" },
        { "kind" : "IdResult" }
      ]
    },
    {
      "opname" : "OpConstantFalse",
      "class"  : "Constant-Creation",
      "opcode" : 42,
      "operands" : [
        { "kind" : "IdResultType" },
        { "kind" : "IdResult" }
      ]
    },
    {
      "opname" : "OpConstant",
      "class"  : "Constant-Creation",
      "opcode" : 43,
      "operands" : [
        { "kind" : "IdResultType" },
        { "kind" : "IdResult" },
        { "kind" : "LiteralContextDependentNumber", "name" : "'Value'" }
      ]
    },
    {
      "opname" : "OpConstantComposite",
      "class"  : "Constant-Creation",
      "opcode" : 44,
      "operands" : [
        { "kind" : "IdResultType" },
        { "kind" : "IdResult" },
        { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Constituents'" }
      ]
    },
    {
      "opname" : "OpConstantSampler",
      "class"  : "Constant-Creation",
      "opcode" : 45,
      "operands" : [
        { "kind" : "IdResultType" },
        { "kind" : "IdResult" },
        { "kind" : "SamplerAddressingMode" },
        { "kind" : "LiteralInteger",        "name" : "'Param'" },
        { "kind" : "SamplerFilterMode" }
      ],
      "capabilities" : [ "LiteralSampler" ]
    },
    {
      "opname" : "OpConstantNull",
      "class"  : "Constant-Creation",
      "opcode" : 46,
      "operands" : [
        { "kind" : "IdResultType" },
        { "kind" : "IdResult" }
      ]
    },
    {
      "opname" : "OpSpecConstantTrue",
      "class"  : "Constant-Creation",
      "opcode" : 48,
      "operands" : [
        { "kind" : "IdResultType" },
        { "kind" : "IdResult" }
      ]
    },
    {
      "opname" : "OpSpecConstantFalse",
      "class"  : "Constant-Creation",
      "opcode" : 49,
      "operands" : [
        { "kind" : "IdResultType" },
        { "kind" : "IdResult" }
      ]
    },
    {
      "opname" : "OpSpecConstant",
      "class"  : "Constant-Creation",
      "opcode" : 50,
      "operands" : [
        { "kind" : "IdResultType" },
        { "kind" : "IdResult" },
        { "kind" : "LiteralContextDependentNumber", "name" : "'Value'" }
      ]
    },
    {
      "opname" : "OpSpecConstantComposite",
      "class"  : "Constant-Creation",
      "opcode" : 51,
      "operands" : [
        { "kind" : "IdResultType" },
        { "kind" : "IdResult" },
        { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Constituents'" }
      ]
    },
    {
      "opname" : "OpSpecConstantOp",
      "class"  : "Constant-Creation",
      "opcode" : 52,
      "operands" : [
        { "kind" : "IdResultType" },
        { "kind" : "IdResult" },
        { "kind" : "LiteralSpecConstantOpInteger", "name" : "'Opcode'" }
      ]
    },
    {
      "opname" : "OpFunction",
      "class"  : "Function",
      "opcode" : 54,
      "operands" : [
        { "kind" : "IdResultType" },
        { "kind" : "IdResult" },
        { "kind" : "FunctionControl" },
        { "kind" : "IdRef",           "name" : "'Function Type'" }
      ]
    },
    {
      "opname" : "OpFunctionParameter",
      "class"  : "Function",
      "opcode" : 55,
      "operands" : [
        { "kind" : "IdResultType" },
        { "kind" : "IdResult" }
      ]
    },
    {
      "opname" : "OpFunctionEnd",
      "class"  : "Function",
      "opcode" : 56
    },
    {
      "opname" : "OpFunctionCall",
      "class"  : "Function",
      "opcode" : 57,
      "operands" : [
        { "kind" : "IdResultType" },
        { "kind" : "IdResult" },
        { "kind" : "IdRef",                            "name" : "'Function'" },
        { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Argument 0', +\n'Argument 1', +\n..." }
      ]
    },
    {
      "opname" : "OpVariable",
      "class"  : "Memory",
      "opcode" : 59,
      "operands" : [
        { "kind" : "IdResultType" },
        { "kind" : "IdResult" },
        { "kind" : "StorageClass" },
        { "kind" : "IdRef",        "quantifier" : "?", "name" : "'Initializer'" }
      ]
    },
    {
      "opname" : "OpImageTexelPointer",
      "class"  : "Memory",
      "opcode" : 60,
      "operands" : [
        { "kind" : "IdResultType" },
        { "kind" : "IdResult" },
        { "kind" : "IdRef",        "name" : "'Image'" },
        { "kind" : "IdRef",        "name" : "'Coordinate'" },
        { "kind" : "IdRef",        "name" : "'Sample'" }
      ]
    },
    {
      "opname" : "OpLoad",
      "class"  : "Memory",
      "opcode" : 61,
      "operands" : [
        { "kind" : "IdResultType" },
        { "kind" : "IdResult" },
        { "kind" : "IdRef",                            "name" : "'Pointer'" },
        { "kind" : "MemoryAccess", "quantifier" : "?" }
      ]
    },
    {
      "opname" : "OpStore",
      "class"  : "Memory",
      "opcode" : 62,
      "operands" : [
        { "kind" : "IdRef",                            "name" : "'Pointer'" },
        { "kind" : "IdRef",                            "name" : "'Object'" },
        { "kind" : "MemoryAccess", "quantifier" : "?" }
      ]
    },
    {
      "opname" : "OpCopyMemory",
      "class"  : "Memory",
      "opcode" : 63,
      "operands" : [
        { "kind" : "IdRef",                            "name" : "'Target'" },
        { "kind" : "IdRef",                            "name" : "'Source'" },
        { "kind" : "MemoryAccess", "quantifier" : "?" },
        { "kind" : "MemoryAccess", "quantifier" : "?" }
      ]
    },
    {
      "opname" : "OpCopyMemorySized",
      "class"  : "Memory",
      "opcode" : 64,
      "operands" : [
        { "kind" : "IdRef",                            "name" : "'Target'" },
        { "kind" : "IdRef",                            "name" : "'Source'" },
        { "kind" : "IdRef",                            "name" : "'Size'" },
        { "kind" : "MemoryAccess", "quantifier" : "?" },
        { "kind" : "MemoryAccess", "quantifier" : "?" }
      ],
      "capabilities" : [ "Addresses" ]
    },
    {
      "opname" : "OpAccessChain",
      "class"  : "Memory",
      "opcode" : 65,
      "operands" : [
        { "kind" : "IdResultType" },
        { "kind" : "IdResult" },
        { "kind" : "IdRef",                            "name" : "'Base'" },
        { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Indexes'" }
      ]
    },
    {
      "opname" : "OpInBoundsAccessChain",
      "class"  : "Memory",
      "opcode" : 66,
      "operands" : [
        { "kind" : "IdResultType" },
        { "kind" : "IdResult" },
        { "kind" : "IdRef",                            "name" : "'Base'" },
        { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Indexes'" }
      ]
    },
    {
      "opname" : "OpPtrAccessChain",
      "class"  : "Memory",
      "opcode" : 67,
      "operands" : [
        { "kind" : "IdResultType" },
        { "kind" : "IdResult" },
        { "kind" : "IdRef",                            "name" : "'Base'" },
        { "kind" : "IdRef",                            "name" : "'Element'" },
        { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Indexes'" }
      ],
      "capabilities" : [
        "Addresses",
        "VariablePointers",
        "VariablePointersStorageBuffer",
        "PhysicalStorageBufferAddresses"
      ]
    },
    {
      "opname" : "OpArrayLength",
      "class"  : "Memory",
      "opcode" : 68,
      "operands" : [
        { "kind" : "IdResultType" },
        { "kind" : "IdResult" },
        { "kind" : "IdRef",          "name" : "'Structure'" },
        { "kind" : "LiteralInteger", "name" : "'Array member'" }
      ],
      "capabilities" : [ "Shader" ]
    },
    {
      "opname" : "OpGenericPtrMemSemantics",
      "class"  : "Memory",
      "opcode" : 69,
      "operands" : [
        { "kind" : "IdResultType" },
        { "kind" : "IdResult" },
        { "kind" : "IdRef",        "name" : "'Pointer'" }
      ],
      "capabilities" : [ "Kernel" ]
    },
    {
      "opname" : "OpInBoundsPtrAccessChain",
      "class"  : "Memory",
      "opcode" : 70,
      "operands" : [
        { "kind" : "IdResultType" },
        { "kind" : "IdResult" },
        { "kind" : "IdRef",                            "name" : "'Base'" },
        { "kind" : "IdRef",                            "name" : "'Element'" },
        { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Indexes'" }
      ],
      "capabilities" : [ "Addresses" ]
    },
    {
      "opname" : "OpDecorate",
      "class"  : "Annotation",
      "opcode" : 71,
      "operands" : [
        { "kind" : "IdRef",      "name" : "'Target'" },
        { "kind" : "Decoration" }
      ]
    },
    {
      "opname" : "OpMemberDecorate",
      "class"  : "Annotation",
      "opcode" : 72,
      "operands" : [
        { "kind" : "IdRef",          "name" : "'Structure Type'" },
        { "kind" : "LiteralInteger", "name" : "'Member'" },
        { "kind" : "Decoration" }
      ]
    },
    {
      "opname" : "OpDecorationGroup",
      "class"  : "Annotation",
      "opcode" : 73,
      "operands" : [
        { "kind" : "IdResult" }
      ]
    },
    {
      "opname" : "OpGroupDecorate",
      "class"  : "Annotation",
      "opcode" : 74,
      "operands" : [
        { "kind" : "IdRef",                     "name" : "'Decoration Group'" },
        { "kind" : "IdRef", "quantifier" : "*", "name" : "'Targets'" }
      ]
    },
    {
      "opname" : "OpGroupMemberDecorate",
      "class"  : "Annotation",
      "opcode" : 75,
      "operands" : [
        { "kind" : "IdRef",                                       "name" : "'Decoration Group'" },
        { "kind" : "PairIdRefLiteralInteger", "quantifier" : "*", "name" : "'Targets'" }
      ]
    },
    {
      "opname" : "OpVectorExtractDynamic",
      "class"  : "Composite",
      "opcode" : 77,
      "operands" : [
        { "kind" : "IdResultType" },
        { "kind" : "IdResult" },
        { "kind" : "IdRef",        "name" : "'Vector'" },
        { "kind" : "IdRef",        "name" : "'Index'" }
      ]
    },
    {
      "opname" : "OpVectorInsertDynamic",
      "class"  : "Composite",
      "opcode" : 78,
      "operands" : [
        { "kind" : "IdResultType" },
        { "kind" : "IdResult" },
        { "kind" : "IdRef",        "name" : "'Vector'" },
        { "kind" : "IdRef",        "name" : "'Component'" },
        { "kind" : "IdRef",        "name" : "'Index'" }
      ]
    },
    {
      "opname" : "OpVectorShuffle",
      "class"  : "Composite",
      "opcode" : 79,
      "operands" : [
        { "kind" : "IdResultType" },
        { "kind" : "IdResult" },
        { "kind" : "IdRef",                              "name" : "'Vector 1'" },
        { "kind" : "IdRef",                              "name" : "'Vector 2'" },
        { "kind" : "LiteralInteger", "quantifier" : "*", "name" : "'Components'" }
      ]
    },
    {
      "opname" : "OpCompositeConstruct",
      "class"  : "Composite",
      "opcode" : 80,
      "operands" : [
        { "kind" : "IdResultType" },
        { "kind" : "IdResult" },
        { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Constituents'" }
      ]
    },
    {
      "opname" : "OpCompositeExtract",
      "class"  : "Composite",
      "opcode" : 81,
      "operands" : [
        { "kind" : "IdResultType" },
        { "kind" : "IdResult" },
        { "kind" : "IdRef",                              "name" : "'Composite'" },
        { "kind" : "LiteralInteger", "quantifier" : "*", "name" : "'Indexes'" }
      ]
    },
    {
      "opname" : "OpCompositeInsert",
      "class"  : "Composite",
      "opcode" : 82,
      "operands" : [
        { "kind" : "IdResultType" },
        { "kind" : "IdResult" },
        { "kind" : "IdRef",                              "name" : "'Object'" },
        { "kind" : "IdRef",                              "name" : "'Composite'" },
        { "kind" : "LiteralInteger", "quantifier" : "*", "name" : "'Indexes'" }
      ]
    },
    {
      "opname" : "OpCopyObject",
      "class"  : "Composite",
      "opcode" : 83,
      "operands" : [
        { "kind" : "IdResultType" },
        { "kind" : "IdResult" },
        { "kind" : "IdRef",        "name" : "'Operand'" }
      ]
    },
    {
      "opname" : "OpTranspose",
      "class"  : "Composite",
      "opcode" : 84,
      "operands" : [
        { "kind" : "IdResultType" },
        { "kind" : "IdResult" },
        { "kind" : "IdRef",        "name" : "'Matrix'" }
      ],
      "capabilities" : [ "Matrix" ]
    },
    {
      "opname" : "OpSampledImage",
      "class"  : "Image",
      "opcode" : 86,
      "operands" : [
        { "kind" : "IdResultType" },
        { "kind" : "IdResult" },
        { "kind" : "IdRef",        "name" : "'Image'" },
        { "kind" : "IdRef",        "name" : "'Sampler'" }
      ]
    },
    {
      "opname" : "OpImageSampleImplicitLod",
      "class"  : "Image",
      "opcode" : 87,
      "operands" : [
        { "kind" : "IdResultType" },
        { "kind" : "IdResult" },
        { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
        { "kind" : "ImageOperands", "quantifier" : "?" }
      ],
      "capabilities" : [ "Shader" ]
    },
    {
      "opname" : "OpImageSampleExplicitLod",
      "class"  : "Image",
      "opcode" : 88,
      "operands" : [
        { "kind" : "IdResultType" },
        { "kind" : "IdResult" },
        { "kind" : "IdRef",         "name" : "'Sampled Image'" },
        { "kind" : "IdRef",         "name" : "'Coordinate'" },
        { "kind" : "ImageOperands" }
      ]
    },
    {
      "opname" : "OpImageSampleDrefImplicitLod",
      "class"  : "Image",
      "opcode" : 89,
      "operands" : [
        { "kind" : "IdResultType" },
        { "kind" : "IdResult" },
        { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
        { "kind" : "IdRef",                             "name" : "'D~ref~'" },
        { "kind" : "ImageOperands", "quantifier" : "?" }
      ],
      "capabilities" : [ "Shader" ]
    },
    {
      "opname" : "OpImageSampleDrefExplicitLod",
      "class"  : "Image",
      "opcode" : 90,
      "operands" : [
        { "kind" : "IdResultType" },
        { "kind" : "IdResult" },
        { "kind" : "IdRef",         "name" : "'Sampled Image'" },
        { "kind" : "IdRef",         "name" : "'Coordinate'" },
        { "kind" : "IdRef",         "name" : "'D~ref~'" },
        { "kind" : "ImageOperands" }
      ],
      "capabilities" : [ "Shader" ]
    },
    {
      "opname" : "OpImageSampleProjImplicitLod",
      "class"  : "Image",
      "opcode" : 91,
      "operands" : [
        { "kind" : "IdResultType" },
        { "kind" : "IdResult" },
        { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
        { "kind" : "ImageOperands", "quantifier" : "?" }
      ],
      "capabilities" : [ "Shader" ]
    },
    {
      "opname" : "OpImageSampleProjExplicitLod",
      "class"  : "Image",
      "opcode" : 92,
      "operands" : [
        { "kind" : "IdResultType" },
        { "kind" : "IdResult" },
        { "kind" : "IdRef",         "name" : "'Sampled Image'" },
        { "kind" : "IdRef",         "name" : "'Coordinate'" },
        { "kind" : "ImageOperands" }
      ],
      "capabilities" : [ "Shader" ]
    },
    {
      "opname" : "OpImageSampleProjDrefImplicitLod",
      "class"  : "Image",
      "opcode" : 93,
      "operands" : [
        { "kind" : "IdResultType" },
        { "kind" : "IdResult" },
        { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
        { "kind" : "IdRef",                             "name" : "'D~ref~'" },
        { "kind" : "ImageOperands", "quantifier" : "?" }
      ],
      "capabilities" : [ "Shader" ]
    },
    {
      "opname" : "OpImageSampleProjDrefExplicitLod",
      "class"  : "Image",
      "opcode" : 94,
      "operands" : [
        { "kind" : "IdResultType" },
        { "kind" : "IdResult" },
        { "kind" : "IdRef",         "name" : "'Sampled Image'" },
        { "kind" : "IdRef",         "name" : "'Coordinate'" },
        { "kind" : "IdRef",         "name" : "'D~ref~'" },
        { "kind" : "ImageOperands" }
      ],
      "capabilities" : [ "Shader" ]
    },
    {
      "opname" : "OpImageFetch",
      "class"  : "Image",
      "opcode" : 95,
      "operands" : [
        { "kind" : "IdResultType" },
        { "kind" : "IdResult" },
        { "kind" : "IdRef",                             "name" : "'Image'" },
        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
        { "kind" : "ImageOperands", "quantifier" : "?" }
      ]
    },
    {
      "opname" : "OpImageGather",
      "class"  : "Image",
      "opcode" : 96,
      "operands" : [
        { "kind" : "IdResultType" },
        { "kind" : "IdResult" },
        { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
        { "kind" : "IdRef",                             "name" : "'Component'" },
        { "kind" : "ImageOperands", "quantifier" : "?" }
      ],
      "capabilities" : [ "Shader" ]
    },
    {
      "opname" : "OpImageDrefGather",
      "class"  : "Image",
      "opcode" : 97,
      "operands" : [
        { "kind" : "IdResultType" },
        { "kind" : "IdResult" },
        { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
        { "kind" : "IdRef",                             "name" : "'D~ref~'" },
        { "kind" : "ImageOperands", "quantifier" : "?" }
      ],
      "capabilities" : [ "Shader" ]
    },
    {
      "opname" : "OpImageRead",
      "class"  : "Image",
      "opcode" : 98,
      "operands" : [
        { "kind" : "IdResultType" },
        { "kind" : "IdResult" },
        { "kind" : "IdRef",                             "name" : "'Image'" },
        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
        { "kind" : "ImageOperands", "quantifier" : "?" }
      ]
    },
    {
      "opname" : "OpImageWrite",
      "class"  : "Image",
      "opcode" : 99,
      "operands" : [
        { "kind" : "IdRef",                             "name" : "'Image'" },
        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
        { "kind" : "IdRef",                             "name" : "'Texel'" },
        { "kind" : "ImageOperands", "quantifier" : "?" }
      ]
    },
    {
      "opname" : "OpImage",
      "class"  : "Image",
      "opcode" : 100,
      "operands" : [
        { "kind" : "IdResultType" },
        { "kind" : "IdResult" },
        { "kind" : "IdRef",        "name" : "'Sampled Image'" }
      ]
    },
    {
      "opname" : "OpImageQueryFormat",
      "class"  : "Image",
      "opcode" : 101,
      "operands" : [
        { "kind" : "IdResultType" },
        { "kind" : "IdResult" },
        { "kind" : "IdRef",        "name" : "'Image'" }
      ],
      "capabilities" : [ "Kernel" ]
    },
    {
      "opname" : "OpImageQueryOrder