aboutsummaryrefslogtreecommitdiff
path: root/src/gfxstream/scripts/print_gfx_logs
diff options
context:
space:
mode:
Diffstat (limited to 'src/gfxstream/scripts/print_gfx_logs')
-rw-r--r--src/gfxstream/scripts/print_gfx_logs/__init__.py14
-rw-r--r--src/gfxstream/scripts/print_gfx_logs/command_printer.py243
-rw-r--r--src/gfxstream/scripts/print_gfx_logs/command_printer_test.py799
-rw-r--r--src/gfxstream/scripts/print_gfx_logs/opcodes.py1301
-rw-r--r--src/gfxstream/scripts/print_gfx_logs/print_gfx_logs.py245
-rw-r--r--src/gfxstream/scripts/print_gfx_logs/print_gfx_logs_test.py137
-rw-r--r--src/gfxstream/scripts/print_gfx_logs/vulkan_printer.py2709
7 files changed, 5448 insertions, 0 deletions
diff --git a/src/gfxstream/scripts/print_gfx_logs/__init__.py b/src/gfxstream/scripts/print_gfx_logs/__init__.py
new file mode 100644
index 00000000000..04b96040431
--- /dev/null
+++ b/src/gfxstream/scripts/print_gfx_logs/__init__.py
@@ -0,0 +1,14 @@
+#
+# Copyright (C) 2022 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
diff --git a/src/gfxstream/scripts/print_gfx_logs/command_printer.py b/src/gfxstream/scripts/print_gfx_logs/command_printer.py
new file mode 100644
index 00000000000..f7979638c66
--- /dev/null
+++ b/src/gfxstream/scripts/print_gfx_logs/command_printer.py
@@ -0,0 +1,243 @@
+#
+# Copyright (C) 2022 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import io
+from datetime import datetime
+import sys
+import textwrap
+from typing import Dict, Optional
+from . import vulkan_printer
+from . import opcodes
+import struct
+
+
+class CommandPrinter:
+ """This class is responsible for printing the commands found in the minidump file to the terminal."""
+
+ def __init__(self, opcode: int, original_size: int, data: bytes, timestamp: int,
+ stream_idx: int, cmd_idx: int, out=sys.stdout):
+ self.opcode = opcode
+ self.original_size = original_size
+ self.data = io.BytesIO(data)
+ self.timestamp = timestamp
+ self.stream_idx = stream_idx
+ self.cmd_idx = cmd_idx
+ self.out = out
+
+ def print_cmd(self):
+ """
+ Tries to decode and pretty print the command to the terminal.
+ Falls back to printing hex data if the command doesn't have a printer.
+ """
+
+ # Print out the command name
+ print("\n{}.{} - {}: ({} bytes)".format(self.stream_idx, self.cmd_idx, self.cmd_name(),
+ self.original_size - 8), file=self.out)
+ self.write_timestamp(4)
+
+ if len(self.data.getbuffer()) == 0:
+ return
+
+ pretty_printer = getattr(vulkan_printer, self.cmd_name(), None)
+ if not pretty_printer:
+ self.print_raw()
+ return
+
+ try:
+ pretty_printer(self, indent=4)
+ self.check_no_more_bytes()
+ except Exception as ex:
+ print("Error while processing {}: {}".format(self.cmd_name(), repr(ex)), file=self.out)
+ print("Command raw data:", file=self.out)
+ self.print_raw()
+ raise ex
+
+ def check_no_more_bytes(self):
+ """
+ Checks that we processed all the bytes, otherwise there's probably a bug in the decoding
+ logic
+ """
+ if self.data.tell() != len(self.data.getbuffer()):
+ raise BufferError(
+ "Not all data was decoded. Decoded {} bytes but command had {}".format(
+ self.data.tell(), len(self.data.getbuffer())))
+
+ def cmd_name(self) -> str:
+ """Returns the command name (e.g.: "OP_vkBeginCommandBuffer", or the opcode as a string if unknown"""
+ return opcodes.opcodes.get(self.opcode, str(self.opcode))
+
+ def print_raw(self):
+ """Prints the command data as a hex bytes, as a fallback if we don't know how to decode it"""
+ truncated = self.original_size > len(self.data.getbuffer()) + 8
+ indent = 8
+ hex = ' '.join(["{:02x}".format(x) for x in self.data.getbuffer()])
+ if truncated:
+ hex += " [...]"
+ lines = textwrap.wrap(hex, width=16 * 3 + indent, initial_indent=' ' * indent,
+ subsequent_indent=' ' * indent)
+ for l in lines:
+ print(l, file=self.out)
+
+ def read_bytes(self, size: int):
+ buf = self.data.read(size)
+ if len(buf) != size:
+ raise EOFError("Unexpectedly reached the end of the buffer")
+ return buf
+
+ def read_int(self, size: int, signed: bool = False, big_endian: bool = False) -> int:
+ assert size in [1, 2, 4, 8], "Invalid size to read: " + str(size)
+ buf = self.read_bytes(size)
+ byte_order = 'big' if big_endian else 'little'
+ return int.from_bytes(buf, byteorder=byte_order, signed=signed)
+
+ def read_float(self) -> float:
+ buf = self.read_bytes(4)
+ return struct.unpack('f', buf)[0]
+
+ def write(self, msg: str, indent: int):
+ """Prints a string at a given indentation level"""
+ assert type(msg) == str
+ assert type(indent) == int and indent >= 0
+ print(" " * indent + msg, end='', file=self.out)
+
+ def write_int(self,
+ field_name: str,
+ size: int,
+ indent: int,
+ signed: bool = False,
+ big_endian: bool = False,
+ optional: bool = False,
+ count: Optional[int] = None) -> Optional[int]:
+ """
+ Reads and prints integers from the data stream.
+
+ When reading a single int (ie: when count=None), returns the int that was read, otherwise
+ returns None.
+
+ size: size of the integer in bytes
+ indent: indentation level that we should write at
+ signed: whether to treat it as a signed or unsigned int
+ big_endian: whether to treat it as little endian or big endian
+ optional: if True, we will first read an 8 byte boolean value. If that value is false, we
+ will return without further reading.
+ count: how many integers to read, for repeated values.
+ """
+ if optional and self.check_null(field_name, indent):
+ return
+
+ # Write the field name
+ self.write("{name}: ".format(name=field_name), indent)
+
+ if count is not None:
+ values = ["0x{:x}".format(self.read_int(size, signed, big_endian)) for i in
+ range(0, count)]
+ self.write("[{}]\n".format(", ".join(values)), indent=0)
+ else:
+ value = self.read_int(size, signed, big_endian)
+ # Print small values as decimal only, otherwise hex + decimal
+ format_str = ("{val}\n" if value < 10 else "0x{val:x} ({val})\n")
+ self.write(format_str.format(val=value), indent=0)
+ return value
+
+ def write_float(self, field_name: str, indent: int, count: Optional[int] = None):
+ if count is not None:
+ values = [str(self.read_float()) for i in range(0, count)]
+ self.write("{}: [{}]\n".format(field_name, ", ".join(values)), indent)
+ else:
+ self.write("{}: {}\n".format(field_name, self.read_float()), indent)
+
+ def write_enum(self, field_name: str, enum: Dict[int, str], indent: int) -> int:
+ """Reads the next 32-byte int from the data stream, prints it as an enum, and return it"""
+ value = self.read_int(4)
+ self.write("{}: {} ({})\n".format(field_name, enum.get(value, ""), value), indent)
+ return value
+
+ def write_flags(self, field_name: str, enum: Dict[int, str], indent: int):
+ """Reads and prints Vulkan flags (byte masks)"""
+ remaining_flags = flags = self.read_int(4)
+ flags_list = []
+ if remaining_flags == 0xffffffff:
+ # When the value is set to all flags, don't bother listing them all
+ flags_list.append("(all flags)")
+ else:
+ for (value, flag) in enum.items():
+ if value & remaining_flags:
+ remaining_flags ^= value
+ flags_list.append(flag)
+ if remaining_flags != 0:
+ flags_list.insert(0, "0x{:x}".format(remaining_flags))
+ self.write("{}: {} (0x{:x})\n".format(field_name, " | ".join(flags_list), flags), indent)
+
+ def write_stype_and_pnext(self, expected_stype: str, indent: int):
+ """Reads and prints the sType and pNext fields found in many Vulkan structs, while also sanity checking them"""
+ stype = self.write_enum("sType", vulkan_printer.VkStructureType, indent)
+ stype_str = vulkan_printer.VkStructureType.get(stype)
+ if stype_str != expected_stype:
+ raise ValueError("Wrong structure type. Expected: {}, got {} ({}) instead".format(
+ expected_stype, stype, stype_str))
+
+ pnext_size = self.write_int("pNext_size", 4, indent, big_endian=True)
+ if pnext_size != 0:
+ self.write_enum("ext type", vulkan_printer.VkStructureType, indent + 1)
+ raise NotImplementedError("Decoding structs with extensions is not supported")
+
+ def write_timestamp(self, indent):
+ if self.timestamp != 0:
+ self.write(
+ "Recorded at: {}\n".format(datetime.fromtimestamp(self.timestamp / 1000000.0)),
+ indent)
+
+ def check_null(self, field_name: str, indent) -> bool:
+ is_null = self.read_int(8, big_endian=True) == 0
+ if is_null:
+ self.write("{}: (null)\n".format(field_name), indent)
+ return is_null
+
+ def write_struct(self, field_name: str, struct_fn, optional: bool, count: Optional[int],
+ indent: int):
+ """
+ Reads and prints a struct, calling `struct_fn` to pretty-print it
+ optional: whether this is an optional structure. In this case, we will read an int64 first
+ and skip the struct if the result is null.
+ count: how many times this is repeated. Pass None for non-repeated fields.
+ """
+ if optional and self.check_null(field_name, indent):
+ return
+
+ is_repeated = count is not None
+ for i in range(0, count if is_repeated else 1):
+ suffix = " #{}".format(i) if is_repeated else ""
+ self.write("{}{}:\n".format(field_name, suffix), indent)
+ struct_fn(self, indent + 1)
+
+ def write_string(self, field_name: str, size: Optional[int], indent: int):
+ """
+ Reads a null-terminated string from the stream.
+ size: if specified, reads up to this many characters
+ """
+ buf = bytearray()
+ if size is not None:
+ buf = self.read_bytes(size)
+ buf = buf.rstrip(b'\x00')
+ else:
+ # Reads from the string one char at a time, until we find a null
+ # Not the most efficient way of doing this, but whatever
+ while True:
+ c = self.read_int(1)
+ if c == 0:
+ break
+ buf.append(c)
+
+ self.write("{}: \"{}\"\n".format(field_name, buf.decode('utf-8')), indent)
diff --git a/src/gfxstream/scripts/print_gfx_logs/command_printer_test.py b/src/gfxstream/scripts/print_gfx_logs/command_printer_test.py
new file mode 100644
index 00000000000..d7742a2b18f
--- /dev/null
+++ b/src/gfxstream/scripts/print_gfx_logs/command_printer_test.py
@@ -0,0 +1,799 @@
+#
+# Copyright (C) 2022 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import io
+
+import unittest
+from typing import Dict
+
+from . import opcodes
+from . import command_printer
+
+reverse_opcodes: Dict[str, int] = {v: k for k, v in opcodes.opcodes.items()}
+
+
+class ComandPrinterOutputTestCase(unittest.TestCase):
+ """
+ Tests individual aspects of the command printer logic.
+ """
+
+ def get_printer(self, hex_data: str, timestamp_ms=0):
+ """Helper function to return the command printer"""
+ out = io.StringIO()
+ buf = bytes.fromhex(hex_data)
+ cmd_printer = command_printer.CommandPrinter(
+ 0, len(buf), buf, timestamp_ms, 0, 0, out)
+ return cmd_printer, out
+
+ def test_raises_if_not_all_bytes_decoded(self):
+ # Make a command printer with 5 bytes
+ cmd_printer, output = self.get_printer("01 02 03 04 05")
+ # Decode 4 of them
+ cmd_printer.write_int("foobar", size=4, indent=0)
+ self.assertRaises(BufferError, cmd_printer.check_no_more_bytes)
+
+ def test_decode_int(self):
+ cmd_printer, output = self.get_printer("02 00 00 00")
+ r = cmd_printer.write_int("foobar", size=4, indent=0)
+ cmd_printer.check_no_more_bytes()
+ self.assertEqual(r, 2)
+ self.assertEqual(output.getvalue(), "foobar: 2\n")
+
+ def test_decode_optional_int(self):
+ cmd_printer, output = self.get_printer("00 00 00 00 00 00 00 01 08")
+ r = cmd_printer.write_int("i", size=1, indent=0, optional=True)
+ cmd_printer.check_no_more_bytes()
+ self.assertEqual(r, 8)
+ self.assertEqual(output.getvalue(), "i: 8\n")
+
+ def test_decode_missing_int(self):
+ cmd_printer, output = self.get_printer("00 00 00 00 00 00 00 00")
+ r = cmd_printer.write_int("i", size=1, indent=0, optional=True)
+ cmd_printer.check_no_more_bytes()
+ self.assertEqual(r, None)
+ self.assertEqual(output.getvalue(), "i: (null)\n")
+
+ def test_decode_optional_repeated_int(self):
+ cmd_printer, output = self.get_printer("00 00 00 00 00 00 00 01 02 00 03 00")
+ cmd_printer.write_int("i", size=2, indent=0, optional=True, count=2)
+ cmd_printer.check_no_more_bytes()
+ self.assertEqual(output.getvalue(), "i: [0x2, 0x3]\n")
+
+ def test_decode_float(self):
+ cmd_printer, output = self.get_printer("00 00 00 3f")
+ cmd_printer.write_float("foo", indent=0)
+ cmd_printer.check_no_more_bytes()
+ self.assertEqual(output.getvalue(), "foo: 0.5\n")
+
+ def test_decode_repeated_float(self):
+ cmd_printer, output = self.get_printer("00 00 00 3f 00 00 80 3f")
+ cmd_printer.write_float("foo", indent=0, count=2)
+ cmd_printer.check_no_more_bytes()
+ self.assertEqual(output.getvalue(), "foo: [0.5, 1.0]\n")
+
+ def test_decode_null_terminated_string(self):
+ cmd_printer, output = self.get_printer("77 6f 72 6c 64 00")
+ cmd_printer.write_string("hello", indent=1, size=None)
+ cmd_printer.check_no_more_bytes()
+ self.assertEqual(output.getvalue(), ' hello: "world"\n')
+
+ def test_decode_fixed_size_string(self):
+ cmd_printer, output = self.get_printer("77 6f 72 6c 64 00 00 00")
+ cmd_printer.write_string("hello", indent=1, size=8)
+ cmd_printer.check_no_more_bytes()
+ self.assertEqual(output.getvalue(), ' hello: "world"\n')
+
+ def test_decode_enum(self):
+ enum = {1000156007: "FOOBAR"}
+ cmd_printer, output = self.get_printer("67 2B 9D 3B")
+ cmd_printer.write_enum("foo", enum, indent=0)
+ cmd_printer.check_no_more_bytes()
+ self.assertEqual(output.getvalue(), 'foo: FOOBAR (1000156007)\n')
+
+ def test_decode_unknown_enum(self):
+ cmd_printer, output = self.get_printer("67 2B 9D 3B")
+ cmd_printer.write_enum("foo", {}, indent=0)
+ cmd_printer.check_no_more_bytes()
+ self.assertEqual(output.getvalue(), 'foo: (1000156007)\n')
+
+ def test_decode_flags(self):
+ enum = {1: "FOO", 2: "BAR", 4: "BAZ"}
+ cmd_printer, output = self.get_printer("03 00 00 00")
+ cmd_printer.write_flags("foo", enum, indent=0)
+ cmd_printer.check_no_more_bytes()
+ self.assertEqual(output.getvalue(), 'foo: FOO | BAR (0x3)\n')
+
+ def test_decode_unknown_flags(self):
+ enum = {1: "FOO", 2: "BAR", 4: "BAZ"}
+ cmd_printer, output = self.get_printer("0A 00 00 00")
+ cmd_printer.write_flags("foo", enum, indent=0)
+ cmd_printer.check_no_more_bytes()
+ self.assertEqual(output.getvalue(), 'foo: 0x8 | BAR (0xa)\n')
+
+ def test_decode_all_flags(self):
+ enum = {1: "FOO", 2: "BAR", 4: "BAZ"}
+ cmd_printer, output = self.get_printer("ff ff ff ff")
+ cmd_printer.write_flags("foo", enum, indent=0)
+ cmd_printer.check_no_more_bytes()
+ self.assertEqual(output.getvalue(), 'foo: (all flags) (0xffffffff)\n')
+
+ def test_decode_zero_timestamp(self):
+ cmd_printer, output = self.get_printer("", 0)
+ cmd_printer.write_timestamp(indent=0)
+ cmd_printer.check_no_more_bytes()
+ self.assertEqual(output.getvalue(), "") # Print nothing
+
+ def test_decode_zero_timestamp(self):
+ cmd_printer, output = self.get_printer("", 100)
+ cmd_printer.write_timestamp(indent=0)
+ cmd_printer.check_no_more_bytes()
+ self.assertEqual(output.getvalue(), "Recorded at: 1969-12-31 16:00:00.000100\n")
+
+
+class SuccessfullyDecodesCommandTestCase(unittest.TestCase):
+ """
+ This test suite checks that we're able to successfully decode each command (but doesn't check
+ the exact output.)
+ Each command that we pretty print should have at least one test here (unless the command takes
+ no arguments).
+
+ Please keep the test methods sorted in alphabetical order.
+ """
+
+ def run_test(self, opcode_str: str, cmd_data_hex: str):
+ opcode = reverse_opcodes[opcode_str]
+ cmd_data = bytes.fromhex(cmd_data_hex)
+ cmd_printer = command_printer.CommandPrinter(opcode, len(cmd_data), cmd_data, 0, 0, 0)
+ cmd_printer.print_cmd()
+
+ def test_OP_vkAcquireImageANDROID(self):
+ self.run_test("OP_vkAcquireImageANDROID", """
+ e2 00 00 00 b8 08 00 00 02 00 03 00 e5 08 00 00
+ 02 00 06 00 ff ff ff ff f3 08 00 00 02 00 17 00
+ 00 00 00 00 00 00 00 00
+ """)
+
+ @unittest.skip("Needs support for struct extensions")
+ def test_OP_vkAllocateMemory(self):
+ self.run_test("OP_vkAllocateMemory", """
+ d7 01 00 00 02 00 00 00 02 00 03 00 05 00 00 00
+ 00 00 00 18 e8 a9 a0 3b e8 a9 a0 3b 00 00 00 00
+ 0d 00 00 00 00 90 7e 00 00 00 00 00 07 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ """)
+
+ def test_OP_vkBeginCommandBufferAsyncGOOGLE(self):
+ self.run_test("OP_vkBeginCommandBufferAsyncGOOGLE", """
+ 2a 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00
+ 00 00 00 00
+ """)
+
+ def test_OP_vkBindBufferMemory(self):
+ self.run_test("OP_vkBindBufferMemory", """
+ cc 00 00 00 b8 08 00 00 02 00 03 00 e3 08 00 00
+ 03 00 05 00 e4 08 00 00 02 00 07 00 00 00 00 00
+ 00 00 00 00
+ """)
+
+ def test_OP_vkBindImageMemory(self):
+ self.run_test("OP_vkBindImageMemory", """
+ de 00 00 00 b8 08 00 00 02 00 03 00 f1 08 00 00
+ 02 00 06 00 f2 08 00 00 02 00 07 00 00 00 00 00
+ 00 00 00 00
+ """)
+
+ def test_OP_vkCmdBeginRenderPass(self):
+ self.run_test("OP_vkCmdBeginRenderPass", """
+ 2b 00 00 00 00 00 00 00 65 0a 00 00 02 00 11 00
+ e7 09 00 00 03 00 12 00 00 00 00 00 00 00 00 00
+ c4 01 00 00 80 00 00 00 02 00 00 00 00 00 79 bd
+ 2d fe 70 70 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 80 3f 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00
+ """)
+
+ def test_OP_vkCmdBindDescriptorSets(self):
+ self.run_test("OP_vkCmdBindDescriptorSets", """
+ 00 00 00 00 c8 09 00 00 03 00 13 00 01 00 00 00
+ 01 00 00 00 41 09 00 00 03 00 0d 00 02 00 00 00
+ 00 03 00 00 00 00 00 00
+ """)
+
+ def test_OP_vkCmdBindIndexBuffer(self):
+ self.run_test("OP_vkCmdBindIndexBuffer", """
+ a4 09 00 00 04 00 05 00 00 80 00 00 00 00 00 00
+ 00 00 00 00
+ """)
+
+ def test_OP_vkCmdBindPipeline(self):
+ self.run_test("OP_vkCmdBindPipeline", """
+ 00 00 00 00 ba 09 00 00 02 00 15 00
+ """)
+
+ def test_OP_vkCmdBindVertexBuffers(self):
+ self.run_test("OP_vkCmdBindVertexBuffers", """
+ 00 00 00 00 03 00 00 00 a4 09 00 00 04 00 05 00
+ a4 09 00 00 04 00 05 00 a4 09 00 00 04 00 05 00
+ 00 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00
+ 0c 00 00 00 00 00 00 00
+ """)
+
+ def test_OP_vkCmdClearAttachments(self):
+ self.run_test("OP_vkCmdClearAttachments", """
+ 01 00 00 00 06 00 00 00 00 00 00 00 00 00 80 3f
+ 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00
+ 00 00 00 00 00 00 00 00 80 07 00 00 38 04 00 00
+ 00 00 00 00 01 00 00 00
+ """)
+
+ def test_OP_vkCmdClearColorImage(self):
+ self.run_test("OP_vkCmdClearColorImage", """
+ e5 08 00 00 02 00 06 00 07 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00
+ 01 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00
+ 01 00 00 00
+ """)
+
+ def test_OP_vkCmdCopyBufferToImage(self):
+ self.run_test("OP_vkCmdCopyBufferToImage", """
+ 9f 09 00 00 02 00 05 00 a1 09 00 00 02 00 06 00
+ 07 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00
+ 40 0b 00 00 00 0a 00 00 01 00 00 00 00 00 00 00
+ 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 40 0b 00 00 00 0a 00 00 01 00 00 00
+ """)
+
+ def test_OP_vkCmdCopyImageToBuffer(self):
+ self.run_test("OP_vkCmdCopyImageToBuffer", """
+ 99 09 00 00 09 00 06 00 06 00 00 00 98 09 00 00
+ 07 00 05 00 01 00 00 00 00 00 00 00 00 00 00 00
+ 20 00 00 00 20 00 00 00 01 00 00 00 00 00 00 00
+ 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 20 00 00 00 20 00 00 00 01 00 00 00
+ """)
+
+ def test_OP_vkCmdDraw(self):
+ self.run_test("OP_vkCmdDraw", """
+ 06 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00
+ """)
+
+ def test_OP_vkCmdDrawIndexed(self):
+ self.run_test("OP_vkCmdDrawIndexed", """
+ 6c 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00
+ """)
+
+ def test_OP_vkCmdPipelineBarrier(self):
+ self.run_test("OP_vkCmdPipelineBarrier", """
+ 01 04 00 00 80 04 00 00 00 00 00 00 01 00 00 00
+ 2e 00 00 00 00 00 00 00 00 01 00 00 a0 01 00 00
+ 00 00 00 00 03 00 00 00 2d 00 00 00 00 00 00 00
+ 00 01 00 00 20 00 00 00 02 00 00 00 05 00 00 00
+ 00 00 00 00 00 00 00 00 d2 11 00 00 04 00 06 00
+ 01 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00
+ 01 00 00 00 2d 00 00 00 00 00 00 00 00 01 00 00
+ 20 00 00 00 02 00 00 00 05 00 00 00 00 00 00 00
+ 00 00 00 00 ac 15 00 00 02 00 06 00 01 00 00 00
+ 00 00 00 00 01 00 00 00 00 00 00 00 01 00 00 00
+ 2d 00 00 00 00 00 00 00 00 01 00 00 20 00 00 00
+ 02 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00
+ 9d 16 00 00 02 00 06 00 01 00 00 00 00 00 00 00
+ 01 00 00 00 00 00 00 00 01 00 00 00
+ """)
+
+ def test_OP_vkCmdSetScissor(self):
+ self.run_test("OP_vkCmdSetScissor", """
+ 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00
+ 40 0b 00 00 00 0a 00 00
+ """)
+
+ def test_OP_vkCmdSetViewport(self):
+ self.run_test("OP_vkCmdSetViewport", """
+ 00 00 00 00 01 00 00 00 00 00 00 00 00 00 20 45
+ 00 00 34 45 00 00 20 c5 00 00 00 00 00 00 80 3f
+ """)
+
+ def test_OP_vkCollectDescriptorPoolIdsGOOGLE(self):
+ self.run_test("OP_vkCollectDescriptorPoolIdsGOOGLE", """
+ c5 00 00 00 b8 08 00 00 02 00 03 00 c1 08 00 00
+ 02 00 0c 00 10 00 00 00 00 00 79 bc 3d fd b6 40
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ """)
+
+ def test_OP_vkCreateBufferWithRequirementsGOOGLE(self):
+ self.run_test("OP_vkCreateBufferWithRequirementsGOOGLE", """
+ 2b 00 00 00 b8 08 00 00 02 00 03 00 0c 00 00 00
+ 00 00 00 00 00 00 00 00 00 10 00 00 00 00 00 00
+ 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00
+ """)
+
+ def test_OP_vkCreateDescriptorPool(self):
+ self.run_test("OP_vkCreateDescriptorPool", """
+ e1 00 00 00 b7 15 00 00 03 00 03 00 21 00 00 00
+ 00 00 00 00 00 00 00 00 10 00 00 00 02 00 00 00
+ 08 00 00 00 10 00 00 00 08 00 00 00 10 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ """)
+
+ def test_OP_vkCreateDescriptorSetLayout(self):
+ self.run_test("OP_vkCreateDescriptorSetLayout", """
+ c3 00 00 00 b8 08 00 00 02 00 03 00 20 00 00 00
+ 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00
+ 08 00 00 00 01 00 00 00 3f 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00
+ """)
+
+ def test_OP_vkCreateFence(self):
+ self.run_test("OP_vkCreateFence", """
+ e3 00 00 00 b8 08 00 00 02 00 03 00 08 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00
+ """)
+
+ def test_OP_vkCreateFramebuffer(self):
+ self.run_test("OP_vkCreateFramebuffer", """
+ 83 02 00 00 fb 08 00 00 02 00 03 00 25 00 00 00
+ 00 00 00 00 00 00 00 00 65 0a 00 00 02 00 11 00
+ 02 00 00 00 e8 09 00 00 03 00 09 00 e9 09 00 00
+ 03 00 09 00 c4 01 00 00 80 00 00 00 01 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ """)
+
+ @unittest.skip("Needs support for stream features hasRasterization / hasTessellation")
+ def test_OP_vkCreateGraphicsPipelines(self):
+ self.run_test("OP_vkCreateGraphicsPipelines", """
+ 3b 01 00 00 fb 08 00 00 02 00 03 00 02 09 00 00
+ 02 00 14 00 01 00 00 00 00 00 00 01 00 00 00 00
+ 1c 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00
+ 12 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00
+ b7 09 00 00 02 00 0a 00 00 00 00 04 6d 61 69 6e
+ 00 00 79 bd 2d fd a3 60 05 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 04 01 00 00 00
+ 04 00 00 00 00 00 00 00 00 00 00 04 02 00 00 00
+ 08 00 00 00 00 00 00 00 00 00 00 04 03 00 00 00
+ 0c 00 00 00 00 00 00 00 00 00 00 04 04 00 00 00
+ 10 00 00 00 00 00 00 00 00 00 00 04 00 00 00 00
+ 00 00 00 14 00 00 00 00 00 00 00 00 00 00 80 3f
+ 00 00 80 3f 00 00 00 00 12 00 00 00 00 00 00 00
+ 00 00 00 00 10 00 00 00 b8 09 00 00 02 00 0a 00
+ 00 00 00 04 6d 61 69 6e 00 00 79 bd 2d fd a3 f0
+ 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 04 01 00 00 00 04 00 00 00 00 00 00 00
+ 00 00 00 04 02 00 00 00 08 00 00 00 00 00 00 00
+ 00 00 00 04 03 00 00 00 0c 00 00 00 00 00 00 00
+ 00 00 00 04 04 00 00 00 10 00 00 00 00 00 00 00
+ 00 00 00 04 00 00 00 00 00 00 00 14 00 00 00 00
+ 00 00 00 00 00 00 80 3f 00 00 80 3f 00 00 00 00
+ 00 00 79 bd 2d fd a4 78 13 00 00 00 00 00 00 00
+ 00 00 00 00 02 00 00 00 00 00 00 00 08 00 00 00
+ 00 00 00 00 01 00 00 00 08 00 00 00 00 00 00 00
+ 02 00 00 00 00 00 00 00 00 00 00 00 67 00 00 00
+ 00 00 00 00 01 00 00 00 01 00 00 00 67 00 00 00
+ 00 00 00 00 00 00 79 bd 2d fd a4 e0 14 00 00 00
+ 00 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00
+ 00 00 79 bd 2d fd a5 00 00 00 79 bd 2d fd a5 18
+ 16 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00
+ 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 79 bd 2d fd a5 48 17 00 00 00
+ 00 00 00 20 b9 bd 9e 3b b9 bd 9e 3b 00 00 00 18
+ 31 aa 9e 3b 31 aa 9e 3b 00 00 00 18 62 37 9b 3b
+ 62 37 9b 3b 00 00 00 00 00 00 00 00 00 00 00 00
+ 01 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 80 3f 00 00
+ 79 bd 2d fd a5 d8 18 00 00 00 00 00 00 00 00 00
+ 00 00 01 00 00 00 00 00 00 00 00 00 80 3f 00 00
+ 79 bd 2d fd a6 08 ff ff ff ff 00 00 00 00 00 00
+ 00 00 00 00 79 bd 2d fd a6 10 19 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 07 00 00 00 ff 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 07 00 00 00 ff 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 79 bd 2d fd
+ a6 78 1a 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 07 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 79 bb ee 02
+ ea 20 1b 00 00 00 00 00 00 00 00 00 00 00 02 00
+ 00 00 00 00 00 00 01 00 00 00 6b 09 00 00 02 00
+ 13 00 b9 09 00 00 03 00 11 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00
+ """)
+
+ def test_OP_vkCreateImageView(self):
+ self.run_test("OP_vkCreateImageView", """
+ 3c 01 00 00 fb 08 00 00 02 00 03 00 0f 00 00 00
+ 00 00 00 00 00 00 00 00 06 09 00 00 02 00 06 00
+ 01 00 00 00 25 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00
+ 01 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00
+ """)
+
+ @unittest.skip("Needs support for struct extensions")
+ def test_OP_vkCreateImageWithRequirementsGOOGLE(self):
+ self.run_test("OP_vkCreateImageWithRequirementsGOOGLE", """
+ d0 00 00 00 b8 08 00 00 02 00 03 00 0e 00 00 00
+ 00 00 00 38 10 f1 9a 3b 10 f1 9a 3b 00 00 00 00
+ 00 00 79 bd 2d fd df e8 0d 00 00 00 80 07 00 00
+ 01 00 00 00 33 0b 00 00 06 09 00 00 00 00 00 00
+ 66 02 00 00 00 00 00 00 00 00 00 00 01 00 00 00
+ 25 00 00 00 80 07 00 00 38 04 00 00 01 00 00 00
+ 01 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00
+ 97 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00
+ """)
+
+ def test_OP_vkCreatePipelineCache(self):
+ self.run_test("OP_vkCreatePipelineCache", """
+ 38 01 00 00 fb 08 00 00 02 00 03 00 11 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ """)
+
+ def test_OP_vkCreateRenderPass(self):
+ self.run_test("OP_vkCreateRenderPass", """
+ 3a 01 00 00 fb 08 00 00 02 00 03 00 26 00 00 00
+ 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00
+ 25 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 02 00 00 00 02 00 00 00
+ 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 01 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00
+ """)
+
+ def test_OP_vkCreateSampler(self):
+ self.run_test("OP_vkCreateSampler", """
+ eb 00 00 00 b7 15 00 00 03 00 03 00 1f 00 00 00
+ 00 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00
+ 00 00 00 00 02 00 00 00 02 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 80 3f 00 00 00 00
+ 03 00 00 00 00 00 00 00 00 00 80 3e 01 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00
+ """)
+
+ def test_OP_vkCreateSemaphore(self):
+ self.run_test("OP_vkCreateSemaphore", """
+ d3 00 00 00 b8 08 00 00 02 00 03 00 09 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00
+ """)
+
+ def test_OP_vkDestroyBuffer(self):
+ self.run_test("OP_vkDestroyBuffer", """
+ 2a 00 00 00 b8 08 00 00 02 00 03 00 c0 08 00 00
+ 02 00 05 00 00 00 00 00 00 00 00 00
+ """)
+
+ def test_OP_vkDestroyCommandPool(self):
+ self.run_test("OP_vkDestroyCommandPool", """
+ fb 05 00 00 b1 0a 00 00 05 00 03 00 a3 0a 00 00
+ 06 00 21 00 00 00 00 00 00 00 00 00
+ """)
+
+ def test_OP_vkDestroyDescriptorPool(self):
+ self.run_test("OP_vkDestroyDescriptorPool", """
+ 8b 01 00 00 fb 08 00 00 02 00 03 00 44 09 00 00
+ 02 00 0c 00 00 00 00 00 00 00 00 00
+ """)
+
+ def test_OP_vkDestroyDescriptorSetLayout(self):
+ self.run_test("OP_vkDestroyDescriptorSetLayout", """
+ a3 01 00 00 fb 08 00 00 02 00 03 00 69 09 00 00
+ 02 00 0b 00 00 00 00 00 00 00 00 00
+ """)
+
+ def test_OP_vkDestroyDevice(self):
+ self.run_test("OP_vkDestroyDevice", """
+ 00 06 00 00 b1 0a 00 00 05 00 03 00 00 00 00 00
+ 00 00 00 00
+ """)
+
+ def test_OP_vkDestroyFence(self):
+ self.run_test("OP_vkDestroyFence", """
+ fc 05 00 00 b1 0a 00 00 05 00 03 00 b2 0a 00 00
+ 05 00 16 00 00 00 00 00 00 00 00 00
+ """)
+
+ def test_OP_vkDestroyFramebuffer(self):
+ self.run_test("OP_vkDestroyFramebuffer", """
+ 61 01 00 00 fb 08 00 00 02 00 03 00 bc 09 00 00
+ 02 00 12 00 00 00 00 00 00 00 00 00
+ """)
+
+ def test_OP_vkDestroyImage(self):
+ self.run_test("OP_vkDestroyImage", """
+ ee 00 00 00 b8 08 00 00 02 00 03 00 f1 08 00 00
+ 02 00 06 00 00 00 00 00 00 00 00 00
+ """)
+
+ def test_OP_vkDestroyImageView(self):
+ self.run_test("OP_vkDestroyImageView", """
+ 60 01 00 00 fb 08 00 00 02 00 03 00 bb 09 00 00
+ 02 00 09 00 00 00 00 00 00 00 00 00
+ """)
+
+ def test_OP_vkDestroyInstance(self):
+ self.run_test("OP_vkDestroyInstance", """
+ 01 06 00 00 e7 08 00 00 07 00 01 00 00 00 00 00
+ 00 00 00 00
+ """)
+
+ def test_OP_vkDestroyPipeline(self):
+ self.run_test("OP_vkDestroyPipeline", """
+ cd 05 00 00 b1 0a 00 00 05 00 03 00 8a 0a 00 00
+ 05 00 15 00 00 00 00 00 00 00 00 00
+ """)
+
+ def test_OP_vkDestroyPipelineCache(self):
+ self.run_test("OP_vkDestroyPipelineCache", """
+ 39 01 00 00 fb 08 00 00 02 00 03 00 b9 09 00 00
+ 02 00 14 00 00 00 00 00 00 00 00 00
+ """)
+
+ def test_OP_vkDestroyPipelineLayout(self):
+ self.run_test("OP_vkDestroyPipelineLayout", """
+ a2 01 00 00 fb 08 00 00 02 00 03 00 6b 09 00 00
+ 02 00 13 00 00 00 00 00 00 00 00 00
+ """)
+
+ def test_OP_vkDestroyRenderPass(self):
+ self.run_test("OP_vkDestroyRenderPass", """
+ 9f 01 00 00 fb 08 00 00 02 00 03 00 c2 09 00 00
+ 02 00 11 00 00 00 00 00 00 00 00 00
+ """)
+
+ def test_OP_vkDestroySemaphore(self):
+ self.run_test("OP_vkDestroySemaphore", """
+ f3 00 00 00 b8 08 00 00 02 00 03 00 f3 08 00 00
+ 02 00 17 00 00 00 00 00 00 00 00 00
+ """)
+
+ def test_OP_vkDestroyShaderModule(self):
+ self.run_test("OP_vkDestroyShaderModule", """
+ 7e 01 00 00 fb 08 00 00 02 00 03 00 b7 09 00 00
+ 02 00 0a 00 00 00 00 00 00 00 00 00
+ """)
+
+ def test_OP_vkFreeCommandBuffers(self):
+ self.run_test("OP_vkFreeCommandBuffers", """
+ f9 05 00 00 b1 0a 00 00 05 00 03 00 a3 0a 00 00
+ 06 00 21 00 01 00 00 00 00 00 79 bb dd fe 4a b0
+ ec 08 00 00 07 00 22 00
+ """)
+
+ def test_OP_vkFreeMemory(self):
+ self.run_test("OP_vkFreeMemory", """
+ ef 00 00 00 b8 08 00 00 02 00 03 00 f2 08 00 00
+ 02 00 07 00 00 00 00 00 00 00 00 00
+ """)
+
+ def test_OP_vkFreeMemorySyncGOOGLE(self):
+ self.run_test("OP_vkFreeMemorySyncGOOGLE", """
+ ff 05 00 00 b1 0a 00 00 05 00 03 00 74 0a 00 00
+ 06 00 07 00 00 00 00 00 00 00 00 00
+ """)
+
+ def test_OP_vkGetFenceStatus(self):
+ self.run_test("OP_vkGetFenceStatus", """
+ e6 00 00 00 b8 08 00 00 02 00 03 00 f6 08 00 00
+ 02 00 16 00
+ """)
+
+ def test_OP_vkGetMemoryHostAddressInfoGOOGLE(self):
+ self.run_test("OP_vkGetMemoryHostAddressInfoGOOGLE", """
+ 01 01 00 00 5a 0c 00 00 05 00 03 00 5a 11 00 00
+ 02 00 07 00 00 00 00 00 bd d3 07 f0 00 00 00 00
+ 00 00 00 00 00 00 00 00 bd d3 07 f8 00 00 00 00
+ 00 00 00 00 00 00 00 00 bd d3 08 00 00 00 00 00
+ 00 00 00 00
+ """)
+
+ def test_OP_vkGetPhysicalDeviceFormatProperties(self):
+ self.run_test("OP_vkGetPhysicalDeviceFormatProperties", """
+ 2f 00 00 00 b7 08 00 00 02 00 02 00 7c 00 00 00
+ 00 00 00 00 00 00 00 00 ff ff ff ff
+ """)
+
+ def test_OP_vkGetPhysicalDeviceProperties2KHR(self):
+ self.run_test("OP_vkGetPhysicalDeviceProperties2KHR", """
+ cd 00 00 00 b7 08 00 00 02 00 02 00 79 b0 9b 3b
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00
+ """)
+
+ def test_OP_vkGetSwapchainGrallocUsageANDROID(self):
+ self.run_test("OP_vkGetSwapchainGrallocUsageANDROID", """
+ cf 00 00 00 b8 08 00 00 02 00 03 00 25 00 00 00
+ 97 00 00 00 00 00 00 00
+ """)
+
+ def test_OP_vkQueueCommitDescriptorSetUpdatesGOOGLE(self):
+ self.run_test("OP_vkQueueCommitDescriptorSetUpdatesGOOGLE", """
+ bd 02 00 00 04 00 00 00 02 00 04 00 04 00 00 00
+ 0b 00 00 00 02 00 0c 00 79 01 00 00 02 00 0c 00
+ de 00 00 00 02 00 0c 00 8a 01 00 00 02 00 0c 00
+ 07 00 00 00 0a 00 00 00 05 00 0b 00 31 00 00 00
+ 02 00 0b 00 31 00 00 00 02 00 0b 00 44 01 00 00
+ 02 00 0b 00 44 01 00 00 02 00 0b 00 44 01 00 00
+ 02 00 0b 00 44 01 00 00 02 00 0b 00 1b 00 00 00
+ 02 00 0d 00 89 01 00 00 02 00 0d 00 ee 00 00 00
+ 02 00 0d 00 9a 01 00 00 02 00 0d 00 98 01 00 00
+ 02 00 0d 00 99 01 00 00 02 00 0d 00 97 01 00 00
+ 02 00 0d 00 00 00 00 00 01 00 00 00 02 00 00 00
+ 03 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00
+ 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00
+ 01 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00
+ 01 00 00 00 03 00 00 00 05 00 00 00 06 00 00 00
+ 07 00 00 00 08 00 00 00 09 00 00 00 23 00 00 00
+ 00 00 00 00 1b 00 00 00 02 00 0d 00 00 00 00 00
+ 00 00 00 00 01 00 00 00 08 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 74 3c ce b3 aa 50 bd 16 00 00
+ 03 00 05 00 00 00 00 00 00 00 00 00 50 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 23 00 00 00
+ 00 00 00 00 89 01 00 00 02 00 0d 00 00 00 00 00
+ 00 00 00 00 01 00 00 00 08 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 74 3c ce b3 aa 68 a8 16 00 00
+ 03 00 05 00 00 00 00 00 00 00 00 00 00 01 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 23 00 00 00
+ 00 00 00 00 89 01 00 00 02 00 0d 00 01 00 00 00
+ 00 00 00 00 01 00 00 00 08 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 74 3c ce b3 aa 80 2d 00 00 00
+ 03 00 05 00 00 00 00 00 00 00 00 00 10 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 23 00 00 00
+ 00 00 00 00 ee 00 00 00 02 00 0d 00 00 00 00 00
+ 00 00 00 00 01 00 00 00 08 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 74 3c ce b3 aa 98 a8 16 00 00
+ 03 00 05 00 00 00 00 00 00 00 00 00 00 01 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 23 00 00 00
+ 00 00 00 00 ee 00 00 00 02 00 0d 00 01 00 00 00
+ 00 00 00 00 01 00 00 00 08 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 74 3c ce b3 aa b0 a8 16 00 00
+ 03 00 05 00 00 00 00 00 00 00 00 00 00 01 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 23 00 00 00
+ 00 00 00 00 9a 01 00 00 02 00 0d 00 00 00 00 00
+ 00 00 00 00 01 00 00 00 01 00 00 00 00 00 74 3c
+ ce b3 aa c8 c1 16 00 00 02 00 0e 00 be 16 00 00
+ 02 00 09 00 05 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 23 00 00 00 00 00 00 00
+ 98 01 00 00 02 00 0d 00 00 00 00 00 00 00 00 00
+ 01 00 00 00 01 00 00 00 00 00 74 3c ce b3 aa e0
+ c1 16 00 00 02 00 0e 00 c9 16 00 00 02 00 09 00
+ 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 23 00 00 00 00 00 00 00 99 01 00 00
+ 02 00 0d 00 00 00 00 00 00 00 00 00 01 00 00 00
+ 01 00 00 00 00 00 74 3c ce b3 aa f8 c8 16 00 00
+ 02 00 0e 00 c6 16 00 00 02 00 09 00 05 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 23 00 00 00 00 00 00 00 97 01 00 00 02 00 0d 00
+ 00 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00
+ 00 00 74 3c ce b3 ab 10 c1 16 00 00 02 00 0e 00
+ cc 16 00 00 02 00 09 00 05 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00
+ """)
+
+ def test_OP_vkQueueFlushCommandsGOOGLE(self):
+ self.run_test("OP_vkQueueFlushCommandsGOOGLE", """
+ e4 00 00 00 b9 08 00 00 02 00 04 00 be 08 00 00
+ 02 00 22 00 18 01 00 00 00 00 00 00
+ """)
+
+ def test_OP_vkQueueSignalReleaseImageANDROIDAsyncGOOGLE(self):
+ self.run_test("OP_vkQueueSignalReleaseImageANDROIDAsyncGOOGLE", """
+ e7 00 00 00 b9 08 00 00 02 00 04 00 01 00 00 00
+ 00 00 79 bd 0d fe c9 20 e8 08 00 00 02 00 17 00
+ e5 08 00 00 02 00 06 00
+ """)
+
+ def test_OP_vkQueueSubmitAsyncGOOGLE(self):
+ self.run_test("OP_vkQueueSubmitAsyncGOOGLE", """
+ c0 02 00 00 04 00 00 00 02 00 04 00 01 00 00 00
+ 04 00 00 00 00 00 00 00 03 00 00 00 c0 16 00 00
+ 02 00 17 00 cb 16 00 00 02 00 17 00 ce 16 00 00
+ 02 00 17 00 00 00 01 00 00 00 01 00 00 00 01 00
+ 01 00 00 00 08 00 00 00 02 00 22 00 00 00 00 00
+ d1 16 00 00 02 00 16 00
+ """)
+
+ def test_OP_vkQueueWaitIdle(self):
+ self.run_test("OP_vkQueueWaitIdle", """
+ f3 05 00 00 8f 09 00 00 06 00 04 00
+ """)
+
+ def test_OP_vkResetFences(self):
+ self.run_test("OP_vkResetFences", """
+ 4f 01 00 00 fb 08 00 00 02 00 03 00 01 00 00 00
+ c3 09 00 00 02 00 16 00
+ """)
+
+ def test_OP_vkWaitForFences(self):
+ self.run_test("OP_vkWaitForFences", """
+ ed 00 00 00 b8 08 00 00 02 00 03 00 01 00 00 00
+ 03 09 00 00 05 00 16 00 01 00 00 00 00 b0 8e f0
+ 1b 00 00 00
+ """)
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/src/gfxstream/scripts/print_gfx_logs/opcodes.py b/src/gfxstream/scripts/print_gfx_logs/opcodes.py
new file mode 100644
index 00000000000..d44d0c85d06
--- /dev/null
+++ b/src/gfxstream/scripts/print_gfx_logs/opcodes.py
@@ -0,0 +1,1301 @@
+"""
+gfxstream opcodes
+
+This is a map of all gfxstream opcodes back to their string names.
+
+Currently, this was manually generated from the following files:
+
+GfxApiLogger: http://source/android/device/generic/vulkan-cereal/utils/include/utils/GfxApiLogger.h
+Vulkan: http://source/play-internal/battlestar/aosp/device/generic/vulkan-cereal/stream-servers/vulkan/cereal/common/goldfish_vk_marshaling.h
+RenderControl: http://source/play-internal/battlestar/aosp/device/generic/vulkan-cereal/stream-servers/renderControl_dec/renderControl_opcodes.h
+GLES1: http://source/android/device/generic/vulkan-cereal/stream-servers/gles1_dec/gles1_opcodes.h
+GLES2: http://source/android/device/generic/vulkan-cereal/stream-servers/gles2_dec/gles2_opcodes.h
+
+TODO(gregschlom): Consider auto-generating this file in the future.
+"""
+
+opcodes = {
+ ###############################################################################################
+ # GfxApiLogger opcodes for logging additional information
+ # http://source/android/device/generic/vulkan-cereal/utils/include/utils/GfxApiLogger.h
+ ###############################################################################################
+ 90000: "OP_gfxApiLoggerBeginCommandExecution",
+ ###############################################################################################
+ # Vulkan opcodes
+ # http://source/play-internal/battlestar/aosp/device/generic/vulkan-cereal/stream-servers/vulkan/cereal/common/goldfish_vk_marshaling.h
+ ###############################################################################################
+ 20000: "OP_vkCreateInstance",
+ 20001: "OP_vkDestroyInstance",
+ 20002: "OP_vkEnumeratePhysicalDevices",
+ 20003: "OP_vkGetPhysicalDeviceFeatures",
+ 20004: "OP_vkGetPhysicalDeviceFormatProperties",
+ 20005: "OP_vkGetPhysicalDeviceImageFormatProperties",
+ 20006: "OP_vkGetPhysicalDeviceProperties",
+ 20007: "OP_vkGetPhysicalDeviceQueueFamilyProperties",
+ 20008: "OP_vkGetPhysicalDeviceMemoryProperties",
+ 20009: "OP_vkGetInstanceProcAddr",
+ 20010: "OP_vkGetDeviceProcAddr",
+ 20011: "OP_vkCreateDevice",
+ 20012: "OP_vkDestroyDevice",
+ 20013: "OP_vkEnumerateInstanceExtensionProperties",
+ 20014: "OP_vkEnumerateDeviceExtensionProperties",
+ 20015: "OP_vkEnumerateInstanceLayerProperties",
+ 20016: "OP_vkEnumerateDeviceLayerProperties",
+ 20017: "OP_vkGetDeviceQueue",
+ 20018: "OP_vkQueueSubmit",
+ 20019: "OP_vkQueueWaitIdle",
+ 20020: "OP_vkDeviceWaitIdle",
+ 20021: "OP_vkAllocateMemory",
+ 20022: "OP_vkFreeMemory",
+ 20023: "OP_vkMapMemory",
+ 20024: "OP_vkUnmapMemory",
+ 20025: "OP_vkFlushMappedMemoryRanges",
+ 20026: "OP_vkInvalidateMappedMemoryRanges",
+ 20027: "OP_vkGetDeviceMemoryCommitment",
+ 20028: "OP_vkBindBufferMemory",
+ 20029: "OP_vkBindImageMemory",
+ 20030: "OP_vkGetBufferMemoryRequirements",
+ 20031: "OP_vkGetImageMemoryRequirements",
+ 20032: "OP_vkGetImageSparseMemoryRequirements",
+ 20033: "OP_vkGetPhysicalDeviceSparseImageFormatProperties",
+ 20034: "OP_vkQueueBindSparse",
+ 20035: "OP_vkCreateFence",
+ 20036: "OP_vkDestroyFence",
+ 20037: "OP_vkResetFences",
+ 20038: "OP_vkGetFenceStatus",
+ 20039: "OP_vkWaitForFences",
+ 20040: "OP_vkCreateSemaphore",
+ 20041: "OP_vkDestroySemaphore",
+ 20042: "OP_vkCreateEvent",
+ 20043: "OP_vkDestroyEvent",
+ 20044: "OP_vkGetEventStatus",
+ 20045: "OP_vkSetEvent",
+ 20046: "OP_vkResetEvent",
+ 20047: "OP_vkCreateQueryPool",
+ 20048: "OP_vkDestroyQueryPool",
+ 20049: "OP_vkGetQueryPoolResults",
+ 20050: "OP_vkCreateBuffer",
+ 20051: "OP_vkDestroyBuffer",
+ 20052: "OP_vkCreateBufferView",
+ 20053: "OP_vkDestroyBufferView",
+ 20054: "OP_vkCreateImage",
+ 20055: "OP_vkDestroyImage",
+ 20056: "OP_vkGetImageSubresourceLayout",
+ 20057: "OP_vkCreateImageView",
+ 20058: "OP_vkDestroyImageView",
+ 20059: "OP_vkCreateShaderModule",
+ 20060: "OP_vkDestroyShaderModule",
+ 20061: "OP_vkCreatePipelineCache",
+ 20062: "OP_vkDestroyPipelineCache",
+ 20063: "OP_vkGetPipelineCacheData",
+ 20064: "OP_vkMergePipelineCaches",
+ 20065: "OP_vkCreateGraphicsPipelines",
+ 20066: "OP_vkCreateComputePipelines",
+ 20067: "OP_vkDestroyPipeline",
+ 20068: "OP_vkCreatePipelineLayout",
+ 20069: "OP_vkDestroyPipelineLayout",
+ 20070: "OP_vkCreateSampler",
+ 20071: "OP_vkDestroySampler",
+ 20072: "OP_vkCreateDescriptorSetLayout",
+ 20073: "OP_vkDestroyDescriptorSetLayout",
+ 20074: "OP_vkCreateDescriptorPool",
+ 20075: "OP_vkDestroyDescriptorPool",
+ 20076: "OP_vkResetDescriptorPool",
+ 20077: "OP_vkAllocateDescriptorSets",
+ 20078: "OP_vkFreeDescriptorSets",
+ 20079: "OP_vkUpdateDescriptorSets",
+ 20080: "OP_vkCreateFramebuffer",
+ 20081: "OP_vkDestroyFramebuffer",
+ 20082: "OP_vkCreateRenderPass",
+ 20083: "OP_vkDestroyRenderPass",
+ 20084: "OP_vkGetRenderAreaGranularity",
+ 20085: "OP_vkCreateCommandPool",
+ 20086: "OP_vkDestroyCommandPool",
+ 20087: "OP_vkResetCommandPool",
+ 20088: "OP_vkAllocateCommandBuffers",
+ 20089: "OP_vkFreeCommandBuffers",
+ 20090: "OP_vkBeginCommandBuffer",
+ 20091: "OP_vkEndCommandBuffer",
+ 20092: "OP_vkResetCommandBuffer",
+ 20093: "OP_vkCmdBindPipeline",
+ 20094: "OP_vkCmdSetViewport",
+ 20095: "OP_vkCmdSetScissor",
+ 20096: "OP_vkCmdSetLineWidth",
+ 20097: "OP_vkCmdSetDepthBias",
+ 20098: "OP_vkCmdSetBlendConstants",
+ 20099: "OP_vkCmdSetDepthBounds",
+ 20100: "OP_vkCmdSetStencilCompareMask",
+ 20101: "OP_vkCmdSetStencilWriteMask",
+ 20102: "OP_vkCmdSetStencilReference",
+ 20103: "OP_vkCmdBindDescriptorSets",
+ 20104: "OP_vkCmdBindIndexBuffer",
+ 20105: "OP_vkCmdBindVertexBuffers",
+ 20106: "OP_vkCmdDraw",
+ 20107: "OP_vkCmdDrawIndexed",
+ 20108: "OP_vkCmdDrawIndirect",
+ 20109: "OP_vkCmdDrawIndexedIndirect",
+ 20110: "OP_vkCmdDispatch",
+ 20111: "OP_vkCmdDispatchIndirect",
+ 20112: "OP_vkCmdCopyBuffer",
+ 20113: "OP_vkCmdCopyImage",
+ 20114: "OP_vkCmdBlitImage",
+ 20115: "OP_vkCmdCopyBufferToImage",
+ 20116: "OP_vkCmdCopyImageToBuffer",
+ 20117: "OP_vkCmdUpdateBuffer",
+ 20118: "OP_vkCmdFillBuffer",
+ 20119: "OP_vkCmdClearColorImage",
+ 20120: "OP_vkCmdClearDepthStencilImage",
+ 20121: "OP_vkCmdClearAttachments",
+ 20122: "OP_vkCmdResolveImage",
+ 20123: "OP_vkCmdSetEvent",
+ 20124: "OP_vkCmdResetEvent",
+ 20125: "OP_vkCmdWaitEvents",
+ 20126: "OP_vkCmdPipelineBarrier",
+ 20127: "OP_vkCmdBeginQuery",
+ 20128: "OP_vkCmdEndQuery",
+ 20129: "OP_vkCmdResetQueryPool",
+ 20130: "OP_vkCmdWriteTimestamp",
+ 20131: "OP_vkCmdCopyQueryPoolResults",
+ 20132: "OP_vkCmdPushConstants",
+ 20133: "OP_vkCmdBeginRenderPass",
+ 20134: "OP_vkCmdNextSubpass",
+ 20135: "OP_vkCmdEndRenderPass",
+ 20136: "OP_vkCmdExecuteCommands",
+ 20137: "OP_vkEnumerateInstanceVersion",
+ 20138: "OP_vkBindBufferMemory2",
+ 20139: "OP_vkBindImageMemory2",
+ 20140: "OP_vkGetDeviceGroupPeerMemoryFeatures",
+ 20141: "OP_vkCmdSetDeviceMask",
+ 20142: "OP_vkCmdDispatchBase",
+ 20143: "OP_vkEnumeratePhysicalDeviceGroups",
+ 20144: "OP_vkGetImageMemoryRequirements2",
+ 20145: "OP_vkGetBufferMemoryRequirements2",
+ 20146: "OP_vkGetImageSparseMemoryRequirements2",
+ 20147: "OP_vkGetPhysicalDeviceFeatures2",
+ 20148: "OP_vkGetPhysicalDeviceProperties2",
+ 20149: "OP_vkGetPhysicalDeviceFormatProperties2",
+ 20150: "OP_vkGetPhysicalDeviceImageFormatProperties2",
+ 20151: "OP_vkGetPhysicalDeviceQueueFamilyProperties2",
+ 20152: "OP_vkGetPhysicalDeviceMemoryProperties2",
+ 20153: "OP_vkGetPhysicalDeviceSparseImageFormatProperties2",
+ 20154: "OP_vkTrimCommandPool",
+ 20155: "OP_vkGetDeviceQueue2",
+ 20156: "OP_vkCreateSamplerYcbcrConversion",
+ 20157: "OP_vkDestroySamplerYcbcrConversion",
+ 20158: "OP_vkCreateDescriptorUpdateTemplate",
+ 20159: "OP_vkDestroyDescriptorUpdateTemplate",
+ 20160: "OP_vkUpdateDescriptorSetWithTemplate",
+ 20161: "OP_vkGetPhysicalDeviceExternalBufferProperties",
+ 20162: "OP_vkGetPhysicalDeviceExternalFenceProperties",
+ 20163: "OP_vkGetPhysicalDeviceExternalSemaphoreProperties",
+ 20164: "OP_vkGetDescriptorSetLayoutSupport",
+ 282774587: "OP_vkCmdDrawIndirectCount",
+ 245204359: "OP_vkCmdDrawIndexedIndirectCount",
+ 279590827: "OP_vkCreateRenderPass2",
+ 235222847: "OP_vkCmdBeginRenderPass2",
+ 244873750: "OP_vkCmdNextSubpass2",
+ 221297834: "OP_vkCmdEndRenderPass2",
+ 252097672: "OP_vkResetQueryPool",
+ 267066974: "OP_vkGetSemaphoreCounterValue",
+ 224777382: "OP_vkWaitSemaphores",
+ 271024127: "OP_vkSignalSemaphore",
+ 222632266: "OP_vkGetBufferDeviceAddress",
+ 230188231: "OP_vkGetBufferOpaqueCaptureAddress",
+ 260620079: "OP_vkGetDeviceMemoryOpaqueCaptureAddress",
+ 20165: "OP_vkDestroySurfaceKHR",
+ 20166: "OP_vkGetPhysicalDeviceSurfaceSupportKHR",
+ 20167: "OP_vkGetPhysicalDeviceSurfaceCapabilitiesKHR",
+ 20168: "OP_vkGetPhysicalDeviceSurfaceFormatsKHR",
+ 20169: "OP_vkGetPhysicalDeviceSurfacePresentModesKHR",
+ 20170: "OP_vkCreateSwapchainKHR",
+ 20171: "OP_vkDestroySwapchainKHR",
+ 20172: "OP_vkGetSwapchainImagesKHR",
+ 20173: "OP_vkAcquireNextImageKHR",
+ 20174: "OP_vkQueuePresentKHR",
+ 20175: "OP_vkGetDeviceGroupPresentCapabilitiesKHR",
+ 20176: "OP_vkGetDeviceGroupSurfacePresentModesKHR",
+ 20177: "OP_vkGetPhysicalDevicePresentRectanglesKHR",
+ 20178: "OP_vkAcquireNextImage2KHR",
+ 20179: "OP_vkGetPhysicalDeviceDisplayPropertiesKHR",
+ 20180: "OP_vkGetPhysicalDeviceDisplayPlanePropertiesKHR",
+ 20181: "OP_vkGetDisplayPlaneSupportedDisplaysKHR",
+ 20182: "OP_vkGetDisplayModePropertiesKHR",
+ 20183: "OP_vkCreateDisplayModeKHR",
+ 20184: "OP_vkGetDisplayPlaneCapabilitiesKHR",
+ 20185: "OP_vkCreateDisplayPlaneSurfaceKHR",
+ 20186: "OP_vkCreateSharedSwapchainsKHR",
+ 20187: "OP_vkCreateXlibSurfaceKHR",
+ 20188: "OP_vkGetPhysicalDeviceXlibPresentationSupportKHR",
+ 20189: "OP_vkCreateXcbSurfaceKHR",
+ 20190: "OP_vkGetPhysicalDeviceXcbPresentationSupportKHR",
+ 20191: "OP_vkCreateWaylandSurfaceKHR",
+ 20192: "OP_vkGetPhysicalDeviceWaylandPresentationSupportKHR",
+ 20195: "OP_vkCreateAndroidSurfaceKHR",
+ 20196: "OP_vkCreateWin32SurfaceKHR",
+ 20197: "OP_vkGetPhysicalDeviceWin32PresentationSupportKHR",
+ 20198: "OP_vkGetPhysicalDeviceFeatures2KHR",
+ 20199: "OP_vkGetPhysicalDeviceProperties2KHR",
+ 20200: "OP_vkGetPhysicalDeviceFormatProperties2KHR",
+ 20201: "OP_vkGetPhysicalDeviceImageFormatProperties2KHR",
+ 20202: "OP_vkGetPhysicalDeviceQueueFamilyProperties2KHR",
+ 20203: "OP_vkGetPhysicalDeviceMemoryProperties2KHR",
+ 20204: "OP_vkGetPhysicalDeviceSparseImageFormatProperties2KHR",
+ 20205: "OP_vkGetDeviceGroupPeerMemoryFeaturesKHR",
+ 20206: "OP_vkCmdSetDeviceMaskKHR",
+ 20207: "OP_vkCmdDispatchBaseKHR",
+ 20208: "OP_vkTrimCommandPoolKHR",
+ 20209: "OP_vkEnumeratePhysicalDeviceGroupsKHR",
+ 20210: "OP_vkGetPhysicalDeviceExternalBufferPropertiesKHR",
+ 20211: "OP_vkGetMemoryWin32HandleKHR",
+ 20212: "OP_vkGetMemoryWin32HandlePropertiesKHR",
+ 20213: "OP_vkGetMemoryFdKHR",
+ 20214: "OP_vkGetMemoryFdPropertiesKHR",
+ 20215: "OP_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR",
+ 20216: "OP_vkImportSemaphoreWin32HandleKHR",
+ 20217: "OP_vkGetSemaphoreWin32HandleKHR",
+ 20218: "OP_vkImportSemaphoreFdKHR",
+ 20219: "OP_vkGetSemaphoreFdKHR",
+ 20220: "OP_vkCmdPushDescriptorSetKHR",
+ 20221: "OP_vkCmdPushDescriptorSetWithTemplateKHR",
+ 20222: "OP_vkCreateDescriptorUpdateTemplateKHR",
+ 20223: "OP_vkDestroyDescriptorUpdateTemplateKHR",
+ 20224: "OP_vkUpdateDescriptorSetWithTemplateKHR",
+ 20225: "OP_vkCreateRenderPass2KHR",
+ 20226: "OP_vkCmdBeginRenderPass2KHR",
+ 20227: "OP_vkCmdNextSubpass2KHR",
+ 20228: "OP_vkCmdEndRenderPass2KHR",
+ 20229: "OP_vkGetSwapchainStatusKHR",
+ 20230: "OP_vkGetPhysicalDeviceExternalFencePropertiesKHR",
+ 20231: "OP_vkImportFenceWin32HandleKHR",
+ 20232: "OP_vkGetFenceWin32HandleKHR",
+ 20233: "OP_vkImportFenceFdKHR",
+ 20234: "OP_vkGetFenceFdKHR",
+ 299033148: "OP_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR",
+ 282029987: "OP_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR",
+ 238952296: "OP_vkAcquireProfilingLockKHR",
+ 223904011: "OP_vkReleaseProfilingLockKHR",
+ 20235: "OP_vkGetPhysicalDeviceSurfaceCapabilities2KHR",
+ 20236: "OP_vkGetPhysicalDeviceSurfaceFormats2KHR",
+ 20237: "OP_vkGetPhysicalDeviceDisplayProperties2KHR",
+ 20238: "OP_vkGetPhysicalDeviceDisplayPlaneProperties2KHR",
+ 20239: "OP_vkGetDisplayModeProperties2KHR",
+ 20240: "OP_vkGetDisplayPlaneCapabilities2KHR",
+ 20241: "OP_vkGetImageMemoryRequirements2KHR",
+ 20242: "OP_vkGetBufferMemoryRequirements2KHR",
+ 20243: "OP_vkGetImageSparseMemoryRequirements2KHR",
+ 20244: "OP_vkCreateSamplerYcbcrConversionKHR",
+ 20245: "OP_vkDestroySamplerYcbcrConversionKHR",
+ 20246: "OP_vkBindBufferMemory2KHR",
+ 20247: "OP_vkBindImageMemory2KHR",
+ 20248: "OP_vkGetDescriptorSetLayoutSupportKHR",
+ 20249: "OP_vkCmdDrawIndirectCountKHR",
+ 20250: "OP_vkCmdDrawIndexedIndirectCountKHR",
+ 229059496: "OP_vkGetSemaphoreCounterValueKHR",
+ 263904357: "OP_vkWaitSemaphoresKHR",
+ 269919108: "OP_vkSignalSemaphoreKHR",
+ 272978593: "OP_vkGetPhysicalDeviceFragmentShadingRatesKHR",
+ 204060280: "OP_vkCmdSetFragmentShadingRateKHR",
+ 219261480: "OP_vkGetBufferDeviceAddressKHR",
+ 285631711: "OP_vkGetBufferOpaqueCaptureAddressKHR",
+ 294671624: "OP_vkGetDeviceMemoryOpaqueCaptureAddressKHR",
+ 274342644: "OP_vkCreateDeferredOperationKHR",
+ 215419514: "OP_vkDestroyDeferredOperationKHR",
+ 203387076: "OP_vkGetDeferredOperationMaxConcurrencyKHR",
+ 263822960: "OP_vkGetDeferredOperationResultKHR",
+ 218492930: "OP_vkDeferredOperationJoinKHR",
+ 269458798: "OP_vkGetPipelineExecutablePropertiesKHR",
+ 271191699: "OP_vkGetPipelineExecutableStatisticsKHR",
+ 274148497: "OP_vkGetPipelineExecutableInternalRepresentationsKHR",
+ 247893766: "OP_vkCmdCopyBuffer2KHR",
+ 227008250: "OP_vkCmdCopyImage2KHR",
+ 248841963: "OP_vkCmdCopyBufferToImage2KHR",
+ 252249060: "OP_vkCmdCopyImageToBuffer2KHR",
+ 259838288: "OP_vkCmdBlitImage2KHR",
+ 254857232: "OP_vkCmdResolveImage2KHR",
+ 20251: "OP_vkGetSwapchainGrallocUsageANDROID",
+ 20252: "OP_vkAcquireImageANDROID",
+ 20253: "OP_vkQueueSignalReleaseImageANDROID",
+ 20254: "OP_vkCreateDebugReportCallbackEXT",
+ 20255: "OP_vkDestroyDebugReportCallbackEXT",
+ 20256: "OP_vkDebugReportMessageEXT",
+ 20257: "OP_vkDebugMarkerSetObjectTagEXT",
+ 20258: "OP_vkDebugMarkerSetObjectNameEXT",
+ 20259: "OP_vkCmdDebugMarkerBeginEXT",
+ 20260: "OP_vkCmdDebugMarkerEndEXT",
+ 20261: "OP_vkCmdDebugMarkerInsertEXT",
+ 267779978: "OP_vkCmdBindTransformFeedbackBuffersEXT",
+ 294396901: "OP_vkCmdBeginTransformFeedbackEXT",
+ 272333731: "OP_vkCmdEndTransformFeedbackEXT",
+ 275810601: "OP_vkCmdBeginQueryIndexedEXT",
+ 279821337: "OP_vkCmdEndQueryIndexedEXT",
+ 285235943: "OP_vkCmdDrawIndirectByteCountEXT",
+ 204379647: "OP_vkGetImageViewHandleNVX",
+ 210668576: "OP_vkGetImageViewAddressNVX",
+ 20262: "OP_vkCmdDrawIndirectCountAMD",
+ 20263: "OP_vkCmdDrawIndexedIndirectCountAMD",
+ 20264: "OP_vkGetShaderInfoAMD",
+ 241902685: "OP_vkCreateStreamDescriptorSurfaceGGP",
+ 20265: "OP_vkGetPhysicalDeviceExternalImageFormatPropertiesNV",
+ 20266: "OP_vkGetMemoryWin32HandleNV",
+ 20267: "OP_vkCreateViSurfaceNN",
+ 20268: "OP_vkCmdBeginConditionalRenderingEXT",
+ 20269: "OP_vkCmdEndConditionalRenderingEXT",
+ 20279: "OP_vkCmdSetViewportWScalingNV",
+ 20280: "OP_vkReleaseDisplayEXT",
+ 20281: "OP_vkAcquireXlibDisplayEXT",
+ 20282: "OP_vkGetRandROutputDisplayEXT",
+ 20283: "OP_vkGetPhysicalDeviceSurfaceCapabilities2EXT",
+ 20284: "OP_vkDisplayPowerControlEXT",
+ 20285: "OP_vkRegisterDeviceEventEXT",
+ 20286: "OP_vkRegisterDisplayEventEXT",
+ 20287: "OP_vkGetSwapchainCounterEXT",
+ 20288: "OP_vkGetRefreshCycleDurationGOOGLE",
+ 20289: "OP_vkGetPastPresentationTimingGOOGLE",
+ 20290: "OP_vkCmdSetDiscardRectangleEXT",
+ 20291: "OP_vkSetHdrMetadataEXT",
+ 20292: "OP_vkCreateIOSSurfaceMVK",
+ 20293: "OP_vkCreateMacOSSurfaceMVK",
+ 20334: "OP_vkGetMTLDeviceMVK",
+ 20335: "OP_vkSetMTLTextureMVK",
+ 20336: "OP_vkGetMTLTextureMVK",
+ 20337: "OP_vkGetMTLBufferMVK",
+ 20338: "OP_vkUseIOSurfaceMVK",
+ 20339: "OP_vkGetIOSurfaceMVK",
+ 20294: "OP_vkSetDebugUtilsObjectNameEXT",
+ 20295: "OP_vkSetDebugUtilsObjectTagEXT",
+ 20296: "OP_vkQueueBeginDebugUtilsLabelEXT",
+ 20297: "OP_vkQueueEndDebugUtilsLabelEXT",
+ 20298: "OP_vkQueueInsertDebugUtilsLabelEXT",
+ 20299: "OP_vkCmdBeginDebugUtilsLabelEXT",
+ 20300: "OP_vkCmdEndDebugUtilsLabelEXT",
+ 20301: "OP_vkCmdInsertDebugUtilsLabelEXT",
+ 20302: "OP_vkCreateDebugUtilsMessengerEXT",
+ 20303: "OP_vkDestroyDebugUtilsMessengerEXT",
+ 20304: "OP_vkSubmitDebugUtilsMessageEXT",
+ 20305: "OP_vkGetAndroidHardwareBufferPropertiesANDROID",
+ 20306: "OP_vkGetMemoryAndroidHardwareBufferANDROID",
+ 20307: "OP_vkCmdSetSampleLocationsEXT",
+ 20308: "OP_vkGetPhysicalDeviceMultisamplePropertiesEXT",
+ 251301237: "OP_vkGetImageDrmFormatModifierPropertiesEXT",
+ 20309: "OP_vkCreateValidationCacheEXT",
+ 20310: "OP_vkDestroyValidationCacheEXT",
+ 20311: "OP_vkMergeValidationCachesEXT",
+ 20312: "OP_vkGetValidationCacheDataEXT",
+ 238618340: "OP_vkCmdBindShadingRateImageNV",
+ 215295078: "OP_vkCmdSetViewportShadingRatePaletteNV",
+ 236858637: "OP_vkCmdSetCoarseSampleOrderNV",
+ 259713020: "OP_vkCreateAccelerationStructureNV",
+ 252775746: "OP_vkDestroyAccelerationStructureNV",
+ 220234370: "OP_vkGetAccelerationStructureMemoryRequirementsNV",
+ 202856743: "OP_vkBindAccelerationStructureMemoryNV",
+ 269050897: "OP_vkCmdBuildAccelerationStructureNV",
+ 211075498: "OP_vkCmdCopyAccelerationStructureNV",
+ 210219912: "OP_vkCmdTraceRaysNV",
+ 203653638: "OP_vkCreateRayTracingPipelinesNV",
+ 271962641: "OP_vkGetRayTracingShaderGroupHandlesKHR",
+ 230045846: "OP_vkGetRayTracingShaderGroupHandlesNV",
+ 269898134: "OP_vkGetAccelerationStructureHandleNV",
+ 207954431: "OP_vkCmdWriteAccelerationStructuresPropertiesNV",
+ 278731610: "OP_vkCompileDeferredNV",
+ 20313: "OP_vkGetMemoryHostPointerPropertiesEXT",
+ 20314: "OP_vkCmdWriteBufferMarkerAMD",
+ 295643221: "OP_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT",
+ 203583186: "OP_vkGetCalibratedTimestampsEXT",
+ 207334931: "OP_vkCmdDrawMeshTasksNV",
+ 274079208: "OP_vkCmdDrawMeshTasksIndirectNV",
+ 223801967: "OP_vkCmdDrawMeshTasksIndirectCountNV",
+ 225408194: "OP_vkCmdSetExclusiveScissorNV",
+ 20315: "OP_vkCmdSetCheckpointNV",
+ 20316: "OP_vkGetQueueCheckpointDataNV",
+ 203336121: "OP_vkInitializePerformanceApiINTEL",
+ 296137321: "OP_vkUninitializePerformanceApiINTEL",
+ 270016385: "OP_vkCmdSetPerformanceMarkerINTEL",
+ 261519634: "OP_vkCmdSetPerformanceStreamMarkerINTEL",
+ 251310287: "OP_vkCmdSetPerformanceOverrideINTEL",
+ 245737492: "OP_vkAcquirePerformanceConfigurationINTEL",
+ 252877217: "OP_vkReleasePerformanceConfigurationINTEL",
+ 294947726: "OP_vkQueueSetPerformanceConfigurationINTEL",
+ 213620482: "OP_vkGetPerformanceParameterINTEL",
+ 267533472: "OP_vkSetLocalDimmingAMD",
+ 261626137: "OP_vkCreateImagePipeSurfaceFUCHSIA",
+ 254915953: "OP_vkCreateMetalSurfaceEXT",
+ 224361693: "OP_vkGetBufferDeviceAddressEXT",
+ 282247593: "OP_vkGetPhysicalDeviceToolPropertiesEXT",
+ 287711429: "OP_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV",
+ 292032159: "OP_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV",
+ 268126279: "OP_vkGetPhysicalDeviceSurfacePresentModes2EXT",
+ 200946668: "OP_vkAcquireFullScreenExclusiveModeEXT",
+ 257629142: "OP_vkReleaseFullScreenExclusiveModeEXT",
+ 206369543: "OP_vkGetDeviceGroupSurfacePresentModes2EXT",
+ 298411290: "OP_vkCreateHeadlessSurfaceEXT",
+ 263855692: "OP_vkCmdSetLineStippleEXT",
+ 242995959: "OP_vkResetQueryPoolEXT",
+ 266285895: "OP_vkCmdSetCullModeEXT",
+ 212644406: "OP_vkCmdSetFrontFaceEXT",
+ 260783979: "OP_vkCmdSetPrimitiveTopologyEXT",
+ 257105245: "OP_vkCmdSetViewportWithCountEXT",
+ 204588120: "OP_vkCmdSetScissorWithCountEXT",
+ 243419921: "OP_vkCmdBindVertexBuffers2EXT",
+ 233771166: "OP_vkCmdSetDepthTestEnableEXT",
+ 218663304: "OP_vkCmdSetDepthWriteEnableEXT",
+ 247761589: "OP_vkCmdSetDepthCompareOpEXT",
+ 223213519: "OP_vkCmdSetDepthBoundsTestEnableEXT",
+ 286438749: "OP_vkCmdSetStencilTestEnableEXT",
+ 277159578: "OP_vkCmdSetStencilOpEXT",
+ 249047049: "OP_vkGetGeneratedCommandsMemoryRequirementsNV",
+ 297624330: "OP_vkCmdPreprocessGeneratedCommandsNV",
+ 234711184: "OP_vkCmdExecuteGeneratedCommandsNV",
+ 270362239: "OP_vkCmdBindPipelineShaderGroupNV",
+ 285310710: "OP_vkCreateIndirectCommandsLayoutNV",
+ 292584135: "OP_vkDestroyIndirectCommandsLayoutNV",
+ 236374049: "OP_vkCreatePrivateDataSlotEXT",
+ 208891309: "OP_vkDestroyPrivateDataSlotEXT",
+ 225259406: "OP_vkSetPrivateDataEXT",
+ 291399427: "OP_vkGetPrivateDataEXT",
+ 264649847: "OP_vkCmdSetFragmentShadingRateEnumNV",
+ 220792403: "OP_vkCreateDirectFBSurfaceEXT",
+ 285441990: "OP_vkGetPhysicalDeviceDirectFBPresentationSupportEXT",
+ 20318: "OP_vkRegisterImageColorBufferGOOGLE",
+ 20319: "OP_vkRegisterBufferColorBufferGOOGLE",
+ 20317: "OP_vkMapMemoryIntoAddressSpaceGOOGLE",
+ 20320: "OP_vkUpdateDescriptorSetWithTemplateSizedGOOGLE",
+ 20321: "OP_vkBeginCommandBufferAsyncGOOGLE",
+ 20322: "OP_vkEndCommandBufferAsyncGOOGLE",
+ 20323: "OP_vkResetCommandBufferAsyncGOOGLE",
+ 20324: "OP_vkCommandBufferHostSyncGOOGLE",
+ 20325: "OP_vkCreateImageWithRequirementsGOOGLE",
+ 20326: "OP_vkCreateBufferWithRequirementsGOOGLE",
+ 20327: "OP_vkGetMemoryHostAddressInfoGOOGLE",
+ 20328: "OP_vkFreeMemorySyncGOOGLE",
+ 20329: "OP_vkQueueHostSyncGOOGLE",
+ 20330: "OP_vkQueueSubmitAsyncGOOGLE",
+ 20331: "OP_vkQueueWaitIdleAsyncGOOGLE",
+ 20332: "OP_vkQueueBindSparseAsyncGOOGLE",
+ 20333: "OP_vkGetLinearImageLayoutGOOGLE",
+ 20340: "OP_vkQueueFlushCommandsGOOGLE",
+ 267932433: "OP_vkQueueCommitDescriptorSetUpdatesGOOGLE",
+ 213659202: "OP_vkCollectDescriptorPoolIdsGOOGLE",
+ 243985229: "OP_vkQueueSignalReleaseImageANDROIDAsyncGOOGLE",
+ 259403971: "OP_vkCreateAccelerationStructureKHR",
+ 223971120: "OP_vkDestroyAccelerationStructureKHR",
+ 272943905: "OP_vkCmdBuildAccelerationStructuresKHR",
+ 258066143: "OP_vkCmdBuildAccelerationStructuresIndirectKHR",
+ 241919567: "OP_vkBuildAccelerationStructuresKHR",
+ 241495016: "OP_vkCopyAccelerationStructureKHR",
+ 256139578: "OP_vkCopyAccelerationStructureToMemoryKHR",
+ 261558680: "OP_vkCopyMemoryToAccelerationStructureKHR",
+ 289745796: "OP_vkWriteAccelerationStructuresPropertiesKHR",
+ 279460332: "OP_vkCmdCopyAccelerationStructureKHR",
+ 223539733: "OP_vkCmdCopyAccelerationStructureToMemoryKHR",
+ 203733963: "OP_vkCmdCopyMemoryToAccelerationStructureKHR",
+ 223466148: "OP_vkGetAccelerationStructureDeviceAddressKHR",
+ 271696183: "OP_vkCmdWriteAccelerationStructuresPropertiesKHR",
+ 266386590: "OP_vkGetDeviceAccelerationStructureCompatibilityKHR",
+ 219720024: "OP_vkGetAccelerationStructureBuildSizesKHR",
+ 213680716: "OP_vkCmdTraceRaysKHR",
+ 247628685: "OP_vkCreateRayTracingPipelinesKHR",
+ 221334934: "OP_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR",
+ 211788517: "OP_vkCmdTraceRaysIndirectKHR",
+ 205271933: "OP_vkGetRayTracingShaderGroupStackSizeKHR",
+ 260219604: "OP_vkCmdSetRayTracingPipelineStackSizeKHR",
+
+ ###############################################################################################
+ # Render Control opcodes
+ # http://source/play-internal/battlestar/aosp/device/generic/vulkan-cereal/stream-servers/renderControl_dec/renderControl_opcodes.h
+ ###############################################################################################
+ 10000: "OP_rcGetRendererVersion",
+ 10001: "OP_rcGetEGLVersion",
+ 10002: "OP_rcQueryEGLString",
+ 10003: "OP_rcGetGLString",
+ 10004: "OP_rcGetNumConfigs",
+ 10005: "OP_rcGetConfigs",
+ 10006: "OP_rcChooseConfig",
+ 10007: "OP_rcGetFBParam",
+ 10008: "OP_rcCreateContext",
+ 10009: "OP_rcDestroyContext",
+ 10010: "OP_rcCreateWindowSurface",
+ 10011: "OP_rcDestroyWindowSurface",
+ 10012: "OP_rcCreateColorBuffer",
+ 10013: "OP_rcOpenColorBuffer",
+ 10014: "OP_rcCloseColorBuffer",
+ 10015: "OP_rcSetWindowColorBuffer",
+ 10016: "OP_rcFlushWindowColorBuffer",
+ 10017: "OP_rcMakeCurrent",
+ 10018: "OP_rcFBPost",
+ 10019: "OP_rcFBSetSwapInterval",
+ 10020: "OP_rcBindTexture",
+ 10021: "OP_rcBindRenderbuffer",
+ 10022: "OP_rcColorBufferCacheFlush",
+ 10023: "OP_rcReadColorBuffer",
+ 10024: "OP_rcUpdateColorBuffer",
+ 10025: "OP_rcOpenColorBuffer2",
+ 10026: "OP_rcCreateClientImage",
+ 10027: "OP_rcDestroyClientImage",
+ 10028: "OP_rcSelectChecksumHelper",
+ 10029: "OP_rcCreateSyncKHR",
+ 10030: "OP_rcClientWaitSyncKHR",
+ 10031: "OP_rcFlushWindowColorBufferAsync",
+ 10032: "OP_rcDestroySyncKHR",
+ 10033: "OP_rcSetPuid",
+ 10034: "OP_rcUpdateColorBufferDMA",
+ 10035: "OP_rcCreateColorBufferDMA",
+ 10036: "OP_rcWaitSyncKHR",
+ 10037: "OP_rcCompose",
+ 10038: "OP_rcCreateDisplay",
+ 10039: "OP_rcDestroyDisplay",
+ 10040: "OP_rcSetDisplayColorBuffer",
+ 10041: "OP_rcGetDisplayColorBuffer",
+ 10042: "OP_rcGetColorBufferDisplay",
+ 10043: "OP_rcGetDisplayPose",
+ 10044: "OP_rcSetDisplayPose",
+ 10045: "OP_rcSetColorBufferVulkanMode",
+ 10046: "OP_rcReadColorBufferYUV",
+ 10047: "OP_rcIsSyncSignaled",
+ 10048: "OP_rcCreateColorBufferWithHandle",
+ 10049: "OP_rcCreateBuffer",
+ 10050: "OP_rcCloseBuffer",
+ 10051: "OP_rcSetColorBufferVulkanMode2",
+ 10052: "OP_rcMapGpaToBufferHandle",
+ 10053: "OP_rcCreateBuffer2",
+ 10054: "OP_rcMapGpaToBufferHandle2",
+ 10055: "OP_rcFlushWindowColorBufferAsyncWithFrameNumber",
+ 10056: "OP_rcSetTracingForPuid",
+ 10057: "OP_rcMakeCurrentAsync",
+ 10058: "OP_rcComposeAsync",
+ 10059: "OP_rcDestroySyncKHRAsync",
+ 10060: "OP_rcComposeWithoutPost",
+ 10061: "OP_rcComposeAsyncWithoutPost",
+ 10062: "OP_rcCreateDisplayById",
+ 10063: "OP_rcSetDisplayPoseDpi",
+ 10064: "OP_rcReadColorBufferDMA",
+
+ ###############################################################################################
+ # GLES1 opcodes
+ # http://source/android/device/generic/vulkan-cereal/stream-servers/gles1_dec/gles1_opcodes.h
+ ###############################################################################################
+ 1024: "OP_glAlphaFunc",
+ 1025: "OP_glClearColor",
+ 1026: "OP_glClearDepthf",
+ 1027: "OP_glClipPlanef",
+ 1028: "OP_glColor4f",
+ 1029: "OP_glDepthRangef",
+ 1030: "OP_glFogf",
+ 1031: "OP_glFogfv",
+ 1032: "OP_glFrustumf",
+ 1033: "OP_glGetClipPlanef",
+ 1034: "OP_glGetFloatv",
+ 1035: "OP_glGetLightfv",
+ 1036: "OP_glGetMaterialfv",
+ 1037: "OP_glGetTexEnvfv",
+ 1038: "OP_glGetTexParameterfv",
+ 1039: "OP_glLightModelf",
+ 1040: "OP_glLightModelfv",
+ 1041: "OP_glLightf",
+ 1042: "OP_glLightfv",
+ 1043: "OP_glLineWidth",
+ 1044: "OP_glLoadMatrixf",
+ 1045: "OP_glMaterialf",
+ 1046: "OP_glMaterialfv",
+ 1047: "OP_glMultMatrixf",
+ 1048: "OP_glMultiTexCoord4f",
+ 1049: "OP_glNormal3f",
+ 1050: "OP_glOrthof",
+ 1051: "OP_glPointParameterf",
+ 1052: "OP_glPointParameterfv",
+ 1053: "OP_glPointSize",
+ 1054: "OP_glPolygonOffset",
+ 1055: "OP_glRotatef",
+ 1056: "OP_glScalef",
+ 1057: "OP_glTexEnvf",
+ 1058: "OP_glTexEnvfv",
+ 1059: "OP_glTexParameterf",
+ 1060: "OP_glTexParameterfv",
+ 1061: "OP_glTranslatef",
+ 1062: "OP_glActiveTexture",
+ 1063: "OP_glAlphaFuncx",
+ 1064: "OP_glBindBuffer",
+ 1065: "OP_glBindTexture",
+ 1066: "OP_glBlendFunc",
+ 1067: "OP_glBufferData",
+ 1068: "OP_glBufferSubData",
+ 1069: "OP_glClear",
+ 1070: "OP_glClearColorx",
+ 1071: "OP_glClearDepthx",
+ 1072: "OP_glClearStencil",
+ 1073: "OP_glClientActiveTexture",
+ 1074: "OP_glColor4ub",
+ 1075: "OP_glColor4x",
+ 1076: "OP_glColorMask",
+ 1077: "OP_glColorPointer",
+ 1078: "OP_glCompressedTexImage2D",
+ 1079: "OP_glCompressedTexSubImage2D",
+ 1080: "OP_glCopyTexImage2D",
+ 1081: "OP_glCopyTexSubImage2D",
+ 1082: "OP_glCullFace",
+ 1083: "OP_glDeleteBuffers",
+ 1084: "OP_glDeleteTextures",
+ 1085: "OP_glDepthFunc",
+ 1086: "OP_glDepthMask",
+ 1087: "OP_glDepthRangex",
+ 1088: "OP_glDisable",
+ 1089: "OP_glDisableClientState",
+ 1090: "OP_glDrawArrays",
+ 1091: "OP_glDrawElements",
+ 1092: "OP_glEnable",
+ 1093: "OP_glEnableClientState",
+ 1094: "OP_glFinish",
+ 1095: "OP_glFlush",
+ 1096: "OP_glFogx",
+ 1097: "OP_glFogxv",
+ 1098: "OP_glFrontFace",
+ 1099: "OP_glFrustumx",
+ 1100: "OP_glGetBooleanv",
+ 1101: "OP_glGetBufferParameteriv",
+ 1102: "OP_glClipPlanex",
+ 1103: "OP_glGenBuffers",
+ 1104: "OP_glGenTextures",
+ 1105: "OP_glGetError",
+ 1106: "OP_glGetFixedv",
+ 1107: "OP_glGetIntegerv",
+ 1108: "OP_glGetLightxv",
+ 1109: "OP_glGetMaterialxv",
+ 1110: "OP_glGetPointerv",
+ 1111: "OP_glGetString",
+ 1112: "OP_glGetTexEnviv",
+ 1113: "OP_glGetTexEnvxv",
+ 1114: "OP_glGetTexParameteriv",
+ 1115: "OP_glGetTexParameterxv",
+ 1116: "OP_glHint",
+ 1117: "OP_glIsBuffer",
+ 1118: "OP_glIsEnabled",
+ 1119: "OP_glIsTexture",
+ 1120: "OP_glLightModelx",
+ 1121: "OP_glLightModelxv",
+ 1122: "OP_glLightx",
+ 1123: "OP_glLightxv",
+ 1124: "OP_glLineWidthx",
+ 1125: "OP_glLoadIdentity",
+ 1126: "OP_glLoadMatrixx",
+ 1127: "OP_glLogicOp",
+ 1128: "OP_glMaterialx",
+ 1129: "OP_glMaterialxv",
+ 1130: "OP_glMatrixMode",
+ 1131: "OP_glMultMatrixx",
+ 1132: "OP_glMultiTexCoord4x",
+ 1133: "OP_glNormal3x",
+ 1134: "OP_glNormalPointer",
+ 1135: "OP_glOrthox",
+ 1136: "OP_glPixelStorei",
+ 1137: "OP_glPointParameterx",
+ 1138: "OP_glPointParameterxv",
+ 1139: "OP_glPointSizex",
+ 1140: "OP_glPolygonOffsetx",
+ 1141: "OP_glPopMatrix",
+ 1142: "OP_glPushMatrix",
+ 1143: "OP_glReadPixels",
+ 1144: "OP_glRotatex",
+ 1145: "OP_glSampleCoverage",
+ 1146: "OP_glSampleCoveragex",
+ 1147: "OP_glScalex",
+ 1148: "OP_glScissor",
+ 1149: "OP_glShadeModel",
+ 1150: "OP_glStencilFunc",
+ 1151: "OP_glStencilMask",
+ 1152: "OP_glStencilOp",
+ 1153: "OP_glTexCoordPointer",
+ 1154: "OP_glTexEnvi",
+ 1155: "OP_glTexEnvx",
+ 1156: "OP_glTexEnviv",
+ 1157: "OP_glTexEnvxv",
+ 1158: "OP_glTexImage2D",
+ 1159: "OP_glTexParameteri",
+ 1160: "OP_glTexParameterx",
+ 1161: "OP_glTexParameteriv",
+ 1162: "OP_glTexParameterxv",
+ 1163: "OP_glTexSubImage2D",
+ 1164: "OP_glTranslatex",
+ 1165: "OP_glVertexPointer",
+ 1166: "OP_glViewport",
+ 1167: "OP_glPointSizePointerOES",
+ 1168: "OP_glVertexPointerOffset",
+ 1169: "OP_glColorPointerOffset",
+ 1170: "OP_glNormalPointerOffset",
+ 1171: "OP_glPointSizePointerOffset",
+ 1172: "OP_glTexCoordPointerOffset",
+ 1173: "OP_glWeightPointerOffset",
+ 1174: "OP_glMatrixIndexPointerOffset",
+ 1175: "OP_glVertexPointerData",
+ 1176: "OP_glColorPointerData",
+ 1177: "OP_glNormalPointerData",
+ 1178: "OP_glTexCoordPointerData",
+ 1179: "OP_glPointSizePointerData",
+ 1180: "OP_glWeightPointerData",
+ 1181: "OP_glMatrixIndexPointerData",
+ 1182: "OP_glDrawElementsOffset",
+ 1183: "OP_glDrawElementsData",
+ 1184: "OP_glGetCompressedTextureFormats",
+ 1185: "OP_glFinishRoundTrip",
+ 1186: "OP_glBlendEquationSeparateOES",
+ 1187: "OP_glBlendFuncSeparateOES",
+ 1188: "OP_glBlendEquationOES",
+ 1189: "OP_glDrawTexsOES",
+ 1190: "OP_glDrawTexiOES",
+ 1191: "OP_glDrawTexxOES",
+ 1192: "OP_glDrawTexsvOES",
+ 1193: "OP_glDrawTexivOES",
+ 1194: "OP_glDrawTexxvOES",
+ 1195: "OP_glDrawTexfOES",
+ 1196: "OP_glDrawTexfvOES",
+ 1197: "OP_glEGLImageTargetTexture2DOES",
+ 1198: "OP_glEGLImageTargetRenderbufferStorageOES",
+ 1199: "OP_glAlphaFuncxOES",
+ 1200: "OP_glClearColorxOES",
+ 1201: "OP_glClearDepthxOES",
+ 1202: "OP_glClipPlanexOES",
+ 1203: "OP_glClipPlanexIMG",
+ 1204: "OP_glColor4xOES",
+ 1205: "OP_glDepthRangexOES",
+ 1206: "OP_glFogxOES",
+ 1207: "OP_glFogxvOES",
+ 1208: "OP_glFrustumxOES",
+ 1209: "OP_glGetClipPlanexOES",
+ 1210: "OP_glGetClipPlanex",
+ 1211: "OP_glGetFixedvOES",
+ 1212: "OP_glGetLightxvOES",
+ 1213: "OP_glGetMaterialxvOES",
+ 1214: "OP_glGetTexEnvxvOES",
+ 1215: "OP_glGetTexParameterxvOES",
+ 1216: "OP_glLightModelxOES",
+ 1217: "OP_glLightModelxvOES",
+ 1218: "OP_glLightxOES",
+ 1219: "OP_glLightxvOES",
+ 1220: "OP_glLineWidthxOES",
+ 1221: "OP_glLoadMatrixxOES",
+ 1222: "OP_glMaterialxOES",
+ 1223: "OP_glMaterialxvOES",
+ 1224: "OP_glMultMatrixxOES",
+ 1225: "OP_glMultiTexCoord4xOES",
+ 1226: "OP_glNormal3xOES",
+ 1227: "OP_glOrthoxOES",
+ 1228: "OP_glPointParameterxOES",
+ 1229: "OP_glPointParameterxvOES",
+ 1230: "OP_glPointSizexOES",
+ 1231: "OP_glPolygonOffsetxOES",
+ 1232: "OP_glRotatexOES",
+ 1233: "OP_glSampleCoveragexOES",
+ 1234: "OP_glScalexOES",
+ 1235: "OP_glTexEnvxOES",
+ 1236: "OP_glTexEnvxvOES",
+ 1237: "OP_glTexParameterxOES",
+ 1238: "OP_glTexParameterxvOES",
+ 1239: "OP_glTranslatexOES",
+ 1240: "OP_glIsRenderbufferOES",
+ 1241: "OP_glBindRenderbufferOES",
+ 1242: "OP_glDeleteRenderbuffersOES",
+ 1243: "OP_glGenRenderbuffersOES",
+ 1244: "OP_glRenderbufferStorageOES",
+ 1245: "OP_glGetRenderbufferParameterivOES",
+ 1246: "OP_glIsFramebufferOES",
+ 1247: "OP_glBindFramebufferOES",
+ 1248: "OP_glDeleteFramebuffersOES",
+ 1249: "OP_glGenFramebuffersOES",
+ 1250: "OP_glCheckFramebufferStatusOES",
+ 1251: "OP_glFramebufferRenderbufferOES",
+ 1252: "OP_glFramebufferTexture2DOES",
+ 1253: "OP_glGetFramebufferAttachmentParameterivOES",
+ 1254: "OP_glGenerateMipmapOES",
+ 1255: "OP_glMapBufferOES",
+ 1256: "OP_glUnmapBufferOES",
+ 1257: "OP_glGetBufferPointervOES",
+ 1258: "OP_glCurrentPaletteMatrixOES",
+ 1259: "OP_glLoadPaletteFromModelViewMatrixOES",
+ 1260: "OP_glMatrixIndexPointerOES",
+ 1261: "OP_glWeightPointerOES",
+ 1262: "OP_glQueryMatrixxOES",
+ 1263: "OP_glDepthRangefOES",
+ 1264: "OP_glFrustumfOES",
+ 1265: "OP_glOrthofOES",
+ 1266: "OP_glClipPlanefOES",
+ 1267: "OP_glClipPlanefIMG",
+ 1268: "OP_glGetClipPlanefOES",
+ 1269: "OP_glClearDepthfOES",
+ 1270: "OP_glTexGenfOES",
+ 1271: "OP_glTexGenfvOES",
+ 1272: "OP_glTexGeniOES",
+ 1273: "OP_glTexGenivOES",
+ 1274: "OP_glTexGenxOES",
+ 1275: "OP_glTexGenxvOES",
+ 1276: "OP_glGetTexGenfvOES",
+ 1277: "OP_glGetTexGenivOES",
+ 1278: "OP_glGetTexGenxvOES",
+ 1279: "OP_glBindVertexArrayOES",
+ 1280: "OP_glDeleteVertexArraysOES",
+ 1281: "OP_glGenVertexArraysOES",
+ 1282: "OP_glIsVertexArrayOES",
+ 1283: "OP_glDiscardFramebufferEXT",
+ 1284: "OP_glMultiDrawArraysEXT",
+ 1285: "OP_glMultiDrawElementsEXT",
+ 1286: "OP_glMultiDrawArraysSUN",
+ 1287: "OP_glMultiDrawElementsSUN",
+ 1288: "OP_glRenderbufferStorageMultisampleIMG",
+ 1289: "OP_glFramebufferTexture2DMultisampleIMG",
+ 1290: "OP_glDeleteFencesNV",
+ 1291: "OP_glGenFencesNV",
+ 1292: "OP_glIsFenceNV",
+ 1293: "OP_glTestFenceNV",
+ 1294: "OP_glGetFenceivNV",
+ 1295: "OP_glFinishFenceNV",
+ 1296: "OP_glSetFenceNV",
+ 1297: "OP_glGetDriverControlsQCOM",
+ 1298: "OP_glGetDriverControlStringQCOM",
+ 1299: "OP_glEnableDriverControlQCOM",
+ 1300: "OP_glDisableDriverControlQCOM",
+ 1301: "OP_glExtGetTexturesQCOM",
+ 1302: "OP_glExtGetBuffersQCOM",
+ 1303: "OP_glExtGetRenderbuffersQCOM",
+ 1304: "OP_glExtGetFramebuffersQCOM",
+ 1305: "OP_glExtGetTexLevelParameterivQCOM",
+ 1306: "OP_glExtTexObjectStateOverrideiQCOM",
+ 1307: "OP_glExtGetTexSubImageQCOM",
+ 1308: "OP_glExtGetBufferPointervQCOM",
+ 1309: "OP_glExtGetShadersQCOM",
+ 1310: "OP_glExtGetProgramsQCOM",
+ 1311: "OP_glExtIsProgramBinaryQCOM",
+ 1312: "OP_glExtGetProgramBinarySourceQCOM",
+ 1313: "OP_glStartTilingQCOM",
+ 1314: "OP_glEndTilingQCOM",
+ 1315: "OP_glGetGraphicsResetStatusEXT",
+ 1316: "OP_glReadnPixelsEXT",
+
+ ###############################################################################################
+ # GLES2 opcodes
+ # http://source/android/device/generic/vulkan-cereal/stream-servers/gles2_dec/gles2_opcodes.h
+ ###############################################################################################
+ 2048: "OP_glActiveTexture",
+ 2049: "OP_glAttachShader",
+ 2050: "OP_glBindAttribLocation",
+ 2051: "OP_glBindBuffer",
+ 2052: "OP_glBindFramebuffer",
+ 2053: "OP_glBindRenderbuffer",
+ 2054: "OP_glBindTexture",
+ 2055: "OP_glBlendColor",
+ 2056: "OP_glBlendEquation",
+ 2057: "OP_glBlendEquationSeparate",
+ 2058: "OP_glBlendFunc",
+ 2059: "OP_glBlendFuncSeparate",
+ 2060: "OP_glBufferData",
+ 2061: "OP_glBufferSubData",
+ 2062: "OP_glCheckFramebufferStatus",
+ 2063: "OP_glClear",
+ 2064: "OP_glClearColor",
+ 2065: "OP_glClearDepthf",
+ 2066: "OP_glClearStencil",
+ 2067: "OP_glColorMask",
+ 2068: "OP_glCompileShader",
+ 2069: "OP_glCompressedTexImage2D",
+ 2070: "OP_glCompressedTexSubImage2D",
+ 2071: "OP_glCopyTexImage2D",
+ 2072: "OP_glCopyTexSubImage2D",
+ 2073: "OP_glCreateProgram",
+ 2074: "OP_glCreateShader",
+ 2075: "OP_glCullFace",
+ 2076: "OP_glDeleteBuffers",
+ 2077: "OP_glDeleteFramebuffers",
+ 2078: "OP_glDeleteProgram",
+ 2079: "OP_glDeleteRenderbuffers",
+ 2080: "OP_glDeleteShader",
+ 2081: "OP_glDeleteTextures",
+ 2082: "OP_glDepthFunc",
+ 2083: "OP_glDepthMask",
+ 2084: "OP_glDepthRangef",
+ 2085: "OP_glDetachShader",
+ 2086: "OP_glDisable",
+ 2087: "OP_glDisableVertexAttribArray",
+ 2088: "OP_glDrawArrays",
+ 2089: "OP_glDrawElements",
+ 2090: "OP_glEnable",
+ 2091: "OP_glEnableVertexAttribArray",
+ 2092: "OP_glFinish",
+ 2093: "OP_glFlush",
+ 2094: "OP_glFramebufferRenderbuffer",
+ 2095: "OP_glFramebufferTexture2D",
+ 2096: "OP_glFrontFace",
+ 2097: "OP_glGenBuffers",
+ 2098: "OP_glGenerateMipmap",
+ 2099: "OP_glGenFramebuffers",
+ 2100: "OP_glGenRenderbuffers",
+ 2101: "OP_glGenTextures",
+ 2102: "OP_glGetActiveAttrib",
+ 2103: "OP_glGetActiveUniform",
+ 2104: "OP_glGetAttachedShaders",
+ 2105: "OP_glGetAttribLocation",
+ 2106: "OP_glGetBooleanv",
+ 2107: "OP_glGetBufferParameteriv",
+ 2108: "OP_glGetError",
+ 2109: "OP_glGetFloatv",
+ 2110: "OP_glGetFramebufferAttachmentParameteriv",
+ 2111: "OP_glGetIntegerv",
+ 2112: "OP_glGetProgramiv",
+ 2113: "OP_glGetProgramInfoLog",
+ 2114: "OP_glGetRenderbufferParameteriv",
+ 2115: "OP_glGetShaderiv",
+ 2116: "OP_glGetShaderInfoLog",
+ 2117: "OP_glGetShaderPrecisionFormat",
+ 2118: "OP_glGetShaderSource",
+ 2119: "OP_glGetString",
+ 2120: "OP_glGetTexParameterfv",
+ 2121: "OP_glGetTexParameteriv",
+ 2122: "OP_glGetUniformfv",
+ 2123: "OP_glGetUniformiv",
+ 2124: "OP_glGetUniformLocation",
+ 2125: "OP_glGetVertexAttribfv",
+ 2126: "OP_glGetVertexAttribiv",
+ 2127: "OP_glGetVertexAttribPointerv",
+ 2128: "OP_glHint",
+ 2129: "OP_glIsBuffer",
+ 2130: "OP_glIsEnabled",
+ 2131: "OP_glIsFramebuffer",
+ 2132: "OP_glIsProgram",
+ 2133: "OP_glIsRenderbuffer",
+ 2134: "OP_glIsShader",
+ 2135: "OP_glIsTexture",
+ 2136: "OP_glLineWidth",
+ 2137: "OP_glLinkProgram",
+ 2138: "OP_glPixelStorei",
+ 2139: "OP_glPolygonOffset",
+ 2140: "OP_glReadPixels",
+ 2141: "OP_glReleaseShaderCompiler",
+ 2142: "OP_glRenderbufferStorage",
+ 2143: "OP_glSampleCoverage",
+ 2144: "OP_glScissor",
+ 2145: "OP_glShaderBinary",
+ 2146: "OP_glShaderSource",
+ 2147: "OP_glStencilFunc",
+ 2148: "OP_glStencilFuncSeparate",
+ 2149: "OP_glStencilMask",
+ 2150: "OP_glStencilMaskSeparate",
+ 2151: "OP_glStencilOp",
+ 2152: "OP_glStencilOpSeparate",
+ 2153: "OP_glTexImage2D",
+ 2154: "OP_glTexParameterf",
+ 2155: "OP_glTexParameterfv",
+ 2156: "OP_glTexParameteri",
+ 2157: "OP_glTexParameteriv",
+ 2158: "OP_glTexSubImage2D",
+ 2159: "OP_glUniform1f",
+ 2160: "OP_glUniform1fv",
+ 2161: "OP_glUniform1i",
+ 2162: "OP_glUniform1iv",
+ 2163: "OP_glUniform2f",
+ 2164: "OP_glUniform2fv",
+ 2165: "OP_glUniform2i",
+ 2166: "OP_glUniform2iv",
+ 2167: "OP_glUniform3f",
+ 2168: "OP_glUniform3fv",
+ 2169: "OP_glUniform3i",
+ 2170: "OP_glUniform3iv",
+ 2171: "OP_glUniform4f",
+ 2172: "OP_glUniform4fv",
+ 2173: "OP_glUniform4i",
+ 2174: "OP_glUniform4iv",
+ 2175: "OP_glUniformMatrix2fv",
+ 2176: "OP_glUniformMatrix3fv",
+ 2177: "OP_glUniformMatrix4fv",
+ 2178: "OP_glUseProgram",
+ 2179: "OP_glValidateProgram",
+ 2180: "OP_glVertexAttrib1f",
+ 2181: "OP_glVertexAttrib1fv",
+ 2182: "OP_glVertexAttrib2f",
+ 2183: "OP_glVertexAttrib2fv",
+ 2184: "OP_glVertexAttrib3f",
+ 2185: "OP_glVertexAttrib3fv",
+ 2186: "OP_glVertexAttrib4f",
+ 2187: "OP_glVertexAttrib4fv",
+ 2188: "OP_glVertexAttribPointer",
+ 2189: "OP_glViewport",
+ 2190: "OP_glEGLImageTargetTexture2DOES",
+ 2191: "OP_glEGLImageTargetRenderbufferStorageOES",
+ 2192: "OP_glGetProgramBinaryOES",
+ 2193: "OP_glProgramBinaryOES",
+ 2194: "OP_glMapBufferOES",
+ 2195: "OP_glUnmapBufferOES",
+ 2196: "OP_glTexImage3DOES",
+ 2197: "OP_glTexSubImage3DOES",
+ 2198: "OP_glCopyTexSubImage3DOES",
+ 2199: "OP_glCompressedTexImage3DOES",
+ 2200: "OP_glCompressedTexSubImage3DOES",
+ 2201: "OP_glFramebufferTexture3DOES",
+ 2202: "OP_glBindVertexArrayOES",
+ 2203: "OP_glDeleteVertexArraysOES",
+ 2204: "OP_glGenVertexArraysOES",
+ 2205: "OP_glIsVertexArrayOES",
+ 2206: "OP_glDiscardFramebufferEXT",
+ 2207: "OP_glMultiDrawArraysEXT",
+ 2208: "OP_glMultiDrawElementsEXT",
+ 2209: "OP_glGetPerfMonitorGroupsAMD",
+ 2210: "OP_glGetPerfMonitorCountersAMD",
+ 2211: "OP_glGetPerfMonitorGroupStringAMD",
+ 2212: "OP_glGetPerfMonitorCounterStringAMD",
+ 2213: "OP_glGetPerfMonitorCounterInfoAMD",
+ 2214: "OP_glGenPerfMonitorsAMD",
+ 2215: "OP_glDeletePerfMonitorsAMD",
+ 2216: "OP_glSelectPerfMonitorCountersAMD",
+ 2217: "OP_glBeginPerfMonitorAMD",
+ 2218: "OP_glEndPerfMonitorAMD",
+ 2219: "OP_glGetPerfMonitorCounterDataAMD",
+ 2220: "OP_glRenderbufferStorageMultisampleIMG",
+ 2221: "OP_glFramebufferTexture2DMultisampleIMG",
+ 2222: "OP_glDeleteFencesNV",
+ 2223: "OP_glGenFencesNV",
+ 2224: "OP_glIsFenceNV",
+ 2225: "OP_glTestFenceNV",
+ 2226: "OP_glGetFenceivNV",
+ 2227: "OP_glFinishFenceNV",
+ 2228: "OP_glSetFenceNV",
+ 2229: "OP_glCoverageMaskNV",
+ 2230: "OP_glCoverageOperationNV",
+ 2231: "OP_glGetDriverControlsQCOM",
+ 2232: "OP_glGetDriverControlStringQCOM",
+ 2233: "OP_glEnableDriverControlQCOM",
+ 2234: "OP_glDisableDriverControlQCOM",
+ 2235: "OP_glExtGetTexturesQCOM",
+ 2236: "OP_glExtGetBuffersQCOM",
+ 2237: "OP_glExtGetRenderbuffersQCOM",
+ 2238: "OP_glExtGetFramebuffersQCOM",
+ 2239: "OP_glExtGetTexLevelParameterivQCOM",
+ 2240: "OP_glExtTexObjectStateOverrideiQCOM",
+ 2241: "OP_glExtGetTexSubImageQCOM",
+ 2242: "OP_glExtGetBufferPointervQCOM",
+ 2243: "OP_glExtGetShadersQCOM",
+ 2244: "OP_glExtGetProgramsQCOM",
+ 2245: "OP_glExtIsProgramBinaryQCOM",
+ 2246: "OP_glExtGetProgramBinarySourceQCOM",
+ 2247: "OP_glStartTilingQCOM",
+ 2248: "OP_glEndTilingQCOM",
+ 2249: "OP_glVertexAttribPointerData",
+ 2250: "OP_glVertexAttribPointerOffset",
+ 2251: "OP_glDrawElementsOffset",
+ 2252: "OP_glDrawElementsData",
+ 2253: "OP_glGetCompressedTextureFormats",
+ 2254: "OP_glShaderString",
+ 2255: "OP_glFinishRoundTrip",
+ 2256: "OP_glGenVertexArrays",
+ 2257: "OP_glBindVertexArray",
+ 2258: "OP_glDeleteVertexArrays",
+ 2259: "OP_glIsVertexArray",
+ 2260: "OP_glMapBufferRange",
+ 2261: "OP_glUnmapBuffer",
+ 2262: "OP_glFlushMappedBufferRange",
+ 2263: "OP_glMapBufferRangeAEMU",
+ 2264: "OP_glUnmapBufferAEMU",
+ 2265: "OP_glFlushMappedBufferRangeAEMU",
+ 2266: "OP_glReadPixelsOffsetAEMU",
+ 2267: "OP_glCompressedTexImage2DOffsetAEMU",
+ 2268: "OP_glCompressedTexSubImage2DOffsetAEMU",
+ 2269: "OP_glTexImage2DOffsetAEMU",
+ 2270: "OP_glTexSubImage2DOffsetAEMU",
+ 2271: "OP_glBindBufferRange",
+ 2272: "OP_glBindBufferBase",
+ 2273: "OP_glCopyBufferSubData",
+ 2274: "OP_glClearBufferiv",
+ 2275: "OP_glClearBufferuiv",
+ 2276: "OP_glClearBufferfv",
+ 2277: "OP_glClearBufferfi",
+ 2278: "OP_glGetBufferParameteri64v",
+ 2279: "OP_glGetBufferPointerv",
+ 2280: "OP_glUniformBlockBinding",
+ 2281: "OP_glGetUniformBlockIndex",
+ 2282: "OP_glGetUniformIndices",
+ 2283: "OP_glGetUniformIndicesAEMU",
+ 2284: "OP_glGetActiveUniformBlockiv",
+ 2285: "OP_glGetActiveUniformBlockName",
+ 2286: "OP_glUniform1ui",
+ 2287: "OP_glUniform2ui",
+ 2288: "OP_glUniform3ui",
+ 2289: "OP_glUniform4ui",
+ 2290: "OP_glUniform1uiv",
+ 2291: "OP_glUniform2uiv",
+ 2292: "OP_glUniform3uiv",
+ 2293: "OP_glUniform4uiv",
+ 2294: "OP_glUniformMatrix2x3fv",
+ 2295: "OP_glUniformMatrix3x2fv",
+ 2296: "OP_glUniformMatrix2x4fv",
+ 2297: "OP_glUniformMatrix4x2fv",
+ 2298: "OP_glUniformMatrix3x4fv",
+ 2299: "OP_glUniformMatrix4x3fv",
+ 2300: "OP_glGetUniformuiv",
+ 2301: "OP_glGetActiveUniformsiv",
+ 2302: "OP_glVertexAttribI4i",
+ 2303: "OP_glVertexAttribI4ui",
+ 2304: "OP_glVertexAttribI4iv",
+ 2305: "OP_glVertexAttribI4uiv",
+ 2306: "OP_glVertexAttribIPointer",
+ 2307: "OP_glVertexAttribIPointerOffsetAEMU",
+ 2308: "OP_glVertexAttribIPointerDataAEMU",
+ 2309: "OP_glGetVertexAttribIiv",
+ 2310: "OP_glGetVertexAttribIuiv",
+ 2311: "OP_glVertexAttribDivisor",
+ 2312: "OP_glDrawArraysInstanced",
+ 2313: "OP_glDrawElementsInstanced",
+ 2314: "OP_glDrawElementsInstancedDataAEMU",
+ 2315: "OP_glDrawElementsInstancedOffsetAEMU",
+ 2316: "OP_glDrawRangeElements",
+ 2317: "OP_glDrawRangeElementsDataAEMU",
+ 2318: "OP_glDrawRangeElementsOffsetAEMU",
+ 2319: "OP_glFenceSync",
+ 2320: "OP_glClientWaitSync",
+ 2321: "OP_glWaitSync",
+ 2322: "OP_glDeleteSync",
+ 2323: "OP_glIsSync",
+ 2324: "OP_glGetSynciv",
+ 2325: "OP_glFenceSyncAEMU",
+ 2326: "OP_glClientWaitSyncAEMU",
+ 2327: "OP_glWaitSyncAEMU",
+ 2328: "OP_glDeleteSyncAEMU",
+ 2329: "OP_glIsSyncAEMU",
+ 2330: "OP_glGetSyncivAEMU",
+ 2331: "OP_glDrawBuffers",
+ 2332: "OP_glReadBuffer",
+ 2333: "OP_glBlitFramebuffer",
+ 2334: "OP_glInvalidateFramebuffer",
+ 2335: "OP_glInvalidateSubFramebuffer",
+ 2336: "OP_glFramebufferTextureLayer",
+ 2337: "OP_glRenderbufferStorageMultisample",
+ 2338: "OP_glTexStorage2D",
+ 2339: "OP_glGetInternalformativ",
+ 2340: "OP_glBeginTransformFeedback",
+ 2341: "OP_glEndTransformFeedback",
+ 2342: "OP_glGenTransformFeedbacks",
+ 2343: "OP_glDeleteTransformFeedbacks",
+ 2344: "OP_glBindTransformFeedback",
+ 2345: "OP_glPauseTransformFeedback",
+ 2346: "OP_glResumeTransformFeedback",
+ 2347: "OP_glIsTransformFeedback",
+ 2348: "OP_glTransformFeedbackVaryings",
+ 2349: "OP_glTransformFeedbackVaryingsAEMU",
+ 2350: "OP_glGetTransformFeedbackVarying",
+ 2351: "OP_glGenSamplers",
+ 2352: "OP_glDeleteSamplers",
+ 2353: "OP_glBindSampler",
+ 2354: "OP_glSamplerParameterf",
+ 2355: "OP_glSamplerParameteri",
+ 2356: "OP_glSamplerParameterfv",
+ 2357: "OP_glSamplerParameteriv",
+ 2358: "OP_glGetSamplerParameterfv",
+ 2359: "OP_glGetSamplerParameteriv",
+ 2360: "OP_glIsSampler",
+ 2361: "OP_glGenQueries",
+ 2362: "OP_glDeleteQueries",
+ 2363: "OP_glBeginQuery",
+ 2364: "OP_glEndQuery",
+ 2365: "OP_glGetQueryiv",
+ 2366: "OP_glGetQueryObjectuiv",
+ 2367: "OP_glIsQuery",
+ 2368: "OP_glProgramParameteri",
+ 2369: "OP_glProgramBinary",
+ 2370: "OP_glGetProgramBinary",
+ 2371: "OP_glGetFragDataLocation",
+ 2372: "OP_glGetInteger64v",
+ 2373: "OP_glGetIntegeri_v",
+ 2374: "OP_glGetInteger64i_v",
+ 2375: "OP_glTexImage3D",
+ 2376: "OP_glTexImage3DOffsetAEMU",
+ 2377: "OP_glTexStorage3D",
+ 2378: "OP_glTexSubImage3D",
+ 2379: "OP_glTexSubImage3DOffsetAEMU",
+ 2380: "OP_glCompressedTexImage3D",
+ 2381: "OP_glCompressedTexImage3DOffsetAEMU",
+ 2382: "OP_glCompressedTexSubImage3D",
+ 2383: "OP_glCompressedTexSubImage3DOffsetAEMU",
+ 2384: "OP_glCopyTexSubImage3D",
+ 2385: "OP_glGetStringi",
+ 2386: "OP_glGetBooleani_v",
+ 2387: "OP_glMemoryBarrier",
+ 2388: "OP_glMemoryBarrierByRegion",
+ 2389: "OP_glGenProgramPipelines",
+ 2390: "OP_glDeleteProgramPipelines",
+ 2391: "OP_glBindProgramPipeline",
+ 2392: "OP_glGetProgramPipelineiv",
+ 2393: "OP_glGetProgramPipelineInfoLog",
+ 2394: "OP_glValidateProgramPipeline",
+ 2395: "OP_glIsProgramPipeline",
+ 2396: "OP_glUseProgramStages",
+ 2397: "OP_glActiveShaderProgram",
+ 2398: "OP_glCreateShaderProgramv",
+ 2399: "OP_glCreateShaderProgramvAEMU",
+ 2400: "OP_glProgramUniform1f",
+ 2401: "OP_glProgramUniform2f",
+ 2402: "OP_glProgramUniform3f",
+ 2403: "OP_glProgramUniform4f",
+ 2404: "OP_glProgramUniform1i",
+ 2405: "OP_glProgramUniform2i",
+ 2406: "OP_glProgramUniform3i",
+ 2407: "OP_glProgramUniform4i",
+ 2408: "OP_glProgramUniform1ui",
+ 2409: "OP_glProgramUniform2ui",
+ 2410: "OP_glProgramUniform3ui",
+ 2411: "OP_glProgramUniform4ui",
+ 2412: "OP_glProgramUniform1fv",
+ 2413: "OP_glProgramUniform2fv",
+ 2414: "OP_glProgramUniform3fv",
+ 2415: "OP_glProgramUniform4fv",
+ 2416: "OP_glProgramUniform1iv",
+ 2417: "OP_glProgramUniform2iv",
+ 2418: "OP_glProgramUniform3iv",
+ 2419: "OP_glProgramUniform4iv",
+ 2420: "OP_glProgramUniform1uiv",
+ 2421: "OP_glProgramUniform2uiv",
+ 2422: "OP_glProgramUniform3uiv",
+ 2423: "OP_glProgramUniform4uiv",
+ 2424: "OP_glProgramUniformMatrix2fv",
+ 2425: "OP_glProgramUniformMatrix3fv",
+ 2426: "OP_glProgramUniformMatrix4fv",
+ 2427: "OP_glProgramUniformMatrix2x3fv",
+ 2428: "OP_glProgramUniformMatrix3x2fv",
+ 2429: "OP_glProgramUniformMatrix2x4fv",
+ 2430: "OP_glProgramUniformMatrix4x2fv",
+ 2431: "OP_glProgramUniformMatrix3x4fv",
+ 2432: "OP_glProgramUniformMatrix4x3fv",
+ 2433: "OP_glGetProgramInterfaceiv",
+ 2434: "OP_glGetProgramResourceiv",
+ 2435: "OP_glGetProgramResourceIndex",
+ 2436: "OP_glGetProgramResourceLocation",
+ 2437: "OP_glGetProgramResourceName",
+ 2438: "OP_glBindImageTexture",
+ 2439: "OP_glDispatchCompute",
+ 2440: "OP_glDispatchComputeIndirect",
+ 2441: "OP_glBindVertexBuffer",
+ 2442: "OP_glVertexAttribBinding",
+ 2443: "OP_glVertexAttribFormat",
+ 2444: "OP_glVertexAttribIFormat",
+ 2445: "OP_glVertexBindingDivisor",
+ 2446: "OP_glDrawArraysIndirect",
+ 2447: "OP_glDrawArraysIndirectDataAEMU",
+ 2448: "OP_glDrawArraysIndirectOffsetAEMU",
+ 2449: "OP_glDrawElementsIndirect",
+ 2450: "OP_glDrawElementsIndirectDataAEMU",
+ 2451: "OP_glDrawElementsIndirectOffsetAEMU",
+ 2452: "OP_glTexStorage2DMultisample",
+ 2453: "OP_glSampleMaski",
+ 2454: "OP_glGetMultisamplefv",
+ 2455: "OP_glFramebufferParameteri",
+ 2456: "OP_glGetFramebufferParameteriv",
+ 2457: "OP_glGetTexLevelParameterfv",
+ 2458: "OP_glGetTexLevelParameteriv",
+ 2459: "OP_glMapBufferRangeDMA",
+ 2460: "OP_glUnmapBufferDMA",
+ 2461: "OP_glMapBufferRangeDirect",
+ 2462: "OP_glUnmapBufferDirect",
+ 2463: "OP_glFlushMappedBufferRangeDirect",
+ 2464: "OP_glGetGraphicsResetStatusEXT",
+ 2465: "OP_glReadnPixelsEXT",
+ 2466: "OP_glGetnUniformfvEXT",
+ 2467: "OP_glGetnUniformivEXT",
+ 2468: "OP_glDrawArraysNullAEMU",
+ 2469: "OP_glDrawElementsNullAEMU",
+ 2470: "OP_glDrawElementsOffsetNullAEMU",
+ 2471: "OP_glDrawElementsDataNullAEMU",
+ 2472: "OP_glUnmapBufferAsyncAEMU",
+ 2473: "OP_glFlushMappedBufferRangeAEMU2",
+ 2474: "OP_glBufferDataSyncAEMU",
+}
diff --git a/src/gfxstream/scripts/print_gfx_logs/print_gfx_logs.py b/src/gfxstream/scripts/print_gfx_logs/print_gfx_logs.py
new file mode 100644
index 00000000000..a0490e8bd15
--- /dev/null
+++ b/src/gfxstream/scripts/print_gfx_logs/print_gfx_logs.py
@@ -0,0 +1,245 @@
+#
+# Copyright (C) 2022 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""
+Command line tool to process minidump files and print what was logged by GfxApiLogger.
+
+For more details see:
+
+design: go/bstar-gfx-logging
+g3doc: http://g3doc/play/g3doc/games/battlestar/kiwivm/graphics-tips.md#gfx-logs
+C++: http://source/play-internal/battlestar/aosp/device/generic/vulkan-cereal/utils/include/utils/GfxApiLogger.h
+
+Usage:
+
+python3 print_gfx_logs.py <path to minidump file>
+"""
+
+from __future__ import annotations
+import argparse
+import ctypes
+import sys
+from datetime import datetime
+import mmap
+import textwrap
+from . import command_printer
+from typing import NamedTuple, Optional, List
+import traceback
+
+
+class Header(ctypes.Structure):
+ """The C struct that we use to represent the data in memory
+ Keep in sync with GfxApiLogger.h
+ """
+ _fields_ = [('signature', ctypes.c_char * 10),
+ ('version', ctypes.c_uint16),
+ ('thread_id', ctypes.c_uint32),
+ ('last_written_time', ctypes.c_uint64),
+ ('write_index', ctypes.c_uint32),
+ ('committed_index', ctypes.c_uint32),
+ ('capture_id', ctypes.c_uint64),
+ ('data_size', ctypes.c_uint32)]
+
+
+class Command(NamedTuple):
+ """A single command in the stream"""
+ timestamp: int # Unix timestamp when command was recorded, in microseconds
+ opcode: int
+ original_size: int
+ data: bytes
+
+
+class Stream(NamedTuple):
+ """Stream of commands received from the guest"""
+ pos_in_file: int # Location of this stream in the minidump file, useful for debugging
+ timestamp: int # Unix timestamp of last command received, in microseconds
+ thread_id: int
+ capture_id: int
+ commands: List[Command]
+ error_message: Optional[str] # `None` if there were no errors parsing this stream
+
+ @staticmethod
+ def error(pos_in_file: int, error_message: str) -> Stream:
+ return Stream(
+ pos_in_file=pos_in_file, timestamp=0, thread_id=0, capture_id=0, commands=[],
+ error_message=error_message)
+
+def timestampToUnixUs(timestamp: int) -> int:
+ # Convert Windows' GetSystemTimeAsFileTime to Unix timestamp in microseconds
+ # https://stackoverflow.com/questions/1695288/getting-the-current-time-in-milliseconds-from-the-system-clock-in-windows
+ timestamp_us = int(timestamp / 10 - 11644473600000000)
+ if timestamp_us <= 0: timestamp_us = 0
+ return timestamp_us
+
+def read_uint32(buf: bytes, pos: int) -> int:
+ """Reads a single uint32 from buf at a given position"""
+ assert pos + 4 <= len(buf)
+ return int.from_bytes(buf[pos:pos + 4], byteorder='little', signed=False)
+
+def read_uint64(buf: bytes, pos: int) -> int:
+ """Reads a single uint32 from buf at a given position"""
+ assert pos + 8 <= len(buf)
+ return int.from_bytes(buf[pos:pos + 8], byteorder='little', signed=False)
+
+def process_command(buf: bytes, version: int) -> Command:
+ pos = 0
+ if version >= 3:
+ timestamp_us = read_uint64(buf, pos)
+ pos += 8
+ else:
+ timestamp_us = 0
+ opcode = read_uint32(buf, pos)
+ pos += 4
+ size = read_uint32(buf, pos)
+ pos += 4
+ return Command(timestamp_us, opcode, size, bytes(buf[pos:]))
+
+
+def process_stream(file_bytes: mmap, file_pos: int) -> Stream:
+ # Read the header
+ file_bytes.seek(file_pos)
+ header = Header()
+ header_bytes = file_bytes.read(ctypes.sizeof(header))
+ ctypes.memmove(ctypes.addressof(header), header_bytes, ctypes.sizeof(header))
+
+ if header.signature != b'GFXAPILOG':
+ return Stream.error(file_pos, error_message="Signature doesn't match")
+
+ if header.version < 2:
+ return Stream.error(
+ file_pos,
+ error_message=(
+ "This script can only process version 2 or later of the graphics API logs, but the "
+ + "dump file uses version {} ").format(header.version))
+
+ if header.version == 2:
+ timestamp_us = timestampToUnixUs(int(header.last_written_time))
+ else:
+ timestamp_us = int(header.last_written_time)
+
+ # Sanity check the size
+ if header.data_size > 5_000_000:
+ return Stream.error(
+ file_pos,
+ error_message="data size is larger than 5MB. This likely indicates garbage/corrupted " +
+ "data")
+
+ if header.committed_index >= header.data_size:
+ return Stream.error(
+ file_pos,
+ error_message="index is larger than buffer size. Likely indicates garbage/corrupted " +
+ "data")
+
+ file_bytes.seek(file_pos + ctypes.sizeof(header))
+ data = file_bytes.read(header.data_size)
+
+ # Reorder the buffer so that we can read it in a single pass from back to front
+ buf = data[header.committed_index:] + data[:header.committed_index]
+
+ commands = []
+ i = len(buf)
+ while i >= 4:
+ i -= 4
+ size = read_uint32(buf, i)
+ if size == 0 or size > i:
+ # We reached the end of the stream
+ break
+ cmd = process_command(buf[i - size:i], header.version)
+
+ commands.append(cmd)
+ i -= size
+
+ commands.reverse() # so that they're sorted from oldest to most recent
+ return Stream(file_pos, timestamp_us, header.thread_id, header.capture_id, commands, None)
+
+
+def process_minidump(mm: mmap) -> List[Stream]:
+ """
+ Extracts a list of commands streams from a minidump file
+ """
+ streams = []
+ pos = 0
+ while True:
+ pos = mm.find(b'GFXAPILOG', pos)
+ if pos == -1:
+ break
+ streams.append(process_stream(mm, pos))
+ pos += 1
+
+ return streams
+
+
+def main():
+ parser = argparse.ArgumentParser(description="""Command line tool to process crash reports and print out the
+ commands logged by GfxApiLogger""")
+ parser.add_argument('dump_file', help="Path to minidump file")
+
+ args = parser.parse_args()
+ streams = None
+ with open(args.dump_file, "r+b") as f:
+ with mmap.mmap(f.fileno(), 0) as mm:
+ streams = process_minidump(mm)
+
+ streams.sort(key=lambda s: s.timestamp)
+
+ total_commands = 0
+ num_errors = 0
+ for stream_idx, stream in enumerate(streams):
+ print(textwrap.dedent("""
+ =======================================================
+ GfxApiLog command stream #{} at offset {} in dump
+ - Timestamp: {}
+ - Thread id: {}
+ - Capture id: {}""".format(stream_idx, stream.pos_in_file,
+ datetime.fromtimestamp(stream.timestamp / 1000000.0),
+ stream.thread_id,
+ stream.capture_id)))
+ if stream.error_message:
+ print("Could not decode stream. Error: ", stream.error_message)
+ continue
+
+ subdecode_size = 0
+ for cmd_idx, cmd in enumerate(stream.commands):
+ total_commands += 1
+ cmd_printer = command_printer.CommandPrinter(
+ cmd.opcode, cmd.original_size, cmd.data, cmd.timestamp, stream_idx, cmd_idx)
+
+ try:
+ cmd_printer.print_cmd()
+ except:
+ num_errors += 1
+ # Print stack trace and continue
+ traceback.print_exc(file=sys.stdout)
+
+ if subdecode_size > 0:
+ subdecode_size -= cmd.original_size
+ assert subdecode_size >= 0
+ if subdecode_size == 0:
+ print("\n--- end of subdecode ---")
+
+ if cmd_printer.cmd_name() == "OP_vkQueueFlushCommandsGOOGLE":
+ assert subdecode_size == 0
+ subdecode_size = cmd.original_size - 36
+ print("\n--- start of subdecode, size = {} bytes ---".format(subdecode_size))
+ print("\nDone: {} commands, {} errors".format(total_commands, num_errors))
+ if num_errors > 0:
+ print("""
+NOTE: This script uses some simplifying assumptions to decode the commands. All
+decoding errors are almost certainly a bug with this script, NOT a sign of bad
+or corrupted data.""")
+
+
+if __name__ == '__main__':
+ main()
diff --git a/src/gfxstream/scripts/print_gfx_logs/print_gfx_logs_test.py b/src/gfxstream/scripts/print_gfx_logs/print_gfx_logs_test.py
new file mode 100644
index 00000000000..510912c781e
--- /dev/null
+++ b/src/gfxstream/scripts/print_gfx_logs/print_gfx_logs_test.py
@@ -0,0 +1,137 @@
+#
+# Copyright (C) 2022 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import ctypes
+from typing import List
+from .print_gfx_logs import process_minidump, Command, Stream, Header
+import mmap
+import unittest
+import sys
+
+
+def create_vk_destroy_instance_command(vk_instance: int, p_allocator: int) -> Command:
+ OP_vkDestroyInstance = 20001
+ opcode = OP_vkDestroyInstance
+ data = bytearray()
+ # seq number
+ seqno = 20
+ data += seqno.to_bytes(4, byteorder='big')
+ # VkInstance
+ data += vk_instance.to_bytes(8, sys.byteorder)
+ # VkAllocationCallbacks
+ data += p_allocator.to_bytes(8, sys.byteorder)
+ return Command(opcode=opcode, original_size=len(data) + 8, data=bytes(data))
+
+
+def create_command_data(commands: List[Command]) -> bytearray:
+ data = bytearray()
+ for command in commands:
+ data += command.opcode.to_bytes(4, sys.byteorder)
+ data += command.original_size.to_bytes(4, sys.byteorder)
+ data += command.data
+ assert(len(command.data) + 8 == command.original_size)
+ data += command.original_size.to_bytes(4, byteorder='little')
+ return data
+
+
+def create_dump(stream: Stream) -> bytearray:
+ data = create_command_data(stream.commands)
+ header = Header()
+ header.signature = b'GFXAPILOG\0'
+ header.version = 2
+ header.thread_id = stream.thread_id
+ # Convert Windows' GetSystemTimeAsFileTime to Unix timestamp
+ # https://stackoverflow.com/questions/1695288/getting-the-current-time-in-milliseconds-from-the-system-clock-in-windows
+ header.last_written_time = (stream.timestamp + 11644473600000) * 10_000
+ header.write_index = 0
+ header.committed_index = 0
+ header.capture_id = stream.capture_id
+ header.data_size = len(data)
+ res = b'\0' * ctypes.sizeof(header)
+ ctypes.memmove(res, ctypes.addressof(header), ctypes.sizeof(header))
+ return res + data
+
+
+class ProcessMinidumpTestCase(unittest.TestCase):
+ def test_single_command(self):
+ command = create_vk_destroy_instance_command(vk_instance=0x1234, p_allocator=0x7321)
+ stream = Stream(pos_in_file=0, timestamp=123456, thread_id=4726,
+ capture_id=8261, commands=[command], error_message=None)
+ offset = 24
+ dump = b'\0' * offset + create_dump(stream)
+ streams = None
+ with mmap.mmap(-1, len(dump)) as mm:
+ mm.write(dump)
+ mm.seek(0)
+ streams = process_minidump(mm)
+ self.assertEqual(len(streams), 1)
+ self.assertEqual(streams[0].error_message, None)
+ self.assertEqual(streams[0].pos_in_file, offset)
+ self.assertEqual(streams[0].timestamp, stream.timestamp)
+ self.assertEqual(streams[0].thread_id, stream.thread_id)
+ self.assertEqual(streams[0].capture_id, stream.capture_id)
+ self.assertEqual(len(streams[0].commands), 1)
+ self.assertEqual(streams[0].commands[0].opcode, command.opcode)
+ self.assertEqual(streams[0].commands[0].original_size, command.original_size)
+ self.assertEqual(len(streams[0].commands[0].data), len(command.data))
+ self.assertEqual(streams[0].commands[0].data, command.data)
+
+ def test_multiple_commands(self):
+ commands = [create_vk_destroy_instance_command(
+ vk_instance=0x1234, p_allocator=0x7321),
+ create_vk_destroy_instance_command(
+ vk_instance=0x3621, p_allocator=0x7672)]
+ stream = Stream(pos_in_file=0, timestamp=123456, thread_id=4726,
+ capture_id=8261, commands=commands, error_message=None)
+ dump = create_dump(stream)
+ streams = None
+ with mmap.mmap(-1, len(dump)) as mm:
+ mm.write(dump)
+ mm.seek(0)
+ streams = process_minidump(mm)
+ self.assertEqual(len(streams), 1)
+ self.assertEqual(streams[0].error_message, None)
+ self.assertEqual(len(streams[0].commands), len(commands))
+ for actual_command, expected_command in zip(streams[0].commands, commands):
+ self.assertEqual(actual_command.opcode, expected_command.opcode)
+ self.assertEqual(actual_command.original_size, expected_command.original_size)
+ self.assertEqual(len(actual_command.data), len(expected_command.data))
+ self.assertEqual(actual_command.data, expected_command.data)
+
+ def test_multiple_streams(self):
+ command = create_vk_destroy_instance_command(vk_instance=0x1234, p_allocator=0x7321)
+ streams = []
+ offsets = []
+ dump = bytearray()
+ for i in range(10):
+ stream = Stream(pos_in_file=0, timestamp=i, thread_id=i,
+ capture_id=i, commands=[command], error_message=None)
+ streams.append(stream)
+ dump += b'\0' * i
+ offsets.append(len(dump))
+ dump += create_dump(stream)
+ actual_streams = None
+ with mmap.mmap(-1, len(dump)) as mm:
+ mm.write(dump)
+ mm.seek(0)
+ actual_streams = process_minidump(mm)
+ self.assertEqual(len(actual_streams), len(streams))
+ for i, (actual_stream, expected_stream) in enumerate(zip(actual_streams, streams)):
+ self.assertEqual(actual_stream.error_message, None)
+ self.assertEqual(actual_stream.pos_in_file, offsets[i])
+ self.assertEqual(actual_stream.timestamp, expected_stream.timestamp)
+ self.assertEqual(actual_stream.thread_id, expected_stream.thread_id)
+ self.assertEqual(actual_stream.capture_id, expected_stream.capture_id)
+ self.assertEqual(len(actual_stream.commands), len(expected_stream.commands))
diff --git a/src/gfxstream/scripts/print_gfx_logs/vulkan_printer.py b/src/gfxstream/scripts/print_gfx_logs/vulkan_printer.py
new file mode 100644
index 00000000000..fcc6f868d25
--- /dev/null
+++ b/src/gfxstream/scripts/print_gfx_logs/vulkan_printer.py
@@ -0,0 +1,2709 @@
+#####################################################################################################
+# Pretty-printer functions for Vulkan data structures
+# THIS FILE IS AUTO-GENERATED - DO NOT EDIT
+#
+# To re-generate this file, run generate-vulkan-sources.sh
+#####################################################################################################
+
+def OP_vkAcquireImageANDROID(printer, indent: int):
+ printer.write_int("seqno: ", 4, indent)
+ device = printer.write_int("device", 8, indent, signed=False, big_endian=False)
+ image = printer.write_int("image", 8, indent, signed=False, big_endian=False)
+ nativeFenceFd = printer.write_int("nativeFenceFd", 4, indent, signed=True, big_endian=False)
+ semaphore = printer.write_int("semaphore", 8, indent, signed=False, big_endian=False)
+ fence = printer.write_int("fence", 8, indent, signed=False, big_endian=False)
+ return
+
+def OP_vkAllocateMemory(printer, indent: int):
+ printer.write_int("seqno: ", 4, indent)
+ device = printer.write_int("device", 8, indent, signed=False, big_endian=False)
+ printer.write_struct("pAllocateInfo", struct_VkMemoryAllocateInfo, False, None, indent)
+ printer.write_struct("pAllocator", struct_VkAllocationCallbacks, True, None, indent)
+ pMemory = printer.write_int("pMemory", 8, indent, optional=False, count=None, big_endian=False)
+ return
+
+def OP_vkBeginCommandBufferAsyncGOOGLE(printer, indent: int):
+ printer.write_struct("pBeginInfo", struct_VkCommandBufferBeginInfo, False, None, indent)
+ return
+
+def OP_vkBindBufferMemory(printer, indent: int):
+ printer.write_int("seqno: ", 4, indent)
+ device = printer.write_int("device", 8, indent, signed=False, big_endian=False)
+ buffer = printer.write_int("buffer", 8, indent, signed=False, big_endian=False)
+ memory = printer.write_int("memory", 8, indent, signed=False, big_endian=False)
+ memoryOffset = printer.write_int("memoryOffset", 8, indent, signed=False, big_endian=False)
+ return
+
+def OP_vkBindImageMemory(printer, indent: int):
+ printer.write_int("seqno: ", 4, indent)
+ device = printer.write_int("device", 8, indent, signed=False, big_endian=False)
+ image = printer.write_int("image", 8, indent, signed=False, big_endian=False)
+ memory = printer.write_int("memory", 8, indent, signed=False, big_endian=False)
+ memoryOffset = printer.write_int("memoryOffset", 8, indent, signed=False, big_endian=False)
+ return
+
+def OP_vkCmdBeginRenderPass(printer, indent: int):
+ printer.write_struct("pRenderPassBegin", struct_VkRenderPassBeginInfo, False, None, indent)
+ printer.write_enum("contents", VkSubpassContents, indent)
+ return
+
+def OP_vkCmdBindDescriptorSets(printer, indent: int):
+ printer.write_enum("pipelineBindPoint", VkPipelineBindPoint, indent)
+ layout = printer.write_int("layout", 8, indent, signed=False, big_endian=False)
+ firstSet = printer.write_int("firstSet", 4, indent, signed=False, big_endian=False)
+ descriptorSetCount = printer.write_int("descriptorSetCount", 4, indent, signed=False, big_endian=False)
+ pDescriptorSets = printer.write_int("pDescriptorSets", 8, indent, optional=False, count=descriptorSetCount, big_endian=False)
+ dynamicOffsetCount = printer.write_int("dynamicOffsetCount", 4, indent, signed=False, big_endian=False)
+ pDynamicOffsets = printer.write_int("pDynamicOffsets", 4, indent, optional=False, count=dynamicOffsetCount, big_endian=False)
+ return
+
+def OP_vkCmdBindIndexBuffer(printer, indent: int):
+ buffer = printer.write_int("buffer", 8, indent, signed=False, big_endian=False)
+ offset = printer.write_int("offset", 8, indent, signed=False, big_endian=False)
+ printer.write_enum("indexType", VkIndexType, indent)
+ return
+
+def OP_vkCmdBindPipeline(printer, indent: int):
+ printer.write_enum("pipelineBindPoint", VkPipelineBindPoint, indent)
+ pipeline = printer.write_int("pipeline", 8, indent, signed=False, big_endian=False)
+ return
+
+def OP_vkCmdBindVertexBuffers(printer, indent: int):
+ firstBinding = printer.write_int("firstBinding", 4, indent, signed=False, big_endian=False)
+ bindingCount = printer.write_int("bindingCount", 4, indent, signed=False, big_endian=False)
+ pBuffers = printer.write_int("pBuffers", 8, indent, optional=False, count=bindingCount, big_endian=False)
+ pOffsets = printer.write_int("pOffsets", 8, indent, optional=False, count=bindingCount, big_endian=False)
+ return
+
+def OP_vkCmdClearAttachments(printer, indent: int):
+ attachmentCount = printer.write_int("attachmentCount", 4, indent, signed=False, big_endian=False)
+ printer.write_struct("pAttachments", struct_VkClearAttachment, False, attachmentCount, indent)
+ rectCount = printer.write_int("rectCount", 4, indent, signed=False, big_endian=False)
+ printer.write_struct("pRects", struct_VkClearRect, False, rectCount, indent)
+ return
+
+def OP_vkCmdClearColorImage(printer, indent: int):
+ image = printer.write_int("image", 8, indent, signed=False, big_endian=False)
+ printer.write_enum("imageLayout", VkImageLayout, indent)
+ printer.write_struct("pColor", struct_VkClearColorValue, False, None, indent)
+ rangeCount = printer.write_int("rangeCount", 4, indent, signed=False, big_endian=False)
+ printer.write_struct("pRanges", struct_VkImageSubresourceRange, False, rangeCount, indent)
+ return
+
+def OP_vkCmdCopyBufferToImage(printer, indent: int):
+ srcBuffer = printer.write_int("srcBuffer", 8, indent, signed=False, big_endian=False)
+ dstImage = printer.write_int("dstImage", 8, indent, signed=False, big_endian=False)
+ printer.write_enum("dstImageLayout", VkImageLayout, indent)
+ regionCount = printer.write_int("regionCount", 4, indent, signed=False, big_endian=False)
+ printer.write_struct("pRegions", struct_VkBufferImageCopy, False, regionCount, indent)
+ return
+
+def OP_vkCmdCopyImageToBuffer(printer, indent: int):
+ srcImage = printer.write_int("srcImage", 8, indent, signed=False, big_endian=False)
+ printer.write_enum("srcImageLayout", VkImageLayout, indent)
+ dstBuffer = printer.write_int("dstBuffer", 8, indent, signed=False, big_endian=False)
+ regionCount = printer.write_int("regionCount", 4, indent, signed=False, big_endian=False)
+ printer.write_struct("pRegions", struct_VkBufferImageCopy, False, regionCount, indent)
+ return
+
+def OP_vkCmdDraw(printer, indent: int):
+ vertexCount = printer.write_int("vertexCount", 4, indent, signed=False, big_endian=False)
+ instanceCount = printer.write_int("instanceCount", 4, indent, signed=False, big_endian=False)
+ firstVertex = printer.write_int("firstVertex", 4, indent, signed=False, big_endian=False)
+ firstInstance = printer.write_int("firstInstance", 4, indent, signed=False, big_endian=False)
+ return
+
+def OP_vkCmdDrawIndexed(printer, indent: int):
+ indexCount = printer.write_int("indexCount", 4, indent, signed=False, big_endian=False)
+ instanceCount = printer.write_int("instanceCount", 4, indent, signed=False, big_endian=False)
+ firstIndex = printer.write_int("firstIndex", 4, indent, signed=False, big_endian=False)
+ vertexOffset = printer.write_int("vertexOffset", 4, indent, signed=True, big_endian=False)
+ firstInstance = printer.write_int("firstInstance", 4, indent, signed=False, big_endian=False)
+ return
+
+def OP_vkCmdEndRenderPass(printer, indent: int):
+ return
+
+def OP_vkCmdPipelineBarrier(printer, indent: int):
+ srcStageMask = printer.write_int("srcStageMask", 4, indent, signed=False, big_endian=False)
+ dstStageMask = printer.write_int("dstStageMask", 4, indent, signed=False, big_endian=False)
+ dependencyFlags = printer.write_int("dependencyFlags", 4, indent, signed=False, big_endian=False)
+ memoryBarrierCount = printer.write_int("memoryBarrierCount", 4, indent, signed=False, big_endian=False)
+ printer.write_struct("pMemoryBarriers", struct_VkMemoryBarrier, False, memoryBarrierCount, indent)
+ bufferMemoryBarrierCount = printer.write_int("bufferMemoryBarrierCount", 4, indent, signed=False, big_endian=False)
+ printer.write_struct("pBufferMemoryBarriers", struct_VkBufferMemoryBarrier, False, bufferMemoryBarrierCount, indent)
+ imageMemoryBarrierCount = printer.write_int("imageMemoryBarrierCount", 4, indent, signed=False, big_endian=False)
+ printer.write_struct("pImageMemoryBarriers", struct_VkImageMemoryBarrier, False, imageMemoryBarrierCount, indent)
+ return
+
+def OP_vkCmdSetScissor(printer, indent: int):
+ firstScissor = printer.write_int("firstScissor", 4, indent, signed=False, big_endian=False)
+ scissorCount = printer.write_int("scissorCount", 4, indent, signed=False, big_endian=False)
+ printer.write_struct("pScissors", struct_VkRect2D, False, scissorCount, indent)
+ return
+
+def OP_vkCmdSetViewport(printer, indent: int):
+ firstViewport = printer.write_int("firstViewport", 4, indent, signed=False, big_endian=False)
+ viewportCount = printer.write_int("viewportCount", 4, indent, signed=False, big_endian=False)
+ printer.write_struct("pViewports", struct_VkViewport, False, viewportCount, indent)
+ return
+
+def OP_vkCollectDescriptorPoolIdsGOOGLE(printer, indent: int):
+ printer.write_int("seqno: ", 4, indent)
+ device = printer.write_int("device", 8, indent, signed=False, big_endian=False)
+ descriptorPool = printer.write_int("descriptorPool", 8, indent, signed=False, big_endian=False)
+ pPoolIdCount = printer.write_int("pPoolIdCount", 4, indent, optional=False, count=None, big_endian=False)
+ pPoolIds = printer.write_int("pPoolIds", 8, indent, optional=True, count=pPoolIdCount, big_endian=False)
+ return
+
+def OP_vkCreateBufferWithRequirementsGOOGLE(printer, indent: int):
+ printer.write_int("seqno: ", 4, indent)
+ device = printer.write_int("device", 8, indent, signed=False, big_endian=False)
+ printer.write_struct("pCreateInfo", struct_VkBufferCreateInfo, False, None, indent)
+ printer.write_struct("pAllocator", struct_VkAllocationCallbacks, True, None, indent)
+ pBuffer = printer.write_int("pBuffer", 8, indent, optional=False, count=None, big_endian=False)
+ printer.write_struct("pMemoryRequirements", struct_VkMemoryRequirements, False, None, indent)
+ return
+
+def OP_vkCreateDescriptorPool(printer, indent: int):
+ printer.write_int("seqno: ", 4, indent)
+ device = printer.write_int("device", 8, indent, signed=False, big_endian=False)
+ printer.write_struct("pCreateInfo", struct_VkDescriptorPoolCreateInfo, False, None, indent)
+ printer.write_struct("pAllocator", struct_VkAllocationCallbacks, True, None, indent)
+ pDescriptorPool = printer.write_int("pDescriptorPool", 8, indent, optional=False, count=None, big_endian=False)
+ return
+
+def OP_vkCreateDescriptorSetLayout(printer, indent: int):
+ printer.write_int("seqno: ", 4, indent)
+ device = printer.write_int("device", 8, indent, signed=False, big_endian=False)
+ printer.write_struct("pCreateInfo", struct_VkDescriptorSetLayoutCreateInfo, False, None, indent)
+ printer.write_struct("pAllocator", struct_VkAllocationCallbacks, True, None, indent)
+ pSetLayout = printer.write_int("pSetLayout", 8, indent, optional=False, count=None, big_endian=False)
+ return
+
+def OP_vkCreateFence(printer, indent: int):
+ printer.write_int("seqno: ", 4, indent)
+ device = printer.write_int("device", 8, indent, signed=False, big_endian=False)
+ printer.write_struct("pCreateInfo", struct_VkFenceCreateInfo, False, None, indent)
+ printer.write_struct("pAllocator", struct_VkAllocationCallbacks, True, None, indent)
+ pFence = printer.write_int("pFence", 8, indent, optional=False, count=None, big_endian=False)
+ return
+
+def OP_vkCreateFramebuffer(printer, indent: int):
+ printer.write_int("seqno: ", 4, indent)
+ device = printer.write_int("device", 8, indent, signed=False, big_endian=False)
+ printer.write_struct("pCreateInfo", struct_VkFramebufferCreateInfo, False, None, indent)
+ printer.write_struct("pAllocator", struct_VkAllocationCallbacks, True, None, indent)
+ pFramebuffer = printer.write_int("pFramebuffer", 8, indent, optional=False, count=None, big_endian=False)
+ return
+
+def OP_vkCreateGraphicsPipelines(printer, indent: int):
+ printer.write_int("seqno: ", 4, indent)
+ device = printer.write_int("device", 8, indent, signed=False, big_endian=False)
+ pipelineCache = printer.write_int("pipelineCache", 8, indent, signed=False, big_endian=False)
+ createInfoCount = printer.write_int("createInfoCount", 4, indent, signed=False, big_endian=False)
+ printer.write_struct("pCreateInfos", struct_VkGraphicsPipelineCreateInfo, False, createInfoCount, indent)
+ printer.write_struct("pAllocator", struct_VkAllocationCallbacks, True, None, indent)
+ pPipelines = printer.write_int("pPipelines", 8, indent, optional=False, count=createInfoCount, big_endian=False)
+ return
+
+def OP_vkCreateImageView(printer, indent: int):
+ printer.write_int("seqno: ", 4, indent)
+ device = printer.write_int("device", 8, indent, signed=False, big_endian=False)
+ printer.write_struct("pCreateInfo", struct_VkImageViewCreateInfo, False, None, indent)
+ printer.write_struct("pAllocator", struct_VkAllocationCallbacks, True, None, indent)
+ pView = printer.write_int("pView", 8, indent, optional=False, count=None, big_endian=False)
+ return
+
+def OP_vkCreateImageWithRequirementsGOOGLE(printer, indent: int):
+ printer.write_int("seqno: ", 4, indent)
+ device = printer.write_int("device", 8, indent, signed=False, big_endian=False)
+ printer.write_struct("pCreateInfo", struct_VkImageCreateInfo, False, None, indent)
+ printer.write_struct("pAllocator", struct_VkAllocationCallbacks, True, None, indent)
+ pImage = printer.write_int("pImage", 8, indent, optional=False, count=None, big_endian=False)
+ printer.write_struct("pMemoryRequirements", struct_VkMemoryRequirements, False, None, indent)
+ return
+
+def OP_vkCreatePipelineCache(printer, indent: int):
+ printer.write_int("seqno: ", 4, indent)
+ device = printer.write_int("device", 8, indent, signed=False, big_endian=False)
+ printer.write_struct("pCreateInfo", struct_VkPipelineCacheCreateInfo, False, None, indent)
+ printer.write_struct("pAllocator", struct_VkAllocationCallbacks, True, None, indent)
+ pPipelineCache = printer.write_int("pPipelineCache", 8, indent, optional=False, count=None, big_endian=False)
+ return
+
+def OP_vkCreateRenderPass(printer, indent: int):
+ printer.write_int("seqno: ", 4, indent)
+ device = printer.write_int("device", 8, indent, signed=False, big_endian=False)
+ printer.write_struct("pCreateInfo", struct_VkRenderPassCreateInfo, False, None, indent)
+ printer.write_struct("pAllocator", struct_VkAllocationCallbacks, True, None, indent)
+ pRenderPass = printer.write_int("pRenderPass", 8, indent, optional=False, count=None, big_endian=False)
+ return
+
+def OP_vkCreateSampler(printer, indent: int):
+ printer.write_int("seqno: ", 4, indent)
+ device = printer.write_int("device", 8, indent, signed=False, big_endian=False)
+ printer.write_struct("pCreateInfo", struct_VkSamplerCreateInfo, False, None, indent)
+ printer.write_struct("pAllocator", struct_VkAllocationCallbacks, True, None, indent)
+ pSampler = printer.write_int("pSampler", 8, indent, optional=False, count=None, big_endian=False)
+ return
+
+def OP_vkCreateSemaphore(printer, indent: int):
+ printer.write_int("seqno: ", 4, indent)
+ device = printer.write_int("device", 8, indent, signed=False, big_endian=False)
+ printer.write_struct("pCreateInfo", struct_VkSemaphoreCreateInfo, False, None, indent)
+ printer.write_struct("pAllocator", struct_VkAllocationCallbacks, True, None, indent)
+ pSemaphore = printer.write_int("pSemaphore", 8, indent, optional=False, count=None, big_endian=False)
+ return
+
+def OP_vkCreateShaderModule(printer, indent: int):
+ printer.write_int("seqno: ", 4, indent)
+ device = printer.write_int("device", 8, indent, signed=False, big_endian=False)
+ printer.write_struct("pCreateInfo", struct_VkShaderModuleCreateInfo, False, None, indent)
+ printer.write_struct("pAllocator", struct_VkAllocationCallbacks, True, None, indent)
+ pShaderModule = printer.write_int("pShaderModule", 8, indent, optional=False, count=None, big_endian=False)
+ return
+
+def OP_vkDestroyBuffer(printer, indent: int):
+ printer.write_int("seqno: ", 4, indent)
+ device = printer.write_int("device", 8, indent, signed=False, big_endian=False)
+ buffer = printer.write_int("buffer", 8, indent, signed=False, big_endian=False)
+ printer.write_struct("pAllocator", struct_VkAllocationCallbacks, True, None, indent)
+ return
+
+def OP_vkDestroyCommandPool(printer, indent: int):
+ printer.write_int("seqno: ", 4, indent)
+ device = printer.write_int("device", 8, indent, signed=False, big_endian=False)
+ commandPool = printer.write_int("commandPool", 8, indent, signed=False, big_endian=False)
+ printer.write_struct("pAllocator", struct_VkAllocationCallbacks, True, None, indent)
+ return
+
+def OP_vkDestroyDescriptorPool(printer, indent: int):
+ printer.write_int("seqno: ", 4, indent)
+ device = printer.write_int("device", 8, indent, signed=False, big_endian=False)
+ descriptorPool = printer.write_int("descriptorPool", 8, indent, signed=False, big_endian=False)
+ printer.write_struct("pAllocator", struct_VkAllocationCallbacks, True, None, indent)
+ return
+
+def OP_vkDestroyDescriptorSetLayout(printer, indent: int):
+ printer.write_int("seqno: ", 4, indent)
+ device = printer.write_int("device", 8, indent, signed=False, big_endian=False)
+ descriptorSetLayout = printer.write_int("descriptorSetLayout", 8, indent, signed=False, big_endian=False)
+ printer.write_struct("pAllocator", struct_VkAllocationCallbacks, True, None, indent)
+ return
+
+def OP_vkDestroyDevice(printer, indent: int):
+ printer.write_int("seqno: ", 4, indent)
+ device = printer.write_int("device", 8, indent, signed=False, big_endian=False)
+ printer.write_struct("pAllocator", struct_VkAllocationCallbacks, True, None, indent)
+ return
+
+def OP_vkDestroyFence(printer, indent: int):
+ printer.write_int("seqno: ", 4, indent)
+ device = printer.write_int("device", 8, indent, signed=False, big_endian=False)
+ fence = printer.write_int("fence", 8, indent, signed=False, big_endian=False)
+ printer.write_struct("pAllocator", struct_VkAllocationCallbacks, True, None, indent)
+ return
+
+def OP_vkDestroyFramebuffer(printer, indent: int):
+ printer.write_int("seqno: ", 4, indent)
+ device = printer.write_int("device", 8, indent, signed=False, big_endian=False)
+ framebuffer = printer.write_int("framebuffer", 8, indent, signed=False, big_endian=False)
+ printer.write_struct("pAllocator", struct_VkAllocationCallbacks, True, None, indent)
+ return
+
+def OP_vkDestroyImage(printer, indent: int):
+ printer.write_int("seqno: ", 4, indent)
+ device = printer.write_int("device", 8, indent, signed=False, big_endian=False)
+ image = printer.write_int("image", 8, indent, signed=False, big_endian=False)
+ printer.write_struct("pAllocator", struct_VkAllocationCallbacks, True, None, indent)
+ return
+
+def OP_vkDestroyImageView(printer, indent: int):
+ printer.write_int("seqno: ", 4, indent)
+ device = printer.write_int("device", 8, indent, signed=False, big_endian=False)
+ imageView = printer.write_int("imageView", 8, indent, signed=False, big_endian=False)
+ printer.write_struct("pAllocator", struct_VkAllocationCallbacks, True, None, indent)
+ return
+
+def OP_vkDestroyInstance(printer, indent: int):
+ printer.write_int("seqno: ", 4, indent)
+ instance = printer.write_int("instance", 8, indent, signed=False, big_endian=False)
+ printer.write_struct("pAllocator", struct_VkAllocationCallbacks, True, None, indent)
+ return
+
+def OP_vkDestroyPipeline(printer, indent: int):
+ printer.write_int("seqno: ", 4, indent)
+ device = printer.write_int("device", 8, indent, signed=False, big_endian=False)
+ pipeline = printer.write_int("pipeline", 8, indent, signed=False, big_endian=False)
+ printer.write_struct("pAllocator", struct_VkAllocationCallbacks, True, None, indent)
+ return
+
+def OP_vkDestroyPipelineCache(printer, indent: int):
+ printer.write_int("seqno: ", 4, indent)
+ device = printer.write_int("device", 8, indent, signed=False, big_endian=False)
+ pipelineCache = printer.write_int("pipelineCache", 8, indent, signed=False, big_endian=False)
+ printer.write_struct("pAllocator", struct_VkAllocationCallbacks, True, None, indent)
+ return
+
+def OP_vkDestroyPipelineLayout(printer, indent: int):
+ printer.write_int("seqno: ", 4, indent)
+ device = printer.write_int("device", 8, indent, signed=False, big_endian=False)
+ pipelineLayout = printer.write_int("pipelineLayout", 8, indent, signed=False, big_endian=False)
+ printer.write_struct("pAllocator", struct_VkAllocationCallbacks, True, None, indent)
+ return
+
+def OP_vkDestroyRenderPass(printer, indent: int):
+ printer.write_int("seqno: ", 4, indent)
+ device = printer.write_int("device", 8, indent, signed=False, big_endian=False)
+ renderPass = printer.write_int("renderPass", 8, indent, signed=False, big_endian=False)
+ printer.write_struct("pAllocator", struct_VkAllocationCallbacks, True, None, indent)
+ return
+
+def OP_vkDestroySemaphore(printer, indent: int):
+ printer.write_int("seqno: ", 4, indent)
+ device = printer.write_int("device", 8, indent, signed=False, big_endian=False)
+ semaphore = printer.write_int("semaphore", 8, indent, signed=False, big_endian=False)
+ printer.write_struct("pAllocator", struct_VkAllocationCallbacks, True, None, indent)
+ return
+
+def OP_vkDestroyShaderModule(printer, indent: int):
+ printer.write_int("seqno: ", 4, indent)
+ device = printer.write_int("device", 8, indent, signed=False, big_endian=False)
+ shaderModule = printer.write_int("shaderModule", 8, indent, signed=False, big_endian=False)
+ printer.write_struct("pAllocator", struct_VkAllocationCallbacks, True, None, indent)
+ return
+
+def OP_vkEndCommandBufferAsyncGOOGLE(printer, indent: int):
+ printer.write_int("seqno: ", 4, indent)
+ return
+
+def OP_vkFreeCommandBuffers(printer, indent: int):
+ printer.write_int("seqno: ", 4, indent)
+ device = printer.write_int("device", 8, indent, signed=False, big_endian=False)
+ commandPool = printer.write_int("commandPool", 8, indent, signed=False, big_endian=False)
+ commandBufferCount = printer.write_int("commandBufferCount", 4, indent, signed=False, big_endian=False)
+ pCommandBuffers = printer.write_int("pCommandBuffers", 8, indent, optional=True, count=commandBufferCount, big_endian=False)
+ return
+
+def OP_vkFreeMemory(printer, indent: int):
+ printer.write_int("seqno: ", 4, indent)
+ device = printer.write_int("device", 8, indent, signed=False, big_endian=False)
+ memory = printer.write_int("memory", 8, indent, signed=False, big_endian=False)
+ printer.write_struct("pAllocator", struct_VkAllocationCallbacks, True, None, indent)
+ return
+
+def OP_vkFreeMemorySyncGOOGLE(printer, indent: int):
+ printer.write_int("seqno: ", 4, indent)
+ device = printer.write_int("device", 8, indent, signed=False, big_endian=False)
+ memory = printer.write_int("memory", 8, indent, signed=False, big_endian=False)
+ printer.write_struct("pAllocator", struct_VkAllocationCallbacks, True, None, indent)
+ return
+
+def OP_vkGetBlobGOOGLE(printer, indent: int):
+ printer.write_int("seqno: ", 4, indent)
+ device = printer.write_int("device", 8, indent, signed=False, big_endian=False)
+ memory = printer.write_int("memory", 8, indent, signed=False, big_endian=False)
+ return
+
+def OP_vkGetFenceStatus(printer, indent: int):
+ printer.write_int("seqno: ", 4, indent)
+ device = printer.write_int("device", 8, indent, signed=False, big_endian=False)
+ fence = printer.write_int("fence", 8, indent, signed=False, big_endian=False)
+ return
+
+def OP_vkGetMemoryHostAddressInfoGOOGLE(printer, indent: int):
+ printer.write_int("seqno: ", 4, indent)
+ device = printer.write_int("device", 8, indent, signed=False, big_endian=False)
+ memory = printer.write_int("memory", 8, indent, signed=False, big_endian=False)
+ pAddress = printer.write_int("pAddress", 8, indent, optional=True, count=None, big_endian=False)
+ pSize = printer.write_int("pSize", 8, indent, optional=True, count=None, big_endian=False)
+ pHostmemId = printer.write_int("pHostmemId", 8, indent, optional=True, count=None, big_endian=False)
+ return
+
+def OP_vkGetPhysicalDeviceFormatProperties(printer, indent: int):
+ printer.write_int("seqno: ", 4, indent)
+ physicalDevice = printer.write_int("physicalDevice", 8, indent, signed=False, big_endian=False)
+ printer.write_enum("format", VkFormat, indent)
+ printer.write_struct("pFormatProperties", struct_VkFormatProperties, False, None, indent)
+ return
+
+def OP_vkGetPhysicalDeviceProperties2KHR(printer, indent: int):
+ printer.write_int("seqno: ", 4, indent)
+ physicalDevice = printer.write_int("physicalDevice", 8, indent, signed=False, big_endian=False)
+ printer.write_struct("pProperties", struct_VkPhysicalDeviceProperties2, False, None, indent)
+ return
+
+def OP_vkGetPipelineCacheData(printer, indent: int):
+ printer.write_int("seqno: ", 4, indent)
+ device = printer.write_int("device", 8, indent, signed=False, big_endian=False)
+ pipelineCache = printer.write_int("pipelineCache", 8, indent, signed=False, big_endian=False)
+ pDataSize = printer.write_int("pDataSize", 8, indent, optional=True, count=None, big_endian=True)
+ pData = printer.write_int("pData", 8, indent, optional=True, count=pDataSize, big_endian=False)
+ return
+
+def OP_vkGetSwapchainGrallocUsageANDROID(printer, indent: int):
+ printer.write_int("seqno: ", 4, indent)
+ device = printer.write_int("device", 8, indent, signed=False, big_endian=False)
+ printer.write_enum("format", VkFormat, indent)
+ imageUsage = printer.write_int("imageUsage", 4, indent, signed=False, big_endian=False)
+ grallocUsage = printer.write_int("grallocUsage", 4, indent, optional=False, count=None, big_endian=False)
+ return
+
+def OP_vkQueueCommitDescriptorSetUpdatesGOOGLE(printer, indent: int):
+ printer.write_int("seqno: ", 4, indent)
+ queue = printer.write_int("queue", 8, indent, signed=False, big_endian=False)
+ descriptorPoolCount = printer.write_int("descriptorPoolCount", 4, indent, signed=False, big_endian=False)
+ pDescriptorPools = printer.write_int("pDescriptorPools", 8, indent, optional=False, count=descriptorPoolCount, big_endian=False)
+ descriptorSetCount = printer.write_int("descriptorSetCount", 4, indent, signed=False, big_endian=False)
+ pSetLayouts = printer.write_int("pSetLayouts", 8, indent, optional=False, count=descriptorSetCount, big_endian=False)
+ pDescriptorSetPoolIds = printer.write_int("pDescriptorSetPoolIds", 8, indent, optional=False, count=descriptorSetCount, big_endian=False)
+ pDescriptorSetWhichPool = printer.write_int("pDescriptorSetWhichPool", 4, indent, optional=False, count=descriptorSetCount, big_endian=False)
+ pDescriptorSetPendingAllocation = printer.write_int("pDescriptorSetPendingAllocation", 4, indent, optional=False, count=descriptorSetCount, big_endian=False)
+ pDescriptorWriteStartingIndices = printer.write_int("pDescriptorWriteStartingIndices", 4, indent, optional=False, count=descriptorSetCount, big_endian=False)
+ pendingDescriptorWriteCount = printer.write_int("pendingDescriptorWriteCount", 4, indent, signed=False, big_endian=False)
+ printer.write_struct("pPendingDescriptorWrites", struct_VkWriteDescriptorSet, False, pendingDescriptorWriteCount, indent)
+ return
+
+def OP_vkQueueFlushCommandsGOOGLE(printer, indent: int):
+ printer.write_int("seqno: ", 4, indent)
+ queue = printer.write_int("queue", 8, indent, signed=False, big_endian=False)
+ commandBuffer = printer.write_int("commandBuffer", 8, indent, signed=False, big_endian=False)
+ dataSize = printer.write_int("dataSize", 8, indent, signed=False, big_endian=False)
+ return
+
+def OP_vkQueueSignalReleaseImageANDROIDAsyncGOOGLE(printer, indent: int):
+ printer.write_int("seqno: ", 4, indent)
+ queue = printer.write_int("queue", 8, indent, signed=False, big_endian=False)
+ waitSemaphoreCount = printer.write_int("waitSemaphoreCount", 4, indent, signed=False, big_endian=False)
+ pWaitSemaphores = printer.write_int("pWaitSemaphores", 8, indent, optional=True, count=waitSemaphoreCount, big_endian=False)
+ image = printer.write_int("image", 8, indent, signed=False, big_endian=False)
+ return
+
+def OP_vkQueueSubmitAsyncGOOGLE(printer, indent: int):
+ printer.write_int("seqno: ", 4, indent)
+ queue = printer.write_int("queue", 8, indent, signed=False, big_endian=False)
+ submitCount = printer.write_int("submitCount", 4, indent, signed=False, big_endian=False)
+ printer.write_struct("pSubmits", struct_VkSubmitInfo, False, submitCount, indent)
+ fence = printer.write_int("fence", 8, indent, signed=False, big_endian=False)
+ return
+
+def OP_vkQueueWaitIdle(printer, indent: int):
+ printer.write_int("seqno: ", 4, indent)
+ queue = printer.write_int("queue", 8, indent, signed=False, big_endian=False)
+ return
+
+def OP_vkResetFences(printer, indent: int):
+ printer.write_int("seqno: ", 4, indent)
+ device = printer.write_int("device", 8, indent, signed=False, big_endian=False)
+ fenceCount = printer.write_int("fenceCount", 4, indent, signed=False, big_endian=False)
+ pFences = printer.write_int("pFences", 8, indent, optional=False, count=fenceCount, big_endian=False)
+ return
+
+def OP_vkWaitForFences(printer, indent: int):
+ printer.write_int("seqno: ", 4, indent)
+ device = printer.write_int("device", 8, indent, signed=False, big_endian=False)
+ fenceCount = printer.write_int("fenceCount", 4, indent, signed=False, big_endian=False)
+ pFences = printer.write_int("pFences", 8, indent, optional=False, count=fenceCount, big_endian=False)
+ waitAll = printer.write_int("waitAll", 4, indent, signed=False, big_endian=False)
+ timeout = printer.write_int("timeout", 8, indent, signed=False, big_endian=False)
+ return
+
+def struct_VkAllocationCallbacks(printer, indent: int):
+ pUserData = printer.write_int("pUserData", 8, indent, optional=True, count=None, big_endian=False)
+ pfnAllocation = printer.write_int("pfnAllocation", 8, indent, signed=False, big_endian=False)
+ pfnReallocation = printer.write_int("pfnReallocation", 8, indent, signed=False, big_endian=False)
+ pfnFree = printer.write_int("pfnFree", 8, indent, signed=False, big_endian=False)
+ pfnInternalAllocation = printer.write_int("pfnInternalAllocation", 8, indent, signed=False, big_endian=False)
+ pfnInternalFree = printer.write_int("pfnInternalFree", 8, indent, signed=False, big_endian=False)
+
+def struct_VkAttachmentDescription(printer, indent: int):
+ flags = printer.write_int("flags", 4, indent, signed=False, big_endian=False)
+ printer.write_enum("format", VkFormat, indent)
+ printer.write_enum("samples", VkSampleCountFlagBits, indent)
+ printer.write_enum("loadOp", VkAttachmentLoadOp, indent)
+ printer.write_enum("storeOp", VkAttachmentStoreOp, indent)
+ printer.write_enum("stencilLoadOp", VkAttachmentLoadOp, indent)
+ printer.write_enum("stencilStoreOp", VkAttachmentStoreOp, indent)
+ printer.write_enum("initialLayout", VkImageLayout, indent)
+ printer.write_enum("finalLayout", VkImageLayout, indent)
+
+def struct_VkAttachmentReference(printer, indent: int):
+ attachment = printer.write_int("attachment", 4, indent, signed=False, big_endian=False)
+ printer.write_enum("layout", VkImageLayout, indent)
+
+def struct_VkBufferCreateInfo(printer, indent: int):
+ printer.write_stype_and_pnext("VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO", indent)
+ flags = printer.write_int("flags", 4, indent, signed=False, big_endian=False)
+ size = printer.write_int("size", 8, indent, signed=False, big_endian=False)
+ usage = printer.write_int("usage", 4, indent, signed=False, big_endian=False)
+ printer.write_enum("sharingMode", VkSharingMode, indent)
+ queueFamilyIndexCount = printer.write_int("queueFamilyIndexCount", 4, indent, signed=False, big_endian=False)
+ pQueueFamilyIndices = printer.write_int("pQueueFamilyIndices", 4, indent, optional=True, count=queueFamilyIndexCount, big_endian=False)
+
+def struct_VkBufferImageCopy(printer, indent: int):
+ bufferOffset = printer.write_int("bufferOffset", 8, indent, signed=False, big_endian=False)
+ bufferRowLength = printer.write_int("bufferRowLength", 4, indent, signed=False, big_endian=False)
+ bufferImageHeight = printer.write_int("bufferImageHeight", 4, indent, signed=False, big_endian=False)
+ printer.write_struct("imageSubresource", struct_VkImageSubresourceLayers, False, None, indent)
+ printer.write_struct("imageOffset", struct_VkOffset3D, False, None, indent)
+ printer.write_struct("imageExtent", struct_VkExtent3D, False, None, indent)
+
+def struct_VkBufferMemoryBarrier(printer, indent: int):
+ printer.write_stype_and_pnext("VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER", indent)
+ srcAccessMask = printer.write_int("srcAccessMask", 4, indent, signed=False, big_endian=False)
+ dstAccessMask = printer.write_int("dstAccessMask", 4, indent, signed=False, big_endian=False)
+ srcQueueFamilyIndex = printer.write_int("srcQueueFamilyIndex", 4, indent, signed=False, big_endian=False)
+ dstQueueFamilyIndex = printer.write_int("dstQueueFamilyIndex", 4, indent, signed=False, big_endian=False)
+ buffer = printer.write_int("buffer", 8, indent, signed=False, big_endian=False)
+ offset = printer.write_int("offset", 8, indent, signed=False, big_endian=False)
+ size = printer.write_int("size", 8, indent, signed=False, big_endian=False)
+
+def struct_VkClearAttachment(printer, indent: int):
+ aspectMask = printer.write_int("aspectMask", 4, indent, signed=False, big_endian=False)
+ colorAttachment = printer.write_int("colorAttachment", 4, indent, signed=False, big_endian=False)
+ printer.write_struct("clearValue", struct_VkClearValue, False, None, indent)
+
+def struct_VkClearColorValue(printer, indent: int):
+ printer.write_float("float32", indent, count=4)
+
+def struct_VkClearRect(printer, indent: int):
+ printer.write_struct("rect", struct_VkRect2D, False, None, indent)
+ baseArrayLayer = printer.write_int("baseArrayLayer", 4, indent, signed=False, big_endian=False)
+ layerCount = printer.write_int("layerCount", 4, indent, signed=False, big_endian=False)
+
+def struct_VkClearValue(printer, indent: int):
+ printer.write_struct("color", struct_VkClearColorValue, False, None, indent)
+
+def struct_VkCommandBufferBeginInfo(printer, indent: int):
+ printer.write_stype_and_pnext("VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO", indent)
+ flags = printer.write_int("flags", 4, indent, signed=False, big_endian=False)
+ printer.write_struct("pInheritanceInfo", struct_VkCommandBufferInheritanceInfo, True, None, indent)
+
+def struct_VkCommandBufferInheritanceInfo(printer, indent: int):
+ printer.write_stype_and_pnext("VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO", indent)
+ renderPass = printer.write_int("renderPass", 8, indent, signed=False, big_endian=False)
+ subpass = printer.write_int("subpass", 4, indent, signed=False, big_endian=False)
+ framebuffer = printer.write_int("framebuffer", 8, indent, signed=False, big_endian=False)
+ occlusionQueryEnable = printer.write_int("occlusionQueryEnable", 4, indent, signed=False, big_endian=False)
+ queryFlags = printer.write_int("queryFlags", 4, indent, signed=False, big_endian=False)
+ pipelineStatistics = printer.write_int("pipelineStatistics", 4, indent, signed=False, big_endian=False)
+
+def struct_VkComponentMapping(printer, indent: int):
+ printer.write_enum("r", VkComponentSwizzle, indent)
+ printer.write_enum("g", VkComponentSwizzle, indent)
+ printer.write_enum("b", VkComponentSwizzle, indent)
+ printer.write_enum("a", VkComponentSwizzle, indent)
+
+def struct_VkDescriptorBufferInfo(printer, indent: int):
+ buffer = printer.write_int("buffer", 8, indent, signed=False, big_endian=False)
+ offset = printer.write_int("offset", 8, indent, signed=False, big_endian=False)
+ range = printer.write_int("range", 8, indent, signed=False, big_endian=False)
+
+def struct_VkDescriptorImageInfo(printer, indent: int):
+ sampler = printer.write_int("sampler", 8, indent, signed=False, big_endian=False)
+ imageView = printer.write_int("imageView", 8, indent, signed=False, big_endian=False)
+ printer.write_enum("imageLayout", VkImageLayout, indent)
+
+def struct_VkDescriptorPoolCreateInfo(printer, indent: int):
+ printer.write_stype_and_pnext("VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO", indent)
+ flags = printer.write_int("flags", 4, indent, signed=False, big_endian=False)
+ maxSets = printer.write_int("maxSets", 4, indent, signed=False, big_endian=False)
+ poolSizeCount = printer.write_int("poolSizeCount", 4, indent, signed=False, big_endian=False)
+ printer.write_struct("pPoolSizes", struct_VkDescriptorPoolSize, False, poolSizeCount, indent)
+
+def struct_VkDescriptorPoolSize(printer, indent: int):
+ printer.write_enum("type", VkDescriptorType, indent)
+ descriptorCount = printer.write_int("descriptorCount", 4, indent, signed=False, big_endian=False)
+
+def struct_VkDescriptorSetLayoutBinding(printer, indent: int):
+ binding = printer.write_int("binding", 4, indent, signed=False, big_endian=False)
+ printer.write_enum("descriptorType", VkDescriptorType, indent)
+ descriptorCount = printer.write_int("descriptorCount", 4, indent, signed=False, big_endian=False)
+ stageFlags = printer.write_int("stageFlags", 4, indent, signed=False, big_endian=False)
+ pImmutableSamplers = printer.write_int("pImmutableSamplers", 8, indent, optional=True, count=descriptorCount, big_endian=False)
+
+def struct_VkDescriptorSetLayoutCreateInfo(printer, indent: int):
+ printer.write_stype_and_pnext("VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO", indent)
+ flags = printer.write_int("flags", 4, indent, signed=False, big_endian=False)
+ bindingCount = printer.write_int("bindingCount", 4, indent, signed=False, big_endian=False)
+ printer.write_struct("pBindings", struct_VkDescriptorSetLayoutBinding, False, bindingCount, indent)
+
+def struct_VkExtent2D(printer, indent: int):
+ width = printer.write_int("width", 4, indent, signed=False, big_endian=False)
+ height = printer.write_int("height", 4, indent, signed=False, big_endian=False)
+
+def struct_VkExtent3D(printer, indent: int):
+ width = printer.write_int("width", 4, indent, signed=False, big_endian=False)
+ height = printer.write_int("height", 4, indent, signed=False, big_endian=False)
+ depth = printer.write_int("depth", 4, indent, signed=False, big_endian=False)
+
+def struct_VkFenceCreateInfo(printer, indent: int):
+ printer.write_stype_and_pnext("VK_STRUCTURE_TYPE_FENCE_CREATE_INFO", indent)
+ flags = printer.write_int("flags", 4, indent, signed=False, big_endian=False)
+
+def struct_VkFormatProperties(printer, indent: int):
+ linearTilingFeatures = printer.write_int("linearTilingFeatures", 4, indent, signed=False, big_endian=False)
+ optimalTilingFeatures = printer.write_int("optimalTilingFeatures", 4, indent, signed=False, big_endian=False)
+ bufferFeatures = printer.write_int("bufferFeatures", 4, indent, signed=False, big_endian=False)
+
+def struct_VkFramebufferCreateInfo(printer, indent: int):
+ printer.write_stype_and_pnext("VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO", indent)
+ flags = printer.write_int("flags", 4, indent, signed=False, big_endian=False)
+ renderPass = printer.write_int("renderPass", 8, indent, signed=False, big_endian=False)
+ attachmentCount = printer.write_int("attachmentCount", 4, indent, signed=False, big_endian=False)
+ pAttachments = printer.write_int("pAttachments", 8, indent, optional=False, count=attachmentCount, big_endian=False)
+ width = printer.write_int("width", 4, indent, signed=False, big_endian=False)
+ height = printer.write_int("height", 4, indent, signed=False, big_endian=False)
+ layers = printer.write_int("layers", 4, indent, signed=False, big_endian=False)
+
+def struct_VkGraphicsPipelineCreateInfo(printer, indent: int):
+ printer.write_stype_and_pnext("VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO", indent)
+ flags = printer.write_int("flags", 4, indent, signed=False, big_endian=False)
+ stageCount = printer.write_int("stageCount", 4, indent, signed=False, big_endian=False)
+ printer.write_struct("pStages", struct_VkPipelineShaderStageCreateInfo, False, stageCount, indent)
+ printer.write_struct("pVertexInputState", struct_VkPipelineVertexInputStateCreateInfo, True, None, indent)
+ printer.write_struct("pInputAssemblyState", struct_VkPipelineInputAssemblyStateCreateInfo, True, None, indent)
+ printer.write_struct("pTessellationState", struct_VkPipelineTessellationStateCreateInfo, True, None, indent)
+ printer.write_struct("pViewportState", struct_VkPipelineViewportStateCreateInfo, True, None, indent)
+ printer.write_struct("pRasterizationState", struct_VkPipelineRasterizationStateCreateInfo, True, None, indent)
+ printer.write_struct("pMultisampleState", struct_VkPipelineMultisampleStateCreateInfo, True, None, indent)
+ printer.write_struct("pDepthStencilState", struct_VkPipelineDepthStencilStateCreateInfo, True, None, indent)
+ printer.write_struct("pColorBlendState", struct_VkPipelineColorBlendStateCreateInfo, True, None, indent)
+ printer.write_struct("pDynamicState", struct_VkPipelineDynamicStateCreateInfo, True, None, indent)
+ layout = printer.write_int("layout", 8, indent, signed=False, big_endian=False)
+ renderPass = printer.write_int("renderPass", 8, indent, signed=False, big_endian=False)
+ subpass = printer.write_int("subpass", 4, indent, signed=False, big_endian=False)
+ basePipelineHandle = printer.write_int("basePipelineHandle", 8, indent, signed=False, big_endian=False)
+ basePipelineIndex = printer.write_int("basePipelineIndex", 4, indent, signed=True, big_endian=False)
+
+def struct_VkImageCreateInfo(printer, indent: int):
+ printer.write_stype_and_pnext("VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO", indent)
+ flags = printer.write_int("flags", 4, indent, signed=False, big_endian=False)
+ printer.write_enum("imageType", VkImageType, indent)
+ printer.write_enum("format", VkFormat, indent)
+ printer.write_struct("extent", struct_VkExtent3D, False, None, indent)
+ mipLevels = printer.write_int("mipLevels", 4, indent, signed=False, big_endian=False)
+ arrayLayers = printer.write_int("arrayLayers", 4, indent, signed=False, big_endian=False)
+ printer.write_enum("samples", VkSampleCountFlagBits, indent)
+ printer.write_enum("tiling", VkImageTiling, indent)
+ usage = printer.write_int("usage", 4, indent, signed=False, big_endian=False)
+ printer.write_enum("sharingMode", VkSharingMode, indent)
+ queueFamilyIndexCount = printer.write_int("queueFamilyIndexCount", 4, indent, signed=False, big_endian=False)
+ pQueueFamilyIndices = printer.write_int("pQueueFamilyIndices", 4, indent, optional=True, count=queueFamilyIndexCount, big_endian=False)
+ printer.write_enum("initialLayout", VkImageLayout, indent)
+
+def struct_VkImageMemoryBarrier(printer, indent: int):
+ printer.write_stype_and_pnext("VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER", indent)
+ srcAccessMask = printer.write_int("srcAccessMask", 4, indent, signed=False, big_endian=False)
+ dstAccessMask = printer.write_int("dstAccessMask", 4, indent, signed=False, big_endian=False)
+ printer.write_enum("oldLayout", VkImageLayout, indent)
+ printer.write_enum("newLayout", VkImageLayout, indent)
+ srcQueueFamilyIndex = printer.write_int("srcQueueFamilyIndex", 4, indent, signed=False, big_endian=False)
+ dstQueueFamilyIndex = printer.write_int("dstQueueFamilyIndex", 4, indent, signed=False, big_endian=False)
+ image = printer.write_int("image", 8, indent, signed=False, big_endian=False)
+ printer.write_struct("subresourceRange", struct_VkImageSubresourceRange, False, None, indent)
+
+def struct_VkImageSubresourceLayers(printer, indent: int):
+ aspectMask = printer.write_int("aspectMask", 4, indent, signed=False, big_endian=False)
+ mipLevel = printer.write_int("mipLevel", 4, indent, signed=False, big_endian=False)
+ baseArrayLayer = printer.write_int("baseArrayLayer", 4, indent, signed=False, big_endian=False)
+ layerCount = printer.write_int("layerCount", 4, indent, signed=False, big_endian=False)
+
+def struct_VkImageSubresourceRange(printer, indent: int):
+ aspectMask = printer.write_int("aspectMask", 4, indent, signed=False, big_endian=False)
+ baseMipLevel = printer.write_int("baseMipLevel", 4, indent, signed=False, big_endian=False)
+ levelCount = printer.write_int("levelCount", 4, indent, signed=False, big_endian=False)
+ baseArrayLayer = printer.write_int("baseArrayLayer", 4, indent, signed=False, big_endian=False)
+ layerCount = printer.write_int("layerCount", 4, indent, signed=False, big_endian=False)
+
+def struct_VkImageViewCreateInfo(printer, indent: int):
+ printer.write_stype_and_pnext("VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO", indent)
+ flags = printer.write_int("flags", 4, indent, signed=False, big_endian=False)
+ image = printer.write_int("image", 8, indent, signed=False, big_endian=False)
+ printer.write_enum("viewType", VkImageViewType, indent)
+ printer.write_enum("format", VkFormat, indent)
+ printer.write_struct("components", struct_VkComponentMapping, False, None, indent)
+ printer.write_struct("subresourceRange", struct_VkImageSubresourceRange, False, None, indent)
+
+def struct_VkMemoryAllocateInfo(printer, indent: int):
+ printer.write_stype_and_pnext("VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO", indent)
+ allocationSize = printer.write_int("allocationSize", 8, indent, signed=False, big_endian=False)
+ memoryTypeIndex = printer.write_int("memoryTypeIndex", 4, indent, signed=False, big_endian=False)
+
+def struct_VkMemoryBarrier(printer, indent: int):
+ printer.write_stype_and_pnext("VK_STRUCTURE_TYPE_MEMORY_BARRIER", indent)
+ srcAccessMask = printer.write_int("srcAccessMask", 4, indent, signed=False, big_endian=False)
+ dstAccessMask = printer.write_int("dstAccessMask", 4, indent, signed=False, big_endian=False)
+
+def struct_VkMemoryRequirements(printer, indent: int):
+ size = printer.write_int("size", 8, indent, signed=False, big_endian=False)
+ alignment = printer.write_int("alignment", 8, indent, signed=False, big_endian=False)
+ memoryTypeBits = printer.write_int("memoryTypeBits", 4, indent, signed=False, big_endian=False)
+
+def struct_VkOffset2D(printer, indent: int):
+ x = printer.write_int("x", 4, indent, signed=True, big_endian=False)
+ y = printer.write_int("y", 4, indent, signed=True, big_endian=False)
+
+def struct_VkOffset3D(printer, indent: int):
+ x = printer.write_int("x", 4, indent, signed=True, big_endian=False)
+ y = printer.write_int("y", 4, indent, signed=True, big_endian=False)
+ z = printer.write_int("z", 4, indent, signed=True, big_endian=False)
+
+def struct_VkPhysicalDeviceLimits(printer, indent: int):
+ maxImageDimension1D = printer.write_int("maxImageDimension1D", 4, indent, signed=False, big_endian=False)
+ maxImageDimension2D = printer.write_int("maxImageDimension2D", 4, indent, signed=False, big_endian=False)
+ maxImageDimension3D = printer.write_int("maxImageDimension3D", 4, indent, signed=False, big_endian=False)
+ maxImageDimensionCube = printer.write_int("maxImageDimensionCube", 4, indent, signed=False, big_endian=False)
+ maxImageArrayLayers = printer.write_int("maxImageArrayLayers", 4, indent, signed=False, big_endian=False)
+ maxTexelBufferElements = printer.write_int("maxTexelBufferElements", 4, indent, signed=False, big_endian=False)
+ maxUniformBufferRange = printer.write_int("maxUniformBufferRange", 4, indent, signed=False, big_endian=False)
+ maxStorageBufferRange = printer.write_int("maxStorageBufferRange", 4, indent, signed=False, big_endian=False)
+ maxPushConstantsSize = printer.write_int("maxPushConstantsSize", 4, indent, signed=False, big_endian=False)
+ maxMemoryAllocationCount = printer.write_int("maxMemoryAllocationCount", 4, indent, signed=False, big_endian=False)
+ maxSamplerAllocationCount = printer.write_int("maxSamplerAllocationCount", 4, indent, signed=False, big_endian=False)
+ bufferImageGranularity = printer.write_int("bufferImageGranularity", 8, indent, signed=False, big_endian=False)
+ sparseAddressSpaceSize = printer.write_int("sparseAddressSpaceSize", 8, indent, signed=False, big_endian=False)
+ maxBoundDescriptorSets = printer.write_int("maxBoundDescriptorSets", 4, indent, signed=False, big_endian=False)
+ maxPerStageDescriptorSamplers = printer.write_int("maxPerStageDescriptorSamplers", 4, indent, signed=False, big_endian=False)
+ maxPerStageDescriptorUniformBuffers = printer.write_int("maxPerStageDescriptorUniformBuffers", 4, indent, signed=False, big_endian=False)
+ maxPerStageDescriptorStorageBuffers = printer.write_int("maxPerStageDescriptorStorageBuffers", 4, indent, signed=False, big_endian=False)
+ maxPerStageDescriptorSampledImages = printer.write_int("maxPerStageDescriptorSampledImages", 4, indent, signed=False, big_endian=False)
+ maxPerStageDescriptorStorageImages = printer.write_int("maxPerStageDescriptorStorageImages", 4, indent, signed=False, big_endian=False)
+ maxPerStageDescriptorInputAttachments = printer.write_int("maxPerStageDescriptorInputAttachments", 4, indent, signed=False, big_endian=False)
+ maxPerStageResources = printer.write_int("maxPerStageResources", 4, indent, signed=False, big_endian=False)
+ maxDescriptorSetSamplers = printer.write_int("maxDescriptorSetSamplers", 4, indent, signed=False, big_endian=False)
+ maxDescriptorSetUniformBuffers = printer.write_int("maxDescriptorSetUniformBuffers", 4, indent, signed=False, big_endian=False)
+ maxDescriptorSetUniformBuffersDynamic = printer.write_int("maxDescriptorSetUniformBuffersDynamic", 4, indent, signed=False, big_endian=False)
+ maxDescriptorSetStorageBuffers = printer.write_int("maxDescriptorSetStorageBuffers", 4, indent, signed=False, big_endian=False)
+ maxDescriptorSetStorageBuffersDynamic = printer.write_int("maxDescriptorSetStorageBuffersDynamic", 4, indent, signed=False, big_endian=False)
+ maxDescriptorSetSampledImages = printer.write_int("maxDescriptorSetSampledImages", 4, indent, signed=False, big_endian=False)
+ maxDescriptorSetStorageImages = printer.write_int("maxDescriptorSetStorageImages", 4, indent, signed=False, big_endian=False)
+ maxDescriptorSetInputAttachments = printer.write_int("maxDescriptorSetInputAttachments", 4, indent, signed=False, big_endian=False)
+ maxVertexInputAttributes = printer.write_int("maxVertexInputAttributes", 4, indent, signed=False, big_endian=False)
+ maxVertexInputBindings = printer.write_int("maxVertexInputBindings", 4, indent, signed=False, big_endian=False)
+ maxVertexInputAttributeOffset = printer.write_int("maxVertexInputAttributeOffset", 4, indent, signed=False, big_endian=False)
+ maxVertexInputBindingStride = printer.write_int("maxVertexInputBindingStride", 4, indent, signed=False, big_endian=False)
+ maxVertexOutputComponents = printer.write_int("maxVertexOutputComponents", 4, indent, signed=False, big_endian=False)
+ maxTessellationGenerationLevel = printer.write_int("maxTessellationGenerationLevel", 4, indent, signed=False, big_endian=False)
+ maxTessellationPatchSize = printer.write_int("maxTessellationPatchSize", 4, indent, signed=False, big_endian=False)
+ maxTessellationControlPerVertexInputComponents = printer.write_int("maxTessellationControlPerVertexInputComponents", 4, indent, signed=False, big_endian=False)
+ maxTessellationControlPerVertexOutputComponents = printer.write_int("maxTessellationControlPerVertexOutputComponents", 4, indent, signed=False, big_endian=False)
+ maxTessellationControlPerPatchOutputComponents = printer.write_int("maxTessellationControlPerPatchOutputComponents", 4, indent, signed=False, big_endian=False)
+ maxTessellationControlTotalOutputComponents = printer.write_int("maxTessellationControlTotalOutputComponents", 4, indent, signed=False, big_endian=False)
+ maxTessellationEvaluationInputComponents = printer.write_int("maxTessellationEvaluationInputComponents", 4, indent, signed=False, big_endian=False)
+ maxTessellationEvaluationOutputComponents = printer.write_int("maxTessellationEvaluationOutputComponents", 4, indent, signed=False, big_endian=False)
+ maxGeometryShaderInvocations = printer.write_int("maxGeometryShaderInvocations", 4, indent, signed=False, big_endian=False)
+ maxGeometryInputComponents = printer.write_int("maxGeometryInputComponents", 4, indent, signed=False, big_endian=False)
+ maxGeometryOutputComponents = printer.write_int("maxGeometryOutputComponents", 4, indent, signed=False, big_endian=False)
+ maxGeometryOutputVertices = printer.write_int("maxGeometryOutputVertices", 4, indent, signed=False, big_endian=False)
+ maxGeometryTotalOutputComponents = printer.write_int("maxGeometryTotalOutputComponents", 4, indent, signed=False, big_endian=False)
+ maxFragmentInputComponents = printer.write_int("maxFragmentInputComponents", 4, indent, signed=False, big_endian=False)
+ maxFragmentOutputAttachments = printer.write_int("maxFragmentOutputAttachments", 4, indent, signed=False, big_endian=False)
+ maxFragmentDualSrcAttachments = printer.write_int("maxFragmentDualSrcAttachments", 4, indent, signed=False, big_endian=False)
+ maxFragmentCombinedOutputResources = printer.write_int("maxFragmentCombinedOutputResources", 4, indent, signed=False, big_endian=False)
+ maxComputeSharedMemorySize = printer.write_int("maxComputeSharedMemorySize", 4, indent, signed=False, big_endian=False)
+ printer.write_int("maxComputeWorkGroupCount", 4, indent, signed=False, count=3)
+ maxComputeWorkGroupInvocations = printer.write_int("maxComputeWorkGroupInvocations", 4, indent, signed=False, big_endian=False)
+ printer.write_int("maxComputeWorkGroupSize", 4, indent, signed=False, count=3)
+ subPixelPrecisionBits = printer.write_int("subPixelPrecisionBits", 4, indent, signed=False, big_endian=False)
+ subTexelPrecisionBits = printer.write_int("subTexelPrecisionBits", 4, indent, signed=False, big_endian=False)
+ mipmapPrecisionBits = printer.write_int("mipmapPrecisionBits", 4, indent, signed=False, big_endian=False)
+ maxDrawIndexedIndexValue = printer.write_int("maxDrawIndexedIndexValue", 4, indent, signed=False, big_endian=False)
+ maxDrawIndirectCount = printer.write_int("maxDrawIndirectCount", 4, indent, signed=False, big_endian=False)
+ printer.write_float("maxSamplerLodBias", indent)
+ printer.write_float("maxSamplerAnisotropy", indent)
+ maxViewports = printer.write_int("maxViewports", 4, indent, signed=False, big_endian=False)
+ printer.write_int("maxViewportDimensions", 4, indent, signed=False, count=2)
+ printer.write_float("viewportBoundsRange", indent, count=2)
+ viewportSubPixelBits = printer.write_int("viewportSubPixelBits", 4, indent, signed=False, big_endian=False)
+ minMemoryMapAlignment = printer.write_int("minMemoryMapAlignment", 8, indent, signed=False, big_endian=True)
+ minTexelBufferOffsetAlignment = printer.write_int("minTexelBufferOffsetAlignment", 8, indent, signed=False, big_endian=False)
+ minUniformBufferOffsetAlignment = printer.write_int("minUniformBufferOffsetAlignment", 8, indent, signed=False, big_endian=False)
+ minStorageBufferOffsetAlignment = printer.write_int("minStorageBufferOffsetAlignment", 8, indent, signed=False, big_endian=False)
+ minTexelOffset = printer.write_int("minTexelOffset", 4, indent, signed=True, big_endian=False)
+ maxTexelOffset = printer.write_int("maxTexelOffset", 4, indent, signed=False, big_endian=False)
+ minTexelGatherOffset = printer.write_int("minTexelGatherOffset", 4, indent, signed=True, big_endian=False)
+ maxTexelGatherOffset = printer.write_int("maxTexelGatherOffset", 4, indent, signed=False, big_endian=False)
+ printer.write_float("minInterpolationOffset", indent)
+ printer.write_float("maxInterpolationOffset", indent)
+ subPixelInterpolationOffsetBits = printer.write_int("subPixelInterpolationOffsetBits", 4, indent, signed=False, big_endian=False)
+ maxFramebufferWidth = printer.write_int("maxFramebufferWidth", 4, indent, signed=False, big_endian=False)
+ maxFramebufferHeight = printer.write_int("maxFramebufferHeight", 4, indent, signed=False, big_endian=False)
+ maxFramebufferLayers = printer.write_int("maxFramebufferLayers", 4, indent, signed=False, big_endian=False)
+ framebufferColorSampleCounts = printer.write_int("framebufferColorSampleCounts", 4, indent, signed=False, big_endian=False)
+ framebufferDepthSampleCounts = printer.write_int("framebufferDepthSampleCounts", 4, indent, signed=False, big_endian=False)
+ framebufferStencilSampleCounts = printer.write_int("framebufferStencilSampleCounts", 4, indent, signed=False, big_endian=False)
+ framebufferNoAttachmentsSampleCounts = printer.write_int("framebufferNoAttachmentsSampleCounts", 4, indent, signed=False, big_endian=False)
+ maxColorAttachments = printer.write_int("maxColorAttachments", 4, indent, signed=False, big_endian=False)
+ sampledImageColorSampleCounts = printer.write_int("sampledImageColorSampleCounts", 4, indent, signed=False, big_endian=False)
+ sampledImageIntegerSampleCounts = printer.write_int("sampledImageIntegerSampleCounts", 4, indent, signed=False, big_endian=False)
+ sampledImageDepthSampleCounts = printer.write_int("sampledImageDepthSampleCounts", 4, indent, signed=False, big_endian=False)
+ sampledImageStencilSampleCounts = printer.write_int("sampledImageStencilSampleCounts", 4, indent, signed=False, big_endian=False)
+ storageImageSampleCounts = printer.write_int("storageImageSampleCounts", 4, indent, signed=False, big_endian=False)
+ maxSampleMaskWords = printer.write_int("maxSampleMaskWords", 4, indent, signed=False, big_endian=False)
+ timestampComputeAndGraphics = printer.write_int("timestampComputeAndGraphics", 4, indent, signed=False, big_endian=False)
+ printer.write_float("timestampPeriod", indent)
+ maxClipDistances = printer.write_int("maxClipDistances", 4, indent, signed=False, big_endian=False)
+ maxCullDistances = printer.write_int("maxCullDistances", 4, indent, signed=False, big_endian=False)
+ maxCombinedClipAndCullDistances = printer.write_int("maxCombinedClipAndCullDistances", 4, indent, signed=False, big_endian=False)
+ discreteQueuePriorities = printer.write_int("discreteQueuePriorities", 4, indent, signed=False, big_endian=False)
+ printer.write_float("pointSizeRange", indent, count=2)
+ printer.write_float("lineWidthRange", indent, count=2)
+ printer.write_float("pointSizeGranularity", indent)
+ printer.write_float("lineWidthGranularity", indent)
+ strictLines = printer.write_int("strictLines", 4, indent, signed=False, big_endian=False)
+ standardSampleLocations = printer.write_int("standardSampleLocations", 4, indent, signed=False, big_endian=False)
+ optimalBufferCopyOffsetAlignment = printer.write_int("optimalBufferCopyOffsetAlignment", 8, indent, signed=False, big_endian=False)
+ optimalBufferCopyRowPitchAlignment = printer.write_int("optimalBufferCopyRowPitchAlignment", 8, indent, signed=False, big_endian=False)
+ nonCoherentAtomSize = printer.write_int("nonCoherentAtomSize", 8, indent, signed=False, big_endian=False)
+
+def struct_VkPhysicalDeviceProperties(printer, indent: int):
+ apiVersion = printer.write_int("apiVersion", 4, indent, signed=False, big_endian=False)
+ driverVersion = printer.write_int("driverVersion", 4, indent, signed=False, big_endian=False)
+ vendorID = printer.write_int("vendorID", 4, indent, signed=False, big_endian=False)
+ deviceID = printer.write_int("deviceID", 4, indent, signed=False, big_endian=False)
+ printer.write_enum("deviceType", VkPhysicalDeviceType, indent)
+ printer.write_string("deviceName", 256, indent)
+ printer.write_int("pipelineCacheUUID", 1, indent, signed=False, count=16)
+ printer.write_struct("limits", struct_VkPhysicalDeviceLimits, False, None, indent)
+ printer.write_struct("sparseProperties", struct_VkPhysicalDeviceSparseProperties, False, None, indent)
+
+def struct_VkPhysicalDeviceProperties2(printer, indent: int):
+ printer.write_stype_and_pnext("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2", indent)
+ printer.write_struct("properties", struct_VkPhysicalDeviceProperties, False, None, indent)
+
+def struct_VkPhysicalDeviceSparseProperties(printer, indent: int):
+ residencyStandard2DBlockShape = printer.write_int("residencyStandard2DBlockShape", 4, indent, signed=False, big_endian=False)
+ residencyStandard2DMultisampleBlockShape = printer.write_int("residencyStandard2DMultisampleBlockShape", 4, indent, signed=False, big_endian=False)
+ residencyStandard3DBlockShape = printer.write_int("residencyStandard3DBlockShape", 4, indent, signed=False, big_endian=False)
+ residencyAlignedMipSize = printer.write_int("residencyAlignedMipSize", 4, indent, signed=False, big_endian=False)
+ residencyNonResidentStrict = printer.write_int("residencyNonResidentStrict", 4, indent, signed=False, big_endian=False)
+
+def struct_VkPipelineCacheCreateInfo(printer, indent: int):
+ printer.write_stype_and_pnext("VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO", indent)
+ flags = printer.write_int("flags", 4, indent, signed=False, big_endian=False)
+ initialDataSize = printer.write_int("initialDataSize", 8, indent, signed=False, big_endian=True)
+ pInitialData = printer.write_int("pInitialData", 8, indent, optional=False, count=initialDataSize, big_endian=False)
+
+def struct_VkPipelineColorBlendAttachmentState(printer, indent: int):
+ blendEnable = printer.write_int("blendEnable", 4, indent, signed=False, big_endian=False)
+ printer.write_enum("srcColorBlendFactor", VkBlendFactor, indent)
+ printer.write_enum("dstColorBlendFactor", VkBlendFactor, indent)
+ printer.write_enum("colorBlendOp", VkBlendOp, indent)
+ printer.write_enum("srcAlphaBlendFactor", VkBlendFactor, indent)
+ printer.write_enum("dstAlphaBlendFactor", VkBlendFactor, indent)
+ printer.write_enum("alphaBlendOp", VkBlendOp, indent)
+ colorWriteMask = printer.write_int("colorWriteMask", 4, indent, signed=False, big_endian=False)
+
+def struct_VkPipelineColorBlendStateCreateInfo(printer, indent: int):
+ printer.write_stype_and_pnext("VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO", indent)
+ flags = printer.write_int("flags", 4, indent, signed=False, big_endian=False)
+ logicOpEnable = printer.write_int("logicOpEnable", 4, indent, signed=False, big_endian=False)
+ printer.write_enum("logicOp", VkLogicOp, indent)
+ attachmentCount = printer.write_int("attachmentCount", 4, indent, signed=False, big_endian=False)
+ printer.write_struct("pAttachments", struct_VkPipelineColorBlendAttachmentState, False, attachmentCount, indent)
+ printer.write_float("blendConstants", indent, count=4)
+
+def struct_VkPipelineDepthStencilStateCreateInfo(printer, indent: int):
+ printer.write_stype_and_pnext("VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO", indent)
+ flags = printer.write_int("flags", 4, indent, signed=False, big_endian=False)
+ depthTestEnable = printer.write_int("depthTestEnable", 4, indent, signed=False, big_endian=False)
+ depthWriteEnable = printer.write_int("depthWriteEnable", 4, indent, signed=False, big_endian=False)
+ printer.write_enum("depthCompareOp", VkCompareOp, indent)
+ depthBoundsTestEnable = printer.write_int("depthBoundsTestEnable", 4, indent, signed=False, big_endian=False)
+ stencilTestEnable = printer.write_int("stencilTestEnable", 4, indent, signed=False, big_endian=False)
+ printer.write_struct("front", struct_VkStencilOpState, False, None, indent)
+ printer.write_struct("back", struct_VkStencilOpState, False, None, indent)
+ printer.write_float("minDepthBounds", indent)
+ printer.write_float("maxDepthBounds", indent)
+
+def struct_VkPipelineDynamicStateCreateInfo(printer, indent: int):
+ printer.write_stype_and_pnext("VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO", indent)
+ flags = printer.write_int("flags", 4, indent, signed=False, big_endian=False)
+ dynamicStateCount = printer.write_int("dynamicStateCount", 4, indent, signed=False, big_endian=False)
+ printer.write_enum("pDynamicStates", VkDynamicState, indent)
+
+def struct_VkPipelineInputAssemblyStateCreateInfo(printer, indent: int):
+ printer.write_stype_and_pnext("VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO", indent)
+ flags = printer.write_int("flags", 4, indent, signed=False, big_endian=False)
+ printer.write_enum("topology", VkPrimitiveTopology, indent)
+ primitiveRestartEnable = printer.write_int("primitiveRestartEnable", 4, indent, signed=False, big_endian=False)
+
+def struct_VkPipelineMultisampleStateCreateInfo(printer, indent: int):
+ printer.write_stype_and_pnext("VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO", indent)
+ flags = printer.write_int("flags", 4, indent, signed=False, big_endian=False)
+ printer.write_enum("rasterizationSamples", VkSampleCountFlagBits, indent)
+ sampleShadingEnable = printer.write_int("sampleShadingEnable", 4, indent, signed=False, big_endian=False)
+ printer.write_float("minSampleShading", indent)
+ pSampleMask = printer.write_int("pSampleMask", 8, indent, optional=True, count=int(rasterizationSamples / 32), big_endian=False)
+ alphaToCoverageEnable = printer.write_int("alphaToCoverageEnable", 4, indent, signed=False, big_endian=False)
+ alphaToOneEnable = printer.write_int("alphaToOneEnable", 4, indent, signed=False, big_endian=False)
+
+def struct_VkPipelineRasterizationStateCreateInfo(printer, indent: int):
+ printer.write_stype_and_pnext("VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO", indent)
+ flags = printer.write_int("flags", 4, indent, signed=False, big_endian=False)
+ depthClampEnable = printer.write_int("depthClampEnable", 4, indent, signed=False, big_endian=False)
+ rasterizerDiscardEnable = printer.write_int("rasterizerDiscardEnable", 4, indent, signed=False, big_endian=False)
+ printer.write_enum("polygonMode", VkPolygonMode, indent)
+ cullMode = printer.write_int("cullMode", 4, indent, signed=False, big_endian=False)
+ printer.write_enum("frontFace", VkFrontFace, indent)
+ depthBiasEnable = printer.write_int("depthBiasEnable", 4, indent, signed=False, big_endian=False)
+ printer.write_float("depthBiasConstantFactor", indent)
+ printer.write_float("depthBiasClamp", indent)
+ printer.write_float("depthBiasSlopeFactor", indent)
+ printer.write_float("lineWidth", indent)
+
+def struct_VkPipelineShaderStageCreateInfo(printer, indent: int):
+ printer.write_stype_and_pnext("VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO", indent)
+ flags = printer.write_int("flags", 4, indent, signed=False, big_endian=False)
+ printer.write_enum("stage", VkShaderStageFlagBits, indent)
+ module = printer.write_int("module", 8, indent, signed=False, big_endian=False)
+ printer.write_string("pName", None, indent)
+ printer.write_struct("pSpecializationInfo", struct_VkSpecializationInfo, True, None, indent)
+
+def struct_VkPipelineTessellationStateCreateInfo(printer, indent: int):
+ printer.write_stype_and_pnext("VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO", indent)
+ flags = printer.write_int("flags", 4, indent, signed=False, big_endian=False)
+ patchControlPoints = printer.write_int("patchControlPoints", 4, indent, signed=False, big_endian=False)
+
+def struct_VkPipelineVertexInputStateCreateInfo(printer, indent: int):
+ printer.write_stype_and_pnext("VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO", indent)
+ flags = printer.write_int("flags", 4, indent, signed=False, big_endian=False)
+ vertexBindingDescriptionCount = printer.write_int("vertexBindingDescriptionCount", 4, indent, signed=False, big_endian=False)
+ printer.write_struct("pVertexBindingDescriptions", struct_VkVertexInputBindingDescription, False, vertexBindingDescriptionCount, indent)
+ vertexAttributeDescriptionCount = printer.write_int("vertexAttributeDescriptionCount", 4, indent, signed=False, big_endian=False)
+ printer.write_struct("pVertexAttributeDescriptions", struct_VkVertexInputAttributeDescription, False, vertexAttributeDescriptionCount, indent)
+
+def struct_VkPipelineViewportStateCreateInfo(printer, indent: int):
+ printer.write_stype_and_pnext("VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO", indent)
+ flags = printer.write_int("flags", 4, indent, signed=False, big_endian=False)
+ viewportCount = printer.write_int("viewportCount", 4, indent, signed=False, big_endian=False)
+ printer.write_struct("pViewports", struct_VkViewport, True, viewportCount, indent)
+ scissorCount = printer.write_int("scissorCount", 4, indent, signed=False, big_endian=False)
+ printer.write_struct("pScissors", struct_VkRect2D, True, scissorCount, indent)
+
+def struct_VkRect2D(printer, indent: int):
+ printer.write_struct("offset", struct_VkOffset2D, False, None, indent)
+ printer.write_struct("extent", struct_VkExtent2D, False, None, indent)
+
+def struct_VkRenderPassBeginInfo(printer, indent: int):
+ printer.write_stype_and_pnext("VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO", indent)
+ renderPass = printer.write_int("renderPass", 8, indent, signed=False, big_endian=False)
+ framebuffer = printer.write_int("framebuffer", 8, indent, signed=False, big_endian=False)
+ printer.write_struct("renderArea", struct_VkRect2D, False, None, indent)
+ clearValueCount = printer.write_int("clearValueCount", 4, indent, signed=False, big_endian=False)
+ printer.write_struct("pClearValues", struct_VkClearValue, True, clearValueCount, indent)
+
+def struct_VkRenderPassCreateInfo(printer, indent: int):
+ printer.write_stype_and_pnext("VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO", indent)
+ flags = printer.write_int("flags", 4, indent, signed=False, big_endian=False)
+ attachmentCount = printer.write_int("attachmentCount", 4, indent, signed=False, big_endian=False)
+ printer.write_struct("pAttachments", struct_VkAttachmentDescription, False, attachmentCount, indent)
+ subpassCount = printer.write_int("subpassCount", 4, indent, signed=False, big_endian=False)
+ printer.write_struct("pSubpasses", struct_VkSubpassDescription, False, subpassCount, indent)
+ dependencyCount = printer.write_int("dependencyCount", 4, indent, signed=False, big_endian=False)
+ printer.write_struct("pDependencies", struct_VkSubpassDependency, False, dependencyCount, indent)
+
+def struct_VkSamplerCreateInfo(printer, indent: int):
+ printer.write_stype_and_pnext("VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO", indent)
+ flags = printer.write_int("flags", 4, indent, signed=False, big_endian=False)
+ printer.write_enum("magFilter", VkFilter, indent)
+ printer.write_enum("minFilter", VkFilter, indent)
+ printer.write_enum("mipmapMode", VkSamplerMipmapMode, indent)
+ printer.write_enum("addressModeU", VkSamplerAddressMode, indent)
+ printer.write_enum("addressModeV", VkSamplerAddressMode, indent)
+ printer.write_enum("addressModeW", VkSamplerAddressMode, indent)
+ printer.write_float("mipLodBias", indent)
+ anisotropyEnable = printer.write_int("anisotropyEnable", 4, indent, signed=False, big_endian=False)
+ printer.write_float("maxAnisotropy", indent)
+ compareEnable = printer.write_int("compareEnable", 4, indent, signed=False, big_endian=False)
+ printer.write_enum("compareOp", VkCompareOp, indent)
+ printer.write_float("minLod", indent)
+ printer.write_float("maxLod", indent)
+ printer.write_enum("borderColor", VkBorderColor, indent)
+ unnormalizedCoordinates = printer.write_int("unnormalizedCoordinates", 4, indent, signed=False, big_endian=False)
+
+def struct_VkSemaphoreCreateInfo(printer, indent: int):
+ printer.write_stype_and_pnext("VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO", indent)
+ flags = printer.write_int("flags", 4, indent, signed=False, big_endian=False)
+
+def struct_VkShaderModuleCreateInfo(printer, indent: int):
+ printer.write_stype_and_pnext("VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO", indent)
+ flags = printer.write_int("flags", 4, indent, signed=False, big_endian=False)
+ codeSize = printer.write_int("codeSize", 8, indent, signed=False, big_endian=True)
+ pCode = printer.write_int("pCode", 4, indent, optional=False, count=int(codeSize / 4), big_endian=False)
+
+def struct_VkSpecializationInfo(printer, indent: int):
+ mapEntryCount = printer.write_int("mapEntryCount", 4, indent, signed=False, big_endian=False)
+ printer.write_struct("pMapEntries", struct_VkSpecializationMapEntry, False, mapEntryCount, indent)
+ dataSize = printer.write_int("dataSize", 8, indent, signed=False, big_endian=True)
+ pData = printer.write_int("pData", 8, indent, optional=False, count=dataSize, big_endian=False)
+
+def struct_VkSpecializationMapEntry(printer, indent: int):
+ constantID = printer.write_int("constantID", 4, indent, signed=False, big_endian=False)
+ offset = printer.write_int("offset", 4, indent, signed=False, big_endian=False)
+ size = printer.write_int("size", 8, indent, signed=False, big_endian=True)
+
+def struct_VkStencilOpState(printer, indent: int):
+ printer.write_enum("failOp", VkStencilOp, indent)
+ printer.write_enum("passOp", VkStencilOp, indent)
+ printer.write_enum("depthFailOp", VkStencilOp, indent)
+ printer.write_enum("compareOp", VkCompareOp, indent)
+ compareMask = printer.write_int("compareMask", 4, indent, signed=False, big_endian=False)
+ writeMask = printer.write_int("writeMask", 4, indent, signed=False, big_endian=False)
+ reference = printer.write_int("reference", 4, indent, signed=False, big_endian=False)
+
+def struct_VkSubmitInfo(printer, indent: int):
+ printer.write_stype_and_pnext("VK_STRUCTURE_TYPE_SUBMIT_INFO", indent)
+ waitSemaphoreCount = printer.write_int("waitSemaphoreCount", 4, indent, signed=False, big_endian=False)
+ pWaitSemaphores = printer.write_int("pWaitSemaphores", 8, indent, optional=False, count=waitSemaphoreCount, big_endian=False)
+ pWaitDstStageMask = printer.write_int("pWaitDstStageMask", 4, indent, optional=False, count=waitSemaphoreCount, big_endian=False)
+ commandBufferCount = printer.write_int("commandBufferCount", 4, indent, signed=False, big_endian=False)
+ pCommandBuffers = printer.write_int("pCommandBuffers", 8, indent, optional=False, count=commandBufferCount, big_endian=False)
+ signalSemaphoreCount = printer.write_int("signalSemaphoreCount", 4, indent, signed=False, big_endian=False)
+ pSignalSemaphores = printer.write_int("pSignalSemaphores", 8, indent, optional=False, count=signalSemaphoreCount, big_endian=False)
+
+def struct_VkSubpassDependency(printer, indent: int):
+ srcSubpass = printer.write_int("srcSubpass", 4, indent, signed=False, big_endian=False)
+ dstSubpass = printer.write_int("dstSubpass", 4, indent, signed=False, big_endian=False)
+ srcStageMask = printer.write_int("srcStageMask", 4, indent, signed=False, big_endian=False)
+ dstStageMask = printer.write_int("dstStageMask", 4, indent, signed=False, big_endian=False)
+ srcAccessMask = printer.write_int("srcAccessMask", 4, indent, signed=False, big_endian=False)
+ dstAccessMask = printer.write_int("dstAccessMask", 4, indent, signed=False, big_endian=False)
+ dependencyFlags = printer.write_int("dependencyFlags", 4, indent, signed=False, big_endian=False)
+
+def struct_VkSubpassDescription(printer, indent: int):
+ flags = printer.write_int("flags", 4, indent, signed=False, big_endian=False)
+ printer.write_enum("pipelineBindPoint", VkPipelineBindPoint, indent)
+ inputAttachmentCount = printer.write_int("inputAttachmentCount", 4, indent, signed=False, big_endian=False)
+ printer.write_struct("pInputAttachments", struct_VkAttachmentReference, False, inputAttachmentCount, indent)
+ colorAttachmentCount = printer.write_int("colorAttachmentCount", 4, indent, signed=False, big_endian=False)
+ printer.write_struct("pColorAttachments", struct_VkAttachmentReference, False, colorAttachmentCount, indent)
+ printer.write_struct("pResolveAttachments", struct_VkAttachmentReference, True, colorAttachmentCount, indent)
+ printer.write_struct("pDepthStencilAttachment", struct_VkAttachmentReference, True, None, indent)
+ preserveAttachmentCount = printer.write_int("preserveAttachmentCount", 4, indent, signed=False, big_endian=False)
+ pPreserveAttachments = printer.write_int("pPreserveAttachments", 4, indent, optional=False, count=preserveAttachmentCount, big_endian=False)
+
+def struct_VkVertexInputAttributeDescription(printer, indent: int):
+ location = printer.write_int("location", 4, indent, signed=False, big_endian=False)
+ binding = printer.write_int("binding", 4, indent, signed=False, big_endian=False)
+ printer.write_enum("format", VkFormat, indent)
+ offset = printer.write_int("offset", 4, indent, signed=False, big_endian=False)
+
+def struct_VkVertexInputBindingDescription(printer, indent: int):
+ binding = printer.write_int("binding", 4, indent, signed=False, big_endian=False)
+ stride = printer.write_int("stride", 4, indent, signed=False, big_endian=False)
+ printer.write_enum("inputRate", VkVertexInputRate, indent)
+
+def struct_VkViewport(printer, indent: int):
+ printer.write_float("x", indent)
+ printer.write_float("y", indent)
+ printer.write_float("width", indent)
+ printer.write_float("height", indent)
+ printer.write_float("minDepth", indent)
+ printer.write_float("maxDepth", indent)
+
+def struct_VkWriteDescriptorSet(printer, indent: int):
+ printer.write_stype_and_pnext("VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET", indent)
+ dstSet = printer.write_int("dstSet", 8, indent, signed=False, big_endian=False)
+ dstBinding = printer.write_int("dstBinding", 4, indent, signed=False, big_endian=False)
+ dstArrayElement = printer.write_int("dstArrayElement", 4, indent, signed=False, big_endian=False)
+ descriptorCount = printer.write_int("descriptorCount", 4, indent, signed=False, big_endian=False)
+ printer.write_enum("descriptorType", VkDescriptorType, indent)
+ printer.write_struct("pImageInfo", struct_VkDescriptorImageInfo, True, descriptorCount, indent)
+ printer.write_struct("pBufferInfo", struct_VkDescriptorBufferInfo, True, descriptorCount, indent)
+ pTexelBufferView = printer.write_int("pTexelBufferView", 8, indent, optional=True, count=descriptorCount, big_endian=False)
+
+VkAttachmentLoadOp = {
+ 0: "VK_ATTACHMENT_LOAD_OP_LOAD",
+ 1: "VK_ATTACHMENT_LOAD_OP_CLEAR",
+ 2: "VK_ATTACHMENT_LOAD_OP_DONT_CARE",
+ 1000400000: "VK_ATTACHMENT_LOAD_OP_NONE_EXT",
+}
+
+VkAttachmentStoreOp = {
+ 0: "VK_ATTACHMENT_STORE_OP_STORE",
+ 1: "VK_ATTACHMENT_STORE_OP_DONT_CARE",
+ 1000301000: "VK_ATTACHMENT_STORE_OP_NONE",
+}
+
+VkBlendFactor = {
+ 0: "VK_BLEND_FACTOR_ZERO",
+ 1: "VK_BLEND_FACTOR_ONE",
+ 2: "VK_BLEND_FACTOR_SRC_COLOR",
+ 3: "VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR",
+ 4: "VK_BLEND_FACTOR_DST_COLOR",
+ 5: "VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR",
+ 6: "VK_BLEND_FACTOR_SRC_ALPHA",
+ 7: "VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA",
+ 8: "VK_BLEND_FACTOR_DST_ALPHA",
+ 9: "VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA",
+ 10: "VK_BLEND_FACTOR_CONSTANT_COLOR",
+ 11: "VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR",
+ 12: "VK_BLEND_FACTOR_CONSTANT_ALPHA",
+ 13: "VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA",
+ 14: "VK_BLEND_FACTOR_SRC_ALPHA_SATURATE",
+ 15: "VK_BLEND_FACTOR_SRC1_COLOR",
+ 16: "VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR",
+ 17: "VK_BLEND_FACTOR_SRC1_ALPHA",
+ 18: "VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA",
+}
+
+VkBlendOp = {
+ 0: "VK_BLEND_OP_ADD",
+ 1: "VK_BLEND_OP_SUBTRACT",
+ 2: "VK_BLEND_OP_REVERSE_SUBTRACT",
+ 3: "VK_BLEND_OP_MIN",
+ 4: "VK_BLEND_OP_MAX",
+ 1000148000: "VK_BLEND_OP_ZERO_EXT",
+ 1000148001: "VK_BLEND_OP_SRC_EXT",
+ 1000148002: "VK_BLEND_OP_DST_EXT",
+ 1000148003: "VK_BLEND_OP_SRC_OVER_EXT",
+ 1000148004: "VK_BLEND_OP_DST_OVER_EXT",
+ 1000148005: "VK_BLEND_OP_SRC_IN_EXT",
+ 1000148006: "VK_BLEND_OP_DST_IN_EXT",
+ 1000148007: "VK_BLEND_OP_SRC_OUT_EXT",
+ 1000148008: "VK_BLEND_OP_DST_OUT_EXT",
+ 1000148009: "VK_BLEND_OP_SRC_ATOP_EXT",
+ 1000148010: "VK_BLEND_OP_DST_ATOP_EXT",
+ 1000148011: "VK_BLEND_OP_XOR_EXT",
+ 1000148012: "VK_BLEND_OP_MULTIPLY_EXT",
+ 1000148013: "VK_BLEND_OP_SCREEN_EXT",
+ 1000148014: "VK_BLEND_OP_OVERLAY_EXT",
+ 1000148015: "VK_BLEND_OP_DARKEN_EXT",
+ 1000148016: "VK_BLEND_OP_LIGHTEN_EXT",
+ 1000148017: "VK_BLEND_OP_COLORDODGE_EXT",
+ 1000148018: "VK_BLEND_OP_COLORBURN_EXT",
+ 1000148019: "VK_BLEND_OP_HARDLIGHT_EXT",
+ 1000148020: "VK_BLEND_OP_SOFTLIGHT_EXT",
+ 1000148021: "VK_BLEND_OP_DIFFERENCE_EXT",
+ 1000148022: "VK_BLEND_OP_EXCLUSION_EXT",
+ 1000148023: "VK_BLEND_OP_INVERT_EXT",
+ 1000148024: "VK_BLEND_OP_INVERT_RGB_EXT",
+ 1000148025: "VK_BLEND_OP_LINEARDODGE_EXT",
+ 1000148026: "VK_BLEND_OP_LINEARBURN_EXT",
+ 1000148027: "VK_BLEND_OP_VIVIDLIGHT_EXT",
+ 1000148028: "VK_BLEND_OP_LINEARLIGHT_EXT",
+ 1000148029: "VK_BLEND_OP_PINLIGHT_EXT",
+ 1000148030: "VK_BLEND_OP_HARDMIX_EXT",
+ 1000148031: "VK_BLEND_OP_HSL_HUE_EXT",
+ 1000148032: "VK_BLEND_OP_HSL_SATURATION_EXT",
+ 1000148033: "VK_BLEND_OP_HSL_COLOR_EXT",
+ 1000148034: "VK_BLEND_OP_HSL_LUMINOSITY_EXT",
+ 1000148035: "VK_BLEND_OP_PLUS_EXT",
+ 1000148036: "VK_BLEND_OP_PLUS_CLAMPED_EXT",
+ 1000148037: "VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT",
+ 1000148038: "VK_BLEND_OP_PLUS_DARKER_EXT",
+ 1000148039: "VK_BLEND_OP_MINUS_EXT",
+ 1000148040: "VK_BLEND_OP_MINUS_CLAMPED_EXT",
+ 1000148041: "VK_BLEND_OP_CONTRAST_EXT",
+ 1000148042: "VK_BLEND_OP_INVERT_OVG_EXT",
+ 1000148043: "VK_BLEND_OP_RED_EXT",
+ 1000148044: "VK_BLEND_OP_GREEN_EXT",
+ 1000148045: "VK_BLEND_OP_BLUE_EXT",
+}
+
+VkBorderColor = {
+ 0: "VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK",
+ 1: "VK_BORDER_COLOR_INT_TRANSPARENT_BLACK",
+ 2: "VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK",
+ 3: "VK_BORDER_COLOR_INT_OPAQUE_BLACK",
+ 4: "VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE",
+ 5: "VK_BORDER_COLOR_INT_OPAQUE_WHITE",
+ 1000287003: "VK_BORDER_COLOR_FLOAT_CUSTOM_EXT",
+ 1000287004: "VK_BORDER_COLOR_INT_CUSTOM_EXT",
+}
+
+VkCompareOp = {
+ 0: "VK_COMPARE_OP_NEVER",
+ 1: "VK_COMPARE_OP_LESS",
+ 2: "VK_COMPARE_OP_EQUAL",
+ 3: "VK_COMPARE_OP_LESS_OR_EQUAL",
+ 4: "VK_COMPARE_OP_GREATER",
+ 5: "VK_COMPARE_OP_NOT_EQUAL",
+ 6: "VK_COMPARE_OP_GREATER_OR_EQUAL",
+ 7: "VK_COMPARE_OP_ALWAYS",
+}
+
+VkComponentSwizzle = {
+ 0: "VK_COMPONENT_SWIZZLE_IDENTITY",
+ 1: "VK_COMPONENT_SWIZZLE_ZERO",
+ 2: "VK_COMPONENT_SWIZZLE_ONE",
+ 3: "VK_COMPONENT_SWIZZLE_R",
+ 4: "VK_COMPONENT_SWIZZLE_G",
+ 5: "VK_COMPONENT_SWIZZLE_B",
+ 6: "VK_COMPONENT_SWIZZLE_A",
+}
+
+VkDescriptorType = {
+ 0: "VK_DESCRIPTOR_TYPE_SAMPLER",
+ 1: "VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER",
+ 2: "VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE",
+ 3: "VK_DESCRIPTOR_TYPE_STORAGE_IMAGE",
+ 4: "VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER",
+ 5: "VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER",
+ 6: "VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER",
+ 7: "VK_DESCRIPTOR_TYPE_STORAGE_BUFFER",
+ 8: "VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC",
+ 9: "VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC",
+ 10: "VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT",
+ 1000138000: "VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK",
+ 1000150000: "VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR",
+ 1000165000: "VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV",
+ 1000440000: "VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM",
+ 1000440001: "VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM",
+ 1000351000: "VK_DESCRIPTOR_TYPE_MUTABLE_EXT",
+}
+
+VkDynamicState = {
+ 0: "VK_DYNAMIC_STATE_VIEWPORT",
+ 1: "VK_DYNAMIC_STATE_SCISSOR",
+ 2: "VK_DYNAMIC_STATE_LINE_WIDTH",
+ 3: "VK_DYNAMIC_STATE_DEPTH_BIAS",
+ 4: "VK_DYNAMIC_STATE_BLEND_CONSTANTS",
+ 5: "VK_DYNAMIC_STATE_DEPTH_BOUNDS",
+ 6: "VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK",
+ 7: "VK_DYNAMIC_STATE_STENCIL_WRITE_MASK",
+ 8: "VK_DYNAMIC_STATE_STENCIL_REFERENCE",
+ 1000267000: "VK_DYNAMIC_STATE_CULL_MODE",
+ 1000267001: "VK_DYNAMIC_STATE_FRONT_FACE",
+ 1000267002: "VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY",
+ 1000267003: "VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT",
+ 1000267004: "VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT",
+ 1000267005: "VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE",
+ 1000267006: "VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE",
+ 1000267007: "VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE",
+ 1000267008: "VK_DYNAMIC_STATE_DEPTH_COMPARE_OP",
+ 1000267009: "VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE",
+ 1000267010: "VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE",
+ 1000267011: "VK_DYNAMIC_STATE_STENCIL_OP",
+ 1000377001: "VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE",
+ 1000377002: "VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE",
+ 1000377004: "VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE",
+ 1000087000: "VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV",
+ 1000099000: "VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT",
+ 1000099001: "VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT",
+ 1000099002: "VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT",
+ 1000143000: "VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT",
+ 1000347000: "VK_DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR",
+ 1000164004: "VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV",
+ 1000164006: "VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV",
+ 1000205000: "VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV",
+ 1000205001: "VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV",
+ 1000226000: "VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR",
+ 1000259000: "VK_DYNAMIC_STATE_LINE_STIPPLE_EXT",
+ 1000352000: "VK_DYNAMIC_STATE_VERTEX_INPUT_EXT",
+ 1000377000: "VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT",
+ 1000377003: "VK_DYNAMIC_STATE_LOGIC_OP_EXT",
+ 1000381000: "VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT",
+ 1000455002: "VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT",
+ 1000455003: "VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT",
+ 1000455004: "VK_DYNAMIC_STATE_POLYGON_MODE_EXT",
+ 1000455005: "VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT",
+ 1000455006: "VK_DYNAMIC_STATE_SAMPLE_MASK_EXT",
+ 1000455007: "VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT",
+ 1000455008: "VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT",
+ 1000455009: "VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT",
+ 1000455010: "VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT",
+ 1000455011: "VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT",
+ 1000455012: "VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT",
+ 1000455013: "VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT",
+ 1000455014: "VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT",
+ 1000455015: "VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT",
+ 1000455016: "VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT",
+ 1000455017: "VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT",
+ 1000455018: "VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT",
+ 1000455019: "VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT",
+ 1000455020: "VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT",
+ 1000455021: "VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT",
+ 1000455022: "VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT",
+ 1000455023: "VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV",
+ 1000455024: "VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV",
+ 1000455025: "VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV",
+ 1000455026: "VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV",
+ 1000455027: "VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV",
+ 1000455028: "VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV",
+ 1000455029: "VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV",
+ 1000455030: "VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV",
+ 1000455031: "VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV",
+ 1000455032: "VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV",
+ 1000524000: "VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT",
+}
+
+VkFilter = {
+ 0: "VK_FILTER_NEAREST",
+ 1: "VK_FILTER_LINEAR",
+ 1000015000: "VK_FILTER_CUBIC_EXT",
+}
+
+VkFormat = {
+ 0: "VK_FORMAT_UNDEFINED",
+ 1: "VK_FORMAT_R4G4_UNORM_PACK8",
+ 2: "VK_FORMAT_R4G4B4A4_UNORM_PACK16",
+ 3: "VK_FORMAT_B4G4R4A4_UNORM_PACK16",
+ 4: "VK_FORMAT_R5G6B5_UNORM_PACK16",
+ 5: "VK_FORMAT_B5G6R5_UNORM_PACK16",
+ 6: "VK_FORMAT_R5G5B5A1_UNORM_PACK16",
+ 7: "VK_FORMAT_B5G5R5A1_UNORM_PACK16",
+ 8: "VK_FORMAT_A1R5G5B5_UNORM_PACK16",
+ 9: "VK_FORMAT_R8_UNORM",
+ 10: "VK_FORMAT_R8_SNORM",
+ 11: "VK_FORMAT_R8_USCALED",
+ 12: "VK_FORMAT_R8_SSCALED",
+ 13: "VK_FORMAT_R8_UINT",
+ 14: "VK_FORMAT_R8_SINT",
+ 15: "VK_FORMAT_R8_SRGB",
+ 16: "VK_FORMAT_R8G8_UNORM",
+ 17: "VK_FORMAT_R8G8_SNORM",
+ 18: "VK_FORMAT_R8G8_USCALED",
+ 19: "VK_FORMAT_R8G8_SSCALED",
+ 20: "VK_FORMAT_R8G8_UINT",
+ 21: "VK_FORMAT_R8G8_SINT",
+ 22: "VK_FORMAT_R8G8_SRGB",
+ 23: "VK_FORMAT_R8G8B8_UNORM",
+ 24: "VK_FORMAT_R8G8B8_SNORM",
+ 25: "VK_FORMAT_R8G8B8_USCALED",
+ 26: "VK_FORMAT_R8G8B8_SSCALED",
+ 27: "VK_FORMAT_R8G8B8_UINT",
+ 28: "VK_FORMAT_R8G8B8_SINT",
+ 29: "VK_FORMAT_R8G8B8_SRGB",
+ 30: "VK_FORMAT_B8G8R8_UNORM",
+ 31: "VK_FORMAT_B8G8R8_SNORM",
+ 32: "VK_FORMAT_B8G8R8_USCALED",
+ 33: "VK_FORMAT_B8G8R8_SSCALED",
+ 34: "VK_FORMAT_B8G8R8_UINT",
+ 35: "VK_FORMAT_B8G8R8_SINT",
+ 36: "VK_FORMAT_B8G8R8_SRGB",
+ 37: "VK_FORMAT_R8G8B8A8_UNORM",
+ 38: "VK_FORMAT_R8G8B8A8_SNORM",
+ 39: "VK_FORMAT_R8G8B8A8_USCALED",
+ 40: "VK_FORMAT_R8G8B8A8_SSCALED",
+ 41: "VK_FORMAT_R8G8B8A8_UINT",
+ 42: "VK_FORMAT_R8G8B8A8_SINT",
+ 43: "VK_FORMAT_R8G8B8A8_SRGB",
+ 44: "VK_FORMAT_B8G8R8A8_UNORM",
+ 45: "VK_FORMAT_B8G8R8A8_SNORM",
+ 46: "VK_FORMAT_B8G8R8A8_USCALED",
+ 47: "VK_FORMAT_B8G8R8A8_SSCALED",
+ 48: "VK_FORMAT_B8G8R8A8_UINT",
+ 49: "VK_FORMAT_B8G8R8A8_SINT",
+ 50: "VK_FORMAT_B8G8R8A8_SRGB",
+ 51: "VK_FORMAT_A8B8G8R8_UNORM_PACK32",
+ 52: "VK_FORMAT_A8B8G8R8_SNORM_PACK32",
+ 53: "VK_FORMAT_A8B8G8R8_USCALED_PACK32",
+ 54: "VK_FORMAT_A8B8G8R8_SSCALED_PACK32",
+ 55: "VK_FORMAT_A8B8G8R8_UINT_PACK32",
+ 56: "VK_FORMAT_A8B8G8R8_SINT_PACK32",
+ 57: "VK_FORMAT_A8B8G8R8_SRGB_PACK32",
+ 58: "VK_FORMAT_A2R10G10B10_UNORM_PACK32",
+ 59: "VK_FORMAT_A2R10G10B10_SNORM_PACK32",
+ 60: "VK_FORMAT_A2R10G10B10_USCALED_PACK32",
+ 61: "VK_FORMAT_A2R10G10B10_SSCALED_PACK32",
+ 62: "VK_FORMAT_A2R10G10B10_UINT_PACK32",
+ 63: "VK_FORMAT_A2R10G10B10_SINT_PACK32",
+ 64: "VK_FORMAT_A2B10G10R10_UNORM_PACK32",
+ 65: "VK_FORMAT_A2B10G10R10_SNORM_PACK32",
+ 66: "VK_FORMAT_A2B10G10R10_USCALED_PACK32",
+ 67: "VK_FORMAT_A2B10G10R10_SSCALED_PACK32",
+ 68: "VK_FORMAT_A2B10G10R10_UINT_PACK32",
+ 69: "VK_FORMAT_A2B10G10R10_SINT_PACK32",
+ 70: "VK_FORMAT_R16_UNORM",
+ 71: "VK_FORMAT_R16_SNORM",
+ 72: "VK_FORMAT_R16_USCALED",
+ 73: "VK_FORMAT_R16_SSCALED",
+ 74: "VK_FORMAT_R16_UINT",
+ 75: "VK_FORMAT_R16_SINT",
+ 76: "VK_FORMAT_R16_SFLOAT",
+ 77: "VK_FORMAT_R16G16_UNORM",
+ 78: "VK_FORMAT_R16G16_SNORM",
+ 79: "VK_FORMAT_R16G16_USCALED",
+ 80: "VK_FORMAT_R16G16_SSCALED",
+ 81: "VK_FORMAT_R16G16_UINT",
+ 82: "VK_FORMAT_R16G16_SINT",
+ 83: "VK_FORMAT_R16G16_SFLOAT",
+ 84: "VK_FORMAT_R16G16B16_UNORM",
+ 85: "VK_FORMAT_R16G16B16_SNORM",
+ 86: "VK_FORMAT_R16G16B16_USCALED",
+ 87: "VK_FORMAT_R16G16B16_SSCALED",
+ 88: "VK_FORMAT_R16G16B16_UINT",
+ 89: "VK_FORMAT_R16G16B16_SINT",
+ 90: "VK_FORMAT_R16G16B16_SFLOAT",
+ 91: "VK_FORMAT_R16G16B16A16_UNORM",
+ 92: "VK_FORMAT_R16G16B16A16_SNORM",
+ 93: "VK_FORMAT_R16G16B16A16_USCALED",
+ 94: "VK_FORMAT_R16G16B16A16_SSCALED",
+ 95: "VK_FORMAT_R16G16B16A16_UINT",
+ 96: "VK_FORMAT_R16G16B16A16_SINT",
+ 97: "VK_FORMAT_R16G16B16A16_SFLOAT",
+ 98: "VK_FORMAT_R32_UINT",
+ 99: "VK_FORMAT_R32_SINT",
+ 100: "VK_FORMAT_R32_SFLOAT",
+ 101: "VK_FORMAT_R32G32_UINT",
+ 102: "VK_FORMAT_R32G32_SINT",
+ 103: "VK_FORMAT_R32G32_SFLOAT",
+ 104: "VK_FORMAT_R32G32B32_UINT",
+ 105: "VK_FORMAT_R32G32B32_SINT",
+ 106: "VK_FORMAT_R32G32B32_SFLOAT",
+ 107: "VK_FORMAT_R32G32B32A32_UINT",
+ 108: "VK_FORMAT_R32G32B32A32_SINT",
+ 109: "VK_FORMAT_R32G32B32A32_SFLOAT",
+ 110: "VK_FORMAT_R64_UINT",
+ 111: "VK_FORMAT_R64_SINT",
+ 112: "VK_FORMAT_R64_SFLOAT",
+ 113: "VK_FORMAT_R64G64_UINT",
+ 114: "VK_FORMAT_R64G64_SINT",
+ 115: "VK_FORMAT_R64G64_SFLOAT",
+ 116: "VK_FORMAT_R64G64B64_UINT",
+ 117: "VK_FORMAT_R64G64B64_SINT",
+ 118: "VK_FORMAT_R64G64B64_SFLOAT",
+ 119: "VK_FORMAT_R64G64B64A64_UINT",
+ 120: "VK_FORMAT_R64G64B64A64_SINT",
+ 121: "VK_FORMAT_R64G64B64A64_SFLOAT",
+ 122: "VK_FORMAT_B10G11R11_UFLOAT_PACK32",
+ 123: "VK_FORMAT_E5B9G9R9_UFLOAT_PACK32",
+ 124: "VK_FORMAT_D16_UNORM",
+ 125: "VK_FORMAT_X8_D24_UNORM_PACK32",
+ 126: "VK_FORMAT_D32_SFLOAT",
+ 127: "VK_FORMAT_S8_UINT",
+ 128: "VK_FORMAT_D16_UNORM_S8_UINT",
+ 129: "VK_FORMAT_D24_UNORM_S8_UINT",
+ 130: "VK_FORMAT_D32_SFLOAT_S8_UINT",
+ 131: "VK_FORMAT_BC1_RGB_UNORM_BLOCK",
+ 132: "VK_FORMAT_BC1_RGB_SRGB_BLOCK",
+ 133: "VK_FORMAT_BC1_RGBA_UNORM_BLOCK",
+ 134: "VK_FORMAT_BC1_RGBA_SRGB_BLOCK",
+ 135: "VK_FORMAT_BC2_UNORM_BLOCK",
+ 136: "VK_FORMAT_BC2_SRGB_BLOCK",
+ 137: "VK_FORMAT_BC3_UNORM_BLOCK",
+ 138: "VK_FORMAT_BC3_SRGB_BLOCK",
+ 139: "VK_FORMAT_BC4_UNORM_BLOCK",
+ 140: "VK_FORMAT_BC4_SNORM_BLOCK",
+ 141: "VK_FORMAT_BC5_UNORM_BLOCK",
+ 142: "VK_FORMAT_BC5_SNORM_BLOCK",
+ 143: "VK_FORMAT_BC6H_UFLOAT_BLOCK",
+ 144: "VK_FORMAT_BC6H_SFLOAT_BLOCK",
+ 145: "VK_FORMAT_BC7_UNORM_BLOCK",
+ 146: "VK_FORMAT_BC7_SRGB_BLOCK",
+ 147: "VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK",
+ 148: "VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK",
+ 149: "VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK",
+ 150: "VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK",
+ 151: "VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK",
+ 152: "VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK",
+ 153: "VK_FORMAT_EAC_R11_UNORM_BLOCK",
+ 154: "VK_FORMAT_EAC_R11_SNORM_BLOCK",
+ 155: "VK_FORMAT_EAC_R11G11_UNORM_BLOCK",
+ 156: "VK_FORMAT_EAC_R11G11_SNORM_BLOCK",
+ 157: "VK_FORMAT_ASTC_4x4_UNORM_BLOCK",
+ 158: "VK_FORMAT_ASTC_4x4_SRGB_BLOCK",
+ 159: "VK_FORMAT_ASTC_5x4_UNORM_BLOCK",
+ 160: "VK_FORMAT_ASTC_5x4_SRGB_BLOCK",
+ 161: "VK_FORMAT_ASTC_5x5_UNORM_BLOCK",
+ 162: "VK_FORMAT_ASTC_5x5_SRGB_BLOCK",
+ 163: "VK_FORMAT_ASTC_6x5_UNORM_BLOCK",
+ 164: "VK_FORMAT_ASTC_6x5_SRGB_BLOCK",
+ 165: "VK_FORMAT_ASTC_6x6_UNORM_BLOCK",
+ 166: "VK_FORMAT_ASTC_6x6_SRGB_BLOCK",
+ 167: "VK_FORMAT_ASTC_8x5_UNORM_BLOCK",
+ 168: "VK_FORMAT_ASTC_8x5_SRGB_BLOCK",
+ 169: "VK_FORMAT_ASTC_8x6_UNORM_BLOCK",
+ 170: "VK_FORMAT_ASTC_8x6_SRGB_BLOCK",
+ 171: "VK_FORMAT_ASTC_8x8_UNORM_BLOCK",
+ 172: "VK_FORMAT_ASTC_8x8_SRGB_BLOCK",
+ 173: "VK_FORMAT_ASTC_10x5_UNORM_BLOCK",
+ 174: "VK_FORMAT_ASTC_10x5_SRGB_BLOCK",
+ 175: "VK_FORMAT_ASTC_10x6_UNORM_BLOCK",
+ 176: "VK_FORMAT_ASTC_10x6_SRGB_BLOCK",
+ 177: "VK_FORMAT_ASTC_10x8_UNORM_BLOCK",
+ 178: "VK_FORMAT_ASTC_10x8_SRGB_BLOCK",
+ 179: "VK_FORMAT_ASTC_10x10_UNORM_BLOCK",
+ 180: "VK_FORMAT_ASTC_10x10_SRGB_BLOCK",
+ 181: "VK_FORMAT_ASTC_12x10_UNORM_BLOCK",
+ 182: "VK_FORMAT_ASTC_12x10_SRGB_BLOCK",
+ 183: "VK_FORMAT_ASTC_12x12_UNORM_BLOCK",
+ 184: "VK_FORMAT_ASTC_12x12_SRGB_BLOCK",
+ 1000156000: "VK_FORMAT_G8B8G8R8_422_UNORM",
+ 1000156001: "VK_FORMAT_B8G8R8G8_422_UNORM",
+ 1000156002: "VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM",
+ 1000156003: "VK_FORMAT_G8_B8R8_2PLANE_420_UNORM",
+ 1000156004: "VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM",
+ 1000156005: "VK_FORMAT_G8_B8R8_2PLANE_422_UNORM",
+ 1000156006: "VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM",
+ 1000156007: "VK_FORMAT_R10X6_UNORM_PACK16",
+ 1000156008: "VK_FORMAT_R10X6G10X6_UNORM_2PACK16",
+ 1000156009: "VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16",
+ 1000156010: "VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16",
+ 1000156011: "VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16",
+ 1000156012: "VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16",
+ 1000156013: "VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16",
+ 1000156014: "VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16",
+ 1000156015: "VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16",
+ 1000156016: "VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16",
+ 1000156017: "VK_FORMAT_R12X4_UNORM_PACK16",
+ 1000156018: "VK_FORMAT_R12X4G12X4_UNORM_2PACK16",
+ 1000156019: "VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16",
+ 1000156020: "VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16",
+ 1000156021: "VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16",
+ 1000156022: "VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16",
+ 1000156023: "VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16",
+ 1000156024: "VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16",
+ 1000156025: "VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16",
+ 1000156026: "VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16",
+ 1000156027: "VK_FORMAT_G16B16G16R16_422_UNORM",
+ 1000156028: "VK_FORMAT_B16G16R16G16_422_UNORM",
+ 1000156029: "VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM",
+ 1000156030: "VK_FORMAT_G16_B16R16_2PLANE_420_UNORM",
+ 1000156031: "VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM",
+ 1000156032: "VK_FORMAT_G16_B16R16_2PLANE_422_UNORM",
+ 1000156033: "VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM",
+ 1000330000: "VK_FORMAT_G8_B8R8_2PLANE_444_UNORM",
+ 1000330001: "VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16",
+ 1000330002: "VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16",
+ 1000330003: "VK_FORMAT_G16_B16R16_2PLANE_444_UNORM",
+ 1000340000: "VK_FORMAT_A4R4G4B4_UNORM_PACK16",
+ 1000340001: "VK_FORMAT_A4B4G4R4_UNORM_PACK16",
+ 1000066000: "VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK",
+ 1000066001: "VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK",
+ 1000066002: "VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK",
+ 1000066003: "VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK",
+ 1000066004: "VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK",
+ 1000066005: "VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK",
+ 1000066006: "VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK",
+ 1000066007: "VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK",
+ 1000066008: "VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK",
+ 1000066009: "VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK",
+ 1000066010: "VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK",
+ 1000066011: "VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK",
+ 1000066012: "VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK",
+ 1000066013: "VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK",
+ 1000054000: "VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG",
+ 1000054001: "VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG",
+ 1000054002: "VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG",
+ 1000054003: "VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG",
+ 1000054004: "VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG",
+ 1000054005: "VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG",
+ 1000054006: "VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG",
+ 1000054007: "VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG",
+ 1000288000: "VK_FORMAT_ASTC_3x3x3_UNORM_BLOCK_EXT",
+ 1000288001: "VK_FORMAT_ASTC_3x3x3_SRGB_BLOCK_EXT",
+ 1000288002: "VK_FORMAT_ASTC_3x3x3_SFLOAT_BLOCK_EXT",
+ 1000288003: "VK_FORMAT_ASTC_4x3x3_UNORM_BLOCK_EXT",
+ 1000288004: "VK_FORMAT_ASTC_4x3x3_SRGB_BLOCK_EXT",
+ 1000288005: "VK_FORMAT_ASTC_4x3x3_SFLOAT_BLOCK_EXT",
+ 1000288006: "VK_FORMAT_ASTC_4x4x3_UNORM_BLOCK_EXT",
+ 1000288007: "VK_FORMAT_ASTC_4x4x3_SRGB_BLOCK_EXT",
+ 1000288008: "VK_FORMAT_ASTC_4x4x3_SFLOAT_BLOCK_EXT",
+ 1000288009: "VK_FORMAT_ASTC_4x4x4_UNORM_BLOCK_EXT",
+ 1000288010: "VK_FORMAT_ASTC_4x4x4_SRGB_BLOCK_EXT",
+ 1000288011: "VK_FORMAT_ASTC_4x4x4_SFLOAT_BLOCK_EXT",
+ 1000288012: "VK_FORMAT_ASTC_5x4x4_UNORM_BLOCK_EXT",
+ 1000288013: "VK_FORMAT_ASTC_5x4x4_SRGB_BLOCK_EXT",
+ 1000288014: "VK_FORMAT_ASTC_5x4x4_SFLOAT_BLOCK_EXT",
+ 1000288015: "VK_FORMAT_ASTC_5x5x4_UNORM_BLOCK_EXT",
+ 1000288016: "VK_FORMAT_ASTC_5x5x4_SRGB_BLOCK_EXT",
+ 1000288017: "VK_FORMAT_ASTC_5x5x4_SFLOAT_BLOCK_EXT",
+ 1000288018: "VK_FORMAT_ASTC_5x5x5_UNORM_BLOCK_EXT",
+ 1000288019: "VK_FORMAT_ASTC_5x5x5_SRGB_BLOCK_EXT",
+ 1000288020: "VK_FORMAT_ASTC_5x5x5_SFLOAT_BLOCK_EXT",
+ 1000288021: "VK_FORMAT_ASTC_6x5x5_UNORM_BLOCK_EXT",
+ 1000288022: "VK_FORMAT_ASTC_6x5x5_SRGB_BLOCK_EXT",
+ 1000288023: "VK_FORMAT_ASTC_6x5x5_SFLOAT_BLOCK_EXT",
+ 1000288024: "VK_FORMAT_ASTC_6x6x5_UNORM_BLOCK_EXT",
+ 1000288025: "VK_FORMAT_ASTC_6x6x5_SRGB_BLOCK_EXT",
+ 1000288026: "VK_FORMAT_ASTC_6x6x5_SFLOAT_BLOCK_EXT",
+ 1000288027: "VK_FORMAT_ASTC_6x6x6_UNORM_BLOCK_EXT",
+ 1000288028: "VK_FORMAT_ASTC_6x6x6_SRGB_BLOCK_EXT",
+ 1000288029: "VK_FORMAT_ASTC_6x6x6_SFLOAT_BLOCK_EXT",
+ 1000464000: "VK_FORMAT_R16G16_S10_5_NV",
+ 1000470000: "VK_FORMAT_A1B5G5R5_UNORM_PACK16_KHR",
+ 1000470001: "VK_FORMAT_A8_UNORM_KHR",
+}
+
+VkFrontFace = {
+ 0: "VK_FRONT_FACE_COUNTER_CLOCKWISE",
+ 1: "VK_FRONT_FACE_CLOCKWISE",
+}
+
+VkImageLayout = {
+ 0: "VK_IMAGE_LAYOUT_UNDEFINED",
+ 1: "VK_IMAGE_LAYOUT_GENERAL",
+ 2: "VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL",
+ 3: "VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL",
+ 4: "VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL",
+ 5: "VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL",
+ 6: "VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL",
+ 7: "VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL",
+ 8: "VK_IMAGE_LAYOUT_PREINITIALIZED",
+ 1000117000: "VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL",
+ 1000117001: "VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL",
+ 1000241000: "VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL",
+ 1000241001: "VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL",
+ 1000241002: "VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL",
+ 1000241003: "VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL",
+ 1000314000: "VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL",
+ 1000314001: "VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL",
+ 1000001002: "VK_IMAGE_LAYOUT_PRESENT_SRC_KHR",
+ 1000024000: "VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR",
+ 1000024001: "VK_IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR",
+ 1000024002: "VK_IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR",
+ 1000111000: "VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR",
+ 1000218000: "VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT",
+ 1000164003: "VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR",
+ 1000299000: "VK_IMAGE_LAYOUT_VIDEO_ENCODE_DST_KHR",
+ 1000299001: "VK_IMAGE_LAYOUT_VIDEO_ENCODE_SRC_KHR",
+ 1000299002: "VK_IMAGE_LAYOUT_VIDEO_ENCODE_DPB_KHR",
+ 1000339000: "VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT",
+}
+
+VkImageTiling = {
+ 0: "VK_IMAGE_TILING_OPTIMAL",
+ 1: "VK_IMAGE_TILING_LINEAR",
+ 1000158000: "VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT",
+}
+
+VkImageType = {
+ 0: "VK_IMAGE_TYPE_1D",
+ 1: "VK_IMAGE_TYPE_2D",
+ 2: "VK_IMAGE_TYPE_3D",
+}
+
+VkImageViewType = {
+ 0: "VK_IMAGE_VIEW_TYPE_1D",
+ 1: "VK_IMAGE_VIEW_TYPE_2D",
+ 2: "VK_IMAGE_VIEW_TYPE_3D",
+ 3: "VK_IMAGE_VIEW_TYPE_CUBE",
+ 4: "VK_IMAGE_VIEW_TYPE_1D_ARRAY",
+ 5: "VK_IMAGE_VIEW_TYPE_2D_ARRAY",
+ 6: "VK_IMAGE_VIEW_TYPE_CUBE_ARRAY",
+}
+
+VkIndexType = {
+ 0: "VK_INDEX_TYPE_UINT16",
+ 1: "VK_INDEX_TYPE_UINT32",
+ 1000165000: "VK_INDEX_TYPE_NONE_KHR",
+ 1000265000: "VK_INDEX_TYPE_UINT8_EXT",
+}
+
+VkLogicOp = {
+ 0: "VK_LOGIC_OP_CLEAR",
+ 1: "VK_LOGIC_OP_AND",
+ 2: "VK_LOGIC_OP_AND_REVERSE",
+ 3: "VK_LOGIC_OP_COPY",
+ 4: "VK_LOGIC_OP_AND_INVERTED",
+ 5: "VK_LOGIC_OP_NO_OP",
+ 6: "VK_LOGIC_OP_XOR",
+ 7: "VK_LOGIC_OP_OR",
+ 8: "VK_LOGIC_OP_NOR",
+ 9: "VK_LOGIC_OP_EQUIVALENT",
+ 10: "VK_LOGIC_OP_INVERT",
+ 11: "VK_LOGIC_OP_OR_REVERSE",
+ 12: "VK_LOGIC_OP_COPY_INVERTED",
+ 13: "VK_LOGIC_OP_OR_INVERTED",
+ 14: "VK_LOGIC_OP_NAND",
+ 15: "VK_LOGIC_OP_SET",
+}
+
+VkPhysicalDeviceType = {
+ 0: "VK_PHYSICAL_DEVICE_TYPE_OTHER",
+ 1: "VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU",
+ 2: "VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU",
+ 3: "VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU",
+ 4: "VK_PHYSICAL_DEVICE_TYPE_CPU",
+}
+
+VkPipelineBindPoint = {
+ 0: "VK_PIPELINE_BIND_POINT_GRAPHICS",
+ 1: "VK_PIPELINE_BIND_POINT_COMPUTE",
+ 1000134000: "VK_PIPELINE_BIND_POINT_EXECUTION_GRAPH_AMDX",
+ 1000165000: "VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR",
+ 1000369003: "VK_PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI",
+}
+
+VkPolygonMode = {
+ 0: "VK_POLYGON_MODE_FILL",
+ 1: "VK_POLYGON_MODE_LINE",
+ 2: "VK_POLYGON_MODE_POINT",
+ 1000153000: "VK_POLYGON_MODE_FILL_RECTANGLE_NV",
+}
+
+VkPrimitiveTopology = {
+ 0: "VK_PRIMITIVE_TOPOLOGY_POINT_LIST",
+ 1: "VK_PRIMITIVE_TOPOLOGY_LINE_LIST",
+ 2: "VK_PRIMITIVE_TOPOLOGY_LINE_STRIP",
+ 3: "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST",
+ 4: "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP",
+ 5: "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN",
+ 6: "VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY",
+ 7: "VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY",
+ 8: "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY",
+ 9: "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY",
+ 10: "VK_PRIMITIVE_TOPOLOGY_PATCH_LIST",
+}
+
+VkSampleCountFlagBits = {
+ 1: "VK_SAMPLE_COUNT_1_BIT",
+ 2: "VK_SAMPLE_COUNT_2_BIT",
+ 4: "VK_SAMPLE_COUNT_4_BIT",
+ 8: "VK_SAMPLE_COUNT_8_BIT",
+ 16: "VK_SAMPLE_COUNT_16_BIT",
+ 32: "VK_SAMPLE_COUNT_32_BIT",
+ 64: "VK_SAMPLE_COUNT_64_BIT",
+}
+
+VkSamplerAddressMode = {
+ 0: "VK_SAMPLER_ADDRESS_MODE_REPEAT",
+ 1: "VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT",
+ 2: "VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE",
+ 3: "VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER",
+ 4: "VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE",
+ 4: "VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE",
+}
+
+VkSamplerMipmapMode = {
+ 0: "VK_SAMPLER_MIPMAP_MODE_NEAREST",
+ 1: "VK_SAMPLER_MIPMAP_MODE_LINEAR",
+}
+
+VkShaderStageFlagBits = {
+ 1: "VK_SHADER_STAGE_VERTEX_BIT",
+ 2: "VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT",
+ 4: "VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT",
+ 8: "VK_SHADER_STAGE_GEOMETRY_BIT",
+ 16: "VK_SHADER_STAGE_FRAGMENT_BIT",
+ 32: "VK_SHADER_STAGE_COMPUTE_BIT",
+ 31: "VK_SHADER_STAGE_ALL_GRAPHICS",
+ 2147483647: "VK_SHADER_STAGE_ALL",
+ 256: "VK_SHADER_STAGE_RAYGEN_BIT_KHR",
+ 512: "VK_SHADER_STAGE_ANY_HIT_BIT_KHR",
+ 1024: "VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR",
+ 2048: "VK_SHADER_STAGE_MISS_BIT_KHR",
+ 4096: "VK_SHADER_STAGE_INTERSECTION_BIT_KHR",
+ 8192: "VK_SHADER_STAGE_CALLABLE_BIT_KHR",
+ 64: "VK_SHADER_STAGE_TASK_BIT_EXT",
+ 128: "VK_SHADER_STAGE_MESH_BIT_EXT",
+ 16384: "VK_SHADER_STAGE_SUBPASS_SHADING_BIT_HUAWEI",
+ 524288: "VK_SHADER_STAGE_CLUSTER_CULLING_BIT_HUAWEI",
+}
+
+VkSharingMode = {
+ 0: "VK_SHARING_MODE_EXCLUSIVE",
+ 1: "VK_SHARING_MODE_CONCURRENT",
+}
+
+VkStencilOp = {
+ 0: "VK_STENCIL_OP_KEEP",
+ 1: "VK_STENCIL_OP_ZERO",
+ 2: "VK_STENCIL_OP_REPLACE",
+ 3: "VK_STENCIL_OP_INCREMENT_AND_CLAMP",
+ 4: "VK_STENCIL_OP_DECREMENT_AND_CLAMP",
+ 5: "VK_STENCIL_OP_INVERT",
+ 6: "VK_STENCIL_OP_INCREMENT_AND_WRAP",
+ 7: "VK_STENCIL_OP_DECREMENT_AND_WRAP",
+}
+
+VkStructureType = {
+ 0: "VK_STRUCTURE_TYPE_APPLICATION_INFO",
+ 1: "VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO",
+ 2: "VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO",
+ 3: "VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO",
+ 4: "VK_STRUCTURE_TYPE_SUBMIT_INFO",
+ 5: "VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO",
+ 6: "VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE",
+ 7: "VK_STRUCTURE_TYPE_BIND_SPARSE_INFO",
+ 8: "VK_STRUCTURE_TYPE_FENCE_CREATE_INFO",
+ 9: "VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO",
+ 10: "VK_STRUCTURE_TYPE_EVENT_CREATE_INFO",
+ 11: "VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO",
+ 12: "VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO",
+ 13: "VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO",
+ 14: "VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO",
+ 15: "VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO",
+ 16: "VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO",
+ 17: "VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO",
+ 18: "VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO",
+ 19: "VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO",
+ 20: "VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO",
+ 21: "VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO",
+ 22: "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO",
+ 23: "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO",
+ 24: "VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO",
+ 25: "VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO",
+ 26: "VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO",
+ 27: "VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO",
+ 28: "VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO",
+ 29: "VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO",
+ 30: "VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO",
+ 31: "VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO",
+ 32: "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO",
+ 33: "VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO",
+ 34: "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO",
+ 35: "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET",
+ 36: "VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET",
+ 37: "VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO",
+ 38: "VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO",
+ 39: "VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO",
+ 40: "VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO",
+ 41: "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO",
+ 42: "VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO",
+ 43: "VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO",
+ 44: "VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER",
+ 45: "VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER",
+ 46: "VK_STRUCTURE_TYPE_MEMORY_BARRIER",
+ 47: "VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO",
+ 48: "VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO",
+ 1000094000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES",
+ 1000157000: "VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO",
+ 1000157001: "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO",
+ 1000083000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES",
+ 1000127000: "VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS",
+ 1000127001: "VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO",
+ 1000060000: "VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO",
+ 1000060003: "VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO",
+ 1000060004: "VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO",
+ 1000060005: "VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO",
+ 1000060006: "VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO",
+ 1000060013: "VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO",
+ 1000060014: "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO",
+ 1000070000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES",
+ 1000070001: "VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO",
+ 1000146000: "VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2",
+ 1000146001: "VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2",
+ 1000146002: "VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2",
+ 1000146003: "VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2",
+ 1000146004: "VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2",
+ 1000059000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2",
+ 1000059001: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2",
+ 1000059002: "VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2",
+ 1000059003: "VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2",
+ 1000059004: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2",
+ 1000059005: "VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2",
+ 1000059006: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2",
+ 1000059007: "VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2",
+ 1000059008: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2",
+ 1000117000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES",
+ 1000117001: "VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO",
+ 1000117002: "VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO",
+ 1000117003: "VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO",
+ 1000053000: "VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO",
+ 1000053001: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES",
+ 1000053002: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES",
+ 1000120000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES",
+ 1000145000: "VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO",
+ 1000145001: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES",
+ 1000145002: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES",
+ 1000145003: "VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2",
+ 1000156000: "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO",
+ 1000156001: "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO",
+ 1000156002: "VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO",
+ 1000156003: "VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO",
+ 1000156004: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES",
+ 1000156005: "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES",
+ 1000085000: "VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO",
+ 1000071000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO",
+ 1000071001: "VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES",
+ 1000071002: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO",
+ 1000071003: "VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES",
+ 1000071004: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES",
+ 1000072000: "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO",
+ 1000072001: "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO",
+ 1000072002: "VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO",
+ 1000112000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO",
+ 1000112001: "VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES",
+ 1000113000: "VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO",
+ 1000077000: "VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO",
+ 1000076000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO",
+ 1000076001: "VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES",
+ 1000168000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES",
+ 1000168001: "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT",
+ 1000063000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES",
+ 49: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES",
+ 50: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES",
+ 51: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES",
+ 52: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES",
+ 1000147000: "VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO",
+ 1000109000: "VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2",
+ 1000109001: "VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2",
+ 1000109002: "VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2",
+ 1000109003: "VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2",
+ 1000109004: "VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2",
+ 1000109005: "VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO",
+ 1000109006: "VK_STRUCTURE_TYPE_SUBPASS_END_INFO",
+ 1000177000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES",
+ 1000196000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES",
+ 1000180000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES",
+ 1000082000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES",
+ 1000197000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES",
+ 1000161000: "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO",
+ 1000161001: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES",
+ 1000161002: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES",
+ 1000161003: "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO",
+ 1000161004: "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT",
+ 1000199000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES",
+ 1000199001: "VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE",
+ 1000221000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES",
+ 1000246000: "VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO",
+ 1000130000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES",
+ 1000130001: "VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO",
+ 1000211000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES",
+ 1000108000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES",
+ 1000108001: "VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO",
+ 1000108002: "VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO",
+ 1000108003: "VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO",
+ 1000253000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES",
+ 1000175000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES",
+ 1000241000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES",
+ 1000241001: "VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT",
+ 1000241002: "VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT",
+ 1000261000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES",
+ 1000207000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES",
+ 1000207001: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES",
+ 1000207002: "VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO",
+ 1000207003: "VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO",
+ 1000207004: "VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO",
+ 1000207005: "VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO",
+ 1000257000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES",
+ 1000244001: "VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO",
+ 1000257002: "VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO",
+ 1000257003: "VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO",
+ 1000257004: "VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO",
+ 53: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES",
+ 54: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES",
+ 1000192000: "VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO",
+ 1000215000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES",
+ 1000245000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES",
+ 1000276000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES",
+ 1000295000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES",
+ 1000295001: "VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO",
+ 1000295002: "VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO",
+ 1000297000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES",
+ 1000314000: "VK_STRUCTURE_TYPE_MEMORY_BARRIER_2",
+ 1000314001: "VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2",
+ 1000314002: "VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2",
+ 1000314003: "VK_STRUCTURE_TYPE_DEPENDENCY_INFO",
+ 1000314004: "VK_STRUCTURE_TYPE_SUBMIT_INFO_2",
+ 1000314005: "VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO",
+ 1000314006: "VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO",
+ 1000314007: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES",
+ 1000325000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES",
+ 1000335000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES",
+ 1000337000: "VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2",
+ 1000337001: "VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2",
+ 1000337002: "VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2",
+ 1000337003: "VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2",
+ 1000337004: "VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2",
+ 1000337005: "VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2",
+ 1000337006: "VK_STRUCTURE_TYPE_BUFFER_COPY_2",
+ 1000337007: "VK_STRUCTURE_TYPE_IMAGE_COPY_2",
+ 1000337008: "VK_STRUCTURE_TYPE_IMAGE_BLIT_2",
+ 1000337009: "VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2",
+ 1000337010: "VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2",
+ 1000225000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES",
+ 1000225001: "VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO",
+ 1000225002: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES",
+ 1000138000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES",
+ 1000138001: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES",
+ 1000138002: "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK",
+ 1000138003: "VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO",
+ 1000066000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES",
+ 1000044000: "VK_STRUCTURE_TYPE_RENDERING_INFO",
+ 1000044001: "VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO",
+ 1000044002: "VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO",
+ 1000044003: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES",
+ 1000044004: "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO",
+ 1000280000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES",
+ 1000280001: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES",
+ 1000281001: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES",
+ 1000360000: "VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3",
+ 1000413000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES",
+ 1000413001: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES",
+ 1000413002: "VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS",
+ 1000413003: "VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS",
+ 1000001000: "VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR",
+ 1000001001: "VK_STRUCTURE_TYPE_PRESENT_INFO_KHR",
+ 1000060007: "VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR",
+ 1000060008: "VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR",
+ 1000060009: "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR",
+ 1000060010: "VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR",
+ 1000060011: "VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR",
+ 1000060012: "VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR",
+ 1000002000: "VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR",
+ 1000002001: "VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR",
+ 1000003000: "VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR",
+ 1000004000: "VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR",
+ 1000005000: "VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR",
+ 1000006000: "VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR",
+ 1000008000: "VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR",
+ 1000009000: "VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR",
+ 1000010000: "VK_STRUCTURE_TYPE_NATIVE_BUFFER_ANDROID",
+ 1000010001: "VK_STRUCTURE_TYPE_SWAPCHAIN_IMAGE_CREATE_INFO_ANDROID",
+ 1000010002: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENTATION_PROPERTIES_ANDROID",
+ 1000011000: "VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT",
+ 1000018000: "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD",
+ 1000022000: "VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT",
+ 1000022001: "VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT",
+ 1000022002: "VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT",
+ 1000023000: "VK_STRUCTURE_TYPE_VIDEO_PROFILE_INFO_KHR",
+ 1000023001: "VK_STRUCTURE_TYPE_VIDEO_CAPABILITIES_KHR",
+ 1000023002: "VK_STRUCTURE_TYPE_VIDEO_PICTURE_RESOURCE_INFO_KHR",
+ 1000023003: "VK_STRUCTURE_TYPE_VIDEO_SESSION_MEMORY_REQUIREMENTS_KHR",
+ 1000023004: "VK_STRUCTURE_TYPE_BIND_VIDEO_SESSION_MEMORY_INFO_KHR",
+ 1000023005: "VK_STRUCTURE_TYPE_VIDEO_SESSION_CREATE_INFO_KHR",
+ 1000023006: "VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR",
+ 1000023007: "VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_UPDATE_INFO_KHR",
+ 1000023008: "VK_STRUCTURE_TYPE_VIDEO_BEGIN_CODING_INFO_KHR",
+ 1000023009: "VK_STRUCTURE_TYPE_VIDEO_END_CODING_INFO_KHR",
+ 1000023010: "VK_STRUCTURE_TYPE_VIDEO_CODING_CONTROL_INFO_KHR",
+ 1000023011: "VK_STRUCTURE_TYPE_VIDEO_REFERENCE_SLOT_INFO_KHR",
+ 1000023012: "VK_STRUCTURE_TYPE_QUEUE_FAMILY_VIDEO_PROPERTIES_KHR",
+ 1000023013: "VK_STRUCTURE_TYPE_VIDEO_PROFILE_LIST_INFO_KHR",
+ 1000023014: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_FORMAT_INFO_KHR",
+ 1000023015: "VK_STRUCTURE_TYPE_VIDEO_FORMAT_PROPERTIES_KHR",
+ 1000023016: "VK_STRUCTURE_TYPE_QUEUE_FAMILY_QUERY_RESULT_STATUS_PROPERTIES_KHR",
+ 1000024000: "VK_STRUCTURE_TYPE_VIDEO_DECODE_INFO_KHR",
+ 1000024001: "VK_STRUCTURE_TYPE_VIDEO_DECODE_CAPABILITIES_KHR",
+ 1000024002: "VK_STRUCTURE_TYPE_VIDEO_DECODE_USAGE_INFO_KHR",
+ 1000026000: "VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV",
+ 1000026001: "VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV",
+ 1000026002: "VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV",
+ 1000028000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT",
+ 1000028001: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT",
+ 1000028002: "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT",
+ 1000029000: "VK_STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX",
+ 1000029001: "VK_STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX",
+ 1000029002: "VK_STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX",
+ 1000030000: "VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX",
+ 1000030001: "VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX",
+ 1000038000: "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_CAPABILITIES_EXT",
+ 1000038001: "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT",
+ 1000038002: "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT",
+ 1000038003: "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PICTURE_INFO_EXT",
+ 1000038004: "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_DPB_SLOT_INFO_EXT",
+ 1000038005: "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_NALU_SLICE_INFO_EXT",
+ 1000038006: "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_GOP_REMAINING_FRAME_INFO_EXT",
+ 1000038007: "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PROFILE_INFO_EXT",
+ 1000038008: "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_INFO_EXT",
+ 1000038009: "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_LAYER_INFO_EXT",
+ 1000038010: "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_CREATE_INFO_EXT",
+ 1000038011: "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_QUALITY_LEVEL_PROPERTIES_EXT",
+ 1000038012: "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_GET_INFO_EXT",
+ 1000038013: "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_FEEDBACK_INFO_EXT",
+ 1000039000: "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_CAPABILITIES_EXT",
+ 1000039001: "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT",
+ 1000039002: "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT",
+ 1000039003: "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PICTURE_INFO_EXT",
+ 1000039004: "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_DPB_SLOT_INFO_EXT",
+ 1000039005: "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_NALU_SLICE_SEGMENT_INFO_EXT",
+ 1000039006: "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_GOP_REMAINING_FRAME_INFO_EXT",
+ 1000039007: "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PROFILE_INFO_EXT",
+ 1000039009: "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_INFO_EXT",
+ 1000039010: "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_LAYER_INFO_EXT",
+ 1000039011: "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_CREATE_INFO_EXT",
+ 1000039012: "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_QUALITY_LEVEL_PROPERTIES_EXT",
+ 1000039013: "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_GET_INFO_EXT",
+ 1000039014: "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_FEEDBACK_INFO_EXT",
+ 1000040000: "VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_KHR",
+ 1000040001: "VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_KHR",
+ 1000040003: "VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_KHR",
+ 1000040004: "VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR",
+ 1000040005: "VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR",
+ 1000040006: "VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_KHR",
+ 1000041000: "VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD",
+ 1000044006: "VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR",
+ 1000044007: "VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT",
+ 1000044008: "VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD",
+ 1000044009: "VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX",
+ 1000049000: "VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP",
+ 1000050000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV",
+ 1000051000: "VK_STRUCTURE_TYPE_PRIVATE_VENDOR_INFO_PLACEHOLDER_OFFSET_0_NV",
+ 1000056000: "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV",
+ 1000056001: "VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV",
+ 1000057000: "VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV",
+ 1000057001: "VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV",
+ 1000058000: "VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV",
+ 1000060007: "VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR",
+ 1000060008: "VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR",
+ 1000060009: "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR",
+ 1000060010: "VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR",
+ 1000060011: "VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR",
+ 1000060012: "VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR",
+ 1000061000: "VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT",
+ 1000062000: "VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN",
+ 1000067000: "VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT",
+ 1000067001: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT",
+ 1000068000: "VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT",
+ 1000068001: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT",
+ 1000068002: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT",
+ 1000073000: "VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR",
+ 1000073001: "VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR",
+ 1000073002: "VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR",
+ 1000073003: "VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR",
+ 1000074000: "VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR",
+ 1000074001: "VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR",
+ 1000074002: "VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR",
+ 1000075000: "VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR",
+ 1000078000: "VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR",
+ 1000078001: "VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR",
+ 1000078002: "VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR",
+ 1000078003: "VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR",
+ 1000079000: "VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR",
+ 1000079001: "VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR",
+ 1000080000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR",
+ 1000081000: "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT",
+ 1000081001: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT",
+ 1000081002: "VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT",
+ 1000084000: "VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR",
+ 1000087000: "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV",
+ 1000090000: "VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT",
+ 1000091000: "VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT",
+ 1000091001: "VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT",
+ 1000091002: "VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT",
+ 1000091003: "VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT",
+ 1000092000: "VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE",
+ 1000097000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX",
+ 1000098000: "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV",
+ 1000099000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT",
+ 1000099001: "VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT",
+ 1000101000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT",
+ 1000101001: "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT",
+ 1000102000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT",
+ 1000102001: "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT",
+ 1000105000: "VK_STRUCTURE_TYPE_HDR_METADATA_EXT",
+ 1000111000: "VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR",
+ 1000114000: "VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR",
+ 1000114001: "VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR",
+ 1000114002: "VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR",
+ 1000115000: "VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR",
+ 1000115001: "VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR",
+ 1000116000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR",
+ 1000116001: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR",
+ 1000116002: "VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR",
+ 1000116003: "VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR",
+ 1000116004: "VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR",
+ 1000116005: "VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR",
+ 1000116006: "VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR",
+ 1000119000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR",
+ 1000119001: "VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR",
+ 1000119002: "VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR",
+ 1000121000: "VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR",
+ 1000121001: "VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR",
+ 1000121002: "VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR",
+ 1000121003: "VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR",
+ 1000121004: "VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR",
+ 1000122000: "VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK",
+ 1000123000: "VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK",
+ 1000128000: "VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT",
+ 1000128001: "VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT",
+ 1000128002: "VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT",
+ 1000128003: "VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT",
+ 1000128004: "VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT",
+ 1000129000: "VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID",
+ 1000129001: "VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID",
+ 1000129002: "VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID",
+ 1000129003: "VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID",
+ 1000129004: "VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID",
+ 1000129005: "VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID",
+ 1000129006: "VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID",
+ 1000134000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_FEATURES_AMDX",
+ 1000134001: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_PROPERTIES_AMDX",
+ 1000134002: "VK_STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_SCRATCH_SIZE_AMDX",
+ 1000134003: "VK_STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_CREATE_INFO_AMDX",
+ 1000134004: "VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_NODE_CREATE_INFO_AMDX",
+ 1000143000: "VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT",
+ 1000143001: "VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT",
+ 1000143002: "VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT",
+ 1000143003: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT",
+ 1000143004: "VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT",
+ 1000148000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT",
+ 1000148001: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT",
+ 1000148002: "VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT",
+ 1000149000: "VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV",
+ 1000150007: "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR",
+ 1000150000: "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR",
+ 1000150002: "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR",
+ 1000150003: "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR",
+ 1000150004: "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR",
+ 1000150005: "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR",
+ 1000150006: "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR",
+ 1000150009: "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR",
+ 1000150010: "VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR",
+ 1000150011: "VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR",
+ 1000150012: "VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR",
+ 1000150013: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR",
+ 1000150014: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR",
+ 1000150017: "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR",
+ 1000150020: "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR",
+ 1000347000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR",
+ 1000347001: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR",
+ 1000150015: "VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR",
+ 1000150016: "VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR",
+ 1000150018: "VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR",
+ 1000348013: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR",
+ 1000152000: "VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV",
+ 1000154000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV",
+ 1000154001: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV",
+ 1000158000: "VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT",
+ 1000158002: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT",
+ 1000158003: "VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT",
+ 1000158004: "VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT",
+ 1000158005: "VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT",
+ 1000158006: "VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT",
+ 1000160000: "VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT",
+ 1000160001: "VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT",
+ 1000163000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR",
+ 1000163001: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR",
+ 1000164000: "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV",
+ 1000164001: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV",
+ 1000164002: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV",
+ 1000164005: "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV",
+ 1000165000: "VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV",
+ 1000165001: "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV",
+ 1000165003: "VK_STRUCTURE_TYPE_GEOMETRY_NV",
+ 1000165004: "VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV",
+ 1000165005: "VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV",
+ 1000165006: "VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV",
+ 1000165007: "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV",
+ 1000165008: "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV",
+ 1000165009: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV",
+ 1000165011: "VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV",
+ 1000165012: "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV",
+ 1000166000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV",
+ 1000166001: "VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV",
+ 1000170000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT",
+ 1000170001: "VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT",
+ 1000178000: "VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT",
+ 1000178001: "VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT",
+ 1000178002: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT",
+ 1000181000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR",
+ 1000183000: "VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD",
+ 1000184000: "VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT",
+ 1000185000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD",
+ 1000187000: "VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_KHR",
+ 1000187001: "VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR",
+ 1000187002: "VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR",
+ 1000187003: "VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_KHR",
+ 1000187004: "VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_KHR",
+ 1000187005: "VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_KHR",
+ 1000174000: "VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR",
+ 1000388000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR",
+ 1000388001: "VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR",
+ 1000189000: "VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD",
+ 1000190000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT",
+ 1000190001: "VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT",
+ 1000190002: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT",
+ 1000191000: "VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP",
+ 1000201000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV",
+ 1000202000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV",
+ 1000202001: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV",
+ 1000204000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV",
+ 1000205000: "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV",
+ 1000205002: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV",
+ 1000206000: "VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV",
+ 1000206001: "VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV",
+ 1000209000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL",
+ 1000210000: "VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL",
+ 1000210001: "VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL",
+ 1000210002: "VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL",
+ 1000210003: "VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL",
+ 1000210004: "VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL",
+ 1000210005: "VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL",
+ 1000212000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT",
+ 1000213000: "VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD",
+ 1000213001: "VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD",
+ 1000214000: "VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA",
+ 1000217000: "VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT",
+ 1000218000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT",
+ 1000218001: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT",
+ 1000218002: "VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT",
+ 1000226000: "VK_STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR",
+ 1000226001: "VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR",
+ 1000226002: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR",
+ 1000226003: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR",
+ 1000226004: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR",
+ 1000227000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD",
+ 1000229000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD",
+ 1000234000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT",
+ 1000237000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT",
+ 1000238000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT",
+ 1000238001: "VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT",
+ 1000239000: "VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR",
+ 1000240000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV",
+ 1000244000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT",
+ 1000244002: "VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT",
+ 1000247000: "VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT",
+ 1000248000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR",
+ 1000249000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV",
+ 1000249001: "VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV",
+ 1000249002: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV",
+ 1000250000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV",
+ 1000250001: "VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV",
+ 1000250002: "VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV",
+ 1000251000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT",
+ 1000252000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT",
+ 1000254000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT",
+ 1000254001: "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT",
+ 1000254002: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT",
+ 1000255000: "VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT",
+ 1000255002: "VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT",
+ 1000255001: "VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT",
+ 1000256000: "VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT",
+ 1000259000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT",
+ 1000259001: "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT",
+ 1000259002: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT",
+ 1000260000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT",
+ 1000265000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT",
+ 1000267000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT",
+ 1000269000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR",
+ 1000269001: "VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR",
+ 1000269002: "VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR",
+ 1000269003: "VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR",
+ 1000269004: "VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR",
+ 1000269005: "VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR",
+ 1000270000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXT",
+ 1000270001: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXT",
+ 1000270002: "VK_STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY_EXT",
+ 1000270003: "VK_STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY_EXT",
+ 1000270004: "VK_STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO_EXT",
+ 1000270005: "VK_STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO_EXT",
+ 1000270006: "VK_STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO_EXT",
+ 1000270007: "VK_STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO_EXT",
+ 1000270008: "VK_STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE_EXT",
+ 1000270009: "VK_STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT",
+ 1000271000: "VK_STRUCTURE_TYPE_MEMORY_MAP_INFO_KHR",
+ 1000271001: "VK_STRUCTURE_TYPE_MEMORY_UNMAP_INFO_KHR",
+ 1000273000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT",
+ 1000274000: "VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT",
+ 1000274001: "VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT",
+ 1000274002: "VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT",
+ 1000275000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT",
+ 1000275001: "VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT",
+ 1000275002: "VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT",
+ 1000275003: "VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT",
+ 1000275004: "VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT",
+ 1000275005: "VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_EXT",
+ 1000277000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV",
+ 1000277001: "VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV",
+ 1000277002: "VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV",
+ 1000277003: "VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV",
+ 1000277004: "VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV",
+ 1000277005: "VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV",
+ 1000277006: "VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV",
+ 1000277007: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV",
+ 1000278000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV",
+ 1000278001: "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV",
+ 1000281000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT",
+ 1000282000: "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM",
+ 1000282001: "VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM",
+ 1000283000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_BIAS_CONTROL_FEATURES_EXT",
+ 1000283001: "VK_STRUCTURE_TYPE_DEPTH_BIAS_INFO_EXT",
+ 1000283002: "VK_STRUCTURE_TYPE_DEPTH_BIAS_REPRESENTATION_INFO_EXT",
+ 1000284000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT",
+ 1000284001: "VK_STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT",
+ 1000284002: "VK_STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT",
+ 1000286000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT",
+ 1000286001: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT",
+ 1000287000: "VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT",
+ 1000287001: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT",
+ 1000287002: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT",
+ 1000290000: "VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR",
+ 1000292000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_BARRIER_FEATURES_NV",
+ 1000292001: "VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_BARRIER_NV",
+ 1000292002: "VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_BARRIER_CREATE_INFO_NV",
+ 1000294000: "VK_STRUCTURE_TYPE_PRESENT_ID_KHR",
+ 1000294001: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR",
+ 1000299000: "VK_STRUCTURE_TYPE_VIDEO_ENCODE_INFO_KHR",
+ 1000299001: "VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_INFO_KHR",
+ 1000299002: "VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_LAYER_INFO_KHR",
+ 1000299003: "VK_STRUCTURE_TYPE_VIDEO_ENCODE_CAPABILITIES_KHR",
+ 1000299004: "VK_STRUCTURE_TYPE_VIDEO_ENCODE_USAGE_INFO_KHR",
+ 1000299005: "VK_STRUCTURE_TYPE_QUERY_POOL_VIDEO_ENCODE_FEEDBACK_CREATE_INFO_KHR",
+ 1000299006: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR",
+ 1000299007: "VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUALITY_LEVEL_PROPERTIES_KHR",
+ 1000299008: "VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR",
+ 1000299009: "VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_PARAMETERS_GET_INFO_KHR",
+ 1000299010: "VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_PARAMETERS_FEEDBACK_INFO_KHR",
+ 1000300000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV",
+ 1000300001: "VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV",
+ 1000307000: "VK_STRUCTURE_TYPE_CUDA_MODULE_CREATE_INFO_NV",
+ 1000307001: "VK_STRUCTURE_TYPE_CUDA_FUNCTION_CREATE_INFO_NV",
+ 1000307002: "VK_STRUCTURE_TYPE_CUDA_LAUNCH_INFO_NV",
+ 1000307003: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_FEATURES_NV",
+ 1000307004: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_PROPERTIES_NV",
+ 1000308000: "VK_STRUCTURE_TYPE_REFRESH_OBJECT_LIST_KHR",
+ 1000310000: "VK_STRUCTURE_TYPE_QUERY_LOW_LATENCY_SUPPORT_NV",
+ 1000311000: "VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECT_CREATE_INFO_EXT",
+ 1000311001: "VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECTS_INFO_EXT",
+ 1000311002: "VK_STRUCTURE_TYPE_EXPORT_METAL_DEVICE_INFO_EXT",
+ 1000311003: "VK_STRUCTURE_TYPE_EXPORT_METAL_COMMAND_QUEUE_INFO_EXT",
+ 1000311004: "VK_STRUCTURE_TYPE_EXPORT_METAL_BUFFER_INFO_EXT",
+ 1000311005: "VK_STRUCTURE_TYPE_IMPORT_METAL_BUFFER_INFO_EXT",
+ 1000311006: "VK_STRUCTURE_TYPE_EXPORT_METAL_TEXTURE_INFO_EXT",
+ 1000311007: "VK_STRUCTURE_TYPE_IMPORT_METAL_TEXTURE_INFO_EXT",
+ 1000311008: "VK_STRUCTURE_TYPE_EXPORT_METAL_IO_SURFACE_INFO_EXT",
+ 1000311009: "VK_STRUCTURE_TYPE_IMPORT_METAL_IO_SURFACE_INFO_EXT",
+ 1000311010: "VK_STRUCTURE_TYPE_EXPORT_METAL_SHARED_EVENT_INFO_EXT",
+ 1000311011: "VK_STRUCTURE_TYPE_IMPORT_METAL_SHARED_EVENT_INFO_EXT",
+ 1000314008: "VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV",
+ 1000314009: "VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV",
+ 1000316000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT",
+ 1000316001: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT",
+ 1000316002: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT",
+ 1000316003: "VK_STRUCTURE_TYPE_DESCRIPTOR_ADDRESS_INFO_EXT",
+ 1000316004: "VK_STRUCTURE_TYPE_DESCRIPTOR_GET_INFO_EXT",
+ 1000316005: "VK_STRUCTURE_TYPE_BUFFER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT",
+ 1000316006: "VK_STRUCTURE_TYPE_IMAGE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT",
+ 1000316007: "VK_STRUCTURE_TYPE_IMAGE_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_EXT",
+ 1000316008: "VK_STRUCTURE_TYPE_SAMPLER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT",
+ 1000316010: "VK_STRUCTURE_TYPE_OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT",
+ 1000316011: "VK_STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_INFO_EXT",
+ 1000316012: "VK_STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_PUSH_DESCRIPTOR_BUFFER_HANDLE_EXT",
+ 1000316009: "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT",
+ 1000320000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT",
+ 1000320001: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT",
+ 1000320002: "VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT",
+ 1000321000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_FEATURES_AMD",
+ 1000203000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR",
+ 1000322000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_PROPERTIES_KHR",
+ 1000323000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR",
+ 1000326000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV",
+ 1000326001: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV",
+ 1000326002: "VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV",
+ 1000327000: "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV",
+ 1000327001: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV",
+ 1000327002: "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MOTION_INFO_NV",
+ 1000328000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT",
+ 1000328001: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT",
+ 1000330000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT",
+ 1000332000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT",
+ 1000332001: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT",
+ 1000333000: "VK_STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM",
+ 1000336000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR",
+ 1000338000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT",
+ 1000338001: "VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT",
+ 1000338004: "VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT",
+ 1000339000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT",
+ 1000340000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT",
+ 1000341000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_EXT",
+ 1000341001: "VK_STRUCTURE_TYPE_DEVICE_FAULT_COUNTS_EXT",
+ 1000341002: "VK_STRUCTURE_TYPE_DEVICE_FAULT_INFO_EXT",
+ 1000344000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT",
+ 1000346000: "VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT",
+ 1000352000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT",
+ 1000352001: "VK_STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT",
+ 1000352002: "VK_STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT",
+ 1000353000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT",
+ 1000354000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ADDRESS_BINDING_REPORT_FEATURES_EXT",
+ 1000354001: "VK_STRUCTURE_TYPE_DEVICE_ADDRESS_BINDING_CALLBACK_DATA_EXT",
+ 1000355000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT",
+ 1000355001: "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT",
+ 1000356000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT",
+ 1000364000: "VK_STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA",
+ 1000364001: "VK_STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA",
+ 1000364002: "VK_STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA",
+ 1000365000: "VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA",
+ 1000365001: "VK_STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA",
+ 1000366000: "VK_STRUCTURE_TYPE_BUFFER_COLLECTION_CREATE_INFO_FUCHSIA",
+ 1000366001: "VK_STRUCTURE_TYPE_IMPORT_MEMORY_BUFFER_COLLECTION_FUCHSIA",
+ 1000366002: "VK_STRUCTURE_TYPE_BUFFER_COLLECTION_IMAGE_CREATE_INFO_FUCHSIA",
+ 1000366003: "VK_STRUCTURE_TYPE_BUFFER_COLLECTION_PROPERTIES_FUCHSIA",
+ 1000366004: "VK_STRUCTURE_TYPE_BUFFER_CONSTRAINTS_INFO_FUCHSIA",
+ 1000366005: "VK_STRUCTURE_TYPE_BUFFER_COLLECTION_BUFFER_CREATE_INFO_FUCHSIA",
+ 1000366006: "VK_STRUCTURE_TYPE_IMAGE_CONSTRAINTS_INFO_FUCHSIA",
+ 1000366007: "VK_STRUCTURE_TYPE_IMAGE_FORMAT_CONSTRAINTS_INFO_FUCHSIA",
+ 1000366008: "VK_STRUCTURE_TYPE_SYSMEM_COLOR_SPACE_FUCHSIA",
+ 1000366009: "VK_STRUCTURE_TYPE_BUFFER_COLLECTION_CONSTRAINTS_INFO_FUCHSIA",
+ 1000369000: "VK_STRUCTURE_TYPE_SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI",
+ 1000369001: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI",
+ 1000369002: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI",
+ 1000370000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI",
+ 1000371000: "VK_STRUCTURE_TYPE_MEMORY_GET_REMOTE_ADDRESS_INFO_NV",
+ 1000371001: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV",
+ 1000372000: "VK_STRUCTURE_TYPE_PIPELINE_PROPERTIES_IDENTIFIER_EXT",
+ 1000372001: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT",
+ 1000373000: "VK_STRUCTURE_TYPE_IMPORT_FENCE_SCI_SYNC_INFO_NV",
+ 1000373001: "VK_STRUCTURE_TYPE_EXPORT_FENCE_SCI_SYNC_INFO_NV",
+ 1000373002: "VK_STRUCTURE_TYPE_FENCE_GET_SCI_SYNC_INFO_NV",
+ 1000373003: "VK_STRUCTURE_TYPE_SCI_SYNC_ATTRIBUTES_INFO_NV",
+ 1000373004: "VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_SCI_SYNC_INFO_NV",
+ 1000373005: "VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_SCI_SYNC_INFO_NV",
+ 1000373006: "VK_STRUCTURE_TYPE_SEMAPHORE_GET_SCI_SYNC_INFO_NV",
+ 1000373007: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SCI_SYNC_FEATURES_NV",
+ 1000374000: "VK_STRUCTURE_TYPE_IMPORT_MEMORY_SCI_BUF_INFO_NV",
+ 1000374001: "VK_STRUCTURE_TYPE_EXPORT_MEMORY_SCI_BUF_INFO_NV",
+ 1000374002: "VK_STRUCTURE_TYPE_MEMORY_GET_SCI_BUF_INFO_NV",
+ 1000374003: "VK_STRUCTURE_TYPE_MEMORY_SCI_BUF_PROPERTIES_NV",
+ 1000374004: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCI_BUF_FEATURES_NV",
+ 1000375000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAME_BOUNDARY_FEATURES_EXT",
+ 1000375001: "VK_STRUCTURE_TYPE_FRAME_BOUNDARY_EXT",
+ 1000376000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT",
+ 1000376001: "VK_STRUCTURE_TYPE_SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT",
+ 1000376002: "VK_STRUCTURE_TYPE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_INFO_EXT",
+ 1000377000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT",
+ 1000378000: "VK_STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX",
+ 1000381000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT",
+ 1000381001: "VK_STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT",
+ 1000382000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT",
+ 1000386000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR",
+ 1000391000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT",
+ 1000391001: "VK_STRUCTURE_TYPE_IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT",
+ 1000392000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT",
+ 1000392001: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT",
+ 1000393000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT",
+ 1000395000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT",
+ 1000395001: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_PROPERTIES_EXT",
+ 1000396000: "VK_STRUCTURE_TYPE_MICROMAP_BUILD_INFO_EXT",
+ 1000396001: "VK_STRUCTURE_TYPE_MICROMAP_VERSION_INFO_EXT",
+ 1000396002: "VK_STRUCTURE_TYPE_COPY_MICROMAP_INFO_EXT",
+ 1000396003: "VK_STRUCTURE_TYPE_COPY_MICROMAP_TO_MEMORY_INFO_EXT",
+ 1000396004: "VK_STRUCTURE_TYPE_COPY_MEMORY_TO_MICROMAP_INFO_EXT",
+ 1000396005: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_EXT",
+ 1000396006: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_EXT",
+ 1000396007: "VK_STRUCTURE_TYPE_MICROMAP_CREATE_INFO_EXT",
+ 1000396008: "VK_STRUCTURE_TYPE_MICROMAP_BUILD_SIZES_INFO_EXT",
+ 1000396009: "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT",
+ 1000397000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_FEATURES_NV",
+ 1000397001: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_PROPERTIES_NV",
+ 1000397002: "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_DISPLACEMENT_MICROMAP_NV",
+ 1000404000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI",
+ 1000404001: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI",
+ 1000411000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT",
+ 1000411001: "VK_STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT",
+ 1000412000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT",
+ 1000415000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_ARM",
+ 1000417000: "VK_STRUCTURE_TYPE_DEVICE_QUEUE_SHADER_CORE_CONTROL_CREATE_INFO_ARM",
+ 1000417001: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_FEATURES_ARM",
+ 1000417002: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_PROPERTIES_ARM",
+ 1000418000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT",
+ 1000418001: "VK_STRUCTURE_TYPE_IMAGE_VIEW_SLICED_CREATE_INFO_EXT",
+ 1000420000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE",
+ 1000420001: "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_BINDING_REFERENCE_VALVE",
+ 1000420002: "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE",
+ 1000421000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT",
+ 1000422000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT",
+ 1000425000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM",
+ 1000425001: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM",
+ 1000425002: "VK_STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM",
+ 1000426000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV",
+ 1000426001: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV",
+ 1000427000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV",
+ 1000427001: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV",
+ 1000428000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_COMPUTE_FEATURES_NV",
+ 1000428001: "VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_INDIRECT_BUFFER_INFO_NV",
+ 1000428002: "VK_STRUCTURE_TYPE_PIPELINE_INDIRECT_DEVICE_ADDRESS_INFO_NV",
+ 1000430000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV",
+ 1000435000: "VK_STRUCTURE_TYPE_APPLICATION_PARAMETERS_EXT",
+ 1000437000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT",
+ 1000440000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM",
+ 1000440001: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM",
+ 1000440002: "VK_STRUCTURE_TYPE_IMAGE_VIEW_SAMPLE_WEIGHT_CREATE_INFO_QCOM",
+ 1000451000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_FEATURES_EXT",
+ 1000451001: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_PROPERTIES_EXT",
+ 1000453000: "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT",
+ 1000455000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT",
+ 1000455001: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT",
+ 1000458000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT",
+ 1000458001: "VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_CONTROL_EXT",
+ 1000458002: "VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_FEEDBACK_CREATE_INFO_EXT",
+ 1000458003: "VK_STRUCTURE_TYPE_RENDER_PASS_SUBPASS_FEEDBACK_CREATE_INFO_EXT",
+ 1000459000: "VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_INFO_LUNARG",
+ 1000459001: "VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_LIST_LUNARG",
+ 1000462000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT",
+ 1000462001: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT",
+ 1000462002: "VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_MODULE_IDENTIFIER_CREATE_INFO_EXT",
+ 1000462003: "VK_STRUCTURE_TYPE_SHADER_MODULE_IDENTIFIER_EXT",
+ 1000342000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT",
+ 1000464000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_FEATURES_NV",
+ 1000464001: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_PROPERTIES_NV",
+ 1000464002: "VK_STRUCTURE_TYPE_OPTICAL_FLOW_IMAGE_FORMAT_INFO_NV",
+ 1000464003: "VK_STRUCTURE_TYPE_OPTICAL_FLOW_IMAGE_FORMAT_PROPERTIES_NV",
+ 1000464004: "VK_STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_INFO_NV",
+ 1000464005: "VK_STRUCTURE_TYPE_OPTICAL_FLOW_EXECUTE_INFO_NV",
+ 1000464010: "VK_STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_PRIVATE_DATA_INFO_NV",
+ 1000465000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT",
+ 1000466000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT",
+ 1000468000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_FEATURES_ANDROID",
+ 1000468001: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_PROPERTIES_ANDROID",
+ 1000468002: "VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_RESOLVE_PROPERTIES_ANDROID",
+ 1000470000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES_KHR",
+ 1000470001: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES_KHR",
+ 1000470003: "VK_STRUCTURE_TYPE_RENDERING_AREA_INFO_KHR",
+ 1000470004: "VK_STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO_KHR",
+ 1000338002: "VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_KHR",
+ 1000338003: "VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_KHR",
+ 1000470005: "VK_STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO_KHR",
+ 1000470006: "VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO_KHR",
+ 1000481000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR",
+ 1000482000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT",
+ 1000482001: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT",
+ 1000482002: "VK_STRUCTURE_TYPE_SHADER_CREATE_INFO_EXT",
+ 1000352001: "VK_STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT",
+ 1000352002: "VK_STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT",
+ 1000484000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM",
+ 1000484001: "VK_STRUCTURE_TYPE_TILE_PROPERTIES_QCOM",
+ 1000485000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_AMIGO_PROFILING_FEATURES_SEC",
+ 1000485001: "VK_STRUCTURE_TYPE_AMIGO_PROFILING_SUBMIT_INFO_SEC",
+ 1000488000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM",
+ 1000489000: "VK_STRUCTURE_TYPE_SEMAPHORE_SCI_SYNC_POOL_CREATE_INFO_NV",
+ 1000489001: "VK_STRUCTURE_TYPE_SEMAPHORE_SCI_SYNC_CREATE_INFO_NV",
+ 1000489002: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SCI_SYNC_2_FEATURES_NV",
+ 1000373000: "VK_STRUCTURE_TYPE_IMPORT_FENCE_SCI_SYNC_INFO_NV",
+ 1000373001: "VK_STRUCTURE_TYPE_EXPORT_FENCE_SCI_SYNC_INFO_NV",
+ 1000373002: "VK_STRUCTURE_TYPE_FENCE_GET_SCI_SYNC_INFO_NV",
+ 1000373003: "VK_STRUCTURE_TYPE_SCI_SYNC_ATTRIBUTES_INFO_NV",
+ 1000490000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV",
+ 1000490001: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV",
+ 1000492000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_FEATURES_NV",
+ 1000492001: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_PROPERTIES_NV",
+ 1000351000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT",
+ 1000351002: "VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT",
+ 1000497000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM",
+ 1000497001: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM",
+ 1000498000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT",
+ 1000499000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT",
+ 1000505000: "VK_STRUCTURE_TYPE_LATENCY_SLEEP_MODE_INFO_NV",
+ 1000505001: "VK_STRUCTURE_TYPE_LATENCY_SLEEP_INFO_NV",
+ 1000505002: "VK_STRUCTURE_TYPE_SET_LATENCY_MARKER_INFO_NV",
+ 1000505003: "VK_STRUCTURE_TYPE_GET_LATENCY_MARKER_INFO_NV",
+ 1000505004: "VK_STRUCTURE_TYPE_LATENCY_TIMINGS_FRAME_REPORT_NV",
+ 1000505005: "VK_STRUCTURE_TYPE_LATENCY_SUBMISSION_PRESENT_ID_NV",
+ 1000505006: "VK_STRUCTURE_TYPE_OUT_OF_BAND_QUEUE_TYPE_INFO_NV",
+ 1000505007: "VK_STRUCTURE_TYPE_SWAPCHAIN_LATENCY_CREATE_INFO_NV",
+ 1000505008: "VK_STRUCTURE_TYPE_LATENCY_SURFACE_CAPABILITIES_NV",
+ 1000506000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_KHR",
+ 1000506001: "VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_KHR",
+ 1000506002: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_KHR",
+ 1000510000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM",
+ 1000510001: "VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_RENDER_AREAS_RENDER_PASS_BEGIN_INFO_QCOM",
+ 1000518000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_FEATURES_QCOM",
+ 1000518001: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_PROPERTIES_QCOM",
+ 1000518002: "VK_STRUCTURE_TYPE_SAMPLER_BLOCK_MATCH_WINDOW_CREATE_INFO_QCOM",
+ 1000519000: "VK_STRUCTURE_TYPE_SAMPLER_CUBIC_WEIGHTS_CREATE_INFO_QCOM",
+ 1000519001: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_WEIGHTS_FEATURES_QCOM",
+ 1000519002: "VK_STRUCTURE_TYPE_BLIT_IMAGE_CUBIC_WEIGHTS_INFO_QCOM",
+ 1000520000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_DEGAMMA_FEATURES_QCOM",
+ 1000520001: "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_YCBCR_DEGAMMA_CREATE_INFO_QCOM",
+ 1000521000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_CLAMP_FEATURES_QCOM",
+ 1000524000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_FEATURES_EXT",
+ 1000529000: "VK_STRUCTURE_TYPE_SCREEN_BUFFER_PROPERTIES_QNX",
+ 1000529001: "VK_STRUCTURE_TYPE_SCREEN_BUFFER_FORMAT_PROPERTIES_QNX",
+ 1000529002: "VK_STRUCTURE_TYPE_IMPORT_SCREEN_BUFFER_INFO_QNX",
+ 1000529003: "VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_QNX",
+ 1000529004: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCREEN_BUFFER_FEATURES_QNX",
+ 1000530000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_DRIVER_PROPERTIES_MSFT",
+ 1000546000: "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_POOL_OVERALLOCATION_FEATURES_NV",
+ 1000385000: "VK_STRUCTURE_TYPE_IMPORT_COLOR_BUFFER_GOOGLE",
+ 1000385001: "VK_STRUCTURE_TYPE_IMPORT_BUFFER_GOOGLE",
+ 1000385002: "VK_STRUCTURE_TYPE_CREATE_BLOB_GOOGLE",
+}
+
+VkSubpassContents = {
+ 0: "VK_SUBPASS_CONTENTS_INLINE",
+ 1: "VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS",
+ 1000451000: "VK_SUBPASS_CONTENTS_INLINE_AND_SECONDARY_COMMAND_BUFFERS_EXT",
+}
+
+VkVertexInputRate = {
+ 0: "VK_VERTEX_INPUT_RATE_VERTEX",
+ 1: "VK_VERTEX_INPUT_RATE_INSTANCE",
+}
+