[
  {
    "path": ".gitignore",
    "content": ".vscode\n/#docs\n/build\n/examples/_build\n/resources/vk.xml\n/resources/video.xml\n*.spirv"
  },
  {
    "path": "CMakeLists.txt",
    "content": "cmake_minimum_required(VERSION 3.10)\n\n# Extract version.\nfile(STRINGS \"${CMAKE_CURRENT_SOURCE_DIR}/vkbind.h\" VKBIND_VERSION_LINE REGEX \"vkbind - v[0-9]+\\\\.[0-9]+\\\\.[0-9]+\\\\.[0-9]+\")\n\nstring(REGEX MATCH \"v([0-9]+\\\\.[0-9]+\\\\.[0-9]+\\\\.[0-9]+)\" _ ${VKBIND_VERSION_LINE})\nset(VKBIND_VERSION ${CMAKE_MATCH_1})\n\nmessage(STATUS \"vkbind Version: ${VKBIND_VERSION}\")\n\nproject(vkbind VERSION ${VKBIND_VERSION})\n\n\n# Options\noption(VKBIND_BUILD_EXAMPLES \"Build vkbind examples\"            OFF)\noption(VKBIND_BUILD_TESTS    \"Build vkbind tests\"               OFF)\noption(VKBIND_BUILD_TOOLS    \"Build vkbind tools\"               OFF)\noption(VKBIND_FORCE_CXX      \"Force compilation as C++\"         OFF)\noption(VKBIND_FORCE_C89      \"Force compilation as C89\"         OFF)\n\n\n# Construct compiler options.\nset(COMPILE_OPTIONS)\n\nif(VKBIND_FORCE_CXX AND VKBIND_FORCE_C89)\n    message(FATAL_ERROR \"VKBIND_FORCE_CXX and VKBIND_FORCE_C89 cannot be enabled at the same time.\")\nendif()\n\nif(VKBIND_FORCE_CXX)\n    if(CMAKE_CXX_COMPILER_ID STREQUAL \"GNU\" OR CMAKE_CXX_COMPILER_ID MATCHES \"Clang\")\n        message(STATUS \"Compiling as C++ (GNU/Clang)\")\n        list(APPEND COMPILE_OPTIONS -x c++)\n    elseif(CMAKE_CXX_COMPILER_ID STREQUAL \"MSVC\")\n        message(STATUS \"Compiling as C++ (MSVC)\")\n        list(APPEND COMPILE_OPTIONS /TP)\n    else()\n        message(WARNING \"VKBIND_FORCE_CXX is enabled but the compiler does not support it. Ignoring.\")\n    endif()\nendif()\n\nif(VKBIND_FORCE_C89)\n    if(CMAKE_CXX_COMPILER_ID STREQUAL \"GNU\" OR CMAKE_CXX_COMPILER_ID MATCHES \"Clang\")\n        message(STATUS \"Compiling as C89\")\n        list(APPEND COMPILE_OPTIONS -std=c89)\n    elseif(CMAKE_CXX_COMPILER_ID STREQUAL \"MSVC\")\n        message(WARNING \"MSVC does not support forcing C89. VKBIND_FORCE_C89 ignored.\")\n    else()\n        message(WARNING \"VKBIND_FORCE_C89 is enabled but the compiler does not support it. Ingoring.\")\n    endif()\nendif()\n\n# Warnings\nif(CMAKE_CXX_COMPILER_ID STREQUAL \"GNU\" OR CMAKE_CXX_COMPILER_ID MATCHES \"Clang\")\n    list(APPEND COMPILE_OPTIONS -Wall -Wextra -Wpedantic)\nelseif(CMAKE_CXX_COMPILER_ID STREQUAL \"MSVC\")\n    #list(APPEND COMPILE_OPTIONS /W4)\nendif()\n\n\n# Link libraries\nset(COMMON_LINK_LIBRARIES)\n\nif (UNIX)\n    list(APPEND COMMON_LINK_LIBRARIES dl)      # For dlopen(), etc. Most compilers will link to this by default, but some may not.\n    list(APPEND COMMON_LINK_LIBRARIES pthread) # Some compilers will not link to pthread by default so list it here just in case.\n    list(APPEND COMMON_LINK_LIBRARIES m)\n\n    # If we're compiling for 32-bit ARM we need to link to -latomic.\n    if(CMAKE_SYSTEM_PROCESSOR MATCHES \"^arm\" AND NOT CMAKE_SYSTEM_PROCESSOR MATCHES \"aarch64\")\n        list(APPEND COMMON_LINK_LIBRARIES atomic)\n    endif()\n    \n    # X11 libraries for Vulkan surface support\n    find_package(PkgConfig QUIET)\n    if(PkgConfig_FOUND)\n        pkg_check_modules(X11 QUIET x11)\n        if(X11_FOUND)\n            list(APPEND COMMON_LINK_LIBRARIES ${X11_LIBRARIES})\n            message(STATUS \"Found X11 libraries: ${X11_LIBRARIES}\")\n        else()\n            # Fallback to standard X11 library\n            list(APPEND COMMON_LINK_LIBRARIES X11)\n            message(STATUS \"Using fallback X11 library\")\n        endif()\n    else()\n        # Fallback to standard X11 library\n        list(APPEND COMMON_LINK_LIBRARIES X11)\n        message(STATUS \"Using fallback X11 library (no pkg-config)\")\n    endif()\nendif()\n\n\n# Common interface\nadd_library(vkbind_common INTERFACE)\ntarget_compile_options(vkbind_common INTERFACE ${COMPILE_OPTIONS})\ntarget_link_libraries (vkbind_common INTERFACE ${COMMON_LINK_LIBRARIES})\n\n\n# Examples\nif (VKBIND_BUILD_EXAMPLES)\n    add_executable(01_Fundamentals examples/01_Fundamentals/01_Fundamentals.c)\n    target_link_libraries(01_Fundamentals vkbind_common)\nendif()\n\n# Tools\nif (VKBIND_BUILD_TOOLS)\n    add_executable(vkbind_build source/vkbind_build.cpp)\n    target_link_libraries(vkbind_build vkbind_common)\n\n    #add_executable(vkbind_example_codegen source/vkbind_example_codegen.cpp)\n    #target_link_libraries(vkbind_example_codegen vkbind_common)\nendif()\n"
  },
  {
    "path": "README.md",
    "content": "\n<h4 align=\"center\">A single file Vulkan header and API loader.</h4>\n\n<p align=\"center\">\n    <a href=\"https://discord.gg/9vpqbjU\"><img src=\"https://img.shields.io/discord/712952679415939085?label=discord&logo=discord&style=flat-square\" alt=\"discord\"></a>\n    <a href=\"https://fosstodon.org/@mackron\"><img src=\"https://img.shields.io/mastodon/follow/109293691403797709?color=blue&domain=https%3A%2F%2Ffosstodon.org&label=mastodon&logo=mastodon&style=flat-square\" alt=\"mastodon\"></a>\n</p>\n\nvkbind is a Vulkan API loader and includes a full implementation of the Vulkan headers (auto-generated from the\nVulkan spec) so there's no need for the offical headers or SDK. Unlike the official headers, the platform-specific\nsections are all contained within the same file.\n\n\nUsage\n=====\nFor platforms that statically expose all Vulkan APIs you can use vkbind like so:\n```c\n#define VKBIND_IMPLEMENTATION\n#include \"vkbind.h\"\n\nint main()\n{\n    VkResult result = vkbInit(NULL);\n    if (result != VK_SUCCESS) {\n        printf(\"Failed to initialize vkbind.\");\n        return -1;\n    }\n\n    // Do stuff here.\n\n    vkbUninit();\n    return 0;\n}\n```\nFor those platforms that do not statically expose all Vulkan APIs, you should do something like this:\n```c\n#define VKBIND_IMPLEMENTATION\n#include \"vkbind.h\"\n\nint main()\n{\n    VkbAPI api;\n    VkResult result = vkbInit(&api);\n    if (result != VK_SUCCESS) {\n        printf(\"Failed to initialize vkbind.\");\n        return -1;\n    }\n    \n    // ... Create your Vulkan instance here (vkCreateInstance) ...\n\n    result = vkbInitInstanceAPI(instance, &api);\n    if (result != VK_SUCCESS) {\n        printf(\"Failed to initialize instance API.\");\n        return -2;\n    }\n\n    result = vkbBindAPI(&api);  // <-- Optional. Can call APIs directly like api.vkDestroyInstance().\n    if (result != VK_SUCCESS) {\n        printf(\"Failed to bind instance API.\");\n        return -3;\n    }\n\n    // Do stuff here.\n\n    vkbUninit();\n    return 0;\n}\n```\nThe code above uses the `VkbAPI` structure which contains function pointers to all Vulkan APIs. The idea is that you\nfirst initialize with `vkbInit()`, then call `vkbInitInstanceAPI()` after you've created your Vulkan instance. The\n`VkbAPI` object will be filled with usable function pointers at this point (so long as they're supported by the platform).\nIn this example, the instance APIs are bound to global scope using `vkbBindAPI()`, however if you have multiple\ninstances running at the same time, you should instead invoke the functions directly from the `VkbAPI` object.\n\nYou can also initialize the `VkbAPI` object from a Vulkan device. This is optional, and is intended as an optimization\nto avoid the cost of internal dispatching. To use this, you first initialize your `VkbAPI` object with\n`vkbInitializeInstanceAPI()`, then call `vkbInitializeDeviceAPI()`, passing in the same `VkbAPI` object.\n```c\nVkbAPI api;\nvkbInitInstanceAPI(instance, &api);\nvkbInitDeviceAPI(device, &api);\nvkbBindAPI(&api);\n```\n\n\nExamples\n========\nYou can find some general Vulkan examples in the \"examples\" folder. The first example, 01_Fundamentals, is completely\nflat and self contained in a single code file. This is unlike most of the other popular example projects out there which\nare full of abstractions which make things too hard to follow. It covers most (all?) of the fundamentals any real Vulkan\nprogram is going to need, and tries to explain how things like vertex layouts and descriptor sets interact with shaders\nwhich I think is something other examples seem to overlook.\n\nFor practicality, future examples will not be entirely flat, but should still be significantly better than other\npopular examples out there in terms of readability. \n\nNote that shaders are pre-compiled with glslangValidator (GLSL to SPIR-V compiler) and embedded into a source file for\neach example. This is just to avoid the need to worry about file IO for shaders and to focus on Vulkan itself.\n\n\nLicense\n=======\nPublic domain or MIT-0 (No Attribution). Choose whichever you prefer."
  },
  {
    "path": "examples/01_Fundamentals/01_Fundamentals.c",
    "content": "/*\nDemonstrates the fundamentals of the Vulkan API, including:\n\n  * Layers\n  * Extensions\n  * Physical and logical devices\n  * Queue families\n  * Swapchains\n  * Pipelines\n  * Vertex and index buffers\n  * Textures\n  * Uniform buffers\n  * Descriptor sets and how they connect to shaders\n  * Command buffers\n\nThis example is completely flat. The only library it uses is vkbind which is just a Vulkan API loader. The vkbind.h\nfile contains all of the Vulkan API declarations you need and is therefore a replacement for the official Vulkan\nheaders. Unlike the official Vulkan headers, vkbind includes all of the platform specific headers as well, as opposed\nto keeping them all separate which is just unnecessary.\n\nIn a real-world program you would not want to write Vulkan code as it's written in this example. This example is void\nof abstractions and functions in order to make it easier to see what's actually going on with Vulkan. The idea is to\nshow how to use Vulkan, not how to architecture your program. Also, resource cleanup is intentionally left out just to\nkeep things clean. A real program would probably want to clean everything up properly.\n\nCurrently only Windows is supported. This example will show you how to connect Vulkan to the Win32 windowing system\nwhich is something almost all programs will want to do, so including that here is something I think is valuable. I will\nlook into adding X11 support at some point later on.\n\nThis example is focused on how to use the Vulkan API, not how to achieve specific graphics effects. If you're looking\nfor an example for lighting, PBR, etc. you'll need to look elsewhere.\n\nNote that the program will close if you attempt to resize the window. This is due to the swapchain becoming invalid\nsince it's dimensions must always match that of the surface (the window, in this example). A normal program would want\nto detect this and re-create the swapchain. The proper way to do this would be to wrap swapchain creation in a\nfunction, but since we're keeping this example free of functions I'm just leaving it out. Once you understand how to\ncreate a swapchain, which is demonstrated in this example, it should be easy enough for you to figure out how to handle\nwindow resizes and re-create it.\n*/\n\n/*\nThe first thing to do is define which platforms you want to use. In our case we're only supporting Win32 for now. This\nis done by #define-ing one of the `VK_USE_PLATFORM_*_KHR` symbols before the header. This is standard Vulkan and is \nsomething you would need to do even if you were using the official headers instead of vkbind. This will enable some\nplatform-specific functionality that you'll need for displaying something in a window.\n*/\n#ifdef _WIN32\n#define VK_USE_PLATFORM_WIN32_KHR\n#else\n#define VK_USE_PLATFORM_XLIB_KHR\n#endif\n\n/*\nvkbind is a single file library. Use VKBIND_IMPLEMENTATION to define the implementation section. Make sure this is only\never done in a single source file. All of the Vulkan symbols will be defined in vkbind.h, so no need for the official\nVulkan headers.\n*/\n#define VKBIND_IMPLEMENTATION\n#include \"../../vkbind.h\"\n\n/*\nVulkan requires shaders to be specified in a binary format called SPIR-V. Unfortunately I haven't been able to find a\ngood, small GLSL -> SPIR-V compiler library which would enable me to embed the shader code directly into this file,\nwhich for demonstration purposes would be ideal. Instead I've pre-compiled the shader code with glslangValidator and\nembedded the raw binary data into the source file below. Doing it this way means there's no need to worry about\ndistracting you with file IO. I'm keeping this in a separate file to just keep it separate from the focus of this\nexample which is the Vulkan API.\n*/\n#include \"01_Fundamentals_VFS.c\"    /* <-- Compiled shader code is here. */\n\n/*\nThis is the raw texture data that we'll be uploading to the Vulkan API when we create texture object. The texel\nencoding we're using in this example is RGBA8 (or VK_FORMAT_R8G8B8A8_UNORM). We use this format for it's wide spread\nsupport. This texture is a small 2x2 texture. We'll be using nearest-neighbor filtering (also known as point\nfiltering) when displaying the texture on the quad. Moving counter clockwise starting from the left, the texture\nshould be red, green, blue, black. The alpha channel is always set to opaque, or 0xFF.\n*/\nstatic const uint32_t g_TextureSizeX = 2;\nstatic const uint32_t g_TextureSizeY = 2;\nstatic const uint32_t g_TextureDataRGBA[4] = {\n    0xFF0000FF, 0xFF000000, /* Encoding is 0xAABBGGRR. */\n    0xFF00FF00, 0xFFFF0000\n};\n\n#include <stdio.h>\n\n/* Platform-specific includes for X11 */\n#ifndef _WIN32\n#include <X11/Xlib.h>\n#include <X11/Xutil.h>\n#endif\n\n/*\nThis is just a standard, and empty, Win32 window procedure for event handling. The contents of this do not matter for\nthis example, but in a real program you'd handle your input and resizing stuff here. For resizing in particular, you\nwill likely want to recreate your swapchain (explained below). In this example, however, I'm not doing this because\nit would require a function which would mean I wouldn't be able to keep this example flat.\n*/\n#ifdef _WIN32\nstatic const char* g_WndClassName = \"vkbWindowClass\";\n\nstatic LRESULT DefaultWindowProcWin32(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)\n{\n    switch (msg)\n    {\n        case WM_CLOSE:\n        {\n            PostQuitMessage(0);\n            return 0;\n        }\n\n        default: break;\n    }\n\n    return DefWindowProcA(hWnd, msg, wParam, lParam);\n}\n#endif\n\n/*\nThis callback is used with the VK_EXT_debug_report extension. This just prints any messages that come through.\n*/\nVKAPI_ATTR VkBool32 VKAPI_CALL OnDebugReport(VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objectType, uint64_t object, size_t location, int32_t messageCode, const char* pLayerPrefix, const char* pMessage, void* pUserData)\n{\n    printf(\"%s\\n\", pMessage);\n\n    /* Unused. */\n    (void)flags;\n    (void)objectType;\n    (void)object;\n    (void)location;\n    (void)messageCode;\n    (void)pLayerPrefix;\n    (void)pUserData;\n\n    return VK_FALSE;\n}\n\n/*\nAnd here is the main function. Isn't it good to to have a Vulkan example where you can find main() without having to\nsearch for it?!\n*/\nint main(int argc, char** argv)\n{\n    (void)argc;\n    (void)argv;\n\n    /* Most Vulkan APIs return a result code. It's probably good practice to check these. :) */\n    VkResult result;\n\n    /*\n    The first thing to do is initialize vkbind. We're specifying a VkbAPI object because we want to initialize some\n    instance-specific function pointers (see extension section below). To do this we need this VkbAPI object.\n    */\n    VkbAPI vk;\n    result = vkbInit(&vk);\n    if (result != VK_SUCCESS) {\n        printf(\"Failed to initialize vkbind.\");\n        return result;\n    }\n\n    /*\n    This is where we create the window. This is not part of Vulkan. The idea is that you create your window, or more\n    generally, your \"surface\", and then specify it when you create your Vulkan surface that will eventually become the\n    target for your swapchain.\n    */\n#ifdef _WIN32\n    WNDCLASSEXA wc;\n    ZeroMemory(&wc, sizeof(wc));\n    wc.cbSize        = sizeof(wc);\n    wc.cbWndExtra    = sizeof(void*);\n    wc.lpfnWndProc   = (WNDPROC)DefaultWindowProcWin32;\n    wc.lpszClassName = g_WndClassName;\n    wc.hCursor       = LoadCursorA(NULL, MAKEINTRESOURCEA(32512));\n    wc.style         = CS_OWNDC | CS_DBLCLKS;\n    if (!RegisterClassExA(&wc)) {\n        printf(\"Failed to initialize window class.\");\n        return -1;\n    }\n\n    HWND hWnd = CreateWindowExA(0, g_WndClassName, \"Vulkan Tutorial\", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 640, 480, NULL, NULL, NULL, NULL);\n    if (hWnd == NULL) {\n        printf(\"Failed to create window.\");\n        return -1;\n    }\n\n    ShowWindow(hWnd, SW_SHOWNORMAL);\n#else\n    /* X11 window creation */\n    Display* pDisplay = XOpenDisplay(NULL);\n    if (pDisplay == NULL) {\n        printf(\"Failed to open X11 display.\\n\");\n        return -1;\n    }\n\n    int screen = DefaultScreen(pDisplay);\n    \n    /* Create a simple window */\n    Window window = XCreateSimpleWindow(pDisplay, RootWindow(pDisplay, screen), 0, 0, 640, 480, 1, BlackPixel(pDisplay, screen), WhitePixel(pDisplay, screen));\n    if (window == 0) {\n        printf(\"Failed to create X11 window.\\n\");\n        XCloseDisplay(pDisplay);\n        return -1;\n    }\n\n    Atom wmDeleteMessage = XInternAtom(pDisplay, \"WM_DELETE_WINDOW\", False);\n    XSetWMProtocols(pDisplay, window, &wmDeleteMessage, 1);\n    \n    /* Set window title */\n    XStoreName(pDisplay, window, \"Vulkan Tutorial\");\n\n    /* Select input events */\n    XSelectInput(pDisplay, window, ExposureMask | KeyPressMask | StructureNotifyMask);\n\n    /* Make the window visible */\n    XMapWindow(pDisplay, window);\n    XFlush(pDisplay);\n#endif\n\n    /*\n    This is where we start getting into actual Vulkan programming. The first concept to be aware of is that of the\n    \"instance\". This should be fairly obvious - it's basically just the global object that everything is ultimately\n    created from.\n\n    To create an instance, there's two concepts to be aware of: layers and extensions. Vulkan has a layering feature\n    whereby certain functionality can be plugged into (or layered on top of) the API. This example is enabling the\n    standard validation layer which you've probably heard of already. If you're enabling a layer or extension, you need\n    to check that it's actually supported by the instance or else you'll get an error when trying to create the\n    instance.\n\n    Note that if the VK_LAYER_KHRONOS_validation layer is not detected, you should try installing the official Vulkan\n    SDK for your platform.\n    */\n\n    /* I'm using fixed sized arrays here for this example, but in a real program you may want to size these dynamically. */\n    const char* ppEnabledLayerNames[32];\n    uint32_t enabledLayerCount = 0;\n\n    /* This is the list of layers that we'd like, but aren't strictly necessary. */\n    const char* ppDesiredLayers[] = {\n        \"VK_LAYER_KHRONOS_validation\"\n    };\n\n    /*\n    Here is where check for the availability of our desired layers. All layers are optional, so if they aren't\n    supported we'll just silently ignore it and keep running - no big deal. In a real program, you'd almost certainly\n    want to put this into a function called IsLayerSupported() or similar, but since we're keeping this flat, we'll do\n    it right here.\n\n    The first thing to do is retrieve the list of supported layers. You specify an array and capacity, and then call\n    vkEnumerateInstanceLayerProperties() to extract the layers. Then you can just loop over each entry and check them\n    against our desired layers.\n    */\n    VkLayerProperties pSupportedLayers[32];\n    uint32_t supportedLayerCount = sizeof(pSupportedLayers)/sizeof(pSupportedLayers[0]);\n    result = vkEnumerateInstanceLayerProperties(&supportedLayerCount, pSupportedLayers);\n    if (result != VK_SUCCESS && result != VK_INCOMPLETE) {\n        printf(\"Failed to retrieve layers.\");\n        return -1;\n    }\n\n    for (uint32_t iDesiredLayer = 0; iDesiredLayer < sizeof(ppDesiredLayers)/sizeof(ppDesiredLayers[0]); iDesiredLayer += 1) {\n        for (uint32_t iSupportedLayer = 0; iSupportedLayer < supportedLayerCount; iSupportedLayer += 1) {\n            if (strcmp(ppDesiredLayers[iDesiredLayer], pSupportedLayers[iSupportedLayer].layerName) == 0) {\n                ppEnabledLayerNames[enabledLayerCount++] = ppDesiredLayers[iDesiredLayer];  /* The layer is supported. Enable it. */\n                break;\n            }\n        }\n    }\n\n\n    /*\n    Now we do the same with extensions. The extension must be present or else initialization of Vulkan will fail so\n    therefore we must ensure our optional extensions are only enabled if present. Some extensions are mandatory which\n    means we *want* initialization to fail if they are not present.\n    */\n\n    /* I'm using fixed sized arrays here for this example, but in a real program you may want to size these dynamically. */\n    const char* ppEnabledExtensionNames[32];\n    uint32_t enabledExtensionCount = 0;\n\n    /*\n    This extension is required for outputting to a window (or \"surface\") which is what this example is doing which\n    makes this extension mandatory. We cannot continue without this which means we always specify it in our enabled\n    extensions list.\n\n    The VK_KHR_WIN32_SURFACE_EXTENSION_NAME is the Win32-specific component to the surface extension. We enable this\n    only for the Win32 build. On Windows this extension is mandatory for this example, so again, we always specify it\n    in the enabled extensions list and let Vulkan return an error if it's not supported.\n    */\n    ppEnabledExtensionNames[enabledExtensionCount++] = VK_KHR_SURFACE_EXTENSION_NAME;\n#ifdef VK_USE_PLATFORM_WIN32_KHR\n    ppEnabledExtensionNames[enabledExtensionCount++] = VK_KHR_WIN32_SURFACE_EXTENSION_NAME;\n#endif\n#ifdef VK_USE_PLATFORM_XLIB_KHR\n    ppEnabledExtensionNames[enabledExtensionCount++] = VK_KHR_XLIB_SURFACE_EXTENSION_NAME;\n#endif\n\n    /*\n    The extensions below are optional, so we'll selectively enable these based on whether or not it is supported. This\n    is a little annoying because we will want to use a dynamic array to store the list of supported extensions since we\n    don't really know how many will be returned. If you have used OpenGL in the past you probably remember the way in\n    which extensions were retrieved back then: glGetString(GL_EXTENSION). This returns a string of space-delimited\n    extension names, but the problem was that some programs decided to make a copy of this string into a fixed sized\n    buffer. As time went on and more and more extensions were added, many of these programs broke because those fixed\n    sized buffer's weren't big enough to store the whole string! We're not going to be making that same mistake again\n    now, are we? ARE WE?!\n\n    To do this, we call vkEnumerateInstanceExtensionProperties() twice. The first time will pass in NULL for the output\n    buffer which will cause Vulkan to treat it as a query of the total number of extensions. We'll then use the result\n    from that query to determine how large of a buffer we should allocate. Then we'll call that same function again,\n    but this time with a valid output buffer which will fill it with actual data.\n\n    We should probably also do this with layers, but since all layers are optional, I'm not as concerned about that.\n    */\n    const char* ppDesiredExtensions[] = {\n        VK_EXT_DEBUG_REPORT_EXTENSION_NAME  /* This is optional and is used for consuming validation errors. */\n    };\n\n    VkExtensionProperties* pSupportedExtensions = NULL;\n    uint32_t supportedExtensionCount;\n    result = vkEnumerateInstanceExtensionProperties(NULL, &supportedExtensionCount, NULL);\n    if (result != VK_SUCCESS) {\n        printf(\"Failed to query extension count.\");\n        return -1;\n    }\n\n    pSupportedExtensions = (VkExtensionProperties*)malloc(sizeof(*pSupportedExtensions) * supportedExtensionCount);\n    if (pSupportedExtensions == NULL) {\n        printf(\"Out of memory.\");\n        return -1;\n    }\n\n    result = vkEnumerateInstanceExtensionProperties(NULL, &supportedExtensionCount, pSupportedExtensions);\n    if (result != VK_SUCCESS) {\n        printf(\"Failed to retrieve extensions.\");\n        return -1;\n    }\n\n    /* We have the supported extensions. Now selectively enable our optional ones. */\n    for (uint32_t iDesiredExtension = 0; iDesiredExtension < sizeof(ppDesiredExtensions)/sizeof(ppDesiredExtensions[0]); iDesiredExtension += 1) {\n        for (uint32_t iSupportedExtension = 0; iSupportedExtension < supportedExtensionCount; iSupportedExtension += 1) {\n            if (strcmp(ppDesiredExtensions[iDesiredExtension], pSupportedExtensions[iSupportedExtension].extensionName) == 0) {\n                ppEnabledExtensionNames[enabledExtensionCount++] = ppDesiredExtensions[iDesiredExtension];  /* The extension is supported. Enable it. */\n                break;\n            }\n        }\n    }\n\n    /* We're not going to be using the pSupportedExtensions array anymore so it can be freed. */\n    free(pSupportedExtensions);\n\n\n    /*\n    At this point we've selected the layers and extensions we want to enable, so now we can initialize the Vulkan\n    instance. You're going to see a lot of this with Vulkan - you want to initialize an object, but before you can, you\n    need to do a whole heap of setup beforehand. You'll need to just get used to it.\n\n    Almost all objects in Vulkan are initialized using a info/create pattern where you first define a structure\n    containing information about the object you want to initialize, and then you call a \"vkCreate*()\" function to\n    create the actual object. The way to memorize it is like this. Take the type of the object you are creating. In\n    this case, \"VkInstance\". The info structure will be the same, but with \"CreateInfo\" at the end. So for the example\n    of VkInstance, it'll be VkInstanceCreateInfo.\n\n    Each CreateInfo structure takes a type which is specified in the \"sType\" member. This is also fairly easy to\n    remember. It's just \"VK_STRUCTURE_TYPE_\" and then \"*_CREATE_INFO\". So for VkInstanceCreateInfo, it's\n    \"VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO\". Personally I don't like this system, and I think it's more intended for\n    some future proofing, but in my opinion it's a bit over-engineered. But it is what it is, so let's move on.\n\n    The layers and extensions that were created earlier are specified in the VkInstanceCreateInfo object. You can also\n    specify some information about the application, but I don't really know what that's used for so I'm just leaving\n    that set to NULL. I'll leave that as an excercise for you to figure that one out.\n\n    The instance is created with vkCreateInstance(). The first parameter is the VkInstanceCreateInfo object that you\n    just filled out. The second parameter is a pointer to an object containing callbacks for customizing memory\n    allocations. For now you need not worry about that - you can consider that once you've figured out what you're\n    doing. For the purpose of this example, it just gets in the way so this will always be set to NULL. All creation\n    APIs will allow you to specify this. The final parameter is the VkInstance handle.\n    */\n    VkInstanceCreateInfo instanceInfo;\n    instanceInfo.sType                   = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO;\n    instanceInfo.pNext                   = NULL;\n    instanceInfo.flags                   = 0;\n    instanceInfo.pApplicationInfo        = NULL;\n    instanceInfo.enabledLayerCount       = enabledLayerCount;\n    instanceInfo.ppEnabledLayerNames     = ppEnabledLayerNames;\n    instanceInfo.enabledExtensionCount   = enabledExtensionCount;\n    instanceInfo.ppEnabledExtensionNames = ppEnabledExtensionNames;\n\n    VkInstance instance;\n    result = vkCreateInstance(&instanceInfo, NULL, &instance);\n    if (result != VK_SUCCESS) {\n        printf(\"Failed to create Vulkan instance. Check that your hardware supports Vulkan and you have up to date drivers installed.\");\n        return -1;\n    }\n\n    /*\n    If we've made it here it means we've successfully initialized the Vulkan instance. Here is where we do some vkbind\n    specific stuff. Below we are going to reference some functions that are specific to an extension. The problem is\n    that those APIs can only be retrieved if we have a valid instance. vkbind supports this. We need to call vkbind's\n    vkbInitInstanceAPI() and then bind the results to global scope. The binding to global scope is optional, but it\n    makes this example cleaner. Binding to global scope is only useful when your application is using only a single\n    Vulkan instance. If you're using multiple, you should instead call functions directly from the VkbAPI object.\n    */\n    result = vkbInitInstanceAPI(instance, &vk);\n    if (result != VK_SUCCESS) {\n        vkDestroyInstance(instance, NULL);\n        printf(\"Failed to load instance-specific Vulkan APIs.\");\n        return -1;\n    }\n\n    vkbBindAPI(&vk);    /* <-- Bind Vulkan functions to global scope. */\n\n\n    /*\n    When we were setting up the extensions, we specified VK_EXT_DEBUG_REPORT_EXTENSION_NAME as one of our optional\n    extensions. Here is where we're going to get this one configured. What this does is allows us to intercept and\n    detect errors. Before configuring it we'll need to confirm that it's actually usable.\n    */\n    VkDebugReportCallbackEXT debugReportCallbackObject;\n    for (uint32_t iEnabledExtension = 0; iEnabledExtension < enabledExtensionCount; iEnabledExtension += 1) {\n        if (strcmp(ppEnabledExtensionNames[iEnabledExtension], VK_EXT_DEBUG_REPORT_EXTENSION_NAME) == 0) {\n            VkDebugReportCallbackCreateInfoEXT debugReportCallbackCreateInfo;\n            debugReportCallbackCreateInfo.sType       = VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT;\n            debugReportCallbackCreateInfo.pNext       = NULL;\n            debugReportCallbackCreateInfo.flags       = VK_DEBUG_REPORT_ERROR_BIT_EXT | VK_DEBUG_REPORT_WARNING_BIT_EXT | VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT | VK_DEBUG_REPORT_DEBUG_BIT_EXT;\n            debugReportCallbackCreateInfo.pfnCallback = OnDebugReport;\n            debugReportCallbackCreateInfo.pUserData   = NULL;\n\n            result = vkCreateDebugReportCallbackEXT(instance, &debugReportCallbackCreateInfo, NULL, &debugReportCallbackObject);\n            if (result != VK_SUCCESS) {\n                printf(\"WARNING: Failed to create debug report callback.\");\n            }\n\n            break;\n        }\n    }\n\n\n    /*\n    You probably remember right at the top where we created the application window. On Win32, this is where we created\n    the HWND object. Up until this point, that window has been completely disconnected from Vulkan. Now is the time\n    where we go ahead and connect them both up. To form this connection we now introduce the notion of a \"surface\". A\n    surface is actually created in a platform specific manner, which makes perfect sense since we're interacting with\n    platform specific objects such HWND, however the object itself (VkSurfaceKHR) is generic (it's just that it's\n    created from a platform specific API).\n\n    Think of the surface as representing the thing where the final image will be drawn to, in our case this being the\n    application window.\n\n    It's important that we create the surface pretty much immediately after the creation of the Vulkan instance. The\n    reason for this is the selection of the physical device in the next section. A physical device may not be able to\n    output to the specified window. To check for this we require a surface, which means we need to create it now,\n    before enumerating over the physical devices.\n    */\n    VkSurfaceKHR surface;   /* <-- This is our platform-independant surface object. */\n\n    /*\n    On Win32 the creation of the surface works pretty much exactly as one would expect. You just specify the HINSTANCE\n    and HWND which should be familiar to anybody whose done Win32 programming before. You can get the HINSTANCE from\n    the HWND which is demonstrated below.\n    */\n#ifdef _WIN32\n    VkWin32SurfaceCreateInfoKHR surfaceInfo;\n    surfaceInfo.sType     = VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR;\n    surfaceInfo.pNext     = NULL;\n    surfaceInfo.flags     = 0;\n    surfaceInfo.hinstance = (HINSTANCE)GetWindowLongPtr(hWnd, GWLP_HINSTANCE);\n    surfaceInfo.hwnd      = hWnd;\n    result = vkCreateWin32SurfaceKHR(instance, &surfaceInfo, NULL, &surface);\n    if (result != VK_SUCCESS) {\n        vkDestroyInstance(instance, NULL);\n        printf(\"Failed to create a Vulkan surface for the main window.\");\n        return -1;\n    }\n#else\n    /* X11 surface creation */\n    VkXlibSurfaceCreateInfoKHR surfaceInfo;\n    surfaceInfo.sType  = VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR;\n    surfaceInfo.pNext  = NULL;\n    surfaceInfo.flags  = 0;\n    surfaceInfo.dpy    = pDisplay;\n    surfaceInfo.window = window;\n    result = vkCreateXlibSurfaceKHR(instance, &surfaceInfo, NULL, &surface);\n    if (result != VK_SUCCESS) {\n        vkDestroyInstance(instance, NULL);\n        XCloseDisplay(pDisplay);\n        printf(\"Failed to create a Vulkan surface for the main window.\");\n        return -1;\n    }\n#endif\n\n    /*\n    At this point we have the Vulkan instance created and debugging set up. Now we can introduce the concept of\n    \"devices\". There's two types of devices - physical and logical. These are pretty much self explanatory. The\n    physical device represents a physical hardware device on your computer. A logical device is created from the\n    physical device and is essentially a proxy. You'll do everything through a logical device. The physical device is\n    basically only used for device selection and enumeration and to create logical devices.\n\n    This example always uses the first enumerated device. I haven't seen anywhere that specifies whether or not the\n    first enumerated device should be considered the default device, but this will work well enough for the purposes\n    of this example. For demonstration purposes we'll enumerate over each device anyway. For simplicity we're limiting\n    this to a fixed number of devices as defined by the pPhysicalDevices array.\n    */\n\n    /*\n    This retrieves the physical devices and works the same way as layer and extension retrieval. You must call this or\n    else you won't be able to get access to a VkPhysicalDevice object for creating the logical device.\n    */\n    VkPhysicalDevice pPhysicalDevices[16];\n    uint32_t physicalDeviceCount = sizeof(pPhysicalDevices) / sizeof(pPhysicalDevices[0]);\n    result = vkEnumeratePhysicalDevices(instance, &physicalDeviceCount, pPhysicalDevices);\n    if (result != VK_SUCCESS && result != VK_INCOMPLETE) {\n        printf(\"Failed to enumerate physical devices. Check that your hardware supports Vulkan and you have up to date drivers installed.\");\n        return -1;\n    }\n\n\n    /*\n    At this point we have a list of physical devices and now we need to choose one. The selection of a physical device\n    depends on whether or not it supports the surface we created earlier. Since this example is outputting to a window,\n    this check becomes necessary. If you were doing purely off-screen rendering you wouldn't need to check this.\n\n    This is where we're introduced to the first of the stranger concepts introduced with Vulkan - queue families. When\n    you want to execute a command, you don't execute it directly. You instead post it to a queue which is then executed\n    at a later stage of your choosing. These queues have certain capabilities which are defined by the queue family.\n    The capabilities include things like graphics, compute and transfer. When you create the logical device, you need\n    to specify the number of queues you want for each queue family (the capabilities of those queues) that you're\n    needing to support.\n\n    To determine the queue family, you need to retrieve a list of supported queue families, which is determined by the\n    physical device. Then, you check the capabilities of those queue families. When you find a queue family that\n    supports what you need, you can create the logical device. For this example it's quite simple. All we're doing is\n    graphics which means we can just use the first queue family that reports support for graphics. When starting out, I\n    recommend following this. When you get to more advanced stuff you might be able to use dedicated compute and\n    transfer queues if that's what you'd prefer. Note that a queue family supporting graphics must also support\n    transfer operations, as defined by the Vulkan spec.\n    */\n    uint32_t selectedPhysicalDeviceIndex = (uint32_t)-1;    /* Set to -1 so we can determine whether or not a device has been selected. */\n    uint32_t selectedQueueFamilyIndex    = (uint32_t)-1;\n\n    for (uint32_t iPhysicalDevice = 0; iPhysicalDevice < physicalDeviceCount; ++iPhysicalDevice) {\n        VkPhysicalDeviceProperties properties;\n        vkGetPhysicalDeviceProperties(pPhysicalDevices[iPhysicalDevice], &properties);\n\n        printf(\"Physical Device: %s\\n\", properties.deviceName);\n        printf(\"    API Version: %d.%d\\n\", VK_VERSION_MAJOR(properties.apiVersion), VK_VERSION_MINOR(properties.apiVersion));\n\n        /*\n        Only try selecting the device if we haven't already found one. We don't break from the loop early because we\n        want to show all devices to the user, not just those that happened to come before the chosen device.\n        */\n        if (selectedPhysicalDeviceIndex == (uint32_t)-1) {\n            /*\n            Before we can determine whether or not the physical device supports our surface, we need to find an appropriate\n            queue family which is defined by an index. That's what we do now. For simplicity we're just retrieving a fixed\n            maximum number of queue families, but a more robust implementation may want to dynamically allocate this.\n            */\n            VkQueueFamilyProperties queueFamilyProperties[16];\n            uint32_t queueFamilyCount = sizeof(queueFamilyProperties) / sizeof(queueFamilyProperties[0]);\n            vkGetPhysicalDeviceQueueFamilyProperties(pPhysicalDevices[iPhysicalDevice], &queueFamilyCount, queueFamilyProperties);\n\n            /*\n            Selection of an appropriate queue family is just a matter of checking some flags. We need a graphics queue. For\n            simplicity we just use the first one we find.\n            */\n            uint32_t queueFamilyIndex_Graphics = (uint32_t)-1;\n            for (uint32_t iQueueFamily = 0; iQueueFamily < queueFamilyCount; ++iQueueFamily) {\n                if ((queueFamilyProperties[iQueueFamily].queueFlags & VK_QUEUE_GRAPHICS_BIT)) {\n                    queueFamilyIndex_Graphics = iQueueFamily;\n                    break;\n                }\n            }\n\n\n            /*\n            We want to use double buffering which means we'll need to retrieve the capabilities of the surface and check\n            the maxImageCount property.\n            */\n            VkSurfaceCapabilitiesKHR surfaceCaps;\n            result = vkGetPhysicalDeviceSurfaceCapabilitiesKHR(pPhysicalDevices[iPhysicalDevice], surface, &surfaceCaps);\n            if (result != VK_SUCCESS) {\n                continue;\n            }\n\n            if (surfaceCaps.maxImageCount < 2) {\n                continue;   /* The surface and device combination do not support at least two images (required for double buffering). */\n            }\n\n\n            /* The physical device needs to support outputting to our surface. To determine support, we need the physical device and queue family. */\n            VkBool32 isSupported;\n            result = vkGetPhysicalDeviceSurfaceSupportKHR(pPhysicalDevices[iPhysicalDevice], queueFamilyIndex_Graphics, surface, &isSupported);\n            if (result == VK_SUCCESS && isSupported == VK_TRUE) {\n                selectedPhysicalDeviceIndex = iPhysicalDevice;\n                selectedQueueFamilyIndex    = queueFamilyIndex_Graphics;\n                /*break;*/ /* Intentionally not breaking here because we want to print all devices, including those we aren't selecting. */\n            }\n        }\n    }\n\n    /*\n    If we couldn't find an appropriate physical device or queue family we'll need to abort. Note that a more complex\n    program may require multiple queues, so the queue family selection might become a lot more complex.\n    */\n    if (selectedPhysicalDeviceIndex == (uint32_t)-1 || selectedQueueFamilyIndex == (uint32_t)-1) {\n        vkDestroyInstance(instance, NULL);\n        return -1;\n    }\n\n\n    /*\n    We're going to need these memory properties for when we allocate memory. The way it works is there's basically\n    different types of memory, the main ones being \"host visible\" and \"device local\". Host visible basically system RAM\n    whereas device local is GPU memory. There's other flags to consider, but they aren't important while you're just\n    getting started. These memory flags are grouped into a memory type, which are referenced by an index. When you\n    allocate memory, you need to specify the index of an appropriate memory type which you select by iterating over the\n    available memory types and checking if they have the appropriate flags. The memory types are retrieved by calling\n    the vkGetPhysicalDeviceMemoryProperties() function.\n\n    You'll see an example on how to iterate over these memory types later on. Since we're going to be doing this\n    multiple times, I'm just going to retrieve the memory types once at the top right here rather than retrieving them\n    multiple times. This process of iterating over memory types to find an appropriate index will probably be one of\n    the first things you'll want to wrap in a helper function. We're not doing that in this example, however, because\n    the point is to keep this completely flat.\n\n    When you allocate memory, you first get the memory requirements (VkMemoryRequirements) of the relevant object which\n    will be a buffer or an image. In the returned object, there will be a memoryTypesBits variable. The index of each\n    set bit, starting from the least significant bit, defines which memory type in the VkPhysicalDeviceMemoryProperties\n    object can be used for the memory allocation. From there, you inspect the memory type's property flags which will\n    define whether or not the memory type is host visible and/or device local (among others). This will provide you\n    with enough information to determine the memory type index. When we allocate memory later on for vertex buffers and\n    textures you'll see more clearly how to choose an appropriate memory type.\n    */\n    VkPhysicalDeviceMemoryProperties physicalDeviceMemoryProps;\n    vkGetPhysicalDeviceMemoryProperties(pPhysicalDevices[selectedPhysicalDeviceIndex], &physicalDeviceMemoryProps);\n\n\n    /*\n    Now that we have our list of physical devices we can create a logical device. The logical device is the what's used\n    for interfacing with almost all Vulkan APIs. To create the device we need to specify the queues (and their families)\n    that we need.\n    */\n\n    /*\n    Queue priorities are in the range of [0..1] and work the way you would expect where 0 is lowest priority and 1 is\n    highest priority. We're only using a single queue, so just setting this to 1 is fine.\n    */\n    float pQueuePriorities[1];\n    pQueuePriorities[0] = 1;\n\n    /*\n    This is where we define how many queues we want to initialize with this device. Queues are not created dynamically;\n    they're instead created statically with the device. Queues are grouped by queue families, so you need to specify\n    the index of the queue family, and then the number of queues you want to create for that queue family.\n    */\n    VkDeviceQueueCreateInfo pQueueInfos[1]; /* <-- Set this to the number of queue families being used. */\n    pQueueInfos[0].sType            = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO;\n    pQueueInfos[0].pNext            = NULL;\n    pQueueInfos[0].flags            = 0;\n    pQueueInfos[0].queueFamilyIndex = selectedQueueFamilyIndex;\n    pQueueInfos[0].queueCount       = 1;    /* <-- We're only using a single queue for this example. */\n    pQueueInfos[0].pQueuePriorities = pQueuePriorities;\n\n    /*\n    Now we're back to extensions. Some extensions are specific to devices. This is relevant for us because we're going\n    to need one - the swapchain extension. The swapchain is a critical concept for displaying content on the screen and\n    will be explained in a bit. For now, just trust me that you'll need it. This is a mandatory extension for us, so we\n    can use a simplified system for this.\n    */\n    const char* ppEnabledDeviceExtensionNames[] = {\n        VK_KHR_SWAPCHAIN_EXTENSION_NAME /* <-- Mandatory if we're displaying to a window. */\n    };\n\n    uint32_t enabledDeviceExtensionCount = sizeof(ppEnabledDeviceExtensionNames) / sizeof(ppEnabledDeviceExtensionNames[0]);\n    \n\n    /*\n    When we initialize the device we need to specify a set of features that need to be enabled. If we enable a certain\n    feature and that feature is not supported, device creation will fail. This is useful if your application has a hard\n    requirement for specific features. For our purposes, however, we don't really have that concern since we're just\n    doing basic stuff.\n\n    One way to do this is to manually specify the features you need. However, for the purposes of this example, this is\n    too tedious. Instead we are going to retrieve the supported features from the physical device and just pass that\n    straight through. Since this example is only using a very basic feature set, this will work fine for us.\n    */\n    VkPhysicalDeviceFeatures physicalDeviceFeatures;\n    vkGetPhysicalDeviceFeatures(pPhysicalDevices[selectedPhysicalDeviceIndex], &physicalDeviceFeatures);\n\n    /* We now have enough information to create the device. */\n    VkDeviceCreateInfo deviceInfo;\n    deviceInfo.sType                   = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO;\n    deviceInfo.pNext                   = NULL;\n    deviceInfo.flags                   = 0;\n    deviceInfo.queueCreateInfoCount    = sizeof(pQueueInfos) / sizeof(pQueueInfos[0]);\n    deviceInfo.pQueueCreateInfos       = pQueueInfos;\n    deviceInfo.enabledLayerCount       = 0;\n    deviceInfo.ppEnabledLayerNames     = NULL;\n    deviceInfo.enabledExtensionCount   = enabledDeviceExtensionCount;\n    deviceInfo.ppEnabledExtensionNames = ppEnabledDeviceExtensionNames;\n    deviceInfo.pEnabledFeatures        = &physicalDeviceFeatures;  /* <-- Setting this to NULL is equivalent to disabling all features. */\n\n    /*\n    We now have all the information we need to create a device. The device is created from a physical device which we\n    enumerated over earlier.\n    */\n    VkDevice device;\n    result = vkCreateDevice(pPhysicalDevices[selectedPhysicalDeviceIndex], &deviceInfo, NULL, &device);\n    if (result != VK_SUCCESS) {\n        vkDestroyInstance(instance, NULL);\n        printf(\"Failed to create logical device.\");\n        return -1;\n    }\n\n\n\n    /*\n    The next concept to introduce is that of the swapchain. The swapchain is closely related to the surface. Indeed,\n    you need a surface before you can create a swapchain. A swapchain is made up of a number of images which, as the\n    name suggests, are swapped with each other at display time.\n\n    In a double buffered environment, there will be two images in the swapchain. At any given moment, one of those\n    images will be displayed on the window, while the other one, which is off-screen, is being drawn to by the graphics\n    driver. When the off-screen image is ready to be displayed, the two images are swapped and their roles reversed.\n\n    To create a swapchain, you'll first need a surface which we've already created. You'll also need to determine how\n    many images you need in the swap chain. If you're using double buffering you'll need two which is what we'll be\n    using in this example. Triple buffering will require three images.\n\n    Since the swapchain is made up of a number of images, we'll also need to specify the format and size of the images.\n    If we try specifying an unsupported image format, creation of the swapchain will fail. We'll need to first\n    enumerate over each of our supported formats. While you're just getting started, just use either VK_R8G8B8A8_UNORM\n    or VK_B8G8R8A8_UNORM and move on. From there you can start experimenting with sRGB formats if that's important for\n    you. For robustness you may want to check for available formats beforehand which is what this example does.\n    */\n    VkSurfaceFormatKHR supportedSwapchainImageFormats[256];\n    uint32_t supportedFormatsCount = sizeof(supportedSwapchainImageFormats) / sizeof(supportedSwapchainImageFormats[0]);\n    result = vkGetPhysicalDeviceSurfaceFormatsKHR(pPhysicalDevices[selectedPhysicalDeviceIndex], surface, &supportedFormatsCount, supportedSwapchainImageFormats);\n    if (result != VK_SUCCESS) {\n        printf(\"Failed to retrieve physical device surface formats.\");\n        return -1;\n    }\n\n    uint32_t swapchainImageFormatIndex = (uint32_t)-1;\n    for (uint32_t i = 0; i < supportedFormatsCount; ++i) {\n        if (supportedSwapchainImageFormats[i].format == VK_FORMAT_R8G8B8A8_UNORM || supportedSwapchainImageFormats[i].format == VK_FORMAT_B8G8R8A8_UNORM) {   /* <-- Can also use VK_FORMAT_*_SRGB */\n            swapchainImageFormatIndex = i;\n            break;\n        }\n    }\n\n    if (swapchainImageFormatIndex == (uint32_t)-1) {\n        printf(\"Could not find suitable display format.\");\n        return -1;\n    }\n\n\n    /*\n    A this point we'll have our format selected, but there's just a few more pieces of information we'll need to\n    retrieve real quick. The swapchain CreateInfo structure will ask for the size of the images and a transform, which\n    is 90 degree rotations and flips. These can be retrieved from the current state of the surface. It's not entirely\n    necessary to do this, but it's an easy way to get suitable values.\n    */\n    VkSurfaceCapabilitiesKHR surfaceCaps;\n    result = vkGetPhysicalDeviceSurfaceCapabilitiesKHR(pPhysicalDevices[selectedPhysicalDeviceIndex], surface, &surfaceCaps);\n    if (result != VK_SUCCESS) {\n        printf(\"Failed to retrieve surface capabilities.\");\n        return -1;\n    }\n\n    VkSwapchainCreateInfoKHR swapchainInfo;\n    swapchainInfo.sType                 = VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR;\n    swapchainInfo.pNext                 = NULL;\n    swapchainInfo.flags                 = 0;\n    swapchainInfo.surface               = surface;\n    swapchainInfo.minImageCount         = 2;                                    /* Set this to 2 for double buffering. Triple buffering would be 3, etc. */\n    swapchainInfo.imageFormat           = supportedSwapchainImageFormats[swapchainImageFormatIndex].format;     /* The format we selected earlier. */\n    swapchainInfo.imageColorSpace       = supportedSwapchainImageFormats[swapchainImageFormatIndex].colorSpace; /* The color space we selected earlier. */\n    swapchainInfo.imageExtent           = surfaceCaps.currentExtent;            /* The size of the images of the swapchain. Keep this the same size as the surface. */\n    swapchainInfo.imageArrayLayers      = 1;                                    /* I'm not sure in what situation you would ever want to set this to anything other than 1. */\n    swapchainInfo.imageUsage            = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT;\n    swapchainInfo.imageSharingMode      = VK_SHARING_MODE_EXCLUSIVE;\n    swapchainInfo.queueFamilyIndexCount = 0;                                    /* Only used when imageSharingMode is VK_SHARING_MODE_CONCURRENT. */\n    swapchainInfo.pQueueFamilyIndices   = NULL;                                 /* Only used when imageSharingMode is VK_SHARING_MODE_CONCURRENT. */\n    swapchainInfo.preTransform          = surfaceCaps.currentTransform;         /* Rotations (90 degree increments) and flips. Just use the current transform from the surface and move on. */\n    swapchainInfo.compositeAlpha        = VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR;\n    swapchainInfo.presentMode           = VK_PRESENT_MODE_FIFO_KHR;             /* This is what controls vsync. FIFO must always be supported, so use it by default. */\n    swapchainInfo.clipped               = VK_TRUE;                              /* Set this to true if you're only displaying to a window. */\n    swapchainInfo.oldSwapchain          = VK_NULL_HANDLE;                       /* You would set this if you're creating a new swapchain to replace an old one, such as when resizing a window. */\n\n    VkSwapchainKHR swapchain;\n    result = vkCreateSwapchainKHR(device, &swapchainInfo, NULL, &swapchain);\n    if (result != VK_SUCCESS) {\n        printf(\"Failed to create swapchain.\");\n        return -2;\n    }\n\n\n    /*\n    At this point the swapchain has been created, but there's a little bit more to do. Later on we're going to be\n    creating a framebuffer for each of the swapchain images. Framebuffers interact with swapchain images through an\n    image view so we'll need to create those too.\n\n    We'll first determine the number of images making up the swapchain. When you created the swapchain you specified\n    the *minimum* number of images making up the swapchain. That doesn't mean the driver didn't give you more. You'll\n    need to handle this if you want a robust program. In practice, my testing has yielded an identical image count as\n    specified in minImageCount for 2 (double buffered) and 3 (triple buffered) which will meet the needs of the vast\n    majority of cases. When minImageCount is set to 1, my NVIDIA driver always allocates 2 images. I have not been\n    able to do single-buffered rendering in Vulkan.\n\n    I'm allocating the image and image view objects statically on the stack for simplicity and to avoid cluttering the\n    code with non-Vulkan code. Also, the validation layer likes us to explicitly call vkGetSwapchainImagesKHR() with\n    pSwapchainImages set to NULL in order to get the image count before retrieving the actual images.\n    */\n    uint32_t swapchainImageCount;\n    result = vkGetSwapchainImagesKHR(device, swapchain, &swapchainImageCount, NULL);    /* Set the output buffer to NULL to just retrieve a count. */\n    if (result != VK_SUCCESS) {\n        printf(\"Failed to retrieve swapchain image count.\");\n        return -1;\n    }\n\n    VkImage swapchainImages[16];    /* <-- Overkill. Consider allocating this dynamically. */\n    result = vkGetSwapchainImagesKHR(device, swapchain, &swapchainImageCount, swapchainImages);\n    if (result != VK_SUCCESS) {\n        printf(\"Failed to retrieve swapchain image count.\");\n        return -1;\n    }\n\n    /* Once we have the swapchain images we can create the views. The views will be used with the framebuffers later. */\n    VkImageView swapchainImageViews[16];\n    for (uint32_t iSwapchainImage = 0; iSwapchainImage < swapchainImageCount; iSwapchainImage += 1) {\n        VkImageViewCreateInfo imageViewInfo;\n        imageViewInfo.sType                           = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO;\n        imageViewInfo.pNext                           = NULL;\n        imageViewInfo.flags                           = 0;\n        imageViewInfo.image                           = swapchainImages[iSwapchainImage];\n        imageViewInfo.viewType                        = VK_IMAGE_VIEW_TYPE_2D;\n        imageViewInfo.format                          = supportedSwapchainImageFormats[swapchainImageFormatIndex].format;\n        imageViewInfo.components.r                    = VK_COMPONENT_SWIZZLE_R;\n        imageViewInfo.components.g                    = VK_COMPONENT_SWIZZLE_G;\n        imageViewInfo.components.b                    = VK_COMPONENT_SWIZZLE_B;\n        imageViewInfo.components.a                    = VK_COMPONENT_SWIZZLE_A;\n        imageViewInfo.subresourceRange.aspectMask     = VK_IMAGE_ASPECT_COLOR_BIT;\n        imageViewInfo.subresourceRange.baseMipLevel   = 0;\n        imageViewInfo.subresourceRange.levelCount     = 1;\n        imageViewInfo.subresourceRange.baseArrayLayer = 0;\n        imageViewInfo.subresourceRange.layerCount     = 1;\n        result = vkCreateImageView(device, &imageViewInfo, NULL, &swapchainImageViews[iSwapchainImage]);\n        if (result != VK_SUCCESS) {\n            printf(\"Failed to create image views for swapchain images.\");\n            return -2;\n        }\n    }\n\n    /*\n    There's one last bit of prep work we're needing to do for the swapchain. Swapping images within the swapchain need\n    to be synchronized which we achieve by using a semaphore which is passed in to vkAcquireNextImageKHR() and then\n    waited for in the call to vkQueuePresentKHR() by adding it to the pWaitSemaphore member. This'll be explained later\n    in the main loop, but we'll create the semapahore now in preparation.\n\n    Semaphores are deleted with vkDestroySemaphore().\n    */\n    VkSemaphoreCreateInfo semaphoreInfo;\n    semaphoreInfo.sType = VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO;\n    semaphoreInfo.pNext = 0;\n    semaphoreInfo.flags = 0;\n\n    VkSemaphore swapchainSemaphore;\n    vkCreateSemaphore(device, &semaphoreInfo, NULL, &swapchainSemaphore);\n\n\n    \n    /*\n    Pipelines. To put it simply, a pipeline object defines the settings to use when drawing something, such as the\n    structure of the vertex buffer, which shaders to use, shader inputs, whether or not depth testing is enabled, etc.\n    Most programs will have many pipeline objects - you'll likely want to wrap this in a function for anything real-\n    world.\n\n    The creation of a pipeline object has a lot of dependencies. I'm not going to explain it all here, but will explain\n    it as we go. The order in which I do things below is unimportant and you can do it in whatever order you'd like,\n    but the way I do it here is intuitive to me.\n    */\n\n    /*\n    Shaders. The first thing we'll define are the necessary shaders. We're just displaying a simple textured quad so\n    all well need is a vertex and fragment shader. There are additional types of shaders for different stages of the\n    pipeline, but that's an excersise for later. All real-world graphics projects will need a vertex and fragment\n    shader, however.\n\n    Shaders are specified in a binary format called SPIR-V. In this example we compile shaders from GLSL to SPIR-V\n    using an offline tool called glslangValidator. The vfs_map_file() function is just some auto-generated code used by\n    this example so we can embed the SPIR-V data directly into the program and avoid the need to load files and worry\n    about startup paths and all that.\n    */\n    VkShaderModuleCreateInfo vertexShaderInfo;\n    vertexShaderInfo.sType = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO;\n    vertexShaderInfo.pNext = NULL;\n    vertexShaderInfo.flags = 0;\n    vertexShaderInfo.pCode = (const uint32_t*)vfs_map_file(\"shaders/01_Fundamentals.glsl.vert.spirv\", &vertexShaderInfo.codeSize);\n\n    VkShaderModule vertexShaderModule;\n    result = vkCreateShaderModule(device, &vertexShaderInfo, NULL, &vertexShaderModule);\n    if (result != VK_SUCCESS) {\n        printf(\"Failed to create shader module.\");\n        return -2;\n    }\n\n    VkShaderModuleCreateInfo fragmentShaderInfo;\n    fragmentShaderInfo.sType = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO;\n    fragmentShaderInfo.pNext = NULL;\n    fragmentShaderInfo.flags = 0;\n    fragmentShaderInfo.pCode = (const uint32_t*)vfs_map_file(\"shaders/01_Fundamentals.glsl.frag.spirv\", &fragmentShaderInfo.codeSize);\n\n    VkShaderModule fragmentShaderModule;\n    result = vkCreateShaderModule(device, &fragmentShaderInfo, NULL, &fragmentShaderModule);\n    if (result != VK_SUCCESS) {\n        printf(\"Failed to create shader module.\");\n        return -2;\n    }\n\n    VkPipelineShaderStageCreateInfo pipelineStages[2];\n    pipelineStages[0].sType  = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO;\n    pipelineStages[0].pNext  = NULL;\n    pipelineStages[0].flags  = 0;\n    pipelineStages[0].stage  = VK_SHADER_STAGE_VERTEX_BIT;\n    pipelineStages[0].module = vertexShaderModule;\n    pipelineStages[0].pName  = \"main\";\n    pipelineStages[0].pSpecializationInfo = NULL;\n\n    pipelineStages[1].sType  = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO;\n    pipelineStages[1].pNext  = NULL;\n    pipelineStages[1].flags  = 0;\n    pipelineStages[1].stage  = VK_SHADER_STAGE_FRAGMENT_BIT;\n    pipelineStages[1].module = fragmentShaderModule;\n    pipelineStages[1].pName  = \"main\";\n    pipelineStages[1].pSpecializationInfo = NULL;\n    \n\n    /*\n    Vertex formats. Here is where we define the format of the data as passed to the vertex shader.\n\n    There's two concepts to consider - bindings and attributes. Think of a binding as a grouping of related vertex\n    attributes inside a single, interleaved buffer. A common example is interleaved vertex data. With this setup, which\n    we're using in this example, the position, color, texture coordinate and whatever else you want to group together\n    are part of a single binding. The position will be one attribute, the color will be another, etc. If, however, you\n    were wanting to keep your individual vertex attributes (position, color, etc.) in separate buffers, you would have\n    one binding for each buffer. So to summarize, binding = vertex buffer; attributes = individual elements (position,\n    color, etc.) within a vertex buffer.\n\n    Attributes are associated with a location which is just a number. This is an important concept to understand\n    because it's how Vulkan is able to map vertex attribute to inputs into the vertex shader. It's important that\n    locations map properly with how they're specified in the shader. In the vertex shader, you'll have vertex input\n    declarations that look like this:\n\n        layout(location = 0) in vec3 VERT_Position;\n        layout(location = 1) in vec3 VERT_Color;\n        layout(location = 2) in vec2 VERT_TexCoord;\n\n    The locations you see specified in the vertex shader are specified in the code segment below. The \"location\" member\n    of VkVertexInputAttributeDescription needs to map with how you've defined it in the shader. You'll note that you\n    don't need to specify the binding in the shader. Instead, the binding is specified when we bind the vertex buffer\n    with vkCmdBindVertexBuffers() which we do before issuing a draw command.\n    */\n\n    /*\n    This is where we define our bindings. Remember: a binding is a vertex buffer. When interleaving vertex attributes\n    such as position and color, we just have a single buffer. If we were *not* interleaving, we'd have a separate\n    buffer, and therefore separate bindings, for each attribute.\n    */\n    VkVertexInputBindingDescription vertexInputBindingDescriptions[1];  /* <-- Just one binding since we're using a single, interleaved buffer. */\n    vertexInputBindingDescriptions[0].binding   = 0;\n    vertexInputBindingDescriptions[0].stride    = sizeof(float)*3 + sizeof(float)*3 + sizeof(float)*2;\n    vertexInputBindingDescriptions[0].inputRate = VK_VERTEX_INPUT_RATE_VERTEX;\n\n    /*\n    This is where we specify the individual vertex attributes (position, color, etc.), and it's here where the location\n    will be specified. In addition to the location, a binding is also required. The binding is an index into the array\n    we just declared above (vertexInputBindingDescriptions[]). Since we're only using a single binding, we set this to\n    0 for all of our vertex attributes.\n\n    The format of the vertex attribute is also required. In this example, everything uses floating point. The position\n    is defined in 3 dimensions. So as an example, the position attribute will be set to VK_FORMAT_R32G32B32_SFLOAT\n    which should be simple enough to understand, albeit a little unintuitive due to it looking more like a texture\n    format rather than a vertex format. The \"SFLOAT\" part means signed floating point. The \"R\", \"G\" and \"B\" parts\n    represent \"X\", \"Y\" and \"Z\" respectively. The \"32\" means 32-bit.\n\n    The last thing you need to specify is the offset in bytes of the start of the data for that attribute within the\n    buffer. In the example below, the position is the first element which means it'll have no offset. The color comes\n    immediately after the position, so therefore the offset needs to be set to the size of a single position element\n    which is 3 floating point numbers, or sizeof(float)*3. Texture coordinates come immediately after color, so that\n    will need to be set to sizeof(float)*3 (position) plus sizeof(float)*3 (color).\n    */\n    VkVertexInputAttributeDescription vertexInputAttributeDescriptions[3];\n\n    /*\n    Position.\n    \n    Shader Declaration: layout(location = 0) in vec3 VERT_Position;\n    */\n    vertexInputAttributeDescriptions[0].location = 0;   /* layout(location = 0) in the vertex shader. */\n    vertexInputAttributeDescriptions[0].binding  = 0;   /* Maps to a binding in vertexInputBindingDescriptions[]. Referenced in vkCmdBindVertexBuffers() */\n    vertexInputAttributeDescriptions[0].format   = VK_FORMAT_R32G32B32_SFLOAT;\n    vertexInputAttributeDescriptions[0].offset   = 0;\n\n    /*\n    Color.\n\n    Shader Declaration: layout(location = 1) in vec3 VERT_Color;\n    */\n    vertexInputAttributeDescriptions[1].location = 1;   /* layout(location = 1) in the vertex shader.*/\n    vertexInputAttributeDescriptions[1].binding  = 0;   /* Maps to a binding in vertexInputBindingDescriptions[]. Referenced in vkCmdBindVertexBuffers() */\n    vertexInputAttributeDescriptions[1].format   = VK_FORMAT_R32G32B32_SFLOAT;\n    vertexInputAttributeDescriptions[1].offset   = sizeof(float)*3;\n\n    /*\n    Texture Coordinates.\n\n    Shader Declaration: layout(location = 2) in vec3 VERT_TexCoord;\n    */\n    vertexInputAttributeDescriptions[2].location = 2;   /* layout(location = 2) in the vertex shader. */\n    vertexInputAttributeDescriptions[2].binding  = 0;   /* Maps to a binding in vertexInputBindingDescriptions[]. Referenced in vkCmdBindVertexBuffers() */\n    vertexInputAttributeDescriptions[2].format   = VK_FORMAT_R32G32_SFLOAT;\n    vertexInputAttributeDescriptions[2].offset   = sizeof(float)*3 + sizeof(float)*3;\n\n    /*\n    The VkPipelineVertexInputStateCreateInfo object is where we put the vertex format defined above all together which\n    will eventually be passed to the pipeline CreateInfo object.\n    */\n    VkPipelineVertexInputStateCreateInfo vertexInputState;\n    vertexInputState.sType                           = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO;\n    vertexInputState.pNext                           = NULL;\n    vertexInputState.flags                           = 0;\n    vertexInputState.vertexBindingDescriptionCount   = sizeof(vertexInputBindingDescriptions)/sizeof(vertexInputBindingDescriptions[0]);\n    vertexInputState.pVertexBindingDescriptions      = vertexInputBindingDescriptions;\n    vertexInputState.vertexAttributeDescriptionCount = sizeof(vertexInputAttributeDescriptions)/sizeof(vertexInputAttributeDescriptions[0]);\n    vertexInputState.pVertexAttributeDescriptions    = vertexInputAttributeDescriptions;\n\n\n    /*\n    The input assembly state basically controls the topology of the vertex data (whether or not the rasterizer should\n    treat the vertex data as triangles, lines, etc.). Where the section above defined the structure of the vertex\n    buffer(s), this defines how the rasterizer should interpret the vertex buffer(s) when rasterizing.\n    */\n    VkPipelineInputAssemblyStateCreateInfo inputAssemblyState;\n    inputAssemblyState.sType                  = VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO;\n    inputAssemblyState.pNext                  = NULL;\n    inputAssemblyState.flags                  = 0;\n    inputAssemblyState.topology               = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST;\n    inputAssemblyState.primitiveRestartEnable = VK_FALSE;\n\n\n    /*\n    Viewport state. This is the glViewport() and glScissor() of Vulkan. These can actually be set dynamically rather\n    than statically. We're going to use this property in this example. By setting pViewports and pScissors to NULL,\n    we're telling Vulkan that we'll set these dynamically with vkCmdSetViewport() and vkCmdSetScissor() respectively.\n    */\n    VkPipelineViewportStateCreateInfo viewportState;\n    viewportState.sType         = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO;\n    viewportState.pNext         = NULL;\n    viewportState.flags         = 0;\n    viewportState.viewportCount = 1;\n    viewportState.pViewports    = NULL; /* <-- Set to NULL because we are using dynamic viewports. Set with vkCmdSetViewport(). */\n    viewportState.scissorCount  = 1;\n    viewportState.pScissors     = NULL; /* <-- Set to NULL because we are using dynamic scissor rectangles. Set with vkCmdSetScissor(). */\n\n\n    /*\n    Rasterization state. This is where you set your fill modes, backface culling, polygon winding, etc.\n    */\n    VkPipelineRasterizationStateCreateInfo rasterizationState;\n    rasterizationState.sType                   = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO;\n    rasterizationState.pNext                   = NULL;\n    rasterizationState.flags                   = 0;\n    rasterizationState.depthClampEnable        = VK_FALSE;\n    rasterizationState.rasterizerDiscardEnable = VK_FALSE;\n    rasterizationState.polygonMode             = VK_POLYGON_MODE_FILL;\n    rasterizationState.cullMode                = VK_CULL_MODE_BACK_BIT;\n    rasterizationState.frontFace               = VK_FRONT_FACE_COUNTER_CLOCKWISE;   /* <-- This is the polygon winding. */\n    rasterizationState.depthBiasEnable         = VK_FALSE;\n    rasterizationState.depthBiasConstantFactor = 0;\n    rasterizationState.depthBiasClamp          = 1;\n    rasterizationState.depthBiasSlopeFactor    = 0;\n    rasterizationState.lineWidth               = 1;\n\n\n    /*\n    Multisample state. We're not doing multisample anti-aliasing in this example, so we're just setting this to basic\n    values. Note that rasterizationSamples should be set to VK_SAMPLE_COUNT_1_BIT to disable MSAA.\n    */\n    VkPipelineMultisampleStateCreateInfo multisampleState;\n    multisampleState.sType                 = VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO;\n    multisampleState.pNext                 = NULL;\n    multisampleState.flags                 = 0;\n    multisampleState.rasterizationSamples  = VK_SAMPLE_COUNT_1_BIT;\n    multisampleState.sampleShadingEnable   = VK_FALSE;\n    multisampleState.minSampleShading      = 1;\n    multisampleState.pSampleMask           = NULL;\n    multisampleState.alphaToCoverageEnable = VK_FALSE;\n    multisampleState.alphaToOneEnable      = VK_FALSE;\n\n\n    /*\n    Depth/stencil state. \n    */\n    VkPipelineDepthStencilStateCreateInfo depthStencilState;\n    depthStencilState.sType                 = VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO;\n    depthStencilState.pNext                 = NULL;\n    depthStencilState.flags                 = 0;\n    depthStencilState.depthTestEnable       = VK_TRUE;  /* This example will be using depth testing. */\n    depthStencilState.depthWriteEnable      = VK_TRUE;  /* We'll want to write to the depth buffer. */\n    depthStencilState.depthCompareOp        = VK_COMPARE_OP_LESS_OR_EQUAL;\n    depthStencilState.depthBoundsTestEnable = VK_FALSE;\n    depthStencilState.stencilTestEnable     = VK_FALSE; /* No stencil testing in this example. The \"front\" and \"back\" settings don't matter here. */\n    depthStencilState.front.failOp          = VK_STENCIL_OP_KEEP;\n    depthStencilState.front.passOp          = VK_STENCIL_OP_KEEP;\n    depthStencilState.front.depthFailOp     = VK_STENCIL_OP_KEEP;\n    depthStencilState.front.compareOp       = VK_COMPARE_OP_ALWAYS;\n    depthStencilState.front.compareMask     = 0xFFFFFFFF;\n    depthStencilState.front.writeMask       = 0xFFFFFFFF;\n    depthStencilState.front.reference       = 0;\n    depthStencilState.back                  = depthStencilState.front;  /* We're not doing stencil testing, so set to whatever you want (but make sure it's valid for correctness sake). */\n    depthStencilState.minDepthBounds        = 0;\n    depthStencilState.maxDepthBounds        = 1;\n\n\n    /*\n    Color blend state. We have one color blend attachment state for each color attachment in the subpass. This'll be\n    explained below in when creating the render pass.\n    */\n    VkPipelineColorBlendAttachmentState colorBlendAttachmentStates[1];  /* <-- One for each color attachment used by the subpass. */\n    colorBlendAttachmentStates[0].blendEnable         = VK_FALSE;\n    colorBlendAttachmentStates[0].srcColorBlendFactor = VK_BLEND_FACTOR_ZERO;\n    colorBlendAttachmentStates[0].dstColorBlendFactor = VK_BLEND_FACTOR_ZERO;\n    colorBlendAttachmentStates[0].colorBlendOp        = VK_BLEND_OP_ADD;\n    colorBlendAttachmentStates[0].srcAlphaBlendFactor = VK_BLEND_FACTOR_ZERO;\n    colorBlendAttachmentStates[0].dstAlphaBlendFactor = VK_BLEND_FACTOR_ZERO;\n    colorBlendAttachmentStates[0].alphaBlendOp        = VK_BLEND_OP_ADD;\n    colorBlendAttachmentStates[0].colorWriteMask      = VK_COLOR_COMPONENT_R_BIT | VK_COLOR_COMPONENT_G_BIT | VK_COLOR_COMPONENT_B_BIT | VK_COLOR_COMPONENT_A_BIT;\n\n    VkPipelineColorBlendStateCreateInfo colorBlendState;\n    colorBlendState.sType             = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO;\n    colorBlendState.pNext             = NULL;\n    colorBlendState.flags             = 0;\n    colorBlendState.logicOpEnable     = VK_FALSE;\n    colorBlendState.logicOp           = VK_LOGIC_OP_CLEAR;\n    colorBlendState.attachmentCount   = sizeof(colorBlendAttachmentStates)/sizeof(colorBlendAttachmentStates[0]);\n    colorBlendState.pAttachments      = colorBlendAttachmentStates;\n    colorBlendState.blendConstants[0] = 0;\n    colorBlendState.blendConstants[1] = 0;\n    colorBlendState.blendConstants[2] = 0;\n    colorBlendState.blendConstants[3] = 0;\n\n\n    /*\n    Dynamic state. Vulkan allows for some state to be dynamically set instead of statically. We're using a dynamic\n    viewport and scissor in this example, mainly just to demonstrate how to use it. This requires us to call\n    vkCmdSetViewport() and vkCmdSetScissor() at some point when building the command queue.\n    */\n    VkDynamicState dynamicStates[2];\n    dynamicStates[0] = VK_DYNAMIC_STATE_VIEWPORT;\n    dynamicStates[1] = VK_DYNAMIC_STATE_SCISSOR;\n\n    VkPipelineDynamicStateCreateInfo dynamicState;\n    dynamicState.sType             = VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO;\n    dynamicState.pNext             = NULL;\n    dynamicState.flags             = 0;\n    dynamicState.dynamicStateCount = sizeof(dynamicStates)/sizeof(dynamicStates[0]);\n    dynamicState.pDynamicStates    = dynamicStates;\n    \n\n    /*\n    Pipeline layout. This defines descriptor set layouts and push constants. Descriptor set layouts basically define the\n    uniform variables in your shaders. Example shader:\n\n        layout(set = 0, binding = 0) uniform sampler   FRAG_Sampler;\n        layout(set = 0, binding = 1) uniform texture2D FRAG_Texture;\n\n    The declarations above declare a sampler and a 2D texture. The \"set\" element in the layout decoration represent the\n    descriptor set layout defined below. Each set can be associated with multiple bindings. You bind data at the level\n    of a descriptor set, so it makes sense to group shader resources by the frequency at which they're updated. For\n    example, you may want to have one descriptor set for global data that is updated once per frame, and then another\n    descriptor set for data that is updated per object.\n    */\n\n    /*\n    This example is using only a single texture. Vulkan supports separate textures and samplers (multiple samplers to 1 texture, for example). Since this\n    is the more complicated way of doing textures, that's what we're going to do. You can also use a combined image/sampler which might be more useful in\n    many situations, but that is easy to figure out on your own (hint: VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER).\n    */\n    VkDescriptorSetLayoutBinding descriptorSetLayoutBindings_Set0[2];\n    descriptorSetLayoutBindings_Set0[0].binding            = 0;                                  /* The \"binding\" in \"layout(set = 0, binding = 0)\" */\n    descriptorSetLayoutBindings_Set0[0].descriptorType     = VK_DESCRIPTOR_TYPE_SAMPLER;         /* The \"sampler\" in \"uniform sampler FRAG_Sampler\" */\n    descriptorSetLayoutBindings_Set0[0].descriptorCount    = 1;                                  /* If you had an array of samplers defined in the shader, you would set this to the size of the array. */\n    descriptorSetLayoutBindings_Set0[0].stageFlags         = VK_SHADER_STAGE_FRAGMENT_BIT;       /* We're only going to be accessing the sampler from the fragment shader. */\n    descriptorSetLayoutBindings_Set0[0].pImmutableSamplers = NULL;                               /* We'll use dynamic samplers for this example, but immutable samplers could be really useful in which case you'd set them here. */\n\n    descriptorSetLayoutBindings_Set0[1].binding            = 1;                                  /* The \"binding\" in \"layout(set = 0, binding = 1)\" */\n    descriptorSetLayoutBindings_Set0[1].descriptorType     = VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE;   /* The \"texture2D\" in \"uniform texture2D FRAG_Texture\". Same thing for texture1D, texture3D and textureCube. */\n    descriptorSetLayoutBindings_Set0[1].descriptorCount    = 1;                                  /* If you had an array of textures defined in the shader, you would set this to the size of the array. */\n    descriptorSetLayoutBindings_Set0[1].stageFlags         = VK_SHADER_STAGE_FRAGMENT_BIT;       /* We're only going to be accessing the image from the fragment shader. */\n    descriptorSetLayoutBindings_Set0[1].pImmutableSamplers = NULL;                               /* Always NULL for images. */\n\n    VkDescriptorSetLayoutBinding descriptorSetLayoutBindings_Set1[1];\n    descriptorSetLayoutBindings_Set1[0].binding            = 0;                                  /* The \"binding\" in \"layout(set = 1, binding = 0)\" */\n    descriptorSetLayoutBindings_Set1[0].descriptorType     = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC;  /* Self explanatory - we're updating a uniform buffer. */\n    descriptorSetLayoutBindings_Set1[0].descriptorCount    = 1;                                  /* Not an array, so set to 1. */\n    descriptorSetLayoutBindings_Set1[0].stageFlags         = VK_SHADER_STAGE_VERTEX_BIT;         /* Descriptor set 1 is only accessed via the vertex buffer. */\n    descriptorSetLayoutBindings_Set1[0].pImmutableSamplers = NULL;                               /* No textures are being used in descriptor set 1. */\n\n\n    VkDescriptorSetLayoutCreateInfo descriptorSetLayoutCreateInfo;\n    descriptorSetLayoutCreateInfo.sType        = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO;\n    descriptorSetLayoutCreateInfo.pNext        = NULL;\n    descriptorSetLayoutCreateInfo.flags        = 0;\n    descriptorSetLayoutCreateInfo.bindingCount = sizeof(descriptorSetLayoutBindings_Set0) / sizeof(descriptorSetLayoutBindings_Set0[0]);\n    descriptorSetLayoutCreateInfo.pBindings    = descriptorSetLayoutBindings_Set0;\n\n    VkDescriptorSetLayout descriptorSetLayouts[2];\n    result = vkCreateDescriptorSetLayout(device, &descriptorSetLayoutCreateInfo, NULL, &descriptorSetLayouts[0]);   /* layout(set = 0 ...) */\n    if (result != VK_SUCCESS) {\n        printf(\"Failed to create descriptor set layout 0.\");\n        return -1;\n    }\n\n    descriptorSetLayoutCreateInfo.bindingCount = sizeof(descriptorSetLayoutBindings_Set1) / sizeof(descriptorSetLayoutBindings_Set1[0]);\n    descriptorSetLayoutCreateInfo.pBindings    = descriptorSetLayoutBindings_Set1;\n\n    result = vkCreateDescriptorSetLayout(device, &descriptorSetLayoutCreateInfo, NULL, &descriptorSetLayouts[1]);   /* layout(set = 1 ...) */\n    if (result != VK_SUCCESS) {\n        printf(\"Failed to create descriptor set layout 1.\");\n        return -1;\n    }\n\n\n    VkPipelineLayoutCreateInfo pipelineLayoutInfo;\n    pipelineLayoutInfo.sType                  = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO;\n    pipelineLayoutInfo.pNext                  = NULL;\n    pipelineLayoutInfo.flags                  = 0;\n    pipelineLayoutInfo.setLayoutCount         = sizeof(descriptorSetLayouts) / sizeof(descriptorSetLayouts[0]);\n    pipelineLayoutInfo.pSetLayouts            = descriptorSetLayouts;\n    pipelineLayoutInfo.pushConstantRangeCount = 0;\n    pipelineLayoutInfo.pPushConstantRanges    = NULL;\n\n    VkPipelineLayout pipelineLayout;\n    result = vkCreatePipelineLayout(device, &pipelineLayoutInfo, NULL, &pipelineLayout);\n    if (result != VK_SUCCESS) {\n        printf(\"Failed to create pipeline layout.\");\n        return 2;\n    }\n\n\n    /*\n    Render pass.\n    */\n    VkAttachmentDescription attachmentDesc[2];  /* 1 color attachment, 1 depth/stencil attachment. */\n\n    /* Color attachment. */\n    attachmentDesc[0].flags          = 0;\n    attachmentDesc[0].format         = supportedSwapchainImageFormats[swapchainImageFormatIndex].format;   /* <-- This needs to be the same as our swapchain image format. */\n    attachmentDesc[0].samples        = VK_SAMPLE_COUNT_1_BIT;\n    attachmentDesc[0].loadOp         = VK_ATTACHMENT_LOAD_OP_CLEAR;\n    attachmentDesc[0].storeOp        = VK_ATTACHMENT_STORE_OP_STORE;\n    attachmentDesc[0].stencilLoadOp  = VK_ATTACHMENT_LOAD_OP_CLEAR;\n    attachmentDesc[0].stencilStoreOp = VK_ATTACHMENT_STORE_OP_STORE;\n    attachmentDesc[0].initialLayout  = VK_IMAGE_LAYOUT_UNDEFINED;\n    attachmentDesc[0].finalLayout    = VK_IMAGE_LAYOUT_PRESENT_SRC_KHR;\n\n    /* Depth/stencil attachment. */\n    attachmentDesc[1].flags          = 0;\n    attachmentDesc[1].format         = VK_FORMAT_D24_UNORM_S8_UINT;\n    attachmentDesc[1].samples        = VK_SAMPLE_COUNT_1_BIT;\n    attachmentDesc[1].loadOp         = VK_ATTACHMENT_LOAD_OP_CLEAR;\n    attachmentDesc[1].storeOp        = VK_ATTACHMENT_STORE_OP_STORE;\n    attachmentDesc[1].stencilLoadOp  = VK_ATTACHMENT_LOAD_OP_CLEAR;\n    attachmentDesc[1].stencilStoreOp = VK_ATTACHMENT_STORE_OP_STORE;\n    attachmentDesc[1].initialLayout  = VK_IMAGE_LAYOUT_UNDEFINED;\n    attachmentDesc[1].finalLayout    = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL;\n\n    VkAttachmentReference colorAttachment;\n    colorAttachment.attachment = 0;         /* Index into attachmentDesc[] */\n    colorAttachment.layout     = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL;\n\n    VkAttachmentReference depthStencilAttachment;\n    depthStencilAttachment.attachment = 1;  /* Index into attachmentDesc[] */\n    depthStencilAttachment.layout     = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL;\n\n    VkSubpassDescription subpassDesc;\n    subpassDesc.flags = 0;\n    subpassDesc.pipelineBindPoint       = VK_PIPELINE_BIND_POINT_GRAPHICS;\n    subpassDesc.inputAttachmentCount    = 0;\n    subpassDesc.pInputAttachments       = NULL;\n    subpassDesc.colorAttachmentCount    = 1;\n    subpassDesc.pColorAttachments       = &colorAttachment;\n    subpassDesc.pResolveAttachments     = NULL;\n    subpassDesc.pDepthStencilAttachment = &depthStencilAttachment;\n    subpassDesc.preserveAttachmentCount = 0;    /* Only attachments that are *not* used by this subpass can be specified here. */\n    subpassDesc.pPreserveAttachments    = NULL;\n\n    VkRenderPassCreateInfo renderpassInfo;\n    renderpassInfo.sType           = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO;\n    renderpassInfo.pNext           = NULL;\n    renderpassInfo.flags           = 0;\n    renderpassInfo.attachmentCount = sizeof(attachmentDesc) / sizeof(attachmentDesc[0]);\n    renderpassInfo.pAttachments    = attachmentDesc;\n    renderpassInfo.subpassCount    = 1;\n    renderpassInfo.pSubpasses      = &subpassDesc;\n    renderpassInfo.dependencyCount = 0;\n    renderpassInfo.pDependencies   = NULL;\n\n    VkRenderPass renderPass;\n    result = vkCreateRenderPass(device, &renderpassInfo, NULL, &renderPass);\n    if (result != VK_SUCCESS) {\n        printf(\"Failed to create render pass.\");\n        return -2;\n    }\n\n\n    /*\n    At this point we finally have everything we need to create the pipeline object. Creating a pipeline object is\n    slightly different to the creation of most other Vulkan objects. For pipelines, you can actually create multiple\n    pipeline objects with a single call. In this example we're only using a single pipeline object, but most real-world\n    projects will require multiple.\n    */\n    VkGraphicsPipelineCreateInfo pipelineInfo;\n    pipelineInfo.sType               = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO;\n    pipelineInfo.pNext               = NULL;\n    pipelineInfo.flags               = 0;\n    pipelineInfo.stageCount          = sizeof(pipelineStages) / sizeof(pipelineStages[0]);\n    pipelineInfo.pStages             = pipelineStages;\n    pipelineInfo.pVertexInputState   = &vertexInputState;\n    pipelineInfo.pInputAssemblyState = &inputAssemblyState;\n    pipelineInfo.pTessellationState  = NULL; /* <-- Not using tessellation shaders here, so set to NULL. */\n    pipelineInfo.pViewportState      = &viewportState;\n    pipelineInfo.pRasterizationState = &rasterizationState;\n    pipelineInfo.pMultisampleState   = &multisampleState;\n    pipelineInfo.pDepthStencilState  = &depthStencilState;\n    pipelineInfo.pColorBlendState    = &colorBlendState;\n    pipelineInfo.pDynamicState       = &dynamicState;\n    pipelineInfo.layout              = pipelineLayout;\n    pipelineInfo.renderPass          = renderPass;\n    pipelineInfo.subpass             = 0;\n    pipelineInfo.basePipelineHandle  = 0;\n    pipelineInfo.basePipelineIndex   = 0;\n\n    VkPipeline pipeline;\n    result = vkCreateGraphicsPipelines(device, 0, 1, &pipelineInfo, NULL, &pipeline);\n    if (result != VK_SUCCESS) {\n        printf(\"Failed to create graphics pipeline.\");\n        return -2;\n    }\n\n\n\n\n    /*\n    In order for Vulkan to know which images to draw to and which images to use for the depth and stencil buffers, we\n    use a VkFramebuffer object. We need to create one for each swapchain image. In our particular example, we can get\n    away with just a single depth/stencil buffer. If you were using triple buferring you'd need two (one for each of\n    the in-progress back buffers).\n\n    Since we don't have a depth/stencil buffer yet, we'll need to create one. Fortunately this is a bit simpler than\n    the creation of a texture which you'll see below because we don't need to worry about copying data.\n    */\n\n    /*\n    Like swapchain images, the depth/stencil buffer is made up of both a VkImage and a VkImageView. We'll need to\n    create the VkImage first, followed by the VkImageView.\n    */\n    VkImageCreateInfo depthStencilImageCreateInfo;\n    depthStencilImageCreateInfo.sType                 = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO;\n    depthStencilImageCreateInfo.pNext                 = NULL;\n    depthStencilImageCreateInfo.flags                 = 0;\n    depthStencilImageCreateInfo.imageType             = VK_IMAGE_TYPE_2D;\n    depthStencilImageCreateInfo.format                = VK_FORMAT_D24_UNORM_S8_UINT;    /* <-- Typical depth/stencil format. Should be supported most everywhere. */\n    depthStencilImageCreateInfo.extent.width          = surfaceCaps.currentExtent.width;\n    depthStencilImageCreateInfo.extent.height         = surfaceCaps.currentExtent.height;\n    depthStencilImageCreateInfo.extent.depth          = 1;\n    depthStencilImageCreateInfo.mipLevels             = 1;\n    depthStencilImageCreateInfo.arrayLayers           = 1;\n    depthStencilImageCreateInfo.samples               = VK_SAMPLE_COUNT_1_BIT;\n    depthStencilImageCreateInfo.tiling                = VK_IMAGE_TILING_OPTIMAL;\n    depthStencilImageCreateInfo.usage                 = VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT;\n    depthStencilImageCreateInfo.sharingMode           = VK_SHARING_MODE_EXCLUSIVE;\n    depthStencilImageCreateInfo.queueFamilyIndexCount = 0;\n    depthStencilImageCreateInfo.pQueueFamilyIndices   = NULL;\n    depthStencilImageCreateInfo.initialLayout         = VK_IMAGE_LAYOUT_UNDEFINED;  /* <-- Will be transitioned to VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL by the render pass. */\n\n    VkImage depthStencilImage;\n    result = vkCreateImage(device, &depthStencilImageCreateInfo, NULL, &depthStencilImage);\n    if (result != VK_SUCCESS) {\n        printf(\"Failed to create depth/stencil image.\");\n        return -1;\n    }\n\n\n    /*\n    The image object for the depth/stencil image has been created, but it doesn't yet have any memory allocated for it.\n    This will be explained in more detail when we get to creating a texture.\n    */\n    VkMemoryRequirements depthStencilImageMemoryReqs;\n    vkGetImageMemoryRequirements(device, depthStencilImage, &depthStencilImageMemoryReqs);\n\n    VkMemoryAllocateInfo depthStencilImageMemoryAllocateInfo;\n    depthStencilImageMemoryAllocateInfo.sType           = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO;\n    depthStencilImageMemoryAllocateInfo.pNext           = NULL;\n    depthStencilImageMemoryAllocateInfo.allocationSize  = depthStencilImageMemoryReqs.size;\n    depthStencilImageMemoryAllocateInfo.memoryTypeIndex = (uint32_t)-1; /* <-- Set to a proper value in the loop below. */\n\n    for (uint32_t iMemoryType = 0; iMemoryType < physicalDeviceMemoryProps.memoryTypeCount; iMemoryType += 1) { /* Check each supported memory type. */\n        if ((depthStencilImageMemoryReqs.memoryTypeBits & (1 << iMemoryType)) != 0) {  /* Check if the image memory can be allocated by this memory type. */\n            if ((physicalDeviceMemoryProps.memoryTypes[iMemoryType].propertyFlags & VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT) == VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT) {  /* Check that this memory type supports GPU-side memory (device local). */\n                depthStencilImageMemoryAllocateInfo.memoryTypeIndex = iMemoryType;\n                break;\n            }\n        }\n    }\n\n    VkDeviceMemory depthStencilImageMemory;\n    result = vkAllocateMemory(device, &depthStencilImageMemoryAllocateInfo, NULL, &depthStencilImageMemory);\n    if (result != VK_SUCCESS) {\n        printf(\"Failed to allocate memory for depth/stencil image.\");\n        return -1;\n    }\n\n    result = vkBindImageMemory(device, depthStencilImage, depthStencilImageMemory, 0);\n    if (result != VK_SUCCESS) {\n        printf(\"Failed to bind memory for depth/stencil image.\");\n        return -1;\n    }\n\n\n    /*\n    The image view can only be created after allocating and binding memory for the depth/stencil image. Not doing this\n    will result in a crash.\n    */\n    VkImageViewCreateInfo depthStencilImageViewCreateInfo;\n    depthStencilImageViewCreateInfo.sType                           = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO;\n    depthStencilImageViewCreateInfo.pNext                           = NULL;\n    depthStencilImageViewCreateInfo.flags                           = 0;\n    depthStencilImageViewCreateInfo.image                           = depthStencilImage;\n    depthStencilImageViewCreateInfo.viewType                        = VK_IMAGE_VIEW_TYPE_2D;\n    depthStencilImageViewCreateInfo.format                          = VK_FORMAT_D24_UNORM_S8_UINT;\n    depthStencilImageViewCreateInfo.components.r                    = VK_COMPONENT_SWIZZLE_R;\n    depthStencilImageViewCreateInfo.components.g                    = VK_COMPONENT_SWIZZLE_G;\n    depthStencilImageViewCreateInfo.components.b                    = VK_COMPONENT_SWIZZLE_B;\n    depthStencilImageViewCreateInfo.components.a                    = VK_COMPONENT_SWIZZLE_A;\n    depthStencilImageViewCreateInfo.subresourceRange.aspectMask     = VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT;\n    depthStencilImageViewCreateInfo.subresourceRange.baseMipLevel   = 0;\n    depthStencilImageViewCreateInfo.subresourceRange.levelCount     = 1;\n    depthStencilImageViewCreateInfo.subresourceRange.baseArrayLayer = 0;\n    depthStencilImageViewCreateInfo.subresourceRange.layerCount     = 1;\n\n    VkImageView depthStencilImageView;\n    result = vkCreateImageView(device, &depthStencilImageViewCreateInfo, NULL, &depthStencilImageView);\n    if (result != VK_SUCCESS) {\n        printf(\"Failed to create depth/stencil image view.\");\n        return -1;\n    }\n\n\n\n    /*\n    We need one framebuffer for each swapchain image, but we can use the same depth/stencil buffer.\n    */\n    VkFramebuffer swapchainFramebuffers[16];\n    for (uint32_t iSwapchainImage = 0; iSwapchainImage < swapchainImageCount; ++iSwapchainImage) {\n        VkImageView framebufferAttachments[2];\n        framebufferAttachments[0] = swapchainImageViews[iSwapchainImage];\n        framebufferAttachments[1] = depthStencilImageView;\n\n        VkFramebufferCreateInfo framebufferInfo;\n        framebufferInfo.sType           = VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO;\n        framebufferInfo.pNext           = NULL;\n        framebufferInfo.flags           = 0;\n        framebufferInfo.renderPass      = renderPass;\n        framebufferInfo.attachmentCount = sizeof(framebufferAttachments)/sizeof(framebufferAttachments[0]);\n        framebufferInfo.pAttachments    = framebufferAttachments;\n        framebufferInfo.width           = surfaceCaps.currentExtent.width;\n        framebufferInfo.height          = surfaceCaps.currentExtent.height;\n        framebufferInfo.layers          = 1;    /* <-- I'm not sure in what situation you would set to anything other than 1. */\n        result = vkCreateFramebuffer(device, &framebufferInfo, NULL, &swapchainFramebuffers[iSwapchainImage]);\n        if (result != VK_SUCCESS) {\n            printf(\"Failed to create framebuffer.\");\n            return -2;\n        }\n    }\n\n\n    /*\n    Here is where we introduce command buffers. We need this before we create our vertex and index buffer and texture\n    because we need to execute a command for copying memory from system memory to GPU memory (explained later).\n\n    This example is only simple so we can get away with using only a single command buffer. Command buffers are created\n    from a pool called VkCommandPool. When you draw stuff, you first record a list of commands into a command buffer.\n    These commands are not executed immediately - they're executed later when you submit the command buffer to a queue.\n    This design allows you to pre-record command buffers at an earlier stage (perhaps at load time) and reuse them\n    without needing to incur the cost of re-issuing the drawing commands. This system, however, isn't always practical\n    and sometimes you will want the command buffer to be reset so you can reuse them. This option needs to be specified\n    at the level of the command pool, which is what we do in this example.\n\n    You've probably seen or heard that one of the main points of difference between Vulkan and OpenGL is Vulkan's well\n    specified multithreading support. Command buffers are where this really starts to become apparent. With Vulkan, you\n    can record multiple command buffers across different threads. When allocating command buffers across different\n    threads you would have separate command pools available on a per-thread basis.\n    */\n    VkCommandPoolCreateInfo commandPoolCreateInfo;\n    commandPoolCreateInfo.sType            = VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO;\n    commandPoolCreateInfo.pNext            = NULL;\n    commandPoolCreateInfo.flags            = VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT;   /* <-- Allows us to reuse the same command buffer (though not strictly necessary for this example). */\n    commandPoolCreateInfo.queueFamilyIndex = selectedQueueFamilyIndex;                          /* <-- The dreaded queue family needs to be specified for command pools... */\n\n    VkCommandPool commandPool;\n    result = vkCreateCommandPool(device, &commandPoolCreateInfo, NULL, &commandPool);\n    if (result != VK_SUCCESS) {\n        printf(\"Failed to create command pool.\");\n        return -2;\n    }\n\n    /*\n    Once we have the command pool we can create our command buffers. In our example we only need a single command\n    which we'll be recording dynamically each frame. You don't need to do it like that - you can instead pre-record\n    your command buffers and reuse them without being reset, but those command buffers will need to be allocated from\n    a separate command pool that was created without the VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT flag.\n\n    Command buffers can be primary or secondary. Basically, primary command buffers are submitted directly to the queue\n    whereas secondary command buffers are submitted to a primary command buffer. We're not using secondary command\n    buffers here, but if you were wanting to use them, you'd use vkCmdExecuteCommands() to record them to a primary\n    command buffer. There's other details with secondary command buffers which make them particularly useful in\n    certain situations, such as being able to be used simultaneously by multiple primary command buffers (provided the\n    necessary flag has been set on the secondary command buffer - VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT). I'll\n    leave this an excercise for you.\n    */\n    VkCommandBufferAllocateInfo commandBufferCreateInfo;\n    commandBufferCreateInfo.sType              = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO;\n    commandBufferCreateInfo.pNext              = NULL;\n    commandBufferCreateInfo.commandPool        = commandPool;\n    commandBufferCreateInfo.level              = VK_COMMAND_BUFFER_LEVEL_PRIMARY;\n    commandBufferCreateInfo.commandBufferCount = 1;\n\n    VkCommandBuffer commandBuffer;\n    result = vkAllocateCommandBuffers(device, &commandBufferCreateInfo, &commandBuffer);\n    if (result != VK_SUCCESS) {\n        printf(\"Failed to allocate command buffer.\");\n        return -2;\n    }\n\n    /*\n    Since we are using a reusable command buffer we need to use a fence to synchronize access to it. We cannot be\n    trying to record some fresh commands into the buffer while it is still in a pending state from the previous frame.\n    The fence that we create below will be passed into the vkQueueSubmit() which will signal the fence once the buffer\n    has finished processing.\n    */\n    VkFenceCreateInfo commandBufferFenceCreateInfo;\n    commandBufferFenceCreateInfo.sType = VK_STRUCTURE_TYPE_FENCE_CREATE_INFO;\n    commandBufferFenceCreateInfo.pNext = NULL;\n    commandBufferFenceCreateInfo.flags = 0;\n\n    VkFence commandBufferFence;\n    result = vkCreateFence(device, &commandBufferFenceCreateInfo, NULL, &commandBufferFence);\n    if (result != VK_SUCCESS) {\n        printf(\"Failed to create command buffer fence.\");\n        return -1;\n    }\n\n\n    /*\n    We'll need a queue before we'll be able to execute any commands. When we created the logical device (VkDevice)\n    we specified how many queues to make available. Here is were we retrieve it. Note that conceptually these queues\n    were created internally when we created the device. Here we just retrieve it by an index rather than creating it.\n    */\n    VkQueue queue;\n    vkGetDeviceQueue(device, selectedQueueFamilyIndex, 0, &queue); /* 0 = queue index. Only using a single queue in this example so will never be anything other than zero. */\n\n\n\n    /*\n    Vertex and index buffers.\n\n    In this example we'll be storing vertex and index buffers in GPU memory which is probably where you'll want to\n    store this data in most situations. This involves the use of an intermediary buffer which is allocated to system\n    memory. Then, a command is used to transfer memory from the intermediary buffer to a device local buffer (GPU\n    memory). This transfer is why we were needing to allocate a command buffer first. In my testing, vertex and index\n    buffers don't actually need to be stored in GPU memory, but since it'll be a common thing to do, I'll demonstrate\n    it in this example.\n\n    In this example we're going to use a single VkBuffer for both vertex and index data. The idea is that both can be\n    used with only a single memory allocation.\n\n    The format of your vertex buffer and index buffers must match the format specified when you created the pipeline.\n    */\n\n    /*\n    This is our geometry data. This needs to match the format we specified when we created the pipeline. These are the\n    attributes used for each vertex which are interleaved.\n\n        - Position:      3xfloat32\n        - Color:         3xfloat32\n        - Texture Coord: 2xfloat32\n    */\n    float geometryVertexData[] = {\n        -0.5f, -0.5f, 0.0f,   1.0f, 1.0f, 1.0f,   0.0f, 0.0f,   /* Vertex 0 */\n        -0.5f,  0.5f, 0.0f,   1.0f, 1.0f, 1.0f,   0.0f, 1.0f,   /* Vertex 1 */\n         0.5f,  0.5f, 0.0f,   1.0f, 1.0f, 1.0f,   1.0f, 1.0f,   /* Vertex 2 */\n         0.5f, -0.5f, 0.0f,   1.0f, 1.0f, 1.0f,   1.0f, 0.0f    /* Vertex 3 */\n    };\n\n    /*\n    This is our index data. These are specified based on the topology that was specified when we created the pipeline,\n    which in this example is a triangle list. That means each group of 3 indices specify a triangle. Another thing to\n    consider is the winding, which was also specified when we created the pipeline, which in this example is counter\n    clockwise.\n    */\n    uint32_t geometryIndexData[] = {\n        0, 1, 2, 2, 3, 0\n    };\n\n\n    /*\n    Before we can copy out vertex and index data over to the GPU we first need to copy it into a staging buffer. The\n    staging buffer is used as the intermediary between system memory and GPU memory and is just a normal buffer, but\n    with the appropriate usage mode and a host visible memory allocation.\n    */\n    VkBufferCreateInfo vertexIndexStagingBufferCreateInfo;\n    vertexIndexStagingBufferCreateInfo.sType                 = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO;\n    vertexIndexStagingBufferCreateInfo.pNext                 = NULL;\n    vertexIndexStagingBufferCreateInfo.flags                 = 0;\n    vertexIndexStagingBufferCreateInfo.size                  = sizeof(geometryVertexData) + sizeof(geometryIndexData);\n    vertexIndexStagingBufferCreateInfo.usage                 = VK_BUFFER_USAGE_TRANSFER_SRC_BIT;  /* We're going to be using this buffer as the transfer source. */\n    vertexIndexStagingBufferCreateInfo.sharingMode           = VK_SHARING_MODE_EXCLUSIVE;\n    vertexIndexStagingBufferCreateInfo.queueFamilyIndexCount = 0;   /* <-- Ignored when sharingMode is not VK_SHARING_MODE_CONCURRENT. */\n    vertexIndexStagingBufferCreateInfo.pQueueFamilyIndices   = NULL;\n\n    VkBuffer vertexIndexStagingBuffer;\n    result = vkCreateBuffer(device, &vertexIndexStagingBufferCreateInfo, NULL, &vertexIndexStagingBuffer);\n    if (result != VK_SUCCESS) {\n        printf(\"Failed to create vertex/index staging buffer.\");\n        return -1;\n    }\n\n    VkMemoryRequirements vertexIndexStagingBufferMemoryReqs;\n    vkGetBufferMemoryRequirements(device, vertexIndexStagingBuffer, &vertexIndexStagingBufferMemoryReqs);\n\n    VkMemoryAllocateInfo vertexIndexStagingBufferMemoryInfo;\n    vertexIndexStagingBufferMemoryInfo.sType           = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO;\n    vertexIndexStagingBufferMemoryInfo.pNext           = NULL;\n    vertexIndexStagingBufferMemoryInfo.allocationSize  = vertexIndexStagingBufferMemoryReqs.size;\n    vertexIndexStagingBufferMemoryInfo.memoryTypeIndex = (uint32_t)-1;    /* <-- Set to a proper value below. */\n\n    for (uint32_t iMemoryType = 0; iMemoryType < physicalDeviceMemoryProps.memoryTypeCount; ++iMemoryType) {\n        if ((vertexIndexStagingBufferMemoryReqs.memoryTypeBits & (1 << iMemoryType)) != 0) {\n            if ((physicalDeviceMemoryProps.memoryTypes[iMemoryType].propertyFlags & VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT) == VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT) {  /* <-- Staging buffer must be host visible. */\n                vertexIndexStagingBufferMemoryInfo.memoryTypeIndex = iMemoryType;\n                break;\n            }\n        }\n    }\n\n    VkDeviceMemory vertexIndexStagingBufferMemory;\n    result = vkAllocateMemory(device, &vertexIndexStagingBufferMemoryInfo, NULL, &vertexIndexStagingBufferMemory);\n    if (result != VK_SUCCESS) {\n        printf(\"Failed to allocate vertex/index staging buffer memory.\");\n        return -2;\n    }\n\n    result = vkBindBufferMemory(device, vertexIndexStagingBuffer, vertexIndexStagingBufferMemory, 0);\n    if (result != VK_SUCCESS) {\n        printf(\"Failed to bind vertex/index staging buffer memory.\");\n        return -2;\n    }\n\n    /* To get the data from our regular old C buffer into the VkBuffer we just need to map the VkBuffer, memcpy(), then unmap. */\n    void* pMappedBufferData;\n    result = vkMapMemory(device, vertexIndexStagingBufferMemory, 0, vertexIndexStagingBufferMemoryReqs.size, 0, &pMappedBufferData);\n    if (result != VK_SUCCESS) {\n        printf(\"Failed to map vertex/index staging buffer.\");\n        return -2;\n    }\n\n    memcpy(pMappedBufferData, geometryVertexData, sizeof(geometryVertexData));\n    memcpy((void*)(((char*)pMappedBufferData) + sizeof(geometryVertexData)), geometryIndexData, sizeof(geometryIndexData));\n\n    vkUnmapMemory(device, vertexIndexStagingBufferMemory);\n\n\n\n    /* At this point the staging buffer has been set up, so now we need to create the actual GPU-side buffer. */\n    VkBufferCreateInfo vertexIndexBufferCreateInfo;\n    vertexIndexBufferCreateInfo.sType                 = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO;\n    vertexIndexBufferCreateInfo.pNext                 = NULL;\n    vertexIndexBufferCreateInfo.flags                 = 0;\n    vertexIndexBufferCreateInfo.size                  = sizeof(geometryVertexData) + sizeof(geometryIndexData);\n    vertexIndexBufferCreateInfo.usage                 = VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | VK_BUFFER_USAGE_INDEX_BUFFER_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT;\n    vertexIndexBufferCreateInfo.sharingMode           = VK_SHARING_MODE_EXCLUSIVE;\n    vertexIndexBufferCreateInfo.queueFamilyIndexCount = 0;   /* <-- Ignored when sharingMode is not VK_SHARING_MODE_CONCURRENT. */\n    vertexIndexBufferCreateInfo.pQueueFamilyIndices   = NULL;\n\n    VkBuffer vertexIndexBuffer;\n    result = vkCreateBuffer(device, &vertexIndexBufferCreateInfo, NULL, &vertexIndexBuffer);\n    if (result != VK_SUCCESS) {\n        printf(\"Failed to create buffer for geometry.\");\n        return -2;\n    }\n\n    VkMemoryRequirements vertexIndexBufferMemoryReqs;\n    vkGetBufferMemoryRequirements(device, vertexIndexBuffer, &vertexIndexBufferMemoryReqs);\n\n    VkMemoryAllocateInfo vertexIndexBufferMemoryInfo;\n    vertexIndexBufferMemoryInfo.sType           = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO;\n    vertexIndexBufferMemoryInfo.pNext           = NULL;\n    vertexIndexBufferMemoryInfo.allocationSize  = vertexIndexBufferMemoryReqs.size;\n    vertexIndexBufferMemoryInfo.memoryTypeIndex = (uint32_t)-1;    /* <-- Set to a proper value below. */\n\n    for (uint32_t iMemoryType = 0; iMemoryType < physicalDeviceMemoryProps.memoryTypeCount; ++iMemoryType) {\n        if ((vertexIndexBufferMemoryReqs.memoryTypeBits & (1 << iMemoryType)) != 0) {\n            if ((physicalDeviceMemoryProps.memoryTypes[iMemoryType].propertyFlags & VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT) == VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT) {\n                vertexIndexBufferMemoryInfo.memoryTypeIndex = iMemoryType;\n                break;\n            }\n        }\n    }\n\n    VkDeviceMemory vertexIndexBufferMemory;\n    result = vkAllocateMemory(device, &vertexIndexBufferMemoryInfo, NULL, &vertexIndexBufferMemory);\n    if (result != VK_SUCCESS) {\n        printf(\"Failed to allocate memory.\");\n        return -2;\n    }\n\n    result = vkBindBufferMemory(device, vertexIndexBuffer, vertexIndexBufferMemory, 0);\n    if (result != VK_SUCCESS) {\n        printf(\"Failed to bind buffer memory.\");\n        return -2;\n    }\n    \n\n    /*\n    We've created both the staging buffer and the actual buffer, so now we need to transfer. This will be our first use\n    of the command buffer we created earlier. With the way we're doing things in this example we don't need to worry\n    about pipeline barriers, however in a real program you'll need to consider this for things such as making sure the\n    vertex stage of the pipeline does not start until the transfer has completed. Pipeline barriers will be shown when\n    we get to textures.\n    */\n    {\n        VkCommandBufferBeginInfo beginInfo;\n        beginInfo.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO;\n        beginInfo.pNext = NULL;\n        beginInfo.flags = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT;\n        beginInfo.pInheritanceInfo = NULL;\n        vkBeginCommandBuffer(commandBuffer, &beginInfo);\n        {\n            VkBufferCopy region;\n            region.srcOffset = 0;\n            region.dstOffset = 0;\n            region.size = vertexIndexStagingBufferCreateInfo.size;\n            vkCmdCopyBuffer(commandBuffer, vertexIndexStagingBuffer, vertexIndexBuffer, 1, &region);\n        }\n        vkEndCommandBuffer(commandBuffer);\n\n        VkSubmitInfo submitInfo;\n        submitInfo.sType                = VK_STRUCTURE_TYPE_SUBMIT_INFO;\n        submitInfo.pNext                = NULL;\n        submitInfo.waitSemaphoreCount   = 0;\n        submitInfo.pWaitSemaphores      = NULL;\n        submitInfo.pWaitDstStageMask    = NULL;\n        submitInfo.commandBufferCount   = 1;\n        submitInfo.pCommandBuffers      = &commandBuffer;\n        submitInfo.signalSemaphoreCount = 0;\n        submitInfo.pSignalSemaphores    = NULL;\n        result = vkQueueSubmit(queue, 1, &submitInfo, 0);\n        if (result != VK_SUCCESS) {\n            printf(\"Failed to submit buffer.\");\n            return -2;\n        }\n\n        vkQueueWaitIdle(queue);\n    }\n\n    /* The staging buffer is no longer needed. */\n    vkDestroyBuffer(device, vertexIndexStagingBuffer, NULL);\n    vkFreeMemory(device, vertexIndexStagingBufferMemory, NULL);\n\n\n\n    /*\n    Textures. Prepare yourself.\n\n    In Vulkan, textures are referred to as an Image. In order to apply a texture to a piece of geometry and display it, there's three concepts\n    to be aware of:\n    \n       1) Images - Think of this as a handle to the raw image data.\n       2) Image Views - This is used to retrieve and reinterpret image data.\n       3) Samplers - This is used by the shader to determine how to apply filtering to the image for display.\n\n    Before you can create an image view, you'll need to create the image. Before you can do anything with the image, you need to allocate memory\n    for it. Once you've allocated the image's memory, you need to fill it with image data which you can do using a staging buffer with host visible\n    memory. To copy the data from the staging buffer to the image's memory, you need to run a command.\n    */\n    VkImageCreateInfo imageCreateInfo;\n    imageCreateInfo.sType                 = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO;\n    imageCreateInfo.pNext                 = NULL;\n    imageCreateInfo.flags                 = 0;\n    imageCreateInfo.imageType             = VK_IMAGE_TYPE_2D;\n    imageCreateInfo.format                = VK_FORMAT_R8G8B8A8_UNORM;\n    imageCreateInfo.extent.width          = g_TextureSizeX;\n    imageCreateInfo.extent.height         = g_TextureSizeY;\n    imageCreateInfo.extent.depth          = 1;\n    imageCreateInfo.mipLevels             = 1;  /* We're not doing mipmapping in this example, but if we were you'd want to set this to > 1. */\n    imageCreateInfo.arrayLayers           = 1;\n    imageCreateInfo.samples               = VK_SAMPLE_COUNT_1_BIT;\n    imageCreateInfo.tiling                = VK_IMAGE_TILING_OPTIMAL;\n    imageCreateInfo.usage                 = VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT;   /* SAMPLED for shader access, TRANSFER_DST because it'll be the destination for the filling from the staging buffer. */\n    imageCreateInfo.sharingMode           = VK_SHARING_MODE_EXCLUSIVE;\n    imageCreateInfo.queueFamilyIndexCount = 0;\n    imageCreateInfo.pQueueFamilyIndices   = NULL;   /* <-- Only used when sharingMode = VK_SHARING_MODE_CONCURRENT. */\n    imageCreateInfo.initialLayout         = VK_IMAGE_LAYOUT_UNDEFINED;\n\n    VkImage image;\n    result = vkCreateImage(device, &imageCreateInfo, NULL, &image);\n    if (result != VK_SUCCESS) {\n        printf(\"Failed to create image.\");\n        return -1;\n    }\n\n    /*\n    With the image created we can now allocate some memory for the actual image data and then bind it to the image handle. Not doing this will\n    result in a crash when creating the image view (and probably anything else that tries to reference the image). Note that allocating memory\n    does not actually fill it with any meaningful data. That needs to be done afterwards with the use of a staging buffer.\n    */\n    VkMemoryRequirements imageMemoryRequirements;\n    vkGetImageMemoryRequirements(device, image, &imageMemoryRequirements);\n\n    VkMemoryAllocateInfo imageAllocateInfo;\n    imageAllocateInfo.sType           = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO;\n    imageAllocateInfo.pNext           = NULL;\n    imageAllocateInfo.allocationSize  = imageMemoryRequirements.size;\n    imageAllocateInfo.memoryTypeIndex = (uint32_t)-1;    // <-- Set to a proper value below.\n\n    for (uint32_t i = 0; i < physicalDeviceMemoryProps.memoryTypeCount; ++i) {\n        if ((imageMemoryRequirements.memoryTypeBits & (1U << i)) != 0) {\n            if ((physicalDeviceMemoryProps.memoryTypes[i].propertyFlags & VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT) == VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT) {  /* DEVICE_LOCAL = GPU memory. */\n                imageAllocateInfo.memoryTypeIndex = i;\n                break;\n            }\n        }\n    }\n\n    VkDeviceMemory imageMemory;\n    result = vkAllocateMemory(device, &imageAllocateInfo, NULL, &imageMemory);\n    if (result != VK_SUCCESS) {\n        printf(\"Failed to allocate image memory.\");\n        return -1;\n    }\n\n    result = vkBindImageMemory(device, image, imageMemory, 0);\n    if (result != VK_SUCCESS) {\n        printf(\"Failed to bind iamge memory.\");\n        return -1;\n    }\n\n    /*\n    At this point we have created the image handle and allocated some memory for it. We now need to fill the memory with actual image data. To do this\n    we use a staging buffer and then copy it over using a command.\n    */\n    VkBufferCreateInfo imageStagingBufferCreateInfo;\n    imageStagingBufferCreateInfo.sType                 = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO;\n    imageStagingBufferCreateInfo.pNext                 = NULL;\n    imageStagingBufferCreateInfo.flags                 = 0;\n    imageStagingBufferCreateInfo.size                  = imageAllocateInfo.allocationSize;\n    imageStagingBufferCreateInfo.usage                 = VK_BUFFER_USAGE_TRANSFER_SRC_BIT;   /* Will be the source of a transfer. */\n    imageStagingBufferCreateInfo.sharingMode           = VK_SHARING_MODE_EXCLUSIVE;\n    imageStagingBufferCreateInfo.queueFamilyIndexCount = 0;\n    imageStagingBufferCreateInfo.pQueueFamilyIndices   = NULL;\n\n    VkBuffer imageStagingBuffer;\n    result = vkCreateBuffer(device, &imageStagingBufferCreateInfo, NULL, &imageStagingBuffer);\n    if (result != VK_SUCCESS) {\n        printf(\"Failed to create staging buffer.\");\n        return -1;\n    }\n\n    /* Allocate memory for the staging buffer. */\n    vkGetBufferMemoryRequirements(device, imageStagingBuffer, &imageMemoryRequirements);\n\n    VkMemoryAllocateInfo imageStagingBufferAllocateInfo;\n    imageStagingBufferAllocateInfo.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO;\n    imageStagingBufferAllocateInfo.pNext = NULL;\n    imageStagingBufferAllocateInfo.allocationSize = imageMemoryRequirements.size;\n    imageStagingBufferAllocateInfo.memoryTypeIndex = (uint32_t)-1;   // <-- Set to a proper value below.\n\n    for (uint32_t i = 0; i < physicalDeviceMemoryProps.memoryTypeCount; ++i) {\n        if ((imageMemoryRequirements.memoryTypeBits & (1U << i)) != 0) {\n            if ((physicalDeviceMemoryProps.memoryTypes[i].propertyFlags & (VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT)) == (VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT)) {\n                imageStagingBufferAllocateInfo.memoryTypeIndex = i;\n                break;\n            }\n        }\n    }\n\n    VkDeviceMemory imageStagingBufferMemory;\n    result = vkAllocateMemory(device, &imageStagingBufferAllocateInfo, NULL, &imageStagingBufferMemory);\n    if (result != VK_SUCCESS) {\n        printf(\"Failed to allocate memory.\");\n        return -2;\n    }\n\n    /* Memory is allocated for the staging buffer. Now copy our image data into it. */\n    void* pImageStagedBufferData;\n    result = vkMapMemory(device, imageStagingBufferMemory, 0, imageMemoryRequirements.size, 0, &pImageStagedBufferData);\n    if (result != VK_SUCCESS) {\n        printf(\"Failed to map staging buffer memory.\");\n        return -2;\n    }\n\n    memcpy(pImageStagedBufferData, g_TextureDataRGBA, sizeof(g_TextureDataRGBA));\n\n    vkUnmapMemory(device, imageStagingBufferMemory);\n\n    /* The member can now be bound to the buffer. We could have also done this before the map/unmap part. */\n    vkBindBufferMemory(device, imageStagingBuffer, imageStagingBufferMemory, 0);\n\n    /*\n    At this point we have our image data in our staging buffer. Now we need to copy the data from the staging buffer into the texture. The texture's data\n    is stored on the GPU (device local), which means we need to do this by running a command (can't just copy from host memory to device memory using\n    memcpy()). I'm just using the same command object we created earlier.\n    */\n    {\n        VkCommandBufferBeginInfo beginInfo;\n        beginInfo.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO;\n        beginInfo.pNext = NULL;\n        beginInfo.flags = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT;\n        beginInfo.pInheritanceInfo = NULL;\n        vkBeginCommandBuffer(commandBuffer, &beginInfo);\n        {\n            VkImageMemoryBarrier imageMemoryBarrier;\n            imageMemoryBarrier.sType                           = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER;\n            imageMemoryBarrier.pNext                           = NULL;\n            imageMemoryBarrier.srcAccessMask                   = 0;  /* <-- Don't need to wait for any memory to be avaialable before starting the transfer. */\n            imageMemoryBarrier.dstAccessMask                   = 0;  /* <-- As above. */\n            imageMemoryBarrier.oldLayout                       = VK_IMAGE_LAYOUT_UNDEFINED;\n            imageMemoryBarrier.newLayout                       = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;\n            imageMemoryBarrier.srcQueueFamilyIndex             = selectedQueueFamilyIndex;\n            imageMemoryBarrier.dstQueueFamilyIndex             = selectedQueueFamilyIndex;\n            imageMemoryBarrier.image                           = image;\n            imageMemoryBarrier.subresourceRange.aspectMask     = VK_IMAGE_ASPECT_COLOR_BIT;\n            imageMemoryBarrier.subresourceRange.baseMipLevel   = 0;\n            imageMemoryBarrier.subresourceRange.levelCount     = 1;\n            imageMemoryBarrier.subresourceRange.baseArrayLayer = 0;\n            imageMemoryBarrier.subresourceRange.layerCount     = 1;\n            vkCmdPipelineBarrier(commandBuffer,\n                VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,  /* <-- Wait for nothing. */\n                VK_PIPELINE_STAGE_TRANSFER_BIT,     /* <-- Block the transfer stage until our layout transition is complete. */\n                0,\n                0, NULL,\n                0, NULL,\n                1, &imageMemoryBarrier\n            );\n\n            VkBufferImageCopy region;\n            region.bufferOffset                    = 0;\n            region.bufferRowLength                 = g_TextureSizeX;\n            region.bufferImageHeight               = g_TextureSizeY;\n            region.imageSubresource.aspectMask     = VK_IMAGE_ASPECT_COLOR_BIT;\n            region.imageSubresource.mipLevel       = 0;\n            region.imageSubresource.baseArrayLayer = 0;\n            region.imageSubresource.layerCount     = 1;\n            region.imageOffset.x                   = 0;\n            region.imageOffset.y                   = 0;\n            region.imageOffset.z                   = 0;\n            region.imageExtent.width               = g_TextureSizeX;\n            region.imageExtent.height              = g_TextureSizeY;\n            region.imageExtent.depth               = 1;\n            vkCmdCopyBufferToImage(commandBuffer, imageStagingBuffer, image, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 1, &region);\n\n            /*\n            When the command above has been executed, the image data should have been copied. We now need to transition the image to a layout\n            usable by the fragment shader.\n            */\n            imageMemoryBarrier.srcAccessMask                   = VK_ACCESS_TRANSFER_WRITE_BIT;  /* <-- Wait for transfer writes to become available. */\n            imageMemoryBarrier.dstAccessMask                   = VK_ACCESS_SHADER_READ_BIT;     /* <-- Make sure memory is available for reading by shaders at the end of the barrier. */\n            imageMemoryBarrier.oldLayout                       = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;\n            imageMemoryBarrier.newLayout                       = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL;\n            imageMemoryBarrier.srcQueueFamilyIndex             = selectedQueueFamilyIndex;\n            imageMemoryBarrier.dstQueueFamilyIndex             = selectedQueueFamilyIndex;\n            imageMemoryBarrier.image                           = image;\n            imageMemoryBarrier.subresourceRange.aspectMask     = VK_IMAGE_ASPECT_COLOR_BIT;\n            imageMemoryBarrier.subresourceRange.baseMipLevel   = 0;\n            imageMemoryBarrier.subresourceRange.levelCount     = 1;\n            imageMemoryBarrier.subresourceRange.baseArrayLayer = 0;\n            imageMemoryBarrier.subresourceRange.layerCount     = 1;\n            vkCmdPipelineBarrier(commandBuffer,\n                VK_PIPELINE_STAGE_TRANSFER_BIT,         /* <-- Wait for the transfer stage to complete. */\n                VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT,  /* <-- We access this image via the fragment shader, so don't start fragment shading until the transition is complete. This doesn't actually matter for this example, but good practice. */\n                0,\n                0, NULL,\n                0, NULL,\n                1, &imageMemoryBarrier\n            );\n        }\n        vkEndCommandBuffer(commandBuffer);\n\n        VkSubmitInfo submitInfo;\n        submitInfo.sType                = VK_STRUCTURE_TYPE_SUBMIT_INFO;\n        submitInfo.pNext                = NULL;\n        submitInfo.waitSemaphoreCount   = 0;\n        submitInfo.pWaitSemaphores      = NULL;\n        submitInfo.pWaitDstStageMask    = NULL;\n        submitInfo.commandBufferCount   = 1;\n        submitInfo.pCommandBuffers      = &commandBuffer;\n        submitInfo.signalSemaphoreCount = 0;\n        submitInfo.pSignalSemaphores    = NULL;\n        result = vkQueueSubmit(queue, 1, &submitInfo, 0);\n        if (result != VK_SUCCESS) {\n            printf(\"Failed to submit buffer.\");\n            return -2;\n        }\n\n        vkQueueWaitIdle(queue);\n    }\n\n    /* The image staging buffer is no longer needed and can be freed. */\n    vkDestroyBuffer(device, imageStagingBuffer, NULL);\n    vkFreeMemory(device, imageStagingBufferMemory, NULL);\n\n\n    VkImageViewCreateInfo imageViewCreateInfo;\n    imageViewCreateInfo.sType                           = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO;\n    imageViewCreateInfo.pNext                           = NULL;\n    imageViewCreateInfo.flags                           = 0;\n    imageViewCreateInfo.image                           = image;\n    imageViewCreateInfo.viewType                        = VK_IMAGE_VIEW_TYPE_2D;\n    imageViewCreateInfo.format                          = VK_FORMAT_R8G8B8A8_UNORM;\n    imageViewCreateInfo.components.r                    = VK_COMPONENT_SWIZZLE_R;\n    imageViewCreateInfo.components.g                    = VK_COMPONENT_SWIZZLE_G;\n    imageViewCreateInfo.components.b                    = VK_COMPONENT_SWIZZLE_B;\n    imageViewCreateInfo.components.a                    = VK_COMPONENT_SWIZZLE_A;\n    imageViewCreateInfo.subresourceRange.aspectMask     = VK_IMAGE_ASPECT_COLOR_BIT;\n    imageViewCreateInfo.subresourceRange.baseMipLevel   = 0;\n    imageViewCreateInfo.subresourceRange.levelCount     = 1;\n    imageViewCreateInfo.subresourceRange.baseArrayLayer = 0;\n    imageViewCreateInfo.subresourceRange.layerCount     = 1;\n\n    VkImageView imageView;\n    result = vkCreateImageView(device, &imageViewCreateInfo, NULL, &imageView);\n    if (result != VK_SUCCESS) {\n        printf(\"Failed to create image view.\");\n        return -1;\n    }\n\n\n    /* The sampler can be created independently of the image and image view, but we'll need it in order to see the texture when drawing. */\n    VkSamplerCreateInfo samplerCreateInfo;\n    samplerCreateInfo.sType                   = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO;\n    samplerCreateInfo.pNext                   = NULL;\n    samplerCreateInfo.flags                   = 0;\n    samplerCreateInfo.magFilter               = VK_FILTER_NEAREST;\n    samplerCreateInfo.minFilter               = VK_FILTER_NEAREST;\n    samplerCreateInfo.mipmapMode              = VK_SAMPLER_MIPMAP_MODE_NEAREST;    /* We're using a low resolution texture of 2x2 so we'll want to use point filtering rather than linear. */\n    samplerCreateInfo.addressModeU            = VK_SAMPLER_ADDRESS_MODE_REPEAT;\n    samplerCreateInfo.addressModeV            = VK_SAMPLER_ADDRESS_MODE_REPEAT;\n    samplerCreateInfo.addressModeW            = VK_SAMPLER_ADDRESS_MODE_REPEAT;\n    samplerCreateInfo.mipLodBias              = 0;\n    samplerCreateInfo.anisotropyEnable        = VK_FALSE;  /* We're not using anisotropic filtering for this example. */\n    samplerCreateInfo.maxAnisotropy           = 1;\n    samplerCreateInfo.compareEnable           = VK_FALSE;\n    samplerCreateInfo.compareOp               = VK_COMPARE_OP_ALWAYS;\n    samplerCreateInfo.minLod                  = 0;\n    samplerCreateInfo.maxLod                  = 0;\n    samplerCreateInfo.borderColor             = VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK;\n    samplerCreateInfo.unnormalizedCoordinates = VK_FALSE;   /* Set to VK_FALSE for [0, 1) range. Set to VK_TRUE for [0, texture width) range. */\n    \n    VkSampler sampler;\n    result = vkCreateSampler(device, &samplerCreateInfo, NULL, &sampler);\n    if (result != VK_SUCCESS) {\n        printf(\"Failed to create sampler.\");\n        return -1;\n    }\n\n\n\n    /*\n    Our scene is going to require the use of some uniform variables. This is basically how we pass in application\n    defined data into shaders. This is an important concept, so I'm including it in this example for completeness.\n\n    For uniform buffers to work, you guessed it, we need to allocate another buffer. However, this time it's a bit\n    simpler (finally!) because we don't need to worry about uploading this to the GPU. In fact, what we're going to\n    do is permanently map a host visible buffer and make sure it's configured as coherent so that writes to that\n    memory are immediately visible.\n\n    Also, we're going to use dynamic uniform buffers. For each object in the scene, we're just going to use a single\n    descriptor set, but use a different offset. This simplifies the management of descriptor sets, but does make\n    alignment a little bit more complicated because we need to ensure uniform buffers are aligned based on the\n    minUniformBufferOffsetAlignment member of the physical device limits. \n    */\n    VkPhysicalDeviceProperties physicalDeviceProperties;\n    vkGetPhysicalDeviceProperties(pPhysicalDevices[selectedPhysicalDeviceIndex], &physicalDeviceProperties);\n\n    VkDeviceSize uniformBufferSizePerObject = sizeof(float)*4;  /* The per-object uniform buffer size is only a 4 dimensional floating point vector. */\n    VkDeviceSize uniformBufferSizePerObjectAligned = uniformBufferSizePerObject / physicalDeviceProperties.limits.minUniformBufferOffsetAlignment;\n    if (uniformBufferSizePerObject % physicalDeviceProperties.limits.minUniformBufferOffsetAlignment > 0) {\n        uniformBufferSizePerObjectAligned += 1;\n    }\n    uniformBufferSizePerObjectAligned *= physicalDeviceProperties.limits.minUniformBufferOffsetAlignment;\n\n    VkBufferCreateInfo uniformBufferCreateInfo;\n    uniformBufferCreateInfo.sType                 = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO;\n    uniformBufferCreateInfo.pNext                 = NULL;\n    uniformBufferCreateInfo.flags                 = 0;\n    uniformBufferCreateInfo.size                  = uniformBufferSizePerObjectAligned * 2; /* Multiply by two since we are using the same buffer for two objects. */\n    uniformBufferCreateInfo.usage                 = VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT;\n    uniformBufferCreateInfo.sharingMode           = VK_SHARING_MODE_EXCLUSIVE;\n    uniformBufferCreateInfo.queueFamilyIndexCount = 0;\n    uniformBufferCreateInfo.pQueueFamilyIndices   = NULL;\n\n    VkBuffer uniformBuffer;\n    result = vkCreateBuffer(device, &uniformBufferCreateInfo, NULL, &uniformBuffer);\n    if (result != VK_SUCCESS) {\n        printf(\"Failed to create uniform buffer.\");\n        return -1;\n    }\n\n    /*\n    The backing memory for our uniform buffer can be host visible and coherent. We'll keep this permanently mapped.\n    */\n    VkMemoryRequirements uniformBufferMemoryReqs;\n    vkGetBufferMemoryRequirements(device, uniformBuffer, &uniformBufferMemoryReqs);\n\n    VkMemoryAllocateInfo uniformBufferMemoryAllocateInfo;\n    uniformBufferMemoryAllocateInfo.sType           = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO;\n    uniformBufferMemoryAllocateInfo.pNext           = NULL;\n    uniformBufferMemoryAllocateInfo.allocationSize  = uniformBufferMemoryReqs.size;\n    uniformBufferMemoryAllocateInfo.memoryTypeIndex = (uint32_t)-1; /* Set to a proper value in the loop below. */\n\n    for (uint32_t i = 0; i < physicalDeviceMemoryProps.memoryTypeCount; ++i) {\n        if ((uniformBufferMemoryReqs.memoryTypeBits & (1U << i)) != 0) {\n            if ((physicalDeviceMemoryProps.memoryTypes[i].propertyFlags & (VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT)) == (VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT)) {\n                uniformBufferMemoryAllocateInfo.memoryTypeIndex = i;\n                break;\n            }\n        }\n    }\n\n    VkDeviceMemory uniformBufferMemory;\n    result = vkAllocateMemory(device, &uniformBufferMemoryAllocateInfo, NULL, &uniformBufferMemory);\n    if (result != VK_SUCCESS) {\n        printf(\"Failed to allocate uniform buffer memory.\");\n        return -1;\n    }\n\n    result = vkBindBufferMemory(device, uniformBuffer, uniformBufferMemory, 0);\n    if (result != VK_SUCCESS) {\n        printf(\"Failed to bind uniform buffer memory.\");\n        return -1;\n    }\n\n    /* Now we can create our permanent mapping. */\n    void* pUniformBufferData;\n    result = vkMapMemory(device, uniformBufferMemory, 0, uniformBufferMemoryReqs.size, 0, &pUniformBufferData);\n    if (result != VK_SUCCESS) {\n        printf(\"Failed to map uniform buffer memory.\");\n        return -1;\n    }\n\n    /* We will now declare some pointers for the per-object uniform data. This example has two objects in the scene. */\n    float* pObjectUniformBuffer[2];\n    for (size_t iObject = 0; iObject < sizeof(pObjectUniformBuffer) / sizeof(pObjectUniformBuffer[0]); iObject += 1) {\n        pObjectUniformBuffer[iObject] = (float*)((char*)pUniformBufferData + (iObject * uniformBufferSizePerObjectAligned));\n    }\n\n    /* Set up some per-object data. */\n    pObjectUniformBuffer[0][0] = -0.4f;\n    pObjectUniformBuffer[0][1] = -0.4f;\n    pObjectUniformBuffer[0][2] =  0.0f;\n    pObjectUniformBuffer[0][3] =  0.0f;\n\n    pObjectUniformBuffer[1][0] =  0.4f;\n    pObjectUniformBuffer[1][1] =  0.4f;\n    pObjectUniformBuffer[1][2] =  1.0f;  /* Put this one (bottom right) behind the other. */\n    pObjectUniformBuffer[1][3] =  0.0f;\n\n\n\n    /*\n    At this point we have the image and the sampler, but we're still not done. We need to actually create the descriptor sets which will eventually be\n    bound with vkCmdBindDescriptorSets() before we draw our geometry. When we created the pipeline, we specified the *layout* of the descriptor sets,\n    but now we need to create the actual descriptor sets.\n\n    To create the descriptor sets we first need a descritor pool. The descriptor pool is where the descriptor sets are allocated.\n    */\n    VkDescriptorPoolSize descriptorPoolSizes[3];\n    descriptorPoolSizes[0].type = VK_DESCRIPTOR_TYPE_SAMPLER;\n    descriptorPoolSizes[0].descriptorCount = 1; /* This example only has 1 sampler. */\n    descriptorPoolSizes[1].type = VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE;\n    descriptorPoolSizes[1].descriptorCount = 1; /* This example only has 1 image. */\n    descriptorPoolSizes[2].type = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC;\n    descriptorPoolSizes[2].descriptorCount = 1; /* This example only has 1 uniform buffer. */\n\n    VkDescriptorPoolCreateInfo descriptorPoolCreateInfo;\n    descriptorPoolCreateInfo.sType         = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO;\n    descriptorPoolCreateInfo.pNext         = NULL;\n    descriptorPoolCreateInfo.flags         = 0; /* Could set this to VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT if we wanted to be able to free an individual descriptor set, but we're not doing that in this example. */\n    descriptorPoolCreateInfo.maxSets       = 2; /* We're only going to be allocating two descriptor sets. */\n    descriptorPoolCreateInfo.poolSizeCount = sizeof(descriptorPoolSizes) / sizeof(descriptorPoolSizes[0]);\n    descriptorPoolCreateInfo.pPoolSizes    = descriptorPoolSizes;\n\n    VkDescriptorPool descriptorPool;\n    result = vkCreateDescriptorPool(device, &descriptorPoolCreateInfo, NULL, &descriptorPool);\n    if (result != VK_SUCCESS) {\n        printf(\"Failed to create descriptor pool.\");\n        return -1;\n    }\n\n    /* We have the descriptor pool, so now we can create our descriptor set. */\n    VkDescriptorSetLayout descriptorSetLayoutsToAllocate[2];    /* 1 descriptor set for textures, 1 descriptor set for dynamic uniform buffer. */\n    descriptorSetLayoutsToAllocate[0] = descriptorSetLayouts[0];\n    descriptorSetLayoutsToAllocate[1] = descriptorSetLayouts[1];\n\n    VkDescriptorSetAllocateInfo descriptorSetAllocateInfo;\n    descriptorSetAllocateInfo.sType              = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO;\n    descriptorSetAllocateInfo.pNext              = NULL;\n    descriptorSetAllocateInfo.descriptorPool     = descriptorPool;\n    descriptorSetAllocateInfo.descriptorSetCount = sizeof(descriptorSetLayoutsToAllocate) / sizeof(descriptorSetLayoutsToAllocate[0]);\n    descriptorSetAllocateInfo.pSetLayouts        = descriptorSetLayoutsToAllocate;\n\n    VkDescriptorSet descriptorSets[2];\n    result = vkAllocateDescriptorSets(device, &descriptorSetAllocateInfo, descriptorSets);\n    if (result != VK_SUCCESS) {\n        printf(\"Failed to create descriptor sets.\");\n        return -1;\n    }\n\n    /* We have the descriptor sets, so now we need to associate the images with them. */\n    VkDescriptorImageInfo descriptorSamplerInfo;\n    descriptorSamplerInfo.sampler     = sampler;\n    descriptorSamplerInfo.imageView   = VK_NULL_HANDLE;\n    descriptorSamplerInfo.imageLayout = VK_IMAGE_LAYOUT_UNDEFINED;\n\n    VkDescriptorImageInfo descriptorImageInfo;\n    descriptorImageInfo.sampler     = VK_NULL_HANDLE;\n    descriptorImageInfo.imageView   = imageView;\n    descriptorImageInfo.imageLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL;\n\n    VkWriteDescriptorSet descriptorSetWrites[2];\n    descriptorSetWrites[0].sType            = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET;\n    descriptorSetWrites[0].pNext            = NULL;\n    descriptorSetWrites[0].dstSet           = descriptorSets[0];\n    descriptorSetWrites[0].dstBinding       = 0;\n    descriptorSetWrites[0].dstArrayElement  = 0;\n    descriptorSetWrites[0].descriptorCount  = 1;\n    descriptorSetWrites[0].descriptorType   = VK_DESCRIPTOR_TYPE_SAMPLER;\n    descriptorSetWrites[0].pImageInfo       = &descriptorSamplerInfo;\n    descriptorSetWrites[0].pBufferInfo      = NULL;\n    descriptorSetWrites[0].pTexelBufferView = NULL;\n\n    descriptorSetWrites[1].sType            = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET;\n    descriptorSetWrites[1].pNext            = NULL;\n    descriptorSetWrites[1].dstSet           = descriptorSets[0];\n    descriptorSetWrites[1].dstBinding       = 1;\n    descriptorSetWrites[1].dstArrayElement  = 0;\n    descriptorSetWrites[1].descriptorCount  = 1;\n    descriptorSetWrites[1].descriptorType   = VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE;\n    descriptorSetWrites[1].pImageInfo       = &descriptorImageInfo;\n    descriptorSetWrites[1].pBufferInfo      = NULL;\n    descriptorSetWrites[1].pTexelBufferView = NULL;\n\n    vkUpdateDescriptorSets(device, sizeof(descriptorSetWrites) / sizeof(descriptorSetWrites[0]), descriptorSetWrites, 0, NULL);\n\n\n    VkDescriptorBufferInfo descriptorBufferInfo;\n    descriptorBufferInfo.buffer = uniformBuffer;\n    descriptorBufferInfo.offset = 0;\n    descriptorBufferInfo.range  = sizeof(float)*4;\n\n    VkWriteDescriptorSet descriptorSetWrites_UBO[1];\n    descriptorSetWrites_UBO[0].sType            = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET;\n    descriptorSetWrites_UBO[0].pNext            = NULL;\n    descriptorSetWrites_UBO[0].dstSet           = descriptorSets[1];\n    descriptorSetWrites_UBO[0].dstBinding       = 0;\n    descriptorSetWrites_UBO[0].dstArrayElement  = 0;\n    descriptorSetWrites_UBO[0].descriptorCount  = 1;\n    descriptorSetWrites_UBO[0].descriptorType   = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC;\n    descriptorSetWrites_UBO[0].pImageInfo       = NULL;\n    descriptorSetWrites_UBO[0].pBufferInfo      = &descriptorBufferInfo;\n    descriptorSetWrites_UBO[0].pTexelBufferView = NULL;\n\n    vkUpdateDescriptorSets(device, sizeof(descriptorSetWrites_UBO) / sizeof(descriptorSetWrites_UBO[0]), descriptorSetWrites_UBO, 0, NULL);\n\n\n\n    /* Main loop. */\n    for (;;) {\n    #ifdef _WIN32\n        MSG msg;\n        if (PeekMessageA(&msg, NULL, 0, 0, PM_REMOVE)) {\n            if (msg.message == WM_QUIT) {\n                break;  /* Received a quit message. */\n            }\n\n            TranslateMessage(&msg);\n            DispatchMessageA(&msg);\n        }\n    #else\n        /* X11 event handling */\n        XEvent event;\n        if (XPending(pDisplay)) {\n            XNextEvent(pDisplay, &event);\n            if (event.type == ClientMessage) {\n                if ((Atom)event.xclient.data.l[0] == wmDeleteMessage) {\n                    break;  /* Received a quit message. */\n                }\n            } else if (event.type == DestroyNotify) {\n                break;  /* Window was destroyed, probably by the window manager. */\n            }\n        }\n    #endif\n     \n        uint32_t swapchainImageIndex;\n        result = vkAcquireNextImageKHR(device, swapchain, UINT64_MAX, swapchainSemaphore, VK_NULL_HANDLE, &swapchainImageIndex);\n        if (result != VK_SUCCESS && result != VK_SUBOPTIMAL_KHR) {\n            return -1;\n        }\n\n        if (result == VK_ERROR_OUT_OF_DATE_KHR) {\n            /*\n            Here is where you might want to recreate the swapchain. I'm not doing this in this here because I want to\n            keep the code flat and this would require function-izing the swapchain initialization stuff which I don't\n            want to do in this example.\n            \n            You may get this error when you try resizing the window. This happens on Nvidia, but not Intel. I have not\n            tested AMD.\n            */\n        }\n\n        VkCommandBufferBeginInfo beginInfo;\n        beginInfo.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO;\n        beginInfo.pNext = NULL;\n        beginInfo.flags = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT;\n        beginInfo.pInheritanceInfo = NULL;\n        vkBeginCommandBuffer(commandBuffer, &beginInfo);\n        {\n            VkClearValue clearValues[2];\n\n            /* Color attachment. */\n            clearValues[0].color.float32[0] = 0.2f;\n            clearValues[0].color.float32[1] = 0;\n            clearValues[0].color.float32[2] = 0;\n            clearValues[0].color.float32[3] = 1;\n\n            /* Depth/stencil attachment. */\n            clearValues[1].depthStencil.depth   = 1;    /* 0 = closer to viewer; 1 = further away. */\n            clearValues[1].depthStencil.stencil = 0;\n\n            VkRenderPassBeginInfo renderpassBeginInfo;\n            renderpassBeginInfo.sType               = VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO;\n            renderpassBeginInfo.pNext               = NULL;\n            renderpassBeginInfo.renderPass          = renderPass;\n            renderpassBeginInfo.framebuffer         = swapchainFramebuffers[swapchainImageIndex];\n            renderpassBeginInfo.renderArea.offset.x = 0;\n            renderpassBeginInfo.renderArea.offset.y = 0;\n            renderpassBeginInfo.renderArea.extent   = surfaceCaps.currentExtent;\n            renderpassBeginInfo.clearValueCount     = sizeof(clearValues) / sizeof(clearValues[0]);\n            renderpassBeginInfo.pClearValues        = clearValues;\n            vkCmdBeginRenderPass(commandBuffer, &renderpassBeginInfo, VK_SUBPASS_CONTENTS_INLINE);\n            {\n                VkViewport viewport;\n                viewport.x        = 0;\n                viewport.y        = 0;\n                viewport.width    = (float)surfaceCaps.currentExtent.width;\n                viewport.height   = (float)surfaceCaps.currentExtent.height;\n                viewport.minDepth = 0;  /* Careful here. Vulkan does not use the same coordinate system as OpenGL. Requires a clipping matrix to be applied to the projection matrix to get this in the [0..1] range. */\n                viewport.maxDepth = 1;\n                vkCmdSetViewport(commandBuffer, 0, 1, &viewport);\n\n                VkRect2D scissor;\n                scissor.offset.x      = 0;\n                scissor.offset.y      = 0;\n                scissor.extent.width  = surfaceCaps.currentExtent.width;\n                scissor.extent.height = surfaceCaps.currentExtent.height;\n                vkCmdSetScissor(commandBuffer, 0, 1, &scissor);\n\n                \n                /* Bind the pipeline first. You can bind descriptor sets, vertex buffers and index buffers before binding the pipeline, but I like to do the pipeline first. */\n                vkCmdBindPipeline(commandBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, pipeline);\n\n                /* Vertex and index buffers need to be bound before drawing. */\n                VkDeviceSize offset = 0;\n                vkCmdBindVertexBuffers(commandBuffer, 0, 1, &vertexIndexBuffer, &offset);\n                vkCmdBindIndexBuffer(commandBuffer, vertexIndexBuffer, sizeof(geometryVertexData), VK_INDEX_TYPE_UINT32);\n\n                /* We need to bind the descriptor sets before we'll be able to use the texture in the shader. */\n                vkCmdBindDescriptorSets(commandBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, pipelineLayout, 0, 1, &descriptorSets[0], 0, NULL);\n\n\n                /* Object 1. */\n                uint32_t uniformOffset1 = 0;\n                vkCmdBindDescriptorSets(commandBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, pipelineLayout, 1, 1, &descriptorSets[1], 1, &uniformOffset1);\n\n                /* Only draw once the necessary things have been bound (pipeline, descriptor sets, vertex buffers, index buffers) */\n                vkCmdDrawIndexed(commandBuffer, sizeof(geometryIndexData) / sizeof(geometryIndexData[0]), 1, 0, 0, 0);\n\n\n                /* Object 2. */\n                uint32_t uniformOffset2 = (uint32_t)uniformBufferSizePerObjectAligned;\n                vkCmdBindDescriptorSets(commandBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, pipelineLayout, 1, 1, &descriptorSets[1], 1, &uniformOffset2);\n                \n                /* Only draw once the necessary things have been bound (pipeline, descriptor sets, vertex buffers, index buffers) */\n                vkCmdDrawIndexed(commandBuffer, sizeof(geometryIndexData) / sizeof(geometryIndexData[0]), 1, 0, 0, 0);\n            }\n            vkCmdEndRenderPass(commandBuffer);\n        }\n        result = vkEndCommandBuffer(commandBuffer);\n        if (result != VK_SUCCESS) {\n            printf(\"Command buffer recording failed.\");\n            return -2;\n        }\n\n\n        VkPipelineStageFlags pWaitDstStageMask[1];\n        pWaitDstStageMask[0] = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT;\n\n        VkSubmitInfo submitInfo;\n        submitInfo.sType                = VK_STRUCTURE_TYPE_SUBMIT_INFO;\n        submitInfo.pNext                = NULL;\n        submitInfo.waitSemaphoreCount   = 1;\n        submitInfo.pWaitSemaphores      = &swapchainSemaphore;\n        submitInfo.pWaitDstStageMask    = pWaitDstStageMask;\n        submitInfo.commandBufferCount   = 1;\n        submitInfo.pCommandBuffers      = &commandBuffer;\n        submitInfo.signalSemaphoreCount = 1;\n        submitInfo.pSignalSemaphores    = &swapchainSemaphore;\n        result = vkQueueSubmit(queue, 1, &submitInfo, commandBufferFence);\n        if (result != VK_SUCCESS) {\n            printf(\"Failed to submit buffer.\");\n            return -2;\n        }\n\n        /*\n        In the call above to vkQueueSubmit() we specified a fence that will be signalled when the command buffer has\n        completed processing. We need to wait on that now so that the next call to vkBeginCommandBuffer() does not\n        complain about the command buffer being in a pending state. This is only required in our case because we're\n        reusing the same command buffer.\n        */\n        vkWaitForFences(device, 1, &commandBufferFence, VK_TRUE, UINT64_MAX);\n        vkResetFences(device, 1, &commandBufferFence);\n\n        VkPresentInfoKHR info;\n        info.sType              = VK_STRUCTURE_TYPE_PRESENT_INFO_KHR;\n        info.pNext              = NULL;\n        info.waitSemaphoreCount = 1;\n        info.pWaitSemaphores    = &swapchainSemaphore;\n        info.swapchainCount     = 1;\n        info.pSwapchains        = &swapchain;\n        info.pImageIndices      = &swapchainImageIndex;\n        info.pResults           = NULL;\n        vkQueuePresentKHR(queue, &info);\n    }\n\n    /*\n    Teardown. This isn't a complete teardown - you would need to destroy anything that was created with vkCreate*()\n    and free any memory that was created with vkAllocateMemory() with vkFreeMemory(). Unfortunately the flat nature of\n    this example just makes this too annoying to deal with so I'm not doing a complete teardown for the sake of\n    simplicity. Note that the validation layer will result in a bunch of errors being reported at this point due to\n    devices being uninitialized while other objects are still active. To avoid this, uninitialize your objects in the\n    correct order.\n    */\n    vkDestroySwapchainKHR(device, swapchain, NULL);\n    vkDestroyDevice(device, NULL);\n    vkDestroySurfaceKHR(instance, surface, NULL);\n    vkDestroyInstance(instance, NULL);\n\n    return 0;\n}\n"
  },
  {
    "path": "examples/01_Fundamentals/01_Fundamentals.cpp",
    "content": "#include \"01_Fundamentals.c\""
  },
  {
    "path": "examples/01_Fundamentals/01_Fundamentals_VFS.c",
    "content": "#include <string.h>\n#include <stdlib.h>\n\nstatic unsigned char g_vfsFileData[] = {\n    0x23, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x34, 0x35, 0x30, 0x0A, 0x0A, 0x2F, 0x2F, 0x20, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6F, 0x72, 0x20, 0x73, 0x65, 0x74, 0x73,\n    0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x65, 0x78, 0x61, 0x6D, 0x70, 0x6C, 0x65, 0x20, 0x75, 0x73, 0x65, 0x73, 0x20, 0x73, 0x65, 0x70, 0x61, 0x72, 0x61, 0x74, 0x65, 0x20, 0x74, 0x65, 0x78,\n    0x74, 0x75, 0x72, 0x65, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x73, 0x61, 0x6D, 0x70, 0x6C, 0x65, 0x72, 0x73, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x79, 0x6F, 0x75, 0x20, 0x63, 0x61, 0x6E, 0x20,\n    0x61, 0x6C, 0x73, 0x6F, 0x20, 0x75, 0x73, 0x65, 0x20, 0x61, 0x20, 0x63, 0x6F, 0x6D, 0x62, 0x69, 0x6E, 0x65, 0x64, 0x0A, 0x2F, 0x2F, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x2F, 0x73,\n    0x61, 0x6D, 0x70, 0x6C, 0x65, 0x72, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x73, 0x75, 0x69, 0x74, 0x73, 0x20, 0x79, 0x6F, 0x75, 0x72, 0x20, 0x73, 0x63, 0x65, 0x6E, 0x61, 0x72,\n    0x69, 0x6F, 0x20, 0x62, 0x65, 0x74, 0x74, 0x65, 0x72, 0x2E, 0x0A, 0x6C, 0x61, 0x79, 0x6F, 0x75, 0x74, 0x28, 0x73, 0x65, 0x74, 0x20, 0x3D, 0x20, 0x30, 0x2C, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69,\n    0x6E, 0x67, 0x20, 0x3D, 0x20, 0x30, 0x29, 0x20, 0x75, 0x6E, 0x69, 0x66, 0x6F, 0x72, 0x6D, 0x20, 0x73, 0x61, 0x6D, 0x70, 0x6C, 0x65, 0x72, 0x20, 0x20, 0x20, 0x46, 0x52, 0x41, 0x47, 0x5F, 0x53,\n    0x61, 0x6D, 0x70, 0x6C, 0x65, 0x72, 0x3B, 0x0A, 0x6C, 0x61, 0x79, 0x6F, 0x75, 0x74, 0x28, 0x73, 0x65, 0x74, 0x20, 0x3D, 0x20, 0x30, 0x2C, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20,\n    0x3D, 0x20, 0x31, 0x29, 0x20, 0x75, 0x6E, 0x69, 0x66, 0x6F, 0x72, 0x6D, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, 0x44, 0x20, 0x46, 0x52, 0x41, 0x47, 0x5F, 0x54, 0x65, 0x78, 0x74,\n    0x75, 0x72, 0x65, 0x3B, 0x0A, 0x0A, 0x0A, 0x2F, 0x2F, 0x20, 0x46, 0x72, 0x61, 0x67, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x49, 0x6E, 0x70, 0x75, 0x74, 0x0A, 0x6C, 0x61, 0x79, 0x6F, 0x75, 0x74, 0x28,\n    0x6C, 0x6F, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x3D, 0x20, 0x30, 0x29, 0x20, 0x69, 0x6E, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x46, 0x52, 0x41, 0x47, 0x5F, 0x43, 0x6F, 0x6C, 0x6F, 0x72,\n    0x3B, 0x0A, 0x6C, 0x61, 0x79, 0x6F, 0x75, 0x74, 0x28, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x3D, 0x20, 0x31, 0x29, 0x20, 0x69, 0x6E, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x46,\n    0x52, 0x41, 0x47, 0x5F, 0x54, 0x65, 0x78, 0x43, 0x6F, 0x6F, 0x72, 0x64, 0x3B, 0x0A, 0x0A, 0x2F, 0x2F, 0x20, 0x46, 0x72, 0x61, 0x67, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x4F, 0x75, 0x74, 0x70, 0x75,\n    0x74, 0x0A, 0x6C, 0x61, 0x79, 0x6F, 0x75, 0x74, 0x28, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x3D, 0x20, 0x30, 0x29, 0x20, 0x6F, 0x75, 0x74, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20,\n    0x4F, 0x55, 0x54, 0x5F, 0x43, 0x6F, 0x6C, 0x6F, 0x72, 0x3B, 0x0A, 0x0A, 0x76, 0x6F, 0x69, 0x64, 0x20, 0x6D, 0x61, 0x69, 0x6E, 0x28, 0x29, 0x0A, 0x7B, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x4F, 0x55,\n    0x54, 0x5F, 0x43, 0x6F, 0x6C, 0x6F, 0x72, 0x20, 0x3D, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, 0x46, 0x52, 0x41, 0x47, 0x5F, 0x43, 0x6F, 0x6C, 0x6F, 0x72, 0x2C, 0x20, 0x31, 0x29, 0x20, 0x2A, 0x20,\n    0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x28, 0x73, 0x61, 0x6D, 0x70, 0x6C, 0x65, 0x72, 0x32, 0x44, 0x28, 0x46, 0x52, 0x41, 0x47, 0x5F, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x2C, 0x20,\n    0x46, 0x52, 0x41, 0x47, 0x5F, 0x53, 0x61, 0x6D, 0x70, 0x6C, 0x65, 0x72, 0x29, 0x2C, 0x20, 0x46, 0x52, 0x41, 0x47, 0x5F, 0x54, 0x65, 0x78, 0x43, 0x6F, 0x6F, 0x72, 0x64, 0x29, 0x3B, 0x0A, 0x7D,\n    0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x08, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x06, 0x00,\n    0x01, 0x00, 0x00, 0x00, 0x47, 0x4C, 0x53, 0x4C, 0x2E, 0x73, 0x74, 0x64, 0x2E, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,\n    0x0F, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6D, 0x61, 0x69, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00,\n    0x10, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0xC2, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00,\n    0x6D, 0x61, 0x69, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, 0x4F, 0x55, 0x54, 0x5F, 0x43, 0x6F, 0x6C, 0x6F, 0x72, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00,\n    0x0C, 0x00, 0x00, 0x00, 0x46, 0x52, 0x41, 0x47, 0x5F, 0x43, 0x6F, 0x6C, 0x6F, 0x72, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x15, 0x00, 0x00, 0x00, 0x46, 0x52, 0x41, 0x47, 0x5F, 0x54, 0x65, 0x78,\n    0x74, 0x75, 0x72, 0x65, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, 0x46, 0x52, 0x41, 0x47, 0x5F, 0x53, 0x61, 0x6D, 0x70, 0x6C, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00,\n    0x05, 0x00, 0x06, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x46, 0x52, 0x41, 0x47, 0x5F, 0x54, 0x65, 0x78, 0x43, 0x6F, 0x6F, 0x72, 0x64, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00,\n    0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00,\n    0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x19, 0x00, 0x00, 0x00,\n    0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x19, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x1F, 0x00, 0x00, 0x00,\n    0x1E, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00,\n    0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00,\n    0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x0A, 0x00, 0x00, 0x00,\n    0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x04, 0x00, 0x0B, 0x00, 0x00, 0x00,\n    0x0C, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2B, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x19, 0x00, 0x09, 0x00, 0x13, 0x00, 0x00, 0x00,\n    0x06, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00,\n    0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x02, 0x00,\n    0x17, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x04, 0x00, 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00,\n    0x00, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x03, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x1D, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,\n    0x20, 0x00, 0x04, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1D, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x04, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,\n    0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x04, 0x00,\n    0x0A, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n    0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00,\n    0x0D, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00,\n    0x0E, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x04, 0x00, 0x17, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00,\n    0x19, 0x00, 0x00, 0x00, 0x56, 0x00, 0x05, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x04, 0x00, 0x1D, 0x00, 0x00, 0x00,\n    0x20, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x57, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00,\n    0x07, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x03, 0x00, 0x09, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0xFD, 0x00, 0x01, 0x00,\n    0x38, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x34, 0x35, 0x30, 0x0A, 0x0A, 0x2F, 0x2F, 0x20, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x20,\n    0x49, 0x6E, 0x70, 0x75, 0x74, 0x0A, 0x6C, 0x61, 0x79, 0x6F, 0x75, 0x74, 0x28, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x3D, 0x20, 0x30, 0x29, 0x20, 0x69, 0x6E, 0x20, 0x76, 0x65,\n    0x63, 0x33, 0x20, 0x56, 0x45, 0x52, 0x54, 0x5F, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x3B, 0x0A, 0x6C, 0x61, 0x79, 0x6F, 0x75, 0x74, 0x28, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x69, 0x6F,\n    0x6E, 0x20, 0x3D, 0x20, 0x31, 0x29, 0x20, 0x69, 0x6E, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x56, 0x45, 0x52, 0x54, 0x5F, 0x43, 0x6F, 0x6C, 0x6F, 0x72, 0x3B, 0x0A, 0x6C, 0x61, 0x79, 0x6F, 0x75,\n    0x74, 0x28, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x3D, 0x20, 0x32, 0x29, 0x20, 0x69, 0x6E, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x56, 0x45, 0x52, 0x54, 0x5F, 0x54, 0x65, 0x78,\n    0x43, 0x6F, 0x6F, 0x72, 0x64, 0x3B, 0x0A, 0x0A, 0x2F, 0x2F, 0x20, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x20, 0x4F, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x2F, 0x20, 0x46, 0x72, 0x61, 0x67, 0x6D,\n    0x65, 0x6E, 0x74, 0x20, 0x49, 0x6E, 0x70, 0x75, 0x74, 0x0A, 0x6C, 0x61, 0x79, 0x6F, 0x75, 0x74, 0x28, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x3D, 0x20, 0x30, 0x29, 0x20, 0x6F,\n    0x75, 0x74, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x46, 0x52, 0x41, 0x47, 0x5F, 0x43, 0x6F, 0x6C, 0x6F, 0x72, 0x3B, 0x0A, 0x6C, 0x61, 0x79, 0x6F, 0x75, 0x74, 0x28, 0x6C, 0x6F, 0x63, 0x61, 0x74,\n    0x69, 0x6F, 0x6E, 0x20, 0x3D, 0x20, 0x31, 0x29, 0x20, 0x6F, 0x75, 0x74, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x46, 0x52, 0x41, 0x47, 0x5F, 0x54, 0x65, 0x78, 0x43, 0x6F, 0x6F, 0x72, 0x64, 0x3B,\n    0x0A, 0x0A, 0x2F, 0x2F, 0x20, 0x55, 0x6E, 0x69, 0x66, 0x6F, 0x72, 0x6D, 0x73, 0x0A, 0x6C, 0x61, 0x79, 0x6F, 0x75, 0x74, 0x28, 0x73, 0x65, 0x74, 0x20, 0x3D, 0x20, 0x31, 0x2C, 0x20, 0x62, 0x69,\n    0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x3D, 0x20, 0x30, 0x29, 0x20, 0x75, 0x6E, 0x69, 0x66, 0x6F, 0x72, 0x6D, 0x20, 0x55, 0x42, 0x4F, 0x0A, 0x7B, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63,\n    0x34, 0x20, 0x4F, 0x66, 0x66, 0x73, 0x65, 0x74, 0x3B, 0x0A, 0x7D, 0x20, 0x54, 0x72, 0x61, 0x6E, 0x73, 0x66, 0x6F, 0x72, 0x6D, 0x3B, 0x0A, 0x0A, 0x76, 0x6F, 0x69, 0x64, 0x20, 0x6D, 0x61, 0x69,\n    0x6E, 0x28, 0x29, 0x0A, 0x7B, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x67, 0x6C, 0x5F, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x20, 0x20, 0x3D, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, 0x56,\n    0x45, 0x52, 0x54, 0x5F, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x2C, 0x20, 0x31, 0x29, 0x20, 0x2B, 0x20, 0x54, 0x72, 0x61, 0x6E, 0x73, 0x66, 0x6F, 0x72, 0x6D, 0x2E, 0x4F, 0x66, 0x66,\n    0x73, 0x65, 0x74, 0x3B, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x46, 0x52, 0x41, 0x47, 0x5F, 0x43, 0x6F, 0x6C, 0x6F, 0x72, 0x20, 0x20, 0x20, 0x20, 0x3D, 0x20, 0x56, 0x45, 0x52, 0x54, 0x5F, 0x43, 0x6F,\n    0x6C, 0x6F, 0x72, 0x3B, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x46, 0x52, 0x41, 0x47, 0x5F, 0x54, 0x65, 0x78, 0x43, 0x6F, 0x6F, 0x72, 0x64, 0x20, 0x3D, 0x20, 0x56, 0x45, 0x52, 0x54, 0x5F, 0x54, 0x65,\n    0x78, 0x43, 0x6F, 0x6F, 0x72, 0x64, 0x3B, 0x0A, 0x7D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x08, 0x00, 0x2C, 0x00, 0x00, 0x00,\n    0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4C, 0x53, 0x4C, 0x2E, 0x73, 0x74, 0x64, 0x2E, 0x34, 0x35, 0x30,\n    0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6D, 0x61, 0x69, 0x6E,\n    0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00,\n    0x02, 0x00, 0x00, 0x00, 0xC2, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6D, 0x61, 0x69, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x0B, 0x00, 0x00, 0x00,\n    0x67, 0x6C, 0x5F, 0x50, 0x65, 0x72, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x67, 0x6C, 0x5F, 0x50,\n    0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x06, 0x00, 0x07, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x67, 0x6C, 0x5F, 0x50, 0x6F, 0x69, 0x6E, 0x74, 0x53, 0x69, 0x7A, 0x65,\n    0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x07, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x67, 0x6C, 0x5F, 0x43, 0x6C, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6E, 0x63, 0x65, 0x00,\n    0x06, 0x00, 0x07, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x67, 0x6C, 0x5F, 0x43, 0x75, 0x6C, 0x6C, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6E, 0x63, 0x65, 0x00, 0x05, 0x00, 0x03, 0x00,\n    0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x12, 0x00, 0x00, 0x00, 0x56, 0x45, 0x52, 0x54, 0x5F, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0x00,\n    0x05, 0x00, 0x03, 0x00, 0x19, 0x00, 0x00, 0x00, 0x55, 0x42, 0x4F, 0x00, 0x06, 0x00, 0x05, 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x66, 0x66, 0x73, 0x65, 0x74, 0x00, 0x00,\n    0x05, 0x00, 0x05, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x54, 0x72, 0x61, 0x6E, 0x73, 0x66, 0x6F, 0x72, 0x6D, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x23, 0x00, 0x00, 0x00, 0x46, 0x52, 0x41, 0x47,\n    0x5F, 0x43, 0x6F, 0x6C, 0x6F, 0x72, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x24, 0x00, 0x00, 0x00, 0x56, 0x45, 0x52, 0x54, 0x5F, 0x43, 0x6F, 0x6C, 0x6F, 0x72, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00,\n    0x28, 0x00, 0x00, 0x00, 0x46, 0x52, 0x41, 0x47, 0x5F, 0x54, 0x65, 0x78, 0x43, 0x6F, 0x6F, 0x72, 0x64, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x56, 0x45, 0x52, 0x54,\n    0x5F, 0x54, 0x65, 0x78, 0x43, 0x6F, 0x6F, 0x72, 0x64, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n    0x48, 0x00, 0x05, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,\n    0x0B, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00,\n    0x0B, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x19, 0x00, 0x00, 0x00,\n    0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x19, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x1B, 0x00, 0x00, 0x00,\n    0x22, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x23, 0x00, 0x00, 0x00,\n    0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x28, 0x00, 0x00, 0x00,\n    0x1E, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00,\n    0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00,\n    0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2B, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00,\n    0x09, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x04, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x06, 0x00, 0x0B, 0x00, 0x00, 0x00,\n    0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00,\n    0x3B, 0x00, 0x04, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,\n    0x2B, 0x00, 0x04, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x10, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,\n    0x20, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,\n    0x2B, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x1E, 0x00, 0x03, 0x00, 0x19, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00,\n    0x1A, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x04, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00,\n    0x1C, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00,\n    0x22, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x04, 0x00, 0x22, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x04, 0x00,\n    0x11, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00,\n    0x27, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00,\n    0x29, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x04, 0x00, 0x29, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00,\n    0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x04, 0x00, 0x10, 0x00, 0x00, 0x00,\n    0x13, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00,\n    0x06, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00,\n    0x02, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00,\n    0x41, 0x00, 0x05, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x1D, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00,\n    0x1D, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x20, 0x00, 0x00, 0x00,\n    0x21, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x03, 0x00, 0x21, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x04, 0x00, 0x10, 0x00, 0x00, 0x00,\n    0x25, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x03, 0x00, 0x23, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, 0x2B, 0x00, 0x00, 0x00,\n    0x2A, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x03, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2B, 0x00, 0x00, 0x00, 0xFD, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00\n};\n\ntypedef struct\n{\n    const char* pFilePath;\n    size_t sizeInBytes;\n    size_t dataOffsetInBytes;\n} vfs_file_data;\n\nstatic vfs_file_data g_vfsCentralDirectory[] = {\n    {\"shaders/01_Fundamentals.glsl.frag\", 576, 0},\n    {\"shaders/01_Fundamentals.glsl.frag.spirv\", 932, 576},\n    {\"shaders/01_Fundamentals.glsl.vert\", 513, 1512},\n    {\"shaders/01_Fundamentals.glsl.vert.spirv\", 1416, 2032}\n};\n\nstatic size_t vfs_find_file(const char* pFilePath)\n{\n    size_t iFile;\n\n    if (pFilePath == NULL) {\n        return (size_t)-1;\n    }\n\n    for (iFile = 0; iFile < sizeof(g_vfsCentralDirectory)/sizeof(g_vfsCentralDirectory[0]); iFile += 1) {\n        int cmpresult = strcmp(g_vfsCentralDirectory[iFile].pFilePath, pFilePath);\n        if (cmpresult == 0) {\n            return iFile;\n        }\n    }\n\n    return (size_t)-1;\n}\n\nconst void* vfs_map_file(const char* pFilePath, size_t* pFileSizeInBytes)\n{\n    size_t iFile;\n\n    if (pFileSizeInBytes != NULL) {\n        *pFileSizeInBytes = 0;\n    }\n\n    iFile = vfs_find_file(pFilePath);\n    if (iFile == (size_t)-1) {\n        return NULL;\n    }\n\n    if (pFileSizeInBytes != NULL) {\n        *pFileSizeInBytes = g_vfsCentralDirectory[iFile].sizeInBytes;\n    }\n\n    return &g_vfsFileData[g_vfsCentralDirectory[iFile].dataOffsetInBytes];\n}\n"
  },
  {
    "path": "examples/01_Fundamentals/resources/shaders/01_Fundamentals.glsl.frag",
    "content": "#version 450\n\n// Descriptor sets. This example uses separate textures and samplers, but you can also use a combined\n// texture/sampler if that suits your scenario better.\nlayout(set = 0, binding = 0) uniform sampler   FRAG_Sampler;\nlayout(set = 0, binding = 1) uniform texture2D FRAG_Texture;\n\n\n// Fragment Input\nlayout(location = 0) in vec3 FRAG_Color;\nlayout(location = 1) in vec2 FRAG_TexCoord;\n\n// Fragment Output\nlayout(location = 0) out vec4 OUT_Color;\n\nvoid main()\n{\n    OUT_Color = vec4(FRAG_Color, 1) * texture(sampler2D(FRAG_Texture, FRAG_Sampler), FRAG_TexCoord);\n}"
  },
  {
    "path": "examples/01_Fundamentals/resources/shaders/01_Fundamentals.glsl.vert",
    "content": "#version 450\n\n// Vertex Input\nlayout(location = 0) in vec3 VERT_Position;\nlayout(location = 1) in vec3 VERT_Color;\nlayout(location = 2) in vec2 VERT_TexCoord;\n\n// Vertex Output / Fragment Input\nlayout(location = 0) out vec3 FRAG_Color;\nlayout(location = 1) out vec2 FRAG_TexCoord;\n\n// Uniforms\nlayout(set = 1, binding = 0) uniform UBO\n{\n    vec4 Offset;\n} Transform;\n\nvoid main()\n{\n    gl_Position   = vec4(VERT_Position, 1) + Transform.Offset;\n    FRAG_Color    = VERT_Color;\n    FRAG_TexCoord = VERT_TexCoord;\n}"
  },
  {
    "path": "resources/README.md",
    "content": "Vulkan XML: https://github.com/KhronosGroup/Vulkan-Docs/blob/master/xml/vk.xml"
  },
  {
    "path": "source/external/tinyxml2.cpp",
    "content": "/*\nOriginal code by Lee Thomason (www.grinninglizard.com)\n\nThis software is provided 'as-is', without any express or implied\nwarranty. In no event will the authors be held liable for any\ndamages arising from the use of this software.\n\nPermission is granted to anyone to use this software for any\npurpose, including commercial applications, and to alter it and\nredistribute it freely, subject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must\nnot claim that you wrote the original software. If you use this\nsoftware in a product, an acknowledgment in the product documentation\nwould be appreciated but is not required.\n\n2. Altered source versions must be plainly marked as such, and\nmust not be misrepresented as being the original software.\n\n3. This notice may not be removed or altered from any source\ndistribution.\n*/\n\n#include \"tinyxml2.h\"\n\n#include <new>\t\t// yes, this one new style header, is in the Android SDK.\n#if defined(ANDROID_NDK) || defined(__BORLANDC__) || defined(__QNXNTO__)\n#   include <stddef.h>\n#   include <stdarg.h>\n#else\n#   include <cstddef>\n#   include <cstdarg>\n#endif\n\n#if defined(_MSC_VER) && (_MSC_VER >= 1400 ) && (!defined WINCE)\n\t// Microsoft Visual Studio, version 2005 and higher. Not WinCE.\n\t/*int _snprintf_s(\n\t   char *buffer,\n\t   size_t sizeOfBuffer,\n\t   size_t count,\n\t   const char *format [,\n\t\t  argument] ...\n\t);*/\n\tstatic inline int TIXML_SNPRINTF( char* buffer, size_t size, const char* format, ... )\n\t{\n\t\tva_list va;\n\t\tva_start( va, format );\n\t\tint result = vsnprintf_s( buffer, size, _TRUNCATE, format, va );\n\t\tva_end( va );\n\t\treturn result;\n\t}\n\n\tstatic inline int TIXML_VSNPRINTF( char* buffer, size_t size, const char* format, va_list va )\n\t{\n\t\tint result = vsnprintf_s( buffer, size, _TRUNCATE, format, va );\n\t\treturn result;\n\t}\n\n\t#define TIXML_VSCPRINTF\t_vscprintf\n\t#define TIXML_SSCANF\tsscanf_s\n#elif defined _MSC_VER\n\t// Microsoft Visual Studio 2003 and earlier or WinCE\n\t#define TIXML_SNPRINTF\t_snprintf\n\t#define TIXML_VSNPRINTF _vsnprintf\n\t#define TIXML_SSCANF\tsscanf\n\t#if (_MSC_VER < 1400 ) && (!defined WINCE)\n\t\t// Microsoft Visual Studio 2003 and not WinCE.\n\t\t#define TIXML_VSCPRINTF   _vscprintf // VS2003's C runtime has this, but VC6 C runtime or WinCE SDK doesn't have.\n\t#else\n\t\t// Microsoft Visual Studio 2003 and earlier or WinCE.\n\t\tstatic inline int TIXML_VSCPRINTF( const char* format, va_list va )\n\t\t{\n\t\t\tint len = 512;\n\t\t\tfor (;;) {\n\t\t\t\tlen = len*2;\n\t\t\t\tchar* str = new char[len]();\n\t\t\t\tconst int required = _vsnprintf(str, len, format, va);\n\t\t\t\tdelete[] str;\n\t\t\t\tif ( required != -1 ) {\n\t\t\t\t\tTIXMLASSERT( required >= 0 );\n\t\t\t\t\tlen = required;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tTIXMLASSERT( len >= 0 );\n\t\t\treturn len;\n\t\t}\n\t#endif\n#else\n\t// GCC version 3 and higher\n\t//#warning( \"Using sn* functions.\" )\n\t#define TIXML_SNPRINTF\tsnprintf\n\t#define TIXML_VSNPRINTF\tvsnprintf\n\tstatic inline int TIXML_VSCPRINTF( const char* format, va_list va )\n\t{\n\t\tint len = vsnprintf( 0, 0, format, va );\n\t\tTIXMLASSERT( len >= 0 );\n\t\treturn len;\n\t}\n\t#define TIXML_SSCANF   sscanf\n#endif\n\n\nstatic const char LINE_FEED\t\t\t\t= (char)0x0a;\t\t\t// all line endings are normalized to LF\nstatic const char LF = LINE_FEED;\nstatic const char CARRIAGE_RETURN\t\t= (char)0x0d;\t\t\t// CR gets filtered out\nstatic const char CR = CARRIAGE_RETURN;\nstatic const char SINGLE_QUOTE\t\t\t= '\\'';\nstatic const char DOUBLE_QUOTE\t\t\t= '\\\"';\n\n// Bunch of unicode info at:\n//\t\thttp://www.unicode.org/faq/utf_bom.html\n//\tef bb bf (Microsoft \"lead bytes\") - designates UTF-8\n\nstatic const unsigned char TIXML_UTF_LEAD_0 = 0xefU;\nstatic const unsigned char TIXML_UTF_LEAD_1 = 0xbbU;\nstatic const unsigned char TIXML_UTF_LEAD_2 = 0xbfU;\n\nnamespace tinyxml2\n{\n\nstruct Entity {\n    const char* pattern;\n    int length;\n    char value;\n};\n\nstatic const int NUM_ENTITIES = 5;\nstatic const Entity entities[NUM_ENTITIES] = {\n    { \"quot\", 4,\tDOUBLE_QUOTE },\n    { \"amp\", 3,\t\t'&'  },\n    { \"apos\", 4,\tSINGLE_QUOTE },\n    { \"lt\",\t2, \t\t'<'\t },\n    { \"gt\",\t2,\t\t'>'\t }\n};\n\n\nStrPair::~StrPair()\n{\n    Reset();\n}\n\n\nvoid StrPair::TransferTo( StrPair* other )\n{\n    if ( this == other ) {\n        return;\n    }\n    // This in effect implements the assignment operator by \"moving\"\n    // ownership (as in auto_ptr).\n\n    TIXMLASSERT( other != 0 );\n    TIXMLASSERT( other->_flags == 0 );\n    TIXMLASSERT( other->_start == 0 );\n    TIXMLASSERT( other->_end == 0 );\n\n    other->Reset();\n\n    other->_flags = _flags;\n    other->_start = _start;\n    other->_end = _end;\n\n    _flags = 0;\n    _start = 0;\n    _end = 0;\n}\n\n\nvoid StrPair::Reset()\n{\n    if ( _flags & NEEDS_DELETE ) {\n        delete [] _start;\n    }\n    _flags = 0;\n    _start = 0;\n    _end = 0;\n}\n\n\nvoid StrPair::SetStr( const char* str, int flags )\n{\n    TIXMLASSERT( str );\n    Reset();\n    size_t len = strlen( str );\n    TIXMLASSERT( _start == 0 );\n    _start = new char[ len+1 ];\n    memcpy( _start, str, len+1 );\n    _end = _start + len;\n    _flags = flags | NEEDS_DELETE;\n}\n\n\nchar* StrPair::ParseText( char* p, const char* endTag, int strFlags, int* curLineNumPtr )\n{\n    TIXMLASSERT( p );\n    TIXMLASSERT( endTag && *endTag );\n\tTIXMLASSERT(curLineNumPtr);\n\n    char* start = p;\n    char  endChar = *endTag;\n    size_t length = strlen( endTag );\n\n    // Inner loop of text parsing.\n    while ( *p ) {\n        if ( *p == endChar && strncmp( p, endTag, length ) == 0 ) {\n            Set( start, p, strFlags );\n            return p + length;\n        } else if (*p == '\\n') {\n            ++(*curLineNumPtr);\n        }\n        ++p;\n        TIXMLASSERT( p );\n    }\n    return 0;\n}\n\n\nchar* StrPair::ParseName( char* p )\n{\n    if ( !p || !(*p) ) {\n        return 0;\n    }\n    if ( !XMLUtil::IsNameStartChar( *p ) ) {\n        return 0;\n    }\n\n    char* const start = p;\n    ++p;\n    while ( *p && XMLUtil::IsNameChar( *p ) ) {\n        ++p;\n    }\n\n    Set( start, p, 0 );\n    return p;\n}\n\n\nvoid StrPair::CollapseWhitespace()\n{\n    // Adjusting _start would cause undefined behavior on delete[]\n    TIXMLASSERT( ( _flags & NEEDS_DELETE ) == 0 );\n    // Trim leading space.\n    _start = XMLUtil::SkipWhiteSpace( _start, 0 );\n\n    if ( *_start ) {\n        const char* p = _start;\t// the read pointer\n        char* q = _start;\t// the write pointer\n\n        while( *p ) {\n            if ( XMLUtil::IsWhiteSpace( *p )) {\n                p = XMLUtil::SkipWhiteSpace( p, 0 );\n                if ( *p == 0 ) {\n                    break;    // don't write to q; this trims the trailing space.\n                }\n                *q = ' ';\n                ++q;\n            }\n            *q = *p;\n            ++q;\n            ++p;\n        }\n        *q = 0;\n    }\n}\n\n\nconst char* StrPair::GetStr()\n{\n    TIXMLASSERT( _start );\n    TIXMLASSERT( _end );\n    if ( _flags & NEEDS_FLUSH ) {\n        *_end = 0;\n        _flags ^= NEEDS_FLUSH;\n\n        if ( _flags ) {\n            const char* p = _start;\t// the read pointer\n            char* q = _start;\t// the write pointer\n\n            while( p < _end ) {\n                if ( (_flags & NEEDS_NEWLINE_NORMALIZATION) && *p == CR ) {\n                    // CR-LF pair becomes LF\n                    // CR alone becomes LF\n                    // LF-CR becomes LF\n                    if ( *(p+1) == LF ) {\n                        p += 2;\n                    }\n                    else {\n                        ++p;\n                    }\n                    *q = LF;\n                    ++q;\n                }\n                else if ( (_flags & NEEDS_NEWLINE_NORMALIZATION) && *p == LF ) {\n                    if ( *(p+1) == CR ) {\n                        p += 2;\n                    }\n                    else {\n                        ++p;\n                    }\n                    *q = LF;\n                    ++q;\n                }\n                else if ( (_flags & NEEDS_ENTITY_PROCESSING) && *p == '&' ) {\n                    // Entities handled by tinyXML2:\n                    // - special entities in the entity table [in/out]\n                    // - numeric character reference [in]\n                    //   &#20013; or &#x4e2d;\n\n                    if ( *(p+1) == '#' ) {\n                        const int buflen = 10;\n                        char buf[buflen] = { 0 };\n                        int len = 0;\n                        char* adjusted = const_cast<char*>( XMLUtil::GetCharacterRef( p, buf, &len ) );\n                        if ( adjusted == 0 ) {\n                            *q = *p;\n                            ++p;\n                            ++q;\n                        }\n                        else {\n                            TIXMLASSERT( 0 <= len && len <= buflen );\n                            TIXMLASSERT( q + len <= adjusted );\n                            p = adjusted;\n                            memcpy( q, buf, len );\n                            q += len;\n                        }\n                    }\n                    else {\n                        bool entityFound = false;\n                        for( int i = 0; i < NUM_ENTITIES; ++i ) {\n                            const Entity& entity = entities[i];\n                            if ( strncmp( p + 1, entity.pattern, entity.length ) == 0\n                                    && *( p + entity.length + 1 ) == ';' ) {\n                                // Found an entity - convert.\n                                *q = entity.value;\n                                ++q;\n                                p += entity.length + 2;\n                                entityFound = true;\n                                break;\n                            }\n                        }\n                        if ( !entityFound ) {\n                            // fixme: treat as error?\n                            ++p;\n                            ++q;\n                        }\n                    }\n                }\n                else {\n                    *q = *p;\n                    ++p;\n                    ++q;\n                }\n            }\n            *q = 0;\n        }\n        // The loop below has plenty going on, and this\n        // is a less useful mode. Break it out.\n        if ( _flags & NEEDS_WHITESPACE_COLLAPSING ) {\n            CollapseWhitespace();\n        }\n        _flags = (_flags & NEEDS_DELETE);\n    }\n    TIXMLASSERT( _start );\n    return _start;\n}\n\n\n\n\n// --------- XMLUtil ----------- //\n\nconst char* XMLUtil::writeBoolTrue  = \"true\";\nconst char* XMLUtil::writeBoolFalse = \"false\";\n\nvoid XMLUtil::SetBoolSerialization(const char* writeTrue, const char* writeFalse)\n{\n\tstatic const char* defTrue  = \"true\";\n\tstatic const char* defFalse = \"false\";\n\n\twriteBoolTrue = (writeTrue) ? writeTrue : defTrue;\n\twriteBoolFalse = (writeFalse) ? writeFalse : defFalse;\n}\n\n\nconst char* XMLUtil::ReadBOM( const char* p, bool* bom )\n{\n    TIXMLASSERT( p );\n    TIXMLASSERT( bom );\n    *bom = false;\n    const unsigned char* pu = reinterpret_cast<const unsigned char*>(p);\n    // Check for BOM:\n    if (    *(pu+0) == TIXML_UTF_LEAD_0\n            && *(pu+1) == TIXML_UTF_LEAD_1\n            && *(pu+2) == TIXML_UTF_LEAD_2 ) {\n        *bom = true;\n        p += 3;\n    }\n    TIXMLASSERT( p );\n    return p;\n}\n\n\nvoid XMLUtil::ConvertUTF32ToUTF8( unsigned long input, char* output, int* length )\n{\n    const unsigned long BYTE_MASK = 0xBF;\n    const unsigned long BYTE_MARK = 0x80;\n    const unsigned long FIRST_BYTE_MARK[7] = { 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC };\n\n    if (input < 0x80) {\n        *length = 1;\n    }\n    else if ( input < 0x800 ) {\n        *length = 2;\n    }\n    else if ( input < 0x10000 ) {\n        *length = 3;\n    }\n    else if ( input < 0x200000 ) {\n        *length = 4;\n    }\n    else {\n        *length = 0;    // This code won't convert this correctly anyway.\n        return;\n    }\n\n    output += *length;\n\n    // Scary scary fall throughs are annotated with carefully designed comments\n    // to suppress compiler warnings such as -Wimplicit-fallthrough in gcc\n    switch (*length) {\n        case 4:\n            --output;\n            *output = (char)((input | BYTE_MARK) & BYTE_MASK);\n            input >>= 6;\n            //fall through\n        case 3:\n            --output;\n            *output = (char)((input | BYTE_MARK) & BYTE_MASK);\n            input >>= 6;\n            //fall through\n        case 2:\n            --output;\n            *output = (char)((input | BYTE_MARK) & BYTE_MASK);\n            input >>= 6;\n            //fall through\n        case 1:\n            --output;\n            *output = (char)(input | FIRST_BYTE_MARK[*length]);\n            break;\n        default:\n            TIXMLASSERT( false );\n    }\n}\n\n\nconst char* XMLUtil::GetCharacterRef( const char* p, char* value, int* length )\n{\n    // Presume an entity, and pull it out.\n    *length = 0;\n\n    if ( *(p+1) == '#' && *(p+2) ) {\n        unsigned long ucs = 0;\n        TIXMLASSERT( sizeof( ucs ) >= 4 );\n        ptrdiff_t delta = 0;\n        unsigned mult = 1;\n        static const char SEMICOLON = ';';\n\n        if ( *(p+2) == 'x' ) {\n            // Hexadecimal.\n            const char* q = p+3;\n            if ( !(*q) ) {\n                return 0;\n            }\n\n            q = strchr( q, SEMICOLON );\n\n            if ( !q ) {\n                return 0;\n            }\n            TIXMLASSERT( *q == SEMICOLON );\n\n            delta = q-p;\n            --q;\n\n            while ( *q != 'x' ) {\n                unsigned int digit = 0;\n\n                if ( *q >= '0' && *q <= '9' ) {\n                    digit = *q - '0';\n                }\n                else if ( *q >= 'a' && *q <= 'f' ) {\n                    digit = *q - 'a' + 10;\n                }\n                else if ( *q >= 'A' && *q <= 'F' ) {\n                    digit = *q - 'A' + 10;\n                }\n                else {\n                    return 0;\n                }\n                TIXMLASSERT( digit < 16 );\n                TIXMLASSERT( digit == 0 || mult <= UINT_MAX / digit );\n                const unsigned int digitScaled = mult * digit;\n                TIXMLASSERT( ucs <= ULONG_MAX - digitScaled );\n                ucs += digitScaled;\n                TIXMLASSERT( mult <= UINT_MAX / 16 );\n                mult *= 16;\n                --q;\n            }\n        }\n        else {\n            // Decimal.\n            const char* q = p+2;\n            if ( !(*q) ) {\n                return 0;\n            }\n\n            q = strchr( q, SEMICOLON );\n\n            if ( !q ) {\n                return 0;\n            }\n            TIXMLASSERT( *q == SEMICOLON );\n\n            delta = q-p;\n            --q;\n\n            while ( *q != '#' ) {\n                if ( *q >= '0' && *q <= '9' ) {\n                    const unsigned int digit = *q - '0';\n                    TIXMLASSERT( digit < 10 );\n                    TIXMLASSERT( digit == 0 || mult <= UINT_MAX / digit );\n                    const unsigned int digitScaled = mult * digit;\n                    TIXMLASSERT( ucs <= ULONG_MAX - digitScaled );\n                    ucs += digitScaled;\n                }\n                else {\n                    return 0;\n                }\n                TIXMLASSERT( mult <= UINT_MAX / 10 );\n                mult *= 10;\n                --q;\n            }\n        }\n        // convert the UCS to UTF-8\n        ConvertUTF32ToUTF8( ucs, value, length );\n        return p + delta + 1;\n    }\n    return p+1;\n}\n\n\nvoid XMLUtil::ToStr( int v, char* buffer, int bufferSize )\n{\n    TIXML_SNPRINTF( buffer, bufferSize, \"%d\", v );\n}\n\n\nvoid XMLUtil::ToStr( unsigned v, char* buffer, int bufferSize )\n{\n    TIXML_SNPRINTF( buffer, bufferSize, \"%u\", v );\n}\n\n\nvoid XMLUtil::ToStr( bool v, char* buffer, int bufferSize )\n{\n    TIXML_SNPRINTF( buffer, bufferSize, \"%s\", v ? writeBoolTrue : writeBoolFalse);\n}\n\n/*\n\tToStr() of a number is a very tricky topic.\n\thttps://github.com/leethomason/tinyxml2/issues/106\n*/\nvoid XMLUtil::ToStr( float v, char* buffer, int bufferSize )\n{\n    TIXML_SNPRINTF( buffer, bufferSize, \"%.8g\", v );\n}\n\n\nvoid XMLUtil::ToStr( double v, char* buffer, int bufferSize )\n{\n    TIXML_SNPRINTF( buffer, bufferSize, \"%.17g\", v );\n}\n\n\nvoid XMLUtil::ToStr(int64_t v, char* buffer, int bufferSize)\n{\n\t// horrible syntax trick to make the compiler happy about %lld\n\tTIXML_SNPRINTF(buffer, bufferSize, \"%lld\", (long long)v);\n}\n\n\nbool XMLUtil::ToInt( const char* str, int* value )\n{\n    if ( TIXML_SSCANF( str, \"%d\", value ) == 1 ) {\n        return true;\n    }\n    return false;\n}\n\nbool XMLUtil::ToUnsigned( const char* str, unsigned *value )\n{\n    if ( TIXML_SSCANF( str, \"%u\", value ) == 1 ) {\n        return true;\n    }\n    return false;\n}\n\nbool XMLUtil::ToBool( const char* str, bool* value )\n{\n    int ival = 0;\n    if ( ToInt( str, &ival )) {\n        *value = (ival==0) ? false : true;\n        return true;\n    }\n    if ( StringEqual( str, \"true\" ) ) {\n        *value = true;\n        return true;\n    }\n    else if ( StringEqual( str, \"false\" ) ) {\n        *value = false;\n        return true;\n    }\n    return false;\n}\n\n\nbool XMLUtil::ToFloat( const char* str, float* value )\n{\n    if ( TIXML_SSCANF( str, \"%f\", value ) == 1 ) {\n        return true;\n    }\n    return false;\n}\n\n\nbool XMLUtil::ToDouble( const char* str, double* value )\n{\n    if ( TIXML_SSCANF( str, \"%lf\", value ) == 1 ) {\n        return true;\n    }\n    return false;\n}\n\n\nbool XMLUtil::ToInt64(const char* str, int64_t* value)\n{\n\tlong long v = 0;\t// horrible syntax trick to make the compiler happy about %lld\n\tif (TIXML_SSCANF(str, \"%lld\", &v) == 1) {\n\t\t*value = (int64_t)v;\n\t\treturn true;\n\t}\n\treturn false;\n}\n\n\nchar* XMLDocument::Identify( char* p, XMLNode** node )\n{\n    TIXMLASSERT( node );\n    TIXMLASSERT( p );\n    char* const start = p;\n    int const startLine = _parseCurLineNum;\n    p = XMLUtil::SkipWhiteSpace( p, &_parseCurLineNum );\n    if( !*p ) {\n        *node = 0;\n        TIXMLASSERT( p );\n        return p;\n    }\n\n    // These strings define the matching patterns:\n    static const char* xmlHeader\t\t= { \"<?\" };\n    static const char* commentHeader\t= { \"<!--\" };\n    static const char* cdataHeader\t\t= { \"<![CDATA[\" };\n    static const char* dtdHeader\t\t= { \"<!\" };\n    static const char* elementHeader\t= { \"<\" };\t// and a header for everything else; check last.\n\n    static const int xmlHeaderLen\t\t= 2;\n    static const int commentHeaderLen\t= 4;\n    static const int cdataHeaderLen\t\t= 9;\n    static const int dtdHeaderLen\t\t= 2;\n    static const int elementHeaderLen\t= 1;\n\n    TIXMLASSERT( sizeof( XMLComment ) == sizeof( XMLUnknown ) );\t\t// use same memory pool\n    TIXMLASSERT( sizeof( XMLComment ) == sizeof( XMLDeclaration ) );\t// use same memory pool\n    XMLNode* returnNode = 0;\n    if ( XMLUtil::StringEqual( p, xmlHeader, xmlHeaderLen ) ) {\n        returnNode = CreateUnlinkedNode<XMLDeclaration>( _commentPool );\n        returnNode->_parseLineNum = _parseCurLineNum;\n        p += xmlHeaderLen;\n    }\n    else if ( XMLUtil::StringEqual( p, commentHeader, commentHeaderLen ) ) {\n        returnNode = CreateUnlinkedNode<XMLComment>( _commentPool );\n        returnNode->_parseLineNum = _parseCurLineNum;\n        p += commentHeaderLen;\n    }\n    else if ( XMLUtil::StringEqual( p, cdataHeader, cdataHeaderLen ) ) {\n        XMLText* text = CreateUnlinkedNode<XMLText>( _textPool );\n        returnNode = text;\n        returnNode->_parseLineNum = _parseCurLineNum;\n        p += cdataHeaderLen;\n        text->SetCData( true );\n    }\n    else if ( XMLUtil::StringEqual( p, dtdHeader, dtdHeaderLen ) ) {\n        returnNode = CreateUnlinkedNode<XMLUnknown>( _commentPool );\n        returnNode->_parseLineNum = _parseCurLineNum;\n        p += dtdHeaderLen;\n    }\n    else if ( XMLUtil::StringEqual( p, elementHeader, elementHeaderLen ) ) {\n        returnNode =  CreateUnlinkedNode<XMLElement>( _elementPool );\n        returnNode->_parseLineNum = _parseCurLineNum;\n        p += elementHeaderLen;\n    }\n    else {\n        returnNode = CreateUnlinkedNode<XMLText>( _textPool );\n        returnNode->_parseLineNum = _parseCurLineNum; // Report line of first non-whitespace character\n        p = start;\t// Back it up, all the text counts.\n        _parseCurLineNum = startLine;\n    }\n\n    TIXMLASSERT( returnNode );\n    TIXMLASSERT( p );\n    *node = returnNode;\n    return p;\n}\n\n\nbool XMLDocument::Accept( XMLVisitor* visitor ) const\n{\n    TIXMLASSERT( visitor );\n    if ( visitor->VisitEnter( *this ) ) {\n        for ( const XMLNode* node=FirstChild(); node; node=node->NextSibling() ) {\n            if ( !node->Accept( visitor ) ) {\n                break;\n            }\n        }\n    }\n    return visitor->VisitExit( *this );\n}\n\n\n// --------- XMLNode ----------- //\n\nXMLNode::XMLNode( XMLDocument* doc ) :\n    _document( doc ),\n    _parent( 0 ),\n    _value(),\n    _parseLineNum( 0 ),\n    _firstChild( 0 ), _lastChild( 0 ),\n    _prev( 0 ), _next( 0 ),\n\t_userData( 0 ),\n    _memPool( 0 )\n{\n}\n\n\nXMLNode::~XMLNode()\n{\n    DeleteChildren();\n    if ( _parent ) {\n        _parent->Unlink( this );\n    }\n}\n\nconst char* XMLNode::Value() const\n{\n    // Edge case: XMLDocuments don't have a Value. Return null.\n    if ( this->ToDocument() )\n        return 0;\n    return _value.GetStr();\n}\n\nvoid XMLNode::SetValue( const char* str, bool staticMem )\n{\n    if ( staticMem ) {\n        _value.SetInternedStr( str );\n    }\n    else {\n        _value.SetStr( str );\n    }\n}\n\nXMLNode* XMLNode::DeepClone(XMLDocument* target) const\n{\n\tXMLNode* clone = this->ShallowClone(target);\n\tif (!clone) return 0;\n\n\tfor (const XMLNode* child = this->FirstChild(); child; child = child->NextSibling()) {\n\t\tXMLNode* childClone = child->DeepClone(target);\n\t\tTIXMLASSERT(childClone);\n\t\tclone->InsertEndChild(childClone);\n\t}\n\treturn clone;\n}\n\nvoid XMLNode::DeleteChildren()\n{\n    while( _firstChild ) {\n        TIXMLASSERT( _lastChild );\n        DeleteChild( _firstChild );\n    }\n    _firstChild = _lastChild = 0;\n}\n\n\nvoid XMLNode::Unlink( XMLNode* child )\n{\n    TIXMLASSERT( child );\n    TIXMLASSERT( child->_document == _document );\n    TIXMLASSERT( child->_parent == this );\n    if ( child == _firstChild ) {\n        _firstChild = _firstChild->_next;\n    }\n    if ( child == _lastChild ) {\n        _lastChild = _lastChild->_prev;\n    }\n\n    if ( child->_prev ) {\n        child->_prev->_next = child->_next;\n    }\n    if ( child->_next ) {\n        child->_next->_prev = child->_prev;\n    }\n\tchild->_next = 0;\n\tchild->_prev = 0;\n\tchild->_parent = 0;\n}\n\n\nvoid XMLNode::DeleteChild( XMLNode* node )\n{\n    TIXMLASSERT( node );\n    TIXMLASSERT( node->_document == _document );\n    TIXMLASSERT( node->_parent == this );\n    Unlink( node );\n\tTIXMLASSERT(node->_prev == 0);\n\tTIXMLASSERT(node->_next == 0);\n\tTIXMLASSERT(node->_parent == 0);\n    DeleteNode( node );\n}\n\n\nXMLNode* XMLNode::InsertEndChild( XMLNode* addThis )\n{\n    TIXMLASSERT( addThis );\n    if ( addThis->_document != _document ) {\n        TIXMLASSERT( false );\n        return 0;\n    }\n    InsertChildPreamble( addThis );\n\n    if ( _lastChild ) {\n        TIXMLASSERT( _firstChild );\n        TIXMLASSERT( _lastChild->_next == 0 );\n        _lastChild->_next = addThis;\n        addThis->_prev = _lastChild;\n        _lastChild = addThis;\n\n        addThis->_next = 0;\n    }\n    else {\n        TIXMLASSERT( _firstChild == 0 );\n        _firstChild = _lastChild = addThis;\n\n        addThis->_prev = 0;\n        addThis->_next = 0;\n    }\n    addThis->_parent = this;\n    return addThis;\n}\n\n\nXMLNode* XMLNode::InsertFirstChild( XMLNode* addThis )\n{\n    TIXMLASSERT( addThis );\n    if ( addThis->_document != _document ) {\n        TIXMLASSERT( false );\n        return 0;\n    }\n    InsertChildPreamble( addThis );\n\n    if ( _firstChild ) {\n        TIXMLASSERT( _lastChild );\n        TIXMLASSERT( _firstChild->_prev == 0 );\n\n        _firstChild->_prev = addThis;\n        addThis->_next = _firstChild;\n        _firstChild = addThis;\n\n        addThis->_prev = 0;\n    }\n    else {\n        TIXMLASSERT( _lastChild == 0 );\n        _firstChild = _lastChild = addThis;\n\n        addThis->_prev = 0;\n        addThis->_next = 0;\n    }\n    addThis->_parent = this;\n    return addThis;\n}\n\n\nXMLNode* XMLNode::InsertAfterChild( XMLNode* afterThis, XMLNode* addThis )\n{\n    TIXMLASSERT( addThis );\n    if ( addThis->_document != _document ) {\n        TIXMLASSERT( false );\n        return 0;\n    }\n\n    TIXMLASSERT( afterThis );\n\n    if ( afterThis->_parent != this ) {\n        TIXMLASSERT( false );\n        return 0;\n    }\n    if ( afterThis == addThis ) {\n        // Current state: BeforeThis -> AddThis -> OneAfterAddThis\n        // Now AddThis must disappear from it's location and then\n        // reappear between BeforeThis and OneAfterAddThis.\n        // So just leave it where it is.\n        return addThis;\n    }\n\n    if ( afterThis->_next == 0 ) {\n        // The last node or the only node.\n        return InsertEndChild( addThis );\n    }\n    InsertChildPreamble( addThis );\n    addThis->_prev = afterThis;\n    addThis->_next = afterThis->_next;\n    afterThis->_next->_prev = addThis;\n    afterThis->_next = addThis;\n    addThis->_parent = this;\n    return addThis;\n}\n\n\n\n\nconst XMLElement* XMLNode::FirstChildElement( const char* name ) const\n{\n    for( const XMLNode* node = _firstChild; node; node = node->_next ) {\n        const XMLElement* element = node->ToElementWithName( name );\n        if ( element ) {\n            return element;\n        }\n    }\n    return 0;\n}\n\n\nconst XMLElement* XMLNode::LastChildElement( const char* name ) const\n{\n    for( const XMLNode* node = _lastChild; node; node = node->_prev ) {\n        const XMLElement* element = node->ToElementWithName( name );\n        if ( element ) {\n            return element;\n        }\n    }\n    return 0;\n}\n\n\nconst XMLElement* XMLNode::NextSiblingElement( const char* name ) const\n{\n    for( const XMLNode* node = _next; node; node = node->_next ) {\n        const XMLElement* element = node->ToElementWithName( name );\n        if ( element ) {\n            return element;\n        }\n    }\n    return 0;\n}\n\n\nconst XMLElement* XMLNode::PreviousSiblingElement( const char* name ) const\n{\n    for( const XMLNode* node = _prev; node; node = node->_prev ) {\n        const XMLElement* element = node->ToElementWithName( name );\n        if ( element ) {\n            return element;\n        }\n    }\n    return 0;\n}\n\n\nchar* XMLNode::ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr )\n{\n    // This is a recursive method, but thinking about it \"at the current level\"\n    // it is a pretty simple flat list:\n    //\t\t<foo/>\n    //\t\t<!-- comment -->\n    //\n    // With a special case:\n    //\t\t<foo>\n    //\t\t</foo>\n    //\t\t<!-- comment -->\n    //\n    // Where the closing element (/foo) *must* be the next thing after the opening\n    // element, and the names must match. BUT the tricky bit is that the closing\n    // element will be read by the child.\n    //\n    // 'endTag' is the end tag for this node, it is returned by a call to a child.\n    // 'parentEnd' is the end tag for the parent, which is filled in and returned.\n\n\tXMLDocument::DepthTracker tracker(_document);\n\tif (_document->Error())\n\t\treturn 0;\n\n\twhile( p && *p ) {\n        XMLNode* node = 0;\n\n        p = _document->Identify( p, &node );\n        TIXMLASSERT( p );\n        if ( node == 0 ) {\n            break;\n        }\n\n        int initialLineNum = node->_parseLineNum;\n\n        StrPair endTag;\n        p = node->ParseDeep( p, &endTag, curLineNumPtr );\n        if ( !p ) {\n            DeleteNode( node );\n            if ( !_document->Error() ) {\n                _document->SetError( XML_ERROR_PARSING, initialLineNum, 0);\n            }\n            break;\n        }\n\n        XMLDeclaration* decl = node->ToDeclaration();\n        if ( decl ) {\n            // Declarations are only allowed at document level\n            //\n            // Multiple declarations are allowed but all declarations\n            // must occur before anything else. \n            //\n            // Optimized due to a security test case. If the first node is \n            // a declaration, and the last node is a declaration, then only \n            // declarations have so far been addded.\n            bool wellLocated = false;\n\n            if (ToDocument()) {\n                if (FirstChild()) {\n                    wellLocated =\n                        FirstChild() &&\n                        FirstChild()->ToDeclaration() &&\n                        LastChild() &&\n                        LastChild()->ToDeclaration();\n                }\n                else {\n                    wellLocated = true;\n                }\n            }\n            if ( !wellLocated ) {\n                _document->SetError( XML_ERROR_PARSING_DECLARATION, initialLineNum, \"XMLDeclaration value=%s\", decl->Value());\n                DeleteNode( node );\n                break;\n            }\n        }\n\n        XMLElement* ele = node->ToElement();\n        if ( ele ) {\n            // We read the end tag. Return it to the parent.\n            if ( ele->ClosingType() == XMLElement::CLOSING ) {\n                if ( parentEndTag ) {\n                    ele->_value.TransferTo( parentEndTag );\n                }\n                node->_memPool->SetTracked();   // created and then immediately deleted.\n                DeleteNode( node );\n                return p;\n            }\n\n            // Handle an end tag returned to this level.\n            // And handle a bunch of annoying errors.\n            bool mismatch = false;\n            if ( endTag.Empty() ) {\n                if ( ele->ClosingType() == XMLElement::OPEN ) {\n                    mismatch = true;\n                }\n            }\n            else {\n                if ( ele->ClosingType() != XMLElement::OPEN ) {\n                    mismatch = true;\n                }\n                else if ( !XMLUtil::StringEqual( endTag.GetStr(), ele->Name() ) ) {\n                    mismatch = true;\n                }\n            }\n            if ( mismatch ) {\n                _document->SetError( XML_ERROR_MISMATCHED_ELEMENT, initialLineNum, \"XMLElement name=%s\", ele->Name());\n                DeleteNode( node );\n                break;\n            }\n        }\n        InsertEndChild( node );\n    }\n    return 0;\n}\n\n/*static*/ void XMLNode::DeleteNode( XMLNode* node )\n{\n    if ( node == 0 ) {\n        return;\n    }\n\tTIXMLASSERT(node->_document);\n\tif (!node->ToDocument()) {\n\t\tnode->_document->MarkInUse(node);\n\t}\n\n    MemPool* pool = node->_memPool;\n    node->~XMLNode();\n    pool->Free( node );\n}\n\nvoid XMLNode::InsertChildPreamble( XMLNode* insertThis ) const\n{\n    TIXMLASSERT( insertThis );\n    TIXMLASSERT( insertThis->_document == _document );\n\n\tif (insertThis->_parent) {\n        insertThis->_parent->Unlink( insertThis );\n\t}\n\telse {\n\t\tinsertThis->_document->MarkInUse(insertThis);\n        insertThis->_memPool->SetTracked();\n\t}\n}\n\nconst XMLElement* XMLNode::ToElementWithName( const char* name ) const\n{\n    const XMLElement* element = this->ToElement();\n    if ( element == 0 ) {\n        return 0;\n    }\n    if ( name == 0 ) {\n        return element;\n    }\n    if ( XMLUtil::StringEqual( element->Name(), name ) ) {\n       return element;\n    }\n    return 0;\n}\n\n// --------- XMLText ---------- //\nchar* XMLText::ParseDeep( char* p, StrPair*, int* curLineNumPtr )\n{\n    if ( this->CData() ) {\n        p = _value.ParseText( p, \"]]>\", StrPair::NEEDS_NEWLINE_NORMALIZATION, curLineNumPtr );\n        if ( !p ) {\n            _document->SetError( XML_ERROR_PARSING_CDATA, _parseLineNum, 0 );\n        }\n        return p;\n    }\n    else {\n        int flags = _document->ProcessEntities() ? StrPair::TEXT_ELEMENT : StrPair::TEXT_ELEMENT_LEAVE_ENTITIES;\n        if ( _document->WhitespaceMode() == COLLAPSE_WHITESPACE ) {\n            flags |= StrPair::NEEDS_WHITESPACE_COLLAPSING;\n        }\n\n        p = _value.ParseText( p, \"<\", flags, curLineNumPtr );\n        if ( p && *p ) {\n            return p-1;\n        }\n        if ( !p ) {\n            _document->SetError( XML_ERROR_PARSING_TEXT, _parseLineNum, 0 );\n        }\n    }\n    return 0;\n}\n\n\nXMLNode* XMLText::ShallowClone( XMLDocument* doc ) const\n{\n    if ( !doc ) {\n        doc = _document;\n    }\n    XMLText* text = doc->NewText( Value() );\t// fixme: this will always allocate memory. Intern?\n    text->SetCData( this->CData() );\n    return text;\n}\n\n\nbool XMLText::ShallowEqual( const XMLNode* compare ) const\n{\n    TIXMLASSERT( compare );\n    const XMLText* text = compare->ToText();\n    return ( text && XMLUtil::StringEqual( text->Value(), Value() ) );\n}\n\n\nbool XMLText::Accept( XMLVisitor* visitor ) const\n{\n    TIXMLASSERT( visitor );\n    return visitor->Visit( *this );\n}\n\n\n// --------- XMLComment ---------- //\n\nXMLComment::XMLComment( XMLDocument* doc ) : XMLNode( doc )\n{\n}\n\n\nXMLComment::~XMLComment()\n{\n}\n\n\nchar* XMLComment::ParseDeep( char* p, StrPair*, int* curLineNumPtr )\n{\n    // Comment parses as text.\n    p = _value.ParseText( p, \"-->\", StrPair::COMMENT, curLineNumPtr );\n    if ( p == 0 ) {\n        _document->SetError( XML_ERROR_PARSING_COMMENT, _parseLineNum, 0 );\n    }\n    return p;\n}\n\n\nXMLNode* XMLComment::ShallowClone( XMLDocument* doc ) const\n{\n    if ( !doc ) {\n        doc = _document;\n    }\n    XMLComment* comment = doc->NewComment( Value() );\t// fixme: this will always allocate memory. Intern?\n    return comment;\n}\n\n\nbool XMLComment::ShallowEqual( const XMLNode* compare ) const\n{\n    TIXMLASSERT( compare );\n    const XMLComment* comment = compare->ToComment();\n    return ( comment && XMLUtil::StringEqual( comment->Value(), Value() ));\n}\n\n\nbool XMLComment::Accept( XMLVisitor* visitor ) const\n{\n    TIXMLASSERT( visitor );\n    return visitor->Visit( *this );\n}\n\n\n// --------- XMLDeclaration ---------- //\n\nXMLDeclaration::XMLDeclaration( XMLDocument* doc ) : XMLNode( doc )\n{\n}\n\n\nXMLDeclaration::~XMLDeclaration()\n{\n    //printf( \"~XMLDeclaration\\n\" );\n}\n\n\nchar* XMLDeclaration::ParseDeep( char* p, StrPair*, int* curLineNumPtr )\n{\n    // Declaration parses as text.\n    p = _value.ParseText( p, \"?>\", StrPair::NEEDS_NEWLINE_NORMALIZATION, curLineNumPtr );\n    if ( p == 0 ) {\n        _document->SetError( XML_ERROR_PARSING_DECLARATION, _parseLineNum, 0 );\n    }\n    return p;\n}\n\n\nXMLNode* XMLDeclaration::ShallowClone( XMLDocument* doc ) const\n{\n    if ( !doc ) {\n        doc = _document;\n    }\n    XMLDeclaration* dec = doc->NewDeclaration( Value() );\t// fixme: this will always allocate memory. Intern?\n    return dec;\n}\n\n\nbool XMLDeclaration::ShallowEqual( const XMLNode* compare ) const\n{\n    TIXMLASSERT( compare );\n    const XMLDeclaration* declaration = compare->ToDeclaration();\n    return ( declaration && XMLUtil::StringEqual( declaration->Value(), Value() ));\n}\n\n\n\nbool XMLDeclaration::Accept( XMLVisitor* visitor ) const\n{\n    TIXMLASSERT( visitor );\n    return visitor->Visit( *this );\n}\n\n// --------- XMLUnknown ---------- //\n\nXMLUnknown::XMLUnknown( XMLDocument* doc ) : XMLNode( doc )\n{\n}\n\n\nXMLUnknown::~XMLUnknown()\n{\n}\n\n\nchar* XMLUnknown::ParseDeep( char* p, StrPair*, int* curLineNumPtr )\n{\n    // Unknown parses as text.\n    p = _value.ParseText( p, \">\", StrPair::NEEDS_NEWLINE_NORMALIZATION, curLineNumPtr );\n    if ( !p ) {\n        _document->SetError( XML_ERROR_PARSING_UNKNOWN, _parseLineNum, 0 );\n    }\n    return p;\n}\n\n\nXMLNode* XMLUnknown::ShallowClone( XMLDocument* doc ) const\n{\n    if ( !doc ) {\n        doc = _document;\n    }\n    XMLUnknown* text = doc->NewUnknown( Value() );\t// fixme: this will always allocate memory. Intern?\n    return text;\n}\n\n\nbool XMLUnknown::ShallowEqual( const XMLNode* compare ) const\n{\n    TIXMLASSERT( compare );\n    const XMLUnknown* unknown = compare->ToUnknown();\n    return ( unknown && XMLUtil::StringEqual( unknown->Value(), Value() ));\n}\n\n\nbool XMLUnknown::Accept( XMLVisitor* visitor ) const\n{\n    TIXMLASSERT( visitor );\n    return visitor->Visit( *this );\n}\n\n// --------- XMLAttribute ---------- //\n\nconst char* XMLAttribute::Name() const\n{\n    return _name.GetStr();\n}\n\nconst char* XMLAttribute::Value() const\n{\n    return _value.GetStr();\n}\n\nchar* XMLAttribute::ParseDeep( char* p, bool processEntities, int* curLineNumPtr )\n{\n    // Parse using the name rules: bug fix, was using ParseText before\n    p = _name.ParseName( p );\n    if ( !p || !*p ) {\n        return 0;\n    }\n\n    // Skip white space before =\n    p = XMLUtil::SkipWhiteSpace( p, curLineNumPtr );\n    if ( *p != '=' ) {\n        return 0;\n    }\n\n    ++p;\t// move up to opening quote\n    p = XMLUtil::SkipWhiteSpace( p, curLineNumPtr );\n    if ( *p != '\\\"' && *p != '\\'' ) {\n        return 0;\n    }\n\n    char endTag[2] = { *p, 0 };\n    ++p;\t// move past opening quote\n\n    p = _value.ParseText( p, endTag, processEntities ? StrPair::ATTRIBUTE_VALUE : StrPair::ATTRIBUTE_VALUE_LEAVE_ENTITIES, curLineNumPtr );\n    return p;\n}\n\n\nvoid XMLAttribute::SetName( const char* n )\n{\n    _name.SetStr( n );\n}\n\n\nXMLError XMLAttribute::QueryIntValue( int* value ) const\n{\n    if ( XMLUtil::ToInt( Value(), value )) {\n        return XML_SUCCESS;\n    }\n    return XML_WRONG_ATTRIBUTE_TYPE;\n}\n\n\nXMLError XMLAttribute::QueryUnsignedValue( unsigned int* value ) const\n{\n    if ( XMLUtil::ToUnsigned( Value(), value )) {\n        return XML_SUCCESS;\n    }\n    return XML_WRONG_ATTRIBUTE_TYPE;\n}\n\n\nXMLError XMLAttribute::QueryInt64Value(int64_t* value) const\n{\n\tif (XMLUtil::ToInt64(Value(), value)) {\n\t\treturn XML_SUCCESS;\n\t}\n\treturn XML_WRONG_ATTRIBUTE_TYPE;\n}\n\n\nXMLError XMLAttribute::QueryBoolValue( bool* value ) const\n{\n    if ( XMLUtil::ToBool( Value(), value )) {\n        return XML_SUCCESS;\n    }\n    return XML_WRONG_ATTRIBUTE_TYPE;\n}\n\n\nXMLError XMLAttribute::QueryFloatValue( float* value ) const\n{\n    if ( XMLUtil::ToFloat( Value(), value )) {\n        return XML_SUCCESS;\n    }\n    return XML_WRONG_ATTRIBUTE_TYPE;\n}\n\n\nXMLError XMLAttribute::QueryDoubleValue( double* value ) const\n{\n    if ( XMLUtil::ToDouble( Value(), value )) {\n        return XML_SUCCESS;\n    }\n    return XML_WRONG_ATTRIBUTE_TYPE;\n}\n\n\nvoid XMLAttribute::SetAttribute( const char* v )\n{\n    _value.SetStr( v );\n}\n\n\nvoid XMLAttribute::SetAttribute( int v )\n{\n    char buf[BUF_SIZE];\n    XMLUtil::ToStr( v, buf, BUF_SIZE );\n    _value.SetStr( buf );\n}\n\n\nvoid XMLAttribute::SetAttribute( unsigned v )\n{\n    char buf[BUF_SIZE];\n    XMLUtil::ToStr( v, buf, BUF_SIZE );\n    _value.SetStr( buf );\n}\n\n\nvoid XMLAttribute::SetAttribute(int64_t v)\n{\n\tchar buf[BUF_SIZE];\n\tXMLUtil::ToStr(v, buf, BUF_SIZE);\n\t_value.SetStr(buf);\n}\n\n\n\nvoid XMLAttribute::SetAttribute( bool v )\n{\n    char buf[BUF_SIZE];\n    XMLUtil::ToStr( v, buf, BUF_SIZE );\n    _value.SetStr( buf );\n}\n\nvoid XMLAttribute::SetAttribute( double v )\n{\n    char buf[BUF_SIZE];\n    XMLUtil::ToStr( v, buf, BUF_SIZE );\n    _value.SetStr( buf );\n}\n\nvoid XMLAttribute::SetAttribute( float v )\n{\n    char buf[BUF_SIZE];\n    XMLUtil::ToStr( v, buf, BUF_SIZE );\n    _value.SetStr( buf );\n}\n\n\n// --------- XMLElement ---------- //\nXMLElement::XMLElement( XMLDocument* doc ) : XMLNode( doc ),\n    _closingType( OPEN ),\n    _rootAttribute( 0 )\n{\n}\n\n\nXMLElement::~XMLElement()\n{\n    while( _rootAttribute ) {\n        XMLAttribute* next = _rootAttribute->_next;\n        DeleteAttribute( _rootAttribute );\n        _rootAttribute = next;\n    }\n}\n\n\nconst XMLAttribute* XMLElement::FindAttribute( const char* name ) const\n{\n    for( XMLAttribute* a = _rootAttribute; a; a = a->_next ) {\n        if ( XMLUtil::StringEqual( a->Name(), name ) ) {\n            return a;\n        }\n    }\n    return 0;\n}\n\n\nconst char* XMLElement::Attribute( const char* name, const char* value ) const\n{\n    const XMLAttribute* a = FindAttribute( name );\n    if ( !a ) {\n        return 0;\n    }\n    if ( !value || XMLUtil::StringEqual( a->Value(), value )) {\n        return a->Value();\n    }\n    return 0;\n}\n\nint XMLElement::IntAttribute(const char* name, int defaultValue) const\n{\n\tint i = defaultValue;\n\tQueryIntAttribute(name, &i);\n\treturn i;\n}\n\nunsigned XMLElement::UnsignedAttribute(const char* name, unsigned defaultValue) const\n{\n\tunsigned i = defaultValue;\n\tQueryUnsignedAttribute(name, &i);\n\treturn i;\n}\n\nint64_t XMLElement::Int64Attribute(const char* name, int64_t defaultValue) const\n{\n\tint64_t i = defaultValue;\n\tQueryInt64Attribute(name, &i);\n\treturn i;\n}\n\nbool XMLElement::BoolAttribute(const char* name, bool defaultValue) const\n{\n\tbool b = defaultValue;\n\tQueryBoolAttribute(name, &b);\n\treturn b;\n}\n\ndouble XMLElement::DoubleAttribute(const char* name, double defaultValue) const\n{\n\tdouble d = defaultValue;\n\tQueryDoubleAttribute(name, &d);\n\treturn d;\n}\n\nfloat XMLElement::FloatAttribute(const char* name, float defaultValue) const\n{\n\tfloat f = defaultValue;\n\tQueryFloatAttribute(name, &f);\n\treturn f;\n}\n\nconst char* XMLElement::GetText() const\n{\n    if ( FirstChild() && FirstChild()->ToText() ) {\n        return FirstChild()->Value();\n    }\n    return 0;\n}\n\n\nvoid\tXMLElement::SetText( const char* inText )\n{\n\tif ( FirstChild() && FirstChild()->ToText() )\n\t\tFirstChild()->SetValue( inText );\n\telse {\n\t\tXMLText*\ttheText = GetDocument()->NewText( inText );\n\t\tInsertFirstChild( theText );\n\t}\n}\n\n\nvoid XMLElement::SetText( int v )\n{\n    char buf[BUF_SIZE];\n    XMLUtil::ToStr( v, buf, BUF_SIZE );\n    SetText( buf );\n}\n\n\nvoid XMLElement::SetText( unsigned v )\n{\n    char buf[BUF_SIZE];\n    XMLUtil::ToStr( v, buf, BUF_SIZE );\n    SetText( buf );\n}\n\n\nvoid XMLElement::SetText(int64_t v)\n{\n\tchar buf[BUF_SIZE];\n\tXMLUtil::ToStr(v, buf, BUF_SIZE);\n\tSetText(buf);\n}\n\n\nvoid XMLElement::SetText( bool v )\n{\n    char buf[BUF_SIZE];\n    XMLUtil::ToStr( v, buf, BUF_SIZE );\n    SetText( buf );\n}\n\n\nvoid XMLElement::SetText( float v )\n{\n    char buf[BUF_SIZE];\n    XMLUtil::ToStr( v, buf, BUF_SIZE );\n    SetText( buf );\n}\n\n\nvoid XMLElement::SetText( double v )\n{\n    char buf[BUF_SIZE];\n    XMLUtil::ToStr( v, buf, BUF_SIZE );\n    SetText( buf );\n}\n\n\nXMLError XMLElement::QueryIntText( int* ival ) const\n{\n    if ( FirstChild() && FirstChild()->ToText() ) {\n        const char* t = FirstChild()->Value();\n        if ( XMLUtil::ToInt( t, ival ) ) {\n            return XML_SUCCESS;\n        }\n        return XML_CAN_NOT_CONVERT_TEXT;\n    }\n    return XML_NO_TEXT_NODE;\n}\n\n\nXMLError XMLElement::QueryUnsignedText( unsigned* uval ) const\n{\n    if ( FirstChild() && FirstChild()->ToText() ) {\n        const char* t = FirstChild()->Value();\n        if ( XMLUtil::ToUnsigned( t, uval ) ) {\n            return XML_SUCCESS;\n        }\n        return XML_CAN_NOT_CONVERT_TEXT;\n    }\n    return XML_NO_TEXT_NODE;\n}\n\n\nXMLError XMLElement::QueryInt64Text(int64_t* ival) const\n{\n\tif (FirstChild() && FirstChild()->ToText()) {\n\t\tconst char* t = FirstChild()->Value();\n\t\tif (XMLUtil::ToInt64(t, ival)) {\n\t\t\treturn XML_SUCCESS;\n\t\t}\n\t\treturn XML_CAN_NOT_CONVERT_TEXT;\n\t}\n\treturn XML_NO_TEXT_NODE;\n}\n\n\nXMLError XMLElement::QueryBoolText( bool* bval ) const\n{\n    if ( FirstChild() && FirstChild()->ToText() ) {\n        const char* t = FirstChild()->Value();\n        if ( XMLUtil::ToBool( t, bval ) ) {\n            return XML_SUCCESS;\n        }\n        return XML_CAN_NOT_CONVERT_TEXT;\n    }\n    return XML_NO_TEXT_NODE;\n}\n\n\nXMLError XMLElement::QueryDoubleText( double* dval ) const\n{\n    if ( FirstChild() && FirstChild()->ToText() ) {\n        const char* t = FirstChild()->Value();\n        if ( XMLUtil::ToDouble( t, dval ) ) {\n            return XML_SUCCESS;\n        }\n        return XML_CAN_NOT_CONVERT_TEXT;\n    }\n    return XML_NO_TEXT_NODE;\n}\n\n\nXMLError XMLElement::QueryFloatText( float* fval ) const\n{\n    if ( FirstChild() && FirstChild()->ToText() ) {\n        const char* t = FirstChild()->Value();\n        if ( XMLUtil::ToFloat( t, fval ) ) {\n            return XML_SUCCESS;\n        }\n        return XML_CAN_NOT_CONVERT_TEXT;\n    }\n    return XML_NO_TEXT_NODE;\n}\n\nint XMLElement::IntText(int defaultValue) const\n{\n\tint i = defaultValue;\n\tQueryIntText(&i);\n\treturn i;\n}\n\nunsigned XMLElement::UnsignedText(unsigned defaultValue) const\n{\n\tunsigned i = defaultValue;\n\tQueryUnsignedText(&i);\n\treturn i;\n}\n\nint64_t XMLElement::Int64Text(int64_t defaultValue) const\n{\n\tint64_t i = defaultValue;\n\tQueryInt64Text(&i);\n\treturn i;\n}\n\nbool XMLElement::BoolText(bool defaultValue) const\n{\n\tbool b = defaultValue;\n\tQueryBoolText(&b);\n\treturn b;\n}\n\ndouble XMLElement::DoubleText(double defaultValue) const\n{\n\tdouble d = defaultValue;\n\tQueryDoubleText(&d);\n\treturn d;\n}\n\nfloat XMLElement::FloatText(float defaultValue) const\n{\n\tfloat f = defaultValue;\n\tQueryFloatText(&f);\n\treturn f;\n}\n\n\nXMLAttribute* XMLElement::FindOrCreateAttribute( const char* name )\n{\n    XMLAttribute* last = 0;\n    XMLAttribute* attrib = 0;\n    for( attrib = _rootAttribute;\n            attrib;\n            last = attrib, attrib = attrib->_next ) {\n        if ( XMLUtil::StringEqual( attrib->Name(), name ) ) {\n            break;\n        }\n    }\n    if ( !attrib ) {\n        attrib = CreateAttribute();\n        TIXMLASSERT( attrib );\n        if ( last ) {\n            TIXMLASSERT( last->_next == 0 );\n            last->_next = attrib;\n        }\n        else {\n            TIXMLASSERT( _rootAttribute == 0 );\n            _rootAttribute = attrib;\n        }\n        attrib->SetName( name );\n    }\n    return attrib;\n}\n\n\nvoid XMLElement::DeleteAttribute( const char* name )\n{\n    XMLAttribute* prev = 0;\n    for( XMLAttribute* a=_rootAttribute; a; a=a->_next ) {\n        if ( XMLUtil::StringEqual( name, a->Name() ) ) {\n            if ( prev ) {\n                prev->_next = a->_next;\n            }\n            else {\n                _rootAttribute = a->_next;\n            }\n            DeleteAttribute( a );\n            break;\n        }\n        prev = a;\n    }\n}\n\n\nchar* XMLElement::ParseAttributes( char* p, int* curLineNumPtr )\n{\n    XMLAttribute* prevAttribute = 0;\n\n    // Read the attributes.\n    while( p ) {\n        p = XMLUtil::SkipWhiteSpace( p, curLineNumPtr );\n        if ( !(*p) ) {\n            _document->SetError( XML_ERROR_PARSING_ELEMENT, _parseLineNum, \"XMLElement name=%s\", Name() );\n            return 0;\n        }\n\n        // attribute.\n        if (XMLUtil::IsNameStartChar( *p ) ) {\n            XMLAttribute* attrib = CreateAttribute();\n            TIXMLASSERT( attrib );\n            attrib->_parseLineNum = _document->_parseCurLineNum;\n\n            int attrLineNum = attrib->_parseLineNum;\n\n            p = attrib->ParseDeep( p, _document->ProcessEntities(), curLineNumPtr );\n            if ( !p || Attribute( attrib->Name() ) ) {\n                DeleteAttribute( attrib );\n                _document->SetError( XML_ERROR_PARSING_ATTRIBUTE, attrLineNum, \"XMLElement name=%s\", Name() );\n                return 0;\n            }\n            // There is a minor bug here: if the attribute in the source xml\n            // document is duplicated, it will not be detected and the\n            // attribute will be doubly added. However, tracking the 'prevAttribute'\n            // avoids re-scanning the attribute list. Preferring performance for\n            // now, may reconsider in the future.\n            if ( prevAttribute ) {\n                TIXMLASSERT( prevAttribute->_next == 0 );\n                prevAttribute->_next = attrib;\n            }\n            else {\n                TIXMLASSERT( _rootAttribute == 0 );\n                _rootAttribute = attrib;\n            }\n            prevAttribute = attrib;\n        }\n        // end of the tag\n        else if ( *p == '>' ) {\n            ++p;\n            break;\n        }\n        // end of the tag\n        else if ( *p == '/' && *(p+1) == '>' ) {\n            _closingType = CLOSED;\n            return p+2;\t// done; sealed element.\n        }\n        else {\n            _document->SetError( XML_ERROR_PARSING_ELEMENT, _parseLineNum, 0 );\n            return 0;\n        }\n    }\n    return p;\n}\n\nvoid XMLElement::DeleteAttribute( XMLAttribute* attribute )\n{\n    if ( attribute == 0 ) {\n        return;\n    }\n    MemPool* pool = attribute->_memPool;\n    attribute->~XMLAttribute();\n    pool->Free( attribute );\n}\n\nXMLAttribute* XMLElement::CreateAttribute()\n{\n    TIXMLASSERT( sizeof( XMLAttribute ) == _document->_attributePool.ItemSize() );\n    XMLAttribute* attrib = new (_document->_attributePool.Alloc() ) XMLAttribute();\n    TIXMLASSERT( attrib );\n    attrib->_memPool = &_document->_attributePool;\n    attrib->_memPool->SetTracked();\n    return attrib;\n}\n\n//\n//\t<ele></ele>\n//\t<ele>foo<b>bar</b></ele>\n//\nchar* XMLElement::ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr )\n{\n    // Read the element name.\n    p = XMLUtil::SkipWhiteSpace( p, curLineNumPtr );\n\n    // The closing element is the </element> form. It is\n    // parsed just like a regular element then deleted from\n    // the DOM.\n    if ( *p == '/' ) {\n        _closingType = CLOSING;\n        ++p;\n    }\n\n    p = _value.ParseName( p );\n    if ( _value.Empty() ) {\n        return 0;\n    }\n\n    p = ParseAttributes( p, curLineNumPtr );\n    if ( !p || !*p || _closingType != OPEN ) {\n        return p;\n    }\n\n    p = XMLNode::ParseDeep( p, parentEndTag, curLineNumPtr );\n    return p;\n}\n\n\n\nXMLNode* XMLElement::ShallowClone( XMLDocument* doc ) const\n{\n    if ( !doc ) {\n        doc = _document;\n    }\n    XMLElement* element = doc->NewElement( Value() );\t\t\t\t\t// fixme: this will always allocate memory. Intern?\n    for( const XMLAttribute* a=FirstAttribute(); a; a=a->Next() ) {\n        element->SetAttribute( a->Name(), a->Value() );\t\t\t\t\t// fixme: this will always allocate memory. Intern?\n    }\n    return element;\n}\n\n\nbool XMLElement::ShallowEqual( const XMLNode* compare ) const\n{\n    TIXMLASSERT( compare );\n    const XMLElement* other = compare->ToElement();\n    if ( other && XMLUtil::StringEqual( other->Name(), Name() )) {\n\n        const XMLAttribute* a=FirstAttribute();\n        const XMLAttribute* b=other->FirstAttribute();\n\n        while ( a && b ) {\n            if ( !XMLUtil::StringEqual( a->Value(), b->Value() ) ) {\n                return false;\n            }\n            a = a->Next();\n            b = b->Next();\n        }\n        if ( a || b ) {\n            // different count\n            return false;\n        }\n        return true;\n    }\n    return false;\n}\n\n\nbool XMLElement::Accept( XMLVisitor* visitor ) const\n{\n    TIXMLASSERT( visitor );\n    if ( visitor->VisitEnter( *this, _rootAttribute ) ) {\n        for ( const XMLNode* node=FirstChild(); node; node=node->NextSibling() ) {\n            if ( !node->Accept( visitor ) ) {\n                break;\n            }\n        }\n    }\n    return visitor->VisitExit( *this );\n}\n\n\n// --------- XMLDocument ----------- //\n\n// Warning: List must match 'enum XMLError'\nconst char* XMLDocument::_errorNames[XML_ERROR_COUNT] = {\n    \"XML_SUCCESS\",\n    \"XML_NO_ATTRIBUTE\",\n    \"XML_WRONG_ATTRIBUTE_TYPE\",\n    \"XML_ERROR_FILE_NOT_FOUND\",\n    \"XML_ERROR_FILE_COULD_NOT_BE_OPENED\",\n    \"XML_ERROR_FILE_READ_ERROR\",\n    \"XML_ERROR_PARSING_ELEMENT\",\n    \"XML_ERROR_PARSING_ATTRIBUTE\",\n    \"XML_ERROR_PARSING_TEXT\",\n    \"XML_ERROR_PARSING_CDATA\",\n    \"XML_ERROR_PARSING_COMMENT\",\n    \"XML_ERROR_PARSING_DECLARATION\",\n    \"XML_ERROR_PARSING_UNKNOWN\",\n    \"XML_ERROR_EMPTY_DOCUMENT\",\n    \"XML_ERROR_MISMATCHED_ELEMENT\",\n    \"XML_ERROR_PARSING\",\n    \"XML_CAN_NOT_CONVERT_TEXT\",\n    \"XML_NO_TEXT_NODE\",\n\t\"XML_ELEMENT_DEPTH_EXCEEDED\"\n};\n\n\nXMLDocument::XMLDocument( bool processEntities, Whitespace whitespaceMode ) :\n    XMLNode( 0 ),\n    _writeBOM( false ),\n    _processEntities( processEntities ),\n    _errorID(XML_SUCCESS),\n    _whitespaceMode( whitespaceMode ),\n    _errorStr(),\n    _errorLineNum( 0 ),\n    _charBuffer( 0 ),\n    _parseCurLineNum( 0 ),\n\t_parsingDepth(0),\n    _unlinked(),\n    _elementPool(),\n    _attributePool(),\n    _textPool(),\n    _commentPool()\n{\n    // avoid VC++ C4355 warning about 'this' in initializer list (C4355 is off by default in VS2012+)\n    _document = this;\n}\n\n\nXMLDocument::~XMLDocument()\n{\n    Clear();\n}\n\n\nvoid XMLDocument::MarkInUse(XMLNode* node)\n{\n\tTIXMLASSERT(node);\n\tTIXMLASSERT(node->_parent == 0);\n\n\tfor (int i = 0; i < _unlinked.Size(); ++i) {\n\t\tif (node == _unlinked[i]) {\n\t\t\t_unlinked.SwapRemove(i);\n\t\t\tbreak;\n\t\t}\n\t}\n}\n\nvoid XMLDocument::Clear()\n{\n    DeleteChildren();\n\twhile( _unlinked.Size()) {\n\t\tDeleteNode(_unlinked[0]);\t// Will remove from _unlinked as part of delete.\n\t}\n\n#ifdef TINYXML2_DEBUG\n    const bool hadError = Error();\n#endif\n    ClearError();\n\n    delete [] _charBuffer;\n    _charBuffer = 0;\n\t_parsingDepth = 0;\n\n#if 0\n    _textPool.Trace( \"text\" );\n    _elementPool.Trace( \"element\" );\n    _commentPool.Trace( \"comment\" );\n    _attributePool.Trace( \"attribute\" );\n#endif\n\n#ifdef TINYXML2_DEBUG\n    if ( !hadError ) {\n        TIXMLASSERT( _elementPool.CurrentAllocs()   == _elementPool.Untracked() );\n        TIXMLASSERT( _attributePool.CurrentAllocs() == _attributePool.Untracked() );\n        TIXMLASSERT( _textPool.CurrentAllocs()      == _textPool.Untracked() );\n        TIXMLASSERT( _commentPool.CurrentAllocs()   == _commentPool.Untracked() );\n    }\n#endif\n}\n\n\nvoid XMLDocument::DeepCopy(XMLDocument* target) const\n{\n\tTIXMLASSERT(target);\n    if (target == this) {\n        return; // technically success - a no-op.\n    }\n\n\ttarget->Clear();\n\tfor (const XMLNode* node = this->FirstChild(); node; node = node->NextSibling()) {\n\t\ttarget->InsertEndChild(node->DeepClone(target));\n\t}\n}\n\nXMLElement* XMLDocument::NewElement( const char* name )\n{\n    XMLElement* ele = CreateUnlinkedNode<XMLElement>( _elementPool );\n    ele->SetName( name );\n    return ele;\n}\n\n\nXMLComment* XMLDocument::NewComment( const char* str )\n{\n    XMLComment* comment = CreateUnlinkedNode<XMLComment>( _commentPool );\n    comment->SetValue( str );\n    return comment;\n}\n\n\nXMLText* XMLDocument::NewText( const char* str )\n{\n    XMLText* text = CreateUnlinkedNode<XMLText>( _textPool );\n    text->SetValue( str );\n    return text;\n}\n\n\nXMLDeclaration* XMLDocument::NewDeclaration( const char* str )\n{\n    XMLDeclaration* dec = CreateUnlinkedNode<XMLDeclaration>( _commentPool );\n    dec->SetValue( str ? str : \"xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"\" );\n    return dec;\n}\n\n\nXMLUnknown* XMLDocument::NewUnknown( const char* str )\n{\n    XMLUnknown* unk = CreateUnlinkedNode<XMLUnknown>( _commentPool );\n    unk->SetValue( str );\n    return unk;\n}\n\nstatic FILE* callfopen( const char* filepath, const char* mode )\n{\n    TIXMLASSERT( filepath );\n    TIXMLASSERT( mode );\n#if defined(_MSC_VER) && (_MSC_VER >= 1400 ) && (!defined WINCE)\n    FILE* fp = 0;\n    errno_t err = fopen_s( &fp, filepath, mode );\n    if ( err ) {\n        return 0;\n    }\n#else\n    FILE* fp = fopen( filepath, mode );\n#endif\n    return fp;\n}\n\nvoid XMLDocument::DeleteNode( XMLNode* node )\t{\n    TIXMLASSERT( node );\n    TIXMLASSERT(node->_document == this );\n    if (node->_parent) {\n        node->_parent->DeleteChild( node );\n    }\n    else {\n        // Isn't in the tree.\n        // Use the parent delete.\n        // Also, we need to mark it tracked: we 'know'\n        // it was never used.\n        node->_memPool->SetTracked();\n        // Call the static XMLNode version:\n        XMLNode::DeleteNode(node);\n    }\n}\n\n\nXMLError XMLDocument::LoadFile( const char* filename )\n{\n    if ( !filename ) {\n        TIXMLASSERT( false );\n        SetError( XML_ERROR_FILE_COULD_NOT_BE_OPENED, 0, \"filename=<null>\" );\n        return _errorID;\n    }\n\n    Clear();\n    FILE* fp = callfopen( filename, \"rb\" );\n    if ( !fp ) {\n        SetError( XML_ERROR_FILE_NOT_FOUND, 0, \"filename=%s\", filename );\n        return _errorID;\n    }\n    LoadFile( fp );\n    fclose( fp );\n    return _errorID;\n}\n\n// This is likely overengineered template art to have a check that unsigned long value incremented\n// by one still fits into size_t. If size_t type is larger than unsigned long type\n// (x86_64-w64-mingw32 target) then the check is redundant and gcc and clang emit\n// -Wtype-limits warning. This piece makes the compiler select code with a check when a check\n// is useful and code with no check when a check is redundant depending on how size_t and unsigned long\n// types sizes relate to each other.\ntemplate\n<bool = (sizeof(unsigned long) >= sizeof(size_t))>\nstruct LongFitsIntoSizeTMinusOne {\n    static bool Fits( unsigned long value )\n    {\n        return value < (size_t)-1;\n    }\n};\n\ntemplate <>\nstruct LongFitsIntoSizeTMinusOne<false> {\n    static bool Fits( unsigned long )\n    {\n        return true;\n    }\n};\n\nXMLError XMLDocument::LoadFile( FILE* fp )\n{\n    Clear();\n\n    fseek( fp, 0, SEEK_SET );\n    if ( fgetc( fp ) == EOF && ferror( fp ) != 0 ) {\n        SetError( XML_ERROR_FILE_READ_ERROR, 0, 0 );\n        return _errorID;\n    }\n\n    fseek( fp, 0, SEEK_END );\n    const long filelength = ftell( fp );\n    fseek( fp, 0, SEEK_SET );\n    if ( filelength == -1L ) {\n        SetError( XML_ERROR_FILE_READ_ERROR, 0, 0 );\n        return _errorID;\n    }\n    TIXMLASSERT( filelength >= 0 );\n\n    if ( !LongFitsIntoSizeTMinusOne<>::Fits( filelength ) ) {\n        // Cannot handle files which won't fit in buffer together with null terminator\n        SetError( XML_ERROR_FILE_READ_ERROR, 0, 0 );\n        return _errorID;\n    }\n\n    if ( filelength == 0 ) {\n        SetError( XML_ERROR_EMPTY_DOCUMENT, 0, 0 );\n        return _errorID;\n    }\n\n    const size_t size = filelength;\n    TIXMLASSERT( _charBuffer == 0 );\n    _charBuffer = new char[size+1];\n    size_t read = fread( _charBuffer, 1, size, fp );\n    if ( read != size ) {\n        SetError( XML_ERROR_FILE_READ_ERROR, 0, 0 );\n        return _errorID;\n    }\n\n    _charBuffer[size] = 0;\n\n    Parse();\n    return _errorID;\n}\n\n\nXMLError XMLDocument::SaveFile( const char* filename, bool compact )\n{\n    if ( !filename ) {\n        TIXMLASSERT( false );\n        SetError( XML_ERROR_FILE_COULD_NOT_BE_OPENED, 0, \"filename=<null>\" );\n        return _errorID;\n    }\n\n    FILE* fp = callfopen( filename, \"w\" );\n    if ( !fp ) {\n        SetError( XML_ERROR_FILE_COULD_NOT_BE_OPENED, 0, \"filename=%s\", filename );\n        return _errorID;\n    }\n    SaveFile(fp, compact);\n    fclose( fp );\n    return _errorID;\n}\n\n\nXMLError XMLDocument::SaveFile( FILE* fp, bool compact )\n{\n    // Clear any error from the last save, otherwise it will get reported\n    // for *this* call.\n    ClearError();\n    XMLPrinter stream( fp, compact );\n    Print( &stream );\n    return _errorID;\n}\n\n\nXMLError XMLDocument::Parse( const char* p, size_t len )\n{\n    Clear();\n\n    if ( len == 0 || !p || !*p ) {\n        SetError( XML_ERROR_EMPTY_DOCUMENT, 0, 0 );\n        return _errorID;\n    }\n    if ( len == (size_t)(-1) ) {\n        len = strlen( p );\n    }\n    TIXMLASSERT( _charBuffer == 0 );\n    _charBuffer = new char[ len+1 ];\n    memcpy( _charBuffer, p, len );\n    _charBuffer[len] = 0;\n\n    Parse();\n    if ( Error() ) {\n        // clean up now essentially dangling memory.\n        // and the parse fail can put objects in the\n        // pools that are dead and inaccessible.\n        DeleteChildren();\n        _elementPool.Clear();\n        _attributePool.Clear();\n        _textPool.Clear();\n        _commentPool.Clear();\n    }\n    return _errorID;\n}\n\n\nvoid XMLDocument::Print( XMLPrinter* streamer ) const\n{\n    if ( streamer ) {\n        Accept( streamer );\n    }\n    else {\n        XMLPrinter stdoutStreamer( stdout );\n        Accept( &stdoutStreamer );\n    }\n}\n\n\nvoid XMLDocument::SetError( XMLError error, int lineNum, const char* format, ... )\n{\n    TIXMLASSERT( error >= 0 && error < XML_ERROR_COUNT );\n    _errorID = error;\n    _errorLineNum = lineNum;\n\t_errorStr.Reset();\n\n    size_t BUFFER_SIZE = 1000;\n    char* buffer = new char[BUFFER_SIZE];\n\n    TIXMLASSERT(sizeof(error) <= sizeof(int));\n    TIXML_SNPRINTF(buffer, BUFFER_SIZE, \"Error=%s ErrorID=%d (0x%x) Line number=%d\", ErrorIDToName(error), int(error), int(error), lineNum);\n\n\tif (format) {\n\t\tsize_t len = strlen(buffer);\n\t\tTIXML_SNPRINTF(buffer + len, BUFFER_SIZE - len, \": \");\n\t\tlen = strlen(buffer);\n\n\t\tva_list va;\n\t\tva_start(va, format);\n\t\tTIXML_VSNPRINTF(buffer + len, BUFFER_SIZE - len, format, va);\n\t\tva_end(va);\n\t}\n\t_errorStr.SetStr(buffer);\n\tdelete[] buffer;\n}\n\n\n/*static*/ const char* XMLDocument::ErrorIDToName(XMLError errorID)\n{\n\tTIXMLASSERT( errorID >= 0 && errorID < XML_ERROR_COUNT );\n    const char* errorName = _errorNames[errorID];\n    TIXMLASSERT( errorName && errorName[0] );\n    return errorName;\n}\n\nconst char* XMLDocument::ErrorStr() const\n{\n\treturn _errorStr.Empty() ? \"\" : _errorStr.GetStr();\n}\n\n\nvoid XMLDocument::PrintError() const\n{\n    printf(\"%s\\n\", ErrorStr());\n}\n\nconst char* XMLDocument::ErrorName() const\n{\n    return ErrorIDToName(_errorID);\n}\n\nvoid XMLDocument::Parse()\n{\n    TIXMLASSERT( NoChildren() ); // Clear() must have been called previously\n    TIXMLASSERT( _charBuffer );\n    _parseCurLineNum = 1;\n    _parseLineNum = 1;\n    char* p = _charBuffer;\n    p = XMLUtil::SkipWhiteSpace( p, &_parseCurLineNum );\n    p = const_cast<char*>( XMLUtil::ReadBOM( p, &_writeBOM ) );\n    if ( !*p ) {\n        SetError( XML_ERROR_EMPTY_DOCUMENT, 0, 0 );\n        return;\n    }\n    ParseDeep(p, 0, &_parseCurLineNum );\n}\n\nvoid XMLDocument::PushDepth()\n{\n\t_parsingDepth++;\n\tif (_parsingDepth == TINYXML2_MAX_ELEMENT_DEPTH) {\n\t\tSetError(XML_ELEMENT_DEPTH_EXCEEDED, _parseCurLineNum, \"Element nesting is too deep.\" );\n\t}\n}\n\nvoid XMLDocument::PopDepth()\n{\n\tTIXMLASSERT(_parsingDepth > 0);\n\t--_parsingDepth;\n}\n\nXMLPrinter::XMLPrinter( FILE* file, bool compact, int depth ) :\n    _elementJustOpened( false ),\n    _stack(),\n    _firstElement( true ),\n    _fp( file ),\n    _depth( depth ),\n    _textDepth( -1 ),\n    _processEntities( true ),\n    _compactMode( compact ),\n    _buffer()\n{\n    for( int i=0; i<ENTITY_RANGE; ++i ) {\n        _entityFlag[i] = false;\n        _restrictedEntityFlag[i] = false;\n    }\n    for( int i=0; i<NUM_ENTITIES; ++i ) {\n        const char entityValue = entities[i].value;\n        const unsigned char flagIndex = (unsigned char)entityValue;\n        TIXMLASSERT( flagIndex < ENTITY_RANGE );\n        _entityFlag[flagIndex] = true;\n    }\n    _restrictedEntityFlag[(unsigned char)'&'] = true;\n    _restrictedEntityFlag[(unsigned char)'<'] = true;\n    _restrictedEntityFlag[(unsigned char)'>'] = true;\t// not required, but consistency is nice\n    _buffer.Push( 0 );\n}\n\n\nvoid XMLPrinter::Print( const char* format, ... )\n{\n    va_list     va;\n    va_start( va, format );\n\n    if ( _fp ) {\n        vfprintf( _fp, format, va );\n    }\n    else {\n        const int len = TIXML_VSCPRINTF( format, va );\n        // Close out and re-start the va-args\n        va_end( va );\n        TIXMLASSERT( len >= 0 );\n        va_start( va, format );\n        TIXMLASSERT( _buffer.Size() > 0 && _buffer[_buffer.Size() - 1] == 0 );\n        char* p = _buffer.PushArr( len ) - 1;\t// back up over the null terminator.\n\t\tTIXML_VSNPRINTF( p, len+1, format, va );\n    }\n    va_end( va );\n}\n\n\nvoid XMLPrinter::Write( const char* data, size_t size )\n{\n    if ( _fp ) {\n        fwrite ( data , sizeof(char), size, _fp);\n    }\n    else {\n        char* p = _buffer.PushArr( static_cast<int>(size) ) - 1;   // back up over the null terminator.\n        memcpy( p, data, size );\n        p[size] = 0;\n    }\n}\n\n\nvoid XMLPrinter::Putc( char ch )\n{\n    if ( _fp ) {\n        fputc ( ch, _fp);\n    }\n    else {\n        char* p = _buffer.PushArr( sizeof(char) ) - 1;   // back up over the null terminator.\n        p[0] = ch;\n        p[1] = 0;\n    }\n}\n\n\nvoid XMLPrinter::PrintSpace( int depth )\n{\n    for( int i=0; i<depth; ++i ) {\n        Write( \"    \" );\n    }\n}\n\n\nvoid XMLPrinter::PrintString( const char* p, bool restricted )\n{\n    // Look for runs of bytes between entities to print.\n    const char* q = p;\n\n    if ( _processEntities ) {\n        const bool* flag = restricted ? _restrictedEntityFlag : _entityFlag;\n        while ( *q ) {\n            TIXMLASSERT( p <= q );\n            // Remember, char is sometimes signed. (How many times has that bitten me?)\n            if ( *q > 0 && *q < ENTITY_RANGE ) {\n                // Check for entities. If one is found, flush\n                // the stream up until the entity, write the\n                // entity, and keep looking.\n                if ( flag[(unsigned char)(*q)] ) {\n                    while ( p < q ) {\n                        const size_t delta = q - p;\n                        const int toPrint = ( INT_MAX < delta ) ? INT_MAX : (int)delta;\n                        Write( p, toPrint );\n                        p += toPrint;\n                    }\n                    bool entityPatternPrinted = false;\n                    for( int i=0; i<NUM_ENTITIES; ++i ) {\n                        if ( entities[i].value == *q ) {\n                            Putc( '&' );\n                            Write( entities[i].pattern, entities[i].length );\n                            Putc( ';' );\n                            entityPatternPrinted = true;\n                            break;\n                        }\n                    }\n                    if ( !entityPatternPrinted ) {\n                        // TIXMLASSERT( entityPatternPrinted ) causes gcc -Wunused-but-set-variable in release\n                        TIXMLASSERT( false );\n                    }\n                    ++p;\n                }\n            }\n            ++q;\n            TIXMLASSERT( p <= q );\n        }\n        // Flush the remaining string. This will be the entire\n        // string if an entity wasn't found.\n        if ( p < q ) {\n            const size_t delta = q - p;\n            const int toPrint = ( INT_MAX < delta ) ? INT_MAX : (int)delta;\n            Write( p, toPrint );\n        }\n    }\n    else {\n        Write( p );\n    }\n}\n\n\nvoid XMLPrinter::PushHeader( bool writeBOM, bool writeDec )\n{\n    if ( writeBOM ) {\n        static const unsigned char bom[] = { TIXML_UTF_LEAD_0, TIXML_UTF_LEAD_1, TIXML_UTF_LEAD_2, 0 };\n        Write( reinterpret_cast< const char* >( bom ) );\n    }\n    if ( writeDec ) {\n        PushDeclaration( \"xml version=\\\"1.0\\\"\" );\n    }\n}\n\n\nvoid XMLPrinter::OpenElement( const char* name, bool compactMode )\n{\n    SealElementIfJustOpened();\n    _stack.Push( name );\n\n    if ( _textDepth < 0 && !_firstElement && !compactMode ) {\n        Putc( '\\n' );\n    }\n    if ( !compactMode ) {\n        PrintSpace( _depth );\n    }\n\n    Write ( \"<\" );\n    Write ( name );\n\n    _elementJustOpened = true;\n    _firstElement = false;\n    ++_depth;\n}\n\n\nvoid XMLPrinter::PushAttribute( const char* name, const char* value )\n{\n    TIXMLASSERT( _elementJustOpened );\n    Putc ( ' ' );\n    Write( name );\n    Write( \"=\\\"\" );\n    PrintString( value, false );\n    Putc ( '\\\"' );\n}\n\n\nvoid XMLPrinter::PushAttribute( const char* name, int v )\n{\n    char buf[BUF_SIZE];\n    XMLUtil::ToStr( v, buf, BUF_SIZE );\n    PushAttribute( name, buf );\n}\n\n\nvoid XMLPrinter::PushAttribute( const char* name, unsigned v )\n{\n    char buf[BUF_SIZE];\n    XMLUtil::ToStr( v, buf, BUF_SIZE );\n    PushAttribute( name, buf );\n}\n\n\nvoid XMLPrinter::PushAttribute(const char* name, int64_t v)\n{\n\tchar buf[BUF_SIZE];\n\tXMLUtil::ToStr(v, buf, BUF_SIZE);\n\tPushAttribute(name, buf);\n}\n\n\nvoid XMLPrinter::PushAttribute( const char* name, bool v )\n{\n    char buf[BUF_SIZE];\n    XMLUtil::ToStr( v, buf, BUF_SIZE );\n    PushAttribute( name, buf );\n}\n\n\nvoid XMLPrinter::PushAttribute( const char* name, double v )\n{\n    char buf[BUF_SIZE];\n    XMLUtil::ToStr( v, buf, BUF_SIZE );\n    PushAttribute( name, buf );\n}\n\n\nvoid XMLPrinter::CloseElement( bool compactMode )\n{\n    --_depth;\n    const char* name = _stack.Pop();\n\n    if ( _elementJustOpened ) {\n        Write( \"/>\" );\n    }\n    else {\n        if ( _textDepth < 0 && !compactMode) {\n            Putc( '\\n' );\n            PrintSpace( _depth );\n        }\n        Write ( \"</\" );\n        Write ( name );\n        Write ( \">\" );\n    }\n\n    if ( _textDepth == _depth ) {\n        _textDepth = -1;\n    }\n    if ( _depth == 0 && !compactMode) {\n        Putc( '\\n' );\n    }\n    _elementJustOpened = false;\n}\n\n\nvoid XMLPrinter::SealElementIfJustOpened()\n{\n    if ( !_elementJustOpened ) {\n        return;\n    }\n    _elementJustOpened = false;\n    Putc( '>' );\n}\n\n\nvoid XMLPrinter::PushText( const char* text, bool cdata )\n{\n    _textDepth = _depth-1;\n\n    SealElementIfJustOpened();\n    if ( cdata ) {\n        Write( \"<![CDATA[\" );\n        Write( text );\n        Write( \"]]>\" );\n    }\n    else {\n        PrintString( text, true );\n    }\n}\n\nvoid XMLPrinter::PushText( int64_t value )\n{\n    char buf[BUF_SIZE];\n    XMLUtil::ToStr( value, buf, BUF_SIZE );\n    PushText( buf, false );\n}\n\nvoid XMLPrinter::PushText( int value )\n{\n    char buf[BUF_SIZE];\n    XMLUtil::ToStr( value, buf, BUF_SIZE );\n    PushText( buf, false );\n}\n\n\nvoid XMLPrinter::PushText( unsigned value )\n{\n    char buf[BUF_SIZE];\n    XMLUtil::ToStr( value, buf, BUF_SIZE );\n    PushText( buf, false );\n}\n\n\nvoid XMLPrinter::PushText( bool value )\n{\n    char buf[BUF_SIZE];\n    XMLUtil::ToStr( value, buf, BUF_SIZE );\n    PushText( buf, false );\n}\n\n\nvoid XMLPrinter::PushText( float value )\n{\n    char buf[BUF_SIZE];\n    XMLUtil::ToStr( value, buf, BUF_SIZE );\n    PushText( buf, false );\n}\n\n\nvoid XMLPrinter::PushText( double value )\n{\n    char buf[BUF_SIZE];\n    XMLUtil::ToStr( value, buf, BUF_SIZE );\n    PushText( buf, false );\n}\n\n\nvoid XMLPrinter::PushComment( const char* comment )\n{\n    SealElementIfJustOpened();\n    if ( _textDepth < 0 && !_firstElement && !_compactMode) {\n        Putc( '\\n' );\n        PrintSpace( _depth );\n    }\n    _firstElement = false;\n\n    Write( \"<!--\" );\n    Write( comment );\n    Write( \"-->\" );\n}\n\n\nvoid XMLPrinter::PushDeclaration( const char* value )\n{\n    SealElementIfJustOpened();\n    if ( _textDepth < 0 && !_firstElement && !_compactMode) {\n        Putc( '\\n' );\n        PrintSpace( _depth );\n    }\n    _firstElement = false;\n\n    Write( \"<?\" );\n    Write( value );\n    Write( \"?>\" );\n}\n\n\nvoid XMLPrinter::PushUnknown( const char* value )\n{\n    SealElementIfJustOpened();\n    if ( _textDepth < 0 && !_firstElement && !_compactMode) {\n        Putc( '\\n' );\n        PrintSpace( _depth );\n    }\n    _firstElement = false;\n\n    Write( \"<!\" );\n    Write( value );\n    Putc( '>' );\n}\n\n\nbool XMLPrinter::VisitEnter( const XMLDocument& doc )\n{\n    _processEntities = doc.ProcessEntities();\n    if ( doc.HasBOM() ) {\n        PushHeader( true, false );\n    }\n    return true;\n}\n\n\nbool XMLPrinter::VisitEnter( const XMLElement& element, const XMLAttribute* attribute )\n{\n    const XMLElement* parentElem = 0;\n    if ( element.Parent() ) {\n        parentElem = element.Parent()->ToElement();\n    }\n    const bool compactMode = parentElem ? CompactMode( *parentElem ) : _compactMode;\n    OpenElement( element.Name(), compactMode );\n    while ( attribute ) {\n        PushAttribute( attribute->Name(), attribute->Value() );\n        attribute = attribute->Next();\n    }\n    return true;\n}\n\n\nbool XMLPrinter::VisitExit( const XMLElement& element )\n{\n    CloseElement( CompactMode(element) );\n    return true;\n}\n\n\nbool XMLPrinter::Visit( const XMLText& text )\n{\n    PushText( text.Value(), text.CData() );\n    return true;\n}\n\n\nbool XMLPrinter::Visit( const XMLComment& comment )\n{\n    PushComment( comment.Value() );\n    return true;\n}\n\nbool XMLPrinter::Visit( const XMLDeclaration& declaration )\n{\n    PushDeclaration( declaration.Value() );\n    return true;\n}\n\n\nbool XMLPrinter::Visit( const XMLUnknown& unknown )\n{\n    PushUnknown( unknown.Value() );\n    return true;\n}\n\n}   // namespace tinyxml2\n"
  },
  {
    "path": "source/external/tinyxml2.h",
    "content": "/*\nOriginal code by Lee Thomason (www.grinninglizard.com)\n\nThis software is provided 'as-is', without any express or implied\nwarranty. In no event will the authors be held liable for any\ndamages arising from the use of this software.\n\nPermission is granted to anyone to use this software for any\npurpose, including commercial applications, and to alter it and\nredistribute it freely, subject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must\nnot claim that you wrote the original software. If you use this\nsoftware in a product, an acknowledgment in the product documentation\nwould be appreciated but is not required.\n\n2. Altered source versions must be plainly marked as such, and\nmust not be misrepresented as being the original software.\n\n3. This notice may not be removed or altered from any source\ndistribution.\n*/\n\n#ifndef TINYXML2_INCLUDED\n#define TINYXML2_INCLUDED\n\n#if defined(ANDROID_NDK) || defined(__BORLANDC__) || defined(__QNXNTO__)\n#   include <ctype.h>\n#   include <limits.h>\n#   include <stdio.h>\n#   include <stdlib.h>\n#   include <string.h>\n#\tif defined(__PS3__)\n#\t\tinclude <stddef.h>\n#\tendif\n#else\n#   include <cctype>\n#   include <climits>\n#   include <cstdio>\n#   include <cstdlib>\n#   include <cstring>\n#endif\n#include <stdint.h>\n\n/*\n   TODO: intern strings instead of allocation.\n*/\n/*\n\tgcc:\n        g++ -Wall -DTINYXML2_DEBUG tinyxml2.cpp xmltest.cpp -o gccxmltest.exe\n\n    Formatting, Artistic Style:\n        AStyle.exe --style=1tbs --indent-switches --break-closing-brackets --indent-preprocessor tinyxml2.cpp tinyxml2.h\n*/\n\n#if defined( _DEBUG ) || defined (__DEBUG__)\n#   ifndef TINYXML2_DEBUG\n#       define TINYXML2_DEBUG\n#   endif\n#endif\n\n#ifdef _MSC_VER\n#   pragma warning(push)\n#   pragma warning(disable: 4251)\n#endif\n\n#ifdef _WIN32\n#   ifdef TINYXML2_EXPORT\n#       define TINYXML2_LIB __declspec(dllexport)\n#   elif defined(TINYXML2_IMPORT)\n#       define TINYXML2_LIB __declspec(dllimport)\n#   else\n#       define TINYXML2_LIB\n#   endif\n#elif __GNUC__ >= 4\n#   define TINYXML2_LIB __attribute__((visibility(\"default\")))\n#else\n#   define TINYXML2_LIB\n#endif\n\n\n#if defined(TINYXML2_DEBUG)\n#   if defined(_MSC_VER)\n#       // \"(void)0,\" is for suppressing C4127 warning in \"assert(false)\", \"assert(true)\" and the like\n#       define TIXMLASSERT( x )           if ( !((void)0,(x))) { __debugbreak(); }\n#   elif defined (ANDROID_NDK)\n#       include <android/log.h>\n#       define TIXMLASSERT( x )           if ( !(x)) { __android_log_assert( \"assert\", \"grinliz\", \"ASSERT in '%s' at %d.\", __FILE__, __LINE__ ); }\n#   else\n#       include <assert.h>\n#       define TIXMLASSERT                assert\n#   endif\n#else\n#   define TIXMLASSERT( x )               {}\n#endif\n\n\n/* Versioning, past 1.0.14:\n\thttp://semver.org/\n*/\nstatic const int TIXML2_MAJOR_VERSION = 6;\nstatic const int TIXML2_MINOR_VERSION = 2;\nstatic const int TIXML2_PATCH_VERSION = 0;\n\n#define TINYXML2_MAJOR_VERSION 6\n#define TINYXML2_MINOR_VERSION 2\n#define TINYXML2_PATCH_VERSION 0\n\n// A fixed element depth limit is problematic. There needs to be a\n// limit to avoid a stack overflow. However, that limit varies per\n// system, and the capacity of the stack. On the other hand, it's a trivial\n// attack that can result from ill, malicious, or even correctly formed XML,\n// so there needs to be a limit in place.\nstatic const int TINYXML2_MAX_ELEMENT_DEPTH = 100;\n\nnamespace tinyxml2\n{\nclass XMLDocument;\nclass XMLElement;\nclass XMLAttribute;\nclass XMLComment;\nclass XMLText;\nclass XMLDeclaration;\nclass XMLUnknown;\nclass XMLPrinter;\n\n/*\n\tA class that wraps strings. Normally stores the start and end\n\tpointers into the XML file itself, and will apply normalization\n\tand entity translation if actually read. Can also store (and memory\n\tmanage) a traditional char[]\n*/\nclass StrPair\n{\npublic:\n    enum {\n        NEEDS_ENTITY_PROCESSING\t\t\t= 0x01,\n        NEEDS_NEWLINE_NORMALIZATION\t\t= 0x02,\n        NEEDS_WHITESPACE_COLLAPSING     = 0x04,\n\n        TEXT_ELEMENT\t\t            = NEEDS_ENTITY_PROCESSING | NEEDS_NEWLINE_NORMALIZATION,\n        TEXT_ELEMENT_LEAVE_ENTITIES\t\t= NEEDS_NEWLINE_NORMALIZATION,\n        ATTRIBUTE_NAME\t\t            = 0,\n        ATTRIBUTE_VALUE\t\t            = NEEDS_ENTITY_PROCESSING | NEEDS_NEWLINE_NORMALIZATION,\n        ATTRIBUTE_VALUE_LEAVE_ENTITIES  = NEEDS_NEWLINE_NORMALIZATION,\n        COMMENT\t\t\t\t\t\t\t= NEEDS_NEWLINE_NORMALIZATION\n    };\n\n    StrPair() : _flags( 0 ), _start( 0 ), _end( 0 ) {}\n    ~StrPair();\n\n    void Set( char* start, char* end, int flags ) {\n        TIXMLASSERT( start );\n        TIXMLASSERT( end );\n        Reset();\n        _start  = start;\n        _end    = end;\n        _flags  = flags | NEEDS_FLUSH;\n    }\n\n    const char* GetStr();\n\n    bool Empty() const {\n        return _start == _end;\n    }\n\n    void SetInternedStr( const char* str ) {\n        Reset();\n        _start = const_cast<char*>(str);\n    }\n\n    void SetStr( const char* str, int flags=0 );\n\n    char* ParseText( char* in, const char* endTag, int strFlags, int* curLineNumPtr );\n    char* ParseName( char* in );\n\n    void TransferTo( StrPair* other );\n\tvoid Reset();\n\nprivate:\n    void CollapseWhitespace();\n\n    enum {\n        NEEDS_FLUSH = 0x100,\n        NEEDS_DELETE = 0x200\n    };\n\n    int     _flags;\n    char*   _start;\n    char*   _end;\n\n    StrPair( const StrPair& other );\t// not supported\n    void operator=( StrPair& other );\t// not supported, use TransferTo()\n};\n\n\n/*\n\tA dynamic array of Plain Old Data. Doesn't support constructors, etc.\n\tHas a small initial memory pool, so that low or no usage will not\n\tcause a call to new/delete\n*/\ntemplate <class T, int INITIAL_SIZE>\nclass DynArray\n{\npublic:\n    DynArray() :\n        _mem( _pool ),\n        _allocated( INITIAL_SIZE ),\n        _size( 0 )\n    {\n    }\n\n    ~DynArray() {\n        if ( _mem != _pool ) {\n            delete [] _mem;\n        }\n    }\n\n    void Clear() {\n        _size = 0;\n    }\n\n    void Push( T t ) {\n        TIXMLASSERT( _size < INT_MAX );\n        EnsureCapacity( _size+1 );\n        _mem[_size] = t;\n        ++_size;\n    }\n\n    T* PushArr( int count ) {\n        TIXMLASSERT( count >= 0 );\n        TIXMLASSERT( _size <= INT_MAX - count );\n        EnsureCapacity( _size+count );\n        T* ret = &_mem[_size];\n        _size += count;\n        return ret;\n    }\n\n    T Pop() {\n        TIXMLASSERT( _size > 0 );\n        --_size;\n        return _mem[_size];\n    }\n\n    void PopArr( int count ) {\n        TIXMLASSERT( _size >= count );\n        _size -= count;\n    }\n\n    bool Empty() const\t\t\t\t\t{\n        return _size == 0;\n    }\n\n    T& operator[](int i)\t\t\t\t{\n        TIXMLASSERT( i>= 0 && i < _size );\n        return _mem[i];\n    }\n\n    const T& operator[](int i) const\t{\n        TIXMLASSERT( i>= 0 && i < _size );\n        return _mem[i];\n    }\n\n    const T& PeekTop() const            {\n        TIXMLASSERT( _size > 0 );\n        return _mem[ _size - 1];\n    }\n\n    int Size() const\t\t\t\t\t{\n        TIXMLASSERT( _size >= 0 );\n        return _size;\n    }\n\n    int Capacity() const\t\t\t\t{\n        TIXMLASSERT( _allocated >= INITIAL_SIZE );\n        return _allocated;\n    }\n\n\tvoid SwapRemove(int i) {\n\t\tTIXMLASSERT(i >= 0 && i < _size);\n\t\tTIXMLASSERT(_size > 0);\n\t\t_mem[i] = _mem[_size - 1];\n\t\t--_size;\n\t}\n\n    const T* Mem() const\t\t\t\t{\n        TIXMLASSERT( _mem );\n        return _mem;\n    }\n\n    T* Mem()\t\t\t\t\t\t\t{\n        TIXMLASSERT( _mem );\n        return _mem;\n    }\n\nprivate:\n    DynArray( const DynArray& ); // not supported\n    void operator=( const DynArray& ); // not supported\n\n    void EnsureCapacity( int cap ) {\n        TIXMLASSERT( cap > 0 );\n        if ( cap > _allocated ) {\n            TIXMLASSERT( cap <= INT_MAX / 2 );\n            int newAllocated = cap * 2;\n            T* newMem = new T[newAllocated];\n            TIXMLASSERT( newAllocated >= _size );\n            memcpy( newMem, _mem, sizeof(T)*_size );\t// warning: not using constructors, only works for PODs\n            if ( _mem != _pool ) {\n                delete [] _mem;\n            }\n            _mem = newMem;\n            _allocated = newAllocated;\n        }\n    }\n\n    T*  _mem;\n    T   _pool[INITIAL_SIZE];\n    int _allocated;\t\t// objects allocated\n    int _size;\t\t\t// number objects in use\n};\n\n\n/*\n\tParent virtual class of a pool for fast allocation\n\tand deallocation of objects.\n*/\nclass MemPool\n{\npublic:\n    MemPool() {}\n    virtual ~MemPool() {}\n\n    virtual int ItemSize() const = 0;\n    virtual void* Alloc() = 0;\n    virtual void Free( void* ) = 0;\n    virtual void SetTracked() = 0;\n};\n\n\n/*\n\tTemplate child class to create pools of the correct type.\n*/\ntemplate< int ITEM_SIZE >\nclass MemPoolT : public MemPool\n{\npublic:\n    MemPoolT() : _blockPtrs(), _root(0), _currentAllocs(0), _nAllocs(0), _maxAllocs(0), _nUntracked(0)\t{}\n    ~MemPoolT() {\n        MemPoolT< ITEM_SIZE >::Clear();\n    }\n\n    void Clear() {\n        // Delete the blocks.\n        while( !_blockPtrs.Empty()) {\n            Block* lastBlock = _blockPtrs.Pop();\n            delete lastBlock;\n        }\n        _root = 0;\n        _currentAllocs = 0;\n        _nAllocs = 0;\n        _maxAllocs = 0;\n        _nUntracked = 0;\n    }\n\n    virtual int ItemSize() const\t{\n        return ITEM_SIZE;\n    }\n    int CurrentAllocs() const\t\t{\n        return _currentAllocs;\n    }\n\n    virtual void* Alloc() {\n        if ( !_root ) {\n            // Need a new block.\n            Block* block = new Block();\n            _blockPtrs.Push( block );\n\n            Item* blockItems = block->items;\n            for( int i = 0; i < ITEMS_PER_BLOCK - 1; ++i ) {\n                blockItems[i].next = &(blockItems[i + 1]);\n            }\n            blockItems[ITEMS_PER_BLOCK - 1].next = 0;\n            _root = blockItems;\n        }\n        Item* const result = _root;\n        TIXMLASSERT( result != 0 );\n        _root = _root->next;\n\n        ++_currentAllocs;\n        if ( _currentAllocs > _maxAllocs ) {\n            _maxAllocs = _currentAllocs;\n        }\n        ++_nAllocs;\n        ++_nUntracked;\n        return result;\n    }\n\n    virtual void Free( void* mem ) {\n        if ( !mem ) {\n            return;\n        }\n        --_currentAllocs;\n        Item* item = static_cast<Item*>( mem );\n#ifdef TINYXML2_DEBUG\n        memset( item, 0xfe, sizeof( *item ) );\n#endif\n        item->next = _root;\n        _root = item;\n    }\n    void Trace( const char* name ) {\n        printf( \"Mempool %s watermark=%d [%dk] current=%d size=%d nAlloc=%d blocks=%d\\n\",\n                name, _maxAllocs, _maxAllocs * ITEM_SIZE / 1024, _currentAllocs,\n                ITEM_SIZE, _nAllocs, _blockPtrs.Size() );\n    }\n\n    void SetTracked() {\n        --_nUntracked;\n    }\n\n    int Untracked() const {\n        return _nUntracked;\n    }\n\n\t// This number is perf sensitive. 4k seems like a good tradeoff on my machine.\n\t// The test file is large, 170k.\n\t// Release:\t\tVS2010 gcc(no opt)\n\t//\t\t1k:\t\t4000\n\t//\t\t2k:\t\t4000\n\t//\t\t4k:\t\t3900\t21000\n\t//\t\t16k:\t5200\n\t//\t\t32k:\t4300\n\t//\t\t64k:\t4000\t21000\n    // Declared public because some compilers do not accept to use ITEMS_PER_BLOCK\n    // in private part if ITEMS_PER_BLOCK is private\n    enum { ITEMS_PER_BLOCK = (4 * 1024) / ITEM_SIZE };\n\nprivate:\n    MemPoolT( const MemPoolT& ); // not supported\n    void operator=( const MemPoolT& ); // not supported\n\n    union Item {\n        Item*   next;\n        char    itemData[ITEM_SIZE];\n    };\n    struct Block {\n        Item items[ITEMS_PER_BLOCK];\n    };\n    DynArray< Block*, 10 > _blockPtrs;\n    Item* _root;\n\n    int _currentAllocs;\n    int _nAllocs;\n    int _maxAllocs;\n    int _nUntracked;\n};\n\n\n\n/**\n\tImplements the interface to the \"Visitor pattern\" (see the Accept() method.)\n\tIf you call the Accept() method, it requires being passed a XMLVisitor\n\tclass to handle callbacks. For nodes that contain other nodes (Document, Element)\n\tyou will get called with a VisitEnter/VisitExit pair. Nodes that are always leafs\n\tare simply called with Visit().\n\n\tIf you return 'true' from a Visit method, recursive parsing will continue. If you return\n\tfalse, <b>no children of this node or its siblings</b> will be visited.\n\n\tAll flavors of Visit methods have a default implementation that returns 'true' (continue\n\tvisiting). You need to only override methods that are interesting to you.\n\n\tGenerally Accept() is called on the XMLDocument, although all nodes support visiting.\n\n\tYou should never change the document from a callback.\n\n\t@sa XMLNode::Accept()\n*/\nclass TINYXML2_LIB XMLVisitor\n{\npublic:\n    virtual ~XMLVisitor() {}\n\n    /// Visit a document.\n    virtual bool VisitEnter( const XMLDocument& /*doc*/ )\t\t\t{\n        return true;\n    }\n    /// Visit a document.\n    virtual bool VisitExit( const XMLDocument& /*doc*/ )\t\t\t{\n        return true;\n    }\n\n    /// Visit an element.\n    virtual bool VisitEnter( const XMLElement& /*element*/, const XMLAttribute* /*firstAttribute*/ )\t{\n        return true;\n    }\n    /// Visit an element.\n    virtual bool VisitExit( const XMLElement& /*element*/ )\t\t\t{\n        return true;\n    }\n\n    /// Visit a declaration.\n    virtual bool Visit( const XMLDeclaration& /*declaration*/ )\t\t{\n        return true;\n    }\n    /// Visit a text node.\n    virtual bool Visit( const XMLText& /*text*/ )\t\t\t\t\t{\n        return true;\n    }\n    /// Visit a comment node.\n    virtual bool Visit( const XMLComment& /*comment*/ )\t\t\t\t{\n        return true;\n    }\n    /// Visit an unknown node.\n    virtual bool Visit( const XMLUnknown& /*unknown*/ )\t\t\t\t{\n        return true;\n    }\n};\n\n// WARNING: must match XMLDocument::_errorNames[]\nenum XMLError {\n    XML_SUCCESS = 0,\n    XML_NO_ATTRIBUTE,\n    XML_WRONG_ATTRIBUTE_TYPE,\n    XML_ERROR_FILE_NOT_FOUND,\n    XML_ERROR_FILE_COULD_NOT_BE_OPENED,\n    XML_ERROR_FILE_READ_ERROR,\n    XML_ERROR_PARSING_ELEMENT,\n    XML_ERROR_PARSING_ATTRIBUTE,\n    XML_ERROR_PARSING_TEXT,\n    XML_ERROR_PARSING_CDATA,\n    XML_ERROR_PARSING_COMMENT,\n    XML_ERROR_PARSING_DECLARATION,\n    XML_ERROR_PARSING_UNKNOWN,\n    XML_ERROR_EMPTY_DOCUMENT,\n    XML_ERROR_MISMATCHED_ELEMENT,\n    XML_ERROR_PARSING,\n    XML_CAN_NOT_CONVERT_TEXT,\n    XML_NO_TEXT_NODE,\n\tXML_ELEMENT_DEPTH_EXCEEDED,\n\n\tXML_ERROR_COUNT\n};\n\n\n/*\n\tUtility functionality.\n*/\nclass TINYXML2_LIB XMLUtil\n{\npublic:\n    static const char* SkipWhiteSpace( const char* p, int* curLineNumPtr )\t{\n        TIXMLASSERT( p );\n\n        while( IsWhiteSpace(*p) ) {\n            if (curLineNumPtr && *p == '\\n') {\n                ++(*curLineNumPtr);\n            }\n            ++p;\n        }\n        TIXMLASSERT( p );\n        return p;\n    }\n    static char* SkipWhiteSpace( char* p, int* curLineNumPtr )\t\t\t\t{\n        return const_cast<char*>( SkipWhiteSpace( const_cast<const char*>(p), curLineNumPtr ) );\n    }\n\n    // Anything in the high order range of UTF-8 is assumed to not be whitespace. This isn't\n    // correct, but simple, and usually works.\n    static bool IsWhiteSpace( char p )\t\t\t\t\t{\n        return !IsUTF8Continuation(p) && isspace( static_cast<unsigned char>(p) );\n    }\n\n    inline static bool IsNameStartChar( unsigned char ch ) {\n        if ( ch >= 128 ) {\n            // This is a heuristic guess in attempt to not implement Unicode-aware isalpha()\n            return true;\n        }\n        if ( isalpha( ch ) ) {\n            return true;\n        }\n        return ch == ':' || ch == '_';\n    }\n\n    inline static bool IsNameChar( unsigned char ch ) {\n        return IsNameStartChar( ch )\n               || isdigit( ch )\n               || ch == '.'\n               || ch == '-';\n    }\n\n    inline static bool StringEqual( const char* p, const char* q, int nChar=INT_MAX )  {\n        if ( p == q ) {\n            return true;\n        }\n        TIXMLASSERT( p );\n        TIXMLASSERT( q );\n        TIXMLASSERT( nChar >= 0 );\n        return strncmp( p, q, nChar ) == 0;\n    }\n\n    inline static bool IsUTF8Continuation( char p ) {\n        return ( p & 0x80 ) != 0;\n    }\n\n    static const char* ReadBOM( const char* p, bool* hasBOM );\n    // p is the starting location,\n    // the UTF-8 value of the entity will be placed in value, and length filled in.\n    static const char* GetCharacterRef( const char* p, char* value, int* length );\n    static void ConvertUTF32ToUTF8( unsigned long input, char* output, int* length );\n\n    // converts primitive types to strings\n    static void ToStr( int v, char* buffer, int bufferSize );\n    static void ToStr( unsigned v, char* buffer, int bufferSize );\n    static void ToStr( bool v, char* buffer, int bufferSize );\n    static void ToStr( float v, char* buffer, int bufferSize );\n    static void ToStr( double v, char* buffer, int bufferSize );\n\tstatic void ToStr(int64_t v, char* buffer, int bufferSize);\n\n    // converts strings to primitive types\n    static bool\tToInt( const char* str, int* value );\n    static bool ToUnsigned( const char* str, unsigned* value );\n    static bool\tToBool( const char* str, bool* value );\n    static bool\tToFloat( const char* str, float* value );\n    static bool ToDouble( const char* str, double* value );\n\tstatic bool ToInt64(const char* str, int64_t* value);\n\n\t// Changes what is serialized for a boolean value.\n\t// Default to \"true\" and \"false\". Shouldn't be changed\n\t// unless you have a special testing or compatibility need.\n\t// Be careful: static, global, & not thread safe.\n\t// Be sure to set static const memory as parameters.\n\tstatic void SetBoolSerialization(const char* writeTrue, const char* writeFalse);\n\nprivate:\n\tstatic const char* writeBoolTrue;\n\tstatic const char* writeBoolFalse;\n};\n\n\n/** XMLNode is a base class for every object that is in the\n\tXML Document Object Model (DOM), except XMLAttributes.\n\tNodes have siblings, a parent, and children which can\n\tbe navigated. A node is always in a XMLDocument.\n\tThe type of a XMLNode can be queried, and it can\n\tbe cast to its more defined type.\n\n\tA XMLDocument allocates memory for all its Nodes.\n\tWhen the XMLDocument gets deleted, all its Nodes\n\twill also be deleted.\n\n\t@verbatim\n\tA Document can contain:\tElement\t(container or leaf)\n\t\t\t\t\t\t\tComment (leaf)\n\t\t\t\t\t\t\tUnknown (leaf)\n\t\t\t\t\t\t\tDeclaration( leaf )\n\n\tAn Element can contain:\tElement (container or leaf)\n\t\t\t\t\t\t\tText\t(leaf)\n\t\t\t\t\t\t\tAttributes (not on tree)\n\t\t\t\t\t\t\tComment (leaf)\n\t\t\t\t\t\t\tUnknown (leaf)\n\n\t@endverbatim\n*/\nclass TINYXML2_LIB XMLNode\n{\n    friend class XMLDocument;\n    friend class XMLElement;\npublic:\n\n    /// Get the XMLDocument that owns this XMLNode.\n    const XMLDocument* GetDocument() const\t{\n        TIXMLASSERT( _document );\n        return _document;\n    }\n    /// Get the XMLDocument that owns this XMLNode.\n    XMLDocument* GetDocument()\t\t\t\t{\n        TIXMLASSERT( _document );\n        return _document;\n    }\n\n    /// Safely cast to an Element, or null.\n    virtual XMLElement*\t\tToElement()\t\t{\n        return 0;\n    }\n    /// Safely cast to Text, or null.\n    virtual XMLText*\t\tToText()\t\t{\n        return 0;\n    }\n    /// Safely cast to a Comment, or null.\n    virtual XMLComment*\t\tToComment()\t\t{\n        return 0;\n    }\n    /// Safely cast to a Document, or null.\n    virtual XMLDocument*\tToDocument()\t{\n        return 0;\n    }\n    /// Safely cast to a Declaration, or null.\n    virtual XMLDeclaration*\tToDeclaration()\t{\n        return 0;\n    }\n    /// Safely cast to an Unknown, or null.\n    virtual XMLUnknown*\t\tToUnknown()\t\t{\n        return 0;\n    }\n\n    virtual const XMLElement*\t\tToElement() const\t\t{\n        return 0;\n    }\n    virtual const XMLText*\t\t\tToText() const\t\t\t{\n        return 0;\n    }\n    virtual const XMLComment*\t\tToComment() const\t\t{\n        return 0;\n    }\n    virtual const XMLDocument*\t\tToDocument() const\t\t{\n        return 0;\n    }\n    virtual const XMLDeclaration*\tToDeclaration() const\t{\n        return 0;\n    }\n    virtual const XMLUnknown*\t\tToUnknown() const\t\t{\n        return 0;\n    }\n\n    /** The meaning of 'value' changes for the specific type.\n    \t@verbatim\n    \tDocument:\tempty (NULL is returned, not an empty string)\n    \tElement:\tname of the element\n    \tComment:\tthe comment text\n    \tUnknown:\tthe tag contents\n    \tText:\t\tthe text string\n    \t@endverbatim\n    */\n    const char* Value() const;\n\n    /** Set the Value of an XML node.\n    \t@sa Value()\n    */\n    void SetValue( const char* val, bool staticMem=false );\n\n    /// Gets the line number the node is in, if the document was parsed from a file.\n    int GetLineNum() const { return _parseLineNum; }\n\n    /// Get the parent of this node on the DOM.\n    const XMLNode*\tParent() const\t\t\t{\n        return _parent;\n    }\n\n    XMLNode* Parent()\t\t\t\t\t\t{\n        return _parent;\n    }\n\n    /// Returns true if this node has no children.\n    bool NoChildren() const\t\t\t\t\t{\n        return !_firstChild;\n    }\n\n    /// Get the first child node, or null if none exists.\n    const XMLNode*  FirstChild() const\t\t{\n        return _firstChild;\n    }\n\n    XMLNode*\t\tFirstChild()\t\t\t{\n        return _firstChild;\n    }\n\n    /** Get the first child element, or optionally the first child\n        element with the specified name.\n    */\n    const XMLElement* FirstChildElement( const char* name = 0 ) const;\n\n    XMLElement* FirstChildElement( const char* name = 0 )\t{\n        return const_cast<XMLElement*>(const_cast<const XMLNode*>(this)->FirstChildElement( name ));\n    }\n\n    /// Get the last child node, or null if none exists.\n    const XMLNode*\tLastChild() const\t\t\t\t\t\t{\n        return _lastChild;\n    }\n\n    XMLNode*\t\tLastChild()\t\t\t\t\t\t\t\t{\n        return _lastChild;\n    }\n\n    /** Get the last child element or optionally the last child\n        element with the specified name.\n    */\n    const XMLElement* LastChildElement( const char* name = 0 ) const;\n\n    XMLElement* LastChildElement( const char* name = 0 )\t{\n        return const_cast<XMLElement*>(const_cast<const XMLNode*>(this)->LastChildElement(name) );\n    }\n\n    /// Get the previous (left) sibling node of this node.\n    const XMLNode*\tPreviousSibling() const\t\t\t\t\t{\n        return _prev;\n    }\n\n    XMLNode*\tPreviousSibling()\t\t\t\t\t\t\t{\n        return _prev;\n    }\n\n    /// Get the previous (left) sibling element of this node, with an optionally supplied name.\n    const XMLElement*\tPreviousSiblingElement( const char* name = 0 ) const ;\n\n    XMLElement*\tPreviousSiblingElement( const char* name = 0 ) {\n        return const_cast<XMLElement*>(const_cast<const XMLNode*>(this)->PreviousSiblingElement( name ) );\n    }\n\n    /// Get the next (right) sibling node of this node.\n    const XMLNode*\tNextSibling() const\t\t\t\t\t\t{\n        return _next;\n    }\n\n    XMLNode*\tNextSibling()\t\t\t\t\t\t\t\t{\n        return _next;\n    }\n\n    /// Get the next (right) sibling element of this node, with an optionally supplied name.\n    const XMLElement*\tNextSiblingElement( const char* name = 0 ) const;\n\n    XMLElement*\tNextSiblingElement( const char* name = 0 )\t{\n        return const_cast<XMLElement*>(const_cast<const XMLNode*>(this)->NextSiblingElement( name ) );\n    }\n\n    /**\n    \tAdd a child node as the last (right) child.\n\t\tIf the child node is already part of the document,\n\t\tit is moved from its old location to the new location.\n\t\tReturns the addThis argument or 0 if the node does not\n\t\tbelong to the same document.\n    */\n    XMLNode* InsertEndChild( XMLNode* addThis );\n\n    XMLNode* LinkEndChild( XMLNode* addThis )\t{\n        return InsertEndChild( addThis );\n    }\n    /**\n    \tAdd a child node as the first (left) child.\n\t\tIf the child node is already part of the document,\n\t\tit is moved from its old location to the new location.\n\t\tReturns the addThis argument or 0 if the node does not\n\t\tbelong to the same document.\n    */\n    XMLNode* InsertFirstChild( XMLNode* addThis );\n    /**\n    \tAdd a node after the specified child node.\n\t\tIf the child node is already part of the document,\n\t\tit is moved from its old location to the new location.\n\t\tReturns the addThis argument or 0 if the afterThis node\n\t\tis not a child of this node, or if the node does not\n\t\tbelong to the same document.\n    */\n    XMLNode* InsertAfterChild( XMLNode* afterThis, XMLNode* addThis );\n\n    /**\n    \tDelete all the children of this node.\n    */\n    void DeleteChildren();\n\n    /**\n    \tDelete a child of this node.\n    */\n    void DeleteChild( XMLNode* node );\n\n    /**\n    \tMake a copy of this node, but not its children.\n    \tYou may pass in a Document pointer that will be\n    \tthe owner of the new Node. If the 'document' is\n    \tnull, then the node returned will be allocated\n    \tfrom the current Document. (this->GetDocument())\n\n    \tNote: if called on a XMLDocument, this will return null.\n    */\n    virtual XMLNode* ShallowClone( XMLDocument* document ) const = 0;\n\n\t/**\n\t\tMake a copy of this node and all its children.\n\n\t\tIf the 'target' is null, then the nodes will\n\t\tbe allocated in the current document. If 'target'\n        is specified, the memory will be allocated is the\n        specified XMLDocument.\n\n\t\tNOTE: This is probably not the correct tool to\n\t\tcopy a document, since XMLDocuments can have multiple\n\t\ttop level XMLNodes. You probably want to use\n        XMLDocument::DeepCopy()\n\t*/\n\tXMLNode* DeepClone( XMLDocument* target ) const;\n\n    /**\n    \tTest if 2 nodes are the same, but don't test children.\n    \tThe 2 nodes do not need to be in the same Document.\n\n    \tNote: if called on a XMLDocument, this will return false.\n    */\n    virtual bool ShallowEqual( const XMLNode* compare ) const = 0;\n\n    /** Accept a hierarchical visit of the nodes in the TinyXML-2 DOM. Every node in the\n    \tXML tree will be conditionally visited and the host will be called back\n    \tvia the XMLVisitor interface.\n\n    \tThis is essentially a SAX interface for TinyXML-2. (Note however it doesn't re-parse\n    \tthe XML for the callbacks, so the performance of TinyXML-2 is unchanged by using this\n    \tinterface versus any other.)\n\n    \tThe interface has been based on ideas from:\n\n    \t- http://www.saxproject.org/\n    \t- http://c2.com/cgi/wiki?HierarchicalVisitorPattern\n\n    \tWhich are both good references for \"visiting\".\n\n    \tAn example of using Accept():\n    \t@verbatim\n    \tXMLPrinter printer;\n    \ttinyxmlDoc.Accept( &printer );\n    \tconst char* xmlcstr = printer.CStr();\n    \t@endverbatim\n    */\n    virtual bool Accept( XMLVisitor* visitor ) const = 0;\n\n\t/**\n\t\tSet user data into the XMLNode. TinyXML-2 in\n\t\tno way processes or interprets user data.\n\t\tIt is initially 0.\n\t*/\n\tvoid SetUserData(void* userData)\t{ _userData = userData; }\n\n\t/**\n\t\tGet user data set into the XMLNode. TinyXML-2 in\n\t\tno way processes or interprets user data.\n\t\tIt is initially 0.\n\t*/\n\tvoid* GetUserData() const\t\t\t{ return _userData; }\n\nprotected:\n    XMLNode( XMLDocument* );\n    virtual ~XMLNode();\n\n    virtual char* ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr);\n\n    XMLDocument*\t_document;\n    XMLNode*\t\t_parent;\n    mutable StrPair\t_value;\n    int             _parseLineNum;\n\n    XMLNode*\t\t_firstChild;\n    XMLNode*\t\t_lastChild;\n\n    XMLNode*\t\t_prev;\n    XMLNode*\t\t_next;\n\n\tvoid*\t\t\t_userData;\n\nprivate:\n    MemPool*\t\t_memPool;\n    void Unlink( XMLNode* child );\n    static void DeleteNode( XMLNode* node );\n    void InsertChildPreamble( XMLNode* insertThis ) const;\n    const XMLElement* ToElementWithName( const char* name ) const;\n\n    XMLNode( const XMLNode& );\t// not supported\n    XMLNode& operator=( const XMLNode& );\t// not supported\n};\n\n\n/** XML text.\n\n\tNote that a text node can have child element nodes, for example:\n\t@verbatim\n\t<root>This is <b>bold</b></root>\n\t@endverbatim\n\n\tA text node can have 2 ways to output the next. \"normal\" output\n\tand CDATA. It will default to the mode it was parsed from the XML file and\n\tyou generally want to leave it alone, but you can change the output mode with\n\tSetCData() and query it with CData().\n*/\nclass TINYXML2_LIB XMLText : public XMLNode\n{\n    friend class XMLDocument;\npublic:\n    virtual bool Accept( XMLVisitor* visitor ) const;\n\n    virtual XMLText* ToText()\t\t\t{\n        return this;\n    }\n    virtual const XMLText* ToText() const\t{\n        return this;\n    }\n\n    /// Declare whether this should be CDATA or standard text.\n    void SetCData( bool isCData )\t\t\t{\n        _isCData = isCData;\n    }\n    /// Returns true if this is a CDATA text element.\n    bool CData() const\t\t\t\t\t\t{\n        return _isCData;\n    }\n\n    virtual XMLNode* ShallowClone( XMLDocument* document ) const;\n    virtual bool ShallowEqual( const XMLNode* compare ) const;\n\nprotected:\n    XMLText( XMLDocument* doc )\t: XMLNode( doc ), _isCData( false )\t{}\n    virtual ~XMLText()\t\t\t\t\t\t\t\t\t\t\t\t{}\n\n    char* ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr );\n\nprivate:\n    bool _isCData;\n\n    XMLText( const XMLText& );\t// not supported\n    XMLText& operator=( const XMLText& );\t// not supported\n};\n\n\n/** An XML Comment. */\nclass TINYXML2_LIB XMLComment : public XMLNode\n{\n    friend class XMLDocument;\npublic:\n    virtual XMLComment*\tToComment()\t\t\t\t\t{\n        return this;\n    }\n    virtual const XMLComment* ToComment() const\t\t{\n        return this;\n    }\n\n    virtual bool Accept( XMLVisitor* visitor ) const;\n\n    virtual XMLNode* ShallowClone( XMLDocument* document ) const;\n    virtual bool ShallowEqual( const XMLNode* compare ) const;\n\nprotected:\n    XMLComment( XMLDocument* doc );\n    virtual ~XMLComment();\n\n    char* ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr);\n\nprivate:\n    XMLComment( const XMLComment& );\t// not supported\n    XMLComment& operator=( const XMLComment& );\t// not supported\n};\n\n\n/** In correct XML the declaration is the first entry in the file.\n\t@verbatim\n\t\t<?xml version=\"1.0\" standalone=\"yes\"?>\n\t@endverbatim\n\n\tTinyXML-2 will happily read or write files without a declaration,\n\thowever.\n\n\tThe text of the declaration isn't interpreted. It is parsed\n\tand written as a string.\n*/\nclass TINYXML2_LIB XMLDeclaration : public XMLNode\n{\n    friend class XMLDocument;\npublic:\n    virtual XMLDeclaration*\tToDeclaration()\t\t\t\t\t{\n        return this;\n    }\n    virtual const XMLDeclaration* ToDeclaration() const\t\t{\n        return this;\n    }\n\n    virtual bool Accept( XMLVisitor* visitor ) const;\n\n    virtual XMLNode* ShallowClone( XMLDocument* document ) const;\n    virtual bool ShallowEqual( const XMLNode* compare ) const;\n\nprotected:\n    XMLDeclaration( XMLDocument* doc );\n    virtual ~XMLDeclaration();\n\n    char* ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr );\n\nprivate:\n    XMLDeclaration( const XMLDeclaration& );\t// not supported\n    XMLDeclaration& operator=( const XMLDeclaration& );\t// not supported\n};\n\n\n/** Any tag that TinyXML-2 doesn't recognize is saved as an\n\tunknown. It is a tag of text, but should not be modified.\n\tIt will be written back to the XML, unchanged, when the file\n\tis saved.\n\n\tDTD tags get thrown into XMLUnknowns.\n*/\nclass TINYXML2_LIB XMLUnknown : public XMLNode\n{\n    friend class XMLDocument;\npublic:\n    virtual XMLUnknown*\tToUnknown()\t\t\t\t\t{\n        return this;\n    }\n    virtual const XMLUnknown* ToUnknown() const\t\t{\n        return this;\n    }\n\n    virtual bool Accept( XMLVisitor* visitor ) const;\n\n    virtual XMLNode* ShallowClone( XMLDocument* document ) const;\n    virtual bool ShallowEqual( const XMLNode* compare ) const;\n\nprotected:\n    XMLUnknown( XMLDocument* doc );\n    virtual ~XMLUnknown();\n\n    char* ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr );\n\nprivate:\n    XMLUnknown( const XMLUnknown& );\t// not supported\n    XMLUnknown& operator=( const XMLUnknown& );\t// not supported\n};\n\n\n\n/** An attribute is a name-value pair. Elements have an arbitrary\n\tnumber of attributes, each with a unique name.\n\n\t@note The attributes are not XMLNodes. You may only query the\n\tNext() attribute in a list.\n*/\nclass TINYXML2_LIB XMLAttribute\n{\n    friend class XMLElement;\npublic:\n    /// The name of the attribute.\n    const char* Name() const;\n\n    /// The value of the attribute.\n    const char* Value() const;\n\n    /// Gets the line number the attribute is in, if the document was parsed from a file.\n    int GetLineNum() const { return _parseLineNum; }\n\n    /// The next attribute in the list.\n    const XMLAttribute* Next() const {\n        return _next;\n    }\n\n    /** IntValue interprets the attribute as an integer, and returns the value.\n        If the value isn't an integer, 0 will be returned. There is no error checking;\n    \tuse QueryIntValue() if you need error checking.\n    */\n\tint\tIntValue() const {\n\t\tint i = 0;\n\t\tQueryIntValue(&i);\n\t\treturn i;\n\t}\n\n\tint64_t Int64Value() const {\n\t\tint64_t i = 0;\n\t\tQueryInt64Value(&i);\n\t\treturn i;\n\t}\n\n    /// Query as an unsigned integer. See IntValue()\n    unsigned UnsignedValue() const\t\t\t{\n        unsigned i=0;\n        QueryUnsignedValue( &i );\n        return i;\n    }\n    /// Query as a boolean. See IntValue()\n    bool\t BoolValue() const\t\t\t\t{\n        bool b=false;\n        QueryBoolValue( &b );\n        return b;\n    }\n    /// Query as a double. See IntValue()\n    double \t DoubleValue() const\t\t\t{\n        double d=0;\n        QueryDoubleValue( &d );\n        return d;\n    }\n    /// Query as a float. See IntValue()\n    float\t FloatValue() const\t\t\t\t{\n        float f=0;\n        QueryFloatValue( &f );\n        return f;\n    }\n\n    /** QueryIntValue interprets the attribute as an integer, and returns the value\n    \tin the provided parameter. The function will return XML_SUCCESS on success,\n    \tand XML_WRONG_ATTRIBUTE_TYPE if the conversion is not successful.\n    */\n    XMLError QueryIntValue( int* value ) const;\n    /// See QueryIntValue\n    XMLError QueryUnsignedValue( unsigned int* value ) const;\n\t/// See QueryIntValue\n\tXMLError QueryInt64Value(int64_t* value) const;\n\t/// See QueryIntValue\n    XMLError QueryBoolValue( bool* value ) const;\n    /// See QueryIntValue\n    XMLError QueryDoubleValue( double* value ) const;\n    /// See QueryIntValue\n    XMLError QueryFloatValue( float* value ) const;\n\n    /// Set the attribute to a string value.\n    void SetAttribute( const char* value );\n    /// Set the attribute to value.\n    void SetAttribute( int value );\n    /// Set the attribute to value.\n    void SetAttribute( unsigned value );\n\t/// Set the attribute to value.\n\tvoid SetAttribute(int64_t value);\n\t/// Set the attribute to value.\n    void SetAttribute( bool value );\n    /// Set the attribute to value.\n    void SetAttribute( double value );\n    /// Set the attribute to value.\n    void SetAttribute( float value );\n\nprivate:\n    enum { BUF_SIZE = 200 };\n\n    XMLAttribute() : _name(), _value(),_parseLineNum( 0 ), _next( 0 ), _memPool( 0 ) {}\n    virtual ~XMLAttribute()\t{}\n\n    XMLAttribute( const XMLAttribute& );\t// not supported\n    void operator=( const XMLAttribute& );\t// not supported\n    void SetName( const char* name );\n\n    char* ParseDeep( char* p, bool processEntities, int* curLineNumPtr );\n\n    mutable StrPair _name;\n    mutable StrPair _value;\n    int             _parseLineNum;\n    XMLAttribute*   _next;\n    MemPool*        _memPool;\n};\n\n\n/** The element is a container class. It has a value, the element name,\n\tand can contain other elements, text, comments, and unknowns.\n\tElements also contain an arbitrary number of attributes.\n*/\nclass TINYXML2_LIB XMLElement : public XMLNode\n{\n    friend class XMLDocument;\npublic:\n    /// Get the name of an element (which is the Value() of the node.)\n    const char* Name() const\t\t{\n        return Value();\n    }\n    /// Set the name of the element.\n    void SetName( const char* str, bool staticMem=false )\t{\n        SetValue( str, staticMem );\n    }\n\n    virtual XMLElement* ToElement()\t\t\t\t{\n        return this;\n    }\n    virtual const XMLElement* ToElement() const {\n        return this;\n    }\n    virtual bool Accept( XMLVisitor* visitor ) const;\n\n    /** Given an attribute name, Attribute() returns the value\n    \tfor the attribute of that name, or null if none\n    \texists. For example:\n\n    \t@verbatim\n    \tconst char* value = ele->Attribute( \"foo\" );\n    \t@endverbatim\n\n    \tThe 'value' parameter is normally null. However, if specified,\n    \tthe attribute will only be returned if the 'name' and 'value'\n    \tmatch. This allow you to write code:\n\n    \t@verbatim\n    \tif ( ele->Attribute( \"foo\", \"bar\" ) ) callFooIsBar();\n    \t@endverbatim\n\n    \trather than:\n    \t@verbatim\n    \tif ( ele->Attribute( \"foo\" ) ) {\n    \t\tif ( strcmp( ele->Attribute( \"foo\" ), \"bar\" ) == 0 ) callFooIsBar();\n    \t}\n    \t@endverbatim\n    */\n    const char* Attribute( const char* name, const char* value=0 ) const;\n\n    /** Given an attribute name, IntAttribute() returns the value\n    \tof the attribute interpreted as an integer. The default\n        value will be returned if the attribute isn't present,\n        or if there is an error. (For a method with error\n    \tchecking, see QueryIntAttribute()).\n    */\n\tint IntAttribute(const char* name, int defaultValue = 0) const;\n    /// See IntAttribute()\n\tunsigned UnsignedAttribute(const char* name, unsigned defaultValue = 0) const;\n\t/// See IntAttribute()\n\tint64_t Int64Attribute(const char* name, int64_t defaultValue = 0) const;\n\t/// See IntAttribute()\n\tbool BoolAttribute(const char* name, bool defaultValue = false) const;\n    /// See IntAttribute()\n\tdouble DoubleAttribute(const char* name, double defaultValue = 0) const;\n    /// See IntAttribute()\n\tfloat FloatAttribute(const char* name, float defaultValue = 0) const;\n\n    /** Given an attribute name, QueryIntAttribute() returns\n    \tXML_SUCCESS, XML_WRONG_ATTRIBUTE_TYPE if the conversion\n    \tcan't be performed, or XML_NO_ATTRIBUTE if the attribute\n    \tdoesn't exist. If successful, the result of the conversion\n    \twill be written to 'value'. If not successful, nothing will\n    \tbe written to 'value'. This allows you to provide default\n    \tvalue:\n\n    \t@verbatim\n    \tint value = 10;\n    \tQueryIntAttribute( \"foo\", &value );\t\t// if \"foo\" isn't found, value will still be 10\n    \t@endverbatim\n    */\n    XMLError QueryIntAttribute( const char* name, int* value ) const\t\t\t\t{\n        const XMLAttribute* a = FindAttribute( name );\n        if ( !a ) {\n            return XML_NO_ATTRIBUTE;\n        }\n        return a->QueryIntValue( value );\n    }\n\n\t/// See QueryIntAttribute()\n    XMLError QueryUnsignedAttribute( const char* name, unsigned int* value ) const\t{\n        const XMLAttribute* a = FindAttribute( name );\n        if ( !a ) {\n            return XML_NO_ATTRIBUTE;\n        }\n        return a->QueryUnsignedValue( value );\n    }\n\n\t/// See QueryIntAttribute()\n\tXMLError QueryInt64Attribute(const char* name, int64_t* value) const {\n\t\tconst XMLAttribute* a = FindAttribute(name);\n\t\tif (!a) {\n\t\t\treturn XML_NO_ATTRIBUTE;\n\t\t}\n\t\treturn a->QueryInt64Value(value);\n\t}\n\n\t/// See QueryIntAttribute()\n    XMLError QueryBoolAttribute( const char* name, bool* value ) const\t\t\t\t{\n        const XMLAttribute* a = FindAttribute( name );\n        if ( !a ) {\n            return XML_NO_ATTRIBUTE;\n        }\n        return a->QueryBoolValue( value );\n    }\n    /// See QueryIntAttribute()\n    XMLError QueryDoubleAttribute( const char* name, double* value ) const\t\t\t{\n        const XMLAttribute* a = FindAttribute( name );\n        if ( !a ) {\n            return XML_NO_ATTRIBUTE;\n        }\n        return a->QueryDoubleValue( value );\n    }\n    /// See QueryIntAttribute()\n    XMLError QueryFloatAttribute( const char* name, float* value ) const\t\t\t{\n        const XMLAttribute* a = FindAttribute( name );\n        if ( !a ) {\n            return XML_NO_ATTRIBUTE;\n        }\n        return a->QueryFloatValue( value );\n    }\n\n\t/// See QueryIntAttribute()\n\tXMLError QueryStringAttribute(const char* name, const char** value) const {\n\t\tconst XMLAttribute* a = FindAttribute(name);\n\t\tif (!a) {\n\t\t\treturn XML_NO_ATTRIBUTE;\n\t\t}\n\t\t*value = a->Value();\n\t\treturn XML_SUCCESS;\n\t}\n\n\n\n    /** Given an attribute name, QueryAttribute() returns\n    \tXML_SUCCESS, XML_WRONG_ATTRIBUTE_TYPE if the conversion\n    \tcan't be performed, or XML_NO_ATTRIBUTE if the attribute\n    \tdoesn't exist. It is overloaded for the primitive types,\n\t\tand is a generally more convenient replacement of\n\t\tQueryIntAttribute() and related functions.\n\n\t\tIf successful, the result of the conversion\n    \twill be written to 'value'. If not successful, nothing will\n    \tbe written to 'value'. This allows you to provide default\n    \tvalue:\n\n    \t@verbatim\n    \tint value = 10;\n    \tQueryAttribute( \"foo\", &value );\t\t// if \"foo\" isn't found, value will still be 10\n    \t@endverbatim\n    */\n\tXMLError QueryAttribute( const char* name, int* value ) const {\n\t\treturn QueryIntAttribute( name, value );\n\t}\n\n\tXMLError QueryAttribute( const char* name, unsigned int* value ) const {\n\t\treturn QueryUnsignedAttribute( name, value );\n\t}\n\n\tXMLError QueryAttribute(const char* name, int64_t* value) const {\n\t\treturn QueryInt64Attribute(name, value);\n\t}\n\n\tXMLError QueryAttribute( const char* name, bool* value ) const {\n\t\treturn QueryBoolAttribute( name, value );\n\t}\n\n\tXMLError QueryAttribute( const char* name, double* value ) const {\n\t\treturn QueryDoubleAttribute( name, value );\n\t}\n\n\tXMLError QueryAttribute( const char* name, float* value ) const {\n\t\treturn QueryFloatAttribute( name, value );\n\t}\n\n\t/// Sets the named attribute to value.\n    void SetAttribute( const char* name, const char* value )\t{\n        XMLAttribute* a = FindOrCreateAttribute( name );\n        a->SetAttribute( value );\n    }\n    /// Sets the named attribute to value.\n    void SetAttribute( const char* name, int value )\t\t\t{\n        XMLAttribute* a = FindOrCreateAttribute( name );\n        a->SetAttribute( value );\n    }\n    /// Sets the named attribute to value.\n    void SetAttribute( const char* name, unsigned value )\t\t{\n        XMLAttribute* a = FindOrCreateAttribute( name );\n        a->SetAttribute( value );\n    }\n\n\t/// Sets the named attribute to value.\n\tvoid SetAttribute(const char* name, int64_t value) {\n\t\tXMLAttribute* a = FindOrCreateAttribute(name);\n\t\ta->SetAttribute(value);\n\t}\n\n\t/// Sets the named attribute to value.\n    void SetAttribute( const char* name, bool value )\t\t\t{\n        XMLAttribute* a = FindOrCreateAttribute( name );\n        a->SetAttribute( value );\n    }\n    /// Sets the named attribute to value.\n    void SetAttribute( const char* name, double value )\t\t{\n        XMLAttribute* a = FindOrCreateAttribute( name );\n        a->SetAttribute( value );\n    }\n    /// Sets the named attribute to value.\n    void SetAttribute( const char* name, float value )\t\t{\n        XMLAttribute* a = FindOrCreateAttribute( name );\n        a->SetAttribute( value );\n    }\n\n    /**\n    \tDelete an attribute.\n    */\n    void DeleteAttribute( const char* name );\n\n    /// Return the first attribute in the list.\n    const XMLAttribute* FirstAttribute() const {\n        return _rootAttribute;\n    }\n    /// Query a specific attribute in the list.\n    const XMLAttribute* FindAttribute( const char* name ) const;\n\n    /** Convenience function for easy access to the text inside an element. Although easy\n    \tand concise, GetText() is limited compared to getting the XMLText child\n    \tand accessing it directly.\n\n    \tIf the first child of 'this' is a XMLText, the GetText()\n    \treturns the character string of the Text node, else null is returned.\n\n    \tThis is a convenient method for getting the text of simple contained text:\n    \t@verbatim\n    \t<foo>This is text</foo>\n    \t\tconst char* str = fooElement->GetText();\n    \t@endverbatim\n\n    \t'str' will be a pointer to \"This is text\".\n\n    \tNote that this function can be misleading. If the element foo was created from\n    \tthis XML:\n    \t@verbatim\n    \t\t<foo><b>This is text</b></foo>\n    \t@endverbatim\n\n    \tthen the value of str would be null. The first child node isn't a text node, it is\n    \tanother element. From this XML:\n    \t@verbatim\n    \t\t<foo>This is <b>text</b></foo>\n    \t@endverbatim\n    \tGetText() will return \"This is \".\n    */\n    const char* GetText() const;\n\n    /** Convenience function for easy access to the text inside an element. Although easy\n    \tand concise, SetText() is limited compared to creating an XMLText child\n    \tand mutating it directly.\n\n    \tIf the first child of 'this' is a XMLText, SetText() sets its value to\n\t\tthe given string, otherwise it will create a first child that is an XMLText.\n\n    \tThis is a convenient method for setting the text of simple contained text:\n    \t@verbatim\n    \t<foo>This is text</foo>\n    \t\tfooElement->SetText( \"Hullaballoo!\" );\n     \t<foo>Hullaballoo!</foo>\n\t\t@endverbatim\n\n    \tNote that this function can be misleading. If the element foo was created from\n    \tthis XML:\n    \t@verbatim\n    \t\t<foo><b>This is text</b></foo>\n    \t@endverbatim\n\n    \tthen it will not change \"This is text\", but rather prefix it with a text element:\n    \t@verbatim\n    \t\t<foo>Hullaballoo!<b>This is text</b></foo>\n    \t@endverbatim\n\n\t\tFor this XML:\n    \t@verbatim\n    \t\t<foo />\n    \t@endverbatim\n    \tSetText() will generate\n    \t@verbatim\n    \t\t<foo>Hullaballoo!</foo>\n    \t@endverbatim\n    */\n\tvoid SetText( const char* inText );\n    /// Convenience method for setting text inside an element. See SetText() for important limitations.\n    void SetText( int value );\n    /// Convenience method for setting text inside an element. See SetText() for important limitations.\n    void SetText( unsigned value );\n\t/// Convenience method for setting text inside an element. See SetText() for important limitations.\n\tvoid SetText(int64_t value);\n\t/// Convenience method for setting text inside an element. See SetText() for important limitations.\n    void SetText( bool value );\n    /// Convenience method for setting text inside an element. See SetText() for important limitations.\n    void SetText( double value );\n    /// Convenience method for setting text inside an element. See SetText() for important limitations.\n    void SetText( float value );\n\n    /**\n    \tConvenience method to query the value of a child text node. This is probably best\n    \tshown by example. Given you have a document is this form:\n    \t@verbatim\n    \t\t<point>\n    \t\t\t<x>1</x>\n    \t\t\t<y>1.4</y>\n    \t\t</point>\n    \t@endverbatim\n\n    \tThe QueryIntText() and similar functions provide a safe and easier way to get to the\n    \t\"value\" of x and y.\n\n    \t@verbatim\n    \t\tint x = 0;\n    \t\tfloat y = 0;\t// types of x and y are contrived for example\n    \t\tconst XMLElement* xElement = pointElement->FirstChildElement( \"x\" );\n    \t\tconst XMLElement* yElement = pointElement->FirstChildElement( \"y\" );\n    \t\txElement->QueryIntText( &x );\n    \t\tyElement->QueryFloatText( &y );\n    \t@endverbatim\n\n    \t@returns XML_SUCCESS (0) on success, XML_CAN_NOT_CONVERT_TEXT if the text cannot be converted\n    \t\t\t to the requested type, and XML_NO_TEXT_NODE if there is no child text to query.\n\n    */\n    XMLError QueryIntText( int* ival ) const;\n    /// See QueryIntText()\n    XMLError QueryUnsignedText( unsigned* uval ) const;\n\t/// See QueryIntText()\n\tXMLError QueryInt64Text(int64_t* uval) const;\n\t/// See QueryIntText()\n    XMLError QueryBoolText( bool* bval ) const;\n    /// See QueryIntText()\n    XMLError QueryDoubleText( double* dval ) const;\n    /// See QueryIntText()\n    XMLError QueryFloatText( float* fval ) const;\n\n\tint IntText(int defaultValue = 0) const;\n\n\t/// See QueryIntText()\n\tunsigned UnsignedText(unsigned defaultValue = 0) const;\n\t/// See QueryIntText()\n\tint64_t Int64Text(int64_t defaultValue = 0) const;\n\t/// See QueryIntText()\n\tbool BoolText(bool defaultValue = false) const;\n\t/// See QueryIntText()\n\tdouble DoubleText(double defaultValue = 0) const;\n\t/// See QueryIntText()\n\tfloat FloatText(float defaultValue = 0) const;\n\n    // internal:\n    enum ElementClosingType {\n        OPEN,\t\t// <foo>\n        CLOSED,\t\t// <foo/>\n        CLOSING\t\t// </foo>\n    };\n    ElementClosingType ClosingType() const {\n        return _closingType;\n    }\n    virtual XMLNode* ShallowClone( XMLDocument* document ) const;\n    virtual bool ShallowEqual( const XMLNode* compare ) const;\n\nprotected:\n    char* ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr );\n\nprivate:\n    XMLElement( XMLDocument* doc );\n    virtual ~XMLElement();\n    XMLElement( const XMLElement& );\t// not supported\n    void operator=( const XMLElement& );\t// not supported\n\n    XMLAttribute* FindOrCreateAttribute( const char* name );\n    char* ParseAttributes( char* p, int* curLineNumPtr );\n    static void DeleteAttribute( XMLAttribute* attribute );\n    XMLAttribute* CreateAttribute();\n\n    enum { BUF_SIZE = 200 };\n    ElementClosingType _closingType;\n    // The attribute list is ordered; there is no 'lastAttribute'\n    // because the list needs to be scanned for dupes before adding\n    // a new attribute.\n    XMLAttribute* _rootAttribute;\n};\n\n\nenum Whitespace {\n    PRESERVE_WHITESPACE,\n    COLLAPSE_WHITESPACE\n};\n\n\n/** A Document binds together all the functionality.\n\tIt can be saved, loaded, and printed to the screen.\n\tAll Nodes are connected and allocated to a Document.\n\tIf the Document is deleted, all its Nodes are also deleted.\n*/\nclass TINYXML2_LIB XMLDocument : public XMLNode\n{\n    friend class XMLElement;\n    // Gives access to SetError and Push/PopDepth, but over-access for everything else.\n    // Wishing C++ had \"internal\" scope.\n    friend class XMLNode;\n    friend class XMLText;\n    friend class XMLComment;\n    friend class XMLDeclaration;\n    friend class XMLUnknown;\npublic:\n    /// constructor\n    XMLDocument( bool processEntities = true, Whitespace whitespaceMode = PRESERVE_WHITESPACE );\n    ~XMLDocument();\n\n    virtual XMLDocument* ToDocument()\t\t\t\t{\n        TIXMLASSERT( this == _document );\n        return this;\n    }\n    virtual const XMLDocument* ToDocument() const\t{\n        TIXMLASSERT( this == _document );\n        return this;\n    }\n\n    /**\n    \tParse an XML file from a character string.\n    \tReturns XML_SUCCESS (0) on success, or\n    \tan errorID.\n\n    \tYou may optionally pass in the 'nBytes', which is\n    \tthe number of bytes which will be parsed. If not\n    \tspecified, TinyXML-2 will assume 'xml' points to a\n    \tnull terminated string.\n    */\n    XMLError Parse( const char* xml, size_t nBytes=(size_t)(-1) );\n\n    /**\n    \tLoad an XML file from disk.\n    \tReturns XML_SUCCESS (0) on success, or\n    \tan errorID.\n    */\n    XMLError LoadFile( const char* filename );\n\n    /**\n    \tLoad an XML file from disk. You are responsible\n    \tfor providing and closing the FILE*.\n\n        NOTE: The file should be opened as binary (\"rb\")\n        not text in order for TinyXML-2 to correctly\n        do newline normalization.\n\n    \tReturns XML_SUCCESS (0) on success, or\n    \tan errorID.\n    */\n    XMLError LoadFile( FILE* );\n\n    /**\n    \tSave the XML file to disk.\n    \tReturns XML_SUCCESS (0) on success, or\n    \tan errorID.\n    */\n    XMLError SaveFile( const char* filename, bool compact = false );\n\n    /**\n    \tSave the XML file to disk. You are responsible\n    \tfor providing and closing the FILE*.\n\n    \tReturns XML_SUCCESS (0) on success, or\n    \tan errorID.\n    */\n    XMLError SaveFile( FILE* fp, bool compact = false );\n\n    bool ProcessEntities() const\t\t{\n        return _processEntities;\n    }\n    Whitespace WhitespaceMode() const\t{\n        return _whitespaceMode;\n    }\n\n    /**\n    \tReturns true if this document has a leading Byte Order Mark of UTF8.\n    */\n    bool HasBOM() const {\n        return _writeBOM;\n    }\n    /** Sets whether to write the BOM when writing the file.\n    */\n    void SetBOM( bool useBOM ) {\n        _writeBOM = useBOM;\n    }\n\n    /** Return the root element of DOM. Equivalent to FirstChildElement().\n        To get the first node, use FirstChild().\n    */\n    XMLElement* RootElement()\t\t\t\t{\n        return FirstChildElement();\n    }\n    const XMLElement* RootElement() const\t{\n        return FirstChildElement();\n    }\n\n    /** Print the Document. If the Printer is not provided, it will\n        print to stdout. If you provide Printer, this can print to a file:\n    \t@verbatim\n    \tXMLPrinter printer( fp );\n    \tdoc.Print( &printer );\n    \t@endverbatim\n\n    \tOr you can use a printer to print to memory:\n    \t@verbatim\n    \tXMLPrinter printer;\n    \tdoc.Print( &printer );\n    \t// printer.CStr() has a const char* to the XML\n    \t@endverbatim\n    */\n    void Print( XMLPrinter* streamer=0 ) const;\n    virtual bool Accept( XMLVisitor* visitor ) const;\n\n    /**\n    \tCreate a new Element associated with\n    \tthis Document. The memory for the Element\n    \tis managed by the Document.\n    */\n    XMLElement* NewElement( const char* name );\n    /**\n    \tCreate a new Comment associated with\n    \tthis Document. The memory for the Comment\n    \tis managed by the Document.\n    */\n    XMLComment* NewComment( const char* comment );\n    /**\n    \tCreate a new Text associated with\n    \tthis Document. The memory for the Text\n    \tis managed by the Document.\n    */\n    XMLText* NewText( const char* text );\n    /**\n    \tCreate a new Declaration associated with\n    \tthis Document. The memory for the object\n    \tis managed by the Document.\n\n    \tIf the 'text' param is null, the standard\n    \tdeclaration is used.:\n    \t@verbatim\n    \t\t<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n    \t@endverbatim\n    */\n    XMLDeclaration* NewDeclaration( const char* text=0 );\n    /**\n    \tCreate a new Unknown associated with\n    \tthis Document. The memory for the object\n    \tis managed by the Document.\n    */\n    XMLUnknown* NewUnknown( const char* text );\n\n    /**\n    \tDelete a node associated with this document.\n    \tIt will be unlinked from the DOM.\n    */\n    void DeleteNode( XMLNode* node );\n\n    void ClearError() {\n        SetError(XML_SUCCESS, 0, 0);\n    }\n\n    /// Return true if there was an error parsing the document.\n    bool Error() const {\n        return _errorID != XML_SUCCESS;\n    }\n    /// Return the errorID.\n    XMLError  ErrorID() const {\n        return _errorID;\n    }\n\tconst char* ErrorName() const;\n    static const char* ErrorIDToName(XMLError errorID);\n\n    /** Returns a \"long form\" error description. A hopefully helpful\n        diagnostic with location, line number, and/or additional info.\n    */\n\tconst char* ErrorStr() const;\n\n    /// A (trivial) utility function that prints the ErrorStr() to stdout.\n    void PrintError() const;\n\n    /// Return the line where the error occurred, or zero if unknown.\n    int ErrorLineNum() const\n    {\n        return _errorLineNum;\n    }\n\n    /// Clear the document, resetting it to the initial state.\n    void Clear();\n\n\t/**\n\t\tCopies this document to a target document.\n\t\tThe target will be completely cleared before the copy.\n\t\tIf you want to copy a sub-tree, see XMLNode::DeepClone().\n\n\t\tNOTE: that the 'target' must be non-null.\n\t*/\n\tvoid DeepCopy(XMLDocument* target) const;\n\n\t// internal\n    char* Identify( char* p, XMLNode** node );\n\n\t// internal\n\tvoid MarkInUse(XMLNode*);\n\n    virtual XMLNode* ShallowClone( XMLDocument* /*document*/ ) const\t{\n        return 0;\n    }\n    virtual bool ShallowEqual( const XMLNode* /*compare*/ ) const\t{\n        return false;\n    }\n\nprivate:\n    XMLDocument( const XMLDocument& );\t// not supported\n    void operator=( const XMLDocument& );\t// not supported\n\n    bool\t\t\t_writeBOM;\n    bool\t\t\t_processEntities;\n    XMLError\t\t_errorID;\n    Whitespace\t\t_whitespaceMode;\n    mutable StrPair\t_errorStr;\n    int             _errorLineNum;\n    char*\t\t\t_charBuffer;\n    int\t\t\t\t_parseCurLineNum;\n\tint\t\t\t\t_parsingDepth;\n\t// Memory tracking does add some overhead.\n\t// However, the code assumes that you don't\n\t// have a bunch of unlinked nodes around.\n\t// Therefore it takes less memory to track\n\t// in the document vs. a linked list in the XMLNode,\n\t// and the performance is the same.\n\tDynArray<XMLNode*, 10> _unlinked;\n\n    MemPoolT< sizeof(XMLElement) >\t _elementPool;\n    MemPoolT< sizeof(XMLAttribute) > _attributePool;\n    MemPoolT< sizeof(XMLText) >\t\t _textPool;\n    MemPoolT< sizeof(XMLComment) >\t _commentPool;\n\n\tstatic const char* _errorNames[XML_ERROR_COUNT];\n\n    void Parse();\n\n    void SetError( XMLError error, int lineNum, const char* format, ... );\n\n\t// Something of an obvious security hole, once it was discovered.\n\t// Either an ill-formed XML or an excessively deep one can overflow\n\t// the stack. Track stack depth, and error out if needed.\n\tclass DepthTracker {\n\tpublic:\n\t\tDepthTracker(XMLDocument * document) {\n\t\t\tthis->_document = document;\n\t\t\tdocument->PushDepth();\n\t\t}\n\t\t~DepthTracker() {\n\t\t\t_document->PopDepth();\n\t\t}\n\tprivate:\n\t\tXMLDocument * _document;\n\t};\n\tvoid PushDepth();\n\tvoid PopDepth();\n\n    template<class NodeType, int PoolElementSize>\n    NodeType* CreateUnlinkedNode( MemPoolT<PoolElementSize>& pool );\n};\n\ntemplate<class NodeType, int PoolElementSize>\ninline NodeType* XMLDocument::CreateUnlinkedNode( MemPoolT<PoolElementSize>& pool )\n{\n    TIXMLASSERT( sizeof( NodeType ) == PoolElementSize );\n    TIXMLASSERT( sizeof( NodeType ) == pool.ItemSize() );\n    NodeType* returnNode = new (pool.Alloc()) NodeType( this );\n    TIXMLASSERT( returnNode );\n    returnNode->_memPool = &pool;\n\n\t_unlinked.Push(returnNode);\n    return returnNode;\n}\n\n/**\n\tA XMLHandle is a class that wraps a node pointer with null checks; this is\n\tan incredibly useful thing. Note that XMLHandle is not part of the TinyXML-2\n\tDOM structure. It is a separate utility class.\n\n\tTake an example:\n\t@verbatim\n\t<Document>\n\t\t<Element attributeA = \"valueA\">\n\t\t\t<Child attributeB = \"value1\" />\n\t\t\t<Child attributeB = \"value2\" />\n\t\t</Element>\n\t</Document>\n\t@endverbatim\n\n\tAssuming you want the value of \"attributeB\" in the 2nd \"Child\" element, it's very\n\teasy to write a *lot* of code that looks like:\n\n\t@verbatim\n\tXMLElement* root = document.FirstChildElement( \"Document\" );\n\tif ( root )\n\t{\n\t\tXMLElement* element = root->FirstChildElement( \"Element\" );\n\t\tif ( element )\n\t\t{\n\t\t\tXMLElement* child = element->FirstChildElement( \"Child\" );\n\t\t\tif ( child )\n\t\t\t{\n\t\t\t\tXMLElement* child2 = child->NextSiblingElement( \"Child\" );\n\t\t\t\tif ( child2 )\n\t\t\t\t{\n\t\t\t\t\t// Finally do something useful.\n\t@endverbatim\n\n\tAnd that doesn't even cover \"else\" cases. XMLHandle addresses the verbosity\n\tof such code. A XMLHandle checks for null pointers so it is perfectly safe\n\tand correct to use:\n\n\t@verbatim\n\tXMLHandle docHandle( &document );\n\tXMLElement* child2 = docHandle.FirstChildElement( \"Document\" ).FirstChildElement( \"Element\" ).FirstChildElement().NextSiblingElement();\n\tif ( child2 )\n\t{\n\t\t// do something useful\n\t@endverbatim\n\n\tWhich is MUCH more concise and useful.\n\n\tIt is also safe to copy handles - internally they are nothing more than node pointers.\n\t@verbatim\n\tXMLHandle handleCopy = handle;\n\t@endverbatim\n\n\tSee also XMLConstHandle, which is the same as XMLHandle, but operates on const objects.\n*/\nclass TINYXML2_LIB XMLHandle\n{\npublic:\n    /// Create a handle from any node (at any depth of the tree.) This can be a null pointer.\n    XMLHandle( XMLNode* node ) : _node( node ) {\n    }\n    /// Create a handle from a node.\n    XMLHandle( XMLNode& node ) : _node( &node ) {\n    }\n    /// Copy constructor\n    XMLHandle( const XMLHandle& ref ) : _node( ref._node ) {\n    }\n    /// Assignment\n    XMLHandle& operator=( const XMLHandle& ref )\t\t\t\t\t\t\t{\n        _node = ref._node;\n        return *this;\n    }\n\n    /// Get the first child of this handle.\n    XMLHandle FirstChild() \t\t\t\t\t\t\t\t\t\t\t\t\t{\n        return XMLHandle( _node ? _node->FirstChild() : 0 );\n    }\n    /// Get the first child element of this handle.\n    XMLHandle FirstChildElement( const char* name = 0 )\t\t\t\t\t\t{\n        return XMLHandle( _node ? _node->FirstChildElement( name ) : 0 );\n    }\n    /// Get the last child of this handle.\n    XMLHandle LastChild()\t\t\t\t\t\t\t\t\t\t\t\t\t{\n        return XMLHandle( _node ? _node->LastChild() : 0 );\n    }\n    /// Get the last child element of this handle.\n    XMLHandle LastChildElement( const char* name = 0 )\t\t\t\t\t\t{\n        return XMLHandle( _node ? _node->LastChildElement( name ) : 0 );\n    }\n    /// Get the previous sibling of this handle.\n    XMLHandle PreviousSibling()\t\t\t\t\t\t\t\t\t\t\t\t{\n        return XMLHandle( _node ? _node->PreviousSibling() : 0 );\n    }\n    /// Get the previous sibling element of this handle.\n    XMLHandle PreviousSiblingElement( const char* name = 0 )\t\t\t\t{\n        return XMLHandle( _node ? _node->PreviousSiblingElement( name ) : 0 );\n    }\n    /// Get the next sibling of this handle.\n    XMLHandle NextSibling()\t\t\t\t\t\t\t\t\t\t\t\t\t{\n        return XMLHandle( _node ? _node->NextSibling() : 0 );\n    }\n    /// Get the next sibling element of this handle.\n    XMLHandle NextSiblingElement( const char* name = 0 )\t\t\t\t\t{\n        return XMLHandle( _node ? _node->NextSiblingElement( name ) : 0 );\n    }\n\n    /// Safe cast to XMLNode. This can return null.\n    XMLNode* ToNode()\t\t\t\t\t\t\t{\n        return _node;\n    }\n    /// Safe cast to XMLElement. This can return null.\n    XMLElement* ToElement() \t\t\t\t\t{\n        return ( _node ? _node->ToElement() : 0 );\n    }\n    /// Safe cast to XMLText. This can return null.\n    XMLText* ToText() \t\t\t\t\t\t\t{\n        return ( _node ? _node->ToText() : 0 );\n    }\n    /// Safe cast to XMLUnknown. This can return null.\n    XMLUnknown* ToUnknown() \t\t\t\t\t{\n        return ( _node ? _node->ToUnknown() : 0 );\n    }\n    /// Safe cast to XMLDeclaration. This can return null.\n    XMLDeclaration* ToDeclaration() \t\t\t{\n        return ( _node ? _node->ToDeclaration() : 0 );\n    }\n\nprivate:\n    XMLNode* _node;\n};\n\n\n/**\n\tA variant of the XMLHandle class for working with const XMLNodes and Documents. It is the\n\tsame in all regards, except for the 'const' qualifiers. See XMLHandle for API.\n*/\nclass TINYXML2_LIB XMLConstHandle\n{\npublic:\n    XMLConstHandle( const XMLNode* node ) : _node( node ) {\n    }\n    XMLConstHandle( const XMLNode& node ) : _node( &node ) {\n    }\n    XMLConstHandle( const XMLConstHandle& ref ) : _node( ref._node ) {\n    }\n\n    XMLConstHandle& operator=( const XMLConstHandle& ref )\t\t\t\t\t\t\t{\n        _node = ref._node;\n        return *this;\n    }\n\n    const XMLConstHandle FirstChild() const\t\t\t\t\t\t\t\t\t\t\t{\n        return XMLConstHandle( _node ? _node->FirstChild() : 0 );\n    }\n    const XMLConstHandle FirstChildElement( const char* name = 0 ) const\t\t\t\t{\n        return XMLConstHandle( _node ? _node->FirstChildElement( name ) : 0 );\n    }\n    const XMLConstHandle LastChild()\tconst\t\t\t\t\t\t\t\t\t\t{\n        return XMLConstHandle( _node ? _node->LastChild() : 0 );\n    }\n    const XMLConstHandle LastChildElement( const char* name = 0 ) const\t\t\t\t{\n        return XMLConstHandle( _node ? _node->LastChildElement( name ) : 0 );\n    }\n    const XMLConstHandle PreviousSibling() const\t\t\t\t\t\t\t\t\t{\n        return XMLConstHandle( _node ? _node->PreviousSibling() : 0 );\n    }\n    const XMLConstHandle PreviousSiblingElement( const char* name = 0 ) const\t\t{\n        return XMLConstHandle( _node ? _node->PreviousSiblingElement( name ) : 0 );\n    }\n    const XMLConstHandle NextSibling() const\t\t\t\t\t\t\t\t\t\t{\n        return XMLConstHandle( _node ? _node->NextSibling() : 0 );\n    }\n    const XMLConstHandle NextSiblingElement( const char* name = 0 ) const\t\t\t{\n        return XMLConstHandle( _node ? _node->NextSiblingElement( name ) : 0 );\n    }\n\n\n    const XMLNode* ToNode() const\t\t\t\t{\n        return _node;\n    }\n    const XMLElement* ToElement() const\t\t\t{\n        return ( _node ? _node->ToElement() : 0 );\n    }\n    const XMLText* ToText() const\t\t\t\t{\n        return ( _node ? _node->ToText() : 0 );\n    }\n    const XMLUnknown* ToUnknown() const\t\t\t{\n        return ( _node ? _node->ToUnknown() : 0 );\n    }\n    const XMLDeclaration* ToDeclaration() const\t{\n        return ( _node ? _node->ToDeclaration() : 0 );\n    }\n\nprivate:\n    const XMLNode* _node;\n};\n\n\n/**\n\tPrinting functionality. The XMLPrinter gives you more\n\toptions than the XMLDocument::Print() method.\n\n\tIt can:\n\t-# Print to memory.\n\t-# Print to a file you provide.\n\t-# Print XML without a XMLDocument.\n\n\tPrint to Memory\n\n\t@verbatim\n\tXMLPrinter printer;\n\tdoc.Print( &printer );\n\tSomeFunction( printer.CStr() );\n\t@endverbatim\n\n\tPrint to a File\n\n\tYou provide the file pointer.\n\t@verbatim\n\tXMLPrinter printer( fp );\n\tdoc.Print( &printer );\n\t@endverbatim\n\n\tPrint without a XMLDocument\n\n\tWhen loading, an XML parser is very useful. However, sometimes\n\twhen saving, it just gets in the way. The code is often set up\n\tfor streaming, and constructing the DOM is just overhead.\n\n\tThe Printer supports the streaming case. The following code\n\tprints out a trivially simple XML file without ever creating\n\tan XML document.\n\n\t@verbatim\n\tXMLPrinter printer( fp );\n\tprinter.OpenElement( \"foo\" );\n\tprinter.PushAttribute( \"foo\", \"bar\" );\n\tprinter.CloseElement();\n\t@endverbatim\n*/\nclass TINYXML2_LIB XMLPrinter : public XMLVisitor\n{\npublic:\n    /** Construct the printer. If the FILE* is specified,\n    \tthis will print to the FILE. Else it will print\n    \tto memory, and the result is available in CStr().\n    \tIf 'compact' is set to true, then output is created\n    \twith only required whitespace and newlines.\n    */\n    XMLPrinter( FILE* file=0, bool compact = false, int depth = 0 );\n    virtual ~XMLPrinter()\t{}\n\n    /** If streaming, write the BOM and declaration. */\n    void PushHeader( bool writeBOM, bool writeDeclaration );\n    /** If streaming, start writing an element.\n        The element must be closed with CloseElement()\n    */\n    void OpenElement( const char* name, bool compactMode=false );\n    /// If streaming, add an attribute to an open element.\n    void PushAttribute( const char* name, const char* value );\n    void PushAttribute( const char* name, int value );\n    void PushAttribute( const char* name, unsigned value );\n\tvoid PushAttribute(const char* name, int64_t value);\n\tvoid PushAttribute( const char* name, bool value );\n    void PushAttribute( const char* name, double value );\n    /// If streaming, close the Element.\n    virtual void CloseElement( bool compactMode=false );\n\n    /// Add a text node.\n    void PushText( const char* text, bool cdata=false );\n    /// Add a text node from an integer.\n    void PushText( int value );\n    /// Add a text node from an unsigned.\n    void PushText( unsigned value );\n\t/// Add a text node from an unsigned.\n\tvoid PushText(int64_t value);\n\t/// Add a text node from a bool.\n    void PushText( bool value );\n    /// Add a text node from a float.\n    void PushText( float value );\n    /// Add a text node from a double.\n    void PushText( double value );\n\n    /// Add a comment\n    void PushComment( const char* comment );\n\n    void PushDeclaration( const char* value );\n    void PushUnknown( const char* value );\n\n    virtual bool VisitEnter( const XMLDocument& /*doc*/ );\n    virtual bool VisitExit( const XMLDocument& /*doc*/ )\t\t\t{\n        return true;\n    }\n\n    virtual bool VisitEnter( const XMLElement& element, const XMLAttribute* attribute );\n    virtual bool VisitExit( const XMLElement& element );\n\n    virtual bool Visit( const XMLText& text );\n    virtual bool Visit( const XMLComment& comment );\n    virtual bool Visit( const XMLDeclaration& declaration );\n    virtual bool Visit( const XMLUnknown& unknown );\n\n    /**\n    \tIf in print to memory mode, return a pointer to\n    \tthe XML file in memory.\n    */\n    const char* CStr() const {\n        return _buffer.Mem();\n    }\n    /**\n    \tIf in print to memory mode, return the size\n    \tof the XML file in memory. (Note the size returned\n    \tincludes the terminating null.)\n    */\n    int CStrSize() const {\n        return _buffer.Size();\n    }\n    /**\n    \tIf in print to memory mode, reset the buffer to the\n    \tbeginning.\n    */\n    void ClearBuffer() {\n        _buffer.Clear();\n        _buffer.Push(0);\n\t\t_firstElement = true;\n    }\n\nprotected:\n\tvirtual bool CompactMode( const XMLElement& )\t{ return _compactMode; }\n\n\t/** Prints out the space before an element. You may override to change\n\t    the space and tabs used. A PrintSpace() override should call Print().\n\t*/\n    virtual void PrintSpace( int depth );\n    void Print( const char* format, ... );\n    void Write( const char* data, size_t size );\n    inline void Write( const char* data )           { Write( data, strlen( data ) ); }\n    void Putc( char ch );\n\n    void SealElementIfJustOpened();\n    bool _elementJustOpened;\n    DynArray< const char*, 10 > _stack;\n\nprivate:\n    void PrintString( const char*, bool restrictedEntitySet );\t// prints out, after detecting entities.\n\n    bool _firstElement;\n    FILE* _fp;\n    int _depth;\n    int _textDepth;\n    bool _processEntities;\n\tbool _compactMode;\n\n    enum {\n        ENTITY_RANGE = 64,\n        BUF_SIZE = 200\n    };\n    bool _entityFlag[ENTITY_RANGE];\n    bool _restrictedEntityFlag[ENTITY_RANGE];\n\n    DynArray< char, 20 > _buffer;\n\n    // Prohibit cloning, intentionally not implemented\n    XMLPrinter( const XMLPrinter& );\n    XMLPrinter& operator=( const XMLPrinter& );\n};\n\n\n}\t// tinyxml2\n\n#if defined(_MSC_VER)\n#   pragma warning(pop)\n#endif\n\n#endif // TINYXML2_INCLUDED\n"
  },
  {
    "path": "source/vkbind_build.cpp",
    "content": "#include \"external/tinyxml2.cpp\"\n#include <string>\n#include <vector>\n#include <algorithm>\n#include <stdio.h>\n#include <assert.h>\n\n#define VKB_BUILD_XML_PATH_VK       \"resources/vk.xml\"\n#define VKB_BUILD_XML_PATH_VIDEO    \"resources/video.xml\"\n#define VKB_BUILD_TEMPLATE_PATH     \"source/vkbind_template.h\"\n\ntypedef int VkbResult;\n#define VKB_SUCCESS                 0\n#define VKB_ERROR                   -1\n#define VKB_INVALID_ARGS            -2\n#define VKB_OUT_OF_MEMORY           -3\n#define VKB_FILE_TOO_BIG            -4\n#define VKB_FAILED_TO_OPEN_FILE     -5\n#define VKB_FAILED_TO_READ_FILE     -6\n#define VKB_FAILED_TO_WRITE_FILE    -7\n\nstd::string vkbLTrim(const std::string &s)\n{\n    std::string result = s;\n    result.erase(result.begin(), std::find_if(result.begin(), result.end(), [](int character) { return !std::isspace(character); }));\n    return result;\n}\n\nstd::string vkbRTrim(const std::string &s)\n{\n    std::string result = s;\n    result.erase(std::find_if(result.rbegin(), result.rend(), [](int character) { return !std::isspace(character); }).base(), result.end());\n    return result;\n}\n\nstd::string vkbTrim(const std::string &s)\n{\n    return vkbLTrim(vkbRTrim(s));\n}\n\nstd::string vkbReplaceAll(const std::string &source, const std::string &from, const std::string &to)\n{\n    std::string result;\n    std::string::size_type lastPos = 0;\n\n    for (;;) {\n        std::string::size_type findPos = source.find(from, lastPos);\n        if (findPos == std::string::npos) {\n            break;\n        }\n\n        result.append(source, lastPos, findPos - lastPos);\n        result.append(to);\n        lastPos = findPos + from.length();\n    }\n\n    result.append(source.substr(lastPos));\n    return result;\n}\n\nvoid vkbReplaceAllInline(std::string &source, const std::string &from, const std::string &to)\n{\n    source = vkbReplaceAll(source, from, to);\n}\n\n\n\n\nVkbResult vkbFOpen(const char* filePath, const char* openMode, FILE** ppFile)\n{\n    if (filePath == NULL || openMode == NULL || ppFile == NULL) {\n        return VKB_INVALID_ARGS;\n    }\n\n#if defined(_MSC_VER) && _MSC_VER > 1400   /* 1400 = Visual Studio 2005 */\n    {\n        if (fopen_s(ppFile, filePath, openMode) != 0) {\n            return VKB_FAILED_TO_OPEN_FILE;\n        }\n    }\n#else\n    {\n        FILE* pFile = fopen(filePath, openMode);\n        if (pFile == NULL) {\n            return VKB_FAILED_TO_OPEN_FILE;\n        }\n\n        *ppFile = pFile;\n    }\n#endif\n\n    return VKB_SUCCESS;\n}\n\nVkbResult vkbOpenAndReadFileWithExtraData(const char* filePath, size_t* pFileSizeOut, void** ppFileData, size_t extraBytes)\n{\n    VkbResult result;\n    FILE* pFile;\n    uint64_t fileSize;\n    void* pFileData;\n    size_t bytesRead;\n\n    /* Safety. */\n    if (pFileSizeOut) *pFileSizeOut = 0;\n    if (ppFileData) *ppFileData = NULL;\n\n    if (filePath == NULL) {\n        return VKB_INVALID_ARGS;\n    }\n\n    result = vkbFOpen(filePath, \"rb\", &pFile);\n    if (result != VKB_SUCCESS) {\n        return VKB_FAILED_TO_OPEN_FILE;\n    }\n\n    fseek(pFile, 0, SEEK_END);\n    fileSize = ftell(pFile);\n    fseek(pFile, 0, SEEK_SET);\n\n    if (fileSize + extraBytes > SIZE_MAX) {\n        fclose(pFile);\n        return VKB_FILE_TOO_BIG;\n    }\n\n    pFileData = malloc((size_t)fileSize + extraBytes);    /* <-- Safe cast due to the check above. */\n    if (pFileData == NULL) {\n        fclose(pFile);\n        return VKB_OUT_OF_MEMORY;\n    }\n\n    bytesRead = fread(pFileData, 1, (size_t)fileSize, pFile);\n    if (bytesRead != fileSize) {\n        free(pFileData);\n        fclose(pFile);\n        return VKB_FAILED_TO_READ_FILE;\n    }\n\n    fclose(pFile);\n\n    if (pFileSizeOut) {\n        *pFileSizeOut = (size_t)fileSize;\n    }\n\n    if (ppFileData) {\n        *ppFileData = pFileData;\n    } else {\n        free(pFileData);\n    }\n\n    return VKB_SUCCESS;\n}\n\nVkbResult vkbOpenAndReadFile(const char* filePath, size_t* pFileSizeOut, void** ppFileData)\n{\n    return vkbOpenAndReadFileWithExtraData(filePath, pFileSizeOut, ppFileData, 0);\n}\n\nVkbResult vkbOpenAndReadTextFile(const char* filePath, size_t* pFileSizeOut, char** ppFileData)\n{\n    size_t fileSize;\n    char* pFileData;\n    VkbResult result = vkbOpenAndReadFileWithExtraData(filePath, &fileSize, (void**)&pFileData, 1);\n    if (result != VKB_SUCCESS) {\n        return result;\n    }\n\n    pFileData[fileSize] = '\\0';\n\n    if (pFileSizeOut) {\n        *pFileSizeOut = fileSize;\n    }\n\n    if (ppFileData) {\n        *ppFileData = pFileData;\n    } else {\n        free(pFileData);\n    }\n\n    return VKB_SUCCESS;\n}\n\nVkbResult vkbOpenAndWriteFile(const char* filePath, const void* pData, size_t dataSize)\n{\n    VkbResult result;\n    FILE* pFile;\n\n    if (filePath == NULL) {\n        return VKB_INVALID_ARGS;\n    }\n\n    result = vkbFOpen(filePath, \"wb\", &pFile);\n    if (result != VKB_SUCCESS) {\n        return VKB_FAILED_TO_OPEN_FILE;\n    }\n\n    if (pData != NULL && dataSize > 0) {\n        if (fwrite(pData, 1, dataSize, pFile) != dataSize) {\n            fclose(pFile);\n            return VKB_FAILED_TO_WRITE_FILE;\n        }\n    }\n\n    fclose(pFile);\n    return VKB_SUCCESS;\n}\n\nVkbResult vkbOpenAndWriteTextFile(const char* filePath, const char* text)\n{\n    if (text == NULL) {\n        text = \"\";\n    }\n\n    return vkbOpenAndWriteFile(filePath, text, strlen(text));\n}\n\n\n\n\n\nstruct vkbBuildPlatform\n{\n    std::string name;       // The name of the platform (\"win32\", \"ios\", etc.)\n    std::string protect;\n};\n\nstruct vkbBuildTag\n{\n    std::string name;\n    std::string author;\n    std::string contact;\n};\n\nstruct vkbBuildFunctionParameter\n{\n    std::string typeC;\n    std::string type;\n    std::string nameC;\n    std::string name;\n    std::string arrayEnum;\n    std::string optional;\n    std::string externsync;\n};\n\nstruct vkbBuildFunctionPointer\n{\n    std::string name;\n    std::string returnType;\n    std::vector<vkbBuildFunctionParameter> params;\n};\n\nstruct vkbBuildStructMember\n{\n    std::string typeC;\n    std::string type;\n    std::string nameC;\n    std::string name;\n    std::string arrayEnum;      // The name of the enum used for array sizes for array members.\n    std::string comment;\n    std::string api;            // Attribute\n    std::string values;         // Attribute\n    std::string optional;       // Attribute\n    std::string noautovalidity; // Attribute\n    std::string len;            // Attribute\n};\n\nstruct vkbBuildStruct\n{\n    std::vector<vkbBuildStructMember> members;\n};\n\nstruct vkbBuildType\n{\n    std::string type;   // Set by the inner <type> tag.\n    std::string name;\n    std::string category;\n    std::string alias;\n    std::string requires;\n    std::string bitvalues;\n    std::string returnedonly;\n    std::string parent;\n\n    // Type-specific data.\n    vkbBuildFunctionPointer funcpointer;\n    vkbBuildStruct structData;\n    std::string verbatimValue;    // A string containing verbatim C code to output.\n};\n\nstruct vkbBuildEnum\n{\n    std::string name;\n    std::string alias;\n    std::string value;\n    std::string bitpos;\n};\n\nstruct vkbBuildEnums\n{\n    std::string name;\n    std::string type;\n    std::vector<vkbBuildEnum> enums;\n};\n\nstruct vkbBuildCommand\n{\n    std::string returnTypeC;\n    std::string returnType;\n    std::string name;\n    std::vector<vkbBuildFunctionParameter> parameters;\n    std::string alias;\n    std::string successcodes;\n    std::string errorcodes;\n};\n\n\nstruct vkbBuildRequireType\n{\n    std::string name;\n};\n\nstruct vkbBuildRequireEnum\n{\n    std::string name;\n    std::string alias;\n    std::string value;      // If set, indicates a #define.\n    std::string extends;\n    std::string bitpos;\n    std::string extnumber;\n    std::string offset;\n    std::string comment;\n    std::string dir;        // Whether or not enum values should be negative. Will be set to \"-\" for VkResult because it uses negative values for enums.\n};\n\nstruct vkbBuildRequireCommand\n{\n    std::string name;\n};\n\nstruct vkbBuildRequire\n{\n    std::string feature;\n    std::string extension;\n    std::string comment;\n    std::vector<vkbBuildRequireType> types;\n    std::vector<vkbBuildRequireEnum> enums;\n    std::vector<vkbBuildRequireCommand> commands;\n};\n\nstruct vkbBuildFeature\n{\n    std::string api;\n    std::string name;\n    std::string number;\n    std::string comment;\n    std::vector<vkbBuildRequire> requires;\n};\n\nstruct vkbBuildExtension\n{\n    std::string name;\n    std::string number;\n    std::string type;\n    std::string requiresAttr;\n    std::string platform;\n    std::string author;\n    std::string contact;\n    std::string supported;  // If \"disabled\", no code generated.\n    std::string promotedto;\n    std::string deprecatedby;\n    std::vector<vkbBuildRequire> requires;\n};\n\nstruct VkbBuild\n{\n    std::vector<vkbBuildPlatform> platforms;\n    std::vector<vkbBuildTag> tags;\n    std::vector<vkbBuildType> types;\n    std::vector<vkbBuildEnums> enums;\n    std::vector<vkbBuildCommand> commands;\n    std::vector<vkbBuildFeature> features;\n    std::vector<vkbBuildExtension> extensions;\n\n    struct CodeGenConfig\n    {\n        public: CodeGenConfig()\n            : treatExtensionsAsSeparateHeaders(false)\n        {\n        }\n\n        bool treatExtensionsAsSeparateHeaders;  /* Will force include guards. */\n    } codegenConfig;\n};\n\n\n// Parses the <platforms> tag.\nVkbResult vkbBuildParsePlatforms(VkbBuild &context, tinyxml2::XMLElement* pPlatformsElement)\n{\n    if (pPlatformsElement == NULL) {\n        return VKB_INVALID_ARGS;\n    }\n\n    for (tinyxml2::XMLNode* pChild = pPlatformsElement->FirstChild(); pChild != NULL; pChild = pChild->NextSibling()) {\n        tinyxml2::XMLElement* pChildElement = pChild->ToElement();\n        assert(pChildElement != NULL);\n\n        vkbBuildPlatform platform;\n        platform.name = pChildElement->Attribute(\"name\");\n        platform.protect = pChildElement->Attribute(\"protect\");\n\n        // Vulkan is dropping support for Mir. Skip this one.\n        if (platform.name == \"mir\") {\n            continue;\n        }\n\n        context.platforms.push_back(platform);\n    }\n\n    return VKB_SUCCESS;\n}\n\nVkbResult vkbBuildParseTags(VkbBuild &context, tinyxml2::XMLElement* pTagsElement)\n{\n    if (pTagsElement == NULL) {\n        return VKB_INVALID_ARGS;\n    }\n\n    for (tinyxml2::XMLNode* pChild = pTagsElement->FirstChild(); pChild != NULL; pChild = pChild->NextSibling()) {\n        tinyxml2::XMLElement* pChildElement = pChild->ToElement();\n        assert(pChildElement != NULL);\n\n        vkbBuildTag tag;\n        tag.name = pChildElement->Attribute(\"name\");\n        tag.author = pChildElement->Attribute(\"author\");\n        tag.contact = pChildElement->Attribute(\"contact\");\n        context.tags.push_back(tag);\n    }\n\n    return VKB_SUCCESS;\n}\n\nVkbResult vkbBuildParseTypeNamePair(std::string &typeC, std::string &type, std::string &nameC, std::string &name, std::string &arrayEnum, tinyxml2::XMLElement* pXMLElement)\n{\n    if (pXMLElement == NULL) {\n        return VKB_INVALID_ARGS;\n    }\n\n    typeC = \"\";\n    type  = \"\";\n    nameC = \"\";\n    name  = \"\";\n    arrayEnum = \"\";\n\n    // vk.xml is a bit annoying with how it declares it's types for function return types, parameters and variables. Non-trivial\n    // pointer type looks like this: \"const <type>void</type>*\". In this case it's split over three child elements. The way we\n    // parse this is not 100% perfect, but works for our purposes. We just enumerate over each child element until we find the\n    // <name> tag. The same applies for the name, which can look something like this: \"<name>int32_t</name>[2]\" (note the array\n    // specifier.\n    tinyxml2::XMLNode* pChild = pXMLElement->FirstChild();\n\n    // <type>\n    while (pChild != NULL) {\n        tinyxml2::XMLElement* pChildElement = pChild->ToElement();\n        if (pChildElement != NULL) {\n            if (strcmp(pChildElement->Name(), \"name\") == 0) {\n                break;  // Found the \"<name>\" tag which we use as the terminator for the type.\n            }\n            if (strcmp(pChildElement->Name(), \"type\") == 0) {\n                type = pChildElement->FirstChild()->Value();\n            }\n            typeC += pChildElement->FirstChild()->Value();\n        } else {\n            typeC += pChild->Value();\n        }\n\n        pChild = pChild->NextSibling();\n    }\n\n    // <name> and <enum>.\n    while (pChild != NULL) {\n        tinyxml2::XMLElement* pChildElement = pChild->ToElement();\n        if (pChildElement != NULL) {\n            if (strcmp(pChildElement->Name(), \"comment\") == 0) {\n                break;  // Found a \"<comment>\" tag which we use as a terminator for the name.\n            }\n            if (strcmp(pChildElement->Name(), \"enum\") == 0) {\n                arrayEnum = pChildElement->FirstChild()->Value();\n            }\n            if (strcmp(pChildElement->Name(), \"name\") == 0) {\n                name = pChildElement->FirstChild()->Value();\n            }\n            nameC += pChildElement->FirstChild()->Value();\n        } else {\n            nameC += pChild->Value();\n        }\n\n        pChild = pChild->NextSibling();\n    }\n\n    typeC = vkbTrim(typeC);\n    type  = vkbTrim(type);\n    nameC = vkbTrim(nameC);\n    name  = vkbTrim(name);\n    arrayEnum = vkbTrim(arrayEnum);\n\n    return VKB_SUCCESS;\n}\n\nVkbResult vkbBuildParseStructMember(vkbBuildStructMember &member, tinyxml2::XMLElement* pMemberElement)\n{\n    // The type can possible be split over multiple nodes. We just append the values of each node until we find the name node.\n    std::string memberTypeC;\n    std::string memberType;\n    std::string memberNameC;\n    std::string memberName;\n    std::string memberArrayEnum;\n    VkbResult result = vkbBuildParseTypeNamePair(memberTypeC, memberType, memberNameC, memberName, memberArrayEnum, pMemberElement);\n    if (result != VKB_SUCCESS) {\n        return result;\n    }\n\n    for (tinyxml2::XMLNode* pChild = pMemberElement->FirstChild(); pChild != NULL; pChild = pChild->NextSibling()) {\n        tinyxml2::XMLElement* pChildElement = pChild->ToElement();\n        if (pChildElement != NULL) {\n            if (strcmp(pChildElement->Name(), \"comment\") == 0) {\n                if (pChildElement->FirstChild() != NULL) {\n                    member.comment = vkbTrim(pChildElement->FirstChild()->Value());\n                }\n            }\n        }\n    }\n\n    member.typeC = vkbTrim(memberTypeC);\n    member.type  = vkbTrim(memberType);\n    member.nameC = vkbTrim(memberNameC);\n    member.name  = vkbTrim(memberName);\n    member.arrayEnum = vkbTrim(memberArrayEnum);\n\n    const char* api = pMemberElement->Attribute(\"api\");\n    const char* values = pMemberElement->Attribute(\"values\");\n    const char* optional = pMemberElement->Attribute(\"optional\");\n    const char* noautovalidity = pMemberElement->Attribute(\"noautovalidity\");\n    const char* len = pMemberElement->Attribute(\"len\");\n\n    member.api = (api != NULL) ? api : \"\";\n    member.values = (values != NULL) ? values : \"\";\n    member.optional = (optional != NULL) ? optional : \"\";\n    member.noautovalidity = (noautovalidity != NULL) ? noautovalidity : \"\";\n    member.len = (len != NULL) ? len : \"\";\n\n    return VKB_SUCCESS;\n}\n\nVkbResult vkbBuildParseTypes(VkbBuild &context, tinyxml2::XMLElement* pTagsElement)\n{\n    if (pTagsElement == NULL) {\n        return VKB_INVALID_ARGS;\n    }\n\n    for (tinyxml2::XMLNode* pChild = pTagsElement->FirstChild(); pChild != NULL; pChild = pChild->NextSibling()) {\n        tinyxml2::XMLElement* pChildElement = pChild->ToElement();\n        if (pChildElement == NULL) {\n            continue;\n        }\n\n        // Ignore <comment> tags.\n        if (strcmp(pChildElement->Name(), \"comment\") == 0) {\n            continue;\n        }\n\n        const char* name = pChildElement->Attribute(\"name\");\n        const char* category = pChildElement->Attribute(\"category\");\n        const char* alias = pChildElement->Attribute(\"alias\");\n        const char* requires = pChildElement->Attribute(\"requires\");\n        const char* bitvalues = pChildElement->Attribute(\"bitvalues\");\n        const char* returnedonly = pChildElement->Attribute(\"returnedonly\");\n        const char* parent = pChildElement->Attribute(\"parent\");\n\n        vkbBuildType type;\n        type.name = (name != NULL) ? vkbTrim(name) : \"\";\n        type.category = (category != NULL) ? vkbTrim(category) : \"\";\n        type.alias = (alias != NULL) ? vkbTrim(alias) : \"\";\n        type.requires = (requires != NULL) ? vkbTrim(requires) : \"\";\n        type.bitvalues = (bitvalues != NULL) ? vkbTrim(bitvalues) : \"\";\n        type.returnedonly = (returnedonly != NULL) ? returnedonly : \"\";\n        type.parent = (parent != NULL) ? parent : \"\";\n\n        if (strcmp(type.category.c_str(), \"funcpointer\") == 0) {\n            tinyxml2::XMLNode* pFirstChild = pChildElement->FirstChild();\n            if (pFirstChild != NULL) {\n                // The first child should be a \"<proto>\" tag. It looks like this:\n                //\n                //    <proto><type>void</type>* <name>PFN_vkReallocationFunction</name></proto>\n                //\n                // Note how the type does *not* include the `*` for pointer types (why?!). It needs special handling. For the return\n                // type we just include every child until the <name> tag. Then the name will be handled separately.\n                {\n                    for (tinyxml2::XMLNode* pProtoNode = pFirstChild->FirstChild(); pProtoNode != NULL; pProtoNode = pProtoNode->NextSibling()) {\n                        tinyxml2::XMLElement* pElement = pProtoNode->ToElement();\n                        if (pElement != NULL) {\n                            if (strcmp(pElement->Name(), \"name\") == 0) {\n                                /* It's the name. End iteration here. */\n                                type.funcpointer.name = pElement->FirstChild()->Value();\n                                type.name = type.funcpointer.name;\n                                break;\n                            } else {\n                                type.funcpointer.returnType += pElement->FirstChild()->Value();\n                            }\n                        } else {\n                            /* Not the name. Assume it's part of the return type. */\n                            type.funcpointer.returnType += pProtoNode->Value();\n                        }\n                    }\n\n                    type.funcpointer.returnType = vkbTrim(type.funcpointer.returnType);\n                }\n\n                // The second child will be the first <param> element.\n                for (tinyxml2::XMLNode* pParamNode = pFirstChild->NextSibling(); pParamNode != NULL; pParamNode = pParamNode->NextSibling()) {\n                    std::string paramName;\n                    std::string paramTypeVK;    /* The name inside the <type></type> tags. */\n                    std::string paramTypeC;     /* The full C type such as \"const void*\" */\n\n                    for (tinyxml2::XMLNode* pParamChildNode = pParamNode->FirstChild(); pParamChildNode != NULL; pParamChildNode = pParamChildNode->NextSibling()) {\n                        tinyxml2::XMLElement* pElement = pParamChildNode->ToElement();\n                        if (pElement != NULL) {\n                            if (strcmp(pElement->Name(), \"name\") == 0) {\n                                /* It's the name. End iteration here. */\n                                paramName = pElement->FirstChild()->Value();\n\n                                vkbBuildFunctionParameter newParam;\n                                newParam.name = paramName;\n                                newParam.nameC = paramName;\n                                newParam.type = paramTypeVK;\n                                newParam.typeC = vkbTrim(paramTypeC);\n                                type.funcpointer.params.push_back(newParam);\n                                break;\n                            } else if (strcmp(pElement->Name(), \"type\") == 0) {\n                                paramTypeVK = pElement->FirstChild()->Value();\n                                paramTypeC += paramTypeVK;\n                            }\n                        } else {\n                            paramTypeC += pParamChildNode->Value();\n                        }\n                    }\n                }\n            }\n        }\n\n        if (strcmp(type.category.c_str(), \"struct\") == 0 || strcmp(type.category.c_str(), \"union\") == 0) {\n            for (tinyxml2::XMLNode* pMemberNode = pChildElement->FirstChild(); pMemberNode != NULL; pMemberNode = pMemberNode->NextSibling()) {\n                tinyxml2::XMLElement* pMemberElement = pMemberNode->ToElement();\n                if (pMemberElement != NULL) {\n                    if (strcmp(pMemberElement->Name(), \"comment\") == 0) {\n                        continue;   // Ignore <comment> tags.\n                    }\n\n                    vkbBuildStructMember member;\n                    vkbBuildParseStructMember(member, pMemberElement);\n\n                    // Don't include duplicate members.\n                    auto it = std::find_if(type.structData.members.begin(), type.structData.members.end(), [member](const vkbBuildStructMember &a)\n                    {\n                        return a.name == member.name;\n                    });\n\n                    if (it == type.structData.members.end()) {\n                        type.structData.members.push_back(member);\n                    }\n                }\n            }\n        }\n\n        if (strcmp(type.category.c_str(), \"define\") == 0 || strcmp(type.category.c_str(), \"basetype\") == 0) {\n            for (tinyxml2::XMLNode* pMemberNode = pChildElement->FirstChild(); pMemberNode != NULL; pMemberNode = pMemberNode->NextSibling()) {\n                if (pMemberNode->FirstChild() != NULL) {\n                    if (strcmp(pMemberNode->Value(), \"name\") == 0) {\n                        type.name = pMemberNode->FirstChild()->Value();\n                    }\n                    if (strcmp(pMemberNode->Value(), \"type\") == 0) {\n                        type.type = pMemberNode->FirstChild()->Value();\n                    }\n\n                    // Always make sure there's a space between the previous content and the new content.\n                    if (type.verbatimValue.length() > 0 && type.verbatimValue[type.verbatimValue.length()-1] != ' ') {\n                        type.verbatimValue += \" \";\n                    }\n                    type.verbatimValue += pMemberNode->FirstChild()->Value();\n                } else {\n                    type.verbatimValue += pMemberNode->Value();\n                }\n            }\n        }\n\n        if (strcmp(type.category.c_str(), \"bitmask\") == 0 || strcmp(type.category.c_str(), \"handle\") == 0) {\n            for (tinyxml2::XMLNode* pMemberNode = pChildElement->FirstChild(); pMemberNode != NULL; pMemberNode = pMemberNode->NextSibling()) {\n                if (pMemberNode->FirstChild() != NULL) {\n                    if (strcmp(pMemberNode->Value(), \"type\") == 0) {\n                        type.type = pMemberNode->FirstChild()->Value();\n                    }\n                    if (strcmp(pMemberNode->Value(), \"name\") == 0) {\n                        type.name = pMemberNode->FirstChild()->Value();\n                    }\n                }\n            }\n        }\n        \n        context.types.push_back(type);\n    }\n\n    return VKB_SUCCESS;\n}\n\nVkbResult vkbBuildParseEnums(VkbBuild &context, tinyxml2::XMLElement* pEnumsElement)\n{\n    if (pEnumsElement == NULL) {\n        return VKB_INVALID_ARGS;\n    }\n\n    const char* name = pEnumsElement->Attribute(\"name\");\n    const char* type = pEnumsElement->Attribute(\"type\");\n\n    vkbBuildEnums enums;\n    enums.name = (name != NULL) ? vkbTrim(name) : \"\";\n    enums.type = (type != NULL) ? vkbTrim(type) : \"\";\n\n    for (tinyxml2::XMLNode* pChild = pEnumsElement->FirstChild(); pChild != NULL; pChild = pChild->NextSibling()) {\n        tinyxml2::XMLElement* pChildElement = pChild->ToElement();\n        if (pChildElement == NULL) {\n            continue;   /* Skip over non-element items such as comments. */\n        }\n\n        assert(pChildElement != NULL);\n\n        if (strcmp(pChildElement->Name(), \"enum\") == 0) {\n            const char* childName = pChildElement->Attribute(\"name\");\n            const char* childAlias = pChildElement->Attribute(\"alias\");\n            const char* childValue = pChildElement->Attribute(\"value\");\n            const char* childBitPos = pChildElement->Attribute(\"bitpos\");\n\n            vkbBuildEnum theEnum;\n            theEnum.name = (childName != NULL) ? vkbTrim(childName) : \"\";\n            theEnum.alias = (childAlias != NULL) ? vkbTrim(childAlias) : \"\";\n            theEnum.value = (childValue != NULL) ? vkbTrim(childValue) : \"\";\n            theEnum.bitpos = (childBitPos != NULL) ? vkbTrim(childBitPos) : \"\";\n\n            // There's an <enums> tag that's specifically used for \"#define\" style enums. These are treated slightly differently. In this case, the <enums> type\n            // will be \"constants\", but we store a separate vkbBuildEnums object for each item within that <enums> tag. This object will contain only a single item,\n            // which is the name/value of the #define.\n            if (enums.type == \"constants\") {\n                // #define enum.\n                vkbBuildEnums defineEnum;\n                defineEnum.name = childName;\n                defineEnum.type = \"\"; // Should always be \"\".\n                defineEnum.enums.push_back(theEnum);\n                context.enums.push_back(defineEnum);\n            } else {\n                // Regular enum.\n                enums.enums.push_back(theEnum);\n            }\n        }\n    }\n\n    if (enums.type != \"\") {\n        context.enums.push_back(enums);\n    }\n    \n    return VKB_SUCCESS;\n}\n\n\n\nVkbResult vkbBuildParseCommandProto(vkbBuildCommand &command, tinyxml2::XMLElement* pProtoElement)\n{\n    if (pProtoElement == NULL) {\n        return VKB_INVALID_ARGS;\n    }\n\n    std::string nameCUnused;\n    std::string arrayEnumUnused;\n    VkbResult result = vkbBuildParseTypeNamePair(command.returnTypeC, command.returnType, nameCUnused, command.name, arrayEnumUnused, pProtoElement);\n    if (result != VKB_SUCCESS) {\n        return result;\n    }\n\n    return VKB_SUCCESS;\n}\n\nVkbResult vkbBuildParseCommandParam(vkbBuildFunctionParameter &param, tinyxml2::XMLElement* pParamElement)\n{\n    if (pParamElement == NULL) {\n        return VKB_INVALID_ARGS;\n    }\n\n    VkbResult result = vkbBuildParseTypeNamePair(param.typeC, param.type, param.nameC, param.name, param.arrayEnum, pParamElement);\n    if (result != VKB_SUCCESS) {\n        return result;\n    }\n\n    const char* optional = pParamElement->Attribute(\"optional\");\n    const char* externsync = pParamElement->Attribute(\"externsync\");\n\n    param.optional = (optional != NULL) ? optional : \"\";\n    param.externsync = (externsync != NULL) ? externsync : \"\";\n\n    return VKB_SUCCESS;\n}\n\nVkbResult vkbBuildParseCommand(vkbBuildCommand &command, tinyxml2::XMLElement* pCommandElement)\n{\n    if (pCommandElement == NULL) {\n        return VKB_INVALID_ARGS;\n    }\n\n    const char* successcodes = pCommandElement->Attribute(\"successcodes\");\n    const char* errorcodes = pCommandElement->Attribute(\"errorcodes\");\n\n    command.successcodes = (successcodes != NULL) ? successcodes : \"\";\n    command.errorcodes = (errorcodes != NULL) ? errorcodes : \"\";\n\n    for (tinyxml2::XMLNode* pChild = pCommandElement->FirstChild(); pChild != NULL; pChild = pChild->NextSibling()) {\n        tinyxml2::XMLElement* pChildElement = pChild->ToElement();\n        assert(pChildElement != NULL);\n\n        if (strcmp(pChildElement->Name(), \"proto\") == 0) {\n            vkbBuildParseCommandProto(command, pChildElement);\n        }\n\n        if (strcmp(pChildElement->Name(), \"param\") == 0) {\n            vkbBuildFunctionParameter param;\n            vkbBuildParseCommandParam(param, pChildElement);\n\n            // Don't include duplicate parameters. Can happen due to vulkansc specializations.\n            auto it = std::find_if(command.parameters.begin(), command.parameters.end(), [param](const vkbBuildFunctionParameter &a)\n            {\n                return a.name == param.name;\n            });\n\n            if (it == command.parameters.end()) {\n                command.parameters.push_back(param);\n            }\n        }\n    }\n\n    // There's a possibility that a command is actually just an alias for an existing item. In this case, the name\n    // will be specified in the \"name\" attribute, and there will be an \"alias\" attribute with it.\n    const char* nameAttr = pCommandElement->Attribute(\"name\");\n    if (nameAttr != NULL) {\n        command.name = nameAttr;\n    }\n\n    const char* aliasAttr = pCommandElement->Attribute(\"alias\");\n    if (aliasAttr != NULL) {\n        command.alias = aliasAttr;\n    }\n    \n    return VKB_SUCCESS;\n}\n\nVkbResult vkbBuildParseCommands(VkbBuild &context, tinyxml2::XMLElement* pCommandsElement)\n{\n    if (pCommandsElement == NULL) {\n        return VKB_INVALID_ARGS;\n    }\n    \n    for (tinyxml2::XMLNode* pChild = pCommandsElement->FirstChild(); pChild != NULL; pChild = pChild->NextSibling()) {\n        tinyxml2::XMLElement* pChildElement = pChild->ToElement();\n        assert(pChildElement != NULL);\n\n        if (strcmp(pChildElement->Name(), \"command\") == 0) {\n            vkbBuildCommand command;\n            VkbResult result = vkbBuildParseCommand(command, pChildElement);\n            if (result == VKB_SUCCESS) {\n                context.commands.push_back(command);\n            }\n        }\n    }\n\n    return VKB_SUCCESS;\n}\n\n\nVkbResult vkbBuildParseRequireType(vkbBuildRequireType &type, tinyxml2::XMLElement* pRequireTypeElement)\n{\n    if (pRequireTypeElement == NULL) {\n        return VKB_INVALID_ARGS;\n    }\n\n    const char* name = pRequireTypeElement->Attribute(\"name\");\n    if (name != NULL) {\n        type.name = vkbTrim(name);\n    }\n\n    return VKB_SUCCESS;\n}\n\nVkbResult vkbBuildParseRequireEnum(vkbBuildRequireEnum &theEnum, tinyxml2::XMLElement* pRequireEnumElement)\n{\n    if (pRequireEnumElement == NULL) {\n        return VKB_INVALID_ARGS;\n    }\n\n    const char* name = pRequireEnumElement->Attribute(\"name\");\n    const char* alias = pRequireEnumElement->Attribute(\"alias\");\n    const char* value = pRequireEnumElement->Attribute(\"value\");\n    const char* extends = pRequireEnumElement->Attribute(\"extends\");\n    const char* bitpos = pRequireEnumElement->Attribute(\"bitpos\");\n    const char* extnumber = pRequireEnumElement->Attribute(\"extnumber\");\n    const char* offset = pRequireEnumElement->Attribute(\"offset\");\n    const char* comment = pRequireEnumElement->Attribute(\"comment\");\n    const char* dir = pRequireEnumElement->Attribute(\"dir\");\n\n    theEnum.name = (name != NULL) ? vkbTrim(name) : \"\";\n    theEnum.alias = (alias != NULL) ? vkbTrim(alias) : \"\";\n    theEnum.value = (value != NULL) ? vkbTrim(value) : \"\";\n    theEnum.extends = (extends != NULL) ? vkbTrim(extends) : \"\";\n    theEnum.bitpos = (bitpos != NULL) ? vkbTrim(bitpos) : \"\";\n    theEnum.extnumber = (extnumber != NULL) ? vkbTrim(extnumber) : \"\";\n    theEnum.offset = (offset != NULL) ? vkbTrim(offset) : \"\";\n    theEnum.comment = (comment != NULL) ? vkbTrim(comment) : \"\";\n    theEnum.dir = (dir != NULL) ? vkbTrim(dir) : \"\";\n\n    return VKB_SUCCESS;\n}\n\nVkbResult vkbBuildParseRequireCommand(vkbBuildRequireCommand &command, tinyxml2::XMLElement* pRequireCommandElement)\n{\n    if (pRequireCommandElement == NULL) {\n        return VKB_INVALID_ARGS;\n    }\n\n    const char* name = pRequireCommandElement->Attribute(\"name\");\n    if (name != NULL) {\n        command.name = vkbTrim(name);\n    }\n\n    return VKB_SUCCESS;\n}\n\nVkbResult vkbBuildParseRequire(vkbBuildRequire &require, tinyxml2::XMLElement* pRequireElement)\n{\n    if (pRequireElement == NULL) {\n        return VKB_INVALID_ARGS;\n    }\n\n    const char* feature = pRequireElement->Attribute(\"feature\");\n    const char* extension = pRequireElement->Attribute(\"extension\");\n    const char* comment = pRequireElement->Attribute(\"comment\");\n\n    require.feature = (feature != NULL) ? vkbTrim(feature) : \"\";\n    require.extension = (extension != NULL) ? vkbTrim(extension) : \"\";\n    require.comment = (comment != NULL) ? comment : \"\";\n\n    for (tinyxml2::XMLNode* pChild = pRequireElement->FirstChild(); pChild != NULL; pChild = pChild->NextSibling()) {\n        tinyxml2::XMLElement* pChildElement = pChild->ToElement();\n        if (pChildElement == NULL) {\n            continue;\n        }\n\n        if (strcmp(pChildElement->Name(), \"type\") == 0) {\n            vkbBuildRequireType type;\n            vkbBuildParseRequireType(type, pChildElement);\n            require.types.push_back(type);\n        }\n        if (strcmp(pChildElement->Name(), \"enum\") == 0) {\n            vkbBuildRequireEnum theEnum;\n            vkbBuildParseRequireEnum(theEnum, pChildElement);\n            require.enums.push_back(theEnum);\n        }\n        if (strcmp(pChildElement->Name(), \"command\") == 0) {\n            vkbBuildRequireCommand command;\n            vkbBuildParseRequireCommand(command, pChildElement);\n            require.commands.push_back(command);\n        }\n    }\n\n    return VKB_SUCCESS;\n}\n\nVkbResult vkbBuildParseFeature(VkbBuild &context, tinyxml2::XMLElement* pFeatureElement)\n{\n    if (pFeatureElement == NULL) {\n        return VKB_INVALID_ARGS;\n    }\n\n    const char* api = pFeatureElement->Attribute(\"api\");\n    const char* name = pFeatureElement->Attribute(\"name\");\n    const char* number = pFeatureElement->Attribute(\"number\");\n    const char* comment = pFeatureElement->Attribute(\"comment\");\n\n    vkbBuildFeature feature;\n    feature.api = (api != NULL) ? vkbTrim(api) : \"\";\n    feature.name = (name != NULL) ? vkbTrim(name) : \"\";\n    feature.number = (number != NULL) ? vkbTrim(number) : \"\";\n    feature.comment = (comment != NULL) ? comment : \"\";\n\n    for (tinyxml2::XMLNode* pChild = pFeatureElement->FirstChild(); pChild != NULL; pChild = pChild->NextSibling()) {\n        tinyxml2::XMLElement* pChildElement = pChild->ToElement();\n        if (pChildElement == NULL) {\n            continue;   /* May hit this if the element is a comment. */\n        }\n\n        assert(pChildElement != NULL);\n\n        if (strcmp(pChildElement->Name(), \"require\") == 0) {\n            vkbBuildRequire require;\n            vkbBuildParseRequire(require, pChildElement);\n            feature.requires.push_back(require);\n        }\n    }\n\n    context.features.push_back(feature);\n    return VKB_SUCCESS;\n}\n\nVkbResult vkbBuildParseExtension(VkbBuild &context, tinyxml2::XMLElement* pExtensionElement)\n{\n    if (pExtensionElement == NULL) {\n        return VKB_INVALID_ARGS;\n    }\n\n    const char* name = pExtensionElement->Attribute(\"name\");\n    const char* number = pExtensionElement->Attribute(\"number\");\n    const char* type = pExtensionElement->Attribute(\"type\");\n    const char* requiresAttr = pExtensionElement->Attribute(\"requires\");\n    const char* platform = pExtensionElement->Attribute(\"platform\");\n    const char* author = pExtensionElement->Attribute(\"author\");\n    const char* contact = pExtensionElement->Attribute(\"contact\");\n    const char* supported = pExtensionElement->Attribute(\"supported\");\n    const char* promotedto = pExtensionElement->Attribute(\"promotedto\");\n    const char* deprecatedby = pExtensionElement->Attribute(\"deprecatedby\");\n\n    // We ignore \"disabled\" extensions.\n    if (strcmp(supported, \"disabled\") == 0) {\n        return VKB_INVALID_ARGS;    // Should I return VKB_SUCCESS here?\n    }\n\n    // Support for Mir is being dropped. Skip this.\n    if (platform != NULL && strcmp(platform, \"mir\") == 0) {\n        return VKB_INVALID_ARGS;\n    }\n    \n    vkbBuildExtension extension;\n    extension.name = (name != NULL) ? vkbTrim(name) : \"\";\n    extension.number = (number != NULL) ? vkbTrim(number) : \"\";\n    extension.type = (type != NULL) ? vkbTrim(type) : \"\";\n    extension.requiresAttr = (requiresAttr != NULL) ? vkbTrim(requiresAttr) : \"\";\n    extension.platform = (platform != NULL) ? vkbTrim(platform) : \"\";\n    extension.author = (author != NULL) ? vkbTrim(author) : \"\";\n    extension.contact = (contact != NULL) ? vkbTrim(contact) : \"\";\n    extension.supported = (supported != NULL) ? vkbTrim(supported) : \"\";\n    extension.promotedto = (promotedto != NULL) ? vkbTrim(promotedto) : \"\";\n    extension.deprecatedby = (deprecatedby != NULL) ? vkbTrim(deprecatedby) : \"\";\n\n    for (tinyxml2::XMLNode* pChild = pExtensionElement->FirstChild(); pChild != NULL; pChild = pChild->NextSibling()) {\n        tinyxml2::XMLElement* pChildElement = pChild->ToElement();\n        assert(pChildElement != NULL);\n\n        if (strcmp(pChildElement->Name(), \"require\") == 0) {\n            vkbBuildRequire require;\n            vkbBuildParseRequire(require, pChildElement);\n            extension.requires.push_back(require);\n        }\n    }\n\n    context.extensions.push_back(extension);\n\n    // At this point the extension is sitting at the end, but we need to check if any of the already-added extensions are deprecated by this one. If so,\n    // we need to move it to the end so it's sitting after it. The reason we need to do this is to ensure any aliases are output beforehand so that\n    // typedef's and whatnot work as expected. A better way to do this is to analyze the list of extensions and re-arrange them based on the dependant types.\n    for (size_t i = 0; i < context.extensions.size(); i += 1) {\n        if (context.extensions[i].deprecatedby == extension.name) {\n            context.extensions.push_back(context.extensions[i]);\n            context.extensions.erase(context.extensions.begin() + i);\n            break;\n        }\n    }\n\n    return VKB_SUCCESS;\n}\n\nVkbResult vkbBuildParseExtensions(VkbBuild &context, tinyxml2::XMLElement* pExtensionsElement)\n{\n    if (pExtensionsElement == NULL) {\n        return VKB_INVALID_ARGS;\n    }\n\n    for (tinyxml2::XMLNode* pChild = pExtensionsElement->FirstChild(); pChild != NULL; pChild = pChild->NextSibling()) {\n        tinyxml2::XMLElement* pChildElement = pChild->ToElement();\n        if (pChildElement != NULL) {\n            if (strcmp(pChildElement->Name(), \"extension\") == 0) {\n                vkbBuildParseExtension(context, pChildElement);\n            }\n        }\n    }\n\n    return VKB_SUCCESS;\n}\n\n\nbool vkbBuildFindTypeByName(VkbBuild &context, const char* name, size_t* pIndexOut)\n{\n    if (name == NULL) {\n        return false;\n    }\n\n    for (size_t iType = 0; iType < context.types.size(); ++iType) {\n        if (context.types[iType].name == name) {\n            if (pIndexOut != NULL) {\n                *pIndexOut = iType;\n            }\n            return true;\n        }\n    }\n\n    return false;\n}\n\nbool vkbBuildFindEnumByName(VkbBuild &context, const char* name, size_t* pIndexOut)\n{\n    if (name == NULL) {\n        return false;\n    }\n\n    for (size_t iEnum = 0; iEnum < context.enums.size(); ++iEnum) {\n        if (context.enums[iEnum].name == name) {\n            if (pIndexOut != NULL) {\n                *pIndexOut = iEnum;\n            }\n            return true;\n        }\n    }\n\n    return false;\n}\n\nbool vkbBuildFindEnumValue(VkbBuild &context, const std::string &name, vkbBuildEnum &value)\n{\n    /* Search through every enum. */\n    for (size_t iEnum = 0; iEnum < context.enums.size(); ++iEnum) {\n        /* Check each item in the enum. */\n        for (auto item : context.enums[iEnum].enums) {\n            if (item.name == name) {\n                /* Found the item. If it's aliased, search recursively. Otherwise return the value. */\n                if (item.alias == \"\") {\n                    value = item;\n                    return true;\n                } else {\n                    return vkbBuildFindEnumValue(context, item.alias, value);\n                }\n            }\n        }\n    }\n\n    /* Getting here means we couldn't find the enum from the base list. We'll need to check features and extensions. */\n\n    /* Features. */\n    for (auto feature : context.features) {\n        for (auto requires : feature.requires) {\n            for (auto enumValue : requires.enums) {\n                if (enumValue.name == name) {\n                    if (enumValue.alias == \"\") {\n                        value.name   = enumValue.name;\n                        value.alias  = \"\";\n                        value.value  = enumValue.value;\n                        value.bitpos = enumValue.bitpos;\n                        return true;\n                    } else {\n                        return vkbBuildFindEnumValue(context, enumValue.alias, value);\n                    }\n                }\n            }\n        }\n    }\n\n    /* Extensions. */\n    for (auto extension : context.extensions) {\n        for (auto requires : extension.requires) {\n            for (auto enumValue : requires.enums) {\n                if (enumValue.name == name) {\n                    if (enumValue.alias == \"\") {\n                        value.name   = enumValue.name;\n                        value.alias  = \"\";\n                        value.value  = enumValue.value;\n                        value.bitpos = enumValue.bitpos;\n                        return true;\n                    } else {\n                        return vkbBuildFindEnumValue(context, enumValue.alias, value);\n                    }\n                }\n            }\n        }\n    }\n\n    /* Getting here means we couldn't find anything. */\n    return false;\n}\n\nbool vkbBuildFindCommandByName(VkbBuild &context, const char* name, size_t* pIndexOut)\n{\n    if (name == NULL) {\n        return false;\n    }\n\n    for (size_t iCommand = 0; iCommand < context.commands.size(); ++iCommand) {\n        if (context.commands[iCommand].name == name) {\n            if (pIndexOut != NULL) {\n                *pIndexOut = iCommand;\n            }\n            return true;\n        }\n    }\n\n    return false;\n}\n\nbool vkbBuildFindExtensionByName(VkbBuild &context, const char* name, size_t* pIndexOut)\n{\n    if (name == NULL) {\n        return false;\n    }\n\n    for (size_t iExtension = 0; iExtension < context.extensions.size(); ++iExtension) {\n        if (context.extensions[iExtension].name == name) {\n            if (pIndexOut != NULL) {\n                *pIndexOut = iExtension;\n            }\n            return true;\n        }\n    }\n\n    return false;\n}\n\nstd::string vkbBuildCleanDefineValue(const std::string &value)\n{\n    std::string result = vkbTrim(value);\n    vkbReplaceAllInline(result, \"\\\\\\n\", \"\");\n\n    // Now we need to remove all line comments. If the line ends with a line comment we leave the new line\n    // character in place, otherwise we remove the entire line.\n    for (;;) {\n        std::string::size_type findPos = result.find(\"//\", 0);\n        if (findPos == std::string::npos) {\n            break;\n        }\n\n        // If the comment starts on a new line we want to remove the whole thing.\n        bool deleteEOLCharacter = false;\n        if (findPos == 0 || result[findPos-1] == '\\n') {\n            deleteEOLCharacter = true;\n        }\n\n        // Starting from findPos, we now need to search for the new line character.\n        std::string::size_type eolPos = result.find(\"\\n\", findPos+2);\n        if (eolPos != std::string::npos) {\n            if (deleteEOLCharacter) {\n                eolPos += 1;\n            } else {\n                if (result[eolPos-1] == '\\r') {\n                    eolPos -= 1;\n                }\n            }\n        }\n\n        result.erase(findPos, eolPos - findPos);\n    }\n\n    return result;\n}\n\ntemplate <typename T>\nbool vkbContains(const std::vector<T> &list, T value)\n{\n    return std::find(list.begin(), list.end(), value) != list.end();\n}\n\n\nbool vkbPriorFeatureContainsType(std::vector<std::vector<size_t>> &typesPerFeature, size_t thisFeatureIndex, size_t typeIndex)\n{\n    for (size_t iFeature = 0; iFeature < thisFeatureIndex; ++iFeature) {\n        if (vkbContains(typesPerFeature[iFeature], typeIndex)) {\n            return true;\n        }\n    }\n\n    return false;\n}\n\nbool vkbPriorFeatureContainsEnum(std::vector<std::vector<size_t>> &enumsPerFeature, size_t thisFeatureIndex, size_t enumIndex)\n{\n    for (size_t iFeature = 0; iFeature < thisFeatureIndex; ++iFeature) {\n        if (vkbContains(enumsPerFeature[iFeature], enumIndex)) {\n            return true;\n        }\n    }\n\n    return false;\n}\n\n\nVkbResult vkbBuildAddEnumDependencies(VkbBuild &context, const char* enumName, std::vector<size_t> &enumIndicesOut)\n{\n    if (enumName == NULL) {\n        return VKB_INVALID_ARGS;\n    }\n\n    size_t enumIndex;\n    if (!vkbBuildFindEnumByName(context, enumName, &enumIndex)) {\n        return VKB_INVALID_ARGS;    // Couldn't find the base type\n    }\n\n    if (vkbContains(enumIndicesOut, enumIndex)) {\n        return VKB_SUCCESS; // This enum has already been handled.\n    }\n\n    enumIndicesOut.push_back(enumIndex);\n    return VKB_SUCCESS;\n}\n\nVkbResult vkbBuildAddTypeDependencies(VkbBuild &context, const char* typeName, std::vector<size_t> &typeIndicesOut, std::vector<size_t> &enumIndicesOut)\n{\n    if (typeName == NULL) {\n        return VKB_INVALID_ARGS;\n    }\n\n    size_t typeIndex;\n    if (!vkbBuildFindTypeByName(context, typeName, &typeIndex)) {\n        return VKB_INVALID_ARGS;    // Couldn't find the base type\n    }\n\n    vkbBuildType &type = context.types[typeIndex];\n\n    // If the type has an alias, make sure that's added first.\n    if (type.alias != \"\") {\n        vkbBuildAddTypeDependencies(context, type.alias.c_str(), typeIndicesOut, enumIndicesOut);\n    }\n\n    if (type.category == \"define\" || type.category == \"basetype\" || type.category == \"bitmask\" || type.category == \"handle\" || type.category == \"enum\") {\n        if (type.type.length() > 0) {\n            vkbBuildAddTypeDependencies(context, type.type.c_str(), typeIndicesOut, enumIndicesOut);\n        }\n        if (type.requires.length() > 0) {\n            vkbBuildAddTypeDependencies(context, type.requires.c_str(), typeIndicesOut, enumIndicesOut);\n        }\n        if (type.bitvalues.length() > 0) {\n            vkbBuildAddTypeDependencies(context, type.bitvalues.c_str(), typeIndicesOut, enumIndicesOut);\n        }\n    } else if (type.category == \"struct\" || type.category == \"union\") {\n        for (size_t iMember = 0; iMember < type.structData.members.size(); ++iMember) {\n            if (type.structData.members[iMember].type == typeName) {\n                continue;   // It's the same type name. Prevent an infinite recursion loop.\n            }\n\n            if (type.structData.members[iMember].arrayEnum.length() > 0) {\n                vkbBuildAddEnumDependencies(context, type.structData.members[iMember].arrayEnum.c_str(), enumIndicesOut);\n            }\n            vkbBuildAddTypeDependencies(context, type.structData.members[iMember].type.c_str(), typeIndicesOut, enumIndicesOut);\n        }\n    } else if (type.category == \"funcpointer\") {\n        vkbBuildAddTypeDependencies(context, type.funcpointer.returnType.c_str(), typeIndicesOut, enumIndicesOut);\n        for (size_t iParam = 0; iParam < type.funcpointer.params.size(); ++iParam) {\n            if (type.funcpointer.params[iParam].arrayEnum.length() > 0) {\n                vkbBuildAddEnumDependencies(context, type.funcpointer.params[iParam].arrayEnum.c_str(), enumIndicesOut);\n            }\n            vkbBuildAddTypeDependencies(context, type.funcpointer.params[iParam].type.c_str(), typeIndicesOut, enumIndicesOut);\n        }\n    } else if (type.category == \"\") {\n        if (type.requires.length() > 0) {\n            vkbBuildAddTypeDependencies(context, type.requires.c_str(), typeIndicesOut, enumIndicesOut);\n        }\n        if (type.bitvalues.length() > 0) {\n            vkbBuildAddTypeDependencies(context, type.bitvalues.c_str(), typeIndicesOut, enumIndicesOut);\n        }\n    }\n\n    // Getting here means we found the base type. We need to recursively add the dependencies of each referenced type. If\n    // the base type is already in the list, it means it's already been handled and we should skip it.\n    if (vkbContains(typeIndicesOut, typeIndex)) {\n        return VKB_SUCCESS; // This type has already been handled.\n    }\n\n    // We add the base type to the list last.\n    typeIndicesOut.push_back(typeIndex);\n    return VKB_SUCCESS;\n}\n\nVkbResult vkbBuildAddCommandDependencies(VkbBuild &context, const char* commandName, std::vector<size_t> &typeIndicesOut, std::vector<size_t> &enumIndicesOut)\n{\n    if (commandName == NULL) {\n        return VKB_INVALID_ARGS;\n    }\n\n    size_t commandIndex;\n    if (!vkbBuildFindCommandByName(context, commandName, &commandIndex)) {\n        return VKB_INVALID_ARGS;    // Couldn't find the base type\n    }\n\n    vkbBuildCommand &command = context.commands[commandIndex];\n    vkbBuildAddTypeDependencies(context, command.returnType.c_str(), typeIndicesOut, enumIndicesOut);\n    for (size_t iParam = 0; iParam < command.parameters.size(); ++iParam) {\n        vkbBuildAddTypeDependencies(context, command.parameters[iParam].type.c_str(), typeIndicesOut, enumIndicesOut);\n    }\n\n    return VKB_SUCCESS;\n}\n\n\nstd::string vkbBuildCalculateExtensionEnumValue(vkbBuildRequireEnum &requireEnum, const std::string &extnumber)\n{\n    // See \"Assigning Extension Token Values\" in the Vulkan style guide.\n    int dir = (requireEnum.dir == \"-\") ? -1 : +1;\n    int ext = atoi(extnumber.c_str());\n    int off = atoi(requireEnum.offset.c_str());\n    int val = (1000000000 + (ext-1)*1000 + off) * dir;\n    return std::to_string(val);\n}\n\nstd::string vkbBuildCalculateExtensionEnumValue(vkbBuildRequireEnum &requireEnum)\n{\n    return vkbBuildCalculateExtensionEnumValue(requireEnum, requireEnum.extnumber);\n}\n\nstd::string vkbBuildBitPosToHexString(int bitpos)\n{\n    assert(bitpos >= 0);\n    assert(bitpos <= 63);\n\n    char buffer[32];\n    if (bitpos < 32) {\n        snprintf(buffer, sizeof(buffer), \"0x%08x\", (1 << bitpos));\n    } else {\n        snprintf(buffer, sizeof(buffer), \"0x%016llx\", ((long long)1 << bitpos));\n    }\n\n    return buffer;\n}\n\nstd::string vkbBuildBitPosToHexStringEx(int bitpos, const std::string &typeName)\n{\n    char buffer[1024];\n\n    assert(bitpos >= 0);\n    assert(bitpos <= 63);\n\n\n    if (bitpos < 32) {\n        snprintf(buffer, sizeof(buffer), \"0x%08x\", (1 << bitpos));\n    } else {\n        /* Strange syntax is for VC6 compatibility. */\n        long long value = ((long long)1 << bitpos);\n        snprintf(buffer, sizeof(buffer), \"(%s)(((%s)0x%08x << 32) | (0x%08x))\", typeName.c_str(), typeName.c_str(), (int)((value & 0xFFFFFFFF00000000) >> 32), (int)(value & 0x00000000FFFFFFFF));\n    }\n\n    return buffer;\n}\n\n\n\n// Keeps track of the different types and defines that a feature or extension depends on.\nstruct vkbBuildCodeGenDependencies\n{\n    std::string type;   // \"feature\" or \"extension\".\n    std::vector<size_t> typeIndexes;    // An index into the main type list.\n    std::vector<size_t> enumIndexes;    // An index into the main enum list.\n\n    VkbResult ParseFeatureDependencies(VkbBuild &context, vkbBuildFeature &feature)\n    {\n        type = \"feature\";\n\n        for (size_t iRequire = 0; iRequire < feature.requires.size(); ++iRequire) {\n            VkbResult result = ParseRequire(context, feature.requires[iRequire]);\n            if (result != VKB_SUCCESS) {\n                return result;\n            }\n        }\n        \n        return VKB_SUCCESS;\n    }\n\n    VkbResult ParseExtensionDependencies(VkbBuild &context, vkbBuildExtension &extension)\n    {\n        type = \"extension\";\n\n        for (size_t iRequire = 0; iRequire < extension.requires.size(); ++iRequire) {\n            VkbResult result = ParseRequire(context, extension.requires[iRequire]);\n            if (result != VKB_SUCCESS) {\n                return result;\n            }\n        }\n\n        return VKB_SUCCESS;\n    }\n\n    VkbResult ParseRequire(VkbBuild &context, vkbBuildRequire &require)\n    {\n        for (size_t iRequireType = 0; iRequireType < require.types.size(); ++iRequireType) {\n            vkbBuildAddTypeDependencies(context, require.types[iRequireType].name.c_str(), typeIndexes, enumIndexes);\n        }\n        for (size_t iRequireEnum = 0; iRequireEnum < require.enums.size(); ++iRequireEnum) {\n            vkbBuildAddEnumDependencies(context, require.enums[iRequireEnum].name.c_str(), enumIndexes);\n        }\n        for (size_t iRequireCommand = 0; iRequireCommand < require.commands.size(); ++iRequireCommand) {\n            vkbBuildAddCommandDependencies(context, require.commands[iRequireCommand].name.c_str(), typeIndexes, enumIndexes);\n        }\n\n        return VKB_SUCCESS;\n    }\n};\n\n// Keeps track of what has been output from the codegen stage. This is used for keeping track \nstruct vkbBuildCodeGenState\n{\n    std::vector<vkbBuildCodeGenDependencies> featureDependencies;\n    std::vector<vkbBuildCodeGenDependencies> extensionDependencies;\n    std::vector<std::string> outputDefines;      // <-- Keeps track of #define's that have already been output.\n    std::vector<std::string> outputTypes;        // <-- Keeps track of types that have already been output (base types, struct, union, etc.).\n    std::vector<std::string> outputCommands;     // <-- Keeps track of the commands that have already been output.\n    std::vector<std::string> outputInitializers; // <-- Keeps track of struct initializers that have already been output.\n\n    bool HasOutputDefine(const std::string &name) const\n    {\n        return vkbContains(outputDefines, name);\n    }\n\n    bool HasOutputType(const std::string &name) const\n    {\n        return vkbContains(outputTypes, name);\n    }\n\n    bool HasOutputCommand(const std::string &name) const\n    {\n        return vkbContains(outputCommands, name);\n    }\n\n    bool HasOutputInitializer(const std::string &name) const\n    {\n        return vkbContains(outputInitializers, name);\n    }\n\n\n    void MarkDefineAsOutput(const std::string &name)\n    {\n        assert(!HasOutputDefine(name));\n        outputDefines.push_back(name);\n    }\n\n    void MarkTypeAsOutput(const std::string &name)\n    {\n        assert(!HasOutputType(name));\n        outputTypes.push_back(name);\n    }\n\n    void MarkCommandAsOutput(const std::string &name)\n    {\n        assert(!HasOutputCommand(name));\n        outputCommands.push_back(name);\n    }\n\n    void MarkInitializerAsOutput(const std::string &name)\n    {\n        assert(!HasOutputInitializer(name));\n        outputInitializers.push_back(name);\n    }\n};\n\nVkbResult vkbBuildGenerateCode_C_DependencyIncludes(VkbBuild &context, vkbBuildCodeGenState &codegenState, const vkbBuildCodeGenDependencies &dependencies, std::string &codeOut)\n{\n    const std::vector<size_t> &typeIndices = dependencies.typeIndexes;\n\n    for (size_t iType = 0; iType < typeIndices.size(); ++iType) {\n        vkbBuildType &type = context.types[typeIndices[iType]];\n\n        // vkbind doesn't want to depend on vk_platform.h so skip it.\n        if (type.name == \"vk_platform\") {\n            continue;\n        }\n\n        // Ignore anything with \"vk_video/\" in it.\n        if (type.name.find(\"vk_video/\") != std::string::npos) {\n            continue;\n        }\n\n        // Ignore stdint - we include that separately.\n        if (type.name.find(\"stdint\") != std::string::npos) {\n            continue;\n        }\n\n        if (type.category == \"include\") {\n            if (!codegenState.HasOutputType(type.name)) {\n                /* Don't output Xlib.h or Xrandr.h - they're included separately in the template. */\n                if (type.name == \"X11/Xlib.h\" || type.name == \"X11/extensions/Xrandr.h\") {\n                    continue;\n                }\n\n                /* Same for windows.h */\n                if (type.name == \"windows.h\") {\n                    continue;\n                }\n\n                codeOut += \"#include <\" + type.name + \">\\n\";\n                codegenState.MarkTypeAsOutput(type.name);\n            }\n        }\n    }\n\n    return VKB_SUCCESS;\n}\n\nVkbResult vkbBuildGenerateCode_C_RequireDefineEnums(VkbBuild &context, vkbBuildCodeGenState &codegenState, const vkbBuildRequire &require, std::string &codeOut)\n{\n    (void)context;\n\n    for (size_t iRequireEnum = 0; iRequireEnum < require.enums.size(); ++iRequireEnum) {\n        const vkbBuildRequireEnum &requireEnum = require.enums[iRequireEnum];\n        if (requireEnum.value != \"\" && requireEnum.extends == \"\") {\n            if (requireEnum.alias != \"\") {\n                codeOut += \"#define \" + requireEnum.name + \" \" + requireEnum.alias + \"\\n\";\n            } else {\n                codeOut += \"#define \" + requireEnum.name + \" \" + requireEnum.value + \"\\n\";\n            }\n            codegenState.MarkDefineAsOutput(requireEnum.name);\n        }\n    }\n\n    return VKB_SUCCESS;\n}\n\nVkbResult vkbBuildGenerateCode_C_Function(const std::string &returnTypeC, const std::string &name, const std::vector<vkbBuildFunctionParameter> &parameters, std::string &codeOut)\n{\n    /* We want to prefix the name with \"PFN_\", but sometimes it already is, in which case we don't need to add a prefix explicitly. */\n    std::string namePrefix;\n    if (name.find(\"PFN_\") == std::string::npos) {\n        namePrefix += \"PFN_\";\n    }\n\n    codeOut += \"typedef \" + returnTypeC + \" (VKAPI_PTR *\" + namePrefix + name + \")(\";\n    if (parameters.size() > 0) {\n        for (size_t iParam = 0; iParam < parameters.size(); ++iParam) {\n            if (iParam > 0) {\n                codeOut += \", \";\n            }\n            codeOut += parameters[iParam].typeC + \" \" + parameters[iParam].nameC;\n        }\n    } else {\n        codeOut += \"void\";\n    }\n    codeOut += \");\\n\";\n\n    return VKB_SUCCESS;\n}\n\nVkbResult vkbBuildGenerateCode_C_Command(vkbBuildCommand &command, const std::string &name, std::string &codeOut)\n{\n    return vkbBuildGenerateCode_C_Function(command.returnType, name, command.parameters, codeOut);\n}\n\nVkbResult vkbBuildGenerateCode_C_FuncPointer(vkbBuildFunctionPointer &funcpointer, const std::string &name, std::string &codeOut)\n{\n    return vkbBuildGenerateCode_C_Function(funcpointer.returnType, name, funcpointer.params, codeOut);\n}\n\nVkbResult vkbBuildGenerateCode_C_RequireCommands(VkbBuild &context, vkbBuildCodeGenState &codegenState, const std::vector<vkbBuildRequireCommand> &commands, std::string &codeOut)\n{\n    for (size_t iRequireCommand = 0; iRequireCommand < commands.size(); ++iRequireCommand) {\n        const vkbBuildRequireCommand &requireCommand = commands[iRequireCommand];\n\n        size_t iCommand;\n        if (vkbBuildFindCommandByName(context, requireCommand.name.c_str(), &iCommand)) {\n            vkbBuildCommand &command = context.commands[iCommand];\n            if (!codegenState.HasOutputCommand(command.name)) {\n                if (command.alias != \"\") {\n                    /*\n                    It'd be nice to just use a typedef here, but we can't because I've had cases some of them are aliased with a version that's contained in VK_ENABLE_BETA_EXTENSIONS. We need to just output\n                    the entire declaration.\n                    */\n                    size_t iBaseCommand;\n                    if (vkbBuildFindCommandByName(context, command.alias.c_str(), &iBaseCommand)) {\n                        vkbBuildGenerateCode_C_Command(context.commands[iBaseCommand], command.name, codeOut);\n                    }\n                } else {\n                    vkbBuildGenerateCode_C_Command(command, command.name, codeOut);\n                }\n                codegenState.MarkCommandAsOutput(command.name);\n            }\n        }\n    }\n\n    return VKB_SUCCESS;\n}\n\nstd::string vkbToUpper(const std::string &str)\n{\n    /* There's a better way to do this, right? */\n    std::string result;\n\n    for (size_t i = 0; i < str.length(); i += 1) {\n        result += (char)std::toupper(str[i]);\n    }\n\n    return result;\n}\n\nstd::string vkbNameToUpperCaseStyle(const std::string &name)\n{\n    std::string result = \"VK\"; // The final result will always start with \"VK\".\n\n    // Slow, but simple. We're just going to find all occurance of a capital letter and then insert an underscore. Otherwise we just convert to upper case.\n    for (size_t i = 2; i < name.length(); i += 1) { // Start at 2 since it'll always start with \"Vk\".\n        if (std::isupper(name[i])) {\n            result += \"_\";\n            result += name[i];\n        } else {\n            result += (char)std::toupper(name[i]);\n        }\n    }\n\n    return result;\n}\n\nstd::string vkbExtractTagFromName(VkbBuild &context, const std::string &name)\n{\n    for (auto tag : context.tags) {\n        if (name.length() > tag.name.length()) {\n            if (name.substr(name.length() - tag.name.length()) == tag.name) {\n                return tag.name;\n            }\n        }\n    }\n\n    // It's not tagged.\n    return \"\";\n}\n\nstd::string vkbGenerateMaxEnumToken(VkbBuild &context, const std::string &enumName)\n{\n    // First thing to do is extract the tag, if any. We need to determine thi\n    std::string tag = vkbExtractTagFromName(context, enumName);\n\n    // Convert to upper case style, minus the vendor tag. The vender tag needs to be added after the _MAX_ENUM part.\n    std::string result = vkbNameToUpperCaseStyle(std::string(enumName.begin(), enumName.end() - tag.length()));\n\n    // _MAX_ENUM needs to be added. The vendor tag, if any, comes after this.\n    result += \"_MAX_ENUM\";\n\n    // If we have a tag we need to append it to the end.\n    if (tag.length() > 0) {\n        result += \"_\" + tag;\n    }\n\n    return result;\n}\n\nVkbResult vkbBuildGenerateCode_C_Dependencies(VkbBuild &context, vkbBuildCodeGenState &codegenState, const vkbBuildCodeGenDependencies &dependencies, std::string &codeOut)\n{\n    const std::vector<size_t> &typeIndices = dependencies.typeIndexes;\n    const std::vector<size_t> &enumIndices = dependencies.enumIndexes;\n\n    // define\n    {\n        uint32_t count = 0;\n        for (size_t iType = 0; iType < typeIndices.size(); ++iType) {\n            vkbBuildType &type = context.types[typeIndices[iType]];\n            if (!codegenState.HasOutputDefine(type.name)) {\n                if (type.category == \"define\") {\n                    std::string defineValue = vkbBuildCleanDefineValue(type.verbatimValue);\n                    if (defineValue.size() > 0) {\n                        codeOut += defineValue + \"\\n\";\n                        count += 1;\n                        codegenState.MarkDefineAsOutput(type.name);\n                    }\n                }\n            }\n        }\n        if (count > 0) { codeOut += \"\\n\"; }\n\n        // #define-style enums.\n        count = 0;\n        for (size_t iEnum = 0; iEnum < enumIndices.size(); ++iEnum) {\n            vkbBuildEnums &enums = context.enums[enumIndices[iEnum]];\n            if (!codegenState.HasOutputDefine(enums.enums[0].name)) {\n                if (enums.type == \"\") {\n                    if (enums.enums[0].alias != \"\") {\n                        codeOut += \"#define \" + enums.enums[0].name + \" \" + enums.enums[0].alias + \"\\n\";\n                    } else {\n                        codeOut += \"#define \" + enums.enums[0].name + \" \" + enums.enums[0].value + \"\\n\";\n                    }\n                    count += 1;\n                    codegenState.MarkDefineAsOutput(enums.enums[0].name);\n                }\n            }\n        }\n        if (count > 0) { codeOut += \"\\n\"; }\n    }\n\n    // basetype\n    {\n        uint32_t count = 0;\n        for (size_t iType = 0; iType < typeIndices.size(); ++iType) {\n            vkbBuildType &type = context.types[typeIndices[iType]];\n            if (!codegenState.HasOutputType(type.name)) {\n                if (type.category == \"basetype\") {\n                    codeOut += type.verbatimValue + \"\\n\";\n                    count += 1;\n                    codegenState.MarkTypeAsOutput(type.name);\n                }\n            }\n        }\n        if (count > 0) { codeOut += \"\\n\"; }\n    }\n\n    // handle\n    {\n        uint32_t count = 0;\n        for (size_t iType = 0; iType < typeIndices.size(); ++iType) {\n            vkbBuildType &type = context.types[typeIndices[iType]];\n            if (!codegenState.HasOutputType(type.name)) {\n                if (type.category == \"handle\") {\n                    if (type.alias != \"\") {\n                        codeOut += \"typedef \" + type.alias + \" \" + type.name + \";\\n\";\n                    } else {\n                        codeOut += type.type + \"(\" + type.name + \")\\n\";\n                        count += 1;\n                    }\n                    codegenState.MarkTypeAsOutput(type.name);\n                }\n            }\n        }\n        if (count > 0) { codeOut += \"\\n\"; }\n    }\n\n\n    // NOTE: bitmask and enum types must be done in the same iteration because there's been times where an aliased bitmask or enum is typed differently to it's aliased type.\n\n    // bitmask and enum.\n    {\n        uint32_t count = 0;\n        for (size_t iType = 0; iType < typeIndices.size(); ++iType) {\n            vkbBuildType &type = context.types[typeIndices[iType]];\n            if (!codegenState.HasOutputType(type.name)) {\n                if (type.category == \"bitmask\" || type.category == \"enum\") {\n                    if (type.alias != \"\") {\n                        codeOut += \"typedef \" + type.alias + \" \" + type.name + \";\\n\";\n                    } else {\n                        if (type.category == \"bitmask\") {\n                            if (type.requires.length() > 0 || type.bitvalues.length() > 0) {\n                                size_t iEnums;\n                                bool enumsFound;\n                                \n                                if (type.requires.length() > 0) {\n                                    enumsFound = vkbBuildFindEnumByName(context, type.requires.c_str(), &iEnums);\n                                } else {\n                                    assert(type.bitvalues.length() > 0);\n                                    enumsFound = vkbBuildFindEnumByName(context, type.bitvalues.c_str(), &iEnums);\n                                }\n\n                                if (enumsFound) {\n                                    vkbBuildEnums &enums = context.enums[iEnums];\n                                    uint32_t enumValueCount = 0;\n                                    std::vector<std::string> outputEnums;\n                                    std::string enumValuePrefix;\n                                    bool using64BitFlags;\n\n                                    codeOut += '\\n';\n\n                                    if (type.bitvalues.length() == 0) {\n                                        /* 32-bit enums. Use an enum. */\n                                        using64BitFlags = false;\n                                        codeOut += \"typedef enum\\n\";\n                                        codeOut += \"{\\n\";\n                                        enumValuePrefix = \"    \";\n                                    } else {\n                                        /* 64-bit enums. Cannot use an enum. */\n                                        using64BitFlags = true;\n                                        codeOut += \"typedef \"; codeOut += type.type; codeOut += \" \"; codeOut += enums.name; codeOut += \";\\n\";\n                                        enumValuePrefix = \"static const \"; enumValuePrefix += enums.name; enumValuePrefix += \" \";\n                                    }\n                                    \n                                    for (size_t iEnumValue = 0; iEnumValue < enums.enums.size(); ++iEnumValue) {\n                                        if (!using64BitFlags && iEnumValue > 0) {\n                                            codeOut += \",\\n\";\n                                        }\n\n                                        /*\n                                        When outputting 64-bit flags we can't assign to aliased types in case some compilers\n                                        complain about it not being const. We therefore need to evaluate the aliased types.\n                                        */\n                                        vkbBuildEnum enumValue;\n                                        if (using64BitFlags && enums.enums[iEnumValue].alias != \"\") {\n                                            if (!vkbBuildFindEnumValue(context, enums.enums[iEnumValue].alias, enumValue)) {\n                                                /* Couldn't find the aliased type. */\n                                                enumValue = enums.enums[iEnumValue];\n                                            }\n                                        } else {\n                                            enumValue = enums.enums[iEnumValue];\n                                        }\n\n                                        if (enumValue.bitpos.length() > 0) {\n                                            codeOut += enumValuePrefix + enums.enums[iEnumValue].name + \" = \" + vkbBuildBitPosToHexStringEx(atoi(enumValue.bitpos.c_str()), enums.name);\n                                        } else {\n                                            if (enumValue.alias != \"\") {\n                                                codeOut += enumValuePrefix + enums.enums[iEnumValue].name + \" = \" + enumValue.alias;\n                                            } else {\n                                                codeOut += enumValuePrefix + enums.enums[iEnumValue].name + \" = \" + enumValue.value;\n                                            }\n                                        }\n                                        if (using64BitFlags) {\n                                            codeOut += \";\\n\";\n                                        }\n                                        outputEnums.push_back(enums.enums[iEnumValue].name);\n\n                                        enumValueCount += 1;\n                                    }\n\n                                    // Check if any features extend the enum.\n                                    for (size_t iOtherFeature = 0; iOtherFeature < context.features.size(); ++iOtherFeature) {\n                                        vkbBuildFeature &otherFeature = context.features[iOtherFeature];\n                                        for (size_t iOtherRequire = 0; iOtherRequire < otherFeature.requires.size(); ++iOtherRequire) {\n                                            vkbBuildRequire &otherRequire = otherFeature.requires[iOtherRequire];\n                                            for (size_t iOtherEnum = 0; iOtherEnum < otherRequire.enums.size(); ++iOtherEnum) {\n                                                vkbBuildRequireEnum &otherRequireEnum = otherRequire.enums[iOtherEnum];\n                                                if (otherRequireEnum.extends == enums.name) {\n                                                    if (otherRequireEnum.alias == \"\" && !vkbContains(outputEnums, otherRequireEnum.name)) {\n                                                        if (!using64BitFlags && enumValueCount > 0) {\n                                                            codeOut += \",\\n\";\n                                                        }\n                                                        if (otherRequireEnum.bitpos.length() > 0) {\n                                                            codeOut += enumValuePrefix + otherRequireEnum.name + \" = \" + vkbBuildBitPosToHexStringEx(atoi(otherRequireEnum.bitpos.c_str()), otherRequireEnum.extends);\n                                                        } else {\n                                                            codeOut += enumValuePrefix + otherRequireEnum.name + \" = \" + otherRequireEnum.value;\n                                                        }\n                                                        if (using64BitFlags) {\n                                                            codeOut += \";\\n\";\n                                                        }\n                                                        outputEnums.push_back(otherRequireEnum.name);\n                                                    \n                                                        enumValueCount += 1;\n                                                    }\n                                                }\n                                            }\n                                        }\n                                    }\n\n                                    for (size_t iExtension = 0; iExtension < context.extensions.size(); ++iExtension) {\n                                        vkbBuildExtension &extension = context.extensions[iExtension];\n                                        for (size_t iOtherRequire = 0; iOtherRequire < extension.requires.size(); ++iOtherRequire) {\n                                            vkbBuildRequire &otherRequire = extension.requires[iOtherRequire];\n                                            for (size_t iOtherEnum = 0; iOtherEnum < otherRequire.enums.size(); ++iOtherEnum) {\n                                                vkbBuildRequireEnum &otherRequireEnum = otherRequire.enums[iOtherEnum];\n                                                if (otherRequireEnum.extends == enums.name) {\n                                                    if (otherRequireEnum.alias == \"\" && !vkbContains(outputEnums, otherRequireEnum.name)) {\n                                                        if (!using64BitFlags && enumValueCount > 0) {\n                                                            codeOut += \",\\n\";\n                                                        }\n                                                        if (otherRequireEnum.bitpos.length() > 0) {\n                                                            codeOut += enumValuePrefix + otherRequireEnum.name + \" = \" + vkbBuildBitPosToHexStringEx(atoi(otherRequireEnum.bitpos.c_str()), otherRequireEnum.extends);\n                                                        } else {\n                                                            codeOut += enumValuePrefix + otherRequireEnum.name + \" = \" + otherRequireEnum.value;\n                                                        }\n                                                        if (using64BitFlags) {\n                                                            codeOut += \";\\n\";\n                                                        }\n                                                        outputEnums.push_back(otherRequireEnum.name);\n\n                                                        enumValueCount += 1;\n                                                    }\n                                                }\n                                            }\n                                        }\n                                    }\n\n\n                                    // Aliased enums.\n                                    for (size_t iOtherFeature = 0; iOtherFeature < context.features.size(); ++iOtherFeature) {\n                                        vkbBuildFeature &otherFeature = context.features[iOtherFeature];\n                                        for (size_t iOtherRequire = 0; iOtherRequire < otherFeature.requires.size(); ++iOtherRequire) {\n                                            vkbBuildRequire &otherRequire = otherFeature.requires[iOtherRequire];\n                                            for (size_t iOtherEnum = 0; iOtherEnum < otherRequire.enums.size(); ++iOtherEnum) {\n                                                vkbBuildRequireEnum &otherRequireEnum = otherRequire.enums[iOtherEnum];\n                                                if (otherRequireEnum.extends == enums.name) {\n                                                    if (otherRequireEnum.alias != \"\" && !vkbContains(outputEnums, otherRequireEnum.name)) {\n                                                        if (!using64BitFlags && enumValueCount > 0) {\n                                                            codeOut += \",\\n\";\n                                                        }\n\n                                                        if (using64BitFlags) {\n                                                            vkbBuildEnum enumValue;\n                                                            if (vkbBuildFindEnumValue(context, otherRequireEnum.alias, enumValue)) {\n                                                                if (enumValue.bitpos.length() > 0) {\n                                                                    codeOut += enumValuePrefix + otherRequireEnum.name + \" = \" + vkbBuildBitPosToHexStringEx(atoi(enumValue.bitpos.c_str()), otherRequireEnum.extends);\n                                                                } else {\n                                                                    codeOut += enumValuePrefix + otherRequireEnum.name + \" = \" + enumValue.value;\n                                                                }\n\n                                                                codeOut += \";\\n\";\n                                                            } else {\n                                                                /* Couldn't find the aliased type. */\n                                                                codeOut += enumValuePrefix + otherRequireEnum.name + \" = \" + otherRequireEnum.alias + \";\\n\";\n                                                            }\n                                                        } else {\n                                                            codeOut += enumValuePrefix + otherRequireEnum.name + \" = \" + otherRequireEnum.alias;\n                                                        }\n                                                        \n                                                        outputEnums.push_back(otherRequireEnum.name);\n                                                        enumValueCount += 1;\n                                                    }\n                                                }\n                                            }\n                                        }\n                                    }\n\n                                    for (size_t iExtension = 0; iExtension < context.extensions.size(); ++iExtension) {\n                                        vkbBuildExtension &extension = context.extensions[iExtension];\n                                        for (size_t iOtherRequire = 0; iOtherRequire < extension.requires.size(); ++iOtherRequire) {\n                                            vkbBuildRequire &otherRequire = extension.requires[iOtherRequire];\n                                            for (size_t iOtherEnum = 0; iOtherEnum < otherRequire.enums.size(); ++iOtherEnum) {\n                                                vkbBuildRequireEnum &otherRequireEnum = otherRequire.enums[iOtherEnum];\n                                                if (otherRequireEnum.extends == enums.name) {\n                                                    if (otherRequireEnum.alias != \"\" && !vkbContains(outputEnums, otherRequireEnum.name)) {\n                                                        if (!using64BitFlags && enumValueCount > 0) {\n                                                            codeOut += \",\\n\";\n                                                        }\n\n                                                        if (using64BitFlags) {\n                                                            vkbBuildEnum enumValue;\n                                                            if (vkbBuildFindEnumValue(context, otherRequireEnum.alias, enumValue)) {\n                                                                if (enumValue.bitpos.length() > 0) {\n                                                                    codeOut += enumValuePrefix + otherRequireEnum.name + \" = \" + vkbBuildBitPosToHexStringEx(atoi(enumValue.bitpos.c_str()), otherRequireEnum.extends);\n                                                                } else {\n                                                                    codeOut += enumValuePrefix + otherRequireEnum.name + \" = \" + enumValue.value;\n                                                                }\n\n                                                                codeOut += \";\\n\";\n                                                            } else {\n                                                                /* Couldn't find the aliased type. */\n                                                                codeOut += enumValuePrefix + otherRequireEnum.name + \" = \" + otherRequireEnum.alias + \";\\n\";\n                                                            }\n                                                        } else {\n                                                            codeOut += enumValuePrefix + otherRequireEnum.name + \" = \" + otherRequireEnum.alias;\n                                                        }\n\n                                                        outputEnums.push_back(otherRequireEnum.name);\n                                                        enumValueCount += 1;\n                                                    }\n                                                }\n                                            }\n                                        }\n                                    }\n\n                                    /* We need to do the _ENUM_MAX[_VENDOR] part. */\n                                    if (!using64BitFlags) {\n                                        if (enumValueCount > 0) {\n                                            codeOut += \",\\n\";\n                                        }\n                                        codeOut += \"    \" + vkbGenerateMaxEnumToken(context, enums.name) + \" = 0x7FFFFFFF\";\n\n                                        codeOut += \"\\n} \" + enums.name + \";\\n\";\n                                    }\n\n                                    count += 1;\n                                }\n                            }\n\n                            codeOut += \"typedef \" + type.type + \" \" + type.name + \";\\n\";\n                        } /* bitmask */\n\n                        if (type.category == \"enum\") {\n                            size_t iEnums;\n                            if (vkbBuildFindEnumByName(context, type.name.c_str(), &iEnums)) {\n                                vkbBuildEnums &enums = context.enums[iEnums];\n                                if (enums.type == \"enum\") {\n                                    std::vector<std::string> outputEnums;\n\n                                    codeOut += \"typedef enum\\n\";\n                                    codeOut += \"{\\n\";\n                                    for (size_t iEnumValue = 0; iEnumValue < enums.enums.size(); ++iEnumValue) {\n                                        if (iEnumValue > 0) {\n                                            codeOut += \",\\n\";\n                                        }\n                                        if (enums.enums[iEnumValue].alias != \"\") {\n                                            codeOut += \"    \" + enums.enums[iEnumValue].name + \" = \" + enums.enums[iEnumValue].alias;\n                                        } else {\n                                            codeOut += \"    \" + enums.enums[iEnumValue].name + \" = \" + enums.enums[iEnumValue].value;\n                                        }\n                                        outputEnums.push_back(enums.enums[iEnumValue].name);\n                                    }\n\n                                    // For cleanliness, this is done in two passes so that aliased types are at the bottom of the enum.\n\n                                    // We need to check other features and extensions in case we need to extend this enum.\n                                    for (size_t iOtherFeature = 0; iOtherFeature < context.features.size(); ++iOtherFeature) {\n                                        vkbBuildFeature &otherFeature = context.features[iOtherFeature];\n                                        for (size_t iOtherRequire = 0; iOtherRequire < otherFeature.requires.size(); ++iOtherRequire) {\n                                            vkbBuildRequire &otherRequire = otherFeature.requires[iOtherRequire];\n                                            for (size_t iOtherEnum = 0; iOtherEnum < otherRequire.enums.size(); ++iOtherEnum) {\n                                                vkbBuildRequireEnum &otherRequireEnum = otherRequire.enums[iOtherEnum];\n                                                if (otherRequireEnum.extends == enums.name) {\n                                                    if (otherRequireEnum.alias == \"\" && !vkbContains(outputEnums, otherRequireEnum.name)) {\n                                                        codeOut += \",\\n\";\n                                                        if (otherRequireEnum.value != \"\") {\n                                                            codeOut += \"    \" + otherRequireEnum.name + \" = \" + otherRequireEnum.value;\n                                                        } else {\n                                                            codeOut += \"    \" + otherRequireEnum.name + \" = \" + vkbBuildCalculateExtensionEnumValue(otherRequireEnum);\n                                                        }\n                                                        \n                                                        outputEnums.push_back(otherRequireEnum.name);\n                                                    }\n                                                }\n                                            }\n                                        }\n                                    }\n\n                                    // Same thing for extensions.\n                                    for (size_t iExtension = 0; iExtension < context.extensions.size(); ++iExtension) {\n                                        vkbBuildExtension &extension = context.extensions[iExtension];\n                                        for (size_t iOtherRequire = 0; iOtherRequire < extension.requires.size(); ++iOtherRequire) {\n                                            vkbBuildRequire &otherRequire = extension.requires[iOtherRequire];\n                                            for (size_t iOtherEnum = 0; iOtherEnum < otherRequire.enums.size(); ++iOtherEnum) {\n                                                vkbBuildRequireEnum &otherRequireEnum = otherRequire.enums[iOtherEnum];\n                                                if (otherRequireEnum.extends == enums.name) {\n                                                    if (otherRequireEnum.alias == \"\" && !vkbContains(outputEnums, otherRequireEnum.name)) {\n                                                        codeOut += \",\\n\";\n                                                        if (otherRequireEnum.value != \"\") {\n                                                            codeOut += \"    \" + otherRequireEnum.name + \" = \" + otherRequireEnum.value;\n                                                        } else {\n                                                            codeOut += \"    \" + otherRequireEnum.name + \" = \" + vkbBuildCalculateExtensionEnumValue(otherRequireEnum, (otherRequireEnum.extnumber != \"\") ? otherRequireEnum.extnumber : extension.number);\n                                                        }\n                                                        outputEnums.push_back(otherRequireEnum.name);\n                                                    }\n                                                }\n                                            }\n                                        }\n                                    }\n\n\n                                    // Aliased enum values.\n                                    for (size_t iOtherFeature = 0; iOtherFeature < context.features.size(); ++iOtherFeature) {\n                                        vkbBuildFeature &otherFeature = context.features[iOtherFeature];\n                                        for (size_t iOtherRequire = 0; iOtherRequire < otherFeature.requires.size(); ++iOtherRequire) {\n                                            vkbBuildRequire &otherRequire = otherFeature.requires[iOtherRequire];\n                                            for (size_t iOtherEnum = 0; iOtherEnum < otherRequire.enums.size(); ++iOtherEnum) {\n                                                vkbBuildRequireEnum &otherRequireEnum = otherRequire.enums[iOtherEnum];\n                                                if (otherRequireEnum.extends == enums.name) {\n                                                    if (otherRequireEnum.alias != \"\" && !vkbContains(outputEnums, otherRequireEnum.name)) {\n                                                        codeOut += \",\\n\";\n                                                        codeOut += \"    \" + otherRequireEnum.name + \" = \" + otherRequireEnum.alias;\n                                                        outputEnums.push_back(otherRequireEnum.name);\n                                                    }\n                                                }\n                                            }\n                                        }\n                                    }\n\n                                    for (size_t iExtension = 0; iExtension < context.extensions.size(); ++iExtension) {\n                                        vkbBuildExtension &extension = context.extensions[iExtension];\n                                        for (size_t iOtherRequire = 0; iOtherRequire < extension.requires.size(); ++iOtherRequire) {\n                                            vkbBuildRequire &otherRequire = extension.requires[iOtherRequire];\n                                            for (size_t iOtherEnum = 0; iOtherEnum < otherRequire.enums.size(); ++iOtherEnum) {\n                                                vkbBuildRequireEnum &otherRequireEnum = otherRequire.enums[iOtherEnum];\n                                                if (otherRequireEnum.extends == enums.name) {\n                                                    if (otherRequireEnum.alias != \"\" && !vkbContains(outputEnums, otherRequireEnum.name)) {\n                                                        codeOut += \",\\n\";\n                                                        codeOut += \"    \" + otherRequireEnum.name + \" = \" + otherRequireEnum.alias;\n                                                        outputEnums.push_back(otherRequireEnum.name);\n                                                    }\n                                                }\n                                            }\n                                        }\n                                    }\n\n                                    /* We need to do the _ENUM_MAX[_VENDOR] part. */\n                                    codeOut += \",\\n\";\n                                    codeOut += \"    \" + vkbGenerateMaxEnumToken(context, enums.name) + \" = 0x7FFFFFFF\";\n\n                                    codeOut += \"\\n} \" + enums.name + \";\\n\\n\";\n                                    count += 1;\n                                }\n                            }\n                        }\n                    }\n\n                    codegenState.MarkTypeAsOutput(type.name);\n                }\n            }\n        }\n        if (count > 0) { codeOut += \"\\n\"; }\n    }\n\n\n    // struct, unions and and funcpointer. There's an unfortunate complication in that some function pointers may depend on structures,\n    // and some structures may depend on function pointers. All we do is make sure we group the output of each of these types into the\n    // same iteration and it should just work.\n    {\n        bool wasFuncPointerOutputLast = false;\n        uint32_t count = 0;\n        for (size_t iType = 0; iType < typeIndices.size(); ++iType) {\n            vkbBuildType &type = context.types[typeIndices[iType]];\n            if (!codegenState.HasOutputType(type.name)) {\n                if (type.category == \"struct\" || type.category == \"union\") {\n                    if (type.alias != \"\") {\n                        codeOut += \"typedef \" + type.alias + \" \" + type.name + \";\\n\\n\";\n                    } else {\n                        if (wasFuncPointerOutputLast) {\n                            codeOut += \"\\n\";    // Separate function pointers and struct/union types with a space.\n                        }\n                        codeOut += \"typedef \" + type.category + \" \" + type.name + \"\\n\";\n                        codeOut += \"{\\n\";\n                        for (size_t iMember = 0; iMember < type.structData.members.size(); ++iMember) {\n                            codeOut += \"    \" + type.structData.members[iMember].typeC + \" \" + type.structData.members[iMember].nameC + \";\\n\";\n                        }\n                        codeOut += \"} \" + type.name + \";\\n\\n\";\n                        count += 1;\n                    }\n                    codegenState.MarkTypeAsOutput(type.name);\n                    wasFuncPointerOutputLast = false;\n                }\n\n                if (type.category == \"funcpointer\") {\n                    if (type.alias != \"\") {\n                        /*\n                        It'd be nice to just use a typedef here, but we can't because I've had cases some of them are aliased with a version that's contained in VK_ENABLE_BETA_EXTENSIONS. We need to just output\n                        the entire declaration.\n                        */\n                        size_t iBaseType;\n                        if (vkbBuildFindTypeByName(context, type.alias.c_str(), &iBaseType)) {\n                            vkbBuildGenerateCode_C_FuncPointer(context.types[iBaseType].funcpointer, type.name, codeOut);\n                            count += 1;\n                        }\n                    } else {\n                        vkbBuildGenerateCode_C_FuncPointer(type.funcpointer, type.name, codeOut);\n                        count += 1;\n                    }\n                    codegenState.MarkTypeAsOutput(type.name);\n                    wasFuncPointerOutputLast = true;\n                }\n            }\n        }\n        if (count > 0) { codeOut += \"\\n\"; }\n    }\n\n    return VKB_SUCCESS;\n}\n\nVkbResult vkbBuildGenerateCode_C_StructInitializers(VkbBuild &context, vkbBuildCodeGenState &codegenState, const vkbBuildCodeGenDependencies &dependencies, std::string &codeOut)\n{\n    const std::vector<size_t> &typeIndices = dependencies.typeIndexes;\n\n    // Generate initializer functions for structs that have an sType member.\n    for (size_t iType = 0; iType < typeIndices.size(); ++iType) {\n        vkbBuildType &type = context.types[typeIndices[iType]];\n        \n        // Only process structs (not unions, aliases, etc.) and only if not already output.\n        if (type.category == \"struct\" && type.alias == \"\" && type.structData.members.size() > 0 && !codegenState.HasOutputInitializer(type.name)) {\n            // Check if the struct has an sType member with a values attribute.\n            std::string sTypeValue = \"\";\n            for (size_t iMember = 0; iMember < type.structData.members.size(); ++iMember) {\n                const vkbBuildStructMember &member = type.structData.members[iMember];\n                if (member.name == \"sType\" && member.values != \"\") {\n                    sTypeValue = member.values;\n                    break;\n                }\n            }\n            \n            // If we found an sType, generate an initializer function.\n            if (sTypeValue != \"\") {\n                codeOut += \"static VKBIND_INLINE \" + type.name + \" \" + type.name + \"Init(void)\\n\";\n                codeOut += \"{\\n\";\n                codeOut += \"    \" + type.name + \" result;\\n\";\n                codeOut += \"    VKBIND_ZERO_MEMORY(&result, sizeof(result));\\n\";\n                codeOut += \"    result.sType = \" + sTypeValue + \";\\n\";\n                codeOut += \"    return result;\\n\";\n                codeOut += \"}\\n\\n\";\n                codegenState.MarkInitializerAsOutput(type.name);\n            }\n        }\n    }\n\n    return VKB_SUCCESS;\n}\n\nVkbResult vkbBuildGenerateCode_C_AllStructInitializers(VkbBuild &context, std::string &codeOut)\n{\n    VkbResult result;\n    vkbBuildCodeGenState codegenState;\n\n    // Extract all dependencies for each feature and extension.\n    for (size_t iFeature = 0; iFeature < context.features.size(); ++iFeature) {\n        vkbBuildCodeGenDependencies dependencies;\n        result = dependencies.ParseFeatureDependencies(context, context.features[iFeature]);\n        if (result != VKB_SUCCESS) {\n            return result;\n        }\n        codegenState.featureDependencies.push_back(dependencies);\n    }\n\n    for (size_t iExtension = 0; iExtension < context.extensions.size(); ++iExtension) {\n        vkbBuildCodeGenDependencies dependencies;\n        result = dependencies.ParseExtensionDependencies(context, context.extensions[iExtension]);\n        if (result != VKB_SUCCESS) {\n            return result;\n        }\n        codegenState.extensionDependencies.push_back(dependencies);\n    }\n\n    codeOut += \"/* vkbind Struct Initializer Helpers */\\n\";\n    codeOut += \"/* These functions initialize structs with sType set correctly and all other fields zeroed. */\\n\\n\";\n\n    // Generate initializers for all features.\n    for (size_t iFeature = 0; iFeature < context.features.size(); ++iFeature) {\n        result = vkbBuildGenerateCode_C_StructInitializers(context, codegenState, codegenState.featureDependencies[iFeature], codeOut);\n        if (result != VKB_SUCCESS) {\n            return result;\n        }\n    }\n\n    // Generate initializers for cross-platform extensions.\n    for (size_t iExtension = 0; iExtension < context.extensions.size(); ++iExtension) {\n        vkbBuildExtension &extension = context.extensions[iExtension];\n        if (extension.platform == \"\") {\n            result = vkbBuildGenerateCode_C_StructInitializers(context, codegenState, codegenState.extensionDependencies[iExtension], codeOut);\n            if (result != VKB_SUCCESS) {\n                return result;\n            }\n        }\n    }\n\n    // Generate initializers for platform-specific extensions.\n    for (size_t iPlatform = 0; iPlatform < context.platforms.size(); ++iPlatform) {\n        vkbBuildPlatform &platform = context.platforms[iPlatform];\n\n        // Support for Mir is being dropped from Vulkan. Skip it.\n        if (platform.name == \"mir\") {\n            continue;\n        }\n        \n        bool hasPlatformInitializers = false;\n        std::string platformCode = \"\";\n\n        for (size_t iExtension = 0; iExtension < context.extensions.size(); ++iExtension) {\n            vkbBuildExtension &extension = context.extensions[iExtension];\n            if (extension.platform == platform.name) {\n                std::string initCode = \"\";\n                result = vkbBuildGenerateCode_C_StructInitializers(context, codegenState, codegenState.extensionDependencies[iExtension], initCode);\n                if (result != VKB_SUCCESS) {\n                    return result;\n                }\n                if (initCode.length() > 0) {\n                    hasPlatformInitializers = true;\n                    platformCode += initCode;\n                }\n            }\n        }\n\n        if (hasPlatformInitializers) {\n            codeOut += \"#ifdef \" + platform.protect + \"\\n\";\n            codeOut += platformCode;\n            codeOut += \"#endif /*\" + platform.protect + \"*/\\n\\n\";\n        }\n    }\n\n    return VKB_SUCCESS;\n}\n\nVkbResult vkbBuildGenerateCode_C_Feature(VkbBuild &context, vkbBuildCodeGenState &codegenState, size_t iFeature, std::string &codeOut)\n{\n    codeOut += \"\\n#define \" + context.features[iFeature].name + \" 1\\n\";\n\n    // Includes.\n    VkbResult result = vkbBuildGenerateCode_C_DependencyIncludes(context, codegenState, codegenState.featureDependencies[iFeature], codeOut);\n    if (result != VKB_SUCCESS) {\n        return result;\n    }\n\n    // #define-style enums within each require tag.\n    {\n        for (size_t iRequire = 0; iRequire < context.features[iFeature].requires.size(); ++iRequire) {\n            vkbBuildRequire &require = context.features[iFeature].requires[iRequire];\n            result = vkbBuildGenerateCode_C_RequireDefineEnums(context, codegenState, require, codeOut);\n            if (result != VKB_SUCCESS) {\n                return result;\n            }\n        }\n        codeOut += \"\\n\";\n    }\n\n    result = vkbBuildGenerateCode_C_Dependencies(context, codegenState, codegenState.featureDependencies[iFeature], codeOut);\n    if (result != VKB_SUCCESS) {\n        return result;\n    }\n\n    // command\n    {\n        for (size_t iRequire = 0; iRequire < context.features[iFeature].requires.size(); ++iRequire) {\n            vkbBuildRequire &require = context.features[iFeature].requires[iRequire];\n            result = vkbBuildGenerateCode_C_RequireCommands(context, codegenState, require.commands, codeOut);\n            if (result != VKB_SUCCESS) {\n                return result;\n            }\n        }\n    }\n\n    return VKB_SUCCESS;\n}\n\nVkbResult vkbBuildGenerateCode_C_Extension(VkbBuild &context, vkbBuildCodeGenState &codegenState, size_t iExtension, std::string &codeOut)\n{\n    std::string intermediaryCode = \"\";\n\n    vkbBuildExtension &extension = context.extensions[iExtension];\n\n    if (context.codegenConfig.treatExtensionsAsSeparateHeaders) {\n        codeOut += \"#ifndef \" + vkbToUpper(extension.name) + \"_H_\\n\";\n        codeOut += \"#define \" + vkbToUpper(extension.name) + \"_H_\\n\\n\";\n    }\n\n    // Extension-specific stuff. Extensions can define enums in #define style directly within the <require> tag. These need to be handled here.\n    intermediaryCode += \"\\n#define \" + extension.name + \" 1\\n\";\n\n    // Includes.\n    VkbResult result = vkbBuildGenerateCode_C_DependencyIncludes(context, codegenState, codegenState.extensionDependencies[iExtension], intermediaryCode);\n    if (result != VKB_SUCCESS) {\n        return result;\n    }\n\n    // #define-style enums within each require tag.\n    {\n        for (size_t iRequire = 0; iRequire < extension.requires.size(); ++iRequire) {\n            vkbBuildRequire &require = extension.requires[iRequire];\n            result = vkbBuildGenerateCode_C_RequireDefineEnums(context, codegenState, require, intermediaryCode);\n            if (result != VKB_SUCCESS) {\n                return result;\n            }\n        }\n        intermediaryCode += \"\\n\";\n    }\n\n    result = vkbBuildGenerateCode_C_Dependencies(context, codegenState, codegenState.extensionDependencies[iExtension], intermediaryCode);\n    if (result != VKB_SUCCESS) {\n        return result;\n    }\n\n    // command\n    {\n        for (size_t iRequire = 0; iRequire < context.extensions[iExtension].requires.size(); ++iRequire) {\n            vkbBuildRequire &require = context.extensions[iExtension].requires[iRequire];\n            result = vkbBuildGenerateCode_C_RequireCommands(context, codegenState, require.commands, intermediaryCode);\n            if (result != VKB_SUCCESS) {\n                return result;\n            }\n        }\n    }\n\n    /* We have some custom-named types for the Xlib backend. */\n    if (extension.name == \"VK_KHR_xlib_surface\" || extension.name == \"VK_EXT_acquire_xlib_display\") {\n        vkbReplaceAllInline(intermediaryCode, \"Display* \", \"vkbind_Display* \");\n        vkbReplaceAllInline(intermediaryCode, \"Window \", \"vkbind_Window \");\n        vkbReplaceAllInline(intermediaryCode, \"VisualID \", \"vkbind_VisualID \");\n    }\n\n    codeOut += \"\\n\" + vkbTrim(intermediaryCode) + \"\\n\";\n\n    if (context.codegenConfig.treatExtensionsAsSeparateHeaders) {\n        codeOut += \"#endif /* \" + vkbToUpper(extension.name) + \"_H_ */\\n\\n\";\n    }\n\n    codeOut += \"\\n\";\n\n    return VKB_SUCCESS;\n}\n\nVkbResult vkbBuildReorderExtensions(VkbBuild &context)\n{\n    std::vector<vkbBuildExtension> promotedExtensions;\n\n    for (size_t iExtension = 0; iExtension < context.extensions.size(); ++iExtension) {\n        vkbBuildExtension &extension = context.extensions[iExtension];\n        if (extension.promotedto != \"\") {\n            promotedExtensions.push_back(extension);\n        }\n    }\n\n    // At this point we have the promoted extensions, so now we need to remove them and then reinsert them after their promoted equivalent.\n    for (size_t iPromotedExtension = 0; iPromotedExtension < promotedExtensions.size(); ++iPromotedExtension) {\n        size_t iOldIndex;\n        size_t iNewIndex;\n        if (vkbBuildFindExtensionByName(context, promotedExtensions[iPromotedExtension].name.c_str(),       &iOldIndex) &&\n            vkbBuildFindExtensionByName(context, promotedExtensions[iPromotedExtension].promotedto.c_str(), &iNewIndex)) {\n            context.extensions.erase( context.extensions.begin() + iOldIndex);\n            context.extensions.insert(context.extensions.begin() + iNewIndex, promotedExtensions[iPromotedExtension]);\n        }\n    }\n\n    return VKB_SUCCESS;\n}\n\nVkbResult vkbBuildGenerateCode_C_Main(VkbBuild &context, std::string &codeOut)\n{\n    VkbResult result;\n    vkbBuildCodeGenState codegenState;\n\n    // We need to reorder extensions so that any that have been promoted are located _after_ the promoted extension.\n    result = vkbBuildReorderExtensions(context);\n    if (result != VKB_SUCCESS) {\n        return result;\n    }\n    \n\n    // The first thing to do is extract all of the dependencies for each feature and extension.\n    for (size_t iFeature = 0; iFeature < context.features.size(); ++iFeature) {\n        vkbBuildCodeGenDependencies dependencies;\n        result = dependencies.ParseFeatureDependencies(context, context.features[iFeature]);\n        if (result != VKB_SUCCESS) {\n            return result;\n        }\n\n        codegenState.featureDependencies.push_back(dependencies);\n    }\n\n    for (size_t iExtension = 0; iExtension < context.extensions.size(); ++iExtension) {\n        vkbBuildCodeGenDependencies dependencies;\n        result = dependencies.ParseExtensionDependencies(context, context.extensions[iExtension]);\n        if (result != VKB_SUCCESS) {\n            return result;\n        }\n\n        codegenState.extensionDependencies.push_back(dependencies);\n    }\n\n\n    // Features.\n    for (size_t iFeature = 0; iFeature < context.features.size(); ++iFeature) {\n        result = vkbBuildGenerateCode_C_Feature(context, codegenState, iFeature, codeOut);\n        if (result != VKB_SUCCESS) {\n            return result;\n        }\n    }\n\n    // Cross-platform extensions.\n    for (size_t iExtension = 0; iExtension < context.extensions.size(); ++iExtension) {\n        vkbBuildExtension &extension = context.extensions[iExtension];\n        if (extension.platform == \"\") {\n            result = vkbBuildGenerateCode_C_Extension(context, codegenState, iExtension, codeOut);\n            if (result != VKB_SUCCESS) {\n                return result;\n            }\n        }\n    }\n\n    // Platform-specific extensions. We do this per-platform.\n    for (size_t iPlatform = 0; iPlatform < context.platforms.size(); ++iPlatform) {\n        vkbBuildPlatform &platform = context.platforms[iPlatform];\n\n        // Support for Mir is being dropped from Vulkan. Skip it.\n        if (platform.name == \"mir\") {\n            continue;\n        }\n        \n        codeOut += \"#ifdef \" + platform.protect + \"\\n\";\n        {\n            // I want platform-specific #include's to be the first thing inside the platform guard just for aesthetic reasons. Therefore, the\n            // \"include\" parts are done slightly differently for platform-specific extensions.\n            for (size_t iExtension = 0; iExtension < context.extensions.size(); ++iExtension) {\n                if (context.extensions[iExtension].platform == platform.name) {\n                    result = vkbBuildGenerateCode_C_DependencyIncludes(context, codegenState, codegenState.extensionDependencies[iExtension], codeOut);\n                    if (result != VKB_SUCCESS) {\n                        return result;\n                    }\n                }\n            }\n\n            for (size_t iExtension = 0; iExtension < context.extensions.size(); ++iExtension) {\n                vkbBuildExtension &extension = context.extensions[iExtension];\n                if (extension.platform == platform.name) {\n                    result = vkbBuildGenerateCode_C_Extension(context, codegenState, iExtension, codeOut);\n                    if (result != VKB_SUCCESS) {\n                        return result;\n                    }\n                }\n            }\n        }\n        codeOut += \"#endif /*\" + platform.protect + \"*/\\n\\n\";\n    }\n\n\n    return VKB_SUCCESS;\n}\n\nVkbResult vkbBuildGenerateCode_C_FuncPointersDeclGlobal(VkbBuild &context, int indentation, bool withExtern, std::string &codeOut)\n{\n    // This should be in a nice order. Features first, then platform-independent extensions, then platform-specific extensions.\n    std::vector<std::string> outputCommands;\n\n    // Features.\n    for (size_t iFeature = 0; iFeature < context.features.size(); ++iFeature) {\n        vkbBuildFeature &feature = context.features[iFeature];\n        for (size_t iRequire = 0; iRequire < feature.requires.size(); ++iRequire) {\n            vkbBuildRequire &require = feature.requires[iRequire];\n            for (size_t iRequireCommand = 0; iRequireCommand < require.commands.size(); ++iRequireCommand) {\n                size_t iCommand;\n                if (vkbBuildFindCommandByName(context, require.commands[iRequireCommand].name.c_str(), &iCommand)) {\n                    if (!vkbContains(outputCommands, require.commands[iRequireCommand].name)) {\n                        // New line if required.\n                        if (outputCommands.size() > 0) {\n                            codeOut += \"\\n\";\n                            for (int iSpace = 0; iSpace < indentation; ++iSpace) {\n                                codeOut += \" \";\n                            }\n                        }\n\n                        if (withExtern) {\n                            codeOut += \"extern \";\n                        }\n\n                        codeOut += \"PFN_\" + context.commands[iCommand].name + \" \" + context.commands[iCommand].name + \";\";\n\n                        outputCommands.push_back(require.commands[iRequireCommand].name);\n                    }\n                }\n            }\n        }\n    }\n\n    // Platform-independent extensions.\n    for (size_t iExtension = 0; iExtension < context.extensions.size(); ++iExtension) {\n        vkbBuildExtension &extension = context.extensions[iExtension];\n        if (extension.platform == \"\") {\n            for (size_t iRequire = 0; iRequire < extension.requires.size(); ++iRequire) {\n                vkbBuildRequire &require = extension.requires[iRequire];\n                for (size_t iRequireCommand = 0; iRequireCommand < require.commands.size(); ++iRequireCommand) {\n                    vkbBuildRequireCommand &requireCommand = require.commands[iRequireCommand];\n\n                    size_t iCommand;\n                    if (vkbBuildFindCommandByName(context, requireCommand.name.c_str(), &iCommand)) {\n                        if (!vkbContains(outputCommands, requireCommand.name)) {\n                            // New line if required.\n                            if (outputCommands.size() > 0) {\n                                codeOut += \"\\n\";\n                                for (int iSpace = 0; iSpace < indentation; ++iSpace) {\n                                    codeOut += \" \";\n                                }\n                            }\n\n                            if (withExtern) {\n                                codeOut += \"extern \";\n                            }\n\n                            codeOut += \"PFN_\" + context.commands[iCommand].name + \" \" + context.commands[iCommand].name + \";\";\n\n                            outputCommands.push_back(requireCommand.name);\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    // Platform-specific extensions.\n    for (size_t iPlatform = 0; iPlatform < context.platforms.size(); ++iPlatform) {\n        vkbBuildPlatform &platform = context.platforms[iPlatform];\n        codeOut += \"\\n#ifdef \" + platform.protect;\n        {\n            for (size_t iExtension = 0; iExtension < context.extensions.size(); ++iExtension) {\n                vkbBuildExtension &extension = context.extensions[iExtension];\n                if (extension.platform == platform.name) {\n                    for (size_t iRequire = 0; iRequire < extension.requires.size(); ++iRequire) {\n                        vkbBuildRequire &require = extension.requires[iRequire];\n                        for (size_t iRequireCommand = 0; iRequireCommand < require.commands.size(); ++iRequireCommand) {\n                            vkbBuildRequireCommand &requireCommand = require.commands[iRequireCommand];\n\n                            size_t iCommand;\n                            if (vkbBuildFindCommandByName(context, requireCommand.name.c_str(), &iCommand)) {\n                                if (!vkbContains(outputCommands, requireCommand.name)) {\n                                    // New line if required.\n                                    if (outputCommands.size() > 0) {\n                                        codeOut += \"\\n\";\n                                        for (int iSpace = 0; iSpace < indentation; ++iSpace) {\n                                            codeOut += \" \";\n                                        }\n                                    }\n\n                                    if (withExtern) {\n                                        codeOut += \"extern \";\n                                    }\n\n                                    codeOut += \"PFN_\" + context.commands[iCommand].name + \" \" + context.commands[iCommand].name + \";\";\n\n                                    outputCommands.push_back(requireCommand.name);\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n        }\n        codeOut += \"\\n#endif /*\" + platform.protect + \"*/\";\n    }\n\n    return VKB_SUCCESS;\n}\n\nVkbResult vkbBuildGenerateCode_C_LoadVulkanFuncPointers(VkbBuild &context, std::string &codeOut)\n{\n    // This should be in a nice order. Features first, then platform-independent extensions, then platform-specific extensions.\n    std::vector<std::string> outputCommands;\n\n    // Features.\n    for (size_t iFeature = 0; iFeature < context.features.size(); ++iFeature) {\n        vkbBuildFeature &feature = context.features[iFeature];\n        for (size_t iRequire = 0; iRequire < feature.requires.size(); ++iRequire) {\n            vkbBuildRequire &require = feature.requires[iRequire];\n            for (size_t iRequireCommand = 0; iRequireCommand < require.commands.size(); ++iRequireCommand) {\n                size_t iCommand;\n                if (vkbBuildFindCommandByName(context, require.commands[iRequireCommand].name.c_str(), &iCommand)) {\n                    if (!vkbContains(outputCommands, require.commands[iRequireCommand].name)) {\n                        // New line if required.\n                        if (outputCommands.size() > 0) {\n                            codeOut += \"\\n    \";\n                        }\n                        codeOut += \"pAPI->\" + context.commands[iCommand].name + \" = (PFN_\" + context.commands[iCommand].name + \")vkb_dlsym(g_vkbVulkanSO, \\\"\" + context.commands[iCommand].name + \"\\\");\";\n\n                        outputCommands.push_back(require.commands[iRequireCommand].name);\n                    }\n                }\n            }\n        }\n    }\n\n    // Platform-independent extensions.\n    for (size_t iExtension = 0; iExtension < context.extensions.size(); ++iExtension) {\n        vkbBuildExtension &extension = context.extensions[iExtension];\n        if (extension.platform == \"\") {\n            for (size_t iRequire = 0; iRequire < extension.requires.size(); ++iRequire) {\n                vkbBuildRequire &require = extension.requires[iRequire];\n                for (size_t iRequireCommand = 0; iRequireCommand < require.commands.size(); ++iRequireCommand) {\n                    vkbBuildRequireCommand &requireCommand = require.commands[iRequireCommand];\n\n                    size_t iCommand;\n                    if (vkbBuildFindCommandByName(context, requireCommand.name.c_str(), &iCommand)) {\n                        if (!vkbContains(outputCommands, requireCommand.name)) {\n                            // New line if required.\n                            if (outputCommands.size() > 0) {\n                                codeOut += \"\\n    \";\n                            }\n                            codeOut += \"pAPI->\" + context.commands[iCommand].name + \" = (PFN_\" + context.commands[iCommand].name + \")vkb_dlsym(g_vkbVulkanSO, \\\"\" + context.commands[iCommand].name + \"\\\");\";\n                            outputCommands.push_back(requireCommand.name);\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    // Platform-specific extensions.\n    for (size_t iPlatform = 0; iPlatform < context.platforms.size(); ++iPlatform) {\n        vkbBuildPlatform &platform = context.platforms[iPlatform];\n        codeOut += \"\\n#ifdef \" + platform.protect;\n        {\n            for (size_t iExtension = 0; iExtension < context.extensions.size(); ++iExtension) {\n                vkbBuildExtension &extension = context.extensions[iExtension];\n                if (extension.platform == platform.name) {\n                    for (size_t iRequire = 0; iRequire < extension.requires.size(); ++iRequire) {\n                        vkbBuildRequire &require = extension.requires[iRequire];\n                        for (size_t iRequireCommand = 0; iRequireCommand < require.commands.size(); ++iRequireCommand) {\n                            vkbBuildRequireCommand &requireCommand = require.commands[iRequireCommand];\n\n                            size_t iCommand;\n                            if (vkbBuildFindCommandByName(context, requireCommand.name.c_str(), &iCommand)) {\n                                if (!vkbContains(outputCommands, requireCommand.name)) {\n                                    // New line if required.\n                                    if (outputCommands.size() > 0) {\n                                        codeOut += \"\\n    \";\n                                    }\n                                    codeOut += \"pAPI->\" + context.commands[iCommand].name + \" = (PFN_\" + context.commands[iCommand].name + \")vkb_dlsym(g_vkbVulkanSO, \\\"\" + context.commands[iCommand].name + \"\\\");\";\n\n                                    outputCommands.push_back(requireCommand.name);\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n        }\n        codeOut += \"\\n#endif /*\" + platform.protect + \"*/\";\n    }\n\n    return VKB_SUCCESS;\n}\n\nVkbResult vkbBuildGenerateCode_C_SetStructAPIFromGlobal(VkbBuild &context, std::string &codeOut)\n{\n    // This should be in a nice order. Features first, then platform-independent extensions, then platform-specific extensions.\n    std::vector<std::string> outputCommands;\n\n    // Features.\n    for (size_t iFeature = 0; iFeature < context.features.size(); ++iFeature) {\n        vkbBuildFeature &feature = context.features[iFeature];\n        for (size_t iRequire = 0; iRequire < feature.requires.size(); ++iRequire) {\n            vkbBuildRequire &require = feature.requires[iRequire];\n            for (size_t iRequireCommand = 0; iRequireCommand < require.commands.size(); ++iRequireCommand) {\n                size_t iCommand;\n                if (vkbBuildFindCommandByName(context, require.commands[iRequireCommand].name.c_str(), &iCommand)) {\n                    if (!vkbContains(outputCommands, require.commands[iRequireCommand].name)) {\n                        // New line if required.\n                        if (outputCommands.size() > 0) {\n                            codeOut += \"\\n    \";\n                        }\n                        codeOut += \"pAPI->\" + context.commands[iCommand].name + \" = \" + context.commands[iCommand].name + \";\";\n\n                        outputCommands.push_back(require.commands[iRequireCommand].name);\n                    }\n                }\n            }\n        }\n    }\n\n    // Platform-independent extensions.\n    for (size_t iExtension = 0; iExtension < context.extensions.size(); ++iExtension) {\n        vkbBuildExtension &extension = context.extensions[iExtension];\n        if (extension.platform == \"\") {\n            for (size_t iRequire = 0; iRequire < extension.requires.size(); ++iRequire) {\n                vkbBuildRequire &require = extension.requires[iRequire];\n                for (size_t iRequireCommand = 0; iRequireCommand < require.commands.size(); ++iRequireCommand) {\n                    vkbBuildRequireCommand &requireCommand = require.commands[iRequireCommand];\n\n                    size_t iCommand;\n                    if (vkbBuildFindCommandByName(context, requireCommand.name.c_str(), &iCommand)) {\n                        if (!vkbContains(outputCommands, requireCommand.name)) {\n                            // New line if required.\n                            if (outputCommands.size() > 0) {\n                                codeOut += \"\\n    \";\n                            }\n                            codeOut += \"pAPI->\" + context.commands[iCommand].name + \" = \" + context.commands[iCommand].name + \";\";\n\n                            outputCommands.push_back(requireCommand.name);\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    // Platform-specific extensions.\n    for (size_t iPlatform = 0; iPlatform < context.platforms.size(); ++iPlatform) {\n        vkbBuildPlatform &platform = context.platforms[iPlatform];\n        codeOut += \"\\n#ifdef \" + platform.protect;\n        {\n            for (size_t iExtension = 0; iExtension < context.extensions.size(); ++iExtension) {\n                vkbBuildExtension &extension = context.extensions[iExtension];\n                if (extension.platform == platform.name) {\n                    for (size_t iRequire = 0; iRequire < extension.requires.size(); ++iRequire) {\n                        vkbBuildRequire &require = extension.requires[iRequire];\n                        for (size_t iRequireCommand = 0; iRequireCommand < require.commands.size(); ++iRequireCommand) {\n                            vkbBuildRequireCommand &requireCommand = require.commands[iRequireCommand];\n\n                            size_t iCommand;\n                            if (vkbBuildFindCommandByName(context, requireCommand.name.c_str(), &iCommand)) {\n                                if (!vkbContains(outputCommands, requireCommand.name)) {\n                                    // New line if required.\n                                    if (outputCommands.size() > 0) {\n                                        codeOut += \"\\n    \";\n                                    }\n                                    codeOut += \"pAPI->\" + context.commands[iCommand].name + \" = \" + context.commands[iCommand].name + \";\";\n\n                                    outputCommands.push_back(requireCommand.name);\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n        }\n        codeOut += \"\\n#endif /*\" + platform.protect + \"*/\";\n    }\n\n    return VKB_SUCCESS;\n}\n\nVkbResult vkbBuildGenerateCode_C_SetGlobalAPIFromStruct(VkbBuild &context, std::string &codeOut)\n{\n    // This should be in a nice order. Features first, then platform-independent extensions, then platform-specific extensions.\n    std::vector<std::string> outputCommands;\n\n    // Features.\n    for (size_t iFeature = 0; iFeature < context.features.size(); ++iFeature) {\n        vkbBuildFeature &feature = context.features[iFeature];\n        for (size_t iRequire = 0; iRequire < feature.requires.size(); ++iRequire) {\n            vkbBuildRequire &require = feature.requires[iRequire];\n            for (size_t iRequireCommand = 0; iRequireCommand < require.commands.size(); ++iRequireCommand) {\n                size_t iCommand;\n                if (vkbBuildFindCommandByName(context, require.commands[iRequireCommand].name.c_str(), &iCommand)) {\n                    if (!vkbContains(outputCommands, require.commands[iRequireCommand].name)) {\n                        // New line if required.\n                        if (outputCommands.size() > 0) {\n                            codeOut += \"\\n    \";\n                        }\n                        codeOut += context.commands[iCommand].name + \" = pAPI->\" + context.commands[iCommand].name + \";\";\n\n                        outputCommands.push_back(require.commands[iRequireCommand].name);\n                    }\n                }\n            }\n        }\n    }\n\n    // Platform-independent extensions.\n    for (size_t iExtension = 0; iExtension < context.extensions.size(); ++iExtension) {\n        vkbBuildExtension &extension = context.extensions[iExtension];\n        if (extension.platform == \"\") {\n            for (size_t iRequire = 0; iRequire < extension.requires.size(); ++iRequire) {\n                vkbBuildRequire &require = extension.requires[iRequire];\n                for (size_t iRequireCommand = 0; iRequireCommand < require.commands.size(); ++iRequireCommand) {\n                    vkbBuildRequireCommand &requireCommand = require.commands[iRequireCommand];\n\n                    size_t iCommand;\n                    if (vkbBuildFindCommandByName(context, requireCommand.name.c_str(), &iCommand)) {\n                        if (!vkbContains(outputCommands, requireCommand.name)) {\n                            // New line if required.\n                            if (outputCommands.size() > 0) {\n                                codeOut += \"\\n    \";\n                            }\n                            codeOut += context.commands[iCommand].name + \" = pAPI->\" + context.commands[iCommand].name + \";\";\n\n                            outputCommands.push_back(requireCommand.name);\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    // Platform-specific extensions.\n    for (size_t iPlatform = 0; iPlatform < context.platforms.size(); ++iPlatform) {\n        vkbBuildPlatform &platform = context.platforms[iPlatform];\n        codeOut += \"\\n#ifdef \" + platform.protect;\n        {\n            for (size_t iExtension = 0; iExtension < context.extensions.size(); ++iExtension) {\n                vkbBuildExtension &extension = context.extensions[iExtension];\n                if (extension.platform == platform.name) {\n                    for (size_t iRequire = 0; iRequire < extension.requires.size(); ++iRequire) {\n                        vkbBuildRequire &require = extension.requires[iRequire];\n                        for (size_t iRequireCommand = 0; iRequireCommand < require.commands.size(); ++iRequireCommand) {\n                            vkbBuildRequireCommand &requireCommand = require.commands[iRequireCommand];\n\n                            size_t iCommand;\n                            if (vkbBuildFindCommandByName(context, requireCommand.name.c_str(), &iCommand)) {\n                                if (!vkbContains(outputCommands, requireCommand.name)) {\n                                    // New line if required.\n                                    if (outputCommands.size() > 0) {\n                                        codeOut += \"\\n    \";\n                                    }\n                                    codeOut += context.commands[iCommand].name + \" = pAPI->\" + context.commands[iCommand].name + \";\";\n\n                                    outputCommands.push_back(requireCommand.name);\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n        }\n        codeOut += \"\\n#endif /*\" + platform.protect + \"*/\";\n    }\n\n    return VKB_SUCCESS;\n}\n\nVkbResult vkbBuildGenerateCode_C_LoadInstanceAPI(VkbBuild &context, std::string &codeOut)\n{\n    // This should be in a nice order. Features first, then platform-independent extensions, then platform-specific extensions.\n    std::vector<std::string> outputCommands;\n    outputCommands.push_back(\"vkGetInstanceProcAddr\");  // <-- Don't do vkGetInstanceProcAddr here. This is done in the template in a special way.\n\n    // Features.\n    for (size_t iFeature = 0; iFeature < context.features.size(); ++iFeature) {\n        vkbBuildFeature &feature = context.features[iFeature];\n        for (size_t iRequire = 0; iRequire < feature.requires.size(); ++iRequire) {\n            vkbBuildRequire &require = feature.requires[iRequire];\n            for (size_t iRequireCommand = 0; iRequireCommand < require.commands.size(); ++iRequireCommand) {\n                vkbBuildRequireCommand &requireCommand = require.commands[iRequireCommand];\n\n                size_t iCommand;\n                if (vkbBuildFindCommandByName(context, requireCommand.name.c_str(), &iCommand)) {\n                    if (!vkbContains(outputCommands, requireCommand.name)) {\n                        if (outputCommands.size() > 1) {\n                            codeOut += \"\\n    \";\n                        }\n                        codeOut += \"pAPI->\" + context.commands[iCommand].name + \" = (PFN_\" + context.commands[iCommand].name + \")pAPI->vkGetInstanceProcAddr(instance, \\\"\" + context.commands[iCommand].name + \"\\\");\";\n                        outputCommands.push_back(requireCommand.name);\n                    }\n                }\n            }\n        }\n    }\n\n    // Platform-independent extensions.\n    for (size_t iExtension = 0; iExtension < context.extensions.size(); ++iExtension) {\n        vkbBuildExtension &extension = context.extensions[iExtension];\n        if (extension.platform == \"\") {\n            for (size_t iRequire = 0; iRequire < extension.requires.size(); ++iRequire) {\n                vkbBuildRequire &require = extension.requires[iRequire];\n                for (size_t iRequireCommand = 0; iRequireCommand < require.commands.size(); ++iRequireCommand) {\n                    vkbBuildRequireCommand &requireCommand = require.commands[iRequireCommand];\n\n                    size_t iCommand;\n                    if (vkbBuildFindCommandByName(context, requireCommand.name.c_str(), &iCommand)) {\n                        if (!vkbContains(outputCommands, requireCommand.name)) {\n                            if (outputCommands.size() > 1) {\n                                codeOut += \"\\n    \";\n                            }\n                            codeOut += \"pAPI->\" + context.commands[iCommand].name + \" = (PFN_\" + context.commands[iCommand].name + \")pAPI->vkGetInstanceProcAddr(instance, \\\"\" + context.commands[iCommand].name + \"\\\");\";\n                            outputCommands.push_back(requireCommand.name);\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    // Platform-specific extensions.\n    for (size_t iPlatform = 0; iPlatform < context.platforms.size(); ++iPlatform) {\n        vkbBuildPlatform &platform = context.platforms[iPlatform];\n        codeOut += \"\\n#ifdef \" + platform.protect;\n        {\n            for (size_t iExtension = 0; iExtension < context.extensions.size(); ++iExtension) {\n                vkbBuildExtension &extension = context.extensions[iExtension];\n                if (extension.platform == platform.name) {\n                    for (size_t iRequire = 0; iRequire < extension.requires.size(); ++iRequire) {\n                        vkbBuildRequire &require = extension.requires[iRequire];\n                        for (size_t iRequireCommand = 0; iRequireCommand < require.commands.size(); ++iRequireCommand) {\n                            vkbBuildRequireCommand &requireCommand = require.commands[iRequireCommand];\n\n                            size_t iCommand;\n                            if (vkbBuildFindCommandByName(context, requireCommand.name.c_str(), &iCommand)) {\n                                if (!vkbContains(outputCommands, requireCommand.name)) {\n                                    if (outputCommands.size() > 1) {\n                                        codeOut += \"\\n    \";\n                                    }\n                                    codeOut += \"pAPI->\" + context.commands[iCommand].name + \" = (PFN_\" + context.commands[iCommand].name + \")pAPI->vkGetInstanceProcAddr(instance, \\\"\" + context.commands[iCommand].name + \"\\\");\";\n                                    outputCommands.push_back(requireCommand.name);\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n        }\n        codeOut += \"\\n#endif /*\" + platform.protect + \"*/\";\n    }\n\n    return VKB_SUCCESS;\n}\n\nbool vkbBuildIsTypeChildOf(VkbBuild &context, const std::string &parentType, const std::string &childType)\n{\n    if (parentType == childType) {\n        return false;   // It's the same type, so is therefore not a child.\n    }\n\n    for (size_t iType = 0; iType < context.types.size(); ++iType) {\n        vkbBuildType &type = context.types[iType];\n        if (type.name == childType) {\n            if (type.category == \"handle\") {\n                if (type.parent == parentType) {\n                    return true;\n                } else {\n                    return vkbBuildIsTypeChildOf(context, parentType, type.parent);\n                }\n            } else {\n                return false;   // <-- It's not a handle which means it's not a child of anything.\n            }\n        }\n    }\n\n    // Getting here means we couldn't find the child type at all. Assume it is not a child of anything.\n    return false;\n}\n\nstd::string vkbBuildGetDeviceProcAddressGetterByType(VkbBuild &context, const std::string &type)\n{\n    // If the type is VkDevice or a child of it, we use vkGetDeviceProcAddr(). Otherwise, we use vkGetInstanceProcAddr().\n    if (type == \"VkDevice\" || vkbBuildIsTypeChildOf(context, \"VkDevice\", type)) {\n        return \"vkGetDeviceProcAddr\";\n    } else {\n        return \"vkGetInstanceProcAddr\";\n    }\n}\n\nstd::string vkbBuildGetDeviceProcAddressGetterByCommand(VkbBuild &context, vkbBuildCommand &command)\n{\n    if (command.alias == \"\") {\n        if (command.parameters.size() > 0) {\n            return vkbBuildGetDeviceProcAddressGetterByType(context, command.parameters[0].type);\n        } else {\n            return \"vkGetInstanceProcAddr\";\n        }\n    } else {\n        // It's aliased. We need to call this based on the aliased command.\n        for (size_t iCommand = 0; iCommand < context.commands.size(); ++iCommand) {\n            if (context.commands[iCommand].name == command.alias) {\n                return vkbBuildGetDeviceProcAddressGetterByCommand(context, context.commands[iCommand]);\n            }\n        }\n\n        // Getting here means we couldn't find the aliased command. Should not get here.\n        return \"vkGetInstanceProcAddr\";\n    }\n}\n\nbool vkbBuildIsDeviceLevelCommand(VkbBuild &context, vkbBuildCommand &command)\n{\n    if (command.alias == \"\") {\n        if (command.parameters.size() > 0) {\n            if (command.parameters[0].type == \"VkDevice\" || vkbBuildIsTypeChildOf(context, \"VkDevice\", command.parameters[0].type)) {\n                return true;\n            } else {\n                return false;\n            }\n        } else {\n            return false;\n        }\n    } else {\n        // It's aliased. We need to call this based on the aliased command.\n        for (size_t iCommand = 0; iCommand < context.commands.size(); ++iCommand) {\n            if (context.commands[iCommand].name == command.alias) {\n                return vkbBuildIsDeviceLevelCommand(context, context.commands[iCommand]);\n            }\n        }\n\n        // Getting here means we couldn't find the aliased command. Should not get here.\n        return false;\n    }\n}\n\nbool vkbBuildIsInstanceLevelCommand(VkbBuild &context, vkbBuildCommand &command)\n{\n    if (command.alias == \"\") {\n        if (command.parameters.size() > 0) {\n            if (command.parameters[0].type == \"VkInstance\" || vkbBuildIsTypeChildOf(context, \"VkInstance\", command.parameters[0].type)) {\n                return true;\n            } else {\n                return false;\n            }\n        } else {\n            return false;\n        }\n    } else {\n        // It's aliased. We need to call this based on the aliased command.\n        for (size_t iCommand = 0; iCommand < context.commands.size(); ++iCommand) {\n            if (context.commands[iCommand].name == command.alias) {\n                return vkbBuildIsInstanceLevelCommand(context, context.commands[iCommand]);\n            }\n        }\n\n        // Getting here means we couldn't find the aliased command. Should not get here.\n        return false;\n    }\n}\n\nVkbResult vkbBuildGenerateCode_C_LoadDeviceAPI(VkbBuild &context, std::string &codeOut)\n{\n    // This should be in a nice order. Features first, then platform-independent extensions, then platform-specific extensions.\n    std::vector<std::string> outputCommands;\n    outputCommands.push_back(\"vkGetDeviceProcAddr\");  // <-- Don't do vkGetInstanceProcAddr here. This is done in the template in a special way.\n\n    // Features.\n    for (size_t iFeature = 0; iFeature < context.features.size(); ++iFeature) {\n        vkbBuildFeature &feature = context.features[iFeature];\n        for (size_t iRequire = 0; iRequire < feature.requires.size(); ++iRequire) {\n            vkbBuildRequire &require = feature.requires[iRequire];\n            for (size_t iRequireCommand = 0; iRequireCommand < require.commands.size(); ++iRequireCommand) {\n                vkbBuildRequireCommand &requireCommand = require.commands[iRequireCommand];\n\n                size_t iCommand;\n                if (vkbBuildFindCommandByName(context, requireCommand.name.c_str(), &iCommand)) {\n                    if (!vkbContains(outputCommands, requireCommand.name) && vkbBuildIsDeviceLevelCommand(context, context.commands[iCommand])) {\n                        if (outputCommands.size() > 1) {\n                            codeOut += \"\\n    \";\n                        }\n                        codeOut += \"pAPI->\" + context.commands[iCommand].name + \" = (PFN_\" + context.commands[iCommand].name + \")pAPI->vkGetDeviceProcAddr(device, \\\"\" + context.commands[iCommand].name + \"\\\");\";\n                        outputCommands.push_back(requireCommand.name);\n                    }\n                }\n            }\n        }\n    }\n\n    // Platform-independent extensions.\n    for (size_t iExtension = 0; iExtension < context.extensions.size(); ++iExtension) {\n        vkbBuildExtension &extension = context.extensions[iExtension];\n        if (extension.platform == \"\") {\n            for (size_t iRequire = 0; iRequire < extension.requires.size(); ++iRequire) {\n                vkbBuildRequire &require = extension.requires[iRequire];\n                for (size_t iRequireCommand = 0; iRequireCommand < require.commands.size(); ++iRequireCommand) {\n                    vkbBuildRequireCommand &requireCommand = require.commands[iRequireCommand];\n\n                    size_t iCommand;\n                    if (vkbBuildFindCommandByName(context, requireCommand.name.c_str(), &iCommand)) {\n                        if (!vkbContains(outputCommands, requireCommand.name) && vkbBuildIsDeviceLevelCommand(context, context.commands[iCommand])) {\n                            if (outputCommands.size() > 1) {\n                                codeOut += \"\\n    \";\n                            }\n                            codeOut += \"pAPI->\" + context.commands[iCommand].name + \" = (PFN_\" + context.commands[iCommand].name + \")pAPI->vkGetDeviceProcAddr(device, \\\"\" + context.commands[iCommand].name + \"\\\");\";\n                            outputCommands.push_back(requireCommand.name);\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    // Platform-specific extensions.\n    for (size_t iPlatform = 0; iPlatform < context.platforms.size(); ++iPlatform) {\n        vkbBuildPlatform &platform = context.platforms[iPlatform];\n        codeOut += \"\\n#ifdef \" + platform.protect;\n        {\n            for (size_t iExtension = 0; iExtension < context.extensions.size(); ++iExtension) {\n                vkbBuildExtension &extension = context.extensions[iExtension];\n                if (extension.platform == platform.name) {\n                    for (size_t iRequire = 0; iRequire < extension.requires.size(); ++iRequire) {\n                        vkbBuildRequire &require = extension.requires[iRequire];\n                        for (size_t iRequireCommand = 0; iRequireCommand < require.commands.size(); ++iRequireCommand) {\n                            vkbBuildRequireCommand &requireCommand = require.commands[iRequireCommand];\n\n                            size_t iCommand;\n                            if (vkbBuildFindCommandByName(context, requireCommand.name.c_str(), &iCommand)) {\n                                if (!vkbContains(outputCommands, requireCommand.name) && vkbBuildIsDeviceLevelCommand(context, context.commands[iCommand])) {\n                                    if (outputCommands.size() > 1) {\n                                        codeOut += \"\\n    \";\n                                    }\n                                    codeOut += \"pAPI->\" + context.commands[iCommand].name + \" = (PFN_\" + context.commands[iCommand].name + \")pAPI->vkGetDeviceProcAddr(device, \\\"\" + context.commands[iCommand].name + \"\\\");\";\n                                    outputCommands.push_back(requireCommand.name);\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n        }\n        codeOut += \"\\n#endif /*\" + platform.protect + \"*/\";\n    }\n\n    return VKB_SUCCESS;\n}\n\nVkbResult vkbBuildGenerateCode_C_LoadSafeVulkanAPI(VkbBuild &context, std::string &codeOut)\n{\n    // This should be in a nice order. Features first, then platform-independent extensions, then platform-specific extensions.\n    std::vector<std::string> outputCommands;\n    outputCommands.push_back(\"vkGetInstanceProcAddr\");  // <-- Don't do vkGetInstanceProcAddr here. This is done in the template in a special way.\n\n    // Features.\n    for (size_t iFeature = 0; iFeature < context.features.size(); ++iFeature) {\n        vkbBuildFeature &feature = context.features[iFeature];\n        for (size_t iRequire = 0; iRequire < feature.requires.size(); ++iRequire) {\n            vkbBuildRequire &require = feature.requires[iRequire];\n            for (size_t iRequireCommand = 0; iRequireCommand < require.commands.size(); ++iRequireCommand) {\n                vkbBuildRequireCommand &requireCommand = require.commands[iRequireCommand];\n\n                size_t iCommand;\n                if (vkbBuildFindCommandByName(context, requireCommand.name.c_str(), &iCommand)) {\n                    if (!vkbContains(outputCommands, requireCommand.name) && !vkbBuildIsInstanceLevelCommand(context, context.commands[iCommand])) {\n                        if (outputCommands.size() > 1) {\n                            codeOut += \"\\n    \";\n                        }\n                        codeOut += \"pAPI->\" + context.commands[iCommand].name + \" = (PFN_\" + context.commands[iCommand].name + \")pAPI->vkGetInstanceProcAddr(NULL, \\\"\" + context.commands[iCommand].name + \"\\\");\";\n                        outputCommands.push_back(requireCommand.name);\n                    }\n                }\n            }\n        }\n    }\n\n    return VKB_SUCCESS;\n}\n\nVkbResult vkbBuildGenerateCode_C_SafeGlobalAPIDocs(VkbBuild &context, std::string &codeOut)\n{\n    // Features.\n    for (size_t iFeature = 0; iFeature < context.features.size(); ++iFeature) {\n        vkbBuildFeature &feature = context.features[iFeature];\n\n        // This should be in a nice order. Features first, then platform-independent extensions, then platform-specific extensions.\n        std::vector<std::string> outputCommands;\n        codeOut += \"\\nVulkan \" + feature.number + \"\\n\";\n\n        // Manually add vkGetInstanceProcAddr for version 1.0.\n        if (feature.number == \"1.0\") {\n            codeOut += \"    vkGetInstanceProcAddr\";\n            outputCommands.push_back(\"vkGetInstanceProcAddr\");\n        }\n        \n\n        for (size_t iRequire = 0; iRequire < feature.requires.size(); ++iRequire) {\n            vkbBuildRequire &require = feature.requires[iRequire];\n            for (size_t iRequireCommand = 0; iRequireCommand < require.commands.size(); ++iRequireCommand) {\n                vkbBuildRequireCommand &requireCommand = require.commands[iRequireCommand];\n\n                size_t iCommand;\n                if (vkbBuildFindCommandByName(context, requireCommand.name.c_str(), &iCommand)) {\n                    if (!vkbContains(outputCommands, requireCommand.name) && !vkbBuildIsInstanceLevelCommand(context, context.commands[iCommand])) {\n                        if (outputCommands.size() == 0) {\n                            codeOut += \"    \";\n                        } else {\n                            codeOut += \"\\n    \";\n                        }\n                        codeOut += context.commands[iCommand].name;\n                        outputCommands.push_back(requireCommand.name);\n                    }\n                }\n            }\n        }\n    }\n\n    return VKB_SUCCESS;\n}\n\n\nstd::vector<std::string> vkbSplitString(const std::string &str, const std::string &delimiter)\n{\n    std::vector<std::string> tokens;\n\n    size_t cursor = 0;\n    size_t pos = str.find(delimiter, cursor);\n\n    while (pos != std::string::npos) {\n        tokens.push_back(str.substr(cursor, pos - cursor));\n        cursor = pos + delimiter.length();\n        pos = str.find(delimiter, cursor);\n    }\n\n    // Add the final token to the vector\n    tokens.push_back(str.substr(cursor));\n\n    return tokens;\n}\n\nVkbResult vkbBuildGetVulkanVersion(VkbBuild &context, std::string &versionOut)\n{\n    // The version can be retrieved from the last \"feature\" section that is not VulkanSC and the value of VK_HEADER_VERSION.\n    versionOut = std::find_if(context.features.rbegin(), context.features.rend(), [](const vkbBuildFeature& feature) {\n        /* If the \"api\" does contains a \"vulkan\" item, return true. */\n        auto apis = vkbSplitString(feature.api, \",\");\n        for (auto api : apis) {\n            if (api == \"vulkan\") {\n                return true;\n            }\n        }\n\n        return false;\n    })->number;\n\n    for (auto type : context.types) {\n        if (type.category == \"define\") {\n            if (type.name == \"VK_HEADER_VERSION\") {\n                std::string defineValue = vkbBuildCleanDefineValue(type.verbatimValue);\n                const char* src = defineValue.c_str();\n                const char* beg = strstr(src, type.name.c_str()) + type.name.length();\n\n                versionOut += \".\" + vkbTrim((beg != NULL) ? beg : \"\");\n                break;\n            }\n        }\n    }\n\n    return VKB_SUCCESS;\n}\n\nVkbResult vkbBuildGenerateCode_C_VulkanVersion(VkbBuild &context, std::string &codeOut)\n{\n    std::string version;\n    VkbResult result = vkbBuildGetVulkanVersion(context, version);\n    if (result != VKB_SUCCESS) {\n        return result;\n    }\n\n    codeOut += version;\n\n    return VKB_SUCCESS;\n}\n\nVkbResult vkbBuildGenerateCode_C_Revision(VkbBuild &context, std::string &codeOut)\n{\n    // Rules for the revision number:\n    // 1) If the Vulkan version has changed, reset the revision to 0, otherwise increment by 1.\n    // 2) If vkbind.h cannot be found, set to 0.\n    std::string revision;\n\n    size_t fileSize;\n    char* pFileData;\n    if (vkbOpenAndReadTextFile(\"vkbind.h\", &fileSize, &pFileData) == VKB_SUCCESS) {\n        // We need to parse the previous version.\n        std::string prevVersionMajor;\n        std::string prevVersionMinor;\n        std::string prevVersionHeader;\n        std::string prevVersionRevision;\n        const char* versionBeg = strstr((const char*)pFileData, \"vkbind - v\");\n        if (versionBeg != NULL) {\n            versionBeg += strlen(\"vkbind - v\");\n\n            std::string currentVulkanVersion;\n            VkbResult result = vkbBuildGetVulkanVersion(context, currentVulkanVersion);\n            if (result != VKB_SUCCESS) {\n                return result;\n            }\n\n            const char* cursorBeg = versionBeg;\n            const char* cursorEnd = versionBeg;\n\n            cursorEnd = strstr(cursorBeg, \".\");\n            prevVersionMajor = std::string(cursorBeg, cursorEnd-cursorBeg);\n            cursorBeg = cursorEnd + 1;\n\n            cursorEnd = strstr(cursorBeg, \".\");\n            prevVersionMinor = std::string(cursorBeg, cursorEnd-cursorBeg);\n            cursorBeg = cursorEnd + 1;\n\n            cursorEnd = strstr(cursorBeg, \".\");\n            prevVersionHeader = std::string(cursorBeg, cursorEnd-cursorBeg);\n            cursorBeg = cursorEnd + 1;\n\n            cursorEnd = strstr(cursorBeg, \" \");\n            prevVersionRevision = std::string(cursorBeg, cursorEnd-cursorBeg);\n            cursorBeg = cursorEnd + 1;\n\n            std::string previousVulkanVersion = prevVersionMajor + \".\" + prevVersionMinor + \".\" + prevVersionHeader;\n            if (currentVulkanVersion == previousVulkanVersion) {\n                // Vulkan versions are the same, so increment.\n                revision = std::to_string(atoi(prevVersionRevision.c_str()) + 1);\n            } else {\n                // Vulkan versions are different, so reset.\n                revision = \"0\";\n            }\n        } else {\n            // Couldn't find the previous version.\n            revision = \"0\";\n        }\n    } else {\n        // vkbind.h was not found.\n        revision = \"0\";\n    }\n\n    codeOut += revision;\n    return VKB_SUCCESS;\n}\n\n#include <time.h>\nVkbResult vkbBuildGenerateCode_C_Date(VkbBuild &context, std::string &codeOut)\n{\n    (void)context;\n\n    time_t t = time(NULL);\n\n    char dateStr[32];\n#if defined(_MSC_VER)\n    struct tm local;\n    localtime_s(&local, &t);\n    strftime(dateStr, sizeof(dateStr), \"%Y-%m-%d\", &local);\n#else\n    struct tm *local = localtime(&t);\n    strftime(dateStr, sizeof(dateStr), \"%Y-%m-%d\", local);\n#endif\n\n    codeOut += dateStr;\n    return VKB_SUCCESS;\n}\n\nVkbResult vkbBuildGenerateCode_C(VkbBuild &vk, VkbBuild &video, const char* tag, std::string &codeOut)\n{\n    if (tag == NULL) {\n        return VKB_INVALID_ARGS;\n    }\n\n    VkbResult result = VKB_INVALID_ARGS;\n    if (strcmp(tag, \"/*<<vk_video>>*/\") == 0) {\n        result = vkbBuildGenerateCode_C_Main(video, codeOut);\n    }\n    if (strcmp(tag, \"/*<<vulkan_main>>*/\") == 0) {\n        result = vkbBuildGenerateCode_C_Main(vk, codeOut);\n    }\n    if (strcmp(tag, \"/*<<vulkan_struct_initializers>>*/\") == 0) {\n        result = vkbBuildGenerateCode_C_AllStructInitializers(vk, codeOut);\n    }\n    if (strcmp(tag, \"/*<<vulkan_funcpointers_decl_global:extern>>*/\") == 0) {\n        result = vkbBuildGenerateCode_C_FuncPointersDeclGlobal(vk, 0, true, codeOut);\n    }\n    if (strcmp(tag, \"/*<<vulkan_funcpointers_decl_global:4>>*/\") == 0) {\n        result = vkbBuildGenerateCode_C_FuncPointersDeclGlobal(vk, 4, false, codeOut);\n    }\n    if (strcmp(tag, \"/*<<vulkan_funcpointers_decl_global>>*/\") == 0) {\n        result = vkbBuildGenerateCode_C_FuncPointersDeclGlobal(vk, 0, false, codeOut);\n    }\n    if (strcmp(tag, \"/*<<load_global_api_funcpointers>>*/\") == 0) {\n        result = vkbBuildGenerateCode_C_LoadVulkanFuncPointers(vk, codeOut);\n    }\n    if (strcmp(tag, \"/*<<set_struct_api_from_global>>*/\") == 0) {\n        result = vkbBuildGenerateCode_C_SetStructAPIFromGlobal(vk, codeOut);\n    }\n    if (strcmp(tag, \"/*<<set_global_api_from_struct>>*/\") == 0) {\n        result = vkbBuildGenerateCode_C_SetGlobalAPIFromStruct(vk, codeOut);\n    }\n    if (strcmp(tag, \"/*<<load_instance_api>>*/\") == 0) {\n        result = vkbBuildGenerateCode_C_LoadInstanceAPI(vk, codeOut);\n    }\n    if (strcmp(tag, \"/*<<load_device_api>>*/\") == 0) {\n        result = vkbBuildGenerateCode_C_LoadDeviceAPI(vk, codeOut);\n    }\n    if (strcmp(tag, \"/*<<load_safe_global_api>>*/\") == 0) {\n        result = vkbBuildGenerateCode_C_LoadSafeVulkanAPI(vk, codeOut);\n    }\n    if (strcmp(tag, \"<<safe_global_api_docs>>\") == 0) {\n        result = vkbBuildGenerateCode_C_SafeGlobalAPIDocs(vk, codeOut);\n    }\n    if (strcmp(tag, \"<<vulkan_version>>\") == 0) {\n        result = vkbBuildGenerateCode_C_VulkanVersion(vk, codeOut);\n    }\n    if (strcmp(tag, \"<<revision>>\") == 0) {\n        result = vkbBuildGenerateCode_C_Revision(vk, codeOut);\n    }\n    if (strcmp(tag, \"<<date>>\") == 0) {\n        result = vkbBuildGenerateCode_C_Date(vk, codeOut);\n    }\n\n    return result;\n}\n\nVkbResult vkbBuildGenerateLib_C(VkbBuild &vk, VkbBuild &video, const char* outputFilePath)\n{\n    if (outputFilePath == NULL) {\n        return VKB_INVALID_ARGS;\n    }\n\n    // Before doing anything we need to grab the template.\n    size_t templateFileSize;\n    char* pTemplateFileData;\n    VkbResult result = vkbOpenAndReadTextFile(VKB_BUILD_TEMPLATE_PATH, &templateFileSize, &pTemplateFileData);\n    if (result != VKB_SUCCESS) {\n        return result;\n    }\n\n    std::string outputStr = pTemplateFileData;\n    free(pTemplateFileData);\n\n    // There will be a series of tags that we need to replace with generated code.\n    const char* tags[] = {\n        \"/*<<vk_video>>*/\",\n        \"/*<<vulkan_main>>*/\",\n        \"/*<<vulkan_struct_initializers>>*/\",\n        \"/*<<vulkan_funcpointers_decl_global:extern>>*/\",\n        \"/*<<vulkan_funcpointers_decl_global:4>>*/\",\n        \"/*<<vulkan_funcpointers_decl_global>>*/\",\n        \"/*<<load_global_api_funcpointers>>*/\",\n        \"/*<<set_struct_api_from_global>>*/\",\n        \"/*<<set_global_api_from_struct>>*/\",\n        \"/*<<load_instance_api>>*/\",\n        \"/*<<load_device_api>>*/\",\n        \"/*<<load_safe_global_api>>*/\",\n        \"<<safe_global_api_docs>>\",\n        \"<<vulkan_version>>\",\n        \"<<revision>>\",\n        \"<<date>>\",\n    };\n\n    for (size_t iTag = 0; iTag < sizeof(tags)/sizeof(tags[0]); ++iTag) {\n        std::string generatedCode;\n        result = vkbBuildGenerateCode_C(vk, video, tags[iTag], generatedCode);\n        if (result != VKB_SUCCESS) {\n            return result;\n        }\n\n        vkbReplaceAllInline(outputStr, tags[iTag], generatedCode);\n    }\n\n    vkbOpenAndWriteTextFile(outputFilePath, outputStr.c_str());\n    return VKB_SUCCESS;\n}\n\n\nstatic VkbResult vkbBuildStateInit(const char* pXMLFilePath, VkbBuild &context)\n{\n    tinyxml2::XMLError xmlError;\n    tinyxml2::XMLDocument doc;\n    tinyxml2::XMLElement* pRoot;\n\n    xmlError = doc.LoadFile(pXMLFilePath);\n    if (xmlError != tinyxml2::XML_SUCCESS) {\n        printf(\"Failed to parse vk.xml\\n\");\n        return (int)xmlError;\n    }\n\n    pRoot = doc.RootElement();\n    if (pRoot == NULL) {\n        printf(\"Failed to retrieve root node.\\n\");\n        return -1;\n    }\n\n    if (strcmp(pRoot->Name(), \"registry\") != 0) {\n        printf(\"Unexpected root node. Expecting \\\"registry\\\", but got \\\"%s\\\"\", pRoot->Name());\n        return -1;\n    }\n\n    /* The first stage is the accumulation phase where we just vacuum everything up. */\n    for (tinyxml2::XMLNode* pChild = pRoot->FirstChild(); pChild != NULL; pChild = pChild->NextSibling()) {\n        tinyxml2::XMLElement* pChildElement = pChild->ToElement();\n        if (pChildElement == NULL) {\n            continue;\n        }\n\n        if (strcmp(pChildElement->Name(), \"platforms\") == 0) {\n            vkbBuildParsePlatforms(context, pChildElement);\n        }\n        if (strcmp(pChildElement->Name(), \"tags\") == 0) {\n            vkbBuildParseTags(context, pChildElement);\n        }\n        if (strcmp(pChildElement->Name(), \"types\") == 0) {\n            vkbBuildParseTypes(context, pChildElement);\n        }\n        if (strcmp(pChildElement->Name(), \"enums\") == 0) {\n            vkbBuildParseEnums(context, pChildElement);\n        }\n        if (strcmp(pChildElement->Name(), \"commands\") == 0) {\n            vkbBuildParseCommands(context, pChildElement);\n        }\n        if (strcmp(pChildElement->Name(), \"feature\") == 0) {\n            vkbBuildParseFeature(context, pChildElement);\n        }\n        if (strcmp(pChildElement->Name(), \"extensions\") == 0) {\n            vkbBuildParseExtensions(context, pChildElement);\n        }\n    }\n\n    return VKB_SUCCESS;\n}\n\n\n#if 0   /* For debugging. */\nstatic VkbResult GenerateHeaders_Video(VkbBuild &context)\n{\n    /*\n    The video headers are really annoying. They're not properly defined. Each \"extension\" in the XML is it's own file,\n    but there's no well defined naming sceme used. They mention include guards, but they don't say what the guard should\n    except for some comment.\n    */\n    VkbResult result;\n    std::string code;\n    std::string outputFilePath = \"vk_video.h\";\n\n    result = vkbBuildGenerateCode_C_Main(context, code);\n    if (result != VKB_SUCCESS) {\n        return result;\n    }\n\n    return vkbOpenAndWriteTextFile(outputFilePath.c_str(), code.c_str());\n}\n#endif\n\n\n#ifdef _WIN32\n#include <io.h>\n#define vkb_access _access_s\n#else\n#include <unistd.h>\n#define vkb_access access\n#endif\n\nint main(int argc, char** argv)\n{\n    VkbResult result;\n    VkbBuild video;\n    VkbBuild vk;\n\n    (void)argc;\n    (void)argv;\n\n    bool forceDownload = true;\n    if (forceDownload || vkb_access(VKB_BUILD_XML_PATH_VK, 04) != 0) {   // 04 = Read access.\n        printf(\"vk.xml not found. Attempting to download...\\n\");\n        std::string cmd = \"curl -o \" VKB_BUILD_XML_PATH_VK \" https://raw.githubusercontent.com/KhronosGroup/Vulkan-Docs/main/xml/vk.xml\";\n        if (system(cmd.c_str()) != 0) {\n            printf(\"Failed to download vk.xml\\n\");\n            return -1;\n        }\n    }\n\n    if (forceDownload || vkb_access(VKB_BUILD_XML_PATH_VIDEO, 04) != 0) {   // 04 = Read access.\n        printf(\"video.xml not found. Attempting to download...\\n\");\n        std::string cmd = \"curl -o \" VKB_BUILD_XML_PATH_VIDEO \" https://raw.githubusercontent.com/KhronosGroup/Vulkan-Docs/main/xml/video.xml\";\n        if (system(cmd.c_str()) != 0) {\n            printf(\"Failed to download video.xml\\n\");\n            return -1;\n        }\n    }\n\n\n    result = vkbBuildStateInit(VKB_BUILD_XML_PATH_VIDEO, video);\n    if (result != VKB_SUCCESS) {\n        printf(\"Failed to build video.xml.\");\n        return -1;\n    }\n\n    result = vkbBuildStateInit(VKB_BUILD_XML_PATH_VK, vk);\n    if (result != VKB_SUCCESS) {\n        printf(\"Failed to build vk.xml.\");\n        return -1;\n    }\n\n\n    result = vkbBuildGenerateLib_C(vk, video, \"vkbind.h\");\n    if (result != VKB_SUCCESS) {\n        printf(\"Failed to generate C code.\\n\");\n        return result;\n    }\n\n    return 0;\n}"
  },
  {
    "path": "source/vkbind_template.h",
    "content": "/*\nVulkan API loader. Choice of public domain or MIT-0. See license statements at the end of this file.\nvkbind - v<<vulkan_version>>.<<revision>> - <<date>>\n\nDavid Reid - davidreidsoftware@gmail.com\n*/\n\n/*\nABOUT\n=====\nvkbind is a Vulkan API loader. It includes a full implementation of the Vulkan headers (auto-generated from the Vulkan\nspec) so there's no need for any additional libraries or SDKs. Unlike the official headers, the platform-specific\nsections are all contained within the same file.\n\n\nUSAGE\n=====\nvkbind is a single-file library. To use it, do something like the following in one .c file.\n    #define VKBIND_IMPLEMENTATION\n    #include \"vkbind.h\"\n\nThere is no need to link to any libraries.\n\nBefore attempting to call any Vulkan or vkbind APIs you first need to initialize vkbind with vkbInit(). Uninitialize\nwith vkbUninit(). This will bind statically implemented function pointers to the global vk* names.\n\nExample:\n\n    #define VKBIND_IMPLEMENTATION\n    #include \"vkbind.h\"\n\n    int main()\n    {\n        VkResult result = vkbInit(NULL);\n        if (result != VK_SUCCESS) {\n            printf(\"Failed to initialize vkbind.\");\n            return -1;\n        }\n\n        // Do stuff here.\n\n        vkbUninit();\n        return 0;\n    }\n\n\nIf your platform does not statically expose all Vulkan APIs you need to load instance-specific APIs using\nvkbInitInstanceAPI(), passing in a Vulkan VkInstance object. The returned function pointers can then be bound with\nvkbBindAPI(). You can also load the Vulkan API on a per-device basis using vkbInitDeviceAPI() and passing in a Vulkan\nVkDevice object. Note that you do not need to bind any APIs to global scope if you don't want to. Instead you can call\nthe functions directly from the VkbAPI structure.\n\nExample:\n\n    #define VKBIND_IMPLEMENTATION\n    #include \"vkbind.h\"\n\n    int main()\n    {\n        VkbAPI api;\n        VkResult result = vkbInit(&api);\n        if (result != VK_SUCCESS) {\n            printf(\"Failed to initialize vkbind.\");\n            return -1;\n        }\n\n        // ... Create your Vulkan instance here (vkCreateInstance) ...\n\n        result = vkbInitInstanceAPI(instance, &api);\n        if (result != VK_SUCCESS) {\n            printf(\"Failed to initialize instance API.\");\n            return -2;\n        }\n\n        result = vkbBindAPI(&api);\n        if (result != VK_SUCCESS) {\n            printf(\"Failed to bind instance API.\");\n            return -3;\n        }\n\n        // Do stuff here.\n\n        vkbUninit();\n        return 0;\n    }\n*/\n\n#ifndef VKBIND_H\n#define VKBIND_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#ifdef _MSC_VER\n    #define VKBIND_INLINE __forceinline\n#elif defined(__GNUC__)\n    /*\n    I've had a bug report where GCC is emitting warnings about functions possibly not being inlineable. This warning happens when\n    the __attribute__((always_inline)) attribute is defined without an \"inline\" statement. I think therefore there must be some\n    case where \"__inline__\" is not always defined, thus the compiler emitting these warnings. When using -std=c89 or -ansi on the\n    command line, we cannot use the \"inline\" keyword and instead need to use \"__inline__\". In an attempt to work around this issue\n    I am using \"__inline__\" only when we're compiling in strict ANSI mode.\n    */\n    #if defined(__STRICT_ANSI__)\n        #define VKBIND_GNUC_INLINE_HINT __inline__\n    #else\n        #define VKBIND_GNUC_INLINE_HINT inline\n    #endif\n\n    #if (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2)) || defined(__clang__)\n        #define VKBIND_INLINE VKBIND_GNUC_INLINE_HINT __attribute__((always_inline))\n    #else\n        #define VKBIND_INLINE VKBIND_GNUC_INLINE_HINT\n    #endif\n#elif defined(__WATCOMC__)\n    #define VKBIND_INLINE __inline\n#else\n    #define VKBIND_INLINE\n#endif\n\n/*\nvkbind's vk_platform.h implementation. See: https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#boilerplate-platform-specific-calling-conventions\n\nHere we define VKAPI_ATTR, VKAPI_CALL, VKAPI_PTR and make sure the sized types are defined. Support for more platforms\nwill be added later. Let me know what isn't supported properly and I'll look into it.\n*/\n#ifdef _WIN32\n#define VKAPI_ATTR\n#define VKAPI_CALL  __stdcall\n#define VKAPI_PTR   __stdcall\n#else\n#define VKAPI_ATTR\n#define VKAPI_CALL\n#define VKAPI_PTR\n#endif\n\n/* Here we need to ensure sized types are defined. Only explicitly checking for MSVC for now. */\n#ifndef VK_NO_STDINT_H\n#if defined(_MSC_VER) && (_MSC_VER < 1600)\n    typedef   signed char       int8_t;\n    typedef unsigned char       uint8_t;\n    typedef   signed short      int16_t;\n    typedef unsigned short      uint16_t;\n    typedef   signed int        int32_t;\n    typedef unsigned int        uint32_t;\n    typedef   signed __int64    int64_t;\n    typedef unsigned __int64    uint64_t;\n#else\n    #include <stdint.h>\n#endif\n#endif  /* VK_NO_STDINT_H */\n\n/* stddef.h is required for size_t. */\n#ifndef VK_NO_STDDEF_H\n    #include <stddef.h>\n#endif  /* VK_NO_STDDEF_H */\n\n#if defined(VK_USE_PLATFORM_WIN32_KHR)\n    #if !defined(VKBIND_NO_WIN32_HEADERS)\n        #include <windows.h>\n    #endif\n#endif\n\n#if defined(VK_USE_PLATFORM_XLIB_KHR)\n    #if !defined(VKBIND_NO_XLIB_HEADERS)\n        #include <X11/Xlib.h>\n    #endif\n#endif\n\n#if defined(VK_USE_PLATFORM_XLIB_XRANDR_EXT)\n    #if !defined(VKBIND_NO_XLIB_HEADERS)\n        #include <X11/extensions/Xrandr.h>\n    #endif\n#endif\n\n/* We need to define vkbind_Display and vkbind_Window. */\n#if defined(VK_USE_PLATFORM_XLIB_KHR) || defined(VK_USE_PLATFORM_XLIB_XRANDR_EXT)\n    #if !defined(VKBIND_NO_XLIB_HEADERS)\n        typedef Display       vkbind_Display;\n        typedef Window        vkbind_Window;\n        typedef VisualID      vkbind_VisualID;\n    #else\n        typedef void*         vkbind_Display;\n        typedef unsigned long vkbind_Window;\n        typedef unsigned long vkbind_VisualID;\n    #endif\n#endif\n\n#ifndef VKBIND_ZERO_MEMORY\n#include <string.h>\n#define VKBIND_ZERO_MEMORY(p, size)    memset((p), 0, (size))\n#endif\n\n/*<<vk_video>>*/\n/*<<vulkan_main>>*/\n\n/*<<vulkan_struct_initializers>>*/\n\n#ifndef VKBIND_NO_GLOBAL_API\n/*<<vulkan_funcpointers_decl_global:extern>>*/\n#endif /*VKBIND_NO_GLOBAL_API*/\n\ntypedef struct\n{\n    /*<<vulkan_funcpointers_decl_global:4>>*/\n} VkbAPI;\n\n\n/*\nInitializes vkbind and attempts to load APIs statically.\n\nNote that it should be expected that APIs are not necessarilly statically implemented on every platform. This function\nwill reliably load the following APIs (assuming platform support for the relevant version of Vulkan):\n<<safe_global_api_docs>>\n\nvkbInit() will attempt to load every API statically, but for robustness you should not assume this will be successful.\nYou should instead use vkCreateInstance() to create a Vulkan instance, then parse that to vkbInitInstanceAPI() and use\nvkbBindInstanceAPI() if you want to bind the instance API to global scope.\n\npAPI is optional. On output it will contain pointers to all Vulkan APIs found by the loader.\n*/\nVkResult vkbInit(VkbAPI* pAPI);\n\n/*\nUninitializes vkbind.\n\nEach call to vkbInit() must be matched up with a call to vkbUninit().\n*/\nvoid vkbUninit(void);\n\n/*\nLoads per-instance function pointers into the specified API object.\n\nThis does not bind the function pointers to global scope. Use vkbBindAPI() for this.\n*/\nVkResult vkbInitInstanceAPI(VkInstance instance, VkbAPI* pAPI);\n\n/*\nLoads per-device function pointers into the specified API object.\n\nThis does not bind the function pointers to global scope. Use vkbBindAPI() for this.\n\nThis function only sets device-specific function pointers. The proper way to use this function is to first call\nvkbInitInstanceAPI() first, then call vkbInitDeviceAPI() using the same VkbAPI object, like the following.\n\n    VkbAPI api;\n    vkbInitInstanceAPI(instance, &api);\n    vkbInitDeviceAPI(device, &api);\n    vkbBindAPI(&api);   // <-- Optional. Can also call function pointers directly from the \"api\" object.\n    \nUse of this function is optional. It is provided only for optimization purposes to avoid the cost of internal dispatching.\n*/\nVkResult vkbInitDeviceAPI(VkDevice device, VkbAPI* pAPI);\n\n/*\nBinds the function pointers in pAPI to global scope.\n*/\nVkResult vkbBindAPI(const VkbAPI* pAPI);\n\n#ifdef __cplusplus\n}\n#endif\n#endif  /* VKBIND_H */\n\n\n\n/******************************************************************************\n ******************************************************************************\n\n IMPLEMENTATION\n\n ******************************************************************************\n ******************************************************************************/\n#ifdef VKBIND_IMPLEMENTATION\n#ifdef _WIN32\n#include <windows.h>\n#else\n#include <unistd.h>\n#include <dlfcn.h>\n#endif\n\n#ifndef VKBIND_NO_GLOBAL_API\n/*<<vulkan_funcpointers_decl_global>>*/\n#endif /*VKBIND_NO_GLOBAL_API*/\n\ntypedef void* VkbHandle;\ntypedef void (* VkbProc)(void);\n\nstatic VkbHandle vkb_dlopen(const char* filename)\n{\n#ifdef _WIN32\n    return (VkbHandle)LoadLibraryA(filename);\n#else\n    return (VkbHandle)dlopen(filename, RTLD_NOW);\n#endif\n}\n\nstatic void vkb_dlclose(VkbHandle handle)\n{\n#ifdef _WIN32\n    FreeLibrary((HMODULE)handle);\n#else\n    dlclose((void*)handle);\n#endif\n}\n\nstatic VkbProc vkb_dlsym(VkbHandle handle, const char* symbol)\n{\n#ifdef _WIN32\n    return (VkbProc)GetProcAddress((HMODULE)handle, symbol);\n#else\n#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))\n    #pragma GCC diagnostic push\n    #pragma GCC diagnostic ignored \"-Wpedantic\"\n#endif\n    return (VkbProc)dlsym((void*)handle, symbol);\n#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))\n    #pragma GCC diagnostic pop\n#endif\n#endif\n}\n\n\nstatic unsigned int g_vkbInitCount = 0;\nstatic VkbHandle g_vkbVulkanSO = NULL;\n\nstatic VkResult vkbLoadVulkanSO(void)\n{\n    size_t i;\n\n    const char* vulkanSONames[] = {\n    #if defined(VKBIND_VULKAN_SO)\n        VKBIND_VULKAN_SO,\n    #endif\n    #if defined(_WIN32)\n        \"vulkan-1.dll\"\n    #elif defined(__APPLE__)\n        /*\n        The idea here is that since MoltenVK seems to be the de facto standard for Vulkan on Apple platforms at the moment we'll try\n        that first. If Apple ever decides to officially support Vulkan we can perhaps consider dropping it to the bottom of the priority\n        list. Not sure if this reasoning is sound, but it makes sense in my head!\n        */\n        \"libMoltenVK.dylib\",\n        \"libvulkan.dylib.1\",\n        \"libvulkan.dylib\"\n    #else\n        \"libvulkan.so.1\",\n        \"libvulkan.so\"\n    #endif\n    };\n\n    for (i = 0; i < sizeof(vulkanSONames)/sizeof(vulkanSONames[0]); ++i) {\n        VkbHandle handle = vkb_dlopen(vulkanSONames[i]);\n        if (handle != NULL) {\n            g_vkbVulkanSO = handle;\n            return VK_SUCCESS;\n        }\n    }\n\n    return VK_ERROR_INCOMPATIBLE_DRIVER;\n}\n\nstatic VkResult vkbLoadVulkanSymbols(VkbAPI* pAPI)\n{\n    /*<<load_global_api_funcpointers>>*/\n\n    /*\n    We can only safely guarantee that vkGetInstanceProcAddr was successfully returned from dlsym(). The Vulkan specification lists some APIs\n    that should always work with vkGetInstanceProcAddr(), so I'm going ahead and doing that here just for robustness.\n    */\n    if (pAPI->vkGetInstanceProcAddr == NULL) {\n        return VK_ERROR_INITIALIZATION_FAILED;\n    }\n\n    /*<<load_safe_global_api>>*/\n\n    return VK_SUCCESS;\n}\n\n#ifndef VKBIND_NO_GLOBAL_API\nstatic void vkbInitFromGlobalAPI(VkbAPI* pAPI)\n{\n    /*<<set_struct_api_from_global>>*/\n}\n#endif /*VKBIND_NO_GLOBAL_API*/\n\nVkResult vkbInit(VkbAPI* pAPI)\n{\n    VkResult result;\n\n    /* If the Vulkan SO has not been loaded, do that first thing. */\n    if (g_vkbInitCount == 0) {\n        result = vkbLoadVulkanSO();\n        if (result != VK_SUCCESS) {\n            return result;\n        }\n    }\n\n    #if defined(VKBIND_NO_GLOBAL_API)\n    {\n        /* Getting here means the global API has been disabled. Therefore the caller *must* provide a VkbAPI object. */\n        if (pAPI == NULL) {\n            return VK_ERROR_INITIALIZATION_FAILED;\n        } else {\n            /* Since we don't have global function pointers we'll have to use dlsym() every time we initialize. */\n            result = vkbLoadVulkanSymbols(pAPI);\n            if (result != VK_SUCCESS) {\n                return result;\n            }\n        }\n    }\n    #else\n    {\n        if (pAPI == NULL) {\n            if (g_vkbInitCount == 0) {\n                VkbAPI api;\n                result = vkbInit(&api);\n                if (result != VK_SUCCESS) {\n                    return result;\n                }\n\n                /* The call to vkbInit() will have incremented the reference counter. Bring it back down since we're just going to increment it again later. */\n            } else {\n                /* The global API has already been bound. No need to do anything here. */\n            }\n        } else {\n            if (g_vkbInitCount == 0) {\n                result = vkbLoadVulkanSymbols(pAPI);\n                if (result != VK_SUCCESS) {\n                    return result;\n                }\n\n                result = vkbBindAPI(pAPI);\n                if (result != VK_SUCCESS) {\n                    return result;\n                }\n            } else {\n                /* The global API has already been bound. We need only retrieve the pointers from the globals. Using dlsym() would be too inefficient. */\n                vkbInitFromGlobalAPI(pAPI);\n            }\n        }\n    }\n    #endif\n\n    g_vkbInitCount += 1;    /* <-- Only increment the init counter on success. */\n    return VK_SUCCESS;\n}\n\nvoid vkbUninit(void)\n{\n    if (g_vkbInitCount == 0) {\n        return;\n    }\n\n    g_vkbInitCount -= 1;\n    if (g_vkbInitCount == 0) {\n        vkb_dlclose(g_vkbVulkanSO);\n        g_vkbVulkanSO = NULL;\n    }\n}\n\nVkResult vkbInitInstanceAPI(VkInstance instance, VkbAPI* pAPI)\n{\n    if (g_vkbInitCount == 0) {\n        return VK_ERROR_INITIALIZATION_FAILED;  /* vkbind not initialized. */\n    }\n\n    if (pAPI == NULL) {\n        return VK_ERROR_INITIALIZATION_FAILED;\n    }\n\n    /*\n    We need an instance of vkGetInstanceProcAddr(). If it's not available in pAPI we'll try pulling it\n    from global scope.\n    */\n    if (pAPI->vkGetInstanceProcAddr == NULL) {\n        #if !defined(VKBIND_NO_GLOBAL_API)\n        {\n            pAPI->vkGetInstanceProcAddr = vkGetInstanceProcAddr;\n        }\n        #endif\n    }\n\n    if (pAPI->vkGetInstanceProcAddr == NULL) {\n        return VK_ERROR_INITIALIZATION_FAILED;  /* We don't have a vkGetInstanceProcAddr(). We need to abort. */\n    }\n\n    /*<<load_instance_api>>*/\n\n    return VK_SUCCESS;\n}\n\nVkResult vkbInitDeviceAPI(VkDevice device, VkbAPI* pAPI)\n{\n    if (g_vkbInitCount == 0) {\n        return VK_ERROR_INITIALIZATION_FAILED;  /* vkbind not initialized. */\n    }\n\n    if (pAPI == NULL) {\n        return VK_ERROR_INITIALIZATION_FAILED;\n    }\n\n    /* We need to handle vkGetDeviceProcAddr() in a special way to ensure it's using the device-specific version instead of the per-instance version. */\n    if (pAPI->vkGetDeviceProcAddr == NULL) {\n        #if !defined(VKBIND_NO_GLOBAL_API)\n        {\n            pAPI->vkGetDeviceProcAddr = vkGetDeviceProcAddr;\n        }\n        #endif\n    }\n\n    if (pAPI->vkGetDeviceProcAddr == NULL) {\n        return VK_ERROR_INITIALIZATION_FAILED;  /* Don't have access to vkGetDeviceProcAddr(). Make sure vkbInitInstanceAPI() is called first on pAPI. */\n    }\n\n    pAPI->vkGetDeviceProcAddr = (PFN_vkGetDeviceProcAddr)pAPI->vkGetDeviceProcAddr(device, \"vkGetDeviceProcAddr\");\n    /*<<load_device_api>>*/\n\n    return VK_SUCCESS;\n}\n\nVkResult vkbBindAPI(const VkbAPI* pAPI)\n{\n    if (pAPI == NULL) {\n        return VK_ERROR_INITIALIZATION_FAILED;\n    }\n\n#if defined(VKBIND_NO_GLOBAL_API)\n    return VK_ERROR_INITIALIZATION_FAILED;  /* The global API has been disabled. */\n#else\n    /*<<set_global_api_from_struct>>*/\n\n    return VK_SUCCESS;\n#endif\n}\n\n#endif  /* VKBIND_IMPLEMENTATION */\n\n\n\n/*\nThis software is available as a choice of the following licenses. Choose\nwhichever you prefer.\n\n===============================================================================\nALTERNATIVE 1 - Public Domain (www.unlicense.org)\n===============================================================================\nThis is free and unencumbered software released into the public domain.\n\nAnyone is free to copy, modify, publish, use, compile, sell, or distribute this\nsoftware, either in source code form or as a compiled binary, for any purpose,\ncommercial or non-commercial, and by any means.\n\nIn jurisdictions that recognize copyright laws, the author or authors of this\nsoftware dedicate any and all copyright interest in the software to the public\ndomain. We make this dedication for the benefit of the public at large and to\nthe detriment of our heirs and successors. We intend this dedication to be an\novert act of relinquishment in perpetuity of all present and future rights to\nthis software under copyright law.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\nACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nFor more information, please refer to <http://unlicense.org/>\n\n===============================================================================\nALTERNATIVE 2 - MIT No Attribution\n===============================================================================\nCopyright 2019 David Reid\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit persons to whom the Software is furnished to do\nso.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n*/\n"
  },
  {
    "path": "vkbind.h",
    "content": "/*\nVulkan API loader. Choice of public domain or MIT-0. See license statements at the end of this file.\nvkbind - v1.4.345.0 - 2026-03-07\n\nDavid Reid - davidreidsoftware@gmail.com\n*/\n\n/*\nABOUT\n=====\nvkbind is a Vulkan API loader. It includes a full implementation of the Vulkan headers (auto-generated from the Vulkan\nspec) so there's no need for any additional libraries or SDKs. Unlike the official headers, the platform-specific\nsections are all contained within the same file.\n\n\nUSAGE\n=====\nvkbind is a single-file library. To use it, do something like the following in one .c file.\n    #define VKBIND_IMPLEMENTATION\n    #include \"vkbind.h\"\n\nThere is no need to link to any libraries.\n\nBefore attempting to call any Vulkan or vkbind APIs you first need to initialize vkbind with vkbInit(). Uninitialize\nwith vkbUninit(). This will bind statically implemented function pointers to the global vk* names.\n\nExample:\n\n    #define VKBIND_IMPLEMENTATION\n    #include \"vkbind.h\"\n\n    int main()\n    {\n        VkResult result = vkbInit(NULL);\n        if (result != VK_SUCCESS) {\n            printf(\"Failed to initialize vkbind.\");\n            return -1;\n        }\n\n        // Do stuff here.\n\n        vkbUninit();\n        return 0;\n    }\n\n\nIf your platform does not statically expose all Vulkan APIs you need to load instance-specific APIs using\nvkbInitInstanceAPI(), passing in a Vulkan VkInstance object. The returned function pointers can then be bound with\nvkbBindAPI(). You can also load the Vulkan API on a per-device basis using vkbInitDeviceAPI() and passing in a Vulkan\nVkDevice object. Note that you do not need to bind any APIs to global scope if you don't want to. Instead you can call\nthe functions directly from the VkbAPI structure.\n\nExample:\n\n    #define VKBIND_IMPLEMENTATION\n    #include \"vkbind.h\"\n\n    int main()\n    {\n        VkbAPI api;\n        VkResult result = vkbInit(&api);\n        if (result != VK_SUCCESS) {\n            printf(\"Failed to initialize vkbind.\");\n            return -1;\n        }\n\n        // ... Create your Vulkan instance here (vkCreateInstance) ...\n\n        result = vkbInitInstanceAPI(instance, &api);\n        if (result != VK_SUCCESS) {\n            printf(\"Failed to initialize instance API.\");\n            return -2;\n        }\n\n        result = vkbBindAPI(&api);\n        if (result != VK_SUCCESS) {\n            printf(\"Failed to bind instance API.\");\n            return -3;\n        }\n\n        // Do stuff here.\n\n        vkbUninit();\n        return 0;\n    }\n*/\n\n#ifndef VKBIND_H\n#define VKBIND_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#ifdef _MSC_VER\n    #define VKBIND_INLINE __forceinline\n#elif defined(__GNUC__)\n    /*\n    I've had a bug report where GCC is emitting warnings about functions possibly not being inlineable. This warning happens when\n    the __attribute__((always_inline)) attribute is defined without an \"inline\" statement. I think therefore there must be some\n    case where \"__inline__\" is not always defined, thus the compiler emitting these warnings. When using -std=c89 or -ansi on the\n    command line, we cannot use the \"inline\" keyword and instead need to use \"__inline__\". In an attempt to work around this issue\n    I am using \"__inline__\" only when we're compiling in strict ANSI mode.\n    */\n    #if defined(__STRICT_ANSI__)\n        #define VKBIND_GNUC_INLINE_HINT __inline__\n    #else\n        #define VKBIND_GNUC_INLINE_HINT inline\n    #endif\n\n    #if (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2)) || defined(__clang__)\n        #define VKBIND_INLINE VKBIND_GNUC_INLINE_HINT __attribute__((always_inline))\n    #else\n        #define VKBIND_INLINE VKBIND_GNUC_INLINE_HINT\n    #endif\n#elif defined(__WATCOMC__)\n    #define VKBIND_INLINE __inline\n#else\n    #define VKBIND_INLINE\n#endif\n\n/*\nvkbind's vk_platform.h implementation. See: https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#boilerplate-platform-specific-calling-conventions\n\nHere we define VKAPI_ATTR, VKAPI_CALL, VKAPI_PTR and make sure the sized types are defined. Support for more platforms\nwill be added later. Let me know what isn't supported properly and I'll look into it.\n*/\n#ifdef _WIN32\n#define VKAPI_ATTR\n#define VKAPI_CALL  __stdcall\n#define VKAPI_PTR   __stdcall\n#else\n#define VKAPI_ATTR\n#define VKAPI_CALL\n#define VKAPI_PTR\n#endif\n\n/* Here we need to ensure sized types are defined. Only explicitly checking for MSVC for now. */\n#ifndef VK_NO_STDINT_H\n#if defined(_MSC_VER) && (_MSC_VER < 1600)\n    typedef   signed char       int8_t;\n    typedef unsigned char       uint8_t;\n    typedef   signed short      int16_t;\n    typedef unsigned short      uint16_t;\n    typedef   signed int        int32_t;\n    typedef unsigned int        uint32_t;\n    typedef   signed __int64    int64_t;\n    typedef unsigned __int64    uint64_t;\n#else\n    #include <stdint.h>\n#endif\n#endif  /* VK_NO_STDINT_H */\n\n/* stddef.h is required for size_t. */\n#ifndef VK_NO_STDDEF_H\n    #include <stddef.h>\n#endif  /* VK_NO_STDDEF_H */\n\n#if defined(VK_USE_PLATFORM_WIN32_KHR)\n    #if !defined(VKBIND_NO_WIN32_HEADERS)\n        #include <windows.h>\n    #endif\n#endif\n\n#if defined(VK_USE_PLATFORM_XLIB_KHR)\n    #if !defined(VKBIND_NO_XLIB_HEADERS)\n        #include <X11/Xlib.h>\n    #endif\n#endif\n\n#if defined(VK_USE_PLATFORM_XLIB_XRANDR_EXT)\n    #if !defined(VKBIND_NO_XLIB_HEADERS)\n        #include <X11/extensions/Xrandr.h>\n    #endif\n#endif\n\n/* We need to define vkbind_Display and vkbind_Window. */\n#if defined(VK_USE_PLATFORM_XLIB_KHR) || defined(VK_USE_PLATFORM_XLIB_XRANDR_EXT)\n    #if !defined(VKBIND_NO_XLIB_HEADERS)\n        typedef Display       vkbind_Display;\n        typedef Window        vkbind_Window;\n        typedef VisualID      vkbind_VisualID;\n    #else\n        typedef void*         vkbind_Display;\n        typedef unsigned long vkbind_Window;\n        typedef unsigned long vkbind_VisualID;\n    #endif\n#endif\n\n#ifndef VKBIND_ZERO_MEMORY\n#include <string.h>\n#define VKBIND_ZERO_MEMORY(p, size)    memset((p), 0, (size))\n#endif\n\n\n#define vulkan_video_codecs_common 1\n\n#define VK_MAKE_VIDEO_STD_VERSION(major, minor, patch)     ((((uint32_t)(major)) << 22) | (((uint32_t)(minor)) << 12) | ((uint32_t)(patch)))\n\n\n#define vulkan_video_codec_h264std 1\n#define STD_VIDEO_H264_CPB_CNT_LIST_SIZE 32\n#define STD_VIDEO_H264_SCALING_LIST_4X4_NUM_LISTS 6\n#define STD_VIDEO_H264_SCALING_LIST_4X4_NUM_ELEMENTS 16\n#define STD_VIDEO_H264_SCALING_LIST_8X8_NUM_LISTS 6\n#define STD_VIDEO_H264_SCALING_LIST_8X8_NUM_ELEMENTS 64\n#define STD_VIDEO_H264_MAX_NUM_LIST_REF 32\n#define STD_VIDEO_H264_MAX_CHROMA_PLANES 2\n#define STD_VIDEO_H264_NO_REFERENCE_PICTURE 0xFF\n\ntypedef enum\n{\n    STD_VIDEO_H264_CHROMA_FORMAT_IDC_MONOCHROME = 0,\n    STD_VIDEO_H264_CHROMA_FORMAT_IDC_420 = 1,\n    STD_VIDEO_H264_CHROMA_FORMAT_IDC_422 = 2,\n    STD_VIDEO_H264_CHROMA_FORMAT_IDC_444 = 3,\n    STD_VIDEO_H264_CHROMA_FORMAT_IDC_INVALID = 0x7FFFFFFF,\n    VKD_VIDEO_H264_CHROMA_FORMAT_IDC_MAX_ENUM = 0x7FFFFFFF\n} StdVideoH264ChromaFormatIdc;\n\ntypedef enum\n{\n    STD_VIDEO_H264_PROFILE_IDC_BASELINE = 66,\n    STD_VIDEO_H264_PROFILE_IDC_MAIN = 77,\n    STD_VIDEO_H264_PROFILE_IDC_HIGH = 100,\n    STD_VIDEO_H264_PROFILE_IDC_HIGH_444_PREDICTIVE = 244,\n    STD_VIDEO_H264_PROFILE_IDC_INVALID = 0x7FFFFFFF,\n    VKD_VIDEO_H264_PROFILE_IDC_MAX_ENUM = 0x7FFFFFFF\n} StdVideoH264ProfileIdc;\n\ntypedef enum\n{\n    STD_VIDEO_H264_LEVEL_IDC_1_0 = 0,\n    STD_VIDEO_H264_LEVEL_IDC_1_1 = 1,\n    STD_VIDEO_H264_LEVEL_IDC_1_2 = 2,\n    STD_VIDEO_H264_LEVEL_IDC_1_3 = 3,\n    STD_VIDEO_H264_LEVEL_IDC_2_0 = 4,\n    STD_VIDEO_H264_LEVEL_IDC_2_1 = 5,\n    STD_VIDEO_H264_LEVEL_IDC_2_2 = 6,\n    STD_VIDEO_H264_LEVEL_IDC_3_0 = 7,\n    STD_VIDEO_H264_LEVEL_IDC_3_1 = 8,\n    STD_VIDEO_H264_LEVEL_IDC_3_2 = 9,\n    STD_VIDEO_H264_LEVEL_IDC_4_0 = 10,\n    STD_VIDEO_H264_LEVEL_IDC_4_1 = 11,\n    STD_VIDEO_H264_LEVEL_IDC_4_2 = 12,\n    STD_VIDEO_H264_LEVEL_IDC_5_0 = 13,\n    STD_VIDEO_H264_LEVEL_IDC_5_1 = 14,\n    STD_VIDEO_H264_LEVEL_IDC_5_2 = 15,\n    STD_VIDEO_H264_LEVEL_IDC_6_0 = 16,\n    STD_VIDEO_H264_LEVEL_IDC_6_1 = 17,\n    STD_VIDEO_H264_LEVEL_IDC_6_2 = 18,\n    STD_VIDEO_H264_LEVEL_IDC_INVALID = 0x7FFFFFFF,\n    VKD_VIDEO_H264_LEVEL_IDC_MAX_ENUM = 0x7FFFFFFF\n} StdVideoH264LevelIdc;\n\ntypedef enum\n{\n    STD_VIDEO_H264_POC_TYPE_0 = 0,\n    STD_VIDEO_H264_POC_TYPE_1 = 1,\n    STD_VIDEO_H264_POC_TYPE_2 = 2,\n    STD_VIDEO_H264_POC_TYPE_INVALID = 0x7FFFFFFF,\n    VKD_VIDEO_H264_POC_TYPE_MAX_ENUM = 0x7FFFFFFF\n} StdVideoH264PocType;\n\ntypedef enum\n{\n    STD_VIDEO_H264_ASPECT_RATIO_IDC_UNSPECIFIED = 0,\n    STD_VIDEO_H264_ASPECT_RATIO_IDC_SQUARE = 1,\n    STD_VIDEO_H264_ASPECT_RATIO_IDC_12_11 = 2,\n    STD_VIDEO_H264_ASPECT_RATIO_IDC_10_11 = 3,\n    STD_VIDEO_H264_ASPECT_RATIO_IDC_16_11 = 4,\n    STD_VIDEO_H264_ASPECT_RATIO_IDC_40_33 = 5,\n    STD_VIDEO_H264_ASPECT_RATIO_IDC_24_11 = 6,\n    STD_VIDEO_H264_ASPECT_RATIO_IDC_20_11 = 7,\n    STD_VIDEO_H264_ASPECT_RATIO_IDC_32_11 = 8,\n    STD_VIDEO_H264_ASPECT_RATIO_IDC_80_33 = 9,\n    STD_VIDEO_H264_ASPECT_RATIO_IDC_18_11 = 10,\n    STD_VIDEO_H264_ASPECT_RATIO_IDC_15_11 = 11,\n    STD_VIDEO_H264_ASPECT_RATIO_IDC_64_33 = 12,\n    STD_VIDEO_H264_ASPECT_RATIO_IDC_160_99 = 13,\n    STD_VIDEO_H264_ASPECT_RATIO_IDC_4_3 = 14,\n    STD_VIDEO_H264_ASPECT_RATIO_IDC_3_2 = 15,\n    STD_VIDEO_H264_ASPECT_RATIO_IDC_2_1 = 16,\n    STD_VIDEO_H264_ASPECT_RATIO_IDC_EXTENDED_SAR = 255,\n    STD_VIDEO_H264_ASPECT_RATIO_IDC_INVALID = 0x7FFFFFFF,\n    VKD_VIDEO_H264_ASPECT_RATIO_IDC_MAX_ENUM = 0x7FFFFFFF\n} StdVideoH264AspectRatioIdc;\n\ntypedef enum\n{\n    STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_DEFAULT = 0,\n    STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_EXPLICIT = 1,\n    STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_IMPLICIT = 2,\n    STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_INVALID = 0x7FFFFFFF,\n    VKD_VIDEO_H264_WEIGHTED_BIPRED_IDC_MAX_ENUM = 0x7FFFFFFF\n} StdVideoH264WeightedBipredIdc;\n\ntypedef enum\n{\n    STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_SHORT_TERM_SUBTRACT = 0,\n    STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_SHORT_TERM_ADD = 1,\n    STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_LONG_TERM = 2,\n    STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_END = 3,\n    STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_INVALID = 0x7FFFFFFF,\n    VKD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_MAX_ENUM = 0x7FFFFFFF\n} StdVideoH264ModificationOfPicNumsIdc;\n\ntypedef enum\n{\n    STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_END = 0,\n    STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_UNMARK_SHORT_TERM = 1,\n    STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_UNMARK_LONG_TERM = 2,\n    STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_MARK_LONG_TERM = 3,\n    STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_SET_MAX_LONG_TERM_INDEX = 4,\n    STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_UNMARK_ALL = 5,\n    STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_MARK_CURRENT_AS_LONG_TERM = 6,\n    STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_INVALID = 0x7FFFFFFF,\n    VKD_VIDEO_H264_MEM_MGMT_CONTROL_OP_MAX_ENUM = 0x7FFFFFFF\n} StdVideoH264MemMgmtControlOp;\n\ntypedef enum\n{\n    STD_VIDEO_H264_CABAC_INIT_IDC_0 = 0,\n    STD_VIDEO_H264_CABAC_INIT_IDC_1 = 1,\n    STD_VIDEO_H264_CABAC_INIT_IDC_2 = 2,\n    STD_VIDEO_H264_CABAC_INIT_IDC_INVALID = 0x7FFFFFFF,\n    VKD_VIDEO_H264_CABAC_INIT_IDC_MAX_ENUM = 0x7FFFFFFF\n} StdVideoH264CabacInitIdc;\n\ntypedef enum\n{\n    STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_DISABLED = 0,\n    STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_ENABLED = 1,\n    STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_PARTIAL = 2,\n    STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_INVALID = 0x7FFFFFFF,\n    VKD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_MAX_ENUM = 0x7FFFFFFF\n} StdVideoH264DisableDeblockingFilterIdc;\n\ntypedef enum\n{\n    STD_VIDEO_H264_SLICE_TYPE_P = 0,\n    STD_VIDEO_H264_SLICE_TYPE_B = 1,\n    STD_VIDEO_H264_SLICE_TYPE_I = 2,\n    STD_VIDEO_H264_SLICE_TYPE_INVALID = 0x7FFFFFFF,\n    VKD_VIDEO_H264_SLICE_TYPE_MAX_ENUM = 0x7FFFFFFF\n} StdVideoH264SliceType;\n\ntypedef enum\n{\n    STD_VIDEO_H264_PICTURE_TYPE_P = 0,\n    STD_VIDEO_H264_PICTURE_TYPE_B = 1,\n    STD_VIDEO_H264_PICTURE_TYPE_I = 2,\n    STD_VIDEO_H264_PICTURE_TYPE_IDR = 5,\n    STD_VIDEO_H264_PICTURE_TYPE_INVALID = 0x7FFFFFFF,\n    VKD_VIDEO_H264_PICTURE_TYPE_MAX_ENUM = 0x7FFFFFFF\n} StdVideoH264PictureType;\n\ntypedef enum\n{\n    STD_VIDEO_H264_NON_VCL_NALU_TYPE_SPS = 0,\n    STD_VIDEO_H264_NON_VCL_NALU_TYPE_PPS = 1,\n    STD_VIDEO_H264_NON_VCL_NALU_TYPE_AUD = 2,\n    STD_VIDEO_H264_NON_VCL_NALU_TYPE_PREFIX = 3,\n    STD_VIDEO_H264_NON_VCL_NALU_TYPE_END_OF_SEQUENCE = 4,\n    STD_VIDEO_H264_NON_VCL_NALU_TYPE_END_OF_STREAM = 5,\n    STD_VIDEO_H264_NON_VCL_NALU_TYPE_PRECODED = 6,\n    STD_VIDEO_H264_NON_VCL_NALU_TYPE_INVALID = 0x7FFFFFFF,\n    VKD_VIDEO_H264_NON_VCL_NALU_TYPE_MAX_ENUM = 0x7FFFFFFF\n} StdVideoH264NonVclNaluType;\n\n\ntypedef struct StdVideoH264SpsVuiFlags\n{\n    uint32_t aspect_ratio_info_present_flag : 1;\n    uint32_t overscan_info_present_flag : 1;\n    uint32_t overscan_appropriate_flag : 1;\n    uint32_t video_signal_type_present_flag : 1;\n    uint32_t video_full_range_flag : 1;\n    uint32_t color_description_present_flag : 1;\n    uint32_t chroma_loc_info_present_flag : 1;\n    uint32_t timing_info_present_flag : 1;\n    uint32_t fixed_frame_rate_flag : 1;\n    uint32_t bitstream_restriction_flag : 1;\n    uint32_t nal_hrd_parameters_present_flag : 1;\n    uint32_t vcl_hrd_parameters_present_flag : 1;\n} StdVideoH264SpsVuiFlags;\n\ntypedef struct StdVideoH264HrdParameters\n{\n    uint8_t cpb_cnt_minus1;\n    uint8_t bit_rate_scale;\n    uint8_t cpb_size_scale;\n    uint8_t reserved1;\n    uint32_t bit_rate_value_minus1[STD_VIDEO_H264_CPB_CNT_LIST_SIZE];\n    uint32_t cpb_size_value_minus1[STD_VIDEO_H264_CPB_CNT_LIST_SIZE];\n    uint8_t cbr_flag[STD_VIDEO_H264_CPB_CNT_LIST_SIZE];\n    uint32_t initial_cpb_removal_delay_length_minus1;\n    uint32_t cpb_removal_delay_length_minus1;\n    uint32_t dpb_output_delay_length_minus1;\n    uint32_t time_offset_length;\n} StdVideoH264HrdParameters;\n\ntypedef struct StdVideoH264SequenceParameterSetVui\n{\n    StdVideoH264SpsVuiFlags flags;\n    StdVideoH264AspectRatioIdc aspect_ratio_idc;\n    uint16_t sar_width;\n    uint16_t sar_height;\n    uint8_t video_format;\n    uint8_t colour_primaries;\n    uint8_t transfer_characteristics;\n    uint8_t matrix_coefficients;\n    uint32_t num_units_in_tick;\n    uint32_t time_scale;\n    uint8_t max_num_reorder_frames;\n    uint8_t max_dec_frame_buffering;\n    uint8_t chroma_sample_loc_type_top_field;\n    uint8_t chroma_sample_loc_type_bottom_field;\n    uint32_t reserved1;\n    const StdVideoH264HrdParameters* pHrdParameters;\n} StdVideoH264SequenceParameterSetVui;\n\ntypedef struct StdVideoH264SpsFlags\n{\n    uint32_t constraint_set0_flag : 1;\n    uint32_t constraint_set1_flag : 1;\n    uint32_t constraint_set2_flag : 1;\n    uint32_t constraint_set3_flag : 1;\n    uint32_t constraint_set4_flag : 1;\n    uint32_t constraint_set5_flag : 1;\n    uint32_t direct_8x8_inference_flag : 1;\n    uint32_t mb_adaptive_frame_field_flag : 1;\n    uint32_t frame_mbs_only_flag : 1;\n    uint32_t delta_pic_order_always_zero_flag : 1;\n    uint32_t separate_colour_plane_flag : 1;\n    uint32_t gaps_in_frame_num_value_allowed_flag : 1;\n    uint32_t qpprime_y_zero_transform_bypass_flag : 1;\n    uint32_t frame_cropping_flag : 1;\n    uint32_t seq_scaling_matrix_present_flag : 1;\n    uint32_t vui_parameters_present_flag : 1;\n} StdVideoH264SpsFlags;\n\ntypedef struct StdVideoH264ScalingLists\n{\n    uint16_t scaling_list_present_mask;\n    uint16_t use_default_scaling_matrix_mask;\n    uint8_t ScalingList4x4[STD_VIDEO_H264_SCALING_LIST_4X4_NUM_LISTS][STD_VIDEO_H264_SCALING_LIST_4X4_NUM_ELEMENTS];\n    uint8_t ScalingList8x8[STD_VIDEO_H264_SCALING_LIST_8X8_NUM_LISTS][STD_VIDEO_H264_SCALING_LIST_8X8_NUM_ELEMENTS];\n} StdVideoH264ScalingLists;\n\ntypedef struct StdVideoH264SequenceParameterSet\n{\n    StdVideoH264SpsFlags flags;\n    StdVideoH264ProfileIdc profile_idc;\n    StdVideoH264LevelIdc level_idc;\n    StdVideoH264ChromaFormatIdc chroma_format_idc;\n    uint8_t seq_parameter_set_id;\n    uint8_t bit_depth_luma_minus8;\n    uint8_t bit_depth_chroma_minus8;\n    uint8_t log2_max_frame_num_minus4;\n    StdVideoH264PocType pic_order_cnt_type;\n    int32_t offset_for_non_ref_pic;\n    int32_t offset_for_top_to_bottom_field;\n    uint8_t log2_max_pic_order_cnt_lsb_minus4;\n    uint8_t num_ref_frames_in_pic_order_cnt_cycle;\n    uint8_t max_num_ref_frames;\n    uint8_t reserved1;\n    uint32_t pic_width_in_mbs_minus1;\n    uint32_t pic_height_in_map_units_minus1;\n    uint32_t frame_crop_left_offset;\n    uint32_t frame_crop_right_offset;\n    uint32_t frame_crop_top_offset;\n    uint32_t frame_crop_bottom_offset;\n    uint32_t reserved2;\n    const int32_t* pOffsetForRefFrame;\n    const StdVideoH264ScalingLists* pScalingLists;\n    const StdVideoH264SequenceParameterSetVui* pSequenceParameterSetVui;\n} StdVideoH264SequenceParameterSet;\n\ntypedef struct StdVideoH264PpsFlags\n{\n    uint32_t transform_8x8_mode_flag : 1;\n    uint32_t redundant_pic_cnt_present_flag : 1;\n    uint32_t constrained_intra_pred_flag : 1;\n    uint32_t deblocking_filter_control_present_flag : 1;\n    uint32_t weighted_pred_flag : 1;\n    uint32_t bottom_field_pic_order_in_frame_present_flag : 1;\n    uint32_t entropy_coding_mode_flag : 1;\n    uint32_t pic_scaling_matrix_present_flag : 1;\n} StdVideoH264PpsFlags;\n\ntypedef struct StdVideoH264PictureParameterSet\n{\n    StdVideoH264PpsFlags flags;\n    uint8_t seq_parameter_set_id;\n    uint8_t pic_parameter_set_id;\n    uint8_t num_ref_idx_l0_default_active_minus1;\n    uint8_t num_ref_idx_l1_default_active_minus1;\n    StdVideoH264WeightedBipredIdc weighted_bipred_idc;\n    int8_t pic_init_qp_minus26;\n    int8_t pic_init_qs_minus26;\n    int8_t chroma_qp_index_offset;\n    int8_t second_chroma_qp_index_offset;\n    const StdVideoH264ScalingLists* pScalingLists;\n} StdVideoH264PictureParameterSet;\n\n\n#define vulkan_video_codec_h264std_decode 1\n#define VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_SPEC_VERSION VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_1_0_0\n#define VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_EXTENSION_NAME \"VK_STD_vulkan_video_codec_h264_decode\"\n#define STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_LIST_SIZE 2\n\n#define VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_1_0_0 VK_MAKE_VIDEO_STD_VERSION(1, 0, 0)\n\ntypedef enum\n{\n    STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_TOP = 0,\n    STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_BOTTOM = 1,\n    STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_INVALID = 0x7FFFFFFF,\n    VKD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_MAX_ENUM = 0x7FFFFFFF\n} StdVideoDecodeH264FieldOrderCount;\n\n\ntypedef struct StdVideoDecodeH264PictureInfoFlags\n{\n    uint32_t field_pic_flag : 1;\n    uint32_t is_intra : 1;\n    uint32_t IdrPicFlag : 1;\n    uint32_t bottom_field_flag : 1;\n    uint32_t is_reference : 1;\n    uint32_t complementary_field_pair : 1;\n} StdVideoDecodeH264PictureInfoFlags;\n\ntypedef struct StdVideoDecodeH264PictureInfo\n{\n    StdVideoDecodeH264PictureInfoFlags flags;\n    uint8_t seq_parameter_set_id;\n    uint8_t pic_parameter_set_id;\n    uint8_t reserved1;\n    uint8_t reserved2;\n    uint16_t frame_num;\n    uint16_t idr_pic_id;\n    int32_t PicOrderCnt[STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_LIST_SIZE];\n} StdVideoDecodeH264PictureInfo;\n\ntypedef struct StdVideoDecodeH264ReferenceInfoFlags\n{\n    uint32_t top_field_flag : 1;\n    uint32_t bottom_field_flag : 1;\n    uint32_t used_for_long_term_reference : 1;\n    uint32_t is_non_existing : 1;\n} StdVideoDecodeH264ReferenceInfoFlags;\n\ntypedef struct StdVideoDecodeH264ReferenceInfo\n{\n    StdVideoDecodeH264ReferenceInfoFlags flags;\n    uint16_t FrameNum;\n    uint16_t reserved;\n    int32_t PicOrderCnt[STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_LIST_SIZE];\n} StdVideoDecodeH264ReferenceInfo;\n\n\n#define vulkan_video_codec_h264std_encode 1\n#define VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_SPEC_VERSION VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_API_VERSION_1_0_0\n#define VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_EXTENSION_NAME \"VK_STD_vulkan_video_codec_h264_encode\"\n\n#define VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_API_VERSION_1_0_0 VK_MAKE_VIDEO_STD_VERSION(1, 0, 0)\n\ntypedef struct StdVideoEncodeH264WeightTableFlags\n{\n    uint32_t luma_weight_l0_flag;\n    uint32_t chroma_weight_l0_flag;\n    uint32_t luma_weight_l1_flag;\n    uint32_t chroma_weight_l1_flag;\n} StdVideoEncodeH264WeightTableFlags;\n\ntypedef struct StdVideoEncodeH264WeightTable\n{\n    StdVideoEncodeH264WeightTableFlags flags;\n    uint8_t luma_log2_weight_denom;\n    uint8_t chroma_log2_weight_denom;\n    int8_t luma_weight_l0[STD_VIDEO_H264_MAX_NUM_LIST_REF];\n    int8_t luma_offset_l0[STD_VIDEO_H264_MAX_NUM_LIST_REF];\n    int8_t chroma_weight_l0[STD_VIDEO_H264_MAX_NUM_LIST_REF][STD_VIDEO_H264_MAX_CHROMA_PLANES];\n    int8_t chroma_offset_l0[STD_VIDEO_H264_MAX_NUM_LIST_REF][STD_VIDEO_H264_MAX_CHROMA_PLANES];\n    int8_t luma_weight_l1[STD_VIDEO_H264_MAX_NUM_LIST_REF];\n    int8_t luma_offset_l1[STD_VIDEO_H264_MAX_NUM_LIST_REF];\n    int8_t chroma_weight_l1[STD_VIDEO_H264_MAX_NUM_LIST_REF][STD_VIDEO_H264_MAX_CHROMA_PLANES];\n    int8_t chroma_offset_l1[STD_VIDEO_H264_MAX_NUM_LIST_REF][STD_VIDEO_H264_MAX_CHROMA_PLANES];\n} StdVideoEncodeH264WeightTable;\n\ntypedef struct StdVideoEncodeH264SliceHeaderFlags\n{\n    uint32_t direct_spatial_mv_pred_flag : 1;\n    uint32_t num_ref_idx_active_override_flag : 1;\n    uint32_t reserved : 30;\n} StdVideoEncodeH264SliceHeaderFlags;\n\ntypedef struct StdVideoEncodeH264PictureInfoFlags\n{\n    uint32_t IdrPicFlag : 1;\n    uint32_t is_reference : 1;\n    uint32_t no_output_of_prior_pics_flag : 1;\n    uint32_t long_term_reference_flag : 1;\n    uint32_t adaptive_ref_pic_marking_mode_flag : 1;\n    uint32_t reserved : 27;\n} StdVideoEncodeH264PictureInfoFlags;\n\ntypedef struct StdVideoEncodeH264ReferenceInfoFlags\n{\n    uint32_t used_for_long_term_reference : 1;\n    uint32_t reserved : 31;\n} StdVideoEncodeH264ReferenceInfoFlags;\n\ntypedef struct StdVideoEncodeH264ReferenceListsInfoFlags\n{\n    uint32_t ref_pic_list_modification_flag_l0 : 1;\n    uint32_t ref_pic_list_modification_flag_l1 : 1;\n    uint32_t reserved : 30;\n} StdVideoEncodeH264ReferenceListsInfoFlags;\n\ntypedef struct StdVideoEncodeH264RefListModEntry\n{\n    StdVideoH264ModificationOfPicNumsIdc modification_of_pic_nums_idc;\n    uint16_t abs_diff_pic_num_minus1;\n    uint16_t long_term_pic_num;\n} StdVideoEncodeH264RefListModEntry;\n\ntypedef struct StdVideoEncodeH264RefPicMarkingEntry\n{\n    StdVideoH264MemMgmtControlOp memory_management_control_operation;\n    uint16_t difference_of_pic_nums_minus1;\n    uint16_t long_term_pic_num;\n    uint16_t long_term_frame_idx;\n    uint16_t max_long_term_frame_idx_plus1;\n} StdVideoEncodeH264RefPicMarkingEntry;\n\ntypedef struct StdVideoEncodeH264ReferenceListsInfo\n{\n    StdVideoEncodeH264ReferenceListsInfoFlags flags;\n    uint8_t num_ref_idx_l0_active_minus1;\n    uint8_t num_ref_idx_l1_active_minus1;\n    uint8_t RefPicList0[STD_VIDEO_H264_MAX_NUM_LIST_REF];\n    uint8_t RefPicList1[STD_VIDEO_H264_MAX_NUM_LIST_REF];\n    uint8_t refList0ModOpCount;\n    uint8_t refList1ModOpCount;\n    uint8_t refPicMarkingOpCount;\n    uint8_t reserved1[7];\n    const StdVideoEncodeH264RefListModEntry* pRefList0ModOperations;\n    const StdVideoEncodeH264RefListModEntry* pRefList1ModOperations;\n    const StdVideoEncodeH264RefPicMarkingEntry* pRefPicMarkingOperations;\n} StdVideoEncodeH264ReferenceListsInfo;\n\ntypedef struct StdVideoEncodeH264PictureInfo\n{\n    StdVideoEncodeH264PictureInfoFlags flags;\n    uint8_t seq_parameter_set_id;\n    uint8_t pic_parameter_set_id;\n    uint16_t idr_pic_id;\n    StdVideoH264PictureType primary_pic_type;\n    uint32_t frame_num;\n    int32_t PicOrderCnt;\n    uint8_t temporal_id;\n    uint8_t reserved1[3];\n    const StdVideoEncodeH264ReferenceListsInfo* pRefLists;\n} StdVideoEncodeH264PictureInfo;\n\ntypedef struct StdVideoEncodeH264ReferenceInfo\n{\n    StdVideoEncodeH264ReferenceInfoFlags flags;\n    StdVideoH264PictureType primary_pic_type;\n    uint32_t FrameNum;\n    int32_t PicOrderCnt;\n    uint16_t long_term_pic_num;\n    uint16_t long_term_frame_idx;\n    uint8_t temporal_id;\n} StdVideoEncodeH264ReferenceInfo;\n\ntypedef struct StdVideoEncodeH264SliceHeader\n{\n    StdVideoEncodeH264SliceHeaderFlags flags;\n    uint32_t first_mb_in_slice;\n    StdVideoH264SliceType slice_type;\n    int8_t slice_alpha_c0_offset_div2;\n    int8_t slice_beta_offset_div2;\n    int8_t slice_qp_delta;\n    uint8_t reserved1;\n    StdVideoH264CabacInitIdc cabac_init_idc;\n    StdVideoH264DisableDeblockingFilterIdc disable_deblocking_filter_idc;\n    const StdVideoEncodeH264WeightTable* pWeightTable;\n} StdVideoEncodeH264SliceHeader;\n\n\n#define vulkan_video_codec_h265std 1\n#define STD_VIDEO_H265_CPB_CNT_LIST_SIZE 32\n#define STD_VIDEO_H265_SUBLAYERS_LIST_SIZE 7\n#define STD_VIDEO_H265_SCALING_LIST_4X4_NUM_LISTS 6\n#define STD_VIDEO_H265_SCALING_LIST_4X4_NUM_ELEMENTS 16\n#define STD_VIDEO_H265_SCALING_LIST_8X8_NUM_LISTS 6\n#define STD_VIDEO_H265_SCALING_LIST_8X8_NUM_ELEMENTS 64\n#define STD_VIDEO_H265_SCALING_LIST_16X16_NUM_LISTS 6\n#define STD_VIDEO_H265_SCALING_LIST_16X16_NUM_ELEMENTS 64\n#define STD_VIDEO_H265_SCALING_LIST_32X32_NUM_LISTS 2\n#define STD_VIDEO_H265_SCALING_LIST_32X32_NUM_ELEMENTS 64\n#define STD_VIDEO_H265_CHROMA_QP_OFFSET_LIST_SIZE 6\n#define STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_COLS_LIST_SIZE 19\n#define STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_ROWS_LIST_SIZE 21\n#define STD_VIDEO_H265_PREDICTOR_PALETTE_COMPONENTS_LIST_SIZE 3\n#define STD_VIDEO_H265_PREDICTOR_PALETTE_COMP_ENTRIES_LIST_SIZE 128\n#define STD_VIDEO_H265_MAX_NUM_LIST_REF 15\n#define STD_VIDEO_H265_MAX_CHROMA_PLANES 2\n#define STD_VIDEO_H265_MAX_SHORT_TERM_REF_PIC_SETS 64\n#define STD_VIDEO_H265_MAX_DPB_SIZE 16\n#define STD_VIDEO_H265_MAX_LONG_TERM_REF_PICS_SPS 32\n#define STD_VIDEO_H265_MAX_LONG_TERM_PICS 16\n#define STD_VIDEO_H265_MAX_DELTA_POC 48\n#define STD_VIDEO_H265_NO_REFERENCE_PICTURE 0xFF\n\ntypedef enum\n{\n    STD_VIDEO_H265_CHROMA_FORMAT_IDC_MONOCHROME = 0,\n    STD_VIDEO_H265_CHROMA_FORMAT_IDC_420 = 1,\n    STD_VIDEO_H265_CHROMA_FORMAT_IDC_422 = 2,\n    STD_VIDEO_H265_CHROMA_FORMAT_IDC_444 = 3,\n    STD_VIDEO_H265_CHROMA_FORMAT_IDC_INVALID = 0x7FFFFFFF,\n    VKD_VIDEO_H265_CHROMA_FORMAT_IDC_MAX_ENUM = 0x7FFFFFFF\n} StdVideoH265ChromaFormatIdc;\n\ntypedef enum\n{\n    STD_VIDEO_H265_PROFILE_IDC_MAIN = 1,\n    STD_VIDEO_H265_PROFILE_IDC_MAIN_10 = 2,\n    STD_VIDEO_H265_PROFILE_IDC_MAIN_STILL_PICTURE = 3,\n    STD_VIDEO_H265_PROFILE_IDC_FORMAT_RANGE_EXTENSIONS = 4,\n    STD_VIDEO_H265_PROFILE_IDC_SCC_EXTENSIONS = 9,\n    STD_VIDEO_H265_PROFILE_IDC_INVALID = 0x7FFFFFFF,\n    VKD_VIDEO_H265_PROFILE_IDC_MAX_ENUM = 0x7FFFFFFF\n} StdVideoH265ProfileIdc;\n\ntypedef enum\n{\n    STD_VIDEO_H265_LEVEL_IDC_1_0 = 0,\n    STD_VIDEO_H265_LEVEL_IDC_2_0 = 1,\n    STD_VIDEO_H265_LEVEL_IDC_2_1 = 2,\n    STD_VIDEO_H265_LEVEL_IDC_3_0 = 3,\n    STD_VIDEO_H265_LEVEL_IDC_3_1 = 4,\n    STD_VIDEO_H265_LEVEL_IDC_4_0 = 5,\n    STD_VIDEO_H265_LEVEL_IDC_4_1 = 6,\n    STD_VIDEO_H265_LEVEL_IDC_5_0 = 7,\n    STD_VIDEO_H265_LEVEL_IDC_5_1 = 8,\n    STD_VIDEO_H265_LEVEL_IDC_5_2 = 9,\n    STD_VIDEO_H265_LEVEL_IDC_6_0 = 10,\n    STD_VIDEO_H265_LEVEL_IDC_6_1 = 11,\n    STD_VIDEO_H265_LEVEL_IDC_6_2 = 12,\n    STD_VIDEO_H265_LEVEL_IDC_INVALID = 0x7FFFFFFF,\n    VKD_VIDEO_H265_LEVEL_IDC_MAX_ENUM = 0x7FFFFFFF\n} StdVideoH265LevelIdc;\n\ntypedef enum\n{\n    STD_VIDEO_H265_SLICE_TYPE_B = 0,\n    STD_VIDEO_H265_SLICE_TYPE_P = 1,\n    STD_VIDEO_H265_SLICE_TYPE_I = 2,\n    STD_VIDEO_H265_SLICE_TYPE_INVALID = 0x7FFFFFFF,\n    VKD_VIDEO_H265_SLICE_TYPE_MAX_ENUM = 0x7FFFFFFF\n} StdVideoH265SliceType;\n\ntypedef enum\n{\n    STD_VIDEO_H265_PICTURE_TYPE_P = 0,\n    STD_VIDEO_H265_PICTURE_TYPE_B = 1,\n    STD_VIDEO_H265_PICTURE_TYPE_I = 2,\n    STD_VIDEO_H265_PICTURE_TYPE_IDR = 3,\n    STD_VIDEO_H265_PICTURE_TYPE_INVALID = 0x7FFFFFFF,\n    VKD_VIDEO_H265_PICTURE_TYPE_MAX_ENUM = 0x7FFFFFFF\n} StdVideoH265PictureType;\n\ntypedef enum\n{\n    STD_VIDEO_H265_ASPECT_RATIO_IDC_UNSPECIFIED = 0,\n    STD_VIDEO_H265_ASPECT_RATIO_IDC_SQUARE = 1,\n    STD_VIDEO_H265_ASPECT_RATIO_IDC_12_11 = 2,\n    STD_VIDEO_H265_ASPECT_RATIO_IDC_10_11 = 3,\n    STD_VIDEO_H265_ASPECT_RATIO_IDC_16_11 = 4,\n    STD_VIDEO_H265_ASPECT_RATIO_IDC_40_33 = 5,\n    STD_VIDEO_H265_ASPECT_RATIO_IDC_24_11 = 6,\n    STD_VIDEO_H265_ASPECT_RATIO_IDC_20_11 = 7,\n    STD_VIDEO_H265_ASPECT_RATIO_IDC_32_11 = 8,\n    STD_VIDEO_H265_ASPECT_RATIO_IDC_80_33 = 9,\n    STD_VIDEO_H265_ASPECT_RATIO_IDC_18_11 = 10,\n    STD_VIDEO_H265_ASPECT_RATIO_IDC_15_11 = 11,\n    STD_VIDEO_H265_ASPECT_RATIO_IDC_64_33 = 12,\n    STD_VIDEO_H265_ASPECT_RATIO_IDC_160_99 = 13,\n    STD_VIDEO_H265_ASPECT_RATIO_IDC_4_3 = 14,\n    STD_VIDEO_H265_ASPECT_RATIO_IDC_3_2 = 15,\n    STD_VIDEO_H265_ASPECT_RATIO_IDC_2_1 = 16,\n    STD_VIDEO_H265_ASPECT_RATIO_IDC_EXTENDED_SAR = 255,\n    STD_VIDEO_H265_ASPECT_RATIO_IDC_INVALID = 0x7FFFFFFF,\n    VKD_VIDEO_H265_ASPECT_RATIO_IDC_MAX_ENUM = 0x7FFFFFFF\n} StdVideoH265AspectRatioIdc;\n\n\ntypedef struct StdVideoH265DecPicBufMgr\n{\n    uint32_t max_latency_increase_plus1[STD_VIDEO_H265_SUBLAYERS_LIST_SIZE];\n    uint8_t max_dec_pic_buffering_minus1[STD_VIDEO_H265_SUBLAYERS_LIST_SIZE];\n    uint8_t max_num_reorder_pics[STD_VIDEO_H265_SUBLAYERS_LIST_SIZE];\n} StdVideoH265DecPicBufMgr;\n\ntypedef struct StdVideoH265SubLayerHrdParameters\n{\n    uint32_t bit_rate_value_minus1[STD_VIDEO_H265_CPB_CNT_LIST_SIZE];\n    uint32_t cpb_size_value_minus1[STD_VIDEO_H265_CPB_CNT_LIST_SIZE];\n    uint32_t cpb_size_du_value_minus1[STD_VIDEO_H265_CPB_CNT_LIST_SIZE];\n    uint32_t bit_rate_du_value_minus1[STD_VIDEO_H265_CPB_CNT_LIST_SIZE];\n    uint32_t cbr_flag;\n} StdVideoH265SubLayerHrdParameters;\n\ntypedef struct StdVideoH265HrdFlags\n{\n    uint32_t nal_hrd_parameters_present_flag : 1;\n    uint32_t vcl_hrd_parameters_present_flag : 1;\n    uint32_t sub_pic_hrd_params_present_flag : 1;\n    uint32_t sub_pic_cpb_params_in_pic_timing_sei_flag : 1;\n    uint32_t fixed_pic_rate_general_flag : 8;\n    uint32_t fixed_pic_rate_within_cvs_flag : 8;\n    uint32_t low_delay_hrd_flag : 8;\n} StdVideoH265HrdFlags;\n\ntypedef struct StdVideoH265HrdParameters\n{\n    StdVideoH265HrdFlags flags;\n    uint8_t tick_divisor_minus2;\n    uint8_t du_cpb_removal_delay_increment_length_minus1;\n    uint8_t dpb_output_delay_du_length_minus1;\n    uint8_t bit_rate_scale;\n    uint8_t cpb_size_scale;\n    uint8_t cpb_size_du_scale;\n    uint8_t initial_cpb_removal_delay_length_minus1;\n    uint8_t au_cpb_removal_delay_length_minus1;\n    uint8_t dpb_output_delay_length_minus1;\n    uint8_t cpb_cnt_minus1[STD_VIDEO_H265_SUBLAYERS_LIST_SIZE];\n    uint16_t elemental_duration_in_tc_minus1[STD_VIDEO_H265_SUBLAYERS_LIST_SIZE];\n    uint16_t reserved[3];\n    const StdVideoH265SubLayerHrdParameters* pSubLayerHrdParametersNal;\n    const StdVideoH265SubLayerHrdParameters* pSubLayerHrdParametersVcl;\n} StdVideoH265HrdParameters;\n\ntypedef struct StdVideoH265VpsFlags\n{\n    uint32_t vps_temporal_id_nesting_flag : 1;\n    uint32_t vps_sub_layer_ordering_info_present_flag : 1;\n    uint32_t vps_timing_info_present_flag : 1;\n    uint32_t vps_poc_proportional_to_timing_flag : 1;\n} StdVideoH265VpsFlags;\n\ntypedef struct StdVideoH265ProfileTierLevelFlags\n{\n    uint32_t general_tier_flag : 1;\n    uint32_t general_progressive_source_flag : 1;\n    uint32_t general_interlaced_source_flag : 1;\n    uint32_t general_non_packed_constraint_flag : 1;\n    uint32_t general_frame_only_constraint_flag : 1;\n} StdVideoH265ProfileTierLevelFlags;\n\ntypedef struct StdVideoH265ProfileTierLevel\n{\n    StdVideoH265ProfileTierLevelFlags flags;\n    StdVideoH265ProfileIdc general_profile_idc;\n    StdVideoH265LevelIdc general_level_idc;\n} StdVideoH265ProfileTierLevel;\n\ntypedef struct StdVideoH265VideoParameterSet\n{\n    StdVideoH265VpsFlags flags;\n    uint8_t vps_video_parameter_set_id;\n    uint8_t vps_max_sub_layers_minus1;\n    uint8_t reserved1;\n    uint8_t reserved2;\n    uint32_t vps_num_units_in_tick;\n    uint32_t vps_time_scale;\n    uint32_t vps_num_ticks_poc_diff_one_minus1;\n    uint32_t reserved3;\n    const StdVideoH265DecPicBufMgr* pDecPicBufMgr;\n    const StdVideoH265HrdParameters* pHrdParameters;\n    const StdVideoH265ProfileTierLevel* pProfileTierLevel;\n} StdVideoH265VideoParameterSet;\n\ntypedef struct StdVideoH265ScalingLists\n{\n    uint8_t ScalingList4x4[STD_VIDEO_H265_SCALING_LIST_4X4_NUM_LISTS][STD_VIDEO_H265_SCALING_LIST_4X4_NUM_ELEMENTS];\n    uint8_t ScalingList8x8[STD_VIDEO_H265_SCALING_LIST_8X8_NUM_LISTS][STD_VIDEO_H265_SCALING_LIST_8X8_NUM_ELEMENTS];\n    uint8_t ScalingList16x16[STD_VIDEO_H265_SCALING_LIST_16X16_NUM_LISTS][STD_VIDEO_H265_SCALING_LIST_16X16_NUM_ELEMENTS];\n    uint8_t ScalingList32x32[STD_VIDEO_H265_SCALING_LIST_32X32_NUM_LISTS][STD_VIDEO_H265_SCALING_LIST_32X32_NUM_ELEMENTS];\n    uint8_t ScalingListDCCoef16x16[STD_VIDEO_H265_SCALING_LIST_16X16_NUM_LISTS];\n    uint8_t ScalingListDCCoef32x32[STD_VIDEO_H265_SCALING_LIST_32X32_NUM_LISTS];\n} StdVideoH265ScalingLists;\n\ntypedef struct StdVideoH265SpsVuiFlags\n{\n    uint32_t aspect_ratio_info_present_flag : 1;\n    uint32_t overscan_info_present_flag : 1;\n    uint32_t overscan_appropriate_flag : 1;\n    uint32_t video_signal_type_present_flag : 1;\n    uint32_t video_full_range_flag : 1;\n    uint32_t colour_description_present_flag : 1;\n    uint32_t chroma_loc_info_present_flag : 1;\n    uint32_t neutral_chroma_indication_flag : 1;\n    uint32_t field_seq_flag : 1;\n    uint32_t frame_field_info_present_flag : 1;\n    uint32_t default_display_window_flag : 1;\n    uint32_t vui_timing_info_present_flag : 1;\n    uint32_t vui_poc_proportional_to_timing_flag : 1;\n    uint32_t vui_hrd_parameters_present_flag : 1;\n    uint32_t bitstream_restriction_flag : 1;\n    uint32_t tiles_fixed_structure_flag : 1;\n    uint32_t motion_vectors_over_pic_boundaries_flag : 1;\n    uint32_t restricted_ref_pic_lists_flag : 1;\n} StdVideoH265SpsVuiFlags;\n\ntypedef struct StdVideoH265SequenceParameterSetVui\n{\n    StdVideoH265SpsVuiFlags flags;\n    StdVideoH265AspectRatioIdc aspect_ratio_idc;\n    uint16_t sar_width;\n    uint16_t sar_height;\n    uint8_t video_format;\n    uint8_t colour_primaries;\n    uint8_t transfer_characteristics;\n    uint8_t matrix_coeffs;\n    uint8_t chroma_sample_loc_type_top_field;\n    uint8_t chroma_sample_loc_type_bottom_field;\n    uint8_t reserved1;\n    uint8_t reserved2;\n    uint16_t def_disp_win_left_offset;\n    uint16_t def_disp_win_right_offset;\n    uint16_t def_disp_win_top_offset;\n    uint16_t def_disp_win_bottom_offset;\n    uint32_t vui_num_units_in_tick;\n    uint32_t vui_time_scale;\n    uint32_t vui_num_ticks_poc_diff_one_minus1;\n    uint16_t min_spatial_segmentation_idc;\n    uint16_t reserved3;\n    uint8_t max_bytes_per_pic_denom;\n    uint8_t max_bits_per_min_cu_denom;\n    uint8_t log2_max_mv_length_horizontal;\n    uint8_t log2_max_mv_length_vertical;\n    const StdVideoH265HrdParameters* pHrdParameters;\n} StdVideoH265SequenceParameterSetVui;\n\ntypedef struct StdVideoH265PredictorPaletteEntries\n{\n    uint16_t PredictorPaletteEntries[STD_VIDEO_H265_PREDICTOR_PALETTE_COMPONENTS_LIST_SIZE][STD_VIDEO_H265_PREDICTOR_PALETTE_COMP_ENTRIES_LIST_SIZE];\n} StdVideoH265PredictorPaletteEntries;\n\ntypedef struct StdVideoH265SpsFlags\n{\n    uint32_t sps_temporal_id_nesting_flag : 1;\n    uint32_t separate_colour_plane_flag : 1;\n    uint32_t conformance_window_flag : 1;\n    uint32_t sps_sub_layer_ordering_info_present_flag : 1;\n    uint32_t scaling_list_enabled_flag : 1;\n    uint32_t sps_scaling_list_data_present_flag : 1;\n    uint32_t amp_enabled_flag : 1;\n    uint32_t sample_adaptive_offset_enabled_flag : 1;\n    uint32_t pcm_enabled_flag : 1;\n    uint32_t pcm_loop_filter_disabled_flag : 1;\n    uint32_t long_term_ref_pics_present_flag : 1;\n    uint32_t sps_temporal_mvp_enabled_flag : 1;\n    uint32_t strong_intra_smoothing_enabled_flag : 1;\n    uint32_t vui_parameters_present_flag : 1;\n    uint32_t sps_extension_present_flag : 1;\n    uint32_t sps_range_extension_flag : 1;\n    uint32_t transform_skip_rotation_enabled_flag : 1;\n    uint32_t transform_skip_context_enabled_flag : 1;\n    uint32_t implicit_rdpcm_enabled_flag : 1;\n    uint32_t explicit_rdpcm_enabled_flag : 1;\n    uint32_t extended_precision_processing_flag : 1;\n    uint32_t intra_smoothing_disabled_flag : 1;\n    uint32_t high_precision_offsets_enabled_flag : 1;\n    uint32_t persistent_rice_adaptation_enabled_flag : 1;\n    uint32_t cabac_bypass_alignment_enabled_flag : 1;\n    uint32_t sps_scc_extension_flag : 1;\n    uint32_t sps_curr_pic_ref_enabled_flag : 1;\n    uint32_t palette_mode_enabled_flag : 1;\n    uint32_t sps_palette_predictor_initializers_present_flag : 1;\n    uint32_t intra_boundary_filtering_disabled_flag : 1;\n} StdVideoH265SpsFlags;\n\ntypedef struct StdVideoH265ShortTermRefPicSetFlags\n{\n    uint32_t inter_ref_pic_set_prediction_flag : 1;\n    uint32_t delta_rps_sign : 1;\n} StdVideoH265ShortTermRefPicSetFlags;\n\ntypedef struct StdVideoH265ShortTermRefPicSet\n{\n    StdVideoH265ShortTermRefPicSetFlags flags;\n    uint32_t delta_idx_minus1;\n    uint16_t use_delta_flag;\n    uint16_t abs_delta_rps_minus1;\n    uint16_t used_by_curr_pic_flag;\n    uint16_t used_by_curr_pic_s0_flag;\n    uint16_t used_by_curr_pic_s1_flag;\n    uint16_t reserved1;\n    uint8_t reserved2;\n    uint8_t reserved3;\n    uint8_t num_negative_pics;\n    uint8_t num_positive_pics;\n    uint16_t delta_poc_s0_minus1[STD_VIDEO_H265_MAX_DPB_SIZE];\n    uint16_t delta_poc_s1_minus1[STD_VIDEO_H265_MAX_DPB_SIZE];\n} StdVideoH265ShortTermRefPicSet;\n\ntypedef struct StdVideoH265LongTermRefPicsSps\n{\n    uint32_t used_by_curr_pic_lt_sps_flag;\n    uint32_t lt_ref_pic_poc_lsb_sps[STD_VIDEO_H265_MAX_LONG_TERM_REF_PICS_SPS];\n} StdVideoH265LongTermRefPicsSps;\n\ntypedef struct StdVideoH265SequenceParameterSet\n{\n    StdVideoH265SpsFlags flags;\n    StdVideoH265ChromaFormatIdc chroma_format_idc;\n    uint32_t pic_width_in_luma_samples;\n    uint32_t pic_height_in_luma_samples;\n    uint8_t sps_video_parameter_set_id;\n    uint8_t sps_max_sub_layers_minus1;\n    uint8_t sps_seq_parameter_set_id;\n    uint8_t bit_depth_luma_minus8;\n    uint8_t bit_depth_chroma_minus8;\n    uint8_t log2_max_pic_order_cnt_lsb_minus4;\n    uint8_t log2_min_luma_coding_block_size_minus3;\n    uint8_t log2_diff_max_min_luma_coding_block_size;\n    uint8_t log2_min_luma_transform_block_size_minus2;\n    uint8_t log2_diff_max_min_luma_transform_block_size;\n    uint8_t max_transform_hierarchy_depth_inter;\n    uint8_t max_transform_hierarchy_depth_intra;\n    uint8_t num_short_term_ref_pic_sets;\n    uint8_t num_long_term_ref_pics_sps;\n    uint8_t pcm_sample_bit_depth_luma_minus1;\n    uint8_t pcm_sample_bit_depth_chroma_minus1;\n    uint8_t log2_min_pcm_luma_coding_block_size_minus3;\n    uint8_t log2_diff_max_min_pcm_luma_coding_block_size;\n    uint8_t reserved1;\n    uint8_t reserved2;\n    uint8_t palette_max_size;\n    uint8_t delta_palette_max_predictor_size;\n    uint8_t motion_vector_resolution_control_idc;\n    uint8_t sps_num_palette_predictor_initializers_minus1;\n    uint32_t conf_win_left_offset;\n    uint32_t conf_win_right_offset;\n    uint32_t conf_win_top_offset;\n    uint32_t conf_win_bottom_offset;\n    const StdVideoH265ProfileTierLevel* pProfileTierLevel;\n    const StdVideoH265DecPicBufMgr* pDecPicBufMgr;\n    const StdVideoH265ScalingLists* pScalingLists;\n    const StdVideoH265ShortTermRefPicSet* pShortTermRefPicSet;\n    const StdVideoH265LongTermRefPicsSps* pLongTermRefPicsSps;\n    const StdVideoH265SequenceParameterSetVui* pSequenceParameterSetVui;\n    const StdVideoH265PredictorPaletteEntries* pPredictorPaletteEntries;\n} StdVideoH265SequenceParameterSet;\n\ntypedef struct StdVideoH265PpsFlags\n{\n    uint32_t dependent_slice_segments_enabled_flag : 1;\n    uint32_t output_flag_present_flag : 1;\n    uint32_t sign_data_hiding_enabled_flag : 1;\n    uint32_t cabac_init_present_flag : 1;\n    uint32_t constrained_intra_pred_flag : 1;\n    uint32_t transform_skip_enabled_flag : 1;\n    uint32_t cu_qp_delta_enabled_flag : 1;\n    uint32_t pps_slice_chroma_qp_offsets_present_flag : 1;\n    uint32_t weighted_pred_flag : 1;\n    uint32_t weighted_bipred_flag : 1;\n    uint32_t transquant_bypass_enabled_flag : 1;\n    uint32_t tiles_enabled_flag : 1;\n    uint32_t entropy_coding_sync_enabled_flag : 1;\n    uint32_t uniform_spacing_flag : 1;\n    uint32_t loop_filter_across_tiles_enabled_flag : 1;\n    uint32_t pps_loop_filter_across_slices_enabled_flag : 1;\n    uint32_t deblocking_filter_control_present_flag : 1;\n    uint32_t deblocking_filter_override_enabled_flag : 1;\n    uint32_t pps_deblocking_filter_disabled_flag : 1;\n    uint32_t pps_scaling_list_data_present_flag : 1;\n    uint32_t lists_modification_present_flag : 1;\n    uint32_t slice_segment_header_extension_present_flag : 1;\n    uint32_t pps_extension_present_flag : 1;\n    uint32_t cross_component_prediction_enabled_flag : 1;\n    uint32_t chroma_qp_offset_list_enabled_flag : 1;\n    uint32_t pps_curr_pic_ref_enabled_flag : 1;\n    uint32_t residual_adaptive_colour_transform_enabled_flag : 1;\n    uint32_t pps_slice_act_qp_offsets_present_flag : 1;\n    uint32_t pps_palette_predictor_initializers_present_flag : 1;\n    uint32_t monochrome_palette_flag : 1;\n    uint32_t pps_range_extension_flag : 1;\n} StdVideoH265PpsFlags;\n\ntypedef struct StdVideoH265PictureParameterSet\n{\n    StdVideoH265PpsFlags flags;\n    uint8_t pps_pic_parameter_set_id;\n    uint8_t pps_seq_parameter_set_id;\n    uint8_t sps_video_parameter_set_id;\n    uint8_t num_extra_slice_header_bits;\n    uint8_t num_ref_idx_l0_default_active_minus1;\n    uint8_t num_ref_idx_l1_default_active_minus1;\n    int8_t init_qp_minus26;\n    uint8_t diff_cu_qp_delta_depth;\n    int8_t pps_cb_qp_offset;\n    int8_t pps_cr_qp_offset;\n    int8_t pps_beta_offset_div2;\n    int8_t pps_tc_offset_div2;\n    uint8_t log2_parallel_merge_level_minus2;\n    uint8_t log2_max_transform_skip_block_size_minus2;\n    uint8_t diff_cu_chroma_qp_offset_depth;\n    uint8_t chroma_qp_offset_list_len_minus1;\n    int8_t cb_qp_offset_list[STD_VIDEO_H265_CHROMA_QP_OFFSET_LIST_SIZE];\n    int8_t cr_qp_offset_list[STD_VIDEO_H265_CHROMA_QP_OFFSET_LIST_SIZE];\n    uint8_t log2_sao_offset_scale_luma;\n    uint8_t log2_sao_offset_scale_chroma;\n    int8_t pps_act_y_qp_offset_plus5;\n    int8_t pps_act_cb_qp_offset_plus5;\n    int8_t pps_act_cr_qp_offset_plus3;\n    uint8_t pps_num_palette_predictor_initializers;\n    uint8_t luma_bit_depth_entry_minus8;\n    uint8_t chroma_bit_depth_entry_minus8;\n    uint8_t num_tile_columns_minus1;\n    uint8_t num_tile_rows_minus1;\n    uint8_t reserved1;\n    uint8_t reserved2;\n    uint16_t column_width_minus1[STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_COLS_LIST_SIZE];\n    uint16_t row_height_minus1[STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_ROWS_LIST_SIZE];\n    uint32_t reserved3;\n    const StdVideoH265ScalingLists* pScalingLists;\n    const StdVideoH265PredictorPaletteEntries* pPredictorPaletteEntries;\n} StdVideoH265PictureParameterSet;\n\n\n#define vulkan_video_codec_h265std_decode 1\n#define VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_SPEC_VERSION VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_1_0_0\n#define VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_EXTENSION_NAME \"VK_STD_vulkan_video_codec_h265_decode\"\n#define STD_VIDEO_DECODE_H265_REF_PIC_SET_LIST_SIZE 8\n\n#define VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_1_0_0 VK_MAKE_VIDEO_STD_VERSION(1, 0, 0)\n\ntypedef struct StdVideoDecodeH265PictureInfoFlags\n{\n    uint32_t IrapPicFlag : 1;\n    uint32_t IdrPicFlag  : 1;\n    uint32_t IsReference : 1;\n    uint32_t short_term_ref_pic_set_sps_flag : 1;\n} StdVideoDecodeH265PictureInfoFlags;\n\ntypedef struct StdVideoDecodeH265PictureInfo\n{\n    StdVideoDecodeH265PictureInfoFlags flags;\n    uint8_t sps_video_parameter_set_id;\n    uint8_t pps_seq_parameter_set_id;\n    uint8_t pps_pic_parameter_set_id;\n    uint8_t NumDeltaPocsOfRefRpsIdx;\n    int32_t PicOrderCntVal;\n    uint16_t NumBitsForSTRefPicSetInSlice;\n    uint16_t reserved;\n    uint8_t RefPicSetStCurrBefore[STD_VIDEO_DECODE_H265_REF_PIC_SET_LIST_SIZE];\n    uint8_t RefPicSetStCurrAfter[STD_VIDEO_DECODE_H265_REF_PIC_SET_LIST_SIZE];\n    uint8_t RefPicSetLtCurr[STD_VIDEO_DECODE_H265_REF_PIC_SET_LIST_SIZE];\n} StdVideoDecodeH265PictureInfo;\n\ntypedef struct StdVideoDecodeH265ReferenceInfoFlags\n{\n    uint32_t used_for_long_term_reference : 1;\n    uint32_t unused_for_reference : 1;\n} StdVideoDecodeH265ReferenceInfoFlags;\n\ntypedef struct StdVideoDecodeH265ReferenceInfo\n{\n    StdVideoDecodeH265ReferenceInfoFlags flags;\n    int32_t PicOrderCntVal;\n} StdVideoDecodeH265ReferenceInfo;\n\n\n#define vulkan_video_codec_h265std_encode 1\n#define VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_SPEC_VERSION VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_API_VERSION_1_0_0\n#define VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_EXTENSION_NAME \"VK_STD_vulkan_video_codec_h265_encode\"\n\n#define VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_API_VERSION_1_0_0 VK_MAKE_VIDEO_STD_VERSION(1, 0, 0)\n\ntypedef struct StdVideoEncodeH265WeightTableFlags\n{\n    uint16_t luma_weight_l0_flag;\n    uint16_t chroma_weight_l0_flag;\n    uint16_t luma_weight_l1_flag;\n    uint16_t chroma_weight_l1_flag;\n} StdVideoEncodeH265WeightTableFlags;\n\ntypedef struct StdVideoEncodeH265WeightTable\n{\n    StdVideoEncodeH265WeightTableFlags flags;\n    uint8_t luma_log2_weight_denom;\n    int8_t delta_chroma_log2_weight_denom;\n    int8_t delta_luma_weight_l0[STD_VIDEO_H265_MAX_NUM_LIST_REF];\n    int8_t luma_offset_l0[STD_VIDEO_H265_MAX_NUM_LIST_REF];\n    int8_t delta_chroma_weight_l0[STD_VIDEO_H265_MAX_NUM_LIST_REF][STD_VIDEO_H265_MAX_CHROMA_PLANES];\n    int8_t delta_chroma_offset_l0[STD_VIDEO_H265_MAX_NUM_LIST_REF][STD_VIDEO_H265_MAX_CHROMA_PLANES];\n    int8_t delta_luma_weight_l1[STD_VIDEO_H265_MAX_NUM_LIST_REF];\n    int8_t luma_offset_l1[STD_VIDEO_H265_MAX_NUM_LIST_REF];\n    int8_t delta_chroma_weight_l1[STD_VIDEO_H265_MAX_NUM_LIST_REF][STD_VIDEO_H265_MAX_CHROMA_PLANES];\n    int8_t delta_chroma_offset_l1[STD_VIDEO_H265_MAX_NUM_LIST_REF][STD_VIDEO_H265_MAX_CHROMA_PLANES];\n} StdVideoEncodeH265WeightTable;\n\ntypedef struct StdVideoEncodeH265SliceSegmentHeaderFlags\n{\n    uint32_t first_slice_segment_in_pic_flag : 1;\n    uint32_t dependent_slice_segment_flag : 1;\n    uint32_t slice_sao_luma_flag : 1;\n    uint32_t slice_sao_chroma_flag : 1;\n    uint32_t num_ref_idx_active_override_flag : 1;\n    uint32_t mvd_l1_zero_flag : 1;\n    uint32_t cabac_init_flag : 1;\n    uint32_t cu_chroma_qp_offset_enabled_flag : 1;\n    uint32_t deblocking_filter_override_flag : 1;\n    uint32_t slice_deblocking_filter_disabled_flag : 1;\n    uint32_t collocated_from_l0_flag : 1;\n    uint32_t slice_loop_filter_across_slices_enabled_flag : 1;\n    uint32_t reserved : 20;\n} StdVideoEncodeH265SliceSegmentHeaderFlags;\n\ntypedef struct StdVideoEncodeH265SliceSegmentHeader\n{\n    StdVideoEncodeH265SliceSegmentHeaderFlags flags;\n    StdVideoH265SliceType slice_type;\n    uint32_t slice_segment_address;\n    uint8_t collocated_ref_idx;\n    uint8_t MaxNumMergeCand;\n    int8_t slice_cb_qp_offset;\n    int8_t slice_cr_qp_offset;\n    int8_t slice_beta_offset_div2;\n    int8_t slice_tc_offset_div2;\n    int8_t slice_act_y_qp_offset;\n    int8_t slice_act_cb_qp_offset;\n    int8_t slice_act_cr_qp_offset;\n    int8_t slice_qp_delta;\n    uint16_t reserved1;\n    const StdVideoEncodeH265WeightTable* pWeightTable;\n} StdVideoEncodeH265SliceSegmentHeader;\n\ntypedef struct StdVideoEncodeH265ReferenceListsInfoFlags\n{\n    uint32_t ref_pic_list_modification_flag_l0 : 1;\n    uint32_t ref_pic_list_modification_flag_l1 : 1;\n    uint32_t reserved : 30;\n} StdVideoEncodeH265ReferenceListsInfoFlags;\n\ntypedef struct StdVideoEncodeH265ReferenceListsInfo\n{\n    StdVideoEncodeH265ReferenceListsInfoFlags flags;\n    uint8_t num_ref_idx_l0_active_minus1;\n    uint8_t num_ref_idx_l1_active_minus1;\n    uint8_t RefPicList0[STD_VIDEO_H265_MAX_NUM_LIST_REF];\n    uint8_t RefPicList1[STD_VIDEO_H265_MAX_NUM_LIST_REF];\n    uint8_t list_entry_l0[STD_VIDEO_H265_MAX_NUM_LIST_REF];\n    uint8_t list_entry_l1[STD_VIDEO_H265_MAX_NUM_LIST_REF];\n} StdVideoEncodeH265ReferenceListsInfo;\n\ntypedef struct StdVideoEncodeH265PictureInfoFlags\n{\n    uint32_t is_reference : 1;\n    uint32_t IrapPicFlag : 1;\n    uint32_t used_for_long_term_reference : 1;\n    uint32_t discardable_flag : 1;\n    uint32_t cross_layer_bla_flag : 1;\n    uint32_t pic_output_flag : 1;\n    uint32_t no_output_of_prior_pics_flag : 1;\n    uint32_t short_term_ref_pic_set_sps_flag : 1;\n    uint32_t slice_temporal_mvp_enabled_flag : 1;\n    uint32_t reserved : 23;\n} StdVideoEncodeH265PictureInfoFlags;\n\ntypedef struct StdVideoEncodeH265LongTermRefPics\n{\n    uint8_t num_long_term_sps;\n    uint8_t num_long_term_pics;\n    uint8_t lt_idx_sps[STD_VIDEO_H265_MAX_LONG_TERM_REF_PICS_SPS];\n    uint8_t poc_lsb_lt[STD_VIDEO_H265_MAX_LONG_TERM_PICS];\n    uint16_t used_by_curr_pic_lt_flag;\n    uint8_t delta_poc_msb_present_flag[STD_VIDEO_H265_MAX_DELTA_POC];\n    uint8_t delta_poc_msb_cycle_lt[STD_VIDEO_H265_MAX_DELTA_POC];\n} StdVideoEncodeH265LongTermRefPics;\n\ntypedef struct StdVideoEncodeH265PictureInfo\n{\n    StdVideoEncodeH265PictureInfoFlags flags;\n    StdVideoH265PictureType pic_type;\n    uint8_t sps_video_parameter_set_id;\n    uint8_t pps_seq_parameter_set_id;\n    uint8_t pps_pic_parameter_set_id;\n    uint8_t short_term_ref_pic_set_idx;\n    int32_t PicOrderCntVal;\n    uint8_t TemporalId;\n    uint8_t reserved1[7];\n    const StdVideoEncodeH265ReferenceListsInfo* pRefLists;\n    const StdVideoH265ShortTermRefPicSet* pShortTermRefPicSet;\n    const StdVideoEncodeH265LongTermRefPics* pLongTermRefPics;\n} StdVideoEncodeH265PictureInfo;\n\ntypedef struct StdVideoEncodeH265ReferenceInfoFlags\n{\n    uint32_t used_for_long_term_reference : 1;\n    uint32_t unused_for_reference : 1;\n    uint32_t reserved : 30;\n} StdVideoEncodeH265ReferenceInfoFlags;\n\ntypedef struct StdVideoEncodeH265ReferenceInfo\n{\n    StdVideoEncodeH265ReferenceInfoFlags flags;\n    StdVideoH265PictureType pic_type;\n    int32_t PicOrderCntVal;\n    uint8_t TemporalId;\n} StdVideoEncodeH265ReferenceInfo;\n\n\n#define vulkan_video_codec_vp9std 1\n#define STD_VIDEO_VP9_NUM_REF_FRAMES 8\n#define STD_VIDEO_VP9_REFS_PER_FRAME 3\n#define STD_VIDEO_VP9_MAX_REF_FRAMES 4\n#define STD_VIDEO_VP9_LOOP_FILTER_ADJUSTMENTS 2\n#define STD_VIDEO_VP9_MAX_SEGMENTS 8\n#define STD_VIDEO_VP9_SEG_LVL_MAX 4\n#define STD_VIDEO_VP9_MAX_SEGMENTATION_TREE_PROBS 7\n#define STD_VIDEO_VP9_MAX_SEGMENTATION_PRED_PROB 3\n\ntypedef enum\n{\n    STD_VIDEO_VP9_PROFILE_0 = 0,\n    STD_VIDEO_VP9_PROFILE_1 = 1,\n    STD_VIDEO_VP9_PROFILE_2 = 2,\n    STD_VIDEO_VP9_PROFILE_3 = 3,\n    STD_VIDEO_VP9_PROFILE_INVALID = 0x7FFFFFFF,\n    VKD_VIDEO_V_P9_PROFILE_MAX_ENUM = 0x7FFFFFFF\n} StdVideoVP9Profile;\n\ntypedef enum\n{\n    STD_VIDEO_VP9_LEVEL_1_0 = 0,\n    STD_VIDEO_VP9_LEVEL_1_1 = 1,\n    STD_VIDEO_VP9_LEVEL_2_0 = 2,\n    STD_VIDEO_VP9_LEVEL_2_1 = 3,\n    STD_VIDEO_VP9_LEVEL_3_0 = 4,\n    STD_VIDEO_VP9_LEVEL_3_1 = 5,\n    STD_VIDEO_VP9_LEVEL_4_0 = 6,\n    STD_VIDEO_VP9_LEVEL_4_1 = 7,\n    STD_VIDEO_VP9_LEVEL_5_0 = 8,\n    STD_VIDEO_VP9_LEVEL_5_1 = 9,\n    STD_VIDEO_VP9_LEVEL_5_2 = 10,\n    STD_VIDEO_VP9_LEVEL_6_0 = 11,\n    STD_VIDEO_VP9_LEVEL_6_1 = 12,\n    STD_VIDEO_VP9_LEVEL_6_2 = 13,\n    STD_VIDEO_VP9_LEVEL_INVALID = 0x7FFFFFFF,\n    VKD_VIDEO_V_P9_LEVEL_MAX_ENUM = 0x7FFFFFFF\n} StdVideoVP9Level;\n\ntypedef enum\n{\n    STD_VIDEO_VP9_FRAME_TYPE_KEY = 0,\n    STD_VIDEO_VP9_FRAME_TYPE_NON_KEY = 1,\n    STD_VIDEO_VP9_FRAME_TYPE_INVALID = 0x7FFFFFFF,\n    VKD_VIDEO_V_P9_FRAME_TYPE_MAX_ENUM = 0x7FFFFFFF\n} StdVideoVP9FrameType;\n\ntypedef enum\n{\n    STD_VIDEO_VP9_REFERENCE_NAME_INTRA_FRAME = 0,\n    STD_VIDEO_VP9_REFERENCE_NAME_LAST_FRAME = 1,\n    STD_VIDEO_VP9_REFERENCE_NAME_GOLDEN_FRAME = 2,\n    STD_VIDEO_VP9_REFERENCE_NAME_ALTREF_FRAME = 3,\n    STD_VIDEO_VP9_REFERENCE_NAME_INVALID = 0x7FFFFFFF,\n    VKD_VIDEO_V_P9_REFERENCE_NAME_MAX_ENUM = 0x7FFFFFFF\n} StdVideoVP9ReferenceName;\n\ntypedef enum\n{\n    STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP = 0,\n    STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP_SMOOTH = 1,\n    STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP_SHARP = 2,\n    STD_VIDEO_VP9_INTERPOLATION_FILTER_BILINEAR = 3,\n    STD_VIDEO_VP9_INTERPOLATION_FILTER_SWITCHABLE = 4,\n    STD_VIDEO_VP9_INTERPOLATION_FILTER_INVALID = 0x7FFFFFFF,\n    VKD_VIDEO_V_P9_INTERPOLATION_FILTER_MAX_ENUM = 0x7FFFFFFF\n} StdVideoVP9InterpolationFilter;\n\ntypedef enum\n{\n    STD_VIDEO_VP9_COLOR_SPACE_UNKNOWN = 0,\n    STD_VIDEO_VP9_COLOR_SPACE_BT_601 = 1,\n    STD_VIDEO_VP9_COLOR_SPACE_BT_709 = 2,\n    STD_VIDEO_VP9_COLOR_SPACE_SMPTE_170 = 3,\n    STD_VIDEO_VP9_COLOR_SPACE_SMPTE_240 = 4,\n    STD_VIDEO_VP9_COLOR_SPACE_BT_2020 = 5,\n    STD_VIDEO_VP9_COLOR_SPACE_RESERVED = 6,\n    STD_VIDEO_VP9_COLOR_SPACE_RGB = 7,\n    STD_VIDEO_VP9_COLOR_SPACE_INVALID = 0x7FFFFFFF,\n    VKD_VIDEO_V_P9_COLOR_SPACE_MAX_ENUM = 0x7FFFFFFF\n} StdVideoVP9ColorSpace;\n\n\ntypedef struct StdVideoVP9ColorConfigFlags\n{\n    uint32_t color_range : 1;\n    uint32_t reserved : 31;\n} StdVideoVP9ColorConfigFlags;\n\ntypedef struct StdVideoVP9ColorConfig\n{\n    StdVideoVP9ColorConfigFlags flags;\n    uint8_t BitDepth;\n    uint8_t subsampling_x;\n    uint8_t subsampling_y;\n    uint8_t reserved1;\n    StdVideoVP9ColorSpace color_space;\n} StdVideoVP9ColorConfig;\n\ntypedef struct StdVideoVP9LoopFilterFlags\n{\n    uint32_t loop_filter_delta_enabled : 1;\n    uint32_t loop_filter_delta_update : 1;\n    uint32_t reserved : 30;\n} StdVideoVP9LoopFilterFlags;\n\ntypedef struct StdVideoVP9LoopFilter\n{\n    StdVideoVP9LoopFilterFlags flags;\n    uint8_t loop_filter_level;\n    uint8_t loop_filter_sharpness;\n    uint8_t update_ref_delta;\n    int8_t loop_filter_ref_deltas[STD_VIDEO_VP9_MAX_REF_FRAMES];\n    uint8_t update_mode_delta;\n    int8_t loop_filter_mode_deltas[STD_VIDEO_VP9_LOOP_FILTER_ADJUSTMENTS];\n} StdVideoVP9LoopFilter;\n\ntypedef struct StdVideoVP9SegmentationFlags\n{\n    uint32_t segmentation_update_map : 1;\n    uint32_t segmentation_temporal_update : 1;\n    uint32_t segmentation_update_data : 1;\n    uint32_t segmentation_abs_or_delta_update : 1;\n    uint32_t reserved : 28;\n} StdVideoVP9SegmentationFlags;\n\ntypedef struct StdVideoVP9Segmentation\n{\n    StdVideoVP9SegmentationFlags flags;\n    uint8_t segmentation_tree_probs[STD_VIDEO_VP9_MAX_SEGMENTATION_TREE_PROBS];\n    uint8_t segmentation_pred_prob[STD_VIDEO_VP9_MAX_SEGMENTATION_PRED_PROB];\n    uint8_t FeatureEnabled[STD_VIDEO_VP9_MAX_SEGMENTS];\n    int16_t FeatureData[STD_VIDEO_VP9_MAX_SEGMENTS][STD_VIDEO_VP9_SEG_LVL_MAX];\n} StdVideoVP9Segmentation;\n\n\n#define vulkan_video_codec_vp9std_decode 1\n#define VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_SPEC_VERSION VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_API_VERSION_1_0_0\n#define VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_EXTENSION_NAME \"VK_STD_vulkan_video_codec_vp9_decode\"\n\n#define VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_API_VERSION_1_0_0 VK_MAKE_VIDEO_STD_VERSION(1, 0, 0)\n\ntypedef struct StdVideoDecodeVP9PictureInfoFlags\n{\n    uint32_t error_resilient_mode : 1;\n    uint32_t intra_only : 1;\n    uint32_t allow_high_precision_mv : 1;\n    uint32_t refresh_frame_context : 1;\n    uint32_t frame_parallel_decoding_mode : 1;\n    uint32_t segmentation_enabled : 1;\n    uint32_t show_frame : 1;\n    uint32_t UsePrevFrameMvs : 1;\n    uint32_t reserved : 24;\n} StdVideoDecodeVP9PictureInfoFlags;\n\ntypedef struct StdVideoDecodeVP9PictureInfo\n{\n    StdVideoDecodeVP9PictureInfoFlags flags;\n    StdVideoVP9Profile profile;\n    StdVideoVP9FrameType frame_type;\n    uint8_t frame_context_idx;\n    uint8_t reset_frame_context;\n    uint8_t refresh_frame_flags;\n    uint8_t ref_frame_sign_bias_mask;\n    StdVideoVP9InterpolationFilter interpolation_filter;\n    uint8_t base_q_idx;\n    int8_t delta_q_y_dc;\n    int8_t delta_q_uv_dc;\n    int8_t delta_q_uv_ac;\n    uint8_t tile_cols_log2;\n    uint8_t tile_rows_log2;\n    uint16_t reserved1[3];\n    const StdVideoVP9ColorConfig* pColorConfig;\n    const StdVideoVP9LoopFilter* pLoopFilter;\n    const StdVideoVP9Segmentation* pSegmentation;\n} StdVideoDecodeVP9PictureInfo;\n\n\n#define vulkan_video_codec_av1std 1\n#define STD_VIDEO_AV1_NUM_REF_FRAMES 8\n#define STD_VIDEO_AV1_REFS_PER_FRAME 7\n#define STD_VIDEO_AV1_TOTAL_REFS_PER_FRAME 8\n#define STD_VIDEO_AV1_MAX_TILE_COLS 64\n#define STD_VIDEO_AV1_MAX_TILE_ROWS 64\n#define STD_VIDEO_AV1_MAX_SEGMENTS 8\n#define STD_VIDEO_AV1_SEG_LVL_MAX 8\n#define STD_VIDEO_AV1_PRIMARY_REF_NONE 7\n#define STD_VIDEO_AV1_SELECT_INTEGER_MV 2\n#define STD_VIDEO_AV1_SELECT_SCREEN_CONTENT_TOOLS 2\n#define STD_VIDEO_AV1_SKIP_MODE_FRAMES 2\n#define STD_VIDEO_AV1_MAX_LOOP_FILTER_STRENGTHS 4\n#define STD_VIDEO_AV1_LOOP_FILTER_ADJUSTMENTS 2\n#define STD_VIDEO_AV1_MAX_CDEF_FILTER_STRENGTHS 8\n#define STD_VIDEO_AV1_MAX_NUM_PLANES 3\n#define STD_VIDEO_AV1_GLOBAL_MOTION_PARAMS 6\n#define STD_VIDEO_AV1_MAX_NUM_Y_POINTS 14\n#define STD_VIDEO_AV1_MAX_NUM_CB_POINTS 10\n#define STD_VIDEO_AV1_MAX_NUM_CR_POINTS 10\n#define STD_VIDEO_AV1_MAX_NUM_POS_LUMA 24\n#define STD_VIDEO_AV1_MAX_NUM_POS_CHROMA 25\n\ntypedef enum\n{\n    STD_VIDEO_AV1_PROFILE_MAIN = 0,\n    STD_VIDEO_AV1_PROFILE_HIGH = 1,\n    STD_VIDEO_AV1_PROFILE_PROFESSIONAL = 2,\n    STD_VIDEO_AV1_PROFILE_INVALID = 0x7FFFFFFF,\n    VKD_VIDEO_A_V1_PROFILE_MAX_ENUM = 0x7FFFFFFF\n} StdVideoAV1Profile;\n\ntypedef enum\n{\n    STD_VIDEO_AV1_LEVEL_2_0 = 0,\n    STD_VIDEO_AV1_LEVEL_2_1 = 1,\n    STD_VIDEO_AV1_LEVEL_2_2 = 2,\n    STD_VIDEO_AV1_LEVEL_2_3 = 3,\n    STD_VIDEO_AV1_LEVEL_3_0 = 4,\n    STD_VIDEO_AV1_LEVEL_3_1 = 5,\n    STD_VIDEO_AV1_LEVEL_3_2 = 6,\n    STD_VIDEO_AV1_LEVEL_3_3 = 7,\n    STD_VIDEO_AV1_LEVEL_4_0 = 8,\n    STD_VIDEO_AV1_LEVEL_4_1 = 9,\n    STD_VIDEO_AV1_LEVEL_4_2 = 10,\n    STD_VIDEO_AV1_LEVEL_4_3 = 11,\n    STD_VIDEO_AV1_LEVEL_5_0 = 12,\n    STD_VIDEO_AV1_LEVEL_5_1 = 13,\n    STD_VIDEO_AV1_LEVEL_5_2 = 14,\n    STD_VIDEO_AV1_LEVEL_5_3 = 15,\n    STD_VIDEO_AV1_LEVEL_6_0 = 16,\n    STD_VIDEO_AV1_LEVEL_6_1 = 17,\n    STD_VIDEO_AV1_LEVEL_6_2 = 18,\n    STD_VIDEO_AV1_LEVEL_6_3 = 19,\n    STD_VIDEO_AV1_LEVEL_7_0 = 20,\n    STD_VIDEO_AV1_LEVEL_7_1 = 21,\n    STD_VIDEO_AV1_LEVEL_7_2 = 22,\n    STD_VIDEO_AV1_LEVEL_7_3 = 23,\n    STD_VIDEO_AV1_LEVEL_INVALID = 0x7FFFFFFF,\n    VKD_VIDEO_A_V1_LEVEL_MAX_ENUM = 0x7FFFFFFF\n} StdVideoAV1Level;\n\ntypedef enum\n{\n    STD_VIDEO_AV1_FRAME_TYPE_KEY = 0,\n    STD_VIDEO_AV1_FRAME_TYPE_INTER = 1,\n    STD_VIDEO_AV1_FRAME_TYPE_INTRA_ONLY = 2,\n    STD_VIDEO_AV1_FRAME_TYPE_SWITCH = 3,\n    STD_VIDEO_AV1_FRAME_TYPE_INVALID = 0x7FFFFFFF,\n    VKD_VIDEO_A_V1_FRAME_TYPE_MAX_ENUM = 0x7FFFFFFF\n} StdVideoAV1FrameType;\n\ntypedef enum\n{\n    STD_VIDEO_AV1_REFERENCE_NAME_INTRA_FRAME = 0,\n    STD_VIDEO_AV1_REFERENCE_NAME_LAST_FRAME = 1,\n    STD_VIDEO_AV1_REFERENCE_NAME_LAST2_FRAME = 2,\n    STD_VIDEO_AV1_REFERENCE_NAME_LAST3_FRAME = 3,\n    STD_VIDEO_AV1_REFERENCE_NAME_GOLDEN_FRAME = 4,\n    STD_VIDEO_AV1_REFERENCE_NAME_BWDREF_FRAME = 5,\n    STD_VIDEO_AV1_REFERENCE_NAME_ALTREF2_FRAME = 6,\n    STD_VIDEO_AV1_REFERENCE_NAME_ALTREF_FRAME = 7,\n    STD_VIDEO_AV1_REFERENCE_NAME_INVALID = 0x7FFFFFFF,\n    VKD_VIDEO_A_V1_REFERENCE_NAME_MAX_ENUM = 0x7FFFFFFF\n} StdVideoAV1ReferenceName;\n\ntypedef enum\n{\n    STD_VIDEO_AV1_INTERPOLATION_FILTER_EIGHTTAP = 0,\n    STD_VIDEO_AV1_INTERPOLATION_FILTER_EIGHTTAP_SMOOTH = 1,\n    STD_VIDEO_AV1_INTERPOLATION_FILTER_EIGHTTAP_SHARP = 2,\n    STD_VIDEO_AV1_INTERPOLATION_FILTER_BILINEAR = 3,\n    STD_VIDEO_AV1_INTERPOLATION_FILTER_SWITCHABLE = 4,\n    STD_VIDEO_AV1_INTERPOLATION_FILTER_INVALID = 0x7FFFFFFF,\n    VKD_VIDEO_A_V1_INTERPOLATION_FILTER_MAX_ENUM = 0x7FFFFFFF\n} StdVideoAV1InterpolationFilter;\n\ntypedef enum\n{\n    STD_VIDEO_AV1_TX_MODE_ONLY_4X4 = 0,\n    STD_VIDEO_AV1_TX_MODE_LARGEST = 1,\n    STD_VIDEO_AV1_TX_MODE_SELECT = 2,\n    STD_VIDEO_AV1_TX_MODE_INVALID = 0x7FFFFFFF,\n    VKD_VIDEO_A_V1_TX_MODE_MAX_ENUM = 0x7FFFFFFF\n} StdVideoAV1TxMode;\n\ntypedef enum\n{\n    STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_NONE = 0,\n    STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_WIENER = 1,\n    STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_SGRPROJ = 2,\n    STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_SWITCHABLE = 3,\n    STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_INVALID = 0x7FFFFFFF,\n    VKD_VIDEO_A_V1_FRAME_RESTORATION_TYPE_MAX_ENUM = 0x7FFFFFFF\n} StdVideoAV1FrameRestorationType;\n\ntypedef enum\n{\n    STD_VIDEO_AV1_COLOR_PRIMARIES_BT_709 = 1,\n    STD_VIDEO_AV1_COLOR_PRIMARIES_UNSPECIFIED = 2,\n    STD_VIDEO_AV1_COLOR_PRIMARIES_BT_UNSPECIFIED = STD_VIDEO_AV1_COLOR_PRIMARIES_UNSPECIFIED,\n    STD_VIDEO_AV1_COLOR_PRIMARIES_BT_470_M = 4,\n    STD_VIDEO_AV1_COLOR_PRIMARIES_BT_470_B_G = 5,\n    STD_VIDEO_AV1_COLOR_PRIMARIES_BT_601 = 6,\n    STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_240 = 7,\n    STD_VIDEO_AV1_COLOR_PRIMARIES_GENERIC_FILM = 8,\n    STD_VIDEO_AV1_COLOR_PRIMARIES_BT_2020 = 9,\n    STD_VIDEO_AV1_COLOR_PRIMARIES_XYZ = 10,\n    STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_431 = 11,\n    STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_432 = 12,\n    STD_VIDEO_AV1_COLOR_PRIMARIES_EBU_3213 = 22,\n    STD_VIDEO_AV1_COLOR_PRIMARIES_INVALID = 0x7FFFFFFF,\n    VKD_VIDEO_A_V1_COLOR_PRIMARIES_MAX_ENUM = 0x7FFFFFFF\n} StdVideoAV1ColorPrimaries;\n\ntypedef enum\n{\n    STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_RESERVED_0 = 0,\n    STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_709 = 1,\n    STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_UNSPECIFIED = 2,\n    STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_RESERVED_3 = 3,\n    STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_470_M = 4,\n    STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_470_B_G = 5,\n    STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_601 = 6,\n    STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SMPTE_240 = 7,\n    STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_LINEAR = 8,\n    STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_LOG_100 = 9,\n    STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_LOG_100_SQRT10 = 10,\n    STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_IEC_61966 = 11,\n    STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_1361 = 12,\n    STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SRGB = 13,\n    STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_2020_10_BIT = 14,\n    STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_2020_12_BIT = 15,\n    STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SMPTE_2084 = 16,\n    STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SMPTE_428 = 17,\n    STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_HLG = 18,\n    STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_INVALID = 0x7FFFFFFF,\n    VKD_VIDEO_A_V1_TRANSFER_CHARACTERISTICS_MAX_ENUM = 0x7FFFFFFF\n} StdVideoAV1TransferCharacteristics;\n\ntypedef enum\n{\n    STD_VIDEO_AV1_MATRIX_COEFFICIENTS_IDENTITY = 0,\n    STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_709 = 1,\n    STD_VIDEO_AV1_MATRIX_COEFFICIENTS_UNSPECIFIED = 2,\n    STD_VIDEO_AV1_MATRIX_COEFFICIENTS_RESERVED_3 = 3,\n    STD_VIDEO_AV1_MATRIX_COEFFICIENTS_FCC = 4,\n    STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_470_B_G = 5,\n    STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_601 = 6,\n    STD_VIDEO_AV1_MATRIX_COEFFICIENTS_SMPTE_240 = 7,\n    STD_VIDEO_AV1_MATRIX_COEFFICIENTS_SMPTE_YCGCO = 8,\n    STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_2020_NCL = 9,\n    STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_2020_CL = 10,\n    STD_VIDEO_AV1_MATRIX_COEFFICIENTS_SMPTE_2085 = 11,\n    STD_VIDEO_AV1_MATRIX_COEFFICIENTS_CHROMAT_NCL = 12,\n    STD_VIDEO_AV1_MATRIX_COEFFICIENTS_CHROMAT_CL = 13,\n    STD_VIDEO_AV1_MATRIX_COEFFICIENTS_ICTCP = 14,\n    STD_VIDEO_AV1_MATRIX_COEFFICIENTS_INVALID = 0x7FFFFFFF,\n    VKD_VIDEO_A_V1_MATRIX_COEFFICIENTS_MAX_ENUM = 0x7FFFFFFF\n} StdVideoAV1MatrixCoefficients;\n\ntypedef enum\n{\n    STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_UNKNOWN = 0,\n    STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_VERTICAL = 1,\n    STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_COLOCATED = 2,\n    STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_RESERVED = 3,\n    STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_INVALID = 0x7FFFFFFF,\n    VKD_VIDEO_A_V1_CHROMA_SAMPLE_POSITION_MAX_ENUM = 0x7FFFFFFF\n} StdVideoAV1ChromaSamplePosition;\n\n\ntypedef struct StdVideoAV1ColorConfigFlags\n{\n    uint32_t mono_chrome : 1;\n    uint32_t color_range : 1;\n    uint32_t separate_uv_delta_q : 1;\n    uint32_t color_description_present_flag : 1;\n    uint32_t reserved : 28;\n} StdVideoAV1ColorConfigFlags;\n\ntypedef struct StdVideoAV1ColorConfig\n{\n    StdVideoAV1ColorConfigFlags flags;\n    uint8_t BitDepth;\n    uint8_t subsampling_x;\n    uint8_t subsampling_y;\n    uint8_t reserved1;\n    StdVideoAV1ColorPrimaries color_primaries;\n    StdVideoAV1TransferCharacteristics transfer_characteristics;\n    StdVideoAV1MatrixCoefficients matrix_coefficients;\n    StdVideoAV1ChromaSamplePosition chroma_sample_position;\n} StdVideoAV1ColorConfig;\n\ntypedef struct StdVideoAV1TimingInfoFlags\n{\n    uint32_t equal_picture_interval : 1;\n    uint32_t reserved : 31;\n} StdVideoAV1TimingInfoFlags;\n\ntypedef struct StdVideoAV1TimingInfo\n{\n    StdVideoAV1TimingInfoFlags flags;\n    uint32_t num_units_in_display_tick;\n    uint32_t time_scale;\n    uint32_t num_ticks_per_picture_minus_1;\n} StdVideoAV1TimingInfo;\n\ntypedef struct StdVideoAV1LoopFilterFlags\n{\n    uint32_t loop_filter_delta_enabled : 1;\n    uint32_t loop_filter_delta_update : 1;\n    uint32_t reserved : 30;\n} StdVideoAV1LoopFilterFlags;\n\ntypedef struct StdVideoAV1LoopFilter\n{\n    StdVideoAV1LoopFilterFlags flags;\n    uint8_t loop_filter_level[STD_VIDEO_AV1_MAX_LOOP_FILTER_STRENGTHS];\n    uint8_t loop_filter_sharpness;\n    uint8_t update_ref_delta;\n    int8_t loop_filter_ref_deltas[STD_VIDEO_AV1_TOTAL_REFS_PER_FRAME];\n    uint8_t update_mode_delta;\n    int8_t loop_filter_mode_deltas[STD_VIDEO_AV1_LOOP_FILTER_ADJUSTMENTS];\n} StdVideoAV1LoopFilter;\n\ntypedef struct StdVideoAV1QuantizationFlags\n{\n    uint32_t using_qmatrix : 1;\n    uint32_t diff_uv_delta : 1;\n    uint32_t reserved : 30;\n} StdVideoAV1QuantizationFlags;\n\ntypedef struct StdVideoAV1Quantization\n{\n    StdVideoAV1QuantizationFlags flags;\n    uint8_t base_q_idx;\n    int8_t DeltaQYDc;\n    int8_t DeltaQUDc;\n    int8_t DeltaQUAc;\n    int8_t DeltaQVDc;\n    int8_t DeltaQVAc;\n    uint8_t qm_y;\n    uint8_t qm_u;\n    uint8_t qm_v;\n} StdVideoAV1Quantization;\n\ntypedef struct StdVideoAV1Segmentation\n{\n    uint8_t FeatureEnabled[STD_VIDEO_AV1_MAX_SEGMENTS];\n    int16_t FeatureData[STD_VIDEO_AV1_MAX_SEGMENTS][STD_VIDEO_AV1_SEG_LVL_MAX];\n} StdVideoAV1Segmentation;\n\ntypedef struct StdVideoAV1TileInfoFlags\n{\n    uint32_t uniform_tile_spacing_flag : 1;\n    uint32_t reserved : 31;\n} StdVideoAV1TileInfoFlags;\n\ntypedef struct StdVideoAV1TileInfo\n{\n    StdVideoAV1TileInfoFlags flags;\n    uint8_t TileCols;\n    uint8_t TileRows;\n    uint16_t context_update_tile_id;\n    uint8_t tile_size_bytes_minus_1;\n    uint8_t reserved1[7];\n    const uint16_t* pMiColStarts;\n    const uint16_t* pMiRowStarts;\n    const uint16_t* pWidthInSbsMinus1;\n    const uint16_t* pHeightInSbsMinus1;\n} StdVideoAV1TileInfo;\n\ntypedef struct StdVideoAV1CDEF\n{\n    uint8_t cdef_damping_minus_3;\n    uint8_t cdef_bits;\n    uint8_t cdef_y_pri_strength[STD_VIDEO_AV1_MAX_CDEF_FILTER_STRENGTHS];\n    uint8_t cdef_y_sec_strength[STD_VIDEO_AV1_MAX_CDEF_FILTER_STRENGTHS];\n    uint8_t cdef_uv_pri_strength[STD_VIDEO_AV1_MAX_CDEF_FILTER_STRENGTHS];\n    uint8_t cdef_uv_sec_strength[STD_VIDEO_AV1_MAX_CDEF_FILTER_STRENGTHS];\n} StdVideoAV1CDEF;\n\ntypedef struct StdVideoAV1LoopRestoration\n{\n    StdVideoAV1FrameRestorationType FrameRestorationType[STD_VIDEO_AV1_MAX_NUM_PLANES];\n    uint16_t LoopRestorationSize[STD_VIDEO_AV1_MAX_NUM_PLANES];\n} StdVideoAV1LoopRestoration;\n\ntypedef struct StdVideoAV1GlobalMotion\n{\n    uint8_t GmType[STD_VIDEO_AV1_NUM_REF_FRAMES];\n    int32_t gm_params[STD_VIDEO_AV1_NUM_REF_FRAMES][STD_VIDEO_AV1_GLOBAL_MOTION_PARAMS];\n} StdVideoAV1GlobalMotion;\n\ntypedef struct StdVideoAV1FilmGrainFlags\n{\n    uint32_t chroma_scaling_from_luma : 1;\n    uint32_t overlap_flag : 1;\n    uint32_t clip_to_restricted_range : 1;\n    uint32_t update_grain : 1;\n    uint32_t reserved : 28;\n} StdVideoAV1FilmGrainFlags;\n\ntypedef struct StdVideoAV1FilmGrain\n{\n    StdVideoAV1FilmGrainFlags flags;\n    uint8_t grain_scaling_minus_8;\n    uint8_t ar_coeff_lag;\n    uint8_t ar_coeff_shift_minus_6;\n    uint8_t grain_scale_shift;\n    uint16_t grain_seed;\n    uint8_t film_grain_params_ref_idx;\n    uint8_t num_y_points;\n    uint8_t point_y_value[STD_VIDEO_AV1_MAX_NUM_Y_POINTS];\n    uint8_t point_y_scaling[STD_VIDEO_AV1_MAX_NUM_Y_POINTS];\n    uint8_t num_cb_points;\n    uint8_t point_cb_value[STD_VIDEO_AV1_MAX_NUM_CB_POINTS];\n    uint8_t point_cb_scaling[STD_VIDEO_AV1_MAX_NUM_CB_POINTS];\n    uint8_t num_cr_points;\n    uint8_t point_cr_value[STD_VIDEO_AV1_MAX_NUM_CR_POINTS];\n    uint8_t point_cr_scaling[STD_VIDEO_AV1_MAX_NUM_CR_POINTS];\n    int8_t ar_coeffs_y_plus_128[STD_VIDEO_AV1_MAX_NUM_POS_LUMA];\n    int8_t ar_coeffs_cb_plus_128[STD_VIDEO_AV1_MAX_NUM_POS_CHROMA];\n    int8_t ar_coeffs_cr_plus_128[STD_VIDEO_AV1_MAX_NUM_POS_CHROMA];\n    uint8_t cb_mult;\n    uint8_t cb_luma_mult;\n    uint16_t cb_offset;\n    uint8_t cr_mult;\n    uint8_t cr_luma_mult;\n    uint16_t cr_offset;\n} StdVideoAV1FilmGrain;\n\ntypedef struct StdVideoAV1SequenceHeaderFlags\n{\n    uint32_t still_picture : 1;\n    uint32_t reduced_still_picture_header : 1;\n    uint32_t use_128x128_superblock : 1;\n    uint32_t enable_filter_intra : 1;\n    uint32_t enable_intra_edge_filter : 1;\n    uint32_t enable_interintra_compound : 1;\n    uint32_t enable_masked_compound : 1;\n    uint32_t enable_warped_motion : 1;\n    uint32_t enable_dual_filter : 1;\n    uint32_t enable_order_hint : 1;\n    uint32_t enable_jnt_comp : 1;\n    uint32_t enable_ref_frame_mvs : 1;\n    uint32_t frame_id_numbers_present_flag : 1;\n    uint32_t enable_superres : 1;\n    uint32_t enable_cdef : 1;\n    uint32_t enable_restoration : 1;\n    uint32_t film_grain_params_present : 1;\n    uint32_t timing_info_present_flag : 1;\n    uint32_t initial_display_delay_present_flag : 1;\n    uint32_t reserved : 13;\n} StdVideoAV1SequenceHeaderFlags;\n\ntypedef struct StdVideoAV1SequenceHeader\n{\n    StdVideoAV1SequenceHeaderFlags flags;\n    StdVideoAV1Profile seq_profile;\n    uint8_t frame_width_bits_minus_1;\n    uint8_t frame_height_bits_minus_1;\n    uint16_t max_frame_width_minus_1;\n    uint16_t max_frame_height_minus_1;\n    uint8_t delta_frame_id_length_minus_2;\n    uint8_t additional_frame_id_length_minus_1;\n    uint8_t order_hint_bits_minus_1;\n    uint8_t seq_force_integer_mv;\n    uint8_t seq_force_screen_content_tools;\n    uint8_t reserved1[5];\n    const StdVideoAV1ColorConfig* pColorConfig;\n    const StdVideoAV1TimingInfo* pTimingInfo;\n} StdVideoAV1SequenceHeader;\n\n\n#define vulkan_video_codec_av1std_decode 1\n#define VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_SPEC_VERSION VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_API_VERSION_1_0_0\n#define VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_EXTENSION_NAME \"VK_STD_vulkan_video_codec_av1_decode\"\n\n#define VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_API_VERSION_1_0_0 VK_MAKE_VIDEO_STD_VERSION(1, 0, 0)\n\ntypedef struct StdVideoDecodeAV1PictureInfoFlags\n{\n    uint32_t error_resilient_mode : 1;\n    uint32_t disable_cdf_update : 1;\n    uint32_t use_superres : 1;\n    uint32_t render_and_frame_size_different : 1;\n    uint32_t allow_screen_content_tools : 1;\n    uint32_t is_filter_switchable : 1;\n    uint32_t force_integer_mv : 1;\n    uint32_t frame_size_override_flag : 1;\n    uint32_t buffer_removal_time_present_flag : 1;\n    uint32_t allow_intrabc : 1;\n    uint32_t frame_refs_short_signaling : 1;\n    uint32_t allow_high_precision_mv : 1;\n    uint32_t is_motion_mode_switchable : 1;\n    uint32_t use_ref_frame_mvs : 1;\n    uint32_t disable_frame_end_update_cdf : 1;\n    uint32_t allow_warped_motion : 1;\n    uint32_t reduced_tx_set : 1;\n    uint32_t reference_select : 1;\n    uint32_t skip_mode_present : 1;\n    uint32_t delta_q_present : 1;\n    uint32_t delta_lf_present : 1;\n    uint32_t delta_lf_multi : 1;\n    uint32_t segmentation_enabled : 1;\n    uint32_t segmentation_update_map : 1;\n    uint32_t segmentation_temporal_update : 1;\n    uint32_t segmentation_update_data : 1;\n    uint32_t UsesLr : 1;\n    uint32_t usesChromaLr : 1;\n    uint32_t apply_grain : 1;\n    uint32_t reserved : 3;\n} StdVideoDecodeAV1PictureInfoFlags;\n\ntypedef struct StdVideoDecodeAV1PictureInfo\n{\n    StdVideoDecodeAV1PictureInfoFlags flags;\n    StdVideoAV1FrameType frame_type;\n    uint32_t current_frame_id;\n    uint8_t OrderHint;\n    uint8_t primary_ref_frame;\n    uint8_t refresh_frame_flags;\n    uint8_t reserved1;\n    StdVideoAV1InterpolationFilter interpolation_filter;\n    StdVideoAV1TxMode TxMode;\n    uint8_t delta_q_res;\n    uint8_t delta_lf_res;\n    uint8_t SkipModeFrame[STD_VIDEO_AV1_SKIP_MODE_FRAMES];\n    uint8_t coded_denom;\n    uint8_t reserved2[3];\n    uint8_t OrderHints[STD_VIDEO_AV1_NUM_REF_FRAMES];\n    uint32_t expectedFrameId[STD_VIDEO_AV1_NUM_REF_FRAMES];\n    const StdVideoAV1TileInfo* pTileInfo;\n    const StdVideoAV1Quantization* pQuantization;\n    const StdVideoAV1Segmentation* pSegmentation;\n    const StdVideoAV1LoopFilter* pLoopFilter;\n    const StdVideoAV1CDEF* pCDEF;\n    const StdVideoAV1LoopRestoration* pLoopRestoration;\n    const StdVideoAV1GlobalMotion* pGlobalMotion;\n    const StdVideoAV1FilmGrain* pFilmGrain;\n} StdVideoDecodeAV1PictureInfo;\n\ntypedef struct StdVideoDecodeAV1ReferenceInfoFlags\n{\n    uint32_t disable_frame_end_update_cdf : 1;\n    uint32_t segmentation_enabled : 1;\n    uint32_t reserved : 30;\n} StdVideoDecodeAV1ReferenceInfoFlags;\n\ntypedef struct StdVideoDecodeAV1ReferenceInfo\n{\n    StdVideoDecodeAV1ReferenceInfoFlags flags;\n    uint8_t frame_type;\n    uint8_t RefFrameSignBias;\n    uint8_t OrderHint;\n    uint8_t SavedOrderHints[STD_VIDEO_AV1_NUM_REF_FRAMES];\n} StdVideoDecodeAV1ReferenceInfo;\n\n\n#define vulkan_video_codec_av1std_encode 1\n#define VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_SPEC_VERSION VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_API_VERSION_1_0_0\n#define VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_EXTENSION_NAME \"VK_STD_vulkan_video_codec_av1_encode\"\n\n#define VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_API_VERSION_1_0_0 VK_MAKE_VIDEO_STD_VERSION(1, 0, 0)\n\ntypedef struct StdVideoEncodeAV1DecoderModelInfo\n{\n    uint8_t buffer_delay_length_minus_1;\n    uint8_t buffer_removal_time_length_minus_1;\n    uint8_t frame_presentation_time_length_minus_1;\n    uint8_t reserved1;\n    uint32_t num_units_in_decoding_tick;\n} StdVideoEncodeAV1DecoderModelInfo;\n\ntypedef struct StdVideoEncodeAV1ExtensionHeader\n{\n    uint8_t temporal_id;\n    uint8_t spatial_id;\n} StdVideoEncodeAV1ExtensionHeader;\n\ntypedef struct StdVideoEncodeAV1OperatingPointInfoFlags\n{\n    uint32_t decoder_model_present_for_this_op : 1;\n    uint32_t low_delay_mode_flag : 1;\n    uint32_t initial_display_delay_present_for_this_op : 1;\n    uint32_t reserved : 29;\n} StdVideoEncodeAV1OperatingPointInfoFlags;\n\ntypedef struct StdVideoEncodeAV1OperatingPointInfo\n{\n    StdVideoEncodeAV1OperatingPointInfoFlags flags;\n    uint16_t operating_point_idc;\n    uint8_t seq_level_idx;\n    uint8_t seq_tier;\n    uint32_t decoder_buffer_delay;\n    uint32_t encoder_buffer_delay;\n    uint8_t initial_display_delay_minus_1;\n} StdVideoEncodeAV1OperatingPointInfo;\n\ntypedef struct StdVideoEncodeAV1PictureInfoFlags\n{\n    uint32_t error_resilient_mode : 1;\n    uint32_t disable_cdf_update : 1;\n    uint32_t use_superres : 1;\n    uint32_t render_and_frame_size_different : 1;\n    uint32_t allow_screen_content_tools : 1;\n    uint32_t is_filter_switchable : 1;\n    uint32_t force_integer_mv : 1;\n    uint32_t frame_size_override_flag : 1;\n    uint32_t buffer_removal_time_present_flag : 1;\n    uint32_t allow_intrabc : 1;\n    uint32_t frame_refs_short_signaling : 1;\n    uint32_t allow_high_precision_mv : 1;\n    uint32_t is_motion_mode_switchable : 1;\n    uint32_t use_ref_frame_mvs : 1;\n    uint32_t disable_frame_end_update_cdf : 1;\n    uint32_t allow_warped_motion : 1;\n    uint32_t reduced_tx_set : 1;\n    uint32_t skip_mode_present : 1;\n    uint32_t delta_q_present : 1;\n    uint32_t delta_lf_present : 1;\n    uint32_t delta_lf_multi : 1;\n    uint32_t segmentation_enabled : 1;\n    uint32_t segmentation_update_map : 1;\n    uint32_t segmentation_temporal_update : 1;\n    uint32_t segmentation_update_data : 1;\n    uint32_t UsesLr : 1;\n    uint32_t usesChromaLr : 1;\n    uint32_t show_frame : 1;\n    uint32_t showable_frame : 1;\n    uint32_t reserved : 3;\n} StdVideoEncodeAV1PictureInfoFlags;\n\ntypedef struct StdVideoEncodeAV1PictureInfo\n{\n    StdVideoEncodeAV1PictureInfoFlags flags;\n    StdVideoAV1FrameType frame_type;\n    uint32_t frame_presentation_time;\n    uint32_t current_frame_id;\n    uint8_t order_hint;\n    uint8_t primary_ref_frame;\n    uint8_t refresh_frame_flags;\n    uint8_t coded_denom;\n    uint16_t render_width_minus_1;\n    uint16_t render_height_minus_1;\n    StdVideoAV1InterpolationFilter interpolation_filter;\n    StdVideoAV1TxMode TxMode;\n    uint8_t delta_q_res;\n    uint8_t delta_lf_res;\n    uint8_t ref_order_hint[STD_VIDEO_AV1_NUM_REF_FRAMES];\n    int8_t ref_frame_idx[STD_VIDEO_AV1_REFS_PER_FRAME];\n    uint8_t reserved1[3];\n    uint32_t delta_frame_id_minus_1[STD_VIDEO_AV1_REFS_PER_FRAME];\n    const StdVideoAV1TileInfo* pTileInfo;\n    const StdVideoAV1Quantization* pQuantization;\n    const StdVideoAV1Segmentation* pSegmentation;\n    const StdVideoAV1LoopFilter* pLoopFilter;\n    const StdVideoAV1CDEF* pCDEF;\n    const StdVideoAV1LoopRestoration* pLoopRestoration;\n    const StdVideoAV1GlobalMotion* pGlobalMotion;\n    const StdVideoEncodeAV1ExtensionHeader* pExtensionHeader;\n    const uint32_t* pBufferRemovalTimes;\n} StdVideoEncodeAV1PictureInfo;\n\ntypedef struct StdVideoEncodeAV1ReferenceInfoFlags\n{\n    uint32_t disable_frame_end_update_cdf : 1;\n    uint32_t segmentation_enabled : 1;\n    uint32_t reserved : 30;\n} StdVideoEncodeAV1ReferenceInfoFlags;\n\ntypedef struct StdVideoEncodeAV1ReferenceInfo\n{\n    StdVideoEncodeAV1ReferenceInfoFlags flags;\n    uint32_t RefFrameId;\n    StdVideoAV1FrameType frame_type;\n    uint8_t OrderHint;\n    uint8_t reserved1[3];\n    const StdVideoEncodeAV1ExtensionHeader* pExtensionHeader;\n} StdVideoEncodeAV1ReferenceInfo;\n\n\n\n#define VK_BASE_VERSION_1_0 1\n\n#define VK_DEFINE_HANDLE(object) typedef struct object##_T* object;\n#ifndef VK_USE_64_BIT_PTR_DEFINES\n    #if defined(__LP64__) || defined(_WIN64) || (defined(__x86_64__) && !defined(__ILP32__) ) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__) || (defined(__riscv) && __riscv_xlen == 64)\n        #define VK_USE_64_BIT_PTR_DEFINES 1\n    #else\n        #define VK_USE_64_BIT_PTR_DEFINES 0\n    #endif\n#endif\n#ifndef VK_DEFINE_NON_DISPATCHABLE_HANDLE\n    #if (VK_USE_64_BIT_PTR_DEFINES==1)\n        #if (defined(__cplusplus) && (__cplusplus >= 201103L)) || (defined(_MSVC_LANG) && (_MSVC_LANG >= 201103L))\n            #define VK_NULL_HANDLE nullptr\n        #else\n            #define VK_NULL_HANDLE ((void*)0)\n        #endif\n    #else\n        #define VK_NULL_HANDLE 0ULL\n    #endif\n#endif\n#ifndef VK_NULL_HANDLE\n    #define VK_NULL_HANDLE 0\n#endif\n#ifndef VK_DEFINE_NON_DISPATCHABLE_HANDLE\n    #if (VK_USE_64_BIT_PTR_DEFINES==1)\n        #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef struct object##_T *object;\n    #else\n        #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef uint64_t object;\n    #endif\n#endif\n#define VK_MAKE_API_VERSION(variant, major, minor, patch)     ((((uint32_t)(variant)) << 29U) | (((uint32_t)(major)) << 22U) | (((uint32_t)(minor)) << 12U) | ((uint32_t)(patch)))\n#define VK_HEADER_VERSION 345\n#define VK_HEADER_VERSION_COMPLETE VK_MAKE_API_VERSION(0, 1, 4, VK_HEADER_VERSION)\n#define VK_MAKE_VERSION(major, minor, patch)     ((((uint32_t)(major)) << 22U) | (((uint32_t)(minor)) << 12U) | ((uint32_t)(patch)))\n#define VK_VERSION_MAJOR(version) ((uint32_t)(version) >> 22U)\n#define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12U) & 0x3FFU)\n#define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xFFFU)\n#define VK_API_VERSION_VARIANT(version) ((uint32_t)(version) >> 29U)\n#define VK_API_VERSION_MAJOR(version) (((uint32_t)(version) >> 22U) & 0x7FU)\n#define VK_API_VERSION_MINOR(version) (((uint32_t)(version) >> 12U) & 0x3FFU)\n#define VK_API_VERSION_PATCH(version) ((uint32_t)(version) & 0xFFFU)\n#define VK_API_VERSION_1_0 VK_MAKE_API_VERSION(0, 1, 0, 0)\n\n#define VK_FALSE 0\n#define VK_LOD_CLAMP_NONE 1000.0F\n#define VK_QUEUE_FAMILY_IGNORED (~0U)\n#define VK_REMAINING_ARRAY_LAYERS (~0U)\n#define VK_REMAINING_MIP_LEVELS (~0U)\n#define VK_TRUE 1\n#define VK_WHOLE_SIZE (~0ULL)\n#define VK_MAX_MEMORY_TYPES 32\n#define VK_MAX_PHYSICAL_DEVICE_NAME_SIZE 256\n#define VK_UUID_SIZE 16\n#define VK_MAX_EXTENSION_NAME_SIZE 256\n#define VK_MAX_DESCRIPTION_SIZE 256\n#define VK_MAX_MEMORY_HEAPS 16\n\ntypedef uint32_t VkBool32;\ntypedef uint64_t VkDeviceAddress;\ntypedef uint64_t VkDeviceSize;\ntypedef uint32_t VkFlags;\n\nVK_DEFINE_HANDLE(VkInstance)\nVK_DEFINE_HANDLE(VkPhysicalDevice)\nVK_DEFINE_HANDLE(VkDevice)\nVK_DEFINE_HANDLE(VkQueue)\nVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSemaphore)\nVK_DEFINE_HANDLE(VkCommandBuffer)\nVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkFence)\nVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDeviceMemory)\nVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBuffer)\nVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkImage)\nVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkQueryPool)\nVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkImageView)\nVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkCommandPool)\nVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkRenderPass)\nVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkFramebuffer)\n\ntypedef enum\n{\n    VK_SUCCESS = 0,\n    VK_NOT_READY = 1,\n    VK_TIMEOUT = 2,\n    VK_EVENT_SET = 3,\n    VK_EVENT_RESET = 4,\n    VK_INCOMPLETE = 5,\n    VK_ERROR_OUT_OF_HOST_MEMORY = -1,\n    VK_ERROR_OUT_OF_DEVICE_MEMORY = -2,\n    VK_ERROR_INITIALIZATION_FAILED = -3,\n    VK_ERROR_DEVICE_LOST = -4,\n    VK_ERROR_MEMORY_MAP_FAILED = -5,\n    VK_ERROR_LAYER_NOT_PRESENT = -6,\n    VK_ERROR_EXTENSION_NOT_PRESENT = -7,\n    VK_ERROR_FEATURE_NOT_PRESENT = -8,\n    VK_ERROR_INCOMPATIBLE_DRIVER = -9,\n    VK_ERROR_TOO_MANY_OBJECTS = -10,\n    VK_ERROR_FORMAT_NOT_SUPPORTED = -11,\n    VK_ERROR_FRAGMENTED_POOL = -12,\n    VK_ERROR_UNKNOWN = -13,\n    VK_ERROR_VALIDATION_FAILED = -1000011001,\n    VK_ERROR_OUT_OF_POOL_MEMORY = -1000069000,\n    VK_ERROR_INVALID_EXTERNAL_HANDLE = -1000072003,\n    VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000,\n    VK_ERROR_FRAGMENTATION = -1000161000,\n    VK_PIPELINE_COMPILE_REQUIRED = 1000297000,\n    VK_ERROR_NOT_PERMITTED = -1000174001,\n    VK_ERROR_INVALID_PIPELINE_CACHE_DATA = -1000298000,\n    VK_ERROR_NO_PIPELINE_MATCH = -1000298001,\n    VK_ERROR_SURFACE_LOST_KHR = -1000000000,\n    VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001,\n    VK_SUBOPTIMAL_KHR = 1000001003,\n    VK_ERROR_OUT_OF_DATE_KHR = -1000001004,\n    VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = -1000003001,\n    VK_ERROR_INVALID_SHADER_NV = -1000012000,\n    VK_ERROR_IMAGE_USAGE_NOT_SUPPORTED_KHR = -1000023000,\n    VK_ERROR_VIDEO_PICTURE_LAYOUT_NOT_SUPPORTED_KHR = -1000023001,\n    VK_ERROR_VIDEO_PROFILE_OPERATION_NOT_SUPPORTED_KHR = -1000023002,\n    VK_ERROR_VIDEO_PROFILE_FORMAT_NOT_SUPPORTED_KHR = -1000023003,\n    VK_ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR = -1000023004,\n    VK_ERROR_VIDEO_STD_VERSION_NOT_SUPPORTED_KHR = -1000023005,\n    VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000,\n    VK_ERROR_PRESENT_TIMING_QUEUE_FULL_EXT = -1000208000,\n    VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT = -1000255000,\n    VK_THREAD_IDLE_KHR = 1000268000,\n    VK_THREAD_DONE_KHR = 1000268001,\n    VK_OPERATION_DEFERRED_KHR = 1000268002,\n    VK_OPERATION_NOT_DEFERRED_KHR = 1000268003,\n    VK_ERROR_INVALID_VIDEO_STD_PARAMETERS_KHR = -1000299000,\n    VK_ERROR_COMPRESSION_EXHAUSTED_EXT = -1000338000,\n    VK_INCOMPATIBLE_SHADER_BINARY_EXT = 1000482000,\n    VK_PIPELINE_BINARY_MISSING_KHR = 1000483000,\n    VK_ERROR_NOT_ENOUGH_SPACE_KHR = -1000483000,\n    VK_ERROR_OUT_OF_POOL_MEMORY_KHR = VK_ERROR_OUT_OF_POOL_MEMORY,\n    VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = VK_ERROR_INVALID_EXTERNAL_HANDLE,\n    VK_ERROR_VALIDATION_FAILED_EXT = VK_ERROR_VALIDATION_FAILED,\n    VK_ERROR_FRAGMENTATION_EXT = VK_ERROR_FRAGMENTATION,\n    VK_ERROR_NOT_PERMITTED_KHR = VK_ERROR_NOT_PERMITTED,\n    VK_ERROR_NOT_PERMITTED_EXT = VK_ERROR_NOT_PERMITTED,\n    VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS,\n    VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS,\n    VK_PIPELINE_COMPILE_REQUIRED_EXT = VK_PIPELINE_COMPILE_REQUIRED,\n    VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT = VK_PIPELINE_COMPILE_REQUIRED,\n    VK_ERROR_INCOMPATIBLE_SHADER_BINARY_EXT = VK_INCOMPATIBLE_SHADER_BINARY_EXT,\n    VK_RESULT_MAX_ENUM = 0x7FFFFFFF\n} VkResult;\n\ntypedef enum\n{\n    VK_STRUCTURE_TYPE_APPLICATION_INFO = 0,\n    VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1,\n    VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2,\n    VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3,\n    VK_STRUCTURE_TYPE_SUBMIT_INFO = 4,\n    VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5,\n    VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6,\n    VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7,\n    VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8,\n    VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9,\n    VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10,\n    VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11,\n    VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12,\n    VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13,\n    VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14,\n    VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15,\n    VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16,\n    VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17,\n    VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18,\n    VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19,\n    VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20,\n    VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21,\n    VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22,\n    VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23,\n    VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24,\n    VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25,\n    VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26,\n    VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27,\n    VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28,\n    VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29,\n    VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30,\n    VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31,\n    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32,\n    VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33,\n    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34,\n    VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35,\n    VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36,\n    VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37,\n    VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38,\n    VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39,\n    VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40,\n    VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41,\n    VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42,\n    VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43,\n    VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44,\n    VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45,\n    VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46,\n    VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47,\n    VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48,\n    VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO = 1000157000,\n    VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO = 1000157001,\n    VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS = 1000127000,\n    VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO = 1000127001,\n    VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO = 1000060000,\n    VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO = 1000060004,\n    VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO = 1000060005,\n    VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO = 1000060006,\n    VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO = 1000060013,\n    VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO = 1000060014,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES = 1000070000,\n    VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO = 1000070001,\n    VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 = 1000146000,\n    VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 = 1000146001,\n    VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 = 1000146002,\n    VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 = 1000146003,\n    VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 = 1000146004,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 = 1000059000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 = 1000059001,\n    VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2 = 1000059002,\n    VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 = 1000059003,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 = 1000059004,\n    VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 = 1000059005,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 = 1000059006,\n    VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 = 1000059007,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 = 1000059008,\n    VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO = 1000117002,\n    VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO = 1000145000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES = 1000145001,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES = 1000145002,\n    VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 = 1000145003,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO = 1000071000,\n    VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES = 1000071001,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO = 1000071002,\n    VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES = 1000071003,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES = 1000071004,\n    VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO = 1000072000,\n    VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO = 1000072001,\n    VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO = 1000072002,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO = 1000112000,\n    VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES = 1000112001,\n    VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO = 1000113000,\n    VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO = 1000077000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO = 1000076000,\n    VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES = 1000076001,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES = 1000094000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES = 1000083000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES = 1000120000,\n    VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO = 1000085000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES = 1000168000,\n    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT = 1000168001,\n    VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO = 1000156000,\n    VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO = 1000156001,\n    VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO = 1000156002,\n    VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO = 1000156003,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES = 1000156004,\n    VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES = 1000156005,\n    VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO = 1000060003,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES = 1000117000,\n    VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO = 1000117001,\n    VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO = 1000117003,\n    VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO = 1000053000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES = 1000053001,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES = 1000053002,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES = 1000063000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES = 1000196000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES = 49,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES = 50,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES = 51,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES = 52,\n    VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO = 1000147000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES = 1000211000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES = 1000261000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES = 1000207000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES = 1000207001,\n    VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO = 1000207002,\n    VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO = 1000207003,\n    VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO = 1000207004,\n    VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO = 1000207005,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES = 1000257000,\n    VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO = 1000244001,\n    VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO = 1000257002,\n    VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO = 1000257003,\n    VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO = 1000257004,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES = 1000177000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES = 1000180000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES = 1000082000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES = 1000197000,\n    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO = 1000161000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES = 1000161001,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES = 1000161002,\n    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO = 1000161003,\n    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT = 1000161004,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES = 1000221000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES = 1000130000,\n    VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO = 1000130001,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES = 1000253000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES = 1000175000,\n    VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2 = 1000109000,\n    VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2 = 1000109001,\n    VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2 = 1000109002,\n    VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2 = 1000109003,\n    VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2 = 1000109004,\n    VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO = 1000109005,\n    VK_STRUCTURE_TYPE_SUBPASS_END_INFO = 1000109006,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES = 1000199000,\n    VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE = 1000199001,\n    VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO = 1000246000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES = 1000108000,\n    VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO = 1000108001,\n    VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO = 1000108002,\n    VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO = 1000108003,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES = 1000241000,\n    VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT = 1000241001,\n    VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT = 1000241002,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES = 53,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES = 54,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES = 1000245000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES = 1000295000,\n    VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO = 1000295001,\n    VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO = 1000295002,\n    VK_STRUCTURE_TYPE_MEMORY_BARRIER_2 = 1000314000,\n    VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2 = 1000314001,\n    VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2 = 1000314002,\n    VK_STRUCTURE_TYPE_DEPENDENCY_INFO = 1000314003,\n    VK_STRUCTURE_TYPE_SUBMIT_INFO_2 = 1000314004,\n    VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO = 1000314005,\n    VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO = 1000314006,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES = 1000314007,\n    VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2 = 1000337000,\n    VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2 = 1000337001,\n    VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2 = 1000337002,\n    VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2 = 1000337003,\n    VK_STRUCTURE_TYPE_BUFFER_COPY_2 = 1000337006,\n    VK_STRUCTURE_TYPE_IMAGE_COPY_2 = 1000337007,\n    VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2 = 1000337009,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES = 1000066000,\n    VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3 = 1000360000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES = 1000413000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES = 1000413001,\n    VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS = 1000413002,\n    VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS = 1000413003,\n    VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO = 1000192000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES = 1000215000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES = 1000276000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES = 1000297000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES = 1000325000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES = 1000335000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES = 1000225000,\n    VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO = 1000225001,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES = 1000225002,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES = 1000138000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES = 1000138001,\n    VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK = 1000138002,\n    VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO = 1000138003,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES = 1000280000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES = 1000280001,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES = 1000281001,\n    VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2 = 1000337004,\n    VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2 = 1000337005,\n    VK_STRUCTURE_TYPE_IMAGE_BLIT_2 = 1000337008,\n    VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2 = 1000337010,\n    VK_STRUCTURE_TYPE_RENDERING_INFO = 1000044000,\n    VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO = 1000044001,\n    VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO = 1000044002,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES = 1000044003,\n    VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO = 1000044004,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_FEATURES = 55,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_PROPERTIES = 56,\n    VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO = 1000174000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES = 1000388000,\n    VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES = 1000388001,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES = 1000265000,\n    VK_STRUCTURE_TYPE_MEMORY_MAP_INFO = 1000271000,\n    VK_STRUCTURE_TYPE_MEMORY_UNMAP_INFO = 1000271001,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES = 1000470000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES = 1000470001,\n    VK_STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO = 1000470004,\n    VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2 = 1000338002,\n    VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2 = 1000338003,\n    VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO = 1000470006,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES = 1000545000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES = 1000545001,\n    VK_STRUCTURE_TYPE_BIND_MEMORY_STATUS = 1000545002,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES = 1000270000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES = 1000270001,\n    VK_STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY = 1000270002,\n    VK_STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY = 1000270003,\n    VK_STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO = 1000270004,\n    VK_STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO = 1000270005,\n    VK_STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO = 1000270006,\n    VK_STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO = 1000270007,\n    VK_STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE = 1000270008,\n    VK_STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY = 1000270009,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES = 1000416000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES = 1000528000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES = 1000544000,\n    VK_STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO = 1000470005,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES = 1000080000,\n    VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO = 1000545003,\n    VK_STRUCTURE_TYPE_PUSH_CONSTANTS_INFO = 1000545004,\n    VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO = 1000545005,\n    VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO = 1000545006,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES = 1000466000,\n    VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO = 1000068000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES = 1000068001,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES = 1000068002,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES = 1000259000,\n    VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO = 1000259001,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES = 1000259002,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES = 1000525000,\n    VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO = 1000190001,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES = 1000190002,\n    VK_STRUCTURE_TYPE_RENDERING_AREA_INFO = 1000470003,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES = 1000232000,\n    VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO = 1000232001,\n    VK_STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO = 1000232002,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_FEATURES = 1000298000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_PROPERTIES = 1000298001,\n    VK_STRUCTURE_TYPE_DEVICE_OBJECT_RESERVATION_CREATE_INFO = 1000298002,\n    VK_STRUCTURE_TYPE_COMMAND_POOL_MEMORY_RESERVATION_CREATE_INFO = 1000298003,\n    VK_STRUCTURE_TYPE_COMMAND_POOL_MEMORY_CONSUMPTION = 1000298004,\n    VK_STRUCTURE_TYPE_PIPELINE_POOL_SIZE = 1000298005,\n    VK_STRUCTURE_TYPE_FAULT_DATA = 1000298007,\n    VK_STRUCTURE_TYPE_FAULT_CALLBACK_INFO = 1000298008,\n    VK_STRUCTURE_TYPE_PIPELINE_OFFLINE_CREATE_INFO = 1000298010,\n    VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000,\n    VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001,\n    VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR = 1000060007,\n    VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR = 1000060008,\n    VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR = 1000060009,\n    VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR = 1000060010,\n    VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR = 1000060011,\n    VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR = 1000060012,\n    VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR = 1000002000,\n    VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR = 1000002001,\n    VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR = 1000003000,\n    VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR = 1000004000,\n    VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR = 1000005000,\n    VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR = 1000006000,\n    VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR = 1000008000,\n    VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = 1000009000,\n    VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD = 1000018000,\n    VK_STRUCTURE_TYPE_VIDEO_PROFILE_INFO_KHR = 1000023000,\n    VK_STRUCTURE_TYPE_VIDEO_CAPABILITIES_KHR = 1000023001,\n    VK_STRUCTURE_TYPE_VIDEO_PICTURE_RESOURCE_INFO_KHR = 1000023002,\n    VK_STRUCTURE_TYPE_VIDEO_SESSION_MEMORY_REQUIREMENTS_KHR = 1000023003,\n    VK_STRUCTURE_TYPE_BIND_VIDEO_SESSION_MEMORY_INFO_KHR = 1000023004,\n    VK_STRUCTURE_TYPE_VIDEO_SESSION_CREATE_INFO_KHR = 1000023005,\n    VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000023006,\n    VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_UPDATE_INFO_KHR = 1000023007,\n    VK_STRUCTURE_TYPE_VIDEO_BEGIN_CODING_INFO_KHR = 1000023008,\n    VK_STRUCTURE_TYPE_VIDEO_END_CODING_INFO_KHR = 1000023009,\n    VK_STRUCTURE_TYPE_VIDEO_CODING_CONTROL_INFO_KHR = 1000023010,\n    VK_STRUCTURE_TYPE_VIDEO_REFERENCE_SLOT_INFO_KHR = 1000023011,\n    VK_STRUCTURE_TYPE_QUEUE_FAMILY_VIDEO_PROPERTIES_KHR = 1000023012,\n    VK_STRUCTURE_TYPE_VIDEO_PROFILE_LIST_INFO_KHR = 1000023013,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_FORMAT_INFO_KHR = 1000023014,\n    VK_STRUCTURE_TYPE_VIDEO_FORMAT_PROPERTIES_KHR = 1000023015,\n    VK_STRUCTURE_TYPE_QUEUE_FAMILY_QUERY_RESULT_STATUS_PROPERTIES_KHR = 1000023016,\n    VK_STRUCTURE_TYPE_VIDEO_DECODE_INFO_KHR = 1000024000,\n    VK_STRUCTURE_TYPE_VIDEO_DECODE_CAPABILITIES_KHR = 1000024001,\n    VK_STRUCTURE_TYPE_VIDEO_DECODE_USAGE_INFO_KHR = 1000024002,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT = 1000028000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT = 1000028001,\n    VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT = 1000028002,\n    VK_STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX = 1000029000,\n    VK_STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX = 1000029001,\n    VK_STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX = 1000029002,\n    VK_STRUCTURE_TYPE_CU_MODULE_TEXTURING_MODE_CREATE_INFO_NVX = 1000029004,\n    VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX = 1000030000,\n    VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX = 1000030001,\n    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_CAPABILITIES_KHR = 1000038000,\n    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000038001,\n    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR = 1000038002,\n    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PICTURE_INFO_KHR = 1000038003,\n    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_DPB_SLOT_INFO_KHR = 1000038004,\n    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_NALU_SLICE_INFO_KHR = 1000038005,\n    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_GOP_REMAINING_FRAME_INFO_KHR = 1000038006,\n    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PROFILE_INFO_KHR = 1000038007,\n    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_INFO_KHR = 1000038008,\n    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_LAYER_INFO_KHR = 1000038009,\n    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_CREATE_INFO_KHR = 1000038010,\n    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_QUALITY_LEVEL_PROPERTIES_KHR = 1000038011,\n    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_GET_INFO_KHR = 1000038012,\n    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_FEEDBACK_INFO_KHR = 1000038013,\n    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_CAPABILITIES_KHR = 1000039000,\n    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000039001,\n    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR = 1000039002,\n    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PICTURE_INFO_KHR = 1000039003,\n    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_DPB_SLOT_INFO_KHR = 1000039004,\n    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_NALU_SLICE_SEGMENT_INFO_KHR = 1000039005,\n    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_GOP_REMAINING_FRAME_INFO_KHR = 1000039006,\n    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PROFILE_INFO_KHR = 1000039007,\n    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_INFO_KHR = 1000039009,\n    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_LAYER_INFO_KHR = 1000039010,\n    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_CREATE_INFO_KHR = 1000039011,\n    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_QUALITY_LEVEL_PROPERTIES_KHR = 1000039012,\n    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_GET_INFO_KHR = 1000039013,\n    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_FEEDBACK_INFO_KHR = 1000039014,\n    VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_KHR = 1000040000,\n    VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_KHR = 1000040001,\n    VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_KHR = 1000040003,\n    VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000040004,\n    VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR = 1000040005,\n    VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_KHR = 1000040006,\n    VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000,\n    VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP = 1000049000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV = 1000050000,\n    VK_STRUCTURE_TYPE_PRIVATE_VENDOR_INFO_PLACEHOLDER_OFFSET_0_NV = 1000051000,\n    VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN = 1000062000,\n    VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT = 1000067000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT = 1000067001,\n    VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV = 1000056000,\n    VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV = 1000056001,\n    VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073000,\n    VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073001,\n    VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR = 1000073002,\n    VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR = 1000073003,\n    VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057000,\n    VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057001,\n    VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR = 1000074000,\n    VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR = 1000074001,\n    VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR = 1000074002,\n    VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR = 1000075000,\n    VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV = 1000058000,\n    VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078000,\n    VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078001,\n    VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR = 1000078002,\n    VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR = 1000078003,\n    VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR = 1000079000,\n    VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR = 1000079001,\n    VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT = 1000081000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT = 1000081001,\n    VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT = 1000081002,\n    VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000,\n    VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV = 1000087000,\n    VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT = 1000090000,\n    VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT = 1000091000,\n    VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT = 1000091001,\n    VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT = 1000091002,\n    VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT = 1000091003,\n    VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE = 1000092000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX = 1000097000,\n    VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX = 1000044009,\n    VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV = 1000098000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT = 1000099000,\n    VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT = 1000099001,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT = 1000101000,\n    VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT = 1000101001,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT = 1000102000,\n    VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT = 1000102001,\n    VK_STRUCTURE_TYPE_HDR_METADATA_EXT = 1000105000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RELAXED_LINE_RASTERIZATION_FEATURES_IMG = 1000110000,\n    VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR = 1000111000,\n    VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114000,\n    VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114001,\n    VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR = 1000114002,\n    VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR = 1000115000,\n    VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR = 1000115001,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR = 1000116000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR = 1000116001,\n    VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR = 1000116002,\n    VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR = 1000116003,\n    VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR = 1000116004,\n    VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR = 1000116005,\n    VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR = 1000116006,\n    VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_RESERVATION_INFO_KHR = 1000116007,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR = 1000119000,\n    VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR = 1000119001,\n    VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR = 1000119002,\n    VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR = 1000121000,\n    VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR = 1000121001,\n    VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR = 1000121002,\n    VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR = 1000121003,\n    VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR = 1000121004,\n    VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK = 1000123000,\n    VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = 1000026000,\n    VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV = 1000026001,\n    VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV = 1000026002,\n    VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT = 1000128000,\n    VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT = 1000128001,\n    VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT = 1000128002,\n    VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT = 1000128003,\n    VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT = 1000128004,\n    VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT = 1000022000,\n    VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT = 1000022001,\n    VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT = 1000022002,\n    VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT = 1000011000,\n    VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID = 1000129000,\n    VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID = 1000129001,\n    VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID = 1000129002,\n    VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129003,\n    VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129004,\n    VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID = 1000129005,\n    VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID = 1000129006,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_FEATURES_AMDX = 1000134000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_PROPERTIES_AMDX = 1000134001,\n    VK_STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_SCRATCH_SIZE_AMDX = 1000134002,\n    VK_STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_CREATE_INFO_AMDX = 1000134003,\n    VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_NODE_CREATE_INFO_AMDX = 1000134004,\n    VK_STRUCTURE_TYPE_TEXEL_BUFFER_DESCRIPTOR_INFO_EXT = 1000135000,\n    VK_STRUCTURE_TYPE_IMAGE_DESCRIPTOR_INFO_EXT = 1000135001,\n    VK_STRUCTURE_TYPE_RESOURCE_DESCRIPTOR_INFO_EXT = 1000135002,\n    VK_STRUCTURE_TYPE_BIND_HEAP_INFO_EXT = 1000135003,\n    VK_STRUCTURE_TYPE_PUSH_DATA_INFO_EXT = 1000135004,\n    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_AND_BINDING_MAPPING_EXT = 1000135005,\n    VK_STRUCTURE_TYPE_SHADER_DESCRIPTOR_SET_AND_BINDING_MAPPING_INFO_EXT = 1000135006,\n    VK_STRUCTURE_TYPE_OPAQUE_CAPTURE_DATA_CREATE_INFO_EXT = 1000135007,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_HEAP_PROPERTIES_EXT = 1000135008,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_HEAP_FEATURES_EXT = 1000135009,\n    VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_DESCRIPTOR_HEAP_INFO_EXT = 1000135010,\n    VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_INDEX_CREATE_INFO_EXT = 1000135011,\n    VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_PUSH_DATA_TOKEN_NV = 1000135012,\n    VK_STRUCTURE_TYPE_SUBSAMPLED_IMAGE_FORMAT_PROPERTIES_EXT = 1000135013,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_HEAP_TENSOR_PROPERTIES_ARM = 1000135014,\n    VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD = 1000044008,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_BFLOAT16_FEATURES_KHR = 1000141000,\n    VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT = 1000143000,\n    VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT = 1000143001,\n    VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT = 1000143002,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT = 1000143003,\n    VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT = 1000143004,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT = 1000148000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT = 1000148001,\n    VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT = 1000148002,\n    VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV = 1000149000,\n    VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR = 1000150007,\n    VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR = 1000150000,\n    VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR = 1000150002,\n    VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR = 1000150003,\n    VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR = 1000150004,\n    VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR = 1000150005,\n    VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR = 1000150006,\n    VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR = 1000150009,\n    VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR = 1000150010,\n    VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR = 1000150011,\n    VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR = 1000150012,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR = 1000150013,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR = 1000150014,\n    VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR = 1000150017,\n    VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR = 1000150020,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR = 1000347000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR = 1000347001,\n    VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR = 1000150015,\n    VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR = 1000150016,\n    VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR = 1000150018,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR = 1000348013,\n    VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = 1000152000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV = 1000154000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV = 1000154001,\n    VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT = 1000158000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT = 1000158002,\n    VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT = 1000158003,\n    VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT = 1000158004,\n    VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158005,\n    VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT = 1000158006,\n    VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160000,\n    VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160001,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR = 1000163000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR = 1000163001,\n    VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV = 1000164000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV = 1000164001,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV = 1000164002,\n    VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV = 1000164005,\n    VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV = 1000165000,\n    VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV = 1000165001,\n    VK_STRUCTURE_TYPE_GEOMETRY_NV = 1000165003,\n    VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV = 1000165004,\n    VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV = 1000165005,\n    VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV = 1000165006,\n    VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV = 1000165007,\n    VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV = 1000165008,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV = 1000165009,\n    VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV = 1000165011,\n    VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV = 1000165012,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV = 1000166000,\n    VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV = 1000166001,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT = 1000170000,\n    VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT = 1000170001,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_CONVERSION_FEATURES_QCOM = 1000172000,\n    VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT = 1000178000,\n    VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT = 1000178001,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT = 1000178002,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR = 1000181000,\n    VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD = 1000183000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD = 1000185000,\n    VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_KHR = 1000187000,\n    VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000187001,\n    VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR = 1000187002,\n    VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_KHR = 1000187003,\n    VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_KHR = 1000187004,\n    VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_KHR = 1000187005,\n    VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD = 1000189000,\n    VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP = 1000191000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV = 1000202000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV = 1000202001,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV = 1000204000,\n    VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV = 1000205000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV = 1000205002,\n    VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV = 1000206000,\n    VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV = 1000206001,\n    VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV = 1000314008,\n    VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV = 1000314009,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_TIMING_FEATURES_EXT = 1000208000,\n    VK_STRUCTURE_TYPE_SWAPCHAIN_TIMING_PROPERTIES_EXT = 1000208001,\n    VK_STRUCTURE_TYPE_SWAPCHAIN_TIME_DOMAIN_PROPERTIES_EXT = 1000208002,\n    VK_STRUCTURE_TYPE_PRESENT_TIMINGS_INFO_EXT = 1000208003,\n    VK_STRUCTURE_TYPE_PRESENT_TIMING_INFO_EXT = 1000208004,\n    VK_STRUCTURE_TYPE_PAST_PRESENTATION_TIMING_INFO_EXT = 1000208005,\n    VK_STRUCTURE_TYPE_PAST_PRESENTATION_TIMING_PROPERTIES_EXT = 1000208006,\n    VK_STRUCTURE_TYPE_PAST_PRESENTATION_TIMING_EXT = 1000208007,\n    VK_STRUCTURE_TYPE_PRESENT_TIMING_SURFACE_CAPABILITIES_EXT = 1000208008,\n    VK_STRUCTURE_TYPE_SWAPCHAIN_CALIBRATED_TIMESTAMP_INFO_EXT = 1000208009,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL = 1000209000,\n    VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL = 1000210000,\n    VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL = 1000210001,\n    VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL = 1000210002,\n    VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL = 1000210003,\n    VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL = 1000210004,\n    VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL = 1000210005,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT = 1000212000,\n    VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD = 1000213000,\n    VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD = 1000213001,\n    VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA = 1000214000,\n    VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT = 1000217000,\n    VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK = 1000122000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT = 1000218000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT = 1000218001,\n    VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT = 1000218002,\n    VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT = 1000044007,\n    VK_STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR = 1000226000,\n    VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR = 1000226001,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR = 1000226002,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR = 1000226003,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR = 1000226004,\n    VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR = 1000044006,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD = 1000227000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD = 1000229000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT = 1000234000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_QUAD_CONTROL_FEATURES_KHR = 1000235000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT = 1000237000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT = 1000238000,\n    VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT = 1000238001,\n    VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR = 1000239000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV = 1000240000,\n    VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT = 1000247000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR = 1000248000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV = 1000249000,\n    VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249001,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249002,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV = 1000250000,\n    VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV = 1000250001,\n    VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV = 1000250002,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT = 1000251000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT = 1000252000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT = 1000254000,\n    VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT = 1000254001,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT = 1000254002,\n    VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT = 1000255000,\n    VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT = 1000255002,\n    VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT = 1000255001,\n    VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT = 1000256000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT = 1000244000,\n    VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT = 1000244002,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT = 1000260000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT = 1000267000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR = 1000269000,\n    VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR = 1000269001,\n    VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR = 1000269002,\n    VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR = 1000269003,\n    VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR = 1000269004,\n    VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR = 1000269005,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_FEATURES_EXT = 1000272000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_PROPERTIES_EXT = 1000272001,\n    VK_STRUCTURE_TYPE_MEMORY_MAP_PLACED_INFO_EXT = 1000272002,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT = 1000273000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV = 1000277000,\n    VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV = 1000277001,\n    VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV = 1000277002,\n    VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV = 1000277003,\n    VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV = 1000277004,\n    VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV = 1000277005,\n    VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV = 1000277006,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV = 1000277007,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV = 1000278000,\n    VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV = 1000278001,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = 1000281000,\n    VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM = 1000282000,\n    VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM = 1000282001,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_BIAS_CONTROL_FEATURES_EXT = 1000283000,\n    VK_STRUCTURE_TYPE_DEPTH_BIAS_INFO_EXT = 1000283001,\n    VK_STRUCTURE_TYPE_DEPTH_BIAS_REPRESENTATION_INFO_EXT = 1000283002,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT = 1000284000,\n    VK_STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT = 1000284001,\n    VK_STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT = 1000284002,\n    VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT = 1000287000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT = 1000287001,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT = 1000287002,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_3D_FEATURES_EXT = 1000288000,\n    VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR = 1000290000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_BARRIER_FEATURES_NV = 1000292000,\n    VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_BARRIER_NV = 1000292001,\n    VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_BARRIER_CREATE_INFO_NV = 1000292002,\n    VK_STRUCTURE_TYPE_PRESENT_ID_KHR = 1000294000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR = 1000294001,\n    VK_STRUCTURE_TYPE_VIDEO_ENCODE_INFO_KHR = 1000299000,\n    VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_INFO_KHR = 1000299001,\n    VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_LAYER_INFO_KHR = 1000299002,\n    VK_STRUCTURE_TYPE_VIDEO_ENCODE_CAPABILITIES_KHR = 1000299003,\n    VK_STRUCTURE_TYPE_VIDEO_ENCODE_USAGE_INFO_KHR = 1000299004,\n    VK_STRUCTURE_TYPE_QUERY_POOL_VIDEO_ENCODE_FEEDBACK_CREATE_INFO_KHR = 1000299005,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR = 1000299006,\n    VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUALITY_LEVEL_PROPERTIES_KHR = 1000299007,\n    VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR = 1000299008,\n    VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_PARAMETERS_GET_INFO_KHR = 1000299009,\n    VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_PARAMETERS_FEEDBACK_INFO_KHR = 1000299010,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV = 1000300000,\n    VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV = 1000300001,\n    VK_STRUCTURE_TYPE_CUDA_MODULE_CREATE_INFO_NV = 1000307000,\n    VK_STRUCTURE_TYPE_CUDA_FUNCTION_CREATE_INFO_NV = 1000307001,\n    VK_STRUCTURE_TYPE_CUDA_LAUNCH_INFO_NV = 1000307002,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_FEATURES_NV = 1000307003,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_PROPERTIES_NV = 1000307004,\n    VK_STRUCTURE_TYPE_REFRESH_OBJECT_LIST_KHR = 1000308000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_SHADING_FEATURES_QCOM = 1000309000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_SHADING_PROPERTIES_QCOM = 1000309001,\n    VK_STRUCTURE_TYPE_RENDER_PASS_TILE_SHADING_CREATE_INFO_QCOM = 1000309002,\n    VK_STRUCTURE_TYPE_PER_TILE_BEGIN_INFO_QCOM = 1000309003,\n    VK_STRUCTURE_TYPE_PER_TILE_END_INFO_QCOM = 1000309004,\n    VK_STRUCTURE_TYPE_DISPATCH_TILE_INFO_QCOM = 1000309005,\n    VK_STRUCTURE_TYPE_QUERY_LOW_LATENCY_SUPPORT_NV = 1000310000,\n    VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECT_CREATE_INFO_EXT = 1000311000,\n    VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECTS_INFO_EXT = 1000311001,\n    VK_STRUCTURE_TYPE_EXPORT_METAL_DEVICE_INFO_EXT = 1000311002,\n    VK_STRUCTURE_TYPE_EXPORT_METAL_COMMAND_QUEUE_INFO_EXT = 1000311003,\n    VK_STRUCTURE_TYPE_EXPORT_METAL_BUFFER_INFO_EXT = 1000311004,\n    VK_STRUCTURE_TYPE_IMPORT_METAL_BUFFER_INFO_EXT = 1000311005,\n    VK_STRUCTURE_TYPE_EXPORT_METAL_TEXTURE_INFO_EXT = 1000311006,\n    VK_STRUCTURE_TYPE_IMPORT_METAL_TEXTURE_INFO_EXT = 1000311007,\n    VK_STRUCTURE_TYPE_EXPORT_METAL_IO_SURFACE_INFO_EXT = 1000311008,\n    VK_STRUCTURE_TYPE_IMPORT_METAL_IO_SURFACE_INFO_EXT = 1000311009,\n    VK_STRUCTURE_TYPE_EXPORT_METAL_SHARED_EVENT_INFO_EXT = 1000311010,\n    VK_STRUCTURE_TYPE_IMPORT_METAL_SHARED_EVENT_INFO_EXT = 1000311011,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT = 1000316000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT = 1000316001,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT = 1000316002,\n    VK_STRUCTURE_TYPE_DESCRIPTOR_ADDRESS_INFO_EXT = 1000316003,\n    VK_STRUCTURE_TYPE_DESCRIPTOR_GET_INFO_EXT = 1000316004,\n    VK_STRUCTURE_TYPE_BUFFER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT = 1000316005,\n    VK_STRUCTURE_TYPE_IMAGE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT = 1000316006,\n    VK_STRUCTURE_TYPE_IMAGE_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_EXT = 1000316007,\n    VK_STRUCTURE_TYPE_SAMPLER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT = 1000316008,\n    VK_STRUCTURE_TYPE_OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT = 1000316010,\n    VK_STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_INFO_EXT = 1000316011,\n    VK_STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_PUSH_DESCRIPTOR_BUFFER_HANDLE_EXT = 1000316012,\n    VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT = 1000316009,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT = 1000320000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT = 1000320001,\n    VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT = 1000320002,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_FEATURES_AMD = 1000321000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR = 1000203000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_PROPERTIES_KHR = 1000322000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR = 1000323000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV = 1000326000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV = 1000326001,\n    VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV = 1000326002,\n    VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV = 1000327000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV = 1000327001,\n    VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MOTION_INFO_NV = 1000327002,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT = 1000328000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT = 1000328001,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT = 1000330000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT = 1000332000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT = 1000332001,\n    VK_STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM = 1000333000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR = 1000336000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT = 1000338000,\n    VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT = 1000338001,\n    VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT = 1000338004,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT = 1000339000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = 1000340000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_EXT = 1000341000,\n    VK_STRUCTURE_TYPE_DEVICE_FAULT_COUNTS_EXT = 1000341001,\n    VK_STRUCTURE_TYPE_DEVICE_FAULT_INFO_EXT = 1000341002,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT = 1000344000,\n    VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT = 1000346000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT = 1000352000,\n    VK_STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT = 1000352001,\n    VK_STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT = 1000352002,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT = 1000353000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ADDRESS_BINDING_REPORT_FEATURES_EXT = 1000354000,\n    VK_STRUCTURE_TYPE_DEVICE_ADDRESS_BINDING_CALLBACK_DATA_EXT = 1000354001,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT = 1000355000,\n    VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT = 1000355001,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT = 1000356000,\n    VK_STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA = 1000364000,\n    VK_STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA = 1000364001,\n    VK_STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA = 1000364002,\n    VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA = 1000365000,\n    VK_STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA = 1000365001,\n    VK_STRUCTURE_TYPE_BUFFER_COLLECTION_CREATE_INFO_FUCHSIA = 1000366000,\n    VK_STRUCTURE_TYPE_IMPORT_MEMORY_BUFFER_COLLECTION_FUCHSIA = 1000366001,\n    VK_STRUCTURE_TYPE_BUFFER_COLLECTION_IMAGE_CREATE_INFO_FUCHSIA = 1000366002,\n    VK_STRUCTURE_TYPE_BUFFER_COLLECTION_PROPERTIES_FUCHSIA = 1000366003,\n    VK_STRUCTURE_TYPE_BUFFER_CONSTRAINTS_INFO_FUCHSIA = 1000366004,\n    VK_STRUCTURE_TYPE_BUFFER_COLLECTION_BUFFER_CREATE_INFO_FUCHSIA = 1000366005,\n    VK_STRUCTURE_TYPE_IMAGE_CONSTRAINTS_INFO_FUCHSIA = 1000366006,\n    VK_STRUCTURE_TYPE_IMAGE_FORMAT_CONSTRAINTS_INFO_FUCHSIA = 1000366007,\n    VK_STRUCTURE_TYPE_SYSMEM_COLOR_SPACE_FUCHSIA = 1000366008,\n    VK_STRUCTURE_TYPE_BUFFER_COLLECTION_CONSTRAINTS_INFO_FUCHSIA = 1000366009,\n    VK_STRUCTURE_TYPE_SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI = 1000369000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI = 1000369001,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI = 1000369002,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI = 1000370000,\n    VK_STRUCTURE_TYPE_MEMORY_GET_REMOTE_ADDRESS_INFO_NV = 1000371000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV = 1000371001,\n    VK_STRUCTURE_TYPE_PIPELINE_PROPERTIES_IDENTIFIER_EXT = 1000372000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT = 1000372001,\n    VK_STRUCTURE_TYPE_IMPORT_MEMORY_SCI_BUF_INFO_NV = 1000374000,\n    VK_STRUCTURE_TYPE_EXPORT_MEMORY_SCI_BUF_INFO_NV = 1000374001,\n    VK_STRUCTURE_TYPE_MEMORY_GET_SCI_BUF_INFO_NV = 1000374002,\n    VK_STRUCTURE_TYPE_MEMORY_SCI_BUF_PROPERTIES_NV = 1000374003,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCI_BUF_FEATURES_NV = 1000374004,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAME_BOUNDARY_FEATURES_EXT = 1000375000,\n    VK_STRUCTURE_TYPE_FRAME_BOUNDARY_EXT = 1000375001,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT = 1000376000,\n    VK_STRUCTURE_TYPE_SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT = 1000376001,\n    VK_STRUCTURE_TYPE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_INFO_EXT = 1000376002,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT = 1000377000,\n    VK_STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX = 1000378000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT = 1000381000,\n    VK_STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT = 1000381001,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT = 1000382000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR = 1000386000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_UNTYPED_POINTERS_FEATURES_KHR = 1000387000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_RGB_CONVERSION_FEATURES_VALVE = 1000390000,\n    VK_STRUCTURE_TYPE_VIDEO_ENCODE_RGB_CONVERSION_CAPABILITIES_VALVE = 1000390001,\n    VK_STRUCTURE_TYPE_VIDEO_ENCODE_PROFILE_RGB_CONVERSION_INFO_VALVE = 1000390002,\n    VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_RGB_CONVERSION_CREATE_INFO_VALVE = 1000390003,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT = 1000391000,\n    VK_STRUCTURE_TYPE_IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT = 1000391001,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT = 1000392000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT = 1000392001,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT = 1000393000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT = 1000395000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_PROPERTIES_EXT = 1000395001,\n    VK_STRUCTURE_TYPE_MICROMAP_BUILD_INFO_EXT = 1000396000,\n    VK_STRUCTURE_TYPE_MICROMAP_VERSION_INFO_EXT = 1000396001,\n    VK_STRUCTURE_TYPE_COPY_MICROMAP_INFO_EXT = 1000396002,\n    VK_STRUCTURE_TYPE_COPY_MICROMAP_TO_MEMORY_INFO_EXT = 1000396003,\n    VK_STRUCTURE_TYPE_COPY_MEMORY_TO_MICROMAP_INFO_EXT = 1000396004,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_EXT = 1000396005,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_EXT = 1000396006,\n    VK_STRUCTURE_TYPE_MICROMAP_CREATE_INFO_EXT = 1000396007,\n    VK_STRUCTURE_TYPE_MICROMAP_BUILD_SIZES_INFO_EXT = 1000396008,\n    VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT = 1000396009,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI = 1000404000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI = 1000404001,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_VRS_FEATURES_HUAWEI = 1000404002,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT = 1000411000,\n    VK_STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT = 1000411001,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT = 1000412000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_ARM = 1000415000,\n    VK_STRUCTURE_TYPE_DEVICE_QUEUE_SHADER_CORE_CONTROL_CREATE_INFO_ARM = 1000417000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_FEATURES_ARM = 1000417001,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_PROPERTIES_ARM = 1000417002,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT = 1000418000,\n    VK_STRUCTURE_TYPE_IMAGE_VIEW_SLICED_CREATE_INFO_EXT = 1000418001,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE = 1000420000,\n    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_BINDING_REFERENCE_VALVE = 1000420001,\n    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE = 1000420002,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT = 1000422000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_FEATURES_ARM = 1000424000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_PROPERTIES_ARM = 1000424001,\n    VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_BEGIN_INFO_ARM = 1000424002,\n    VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_INFO_ARM = 1000424003,\n    VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_SUBMIT_INFO_ARM = 1000424004,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_COMPUTE_FEATURES_NV = 1000428000,\n    VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_INDIRECT_BUFFER_INFO_NV = 1000428001,\n    VK_STRUCTURE_TYPE_PIPELINE_INDIRECT_DEVICE_ADDRESS_INFO_NV = 1000428002,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_LINEAR_SWEPT_SPHERES_FEATURES_NV = 1000429008,\n    VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_LINEAR_SWEPT_SPHERES_DATA_NV = 1000429009,\n    VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_SPHERES_DATA_NV = 1000429010,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV = 1000430000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MAXIMAL_RECONVERGENCE_FEATURES_KHR = 1000434000,\n    VK_STRUCTURE_TYPE_APPLICATION_PARAMETERS_EXT = 1000435000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT = 1000437000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM = 1000440000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM = 1000440001,\n    VK_STRUCTURE_TYPE_IMAGE_VIEW_SAMPLE_WEIGHT_CREATE_INFO_QCOM = 1000440002,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_FEATURES_EXT = 1000451000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_PROPERTIES_EXT = 1000451001,\n    VK_STRUCTURE_TYPE_NATIVE_BUFFER_USAGE_OHOS = 1000452000,\n    VK_STRUCTURE_TYPE_NATIVE_BUFFER_PROPERTIES_OHOS = 1000452001,\n    VK_STRUCTURE_TYPE_NATIVE_BUFFER_FORMAT_PROPERTIES_OHOS = 1000452002,\n    VK_STRUCTURE_TYPE_IMPORT_NATIVE_BUFFER_INFO_OHOS = 1000452003,\n    VK_STRUCTURE_TYPE_MEMORY_GET_NATIVE_BUFFER_INFO_OHOS = 1000452004,\n    VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_OHOS = 1000452005,\n    VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT = 1000453000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT = 1000455000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT = 1000455001,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT = 1000458000,\n    VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_CONTROL_EXT = 1000458001,\n    VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_FEEDBACK_CREATE_INFO_EXT = 1000458002,\n    VK_STRUCTURE_TYPE_RENDER_PASS_SUBPASS_FEEDBACK_CREATE_INFO_EXT = 1000458003,\n    VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_INFO_LUNARG = 1000459000,\n    VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_LIST_LUNARG = 1000459001,\n    VK_STRUCTURE_TYPE_TENSOR_CREATE_INFO_ARM = 1000460000,\n    VK_STRUCTURE_TYPE_TENSOR_VIEW_CREATE_INFO_ARM = 1000460001,\n    VK_STRUCTURE_TYPE_BIND_TENSOR_MEMORY_INFO_ARM = 1000460002,\n    VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_TENSOR_ARM = 1000460003,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_PROPERTIES_ARM = 1000460004,\n    VK_STRUCTURE_TYPE_TENSOR_FORMAT_PROPERTIES_ARM = 1000460005,\n    VK_STRUCTURE_TYPE_TENSOR_DESCRIPTION_ARM = 1000460006,\n    VK_STRUCTURE_TYPE_TENSOR_MEMORY_REQUIREMENTS_INFO_ARM = 1000460007,\n    VK_STRUCTURE_TYPE_TENSOR_MEMORY_BARRIER_ARM = 1000460008,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_FEATURES_ARM = 1000460009,\n    VK_STRUCTURE_TYPE_DEVICE_TENSOR_MEMORY_REQUIREMENTS_ARM = 1000460010,\n    VK_STRUCTURE_TYPE_COPY_TENSOR_INFO_ARM = 1000460011,\n    VK_STRUCTURE_TYPE_TENSOR_COPY_ARM = 1000460012,\n    VK_STRUCTURE_TYPE_TENSOR_DEPENDENCY_INFO_ARM = 1000460013,\n    VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_TENSOR_ARM = 1000460014,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_TENSOR_INFO_ARM = 1000460015,\n    VK_STRUCTURE_TYPE_EXTERNAL_TENSOR_PROPERTIES_ARM = 1000460016,\n    VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_TENSOR_CREATE_INFO_ARM = 1000460017,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_FEATURES_ARM = 1000460018,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_PROPERTIES_ARM = 1000460019,\n    VK_STRUCTURE_TYPE_DESCRIPTOR_GET_TENSOR_INFO_ARM = 1000460020,\n    VK_STRUCTURE_TYPE_TENSOR_CAPTURE_DESCRIPTOR_DATA_INFO_ARM = 1000460021,\n    VK_STRUCTURE_TYPE_TENSOR_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_ARM = 1000460022,\n    VK_STRUCTURE_TYPE_FRAME_BOUNDARY_TENSORS_ARM = 1000460023,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT = 1000462000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT = 1000462001,\n    VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_MODULE_IDENTIFIER_CREATE_INFO_EXT = 1000462002,\n    VK_STRUCTURE_TYPE_SHADER_MODULE_IDENTIFIER_EXT = 1000462003,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT = 1000342000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_FEATURES_NV = 1000464000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_PROPERTIES_NV = 1000464001,\n    VK_STRUCTURE_TYPE_OPTICAL_FLOW_IMAGE_FORMAT_INFO_NV = 1000464002,\n    VK_STRUCTURE_TYPE_OPTICAL_FLOW_IMAGE_FORMAT_PROPERTIES_NV = 1000464003,\n    VK_STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_INFO_NV = 1000464004,\n    VK_STRUCTURE_TYPE_OPTICAL_FLOW_EXECUTE_INFO_NV = 1000464005,\n    VK_STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_PRIVATE_DATA_INFO_NV = 1000464010,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT = 1000465000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_FEATURES_ANDROID = 1000468000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_PROPERTIES_ANDROID = 1000468001,\n    VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_RESOLVE_PROPERTIES_ANDROID = 1000468002,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ANTI_LAG_FEATURES_AMD = 1000476000,\n    VK_STRUCTURE_TYPE_ANTI_LAG_DATA_AMD = 1000476001,\n    VK_STRUCTURE_TYPE_ANTI_LAG_PRESENTATION_INFO_AMD = 1000476002,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DENSE_GEOMETRY_FORMAT_FEATURES_AMDX = 1000478000,\n    VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DENSE_GEOMETRY_FORMAT_TRIANGLES_DATA_AMDX = 1000478001,\n    VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_ID_2_KHR = 1000479000,\n    VK_STRUCTURE_TYPE_PRESENT_ID_2_KHR = 1000479001,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_2_FEATURES_KHR = 1000479002,\n    VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_WAIT_2_KHR = 1000480000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_2_FEATURES_KHR = 1000480001,\n    VK_STRUCTURE_TYPE_PRESENT_WAIT_2_INFO_KHR = 1000480002,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR = 1000481000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT = 1000482000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT = 1000482001,\n    VK_STRUCTURE_TYPE_SHADER_CREATE_INFO_EXT = 1000482002,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_FEATURES_KHR = 1000483000,\n    VK_STRUCTURE_TYPE_PIPELINE_BINARY_CREATE_INFO_KHR = 1000483001,\n    VK_STRUCTURE_TYPE_PIPELINE_BINARY_INFO_KHR = 1000483002,\n    VK_STRUCTURE_TYPE_PIPELINE_BINARY_KEY_KHR = 1000483003,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_PROPERTIES_KHR = 1000483004,\n    VK_STRUCTURE_TYPE_RELEASE_CAPTURED_PIPELINE_DATA_INFO_KHR = 1000483005,\n    VK_STRUCTURE_TYPE_PIPELINE_BINARY_DATA_INFO_KHR = 1000483006,\n    VK_STRUCTURE_TYPE_PIPELINE_CREATE_INFO_KHR = 1000483007,\n    VK_STRUCTURE_TYPE_DEVICE_PIPELINE_BINARY_INTERNAL_CACHE_CONTROL_KHR = 1000483008,\n    VK_STRUCTURE_TYPE_PIPELINE_BINARY_HANDLES_INFO_KHR = 1000483009,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM = 1000484000,\n    VK_STRUCTURE_TYPE_TILE_PROPERTIES_QCOM = 1000484001,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_AMIGO_PROFILING_FEATURES_SEC = 1000485000,\n    VK_STRUCTURE_TYPE_AMIGO_PROFILING_SUBMIT_INFO_SEC = 1000485001,\n    VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_KHR = 1000274000,\n    VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_KHR = 1000274001,\n    VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_KHR = 1000274002,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_KHR = 1000275000,\n    VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_KHR = 1000275001,\n    VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_KHR = 1000275002,\n    VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_KHR = 1000275003,\n    VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_KHR = 1000275004,\n    VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_KHR = 1000275005,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM = 1000488000,\n    VK_STRUCTURE_TYPE_SEMAPHORE_SCI_SYNC_POOL_CREATE_INFO_NV = 1000489000,\n    VK_STRUCTURE_TYPE_SEMAPHORE_SCI_SYNC_CREATE_INFO_NV = 1000489001,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SCI_SYNC_2_FEATURES_NV = 1000489002,\n    VK_STRUCTURE_TYPE_IMPORT_FENCE_SCI_SYNC_INFO_NV = 1000373000,\n    VK_STRUCTURE_TYPE_EXPORT_FENCE_SCI_SYNC_INFO_NV = 1000373001,\n    VK_STRUCTURE_TYPE_FENCE_GET_SCI_SYNC_INFO_NV = 1000373002,\n    VK_STRUCTURE_TYPE_SCI_SYNC_ATTRIBUTES_INFO_NV = 1000373003,\n    VK_STRUCTURE_TYPE_DEVICE_SEMAPHORE_SCI_SYNC_POOL_RESERVATION_CREATE_INFO_NV = 1000489003,\n    VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_SCI_SYNC_INFO_NV = 1000373004,\n    VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_SCI_SYNC_INFO_NV = 1000373005,\n    VK_STRUCTURE_TYPE_SEMAPHORE_GET_SCI_SYNC_INFO_NV = 1000373006,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SCI_SYNC_FEATURES_NV = 1000373007,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_VECTOR_FEATURES_NV = 1000491000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_VECTOR_PROPERTIES_NV = 1000491001,\n    VK_STRUCTURE_TYPE_COOPERATIVE_VECTOR_PROPERTIES_NV = 1000491002,\n    VK_STRUCTURE_TYPE_CONVERT_COOPERATIVE_VECTOR_MATRIX_INFO_NV = 1000491004,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_FEATURES_NV = 1000492000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_PROPERTIES_NV = 1000492001,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT = 1000351000,\n    VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT = 1000351002,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_FEATURES_EXT = 1000495000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_PROPERTIES_EXT = 1000495001,\n    VK_STRUCTURE_TYPE_LAYER_SETTINGS_CREATE_INFO_EXT = 1000496000,\n    VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT = 1000061000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM = 1000497000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM = 1000497001,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT = 1000498000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT = 1000499000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INTERNALLY_SYNCHRONIZED_QUEUES_FEATURES_KHR = 1000504000,\n    VK_STRUCTURE_TYPE_LATENCY_SLEEP_MODE_INFO_NV = 1000505000,\n    VK_STRUCTURE_TYPE_LATENCY_SLEEP_INFO_NV = 1000505001,\n    VK_STRUCTURE_TYPE_SET_LATENCY_MARKER_INFO_NV = 1000505002,\n    VK_STRUCTURE_TYPE_GET_LATENCY_MARKER_INFO_NV = 1000505003,\n    VK_STRUCTURE_TYPE_LATENCY_TIMINGS_FRAME_REPORT_NV = 1000505004,\n    VK_STRUCTURE_TYPE_LATENCY_SUBMISSION_PRESENT_ID_NV = 1000505005,\n    VK_STRUCTURE_TYPE_OUT_OF_BAND_QUEUE_TYPE_INFO_NV = 1000505006,\n    VK_STRUCTURE_TYPE_SWAPCHAIN_LATENCY_CREATE_INFO_NV = 1000505007,\n    VK_STRUCTURE_TYPE_LATENCY_SURFACE_CAPABILITIES_NV = 1000505008,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_KHR = 1000506000,\n    VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_KHR = 1000506001,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_KHR = 1000506002,\n    VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CREATE_INFO_ARM = 1000507000,\n    VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_CREATE_INFO_ARM = 1000507001,\n    VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_RESOURCE_INFO_ARM = 1000507002,\n    VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CONSTANT_ARM = 1000507003,\n    VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_MEMORY_REQUIREMENTS_INFO_ARM = 1000507004,\n    VK_STRUCTURE_TYPE_BIND_DATA_GRAPH_PIPELINE_SESSION_MEMORY_INFO_ARM = 1000507005,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_FEATURES_ARM = 1000507006,\n    VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SHADER_MODULE_CREATE_INFO_ARM = 1000507007,\n    VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_PROPERTY_QUERY_RESULT_ARM = 1000507008,\n    VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_INFO_ARM = 1000507009,\n    VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_COMPILER_CONTROL_CREATE_INFO_ARM = 1000507010,\n    VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENTS_INFO_ARM = 1000507011,\n    VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENT_ARM = 1000507012,\n    VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_IDENTIFIER_CREATE_INFO_ARM = 1000507013,\n    VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_DISPATCH_INFO_ARM = 1000507014,\n    VK_STRUCTURE_TYPE_DATA_GRAPH_PROCESSING_ENGINE_CREATE_INFO_ARM = 1000507016,\n    VK_STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_PROPERTIES_ARM = 1000507017,\n    VK_STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_PROPERTIES_ARM = 1000507018,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_INFO_ARM = 1000507019,\n    VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CONSTANT_TENSOR_SEMI_STRUCTURED_SPARSITY_INFO_ARM = 1000507015,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM = 1000510000,\n    VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_RENDER_AREAS_RENDER_PASS_BEGIN_INFO_QCOM = 1000510001,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_KHR = 1000201000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_PROPERTIES_KHR = 1000511000,\n    VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_CAPABILITIES_KHR = 1000512000,\n    VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PICTURE_INFO_KHR = 1000512001,\n    VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PROFILE_INFO_KHR = 1000512003,\n    VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000512004,\n    VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_DPB_SLOT_INFO_KHR = 1000512005,\n    VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_CAPABILITIES_KHR = 1000513000,\n    VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000513001,\n    VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_PICTURE_INFO_KHR = 1000513002,\n    VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_DPB_SLOT_INFO_KHR = 1000513003,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_AV1_FEATURES_KHR = 1000513004,\n    VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_PROFILE_INFO_KHR = 1000513005,\n    VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_RATE_CONTROL_INFO_KHR = 1000513006,\n    VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_RATE_CONTROL_LAYER_INFO_KHR = 1000513007,\n    VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_QUALITY_LEVEL_PROPERTIES_KHR = 1000513008,\n    VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_SESSION_CREATE_INFO_KHR = 1000513009,\n    VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_GOP_REMAINING_FRAME_INFO_KHR = 1000513010,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_DECODE_VP9_FEATURES_KHR = 1000514000,\n    VK_STRUCTURE_TYPE_VIDEO_DECODE_VP9_CAPABILITIES_KHR = 1000514001,\n    VK_STRUCTURE_TYPE_VIDEO_DECODE_VP9_PICTURE_INFO_KHR = 1000514002,\n    VK_STRUCTURE_TYPE_VIDEO_DECODE_VP9_PROFILE_INFO_KHR = 1000514003,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_MAINTENANCE_1_FEATURES_KHR = 1000515000,\n    VK_STRUCTURE_TYPE_VIDEO_INLINE_QUERY_INFO_KHR = 1000515001,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PER_STAGE_DESCRIPTOR_SET_FEATURES_NV = 1000516000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_FEATURES_QCOM = 1000518000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_PROPERTIES_QCOM = 1000518001,\n    VK_STRUCTURE_TYPE_SAMPLER_BLOCK_MATCH_WINDOW_CREATE_INFO_QCOM = 1000518002,\n    VK_STRUCTURE_TYPE_SAMPLER_CUBIC_WEIGHTS_CREATE_INFO_QCOM = 1000519000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_WEIGHTS_FEATURES_QCOM = 1000519001,\n    VK_STRUCTURE_TYPE_BLIT_IMAGE_CUBIC_WEIGHTS_INFO_QCOM = 1000519002,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_DEGAMMA_FEATURES_QCOM = 1000520000,\n    VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_YCBCR_DEGAMMA_CREATE_INFO_QCOM = 1000520001,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_CLAMP_FEATURES_QCOM = 1000521000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_FEATURES_EXT = 1000524000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT = 1000190000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFIED_IMAGE_LAYOUTS_FEATURES_KHR = 1000527000,\n    VK_STRUCTURE_TYPE_ATTACHMENT_FEEDBACK_LOOP_INFO_EXT = 1000527001,\n    VK_STRUCTURE_TYPE_SCREEN_BUFFER_PROPERTIES_QNX = 1000529000,\n    VK_STRUCTURE_TYPE_SCREEN_BUFFER_FORMAT_PROPERTIES_QNX = 1000529001,\n    VK_STRUCTURE_TYPE_IMPORT_SCREEN_BUFFER_INFO_QNX = 1000529002,\n    VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_QNX = 1000529003,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCREEN_BUFFER_FEATURES_QNX = 1000529004,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_DRIVER_PROPERTIES_MSFT = 1000530000,\n    VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_KHR = 1000184000,\n    VK_STRUCTURE_TYPE_SET_DESCRIPTOR_BUFFER_OFFSETS_INFO_EXT = 1000545007,\n    VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_BUFFER_EMBEDDED_SAMPLERS_INFO_EXT = 1000545008,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_POOL_OVERALLOCATION_FEATURES_NV = 1000546000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_FEATURES_QCOM = 1000547000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_PROPERTIES_QCOM = 1000547001,\n    VK_STRUCTURE_TYPE_TILE_MEMORY_REQUIREMENTS_QCOM = 1000547002,\n    VK_STRUCTURE_TYPE_TILE_MEMORY_BIND_INFO_QCOM = 1000547003,\n    VK_STRUCTURE_TYPE_TILE_MEMORY_SIZE_INFO_QCOM = 1000547004,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_KHR = 1000549000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_KHR = 1000426001,\n    VK_STRUCTURE_TYPE_COPY_MEMORY_INDIRECT_INFO_KHR = 1000549002,\n    VK_STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INDIRECT_INFO_KHR = 1000549003,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV = 1000426000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_EXT = 1000427000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_EXT = 1000427001,\n    VK_STRUCTURE_TYPE_DECOMPRESS_MEMORY_INFO_EXT = 1000550002,\n    VK_STRUCTURE_TYPE_DISPLAY_SURFACE_STEREO_CREATE_INFO_NV = 1000551000,\n    VK_STRUCTURE_TYPE_DISPLAY_MODE_STEREO_PROPERTIES_NV = 1000551001,\n    VK_STRUCTURE_TYPE_VIDEO_ENCODE_INTRA_REFRESH_CAPABILITIES_KHR = 1000552000,\n    VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_INTRA_REFRESH_CREATE_INFO_KHR = 1000552001,\n    VK_STRUCTURE_TYPE_VIDEO_ENCODE_INTRA_REFRESH_INFO_KHR = 1000552002,\n    VK_STRUCTURE_TYPE_VIDEO_REFERENCE_INTRA_REFRESH_INFO_KHR = 1000552003,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_INTRA_REFRESH_FEATURES_KHR = 1000552004,\n    VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUANTIZATION_MAP_CAPABILITIES_KHR = 1000553000,\n    VK_STRUCTURE_TYPE_VIDEO_FORMAT_QUANTIZATION_MAP_PROPERTIES_KHR = 1000553001,\n    VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUANTIZATION_MAP_INFO_KHR = 1000553002,\n    VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUANTIZATION_MAP_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000553005,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_QUANTIZATION_MAP_FEATURES_KHR = 1000553009,\n    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_QUANTIZATION_MAP_CAPABILITIES_KHR = 1000553003,\n    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_QUANTIZATION_MAP_CAPABILITIES_KHR = 1000553004,\n    VK_STRUCTURE_TYPE_VIDEO_FORMAT_H265_QUANTIZATION_MAP_PROPERTIES_KHR = 1000553006,\n    VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_QUANTIZATION_MAP_CAPABILITIES_KHR = 1000553007,\n    VK_STRUCTURE_TYPE_VIDEO_FORMAT_AV1_QUANTIZATION_MAP_PROPERTIES_KHR = 1000553008,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAW_ACCESS_CHAINS_FEATURES_NV = 1000555000,\n    VK_STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_DEVICE_CREATE_INFO_NV = 1000556000,\n    VK_STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_CREATE_INFO_NV = 1000556001,\n    VK_STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_DATA_PARAMS_NV = 1000556002,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_COMPUTE_QUEUE_PROPERTIES_NV = 1000556003,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_RELAXED_EXTENDED_INSTRUCTION_FEATURES_KHR = 1000558000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMMAND_BUFFER_INHERITANCE_FEATURES_NV = 1000559000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_FEATURES_KHR = 1000562000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_PROPERTIES_KHR = 1000562001,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_LIST_KHR = 1000562002,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_KHR = 1000562003,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_VULKAN_PROPERTIES_KHR = 1000562004,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT16_VECTOR_FEATURES_NV = 1000563000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_REPLICATED_COMPOSITES_FEATURES_EXT = 1000564000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT8_FEATURES_EXT = 1000567000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_VALIDATION_FEATURES_NV = 1000568000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_ACCELERATION_STRUCTURE_FEATURES_NV = 1000569000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_ACCELERATION_STRUCTURE_PROPERTIES_NV = 1000569001,\n    VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_CLUSTERS_BOTTOM_LEVEL_INPUT_NV = 1000569002,\n    VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_TRIANGLE_CLUSTER_INPUT_NV = 1000569003,\n    VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_MOVE_OBJECTS_INPUT_NV = 1000569004,\n    VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_INPUT_INFO_NV = 1000569005,\n    VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_COMMANDS_INFO_NV = 1000569006,\n    VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CLUSTER_ACCELERATION_STRUCTURE_CREATE_INFO_NV = 1000569007,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_FEATURES_NV = 1000397000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_PROPERTIES_NV = 1000397001,\n    VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_DISPLACEMENT_MICROMAP_NV = 1000397002,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PARTITIONED_ACCELERATION_STRUCTURE_FEATURES_NV = 1000570000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PARTITIONED_ACCELERATION_STRUCTURE_PROPERTIES_NV = 1000570001,\n    VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_PARTITIONED_ACCELERATION_STRUCTURE_NV = 1000570002,\n    VK_STRUCTURE_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCES_INPUT_NV = 1000570003,\n    VK_STRUCTURE_TYPE_BUILD_PARTITIONED_ACCELERATION_STRUCTURE_INFO_NV = 1000570004,\n    VK_STRUCTURE_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_FLAGS_NV = 1000570005,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXT = 1000572000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXT = 1000572001,\n    VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXT = 1000572002,\n    VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_CREATE_INFO_EXT = 1000572003,\n    VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXT = 1000572004,\n    VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXT = 1000572006,\n    VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXT = 1000572007,\n    VK_STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXT = 1000572008,\n    VK_STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_SHADER_EXT = 1000572009,\n    VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXT = 1000572010,\n    VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXT = 1000572011,\n    VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXT = 1000572012,\n    VK_STRUCTURE_TYPE_GENERATED_COMMANDS_PIPELINE_INFO_EXT = 1000572013,\n    VK_STRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT = 1000572014,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_8_FEATURES_KHR = 1000574000,\n    VK_STRUCTURE_TYPE_MEMORY_BARRIER_ACCESS_FLAGS_3_KHR = 1000574002,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_FEATURES_MESA = 1000575000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_PROPERTIES_MESA = 1000575001,\n    VK_STRUCTURE_TYPE_IMAGE_ALIGNMENT_CONTROL_CREATE_INFO_MESA = 1000575002,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FMA_FEATURES_KHR = 1000579000,\n    VK_STRUCTURE_TYPE_PUSH_CONSTANT_BANK_INFO_NV = 1000580000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_CONSTANT_BANK_FEATURES_NV = 1000580001,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_CONSTANT_BANK_PROPERTIES_NV = 1000580002,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_EXT = 1000581000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_EXT = 1000581001,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV = 1000490000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV = 1000490001,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_CONTROL_FEATURES_EXT = 1000582000,\n    VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLAMP_CONTROL_CREATE_INFO_EXT = 1000582001,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_ROBUSTNESS_FEATURES_EXT = 1000608000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_FEATURES_KHR = 1000584000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_PROPERTIES_KHR = 1000584001,\n    VK_STRUCTURE_TYPE_QUEUE_FAMILY_OWNERSHIP_TRANSFER_PROPERTIES_KHR = 1000584002,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_MAINTENANCE_2_FEATURES_KHR = 1000586000,\n    VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_INLINE_SESSION_PARAMETERS_INFO_KHR = 1000586001,\n    VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_INLINE_SESSION_PARAMETERS_INFO_KHR = 1000586002,\n    VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_INLINE_SESSION_PARAMETERS_INFO_KHR = 1000586003,\n    VK_STRUCTURE_TYPE_SURFACE_CREATE_INFO_OHOS = 1000685000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HDR_VIVID_FEATURES_HUAWEI = 1000590000,\n    VK_STRUCTURE_TYPE_HDR_VIVID_DYNAMIC_METADATA_HUAWEI = 1000590001,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_FEATURES_NV = 1000593000,\n    VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_FLEXIBLE_DIMENSIONS_PROPERTIES_NV = 1000593001,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_PROPERTIES_NV = 1000593002,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_OPACITY_MICROMAP_FEATURES_ARM = 1000596000,\n    VK_STRUCTURE_TYPE_IMPORT_MEMORY_METAL_HANDLE_INFO_EXT = 1000602000,\n    VK_STRUCTURE_TYPE_MEMORY_METAL_HANDLE_PROPERTIES_EXT = 1000602001,\n    VK_STRUCTURE_TYPE_MEMORY_GET_METAL_HANDLE_INFO_EXT = 1000602002,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_KHR = 1000421000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_COUNTERS_BY_REGION_FEATURES_ARM = 1000605000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_COUNTERS_BY_REGION_PROPERTIES_ARM = 1000605001,\n    VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_ARM = 1000605002,\n    VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_ARM = 1000605003,\n    VK_STRUCTURE_TYPE_RENDER_PASS_PERFORMANCE_COUNTERS_BY_REGION_BEGIN_INFO_ARM = 1000605004,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INSTRUMENTATION_FEATURES_ARM = 1000607000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INSTRUMENTATION_PROPERTIES_ARM = 1000607001,\n    VK_STRUCTURE_TYPE_SHADER_INSTRUMENTATION_CREATE_INFO_ARM = 1000607002,\n    VK_STRUCTURE_TYPE_SHADER_INSTRUMENTATION_METRIC_DESCRIPTION_ARM = 1000607003,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FORMAT_PACK_FEATURES_ARM = 1000609000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_FEATURES_VALVE = 1000611000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_PROPERTIES_VALVE = 1000611001,\n    VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_DENSITY_MAP_LAYERED_CREATE_INFO_VALVE = 1000611002,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_KHR = 1000286000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_KHR = 1000286001,\n    VK_STRUCTURE_TYPE_SET_PRESENT_CONFIG_NV = 1000613000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_METERING_FEATURES_NV = 1000613001,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_EXT = 1000425000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_EXT = 1000425001,\n    VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_EXT = 1000425002,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_DEVICE_MEMORY_FEATURES_EXT = 1000620000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_KHR = 1000361000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_64_BIT_INDEXING_FEATURES_EXT = 1000627000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_RESOLVE_FEATURES_EXT = 1000628000,\n    VK_STRUCTURE_TYPE_BEGIN_CUSTOM_RESOLVE_INFO_EXT = 1000628001,\n    VK_STRUCTURE_TYPE_CUSTOM_RESOLVE_CREATE_INFO_EXT = 1000628002,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_MODEL_FEATURES_QCOM = 1000629000,\n    VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_BUILTIN_MODEL_CREATE_INFO_QCOM = 1000629001,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_10_FEATURES_KHR = 1000630000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_10_PROPERTIES_KHR = 1000630001,\n    VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_FLAGS_INFO_KHR = 1000630002,\n    VK_STRUCTURE_TYPE_RENDERING_END_INFO_KHR = 1000619003,\n    VK_STRUCTURE_TYPE_RESOLVE_IMAGE_MODE_INFO_KHR = 1000630004,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_LONG_VECTOR_FEATURES_EXT = 1000635000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_LONG_VECTOR_PROPERTIES_EXT = 1000635001,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CACHE_INCREMENTAL_MODE_FEATURES_SEC = 1000637000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_UNIFORM_BUFFER_UNSIZED_ARRAY_FEATURES_EXT = 1000642000,\n    VK_STRUCTURE_TYPE_COMPUTE_OCCUPANCY_PRIORITY_PARAMETERS_NV = 1000645000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_OCCUPANCY_PRIORITY_FEATURES_NV = 1000645001,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_PARTITIONED_FEATURES_EXT = 1000662000,\n    VK_STRUCTURE_TYPE_UBM_SURFACE_CREATE_INFO_SEC = 1000664000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MIXED_FLOAT_DOT_PRODUCT_FEATURES_VALVE = 1000673000,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES,\n    VK_STRUCTURE_TYPE_RENDERING_INFO_KHR = VK_STRUCTURE_TYPE_RENDERING_INFO,\n    VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO_KHR = VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO,\n    VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES,\n    VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR = VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO,\n    VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2,\n    VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2,\n    VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR = VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2,\n    VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR = VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2,\n    VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR = VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2,\n    VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO,\n    VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO,\n    VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO,\n    VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO,\n    VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO,\n    VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO,\n    VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES,\n    VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES,\n    VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO,\n    VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR = VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO,\n    VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR = VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES,\n    VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO,\n    VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO,\n    VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO,\n    VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR = VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES,\n    VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES,\n    VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO,\n    VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES,\n    VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO,\n    VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR = VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO,\n    VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR = VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO,\n    VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2,\n    VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2,\n    VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2,\n    VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2,\n    VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2,\n    VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR = VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO,\n    VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR = VK_STRUCTURE_TYPE_SUBPASS_END_INFO,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO,\n    VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR = VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES,\n    VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES,\n    VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO,\n    VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO,\n    VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR,\n    VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS,\n    VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO,\n    VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES,\n    VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES,\n    VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK,\n    VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO,\n    VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR = VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2,\n    VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR = VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2,\n    VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR = VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2,\n    VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR = VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2,\n    VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR = VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2,\n    VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO,\n    VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_NV = VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD,\n    VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO,\n    VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO,\n    VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR = VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO,\n    VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR = VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES,\n    VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES,\n    VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO,\n    VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO,\n    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES,\n    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO,\n    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES,\n    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES,\n    VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT = VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES,\n    VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES,\n    VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR = VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES,\n    VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO,\n    VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES,\n    VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES,\n    VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO,\n    VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR = VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO,\n    VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR = VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO,\n    VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR = VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO,\n    VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL = VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES,\n    VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES,\n    VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO_KHR = VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO,\n    VK_STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO_KHR = VK_STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES,\n    VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT,\n    VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES,\n    VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES,\n    VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_KHR = VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO,\n    VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO,\n    VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR = VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO,\n    VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT,\n    VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT = VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES,\n    VK_STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY_EXT = VK_STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY,\n    VK_STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY_EXT = VK_STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY,\n    VK_STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO_EXT = VK_STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO,\n    VK_STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO_EXT = VK_STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO,\n    VK_STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO_EXT = VK_STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO,\n    VK_STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO_EXT = VK_STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO,\n    VK_STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE_EXT = VK_STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE,\n    VK_STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT = VK_STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY,\n    VK_STRUCTURE_TYPE_MEMORY_MAP_INFO_KHR = VK_STRUCTURE_TYPE_MEMORY_MAP_INFO,\n    VK_STRUCTURE_TYPE_MEMORY_UNMAP_INFO_KHR = VK_STRUCTURE_TYPE_MEMORY_UNMAP_INFO,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES,\n    VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO,\n    VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES,\n    VK_STRUCTURE_TYPE_MEMORY_BARRIER_2_KHR = VK_STRUCTURE_TYPE_MEMORY_BARRIER_2,\n    VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2_KHR = VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2,\n    VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2_KHR = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2,\n    VK_STRUCTURE_TYPE_DEPENDENCY_INFO_KHR = VK_STRUCTURE_TYPE_DEPENDENCY_INFO,\n    VK_STRUCTURE_TYPE_SUBMIT_INFO_2_KHR = VK_STRUCTURE_TYPE_SUBMIT_INFO_2,\n    VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO_KHR = VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO,\n    VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO_KHR = VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES,\n    VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2_KHR = VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2,\n    VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR = VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2,\n    VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2_KHR = VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2,\n    VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2_KHR = VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2,\n    VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2_KHR = VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2,\n    VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2_KHR = VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2,\n    VK_STRUCTURE_TYPE_BUFFER_COPY_2_KHR = VK_STRUCTURE_TYPE_BUFFER_COPY_2,\n    VK_STRUCTURE_TYPE_IMAGE_COPY_2_KHR = VK_STRUCTURE_TYPE_IMAGE_COPY_2,\n    VK_STRUCTURE_TYPE_IMAGE_BLIT_2_KHR = VK_STRUCTURE_TYPE_IMAGE_BLIT_2,\n    VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR = VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2,\n    VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR = VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2,\n    VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_EXT = VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2,\n    VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_EXT = VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2,\n    VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3_KHR = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3,\n    VK_STRUCTURE_TYPE_PIPELINE_INFO_EXT = VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SCI_BUF_FEATURES_NV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCI_BUF_FEATURES_NV,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES,\n    VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS_KHR = VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS,\n    VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS_KHR = VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_ARM = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES,\n    VK_STRUCTURE_TYPE_RENDERING_AREA_INFO_KHR = VK_STRUCTURE_TYPE_RENDERING_AREA_INFO,\n    VK_STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO,\n    VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_KHR = VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2,\n    VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_KHR = VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2,\n    VK_STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO,\n    VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO,\n    VK_STRUCTURE_TYPE_SHADER_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO,\n    VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT = VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_KHR,\n    VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT = VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_KHR,\n    VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT = VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_KHR,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_KHR,\n    VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT = VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_KHR,\n    VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_KHR,\n    VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT = VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_KHR,\n    VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_KHR,\n    VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_EXT = VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_KHR,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT,\n    VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE = VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_KHR,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES,\n    VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES,\n    VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES,\n    VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES,\n    VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES,\n    VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT = VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_KHR,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES,\n    VK_STRUCTURE_TYPE_BIND_MEMORY_STATUS_KHR = VK_STRUCTURE_TYPE_BIND_MEMORY_STATUS,\n    VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO_KHR = VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO,\n    VK_STRUCTURE_TYPE_PUSH_CONSTANTS_INFO_KHR = VK_STRUCTURE_TYPE_PUSH_CONSTANTS_INFO,\n    VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO_KHR = VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO,\n    VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO_KHR = VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_KHR,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_EXT,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_EXT,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_KHR,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_KHR,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_KHR,\n    VK_STRUCTURE_TYPE_RENDERING_END_INFO_EXT = VK_STRUCTURE_TYPE_RENDERING_END_INFO_KHR,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_EXT,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_EXT,\n    VK_STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM = VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_EXT,\n    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_KHR,\n    VK_STRUCTURE_TYPE_MAX_ENUM = 0x7FFFFFFF\n} VkStructureType;\n\ntypedef enum\n{\n    VK_OBJECT_TYPE_UNKNOWN = 0,\n    VK_OBJECT_TYPE_INSTANCE = 1,\n    VK_OBJECT_TYPE_PHYSICAL_DEVICE = 2,\n    VK_OBJECT_TYPE_DEVICE = 3,\n    VK_OBJECT_TYPE_QUEUE = 4,\n    VK_OBJECT_TYPE_SEMAPHORE = 5,\n    VK_OBJECT_TYPE_COMMAND_BUFFER = 6,\n    VK_OBJECT_TYPE_FENCE = 7,\n    VK_OBJECT_TYPE_DEVICE_MEMORY = 8,\n    VK_OBJECT_TYPE_BUFFER = 9,\n    VK_OBJECT_TYPE_IMAGE = 10,\n    VK_OBJECT_TYPE_EVENT = 11,\n    VK_OBJECT_TYPE_QUERY_POOL = 12,\n    VK_OBJECT_TYPE_BUFFER_VIEW = 13,\n    VK_OBJECT_TYPE_IMAGE_VIEW = 14,\n    VK_OBJECT_TYPE_SHADER_MODULE = 15,\n    VK_OBJECT_TYPE_PIPELINE_CACHE = 16,\n    VK_OBJECT_TYPE_PIPELINE_LAYOUT = 17,\n    VK_OBJECT_TYPE_RENDER_PASS = 18,\n    VK_OBJECT_TYPE_PIPELINE = 19,\n    VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT = 20,\n    VK_OBJECT_TYPE_SAMPLER = 21,\n    VK_OBJECT_TYPE_DESCRIPTOR_POOL = 22,\n    VK_OBJECT_TYPE_DESCRIPTOR_SET = 23,\n    VK_OBJECT_TYPE_FRAMEBUFFER = 24,\n    VK_OBJECT_TYPE_COMMAND_POOL = 25,\n    VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE = 1000085000,\n    VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION = 1000156000,\n    VK_OBJECT_TYPE_PRIVATE_DATA_SLOT = 1000295000,\n    VK_OBJECT_TYPE_SURFACE_KHR = 1000000000,\n    VK_OBJECT_TYPE_SWAPCHAIN_KHR = 1000001000,\n    VK_OBJECT_TYPE_DISPLAY_KHR = 1000002000,\n    VK_OBJECT_TYPE_DISPLAY_MODE_KHR = 1000002001,\n    VK_OBJECT_TYPE_VIDEO_SESSION_KHR = 1000023000,\n    VK_OBJECT_TYPE_VIDEO_SESSION_PARAMETERS_KHR = 1000023001,\n    VK_OBJECT_TYPE_CU_MODULE_NVX = 1000029000,\n    VK_OBJECT_TYPE_CU_FUNCTION_NVX = 1000029001,\n    VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT = 1000128000,\n    VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT = 1000011000,\n    VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR = 1000150000,\n    VK_OBJECT_TYPE_VALIDATION_CACHE_EXT = 1000160000,\n    VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000,\n    VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL = 1000210000,\n    VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR = 1000268000,\n    VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV = 1000277000,\n    VK_OBJECT_TYPE_CUDA_MODULE_NV = 1000307000,\n    VK_OBJECT_TYPE_CUDA_FUNCTION_NV = 1000307001,\n    VK_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA = 1000366000,\n    VK_OBJECT_TYPE_MICROMAP_EXT = 1000396000,\n    VK_OBJECT_TYPE_TENSOR_ARM = 1000460000,\n    VK_OBJECT_TYPE_TENSOR_VIEW_ARM = 1000460001,\n    VK_OBJECT_TYPE_OPTICAL_FLOW_SESSION_NV = 1000464000,\n    VK_OBJECT_TYPE_SHADER_EXT = 1000482000,\n    VK_OBJECT_TYPE_PIPELINE_BINARY_KHR = 1000483000,\n    VK_OBJECT_TYPE_SEMAPHORE_SCI_SYNC_POOL_NV = 1000489000,\n    VK_OBJECT_TYPE_DATA_GRAPH_PIPELINE_SESSION_ARM = 1000507000,\n    VK_OBJECT_TYPE_EXTERNAL_COMPUTE_QUEUE_NV = 1000556000,\n    VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_EXT = 1000572000,\n    VK_OBJECT_TYPE_INDIRECT_EXECUTION_SET_EXT = 1000572001,\n    VK_OBJECT_TYPE_SHADER_INSTRUMENTATION_ARM = 1000607000,\n    VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE,\n    VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION,\n    VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT = VK_OBJECT_TYPE_PRIVATE_DATA_SLOT,\n    VK_OBJECT_TYPE_MAX_ENUM = 0x7FFFFFFF\n} VkObjectType;\n\ntypedef enum\n{\n    VK_VENDOR_ID_KHRONOS = 0x10000,\n    VK_VENDOR_ID_VIV = 0x10001,\n    VK_VENDOR_ID_VSI = 0x10002,\n    VK_VENDOR_ID_KAZAN = 0x10003,\n    VK_VENDOR_ID_CODEPLAY = 0x10004,\n    VK_VENDOR_ID_MESA = 0x10005,\n    VK_VENDOR_ID_POCL = 0x10006,\n    VK_VENDOR_ID_MOBILEYE = 0x10007,\n    VK_VENDOR_ID_MAX_ENUM = 0x7FFFFFFF\n} VkVendorId;\n\ntypedef enum\n{\n    VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0,\n    VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 1,\n    VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 2,\n    VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 3,\n    VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 4,\n    VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM = 0x7FFFFFFF\n} VkSystemAllocationScope;\n\ntypedef enum\n{\n    VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0,\n    VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM = 0x7FFFFFFF\n} VkInternalAllocationType;\n\ntypedef enum\n{\n    VK_FORMAT_UNDEFINED = 0,\n    VK_FORMAT_R4G4_UNORM_PACK8 = 1,\n    VK_FORMAT_R4G4B4A4_UNORM_PACK16 = 2,\n    VK_FORMAT_B4G4R4A4_UNORM_PACK16 = 3,\n    VK_FORMAT_R5G6B5_UNORM_PACK16 = 4,\n    VK_FORMAT_B5G6R5_UNORM_PACK16 = 5,\n    VK_FORMAT_R5G5B5A1_UNORM_PACK16 = 6,\n    VK_FORMAT_B5G5R5A1_UNORM_PACK16 = 7,\n    VK_FORMAT_A1R5G5B5_UNORM_PACK16 = 8,\n    VK_FORMAT_R8_UNORM = 9,\n    VK_FORMAT_R8_SNORM = 10,\n    VK_FORMAT_R8_USCALED = 11,\n    VK_FORMAT_R8_SSCALED = 12,\n    VK_FORMAT_R8_UINT = 13,\n    VK_FORMAT_R8_SINT = 14,\n    VK_FORMAT_R8_SRGB = 15,\n    VK_FORMAT_R8G8_UNORM = 16,\n    VK_FORMAT_R8G8_SNORM = 17,\n    VK_FORMAT_R8G8_USCALED = 18,\n    VK_FORMAT_R8G8_SSCALED = 19,\n    VK_FORMAT_R8G8_UINT = 20,\n    VK_FORMAT_R8G8_SINT = 21,\n    VK_FORMAT_R8G8_SRGB = 22,\n    VK_FORMAT_R8G8B8_UNORM = 23,\n    VK_FORMAT_R8G8B8_SNORM = 24,\n    VK_FORMAT_R8G8B8_USCALED = 25,\n    VK_FORMAT_R8G8B8_SSCALED = 26,\n    VK_FORMAT_R8G8B8_UINT = 27,\n    VK_FORMAT_R8G8B8_SINT = 28,\n    VK_FORMAT_R8G8B8_SRGB = 29,\n    VK_FORMAT_B8G8R8_UNORM = 30,\n    VK_FORMAT_B8G8R8_SNORM = 31,\n    VK_FORMAT_B8G8R8_USCALED = 32,\n    VK_FORMAT_B8G8R8_SSCALED = 33,\n    VK_FORMAT_B8G8R8_UINT = 34,\n    VK_FORMAT_B8G8R8_SINT = 35,\n    VK_FORMAT_B8G8R8_SRGB = 36,\n    VK_FORMAT_R8G8B8A8_UNORM = 37,\n    VK_FORMAT_R8G8B8A8_SNORM = 38,\n    VK_FORMAT_R8G8B8A8_USCALED = 39,\n    VK_FORMAT_R8G8B8A8_SSCALED = 40,\n    VK_FORMAT_R8G8B8A8_UINT = 41,\n    VK_FORMAT_R8G8B8A8_SINT = 42,\n    VK_FORMAT_R8G8B8A8_SRGB = 43,\n    VK_FORMAT_B8G8R8A8_UNORM = 44,\n    VK_FORMAT_B8G8R8A8_SNORM = 45,\n    VK_FORMAT_B8G8R8A8_USCALED = 46,\n    VK_FORMAT_B8G8R8A8_SSCALED = 47,\n    VK_FORMAT_B8G8R8A8_UINT = 48,\n    VK_FORMAT_B8G8R8A8_SINT = 49,\n    VK_FORMAT_B8G8R8A8_SRGB = 50,\n    VK_FORMAT_A8B8G8R8_UNORM_PACK32 = 51,\n    VK_FORMAT_A8B8G8R8_SNORM_PACK32 = 52,\n    VK_FORMAT_A8B8G8R8_USCALED_PACK32 = 53,\n    VK_FORMAT_A8B8G8R8_SSCALED_PACK32 = 54,\n    VK_FORMAT_A8B8G8R8_UINT_PACK32 = 55,\n    VK_FORMAT_A8B8G8R8_SINT_PACK32 = 56,\n    VK_FORMAT_A8B8G8R8_SRGB_PACK32 = 57,\n    VK_FORMAT_A2R10G10B10_UNORM_PACK32 = 58,\n    VK_FORMAT_A2R10G10B10_SNORM_PACK32 = 59,\n    VK_FORMAT_A2R10G10B10_USCALED_PACK32 = 60,\n    VK_FORMAT_A2R10G10B10_SSCALED_PACK32 = 61,\n    VK_FORMAT_A2R10G10B10_UINT_PACK32 = 62,\n    VK_FORMAT_A2R10G10B10_SINT_PACK32 = 63,\n    VK_FORMAT_A2B10G10R10_UNORM_PACK32 = 64,\n    VK_FORMAT_A2B10G10R10_SNORM_PACK32 = 65,\n    VK_FORMAT_A2B10G10R10_USCALED_PACK32 = 66,\n    VK_FORMAT_A2B10G10R10_SSCALED_PACK32 = 67,\n    VK_FORMAT_A2B10G10R10_UINT_PACK32 = 68,\n    VK_FORMAT_A2B10G10R10_SINT_PACK32 = 69,\n    VK_FORMAT_R16_UNORM = 70,\n    VK_FORMAT_R16_SNORM = 71,\n    VK_FORMAT_R16_USCALED = 72,\n    VK_FORMAT_R16_SSCALED = 73,\n    VK_FORMAT_R16_UINT = 74,\n    VK_FORMAT_R16_SINT = 75,\n    VK_FORMAT_R16_SFLOAT = 76,\n    VK_FORMAT_R16G16_UNORM = 77,\n    VK_FORMAT_R16G16_SNORM = 78,\n    VK_FORMAT_R16G16_USCALED = 79,\n    VK_FORMAT_R16G16_SSCALED = 80,\n    VK_FORMAT_R16G16_UINT = 81,\n    VK_FORMAT_R16G16_SINT = 82,\n    VK_FORMAT_R16G16_SFLOAT = 83,\n    VK_FORMAT_R16G16B16_UNORM = 84,\n    VK_FORMAT_R16G16B16_SNORM = 85,\n    VK_FORMAT_R16G16B16_USCALED = 86,\n    VK_FORMAT_R16G16B16_SSCALED = 87,\n    VK_FORMAT_R16G16B16_UINT = 88,\n    VK_FORMAT_R16G16B16_SINT = 89,\n    VK_FORMAT_R16G16B16_SFLOAT = 90,\n    VK_FORMAT_R16G16B16A16_UNORM = 91,\n    VK_FORMAT_R16G16B16A16_SNORM = 92,\n    VK_FORMAT_R16G16B16A16_USCALED = 93,\n    VK_FORMAT_R16G16B16A16_SSCALED = 94,\n    VK_FORMAT_R16G16B16A16_UINT = 95,\n    VK_FORMAT_R16G16B16A16_SINT = 96,\n    VK_FORMAT_R16G16B16A16_SFLOAT = 97,\n    VK_FORMAT_R32_UINT = 98,\n    VK_FORMAT_R32_SINT = 99,\n    VK_FORMAT_R32_SFLOAT = 100,\n    VK_FORMAT_R32G32_UINT = 101,\n    VK_FORMAT_R32G32_SINT = 102,\n    VK_FORMAT_R32G32_SFLOAT = 103,\n    VK_FORMAT_R32G32B32_UINT = 104,\n    VK_FORMAT_R32G32B32_SINT = 105,\n    VK_FORMAT_R32G32B32_SFLOAT = 106,\n    VK_FORMAT_R32G32B32A32_UINT = 107,\n    VK_FORMAT_R32G32B32A32_SINT = 108,\n    VK_FORMAT_R32G32B32A32_SFLOAT = 109,\n    VK_FORMAT_R64_UINT = 110,\n    VK_FORMAT_R64_SINT = 111,\n    VK_FORMAT_R64_SFLOAT = 112,\n    VK_FORMAT_R64G64_UINT = 113,\n    VK_FORMAT_R64G64_SINT = 114,\n    VK_FORMAT_R64G64_SFLOAT = 115,\n    VK_FORMAT_R64G64B64_UINT = 116,\n    VK_FORMAT_R64G64B64_SINT = 117,\n    VK_FORMAT_R64G64B64_SFLOAT = 118,\n    VK_FORMAT_R64G64B64A64_UINT = 119,\n    VK_FORMAT_R64G64B64A64_SINT = 120,\n    VK_FORMAT_R64G64B64A64_SFLOAT = 121,\n    VK_FORMAT_B10G11R11_UFLOAT_PACK32 = 122,\n    VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 = 123,\n    VK_FORMAT_D16_UNORM = 124,\n    VK_FORMAT_X8_D24_UNORM_PACK32 = 125,\n    VK_FORMAT_D32_SFLOAT = 126,\n    VK_FORMAT_S8_UINT = 127,\n    VK_FORMAT_D16_UNORM_S8_UINT = 128,\n    VK_FORMAT_D24_UNORM_S8_UINT = 129,\n    VK_FORMAT_D32_SFLOAT_S8_UINT = 130,\n    VK_FORMAT_BC1_RGB_UNORM_BLOCK = 131,\n    VK_FORMAT_BC1_RGB_SRGB_BLOCK = 132,\n    VK_FORMAT_BC1_RGBA_UNORM_BLOCK = 133,\n    VK_FORMAT_BC1_RGBA_SRGB_BLOCK = 134,\n    VK_FORMAT_BC2_UNORM_BLOCK = 135,\n    VK_FORMAT_BC2_SRGB_BLOCK = 136,\n    VK_FORMAT_BC3_UNORM_BLOCK = 137,\n    VK_FORMAT_BC3_SRGB_BLOCK = 138,\n    VK_FORMAT_BC4_UNORM_BLOCK = 139,\n    VK_FORMAT_BC4_SNORM_BLOCK = 140,\n    VK_FORMAT_BC5_UNORM_BLOCK = 141,\n    VK_FORMAT_BC5_SNORM_BLOCK = 142,\n    VK_FORMAT_BC6H_UFLOAT_BLOCK = 143,\n    VK_FORMAT_BC6H_SFLOAT_BLOCK = 144,\n    VK_FORMAT_BC7_UNORM_BLOCK = 145,\n    VK_FORMAT_BC7_SRGB_BLOCK = 146,\n    VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK = 147,\n    VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK = 148,\n    VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = 149,\n    VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = 150,\n    VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = 151,\n    VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = 152,\n    VK_FORMAT_EAC_R11_UNORM_BLOCK = 153,\n    VK_FORMAT_EAC_R11_SNORM_BLOCK = 154,\n    VK_FORMAT_EAC_R11G11_UNORM_BLOCK = 155,\n    VK_FORMAT_EAC_R11G11_SNORM_BLOCK = 156,\n    VK_FORMAT_ASTC_4x4_UNORM_BLOCK = 157,\n    VK_FORMAT_ASTC_4x4_SRGB_BLOCK = 158,\n    VK_FORMAT_ASTC_5x4_UNORM_BLOCK = 159,\n    VK_FORMAT_ASTC_5x4_SRGB_BLOCK = 160,\n    VK_FORMAT_ASTC_5x5_UNORM_BLOCK = 161,\n    VK_FORMAT_ASTC_5x5_SRGB_BLOCK = 162,\n    VK_FORMAT_ASTC_6x5_UNORM_BLOCK = 163,\n    VK_FORMAT_ASTC_6x5_SRGB_BLOCK = 164,\n    VK_FORMAT_ASTC_6x6_UNORM_BLOCK = 165,\n    VK_FORMAT_ASTC_6x6_SRGB_BLOCK = 166,\n    VK_FORMAT_ASTC_8x5_UNORM_BLOCK = 167,\n    VK_FORMAT_ASTC_8x5_SRGB_BLOCK = 168,\n    VK_FORMAT_ASTC_8x6_UNORM_BLOCK = 169,\n    VK_FORMAT_ASTC_8x6_SRGB_BLOCK = 170,\n    VK_FORMAT_ASTC_8x8_UNORM_BLOCK = 171,\n    VK_FORMAT_ASTC_8x8_SRGB_BLOCK = 172,\n    VK_FORMAT_ASTC_10x5_UNORM_BLOCK = 173,\n    VK_FORMAT_ASTC_10x5_SRGB_BLOCK = 174,\n    VK_FORMAT_ASTC_10x6_UNORM_BLOCK = 175,\n    VK_FORMAT_ASTC_10x6_SRGB_BLOCK = 176,\n    VK_FORMAT_ASTC_10x8_UNORM_BLOCK = 177,\n    VK_FORMAT_ASTC_10x8_SRGB_BLOCK = 178,\n    VK_FORMAT_ASTC_10x10_UNORM_BLOCK = 179,\n    VK_FORMAT_ASTC_10x10_SRGB_BLOCK = 180,\n    VK_FORMAT_ASTC_12x10_UNORM_BLOCK = 181,\n    VK_FORMAT_ASTC_12x10_SRGB_BLOCK = 182,\n    VK_FORMAT_ASTC_12x12_UNORM_BLOCK = 183,\n    VK_FORMAT_ASTC_12x12_SRGB_BLOCK = 184,\n    VK_FORMAT_G8B8G8R8_422_UNORM = 1000156000,\n    VK_FORMAT_B8G8R8G8_422_UNORM = 1000156001,\n    VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM = 1000156002,\n    VK_FORMAT_G8_B8R8_2PLANE_420_UNORM = 1000156003,\n    VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM = 1000156004,\n    VK_FORMAT_G8_B8R8_2PLANE_422_UNORM = 1000156005,\n    VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM = 1000156006,\n    VK_FORMAT_R10X6_UNORM_PACK16 = 1000156007,\n    VK_FORMAT_R10X6G10X6_UNORM_2PACK16 = 1000156008,\n    VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 = 1000156009,\n    VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 = 1000156010,\n    VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 = 1000156011,\n    VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 = 1000156012,\n    VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 = 1000156013,\n    VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 = 1000156014,\n    VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 = 1000156015,\n    VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 = 1000156016,\n    VK_FORMAT_R12X4_UNORM_PACK16 = 1000156017,\n    VK_FORMAT_R12X4G12X4_UNORM_2PACK16 = 1000156018,\n    VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 = 1000156019,\n    VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 = 1000156020,\n    VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 = 1000156021,\n    VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 = 1000156022,\n    VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 = 1000156023,\n    VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 = 1000156024,\n    VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 = 1000156025,\n    VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 = 1000156026,\n    VK_FORMAT_G16B16G16R16_422_UNORM = 1000156027,\n    VK_FORMAT_B16G16R16G16_422_UNORM = 1000156028,\n    VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM = 1000156029,\n    VK_FORMAT_G16_B16R16_2PLANE_420_UNORM = 1000156030,\n    VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM = 1000156031,\n    VK_FORMAT_G16_B16R16_2PLANE_422_UNORM = 1000156032,\n    VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM = 1000156033,\n    VK_FORMAT_G8_B8R8_2PLANE_444_UNORM = 1000330000,\n    VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16 = 1000330001,\n    VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16 = 1000330002,\n    VK_FORMAT_G16_B16R16_2PLANE_444_UNORM = 1000330003,\n    VK_FORMAT_A4R4G4B4_UNORM_PACK16 = 1000340000,\n    VK_FORMAT_A4B4G4R4_UNORM_PACK16 = 1000340001,\n    VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK = 1000066000,\n    VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK = 1000066001,\n    VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK = 1000066002,\n    VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK = 1000066003,\n    VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK = 1000066004,\n    VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK = 1000066005,\n    VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK = 1000066006,\n    VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK = 1000066007,\n    VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK = 1000066008,\n    VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK = 1000066009,\n    VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK = 1000066010,\n    VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK = 1000066011,\n    VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK = 1000066012,\n    VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK = 1000066013,\n    VK_FORMAT_A1B5G5R5_UNORM_PACK16 = 1000470000,\n    VK_FORMAT_A8_UNORM = 1000470001,\n    VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000,\n    VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001,\n    VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002,\n    VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG = 1000054003,\n    VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG = 1000054004,\n    VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG = 1000054005,\n    VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG = 1000054006,\n    VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG = 1000054007,\n    VK_FORMAT_ASTC_3x3x3_UNORM_BLOCK_EXT = 1000288000,\n    VK_FORMAT_ASTC_3x3x3_SRGB_BLOCK_EXT = 1000288001,\n    VK_FORMAT_ASTC_3x3x3_SFLOAT_BLOCK_EXT = 1000288002,\n    VK_FORMAT_ASTC_4x3x3_UNORM_BLOCK_EXT = 1000288003,\n    VK_FORMAT_ASTC_4x3x3_SRGB_BLOCK_EXT = 1000288004,\n    VK_FORMAT_ASTC_4x3x3_SFLOAT_BLOCK_EXT = 1000288005,\n    VK_FORMAT_ASTC_4x4x3_UNORM_BLOCK_EXT = 1000288006,\n    VK_FORMAT_ASTC_4x4x3_SRGB_BLOCK_EXT = 1000288007,\n    VK_FORMAT_ASTC_4x4x3_SFLOAT_BLOCK_EXT = 1000288008,\n    VK_FORMAT_ASTC_4x4x4_UNORM_BLOCK_EXT = 1000288009,\n    VK_FORMAT_ASTC_4x4x4_SRGB_BLOCK_EXT = 1000288010,\n    VK_FORMAT_ASTC_4x4x4_SFLOAT_BLOCK_EXT = 1000288011,\n    VK_FORMAT_ASTC_5x4x4_UNORM_BLOCK_EXT = 1000288012,\n    VK_FORMAT_ASTC_5x4x4_SRGB_BLOCK_EXT = 1000288013,\n    VK_FORMAT_ASTC_5x4x4_SFLOAT_BLOCK_EXT = 1000288014,\n    VK_FORMAT_ASTC_5x5x4_UNORM_BLOCK_EXT = 1000288015,\n    VK_FORMAT_ASTC_5x5x4_SRGB_BLOCK_EXT = 1000288016,\n    VK_FORMAT_ASTC_5x5x4_SFLOAT_BLOCK_EXT = 1000288017,\n    VK_FORMAT_ASTC_5x5x5_UNORM_BLOCK_EXT = 1000288018,\n    VK_FORMAT_ASTC_5x5x5_SRGB_BLOCK_EXT = 1000288019,\n    VK_FORMAT_ASTC_5x5x5_SFLOAT_BLOCK_EXT = 1000288020,\n    VK_FORMAT_ASTC_6x5x5_UNORM_BLOCK_EXT = 1000288021,\n    VK_FORMAT_ASTC_6x5x5_SRGB_BLOCK_EXT = 1000288022,\n    VK_FORMAT_ASTC_6x5x5_SFLOAT_BLOCK_EXT = 1000288023,\n    VK_FORMAT_ASTC_6x6x5_UNORM_BLOCK_EXT = 1000288024,\n    VK_FORMAT_ASTC_6x6x5_SRGB_BLOCK_EXT = 1000288025,\n    VK_FORMAT_ASTC_6x6x5_SFLOAT_BLOCK_EXT = 1000288026,\n    VK_FORMAT_ASTC_6x6x6_UNORM_BLOCK_EXT = 1000288027,\n    VK_FORMAT_ASTC_6x6x6_SRGB_BLOCK_EXT = 1000288028,\n    VK_FORMAT_ASTC_6x6x6_SFLOAT_BLOCK_EXT = 1000288029,\n    VK_FORMAT_R8_BOOL_ARM = 1000460000,\n    VK_FORMAT_R16_SFLOAT_FPENCODING_BFLOAT16_ARM = 1000460001,\n    VK_FORMAT_R8_SFLOAT_FPENCODING_FLOAT8E4M3_ARM = 1000460002,\n    VK_FORMAT_R8_SFLOAT_FPENCODING_FLOAT8E5M2_ARM = 1000460003,\n    VK_FORMAT_R16G16_SFIXED5_NV = 1000464000,\n    VK_FORMAT_R10X6_UINT_PACK16_ARM = 1000609000,\n    VK_FORMAT_R10X6G10X6_UINT_2PACK16_ARM = 1000609001,\n    VK_FORMAT_R10X6G10X6B10X6A10X6_UINT_4PACK16_ARM = 1000609002,\n    VK_FORMAT_R12X4_UINT_PACK16_ARM = 1000609003,\n    VK_FORMAT_R12X4G12X4_UINT_2PACK16_ARM = 1000609004,\n    VK_FORMAT_R12X4G12X4B12X4A12X4_UINT_4PACK16_ARM = 1000609005,\n    VK_FORMAT_R14X2_UINT_PACK16_ARM = 1000609006,\n    VK_FORMAT_R14X2G14X2_UINT_2PACK16_ARM = 1000609007,\n    VK_FORMAT_R14X2G14X2B14X2A14X2_UINT_4PACK16_ARM = 1000609008,\n    VK_FORMAT_R14X2_UNORM_PACK16_ARM = 1000609009,\n    VK_FORMAT_R14X2G14X2_UNORM_2PACK16_ARM = 1000609010,\n    VK_FORMAT_R14X2G14X2B14X2A14X2_UNORM_4PACK16_ARM = 1000609011,\n    VK_FORMAT_G14X2_B14X2R14X2_2PLANE_420_UNORM_3PACK16_ARM = 1000609012,\n    VK_FORMAT_G14X2_B14X2R14X2_2PLANE_422_UNORM_3PACK16_ARM = 1000609013,\n    VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK,\n    VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK,\n    VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK,\n    VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK,\n    VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK,\n    VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK,\n    VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK,\n    VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK,\n    VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK,\n    VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK,\n    VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK,\n    VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK,\n    VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK,\n    VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK,\n    VK_FORMAT_G8B8G8R8_422_UNORM_KHR = VK_FORMAT_G8B8G8R8_422_UNORM,\n    VK_FORMAT_B8G8R8G8_422_UNORM_KHR = VK_FORMAT_B8G8R8G8_422_UNORM,\n    VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR = VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM,\n    VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR = VK_FORMAT_G8_B8R8_2PLANE_420_UNORM,\n    VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR = VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM,\n    VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR = VK_FORMAT_G8_B8R8_2PLANE_422_UNORM,\n    VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR = VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM,\n    VK_FORMAT_R10X6_UNORM_PACK16_KHR = VK_FORMAT_R10X6_UNORM_PACK16,\n    VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR = VK_FORMAT_R10X6G10X6_UNORM_2PACK16,\n    VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR = VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16,\n    VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR = VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16,\n    VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR = VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16,\n    VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16,\n    VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16,\n    VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16,\n    VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16,\n    VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16,\n    VK_FORMAT_R12X4_UNORM_PACK16_KHR = VK_FORMAT_R12X4_UNORM_PACK16,\n    VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR = VK_FORMAT_R12X4G12X4_UNORM_2PACK16,\n    VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR = VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16,\n    VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR = VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16,\n    VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR = VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16,\n    VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16,\n    VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16,\n    VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16,\n    VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16,\n    VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16,\n    VK_FORMAT_G16B16G16R16_422_UNORM_KHR = VK_FORMAT_G16B16G16R16_422_UNORM,\n    VK_FORMAT_B16G16R16G16_422_UNORM_KHR = VK_FORMAT_B16G16R16G16_422_UNORM,\n    VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR = VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM,\n    VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR = VK_FORMAT_G16_B16R16_2PLANE_420_UNORM,\n    VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR = VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM,\n    VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR = VK_FORMAT_G16_B16R16_2PLANE_422_UNORM,\n    VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR = VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM,\n    VK_FORMAT_G8_B8R8_2PLANE_444_UNORM_EXT = VK_FORMAT_G8_B8R8_2PLANE_444_UNORM,\n    VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16_EXT = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16,\n    VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16,\n    VK_FORMAT_G16_B16R16_2PLANE_444_UNORM_EXT = VK_FORMAT_G16_B16R16_2PLANE_444_UNORM,\n    VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT = VK_FORMAT_A4R4G4B4_UNORM_PACK16,\n    VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT = VK_FORMAT_A4B4G4R4_UNORM_PACK16,\n    VK_FORMAT_R16G16_S10_5_NV = VK_FORMAT_R16G16_SFIXED5_NV,\n    VK_FORMAT_A1B5G5R5_UNORM_PACK16_KHR = VK_FORMAT_A1B5G5R5_UNORM_PACK16,\n    VK_FORMAT_A8_UNORM_KHR = VK_FORMAT_A8_UNORM,\n    VK_FORMAT_MAX_ENUM = 0x7FFFFFFF\n} VkFormat;\n\n\ntypedef enum\n{\n    VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 0x00000001,\n    VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 0x00000002,\n    VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 0x00000004,\n    VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000008,\n    VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 0x00000010,\n    VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 0x00000020,\n    VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 0x00000040,\n    VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 0x00000080,\n    VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 0x00000100,\n    VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000200,\n    VK_FORMAT_FEATURE_BLIT_SRC_BIT = 0x00000400,\n    VK_FORMAT_FEATURE_BLIT_DST_BIT = 0x00000800,\n    VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 0x00001000,\n    VK_FORMAT_FEATURE_TRANSFER_SRC_BIT = 0x00004000,\n    VK_FORMAT_FEATURE_TRANSFER_DST_BIT = 0x00008000,\n    VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT = 0x00020000,\n    VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = 0x00040000,\n    VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = 0x00080000,\n    VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = 0x00100000,\n    VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 0x00200000,\n    VK_FORMAT_FEATURE_DISJOINT_BIT = 0x00400000,\n    VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT = 0x00800000,\n    VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT = 0x00010000,\n    VK_FORMAT_FEATURE_VIDEO_DECODE_OUTPUT_BIT_KHR = 0x02000000,\n    VK_FORMAT_FEATURE_VIDEO_DECODE_DPB_BIT_KHR = 0x04000000,\n    VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR = 0x20000000,\n    VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = 0x00002000,\n    VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 0x01000000,\n    VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x40000000,\n    VK_FORMAT_FEATURE_VIDEO_ENCODE_INPUT_BIT_KHR = 0x08000000,\n    VK_FORMAT_FEATURE_VIDEO_ENCODE_DPB_BIT_KHR = 0x10000000,\n    VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT,\n    VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = VK_FORMAT_FEATURE_TRANSFER_SRC_BIT,\n    VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = VK_FORMAT_FEATURE_TRANSFER_DST_BIT,\n    VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT,\n    VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR = VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT,\n    VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT,\n    VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT,\n    VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT,\n    VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT,\n    VK_FORMAT_FEATURE_DISJOINT_BIT_KHR = VK_FORMAT_FEATURE_DISJOINT_BIT,\n    VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR = VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT,\n    VK_FORMAT_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkFormatFeatureFlagBits;\ntypedef VkFlags VkFormatFeatureFlags;\n\ntypedef enum\n{\n    VK_IMAGE_CREATE_SPARSE_BINDING_BIT = 0x00000001,\n    VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002,\n    VK_IMAGE_CREATE_SPARSE_ALIASED_BIT = 0x00000004,\n    VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = 0x00000008,\n    VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT = 0x00000010,\n    VK_IMAGE_CREATE_ALIAS_BIT = 0x00000400,\n    VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT = 0x00000040,\n    VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT = 0x00000020,\n    VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT = 0x00000080,\n    VK_IMAGE_CREATE_EXTENDED_USAGE_BIT = 0x00000100,\n    VK_IMAGE_CREATE_PROTECTED_BIT = 0x00000800,\n    VK_IMAGE_CREATE_DISJOINT_BIT = 0x00000200,\n    VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV = 0x00002000,\n    VK_IMAGE_CREATE_DESCRIPTOR_HEAP_CAPTURE_REPLAY_BIT_EXT = 0x00010000,\n    VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT = 0x00001000,\n    VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT = 0x00004000,\n    VK_IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT = 0x00040000,\n    VK_IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT = 0x00020000,\n    VK_IMAGE_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR = 0x00100000,\n    VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_EXT = 0x00008000,\n    VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT,\n    VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR = VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT,\n    VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR = VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT,\n    VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR = VK_IMAGE_CREATE_EXTENDED_USAGE_BIT,\n    VK_IMAGE_CREATE_DISJOINT_BIT_KHR = VK_IMAGE_CREATE_DISJOINT_BIT,\n    VK_IMAGE_CREATE_ALIAS_BIT_KHR = VK_IMAGE_CREATE_ALIAS_BIT,\n    VK_IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = VK_IMAGE_CREATE_DESCRIPTOR_HEAP_CAPTURE_REPLAY_BIT_EXT,\n    VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM = VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_EXT,\n    VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkImageCreateFlagBits;\ntypedef VkFlags VkImageCreateFlags;\n\ntypedef enum\n{\n    VK_SAMPLE_COUNT_1_BIT = 0x00000001,\n    VK_SAMPLE_COUNT_2_BIT = 0x00000002,\n    VK_SAMPLE_COUNT_4_BIT = 0x00000004,\n    VK_SAMPLE_COUNT_8_BIT = 0x00000008,\n    VK_SAMPLE_COUNT_16_BIT = 0x00000010,\n    VK_SAMPLE_COUNT_32_BIT = 0x00000020,\n    VK_SAMPLE_COUNT_64_BIT = 0x00000040,\n    VK_SAMPLE_COUNT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkSampleCountFlagBits;\ntypedef VkFlags VkSampleCountFlags;\ntypedef enum\n{\n    VK_IMAGE_TILING_OPTIMAL = 0,\n    VK_IMAGE_TILING_LINEAR = 1,\n    VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT = 1000158000,\n    VK_IMAGE_TILING_MAX_ENUM = 0x7FFFFFFF\n} VkImageTiling;\n\ntypedef enum\n{\n    VK_IMAGE_TYPE_1D = 0,\n    VK_IMAGE_TYPE_2D = 1,\n    VK_IMAGE_TYPE_3D = 2,\n    VK_IMAGE_TYPE_MAX_ENUM = 0x7FFFFFFF\n} VkImageType;\n\n\ntypedef enum\n{\n    VK_IMAGE_USAGE_TRANSFER_SRC_BIT = 0x00000001,\n    VK_IMAGE_USAGE_TRANSFER_DST_BIT = 0x00000002,\n    VK_IMAGE_USAGE_SAMPLED_BIT = 0x00000004,\n    VK_IMAGE_USAGE_STORAGE_BIT = 0x00000008,\n    VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = 0x00000010,\n    VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000020,\n    VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = 0x00000040,\n    VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = 0x00000080,\n    VK_IMAGE_USAGE_HOST_TRANSFER_BIT = 0x00400000,\n    VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR = 0x00000400,\n    VK_IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR = 0x00000800,\n    VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR = 0x00001000,\n    VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT = 0x00000200,\n    VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x00000100,\n    VK_IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR = 0x00002000,\n    VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR = 0x00004000,\n    VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR = 0x00008000,\n    VK_IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 0x00080000,\n    VK_IMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI = 0x00040000,\n    VK_IMAGE_USAGE_SAMPLE_WEIGHT_BIT_QCOM = 0x00100000,\n    VK_IMAGE_USAGE_SAMPLE_BLOCK_MATCH_BIT_QCOM = 0x00200000,\n    VK_IMAGE_USAGE_TENSOR_ALIASING_BIT_ARM = 0x00800000,\n    VK_IMAGE_USAGE_TILE_MEMORY_BIT_QCOM = 0x08000000,\n    VK_IMAGE_USAGE_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR = 0x02000000,\n    VK_IMAGE_USAGE_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR = 0x04000000,\n    VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV = VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR,\n    VK_IMAGE_USAGE_HOST_TRANSFER_BIT_EXT = VK_IMAGE_USAGE_HOST_TRANSFER_BIT,\n    VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkImageUsageFlagBits;\ntypedef VkFlags VkImageUsageFlags;\n\ntypedef enum\n{\n    VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR = 0x00000001,\n    VK_INSTANCE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkInstanceCreateFlagBits;\ntypedef VkFlags VkInstanceCreateFlags;\n\ntypedef enum\n{\n    VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 0x00000001,\n    VK_MEMORY_HEAP_MULTI_INSTANCE_BIT = 0x00000002,\n    VK_MEMORY_HEAP_SEU_SAFE_BIT = 0x00000004,\n    VK_MEMORY_HEAP_TILE_MEMORY_BIT_QCOM = 0x00000008,\n    VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR = VK_MEMORY_HEAP_MULTI_INSTANCE_BIT,\n    VK_MEMORY_HEAP_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkMemoryHeapFlagBits;\ntypedef VkFlags VkMemoryHeapFlags;\n\ntypedef enum\n{\n    VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = 0x00000001,\n    VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = 0x00000002,\n    VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = 0x00000004,\n    VK_MEMORY_PROPERTY_HOST_CACHED_BIT = 0x00000008,\n    VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = 0x00000010,\n    VK_MEMORY_PROPERTY_PROTECTED_BIT = 0x00000020,\n    VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD = 0x00000040,\n    VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD = 0x00000080,\n    VK_MEMORY_PROPERTY_RDMA_CAPABLE_BIT_NV = 0x00000100,\n    VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkMemoryPropertyFlagBits;\ntypedef VkFlags VkMemoryPropertyFlags;\ntypedef enum\n{\n    VK_PHYSICAL_DEVICE_TYPE_OTHER = 0,\n    VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 1,\n    VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 2,\n    VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 3,\n    VK_PHYSICAL_DEVICE_TYPE_CPU = 4,\n    VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM = 0x7FFFFFFF\n} VkPhysicalDeviceType;\n\n\ntypedef enum\n{\n    VK_QUEUE_GRAPHICS_BIT = 0x00000001,\n    VK_QUEUE_COMPUTE_BIT = 0x00000002,\n    VK_QUEUE_TRANSFER_BIT = 0x00000004,\n    VK_QUEUE_SPARSE_BINDING_BIT = 0x00000008,\n    VK_QUEUE_PROTECTED_BIT = 0x00000010,\n    VK_QUEUE_VIDEO_DECODE_BIT_KHR = 0x00000020,\n    VK_QUEUE_VIDEO_ENCODE_BIT_KHR = 0x00000040,\n    VK_QUEUE_OPTICAL_FLOW_BIT_NV = 0x00000100,\n    VK_QUEUE_DATA_GRAPH_BIT_ARM = 0x00000400,\n    VK_QUEUE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkQueueFlagBits;\ntypedef VkFlags VkQueueFlags;\n\ntypedef enum\n{\n    VK_SHADER_STAGE_VERTEX_BIT = 0x00000001,\n    VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = 0x00000002,\n    VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = 0x00000004,\n    VK_SHADER_STAGE_GEOMETRY_BIT = 0x00000008,\n    VK_SHADER_STAGE_FRAGMENT_BIT = 0x00000010,\n    VK_SHADER_STAGE_COMPUTE_BIT = 0x00000020,\n    VK_SHADER_STAGE_ALL_GRAPHICS = 0x0000001F,\n    VK_SHADER_STAGE_ALL = 0x7FFFFFFF,\n    VK_SHADER_STAGE_RAYGEN_BIT_KHR = 0x00000100,\n    VK_SHADER_STAGE_ANY_HIT_BIT_KHR = 0x00000200,\n    VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR = 0x00000400,\n    VK_SHADER_STAGE_MISS_BIT_KHR = 0x00000800,\n    VK_SHADER_STAGE_INTERSECTION_BIT_KHR = 0x00001000,\n    VK_SHADER_STAGE_CALLABLE_BIT_KHR = 0x00002000,\n    VK_SHADER_STAGE_TASK_BIT_EXT = 0x00000040,\n    VK_SHADER_STAGE_MESH_BIT_EXT = 0x00000080,\n    VK_SHADER_STAGE_SUBPASS_SHADING_BIT_HUAWEI = 0x00004000,\n    VK_SHADER_STAGE_CLUSTER_CULLING_BIT_HUAWEI = 0x00080000,\n    VK_SHADER_STAGE_RAYGEN_BIT_NV = VK_SHADER_STAGE_RAYGEN_BIT_KHR,\n    VK_SHADER_STAGE_ANY_HIT_BIT_NV = VK_SHADER_STAGE_ANY_HIT_BIT_KHR,\n    VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV = VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR,\n    VK_SHADER_STAGE_MISS_BIT_NV = VK_SHADER_STAGE_MISS_BIT_KHR,\n    VK_SHADER_STAGE_INTERSECTION_BIT_NV = VK_SHADER_STAGE_INTERSECTION_BIT_KHR,\n    VK_SHADER_STAGE_CALLABLE_BIT_NV = VK_SHADER_STAGE_CALLABLE_BIT_KHR,\n    VK_SHADER_STAGE_TASK_BIT_NV = VK_SHADER_STAGE_TASK_BIT_EXT,\n    VK_SHADER_STAGE_MESH_BIT_NV = VK_SHADER_STAGE_MESH_BIT_EXT,\n    VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkShaderStageFlagBits;\ntypedef VkFlags VkShaderStageFlags;\ntypedef VkFlags VkDeviceCreateFlags;\n\ntypedef enum\n{\n    VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT = 0x00000001,\n    VK_DEVICE_QUEUE_CREATE_INTERNALLY_SYNCHRONIZED_BIT_KHR = 0x00000004,\n    VK_DEVICE_QUEUE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkDeviceQueueCreateFlagBits;\ntypedef VkFlags VkDeviceQueueCreateFlags;\n\ntypedef enum\n{\n    VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT = 0x00000001,\n    VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT = 0x00000002,\n    VK_PIPELINE_STAGE_VERTEX_INPUT_BIT = 0x00000004,\n    VK_PIPELINE_STAGE_VERTEX_SHADER_BIT = 0x00000008,\n    VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = 0x00000010,\n    VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = 0x00000020,\n    VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT = 0x00000040,\n    VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT = 0x00000080,\n    VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT = 0x00000100,\n    VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT = 0x00000200,\n    VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = 0x00000400,\n    VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT = 0x00000800,\n    VK_PIPELINE_STAGE_TRANSFER_BIT = 0x00001000,\n    VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT = 0x00002000,\n    VK_PIPELINE_STAGE_HOST_BIT = 0x00004000,\n    VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = 0x00008000,\n    VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 0x00010000,\n    VK_PIPELINE_STAGE_NONE = 0,\n    VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT = 0x01000000,\n    VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT = 0x00040000,\n    VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR = 0x02000000,\n    VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR = 0x00200000,\n    VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 0x00800000,\n    VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x00400000,\n    VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT = 0x00080000,\n    VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT = 0x00100000,\n    VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_EXT = 0x00020000,\n    VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR,\n    VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR,\n    VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR,\n    VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV = VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT,\n    VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV = VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT,\n    VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_EXT,\n    VK_PIPELINE_STAGE_NONE_KHR = VK_PIPELINE_STAGE_NONE,\n    VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkPipelineStageFlagBits;\ntypedef VkFlags VkPipelineStageFlags;\n\ntypedef enum\n{\n    VK_MEMORY_MAP_PLACED_BIT_EXT = 0x00000001,\n    VK_MEMORY_MAP_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkMemoryMapFlagBits;\ntypedef VkFlags VkMemoryMapFlags;\n\ntypedef enum\n{\n    VK_IMAGE_ASPECT_COLOR_BIT = 0x00000001,\n    VK_IMAGE_ASPECT_DEPTH_BIT = 0x00000002,\n    VK_IMAGE_ASPECT_STENCIL_BIT = 0x00000004,\n    VK_IMAGE_ASPECT_METADATA_BIT = 0x00000008,\n    VK_IMAGE_ASPECT_PLANE_0_BIT = 0x00000010,\n    VK_IMAGE_ASPECT_PLANE_1_BIT = 0x00000020,\n    VK_IMAGE_ASPECT_PLANE_2_BIT = 0x00000040,\n    VK_IMAGE_ASPECT_NONE = 0,\n    VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT = 0x00000080,\n    VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT = 0x00000100,\n    VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT = 0x00000200,\n    VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT = 0x00000400,\n    VK_IMAGE_ASPECT_PLANE_0_BIT_KHR = VK_IMAGE_ASPECT_PLANE_0_BIT,\n    VK_IMAGE_ASPECT_PLANE_1_BIT_KHR = VK_IMAGE_ASPECT_PLANE_1_BIT,\n    VK_IMAGE_ASPECT_PLANE_2_BIT_KHR = VK_IMAGE_ASPECT_PLANE_2_BIT,\n    VK_IMAGE_ASPECT_NONE_KHR = VK_IMAGE_ASPECT_NONE,\n    VK_IMAGE_ASPECT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkImageAspectFlagBits;\ntypedef VkFlags VkImageAspectFlags;\n\ntypedef enum\n{\n    VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = 0x00000001,\n    VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT = 0x00000002,\n    VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = 0x00000004,\n    VK_SPARSE_IMAGE_FORMAT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkSparseImageFormatFlagBits;\ntypedef VkFlags VkSparseImageFormatFlags;\n\ntypedef enum\n{\n    VK_SPARSE_MEMORY_BIND_METADATA_BIT = 0x00000001,\n    VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkSparseMemoryBindFlagBits;\ntypedef VkFlags VkSparseMemoryBindFlags;\n\ntypedef enum\n{\n    VK_FENCE_CREATE_SIGNALED_BIT = 0x00000001,\n    VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkFenceCreateFlagBits;\ntypedef VkFlags VkFenceCreateFlags;\ntypedef VkFlags VkSemaphoreCreateFlags;\n\ntypedef enum\n{\n    VK_QUERY_POOL_CREATE_RESET_BIT_KHR = 0x00000001,\n    VK_QUERY_POOL_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkQueryPoolCreateFlagBits;\ntypedef VkFlags VkQueryPoolCreateFlags;\n\ntypedef enum\n{\n    VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT = 0x00000001,\n    VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT = 0x00000002,\n    VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT = 0x00000004,\n    VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT = 0x00000008,\n    VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT = 0x00000010,\n    VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT = 0x00000020,\n    VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT = 0x00000040,\n    VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT = 0x00000080,\n    VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT = 0x00000100,\n    VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT = 0x00000200,\n    VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT = 0x00000400,\n    VK_QUERY_PIPELINE_STATISTIC_TASK_SHADER_INVOCATIONS_BIT_EXT = 0x00000800,\n    VK_QUERY_PIPELINE_STATISTIC_MESH_SHADER_INVOCATIONS_BIT_EXT = 0x00001000,\n    VK_QUERY_PIPELINE_STATISTIC_CLUSTER_CULLING_SHADER_INVOCATIONS_BIT_HUAWEI = 0x00002000,\n    VK_QUERY_PIPELINE_STATISTIC_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkQueryPipelineStatisticFlagBits;\ntypedef VkFlags VkQueryPipelineStatisticFlags;\ntypedef enum\n{\n    VK_QUERY_TYPE_OCCLUSION = 0,\n    VK_QUERY_TYPE_PIPELINE_STATISTICS = 1,\n    VK_QUERY_TYPE_TIMESTAMP = 2,\n    VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR = 1000023000,\n    VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT = 1000028004,\n    VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR = 1000116000,\n    VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR = 1000150000,\n    VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR = 1000150001,\n    VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV = 1000165000,\n    VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL = 1000210000,\n    VK_QUERY_TYPE_VIDEO_ENCODE_FEEDBACK_KHR = 1000299000,\n    VK_QUERY_TYPE_MESH_PRIMITIVES_GENERATED_EXT = 1000328000,\n    VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT = 1000382000,\n    VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR = 1000386000,\n    VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR = 1000386001,\n    VK_QUERY_TYPE_MICROMAP_SERIALIZATION_SIZE_EXT = 1000396000,\n    VK_QUERY_TYPE_MICROMAP_COMPACTED_SIZE_EXT = 1000396001,\n    VK_QUERY_TYPE_MAX_ENUM = 0x7FFFFFFF\n} VkQueryType;\n\n\ntypedef enum\n{\n    VK_QUERY_RESULT_64_BIT = 0x00000001,\n    VK_QUERY_RESULT_WAIT_BIT = 0x00000002,\n    VK_QUERY_RESULT_WITH_AVAILABILITY_BIT = 0x00000004,\n    VK_QUERY_RESULT_PARTIAL_BIT = 0x00000008,\n    VK_QUERY_RESULT_WITH_STATUS_BIT_KHR = 0x00000010,\n    VK_QUERY_RESULT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkQueryResultFlagBits;\ntypedef VkFlags VkQueryResultFlags;\n\ntypedef enum\n{\n    VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 0x00000001,\n    VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002,\n    VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 0x00000004,\n    VK_BUFFER_CREATE_PROTECTED_BIT = 0x00000008,\n    VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 0x00000010,\n    VK_BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 0x00000020,\n    VK_BUFFER_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR = 0x00000040,\n    VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT,\n    VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT,\n    VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkBufferCreateFlagBits;\ntypedef VkFlags VkBufferCreateFlags;\n\ntypedef enum\n{\n    VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 0x00000001,\n    VK_BUFFER_USAGE_TRANSFER_DST_BIT = 0x00000002,\n    VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000004,\n    VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 0x00000008,\n    VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 0x00000010,\n    VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 0x00000020,\n    VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 0x00000040,\n    VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 0x00000080,\n    VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 0x00000100,\n    VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT = 0x00020000,\n    VK_BUFFER_USAGE_VIDEO_DECODE_SRC_BIT_KHR = 0x00002000,\n    VK_BUFFER_USAGE_VIDEO_DECODE_DST_BIT_KHR = 0x00004000,\n    VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT = 0x00000800,\n    VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT = 0x00001000,\n    VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT = 0x00000200,\n    VK_BUFFER_USAGE_EXECUTION_GRAPH_SCRATCH_BIT_AMDX = 0x02000000,\n    VK_BUFFER_USAGE_DESCRIPTOR_HEAP_BIT_EXT = 0x10000000,\n    VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR = 0x00080000,\n    VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR = 0x00100000,\n    VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR = 0x00000400,\n    VK_BUFFER_USAGE_VIDEO_ENCODE_DST_BIT_KHR = 0x00008000,\n    VK_BUFFER_USAGE_VIDEO_ENCODE_SRC_BIT_KHR = 0x00010000,\n    VK_BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT = 0x00200000,\n    VK_BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT = 0x00400000,\n    VK_BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT = 0x04000000,\n    VK_BUFFER_USAGE_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT = 0x00800000,\n    VK_BUFFER_USAGE_MICROMAP_STORAGE_BIT_EXT = 0x01000000,\n    VK_BUFFER_USAGE_TILE_MEMORY_BIT_QCOM = 0x08000000,\n    VK_BUFFER_USAGE_RAY_TRACING_BIT_NV = VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR,\n    VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR = VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT,\n    VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT = VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT,\n    VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkBufferUsageFlagBits;\ntypedef VkFlags VkBufferUsageFlags;\ntypedef enum\n{\n    VK_SHARING_MODE_EXCLUSIVE = 0,\n    VK_SHARING_MODE_CONCURRENT = 1,\n    VK_SHARING_MODE_MAX_ENUM = 0x7FFFFFFF\n} VkSharingMode;\n\ntypedef enum\n{\n    VK_IMAGE_LAYOUT_UNDEFINED = 0,\n    VK_IMAGE_LAYOUT_GENERAL = 1,\n    VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 2,\n    VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3,\n    VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4,\n    VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 5,\n    VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 6,\n    VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 7,\n    VK_IMAGE_LAYOUT_PREINITIALIZED = 8,\n    VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = 1000117000,\n    VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = 1000117001,\n    VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL = 1000241000,\n    VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL = 1000241001,\n    VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL = 1000241002,\n    VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL = 1000241003,\n    VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL = 1000314000,\n    VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL = 1000314001,\n    VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ = 1000232000,\n    VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002,\n    VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR = 1000024000,\n    VK_IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR = 1000024001,\n    VK_IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR = 1000024002,\n    VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000,\n    VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000,\n    VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR = 1000164003,\n    VK_IMAGE_LAYOUT_VIDEO_ENCODE_DST_KHR = 1000299000,\n    VK_IMAGE_LAYOUT_VIDEO_ENCODE_SRC_KHR = 1000299001,\n    VK_IMAGE_LAYOUT_VIDEO_ENCODE_DPB_KHR = 1000299002,\n    VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT = 1000339000,\n    VK_IMAGE_LAYOUT_TENSOR_ALIASING_ARM = 1000460000,\n    VK_IMAGE_LAYOUT_VIDEO_ENCODE_QUANTIZATION_MAP_KHR = 1000553000,\n    VK_IMAGE_LAYOUT_ZERO_INITIALIZED_EXT = 1000620000,\n    VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL,\n    VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL,\n    VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV = VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR,\n    VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ_KHR = VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ,\n    VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL,\n    VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL,\n    VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR = VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL,\n    VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR = VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL,\n    VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR = VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL,\n    VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR = VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL,\n    VK_IMAGE_LAYOUT_MAX_ENUM = 0x7FFFFFFF\n} VkImageLayout;\n\ntypedef enum\n{\n    VK_COMPONENT_SWIZZLE_IDENTITY = 0,\n    VK_COMPONENT_SWIZZLE_ZERO = 1,\n    VK_COMPONENT_SWIZZLE_ONE = 2,\n    VK_COMPONENT_SWIZZLE_R = 3,\n    VK_COMPONENT_SWIZZLE_G = 4,\n    VK_COMPONENT_SWIZZLE_B = 5,\n    VK_COMPONENT_SWIZZLE_A = 6,\n    VK_COMPONENT_SWIZZLE_MAX_ENUM = 0x7FFFFFFF\n} VkComponentSwizzle;\n\n\ntypedef enum\n{\n    VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT = 0x00000001,\n    VK_IMAGE_VIEW_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 0x00000004,\n    VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT = 0x00000002,\n    VK_IMAGE_VIEW_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkImageViewCreateFlagBits;\ntypedef VkFlags VkImageViewCreateFlags;\ntypedef enum\n{\n    VK_IMAGE_VIEW_TYPE_1D = 0,\n    VK_IMAGE_VIEW_TYPE_2D = 1,\n    VK_IMAGE_VIEW_TYPE_3D = 2,\n    VK_IMAGE_VIEW_TYPE_CUBE = 3,\n    VK_IMAGE_VIEW_TYPE_1D_ARRAY = 4,\n    VK_IMAGE_VIEW_TYPE_2D_ARRAY = 5,\n    VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 6,\n    VK_IMAGE_VIEW_TYPE_MAX_ENUM = 0x7FFFFFFF\n} VkImageViewType;\n\n\ntypedef enum\n{\n    VK_ACCESS_INDIRECT_COMMAND_READ_BIT = 0x00000001,\n    VK_ACCESS_INDEX_READ_BIT = 0x00000002,\n    VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT = 0x00000004,\n    VK_ACCESS_UNIFORM_READ_BIT = 0x00000008,\n    VK_ACCESS_INPUT_ATTACHMENT_READ_BIT = 0x00000010,\n    VK_ACCESS_SHADER_READ_BIT = 0x00000020,\n    VK_ACCESS_SHADER_WRITE_BIT = 0x00000040,\n    VK_ACCESS_COLOR_ATTACHMENT_READ_BIT = 0x00000080,\n    VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT = 0x00000100,\n    VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 0x00000200,\n    VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 0x00000400,\n    VK_ACCESS_TRANSFER_READ_BIT = 0x00000800,\n    VK_ACCESS_TRANSFER_WRITE_BIT = 0x00001000,\n    VK_ACCESS_HOST_READ_BIT = 0x00002000,\n    VK_ACCESS_HOST_WRITE_BIT = 0x00004000,\n    VK_ACCESS_MEMORY_READ_BIT = 0x00008000,\n    VK_ACCESS_MEMORY_WRITE_BIT = 0x00010000,\n    VK_ACCESS_NONE = 0,\n    VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = 0x02000000,\n    VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = 0x04000000,\n    VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = 0x08000000,\n    VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT = 0x00100000,\n    VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 0x00080000,\n    VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR = 0x00200000,\n    VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 0x00400000,\n    VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 0x01000000,\n    VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR = 0x00800000,\n    VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_EXT = 0x00020000,\n    VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_EXT = 0x00040000,\n    VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV = VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR,\n    VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR,\n    VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR,\n    VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_EXT,\n    VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_EXT,\n    VK_ACCESS_NONE_KHR = VK_ACCESS_NONE,\n    VK_ACCESS_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkAccessFlagBits;\ntypedef VkFlags VkAccessFlags;\n\ntypedef enum\n{\n    VK_DEPENDENCY_BY_REGION_BIT = 0x00000001,\n    VK_DEPENDENCY_DEVICE_GROUP_BIT = 0x00000004,\n    VK_DEPENDENCY_VIEW_LOCAL_BIT = 0x00000002,\n    VK_DEPENDENCY_FEEDBACK_LOOP_BIT_EXT = 0x00000008,\n    VK_DEPENDENCY_QUEUE_FAMILY_OWNERSHIP_TRANSFER_USE_ALL_STAGES_BIT_KHR = 0x00000020,\n    VK_DEPENDENCY_ASYMMETRIC_EVENT_BIT_KHR = 0x00000040,\n    VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR = VK_DEPENDENCY_VIEW_LOCAL_BIT,\n    VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR = VK_DEPENDENCY_DEVICE_GROUP_BIT,\n    VK_DEPENDENCY_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkDependencyFlagBits;\ntypedef VkFlags VkDependencyFlags;\n\ntypedef enum\n{\n    VK_COMMAND_POOL_CREATE_TRANSIENT_BIT = 0x00000001,\n    VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = 0x00000002,\n    VK_COMMAND_POOL_CREATE_PROTECTED_BIT = 0x00000004,\n    VK_COMMAND_POOL_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkCommandPoolCreateFlagBits;\ntypedef VkFlags VkCommandPoolCreateFlags;\n\ntypedef enum\n{\n    VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 0x00000001,\n    VK_COMMAND_POOL_RESET_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkCommandPoolResetFlagBits;\ntypedef VkFlags VkCommandPoolResetFlags;\ntypedef enum\n{\n    VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0,\n    VK_COMMAND_BUFFER_LEVEL_SECONDARY = 1,\n    VK_COMMAND_BUFFER_LEVEL_MAX_ENUM = 0x7FFFFFFF\n} VkCommandBufferLevel;\n\n\ntypedef enum\n{\n    VK_QUERY_CONTROL_PRECISE_BIT = 0x00000001,\n    VK_QUERY_CONTROL_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkQueryControlFlagBits;\ntypedef VkFlags VkQueryControlFlags;\n\ntypedef enum\n{\n    VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = 0x00000001,\n    VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = 0x00000002,\n    VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = 0x00000004,\n    VK_COMMAND_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkCommandBufferUsageFlagBits;\ntypedef VkFlags VkCommandBufferUsageFlags;\n\ntypedef enum\n{\n    VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 0x00000001,\n    VK_COMMAND_BUFFER_RESET_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkCommandBufferResetFlagBits;\ntypedef VkFlags VkCommandBufferResetFlags;\ntypedef enum\n{\n    VK_INDEX_TYPE_UINT16 = 0,\n    VK_INDEX_TYPE_UINT32 = 1,\n    VK_INDEX_TYPE_UINT8 = 1000265000,\n    VK_INDEX_TYPE_NONE_KHR = 1000165000,\n    VK_INDEX_TYPE_NONE_NV = VK_INDEX_TYPE_NONE_KHR,\n    VK_INDEX_TYPE_UINT8_KHR = VK_INDEX_TYPE_UINT8,\n    VK_INDEX_TYPE_UINT8_EXT = VK_INDEX_TYPE_UINT8,\n    VK_INDEX_TYPE_MAX_ENUM = 0x7FFFFFFF\n} VkIndexType;\n\n\ntypedef struct VkExtent2D\n{\n    uint32_t width;\n    uint32_t height;\n} VkExtent2D;\n\ntypedef struct VkExtent3D\n{\n    uint32_t width;\n    uint32_t height;\n    uint32_t depth;\n} VkExtent3D;\n\ntypedef struct VkOffset2D\n{\n    int32_t x;\n    int32_t y;\n} VkOffset2D;\n\ntypedef struct VkOffset3D\n{\n    int32_t x;\n    int32_t y;\n    int32_t z;\n} VkOffset3D;\n\ntypedef struct VkRect2D\n{\n    VkOffset2D offset;\n    VkExtent2D extent;\n} VkRect2D;\n\ntypedef struct VkBaseInStructure\n{\n    VkStructureType sType;\n    const struct VkBaseInStructure* pNext;\n} VkBaseInStructure;\n\ntypedef struct VkBaseOutStructure\n{\n    VkStructureType sType;\n    struct VkBaseOutStructure* pNext;\n} VkBaseOutStructure;\n\ntypedef void* (VKAPI_PTR *PFN_vkAllocationFunction)(void* pUserData, size_t size, size_t alignment, VkSystemAllocationScope allocationScope);\ntypedef void (VKAPI_PTR *PFN_vkFreeFunction)(void* pUserData, void* pMemory);\ntypedef void (VKAPI_PTR *PFN_vkInternalAllocationNotification)(void* pUserData, size_t size, VkInternalAllocationType allocationType, VkSystemAllocationScope allocationScope);\ntypedef void (VKAPI_PTR *PFN_vkInternalFreeNotification)(void* pUserData, size_t size, VkInternalAllocationType allocationType, VkSystemAllocationScope allocationScope);\ntypedef void* (VKAPI_PTR *PFN_vkReallocationFunction)(void* pUserData, void* pOriginal, size_t size, size_t alignment, VkSystemAllocationScope allocationScope);\ntypedef void (VKAPI_PTR *PFN_vkVoidFunction)(void);\n\ntypedef struct VkAllocationCallbacks\n{\n    void* pUserData;\n    PFN_vkAllocationFunction pfnAllocation;\n    PFN_vkReallocationFunction pfnReallocation;\n    PFN_vkFreeFunction pfnFree;\n    PFN_vkInternalAllocationNotification pfnInternalAllocation;\n    PFN_vkInternalFreeNotification pfnInternalFree;\n} VkAllocationCallbacks;\n\ntypedef struct VkApplicationInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    const char* pApplicationName;\n    uint32_t applicationVersion;\n    const char* pEngineName;\n    uint32_t engineVersion;\n    uint32_t apiVersion;\n} VkApplicationInfo;\n\ntypedef struct VkFormatProperties\n{\n    VkFormatFeatureFlags linearTilingFeatures;\n    VkFormatFeatureFlags optimalTilingFeatures;\n    VkFormatFeatureFlags bufferFeatures;\n} VkFormatProperties;\n\ntypedef struct VkImageFormatProperties\n{\n    VkExtent3D maxExtent;\n    uint32_t maxMipLevels;\n    uint32_t maxArrayLayers;\n    VkSampleCountFlags sampleCounts;\n    VkDeviceSize maxResourceSize;\n} VkImageFormatProperties;\n\ntypedef struct VkInstanceCreateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkInstanceCreateFlags flags;\n    const VkApplicationInfo* pApplicationInfo;\n    uint32_t enabledLayerCount;\n    const char* const* ppEnabledLayerNames;\n    uint32_t enabledExtensionCount;\n    const char* const* ppEnabledExtensionNames;\n} VkInstanceCreateInfo;\n\ntypedef struct VkMemoryHeap\n{\n    VkDeviceSize size;\n    VkMemoryHeapFlags flags;\n} VkMemoryHeap;\n\ntypedef struct VkMemoryType\n{\n    VkMemoryPropertyFlags propertyFlags;\n    uint32_t heapIndex;\n} VkMemoryType;\n\ntypedef struct VkPhysicalDeviceFeatures\n{\n    VkBool32 robustBufferAccess;\n    VkBool32 fullDrawIndexUint32;\n    VkBool32 imageCubeArray;\n    VkBool32 independentBlend;\n    VkBool32 geometryShader;\n    VkBool32 tessellationShader;\n    VkBool32 sampleRateShading;\n    VkBool32 dualSrcBlend;\n    VkBool32 logicOp;\n    VkBool32 multiDrawIndirect;\n    VkBool32 drawIndirectFirstInstance;\n    VkBool32 depthClamp;\n    VkBool32 depthBiasClamp;\n    VkBool32 fillModeNonSolid;\n    VkBool32 depthBounds;\n    VkBool32 wideLines;\n    VkBool32 largePoints;\n    VkBool32 alphaToOne;\n    VkBool32 multiViewport;\n    VkBool32 samplerAnisotropy;\n    VkBool32 textureCompressionETC2;\n    VkBool32 textureCompressionASTC_LDR;\n    VkBool32 textureCompressionBC;\n    VkBool32 occlusionQueryPrecise;\n    VkBool32 pipelineStatisticsQuery;\n    VkBool32 vertexPipelineStoresAndAtomics;\n    VkBool32 fragmentStoresAndAtomics;\n    VkBool32 shaderTessellationAndGeometryPointSize;\n    VkBool32 shaderImageGatherExtended;\n    VkBool32 shaderStorageImageExtendedFormats;\n    VkBool32 shaderStorageImageMultisample;\n    VkBool32 shaderStorageImageReadWithoutFormat;\n    VkBool32 shaderStorageImageWriteWithoutFormat;\n    VkBool32 shaderUniformBufferArrayDynamicIndexing;\n    VkBool32 shaderSampledImageArrayDynamicIndexing;\n    VkBool32 shaderStorageBufferArrayDynamicIndexing;\n    VkBool32 shaderStorageImageArrayDynamicIndexing;\n    VkBool32 shaderClipDistance;\n    VkBool32 shaderCullDistance;\n    VkBool32 shaderFloat64;\n    VkBool32 shaderInt64;\n    VkBool32 shaderInt16;\n    VkBool32 shaderResourceResidency;\n    VkBool32 shaderResourceMinLod;\n    VkBool32 sparseBinding;\n    VkBool32 sparseResidencyBuffer;\n    VkBool32 sparseResidencyImage2D;\n    VkBool32 sparseResidencyImage3D;\n    VkBool32 sparseResidency2Samples;\n    VkBool32 sparseResidency4Samples;\n    VkBool32 sparseResidency8Samples;\n    VkBool32 sparseResidency16Samples;\n    VkBool32 sparseResidencyAliased;\n    VkBool32 variableMultisampleRate;\n    VkBool32 inheritedQueries;\n} VkPhysicalDeviceFeatures;\n\ntypedef struct VkPhysicalDeviceLimits\n{\n    uint32_t maxImageDimension1D;\n    uint32_t maxImageDimension2D;\n    uint32_t maxImageDimension3D;\n    uint32_t maxImageDimensionCube;\n    uint32_t maxImageArrayLayers;\n    uint32_t maxTexelBufferElements;\n    uint32_t maxUniformBufferRange;\n    uint32_t maxStorageBufferRange;\n    uint32_t maxPushConstantsSize;\n    uint32_t maxMemoryAllocationCount;\n    uint32_t maxSamplerAllocationCount;\n    VkDeviceSize bufferImageGranularity;\n    VkDeviceSize sparseAddressSpaceSize;\n    uint32_t maxBoundDescriptorSets;\n    uint32_t maxPerStageDescriptorSamplers;\n    uint32_t maxPerStageDescriptorUniformBuffers;\n    uint32_t maxPerStageDescriptorStorageBuffers;\n    uint32_t maxPerStageDescriptorSampledImages;\n    uint32_t maxPerStageDescriptorStorageImages;\n    uint32_t maxPerStageDescriptorInputAttachments;\n    uint32_t maxPerStageResources;\n    uint32_t maxDescriptorSetSamplers;\n    uint32_t maxDescriptorSetUniformBuffers;\n    uint32_t maxDescriptorSetUniformBuffersDynamic;\n    uint32_t maxDescriptorSetStorageBuffers;\n    uint32_t maxDescriptorSetStorageBuffersDynamic;\n    uint32_t maxDescriptorSetSampledImages;\n    uint32_t maxDescriptorSetStorageImages;\n    uint32_t maxDescriptorSetInputAttachments;\n    uint32_t maxVertexInputAttributes;\n    uint32_t maxVertexInputBindings;\n    uint32_t maxVertexInputAttributeOffset;\n    uint32_t maxVertexInputBindingStride;\n    uint32_t maxVertexOutputComponents;\n    uint32_t maxTessellationGenerationLevel;\n    uint32_t maxTessellationPatchSize;\n    uint32_t maxTessellationControlPerVertexInputComponents;\n    uint32_t maxTessellationControlPerVertexOutputComponents;\n    uint32_t maxTessellationControlPerPatchOutputComponents;\n    uint32_t maxTessellationControlTotalOutputComponents;\n    uint32_t maxTessellationEvaluationInputComponents;\n    uint32_t maxTessellationEvaluationOutputComponents;\n    uint32_t maxGeometryShaderInvocations;\n    uint32_t maxGeometryInputComponents;\n    uint32_t maxGeometryOutputComponents;\n    uint32_t maxGeometryOutputVertices;\n    uint32_t maxGeometryTotalOutputComponents;\n    uint32_t maxFragmentInputComponents;\n    uint32_t maxFragmentOutputAttachments;\n    uint32_t maxFragmentDualSrcAttachments;\n    uint32_t maxFragmentCombinedOutputResources;\n    uint32_t maxComputeSharedMemorySize;\n    uint32_t maxComputeWorkGroupCount[3];\n    uint32_t maxComputeWorkGroupInvocations;\n    uint32_t maxComputeWorkGroupSize[3];\n    uint32_t subPixelPrecisionBits;\n    uint32_t subTexelPrecisionBits;\n    uint32_t mipmapPrecisionBits;\n    uint32_t maxDrawIndexedIndexValue;\n    uint32_t maxDrawIndirectCount;\n    float maxSamplerLodBias;\n    float maxSamplerAnisotropy;\n    uint32_t maxViewports;\n    uint32_t maxViewportDimensions[2];\n    float viewportBoundsRange[2];\n    uint32_t viewportSubPixelBits;\n    size_t minMemoryMapAlignment;\n    VkDeviceSize minTexelBufferOffsetAlignment;\n    VkDeviceSize minUniformBufferOffsetAlignment;\n    VkDeviceSize minStorageBufferOffsetAlignment;\n    int32_t minTexelOffset;\n    uint32_t maxTexelOffset;\n    int32_t minTexelGatherOffset;\n    uint32_t maxTexelGatherOffset;\n    float minInterpolationOffset;\n    float maxInterpolationOffset;\n    uint32_t subPixelInterpolationOffsetBits;\n    uint32_t maxFramebufferWidth;\n    uint32_t maxFramebufferHeight;\n    uint32_t maxFramebufferLayers;\n    VkSampleCountFlags framebufferColorSampleCounts;\n    VkSampleCountFlags framebufferDepthSampleCounts;\n    VkSampleCountFlags framebufferStencilSampleCounts;\n    VkSampleCountFlags framebufferNoAttachmentsSampleCounts;\n    uint32_t maxColorAttachments;\n    VkSampleCountFlags sampledImageColorSampleCounts;\n    VkSampleCountFlags sampledImageIntegerSampleCounts;\n    VkSampleCountFlags sampledImageDepthSampleCounts;\n    VkSampleCountFlags sampledImageStencilSampleCounts;\n    VkSampleCountFlags storageImageSampleCounts;\n    uint32_t maxSampleMaskWords;\n    VkBool32 timestampComputeAndGraphics;\n    float timestampPeriod;\n    uint32_t maxClipDistances;\n    uint32_t maxCullDistances;\n    uint32_t maxCombinedClipAndCullDistances;\n    uint32_t discreteQueuePriorities;\n    float pointSizeRange[2];\n    float lineWidthRange[2];\n    float pointSizeGranularity;\n    float lineWidthGranularity;\n    VkBool32 strictLines;\n    VkBool32 standardSampleLocations;\n    VkDeviceSize optimalBufferCopyOffsetAlignment;\n    VkDeviceSize optimalBufferCopyRowPitchAlignment;\n    VkDeviceSize nonCoherentAtomSize;\n} VkPhysicalDeviceLimits;\n\ntypedef struct VkPhysicalDeviceMemoryProperties\n{\n    uint32_t memoryTypeCount;\n    VkMemoryType memoryTypes[VK_MAX_MEMORY_TYPES];\n    uint32_t memoryHeapCount;\n    VkMemoryHeap memoryHeaps[VK_MAX_MEMORY_HEAPS];\n} VkPhysicalDeviceMemoryProperties;\n\ntypedef struct VkPhysicalDeviceSparseProperties\n{\n    VkBool32 residencyStandard2DBlockShape;\n    VkBool32 residencyStandard2DMultisampleBlockShape;\n    VkBool32 residencyStandard3DBlockShape;\n    VkBool32 residencyAlignedMipSize;\n    VkBool32 residencyNonResidentStrict;\n} VkPhysicalDeviceSparseProperties;\n\ntypedef struct VkPhysicalDeviceProperties\n{\n    uint32_t apiVersion;\n    uint32_t driverVersion;\n    uint32_t vendorID;\n    uint32_t deviceID;\n    VkPhysicalDeviceType deviceType;\n    char deviceName[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE];\n    uint8_t pipelineCacheUUID[VK_UUID_SIZE];\n    VkPhysicalDeviceLimits limits;\n    VkPhysicalDeviceSparseProperties sparseProperties;\n} VkPhysicalDeviceProperties;\n\ntypedef struct VkQueueFamilyProperties\n{\n    VkQueueFlags queueFlags;\n    uint32_t queueCount;\n    uint32_t timestampValidBits;\n    VkExtent3D minImageTransferGranularity;\n} VkQueueFamilyProperties;\n\ntypedef struct VkDeviceQueueCreateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkDeviceQueueCreateFlags flags;\n    uint32_t queueFamilyIndex;\n    uint32_t queueCount;\n    const float* pQueuePriorities;\n} VkDeviceQueueCreateInfo;\n\ntypedef struct VkDeviceCreateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkDeviceCreateFlags flags;\n    uint32_t queueCreateInfoCount;\n    const VkDeviceQueueCreateInfo* pQueueCreateInfos;\n    uint32_t enabledLayerCount;\n    const char* const* ppEnabledLayerNames;\n    uint32_t enabledExtensionCount;\n    const char* const* ppEnabledExtensionNames;\n    const VkPhysicalDeviceFeatures* pEnabledFeatures;\n} VkDeviceCreateInfo;\n\ntypedef struct VkExtensionProperties\n{\n    char extensionName[VK_MAX_EXTENSION_NAME_SIZE];\n    uint32_t specVersion;\n} VkExtensionProperties;\n\ntypedef struct VkLayerProperties\n{\n    char layerName[VK_MAX_EXTENSION_NAME_SIZE];\n    uint32_t specVersion;\n    uint32_t implementationVersion;\n    char description[VK_MAX_DESCRIPTION_SIZE];\n} VkLayerProperties;\n\ntypedef struct VkSubmitInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t waitSemaphoreCount;\n    const VkSemaphore* pWaitSemaphores;\n    const VkPipelineStageFlags* pWaitDstStageMask;\n    uint32_t commandBufferCount;\n    const VkCommandBuffer* pCommandBuffers;\n    uint32_t signalSemaphoreCount;\n    const VkSemaphore* pSignalSemaphores;\n} VkSubmitInfo;\n\ntypedef struct VkMappedMemoryRange\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkDeviceMemory memory;\n    VkDeviceSize offset;\n    VkDeviceSize size;\n} VkMappedMemoryRange;\n\ntypedef struct VkMemoryAllocateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkDeviceSize allocationSize;\n    uint32_t memoryTypeIndex;\n} VkMemoryAllocateInfo;\n\ntypedef struct VkMemoryRequirements\n{\n    VkDeviceSize size;\n    VkDeviceSize alignment;\n    uint32_t memoryTypeBits;\n} VkMemoryRequirements;\n\ntypedef struct VkImageSubresource\n{\n    VkImageAspectFlags aspectMask;\n    uint32_t mipLevel;\n    uint32_t arrayLayer;\n} VkImageSubresource;\n\ntypedef struct VkSparseImageFormatProperties\n{\n    VkImageAspectFlags aspectMask;\n    VkExtent3D imageGranularity;\n    VkSparseImageFormatFlags flags;\n} VkSparseImageFormatProperties;\n\ntypedef struct VkSparseImageMemoryBind\n{\n    VkImageSubresource subresource;\n    VkOffset3D offset;\n    VkExtent3D extent;\n    VkDeviceMemory memory;\n    VkDeviceSize memoryOffset;\n    VkSparseMemoryBindFlags flags;\n} VkSparseImageMemoryBind;\n\ntypedef struct VkSparseImageMemoryBindInfo\n{\n    VkImage image;\n    uint32_t bindCount;\n    const VkSparseImageMemoryBind* pBinds;\n} VkSparseImageMemoryBindInfo;\n\ntypedef struct VkSparseImageMemoryRequirements\n{\n    VkSparseImageFormatProperties formatProperties;\n    uint32_t imageMipTailFirstLod;\n    VkDeviceSize imageMipTailSize;\n    VkDeviceSize imageMipTailOffset;\n    VkDeviceSize imageMipTailStride;\n} VkSparseImageMemoryRequirements;\n\ntypedef struct VkSparseMemoryBind\n{\n    VkDeviceSize resourceOffset;\n    VkDeviceSize size;\n    VkDeviceMemory memory;\n    VkDeviceSize memoryOffset;\n    VkSparseMemoryBindFlags flags;\n} VkSparseMemoryBind;\n\ntypedef struct VkSparseBufferMemoryBindInfo\n{\n    VkBuffer buffer;\n    uint32_t bindCount;\n    const VkSparseMemoryBind* pBinds;\n} VkSparseBufferMemoryBindInfo;\n\ntypedef struct VkSparseImageOpaqueMemoryBindInfo\n{\n    VkImage image;\n    uint32_t bindCount;\n    const VkSparseMemoryBind* pBinds;\n} VkSparseImageOpaqueMemoryBindInfo;\n\ntypedef struct VkBindSparseInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t waitSemaphoreCount;\n    const VkSemaphore* pWaitSemaphores;\n    uint32_t bufferBindCount;\n    const VkSparseBufferMemoryBindInfo* pBufferBinds;\n    uint32_t imageOpaqueBindCount;\n    const VkSparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds;\n    uint32_t imageBindCount;\n    const VkSparseImageMemoryBindInfo* pImageBinds;\n    uint32_t signalSemaphoreCount;\n    const VkSemaphore* pSignalSemaphores;\n} VkBindSparseInfo;\n\ntypedef struct VkFenceCreateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkFenceCreateFlags flags;\n} VkFenceCreateInfo;\n\ntypedef struct VkSemaphoreCreateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkSemaphoreCreateFlags flags;\n} VkSemaphoreCreateInfo;\n\ntypedef struct VkQueryPoolCreateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkQueryPoolCreateFlags flags;\n    VkQueryType queryType;\n    uint32_t queryCount;\n    VkQueryPipelineStatisticFlags pipelineStatistics;\n} VkQueryPoolCreateInfo;\n\ntypedef struct VkBufferCreateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkBufferCreateFlags flags;\n    VkDeviceSize size;\n    VkBufferUsageFlags usage;\n    VkSharingMode sharingMode;\n    uint32_t queueFamilyIndexCount;\n    const uint32_t* pQueueFamilyIndices;\n} VkBufferCreateInfo;\n\ntypedef struct VkImageCreateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkImageCreateFlags flags;\n    VkImageType imageType;\n    VkFormat format;\n    VkExtent3D extent;\n    uint32_t mipLevels;\n    uint32_t arrayLayers;\n    VkSampleCountFlagBits samples;\n    VkImageTiling tiling;\n    VkImageUsageFlags usage;\n    VkSharingMode sharingMode;\n    uint32_t queueFamilyIndexCount;\n    const uint32_t* pQueueFamilyIndices;\n    VkImageLayout initialLayout;\n} VkImageCreateInfo;\n\ntypedef struct VkSubresourceLayout\n{\n    VkDeviceSize offset;\n    VkDeviceSize size;\n    VkDeviceSize rowPitch;\n    VkDeviceSize arrayPitch;\n    VkDeviceSize depthPitch;\n} VkSubresourceLayout;\n\ntypedef struct VkComponentMapping\n{\n    VkComponentSwizzle r;\n    VkComponentSwizzle g;\n    VkComponentSwizzle b;\n    VkComponentSwizzle a;\n} VkComponentMapping;\n\ntypedef struct VkImageSubresourceRange\n{\n    VkImageAspectFlags aspectMask;\n    uint32_t baseMipLevel;\n    uint32_t levelCount;\n    uint32_t baseArrayLayer;\n    uint32_t layerCount;\n} VkImageSubresourceRange;\n\ntypedef struct VkImageViewCreateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkImageViewCreateFlags flags;\n    VkImage image;\n    VkImageViewType viewType;\n    VkFormat format;\n    VkComponentMapping components;\n    VkImageSubresourceRange subresourceRange;\n} VkImageViewCreateInfo;\n\ntypedef struct VkCommandPoolCreateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkCommandPoolCreateFlags flags;\n    uint32_t queueFamilyIndex;\n} VkCommandPoolCreateInfo;\n\ntypedef struct VkCommandBufferAllocateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkCommandPool commandPool;\n    VkCommandBufferLevel level;\n    uint32_t commandBufferCount;\n} VkCommandBufferAllocateInfo;\n\ntypedef struct VkCommandBufferInheritanceInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkRenderPass renderPass;\n    uint32_t subpass;\n    VkFramebuffer framebuffer;\n    VkBool32 occlusionQueryEnable;\n    VkQueryControlFlags queryFlags;\n    VkQueryPipelineStatisticFlags pipelineStatistics;\n} VkCommandBufferInheritanceInfo;\n\ntypedef struct VkCommandBufferBeginInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkCommandBufferUsageFlags flags;\n    const VkCommandBufferInheritanceInfo* pInheritanceInfo;\n} VkCommandBufferBeginInfo;\n\ntypedef struct VkBufferCopy\n{\n    VkDeviceSize srcOffset;\n    VkDeviceSize dstOffset;\n    VkDeviceSize size;\n} VkBufferCopy;\n\ntypedef struct VkImageSubresourceLayers\n{\n    VkImageAspectFlags aspectMask;\n    uint32_t mipLevel;\n    uint32_t baseArrayLayer;\n    uint32_t layerCount;\n} VkImageSubresourceLayers;\n\ntypedef struct VkBufferImageCopy\n{\n    VkDeviceSize bufferOffset;\n    uint32_t bufferRowLength;\n    uint32_t bufferImageHeight;\n    VkImageSubresourceLayers imageSubresource;\n    VkOffset3D imageOffset;\n    VkExtent3D imageExtent;\n} VkBufferImageCopy;\n\ntypedef struct VkImageCopy\n{\n    VkImageSubresourceLayers srcSubresource;\n    VkOffset3D srcOffset;\n    VkImageSubresourceLayers dstSubresource;\n    VkOffset3D dstOffset;\n    VkExtent3D extent;\n} VkImageCopy;\n\ntypedef struct VkBufferMemoryBarrier\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkAccessFlags srcAccessMask;\n    VkAccessFlags dstAccessMask;\n    uint32_t srcQueueFamilyIndex;\n    uint32_t dstQueueFamilyIndex;\n    VkBuffer buffer;\n    VkDeviceSize offset;\n    VkDeviceSize size;\n} VkBufferMemoryBarrier;\n\ntypedef struct VkImageMemoryBarrier\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkAccessFlags srcAccessMask;\n    VkAccessFlags dstAccessMask;\n    VkImageLayout oldLayout;\n    VkImageLayout newLayout;\n    uint32_t srcQueueFamilyIndex;\n    uint32_t dstQueueFamilyIndex;\n    VkImage image;\n    VkImageSubresourceRange subresourceRange;\n} VkImageMemoryBarrier;\n\ntypedef struct VkMemoryBarrier\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkAccessFlags srcAccessMask;\n    VkAccessFlags dstAccessMask;\n} VkMemoryBarrier;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateInstance)(const VkInstanceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkInstance* pInstance);\ntypedef void (VKAPI_PTR *PFN_vkDestroyInstance)(VkInstance instance, const VkAllocationCallbacks* pAllocator);\ntypedef VkResult (VKAPI_PTR *PFN_vkEnumeratePhysicalDevices)(VkInstance instance, uint32_t* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices);\ntypedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFeatures)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures);\ntypedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceImageFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties);\ntypedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceProperties)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties);\ntypedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceQueueFamilyProperties)(VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties* pQueueFamilyProperties);\ntypedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMemoryProperties)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties);\ntypedef PFN_vkVoidFunction (VKAPI_PTR *PFN_vkGetInstanceProcAddr)(VkInstance instance, const char* pName);\ntypedef PFN_vkVoidFunction (VKAPI_PTR *PFN_vkGetDeviceProcAddr)(VkDevice device, const char* pName);\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateDevice)(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDevice* pDevice);\ntypedef void (VKAPI_PTR *PFN_vkDestroyDevice)(VkDevice device, const VkAllocationCallbacks* pAllocator);\ntypedef VkResult (VKAPI_PTR *PFN_vkEnumerateInstanceExtensionProperties)(const char* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties);\ntypedef VkResult (VKAPI_PTR *PFN_vkEnumerateDeviceExtensionProperties)(VkPhysicalDevice physicalDevice, const char* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties);\ntypedef VkResult (VKAPI_PTR *PFN_vkEnumerateInstanceLayerProperties)(uint32_t* pPropertyCount, VkLayerProperties* pProperties);\ntypedef VkResult (VKAPI_PTR *PFN_vkEnumerateDeviceLayerProperties)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkLayerProperties* pProperties);\ntypedef void (VKAPI_PTR *PFN_vkGetDeviceQueue)(VkDevice device, uint32_t queueFamilyIndex, uint32_t queueIndex, VkQueue* pQueue);\ntypedef VkResult (VKAPI_PTR *PFN_vkQueueSubmit)(VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence fence);\ntypedef VkResult (VKAPI_PTR *PFN_vkQueueWaitIdle)(VkQueue queue);\ntypedef VkResult (VKAPI_PTR *PFN_vkDeviceWaitIdle)(VkDevice device);\ntypedef VkResult (VKAPI_PTR *PFN_vkAllocateMemory)(VkDevice device, const VkMemoryAllocateInfo* pAllocateInfo, const VkAllocationCallbacks* pAllocator, VkDeviceMemory* pMemory);\ntypedef void (VKAPI_PTR *PFN_vkFreeMemory)(VkDevice device, VkDeviceMemory memory, const VkAllocationCallbacks* pAllocator);\ntypedef VkResult (VKAPI_PTR *PFN_vkMapMemory)(VkDevice device, VkDeviceMemory memory, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData);\ntypedef void (VKAPI_PTR *PFN_vkUnmapMemory)(VkDevice device, VkDeviceMemory memory);\ntypedef VkResult (VKAPI_PTR *PFN_vkFlushMappedMemoryRanges)(VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges);\ntypedef VkResult (VKAPI_PTR *PFN_vkInvalidateMappedMemoryRanges)(VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges);\ntypedef void (VKAPI_PTR *PFN_vkGetDeviceMemoryCommitment)(VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes);\ntypedef VkResult (VKAPI_PTR *PFN_vkBindBufferMemory)(VkDevice device, VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset);\ntypedef VkResult (VKAPI_PTR *PFN_vkBindImageMemory)(VkDevice device, VkImage image, VkDeviceMemory memory, VkDeviceSize memoryOffset);\ntypedef void (VKAPI_PTR *PFN_vkGetBufferMemoryRequirements)(VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements);\ntypedef void (VKAPI_PTR *PFN_vkGetImageMemoryRequirements)(VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements);\ntypedef void (VKAPI_PTR *PFN_vkGetImageSparseMemoryRequirements)(VkDevice device, VkImage image, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements* pSparseMemoryRequirements);\ntypedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceSparseImageFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkSampleCountFlagBits samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t* pPropertyCount, VkSparseImageFormatProperties* pProperties);\ntypedef VkResult (VKAPI_PTR *PFN_vkQueueBindSparse)(VkQueue queue, uint32_t bindInfoCount, const VkBindSparseInfo* pBindInfo, VkFence fence);\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateFence)(VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence);\ntypedef void (VKAPI_PTR *PFN_vkDestroyFence)(VkDevice device, VkFence fence, const VkAllocationCallbacks* pAllocator);\ntypedef VkResult (VKAPI_PTR *PFN_vkResetFences)(VkDevice device, uint32_t fenceCount, const VkFence* pFences);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetFenceStatus)(VkDevice device, VkFence fence);\ntypedef VkResult (VKAPI_PTR *PFN_vkWaitForFences)(VkDevice device, uint32_t fenceCount, const VkFence* pFences, VkBool32 waitAll, uint64_t timeout);\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateSemaphore)(VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore);\ntypedef void (VKAPI_PTR *PFN_vkDestroySemaphore)(VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator);\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateQueryPool)(VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkQueryPool* pQueryPool);\ntypedef void (VKAPI_PTR *PFN_vkDestroyQueryPool)(VkDevice device, VkQueryPool queryPool, const VkAllocationCallbacks* pAllocator);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetQueryPoolResults)(VkDevice device, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, size_t dataSize, void* pData, VkDeviceSize stride, VkQueryResultFlags flags);\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateBuffer)(VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer);\ntypedef void (VKAPI_PTR *PFN_vkDestroyBuffer)(VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator);\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateImage)(VkDevice device, const VkImageCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImage* pImage);\ntypedef void (VKAPI_PTR *PFN_vkDestroyImage)(VkDevice device, VkImage image, const VkAllocationCallbacks* pAllocator);\ntypedef void (VKAPI_PTR *PFN_vkGetImageSubresourceLayout)(VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout);\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateImageView)(VkDevice device, const VkImageViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImageView* pView);\ntypedef void (VKAPI_PTR *PFN_vkDestroyImageView)(VkDevice device, VkImageView imageView, const VkAllocationCallbacks* pAllocator);\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateCommandPool)(VkDevice device, const VkCommandPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCommandPool* pCommandPool);\ntypedef void (VKAPI_PTR *PFN_vkDestroyCommandPool)(VkDevice device, VkCommandPool commandPool, const VkAllocationCallbacks* pAllocator);\ntypedef VkResult (VKAPI_PTR *PFN_vkResetCommandPool)(VkDevice device, VkCommandPool commandPool, VkCommandPoolResetFlags flags);\ntypedef VkResult (VKAPI_PTR *PFN_vkAllocateCommandBuffers)(VkDevice device, const VkCommandBufferAllocateInfo* pAllocateInfo, VkCommandBuffer* pCommandBuffers);\ntypedef void (VKAPI_PTR *PFN_vkFreeCommandBuffers)(VkDevice device, VkCommandPool commandPool, uint32_t commandBufferCount, const VkCommandBuffer* pCommandBuffers);\ntypedef VkResult (VKAPI_PTR *PFN_vkBeginCommandBuffer)(VkCommandBuffer commandBuffer, const VkCommandBufferBeginInfo* pBeginInfo);\ntypedef VkResult (VKAPI_PTR *PFN_vkEndCommandBuffer)(VkCommandBuffer commandBuffer);\ntypedef VkResult (VKAPI_PTR *PFN_vkResetCommandBuffer)(VkCommandBuffer commandBuffer, VkCommandBufferResetFlags flags);\ntypedef void (VKAPI_PTR *PFN_vkCmdCopyBuffer)(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferCopy* pRegions);\ntypedef void (VKAPI_PTR *PFN_vkCmdCopyImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageCopy* pRegions);\ntypedef void (VKAPI_PTR *PFN_vkCmdCopyBufferToImage)(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkBufferImageCopy* pRegions);\ntypedef void (VKAPI_PTR *PFN_vkCmdCopyImageToBuffer)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferImageCopy* pRegions);\ntypedef void (VKAPI_PTR *PFN_vkCmdUpdateBuffer)(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, const void* pData);\ntypedef void (VKAPI_PTR *PFN_vkCmdFillBuffer)(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, uint32_t data);\ntypedef void (VKAPI_PTR *PFN_vkCmdPipelineBarrier)(VkCommandBuffer commandBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, uint32_t memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, uint32_t bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, uint32_t imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers);\ntypedef void (VKAPI_PTR *PFN_vkCmdBeginQuery)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, VkQueryControlFlags flags);\ntypedef void (VKAPI_PTR *PFN_vkCmdEndQuery)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query);\ntypedef void (VKAPI_PTR *PFN_vkCmdResetQueryPool)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount);\ntypedef void (VKAPI_PTR *PFN_vkCmdWriteTimestamp)(VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t query);\ntypedef void (VKAPI_PTR *PFN_vkCmdCopyQueryPoolResults)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags);\ntypedef void (VKAPI_PTR *PFN_vkCmdExecuteCommands)(VkCommandBuffer commandBuffer, uint32_t commandBufferCount, const VkCommandBuffer* pCommandBuffers);\n\n#define VK_COMPUTE_VERSION_1_0 1\n\nVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkEvent)\nVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBufferView)\nVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkShaderModule)\nVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipelineCache)\nVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipeline)\nVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipelineLayout)\nVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorSetLayout)\nVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSampler)\nVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorSet)\nVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorPool)\n\ntypedef enum\n{\n    VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1,\n    VK_PIPELINE_CACHE_HEADER_VERSION_SAFETY_CRITICAL_ONE = 1000298001,\n    VK_PIPELINE_CACHE_HEADER_VERSION_DATA_GRAPH_QCOM = 1000629000,\n    VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM = 0x7FFFFFFF\n} VkPipelineCacheHeaderVersion;\n\n\ntypedef enum\n{\n    VK_EVENT_CREATE_DEVICE_ONLY_BIT = 0x00000001,\n    VK_EVENT_CREATE_DEVICE_ONLY_BIT_KHR = VK_EVENT_CREATE_DEVICE_ONLY_BIT,\n    VK_EVENT_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkEventCreateFlagBits;\ntypedef VkFlags VkEventCreateFlags;\ntypedef VkFlags VkBufferViewCreateFlags;\ntypedef VkFlags VkShaderModuleCreateFlags;\n\ntypedef enum\n{\n    VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT = 0x00000001,\n    VK_PIPELINE_CACHE_CREATE_READ_ONLY_BIT = 0x00000002,\n    VK_PIPELINE_CACHE_CREATE_USE_APPLICATION_STORAGE_BIT = 0x00000004,\n    VK_PIPELINE_CACHE_CREATE_INTERNALLY_SYNCHRONIZED_MERGE_BIT_KHR = 0x00000008,\n    VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT = VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT,\n    VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkPipelineCacheCreateFlagBits;\ntypedef VkFlags VkPipelineCacheCreateFlags;\n\ntypedef enum\n{\n    VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 0x00000001,\n    VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 0x00000002,\n    VK_PIPELINE_CREATE_DERIVATIVE_BIT = 0x00000004,\n    VK_PIPELINE_CREATE_DISPATCH_BASE_BIT = 0x00000010,\n    VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = 0x00000008,\n    VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT = 0x00000100,\n    VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT = 0x00000200,\n    VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT = 0x08000000,\n    VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT = 0x40000000,\n    VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR = 0x00004000,\n    VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR = 0x00008000,\n    VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR = 0x00010000,\n    VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR = 0x00020000,\n    VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR = 0x00001000,\n    VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR = 0x00002000,\n    VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR = 0x00080000,\n    VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV = 0x00000020,\n    VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 0x00400000,\n    VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x00200000,\n    VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR = 0x00000040,\n    VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR = 0x00000080,\n    VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV = 0x00040000,\n    VK_PIPELINE_CREATE_LIBRARY_BIT_KHR = 0x00000800,\n    VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT = 0x20000000,\n    VK_PIPELINE_CREATE_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT = 0x00800000,\n    VK_PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT = 0x00000400,\n    VK_PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV = 0x00100000,\n    VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 0x02000000,\n    VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 0x04000000,\n    VK_PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT = 0x01000000,\n    VK_PIPELINE_CREATE_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV = 0x10000000,\n    VK_PIPELINE_CREATE_DISPATCH_BASE = VK_PIPELINE_CREATE_DISPATCH_BASE_BIT,\n    VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR = VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT,\n    VK_PIPELINE_CREATE_DISPATCH_BASE_BIT_KHR = VK_PIPELINE_CREATE_DISPATCH_BASE_BIT,\n    VK_PIPELINE_CREATE_DISPATCH_BASE_KHR = VK_PIPELINE_CREATE_DISPATCH_BASE_BIT,\n    VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT,\n    VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR,\n    VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT = VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT,\n    VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT = VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT,\n    VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT = VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT,\n    VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT = VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT,\n    VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkPipelineCreateFlagBits;\ntypedef VkFlags VkPipelineCreateFlags;\n\ntypedef enum\n{\n    VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT = 0x00000002,\n    VK_PIPELINE_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkPipelineLayoutCreateFlagBits;\ntypedef VkFlags VkPipelineLayoutCreateFlags;\n\ntypedef enum\n{\n    VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT = 0x00000001,\n    VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT = 0x00000002,\n    VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT,\n    VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT,\n    VK_PIPELINE_SHADER_STAGE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkPipelineShaderStageCreateFlagBits;\ntypedef VkFlags VkPipelineShaderStageCreateFlags;\ntypedef enum\n{\n    VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = 0,\n    VK_BORDER_COLOR_INT_TRANSPARENT_BLACK = 1,\n    VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK = 2,\n    VK_BORDER_COLOR_INT_OPAQUE_BLACK = 3,\n    VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE = 4,\n    VK_BORDER_COLOR_INT_OPAQUE_WHITE = 5,\n    VK_BORDER_COLOR_FLOAT_CUSTOM_EXT = 1000287003,\n    VK_BORDER_COLOR_INT_CUSTOM_EXT = 1000287004,\n    VK_BORDER_COLOR_MAX_ENUM = 0x7FFFFFFF\n} VkBorderColor;\n\ntypedef enum\n{\n    VK_FILTER_NEAREST = 0,\n    VK_FILTER_LINEAR = 1,\n    VK_FILTER_CUBIC_EXT = 1000015000,\n    VK_FILTER_CUBIC_IMG = VK_FILTER_CUBIC_EXT,\n    VK_FILTER_MAX_ENUM = 0x7FFFFFFF\n} VkFilter;\n\ntypedef enum\n{\n    VK_SAMPLER_ADDRESS_MODE_REPEAT = 0,\n    VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = 1,\n    VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = 2,\n    VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = 3,\n    VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = 4,\n    VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE_KHR = VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE,\n    VK_SAMPLER_ADDRESS_MODE_MAX_ENUM = 0x7FFFFFFF\n} VkSamplerAddressMode;\n\n\ntypedef enum\n{\n    VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT = 0x00000001,\n    VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT = 0x00000002,\n    VK_SAMPLER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 0x00000008,\n    VK_SAMPLER_CREATE_NON_SEAMLESS_CUBE_MAP_BIT_EXT = 0x00000004,\n    VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM = 0x00000010,\n    VK_SAMPLER_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkSamplerCreateFlagBits;\ntypedef VkFlags VkSamplerCreateFlags;\ntypedef enum\n{\n    VK_COMPARE_OP_NEVER = 0,\n    VK_COMPARE_OP_LESS = 1,\n    VK_COMPARE_OP_EQUAL = 2,\n    VK_COMPARE_OP_LESS_OR_EQUAL = 3,\n    VK_COMPARE_OP_GREATER = 4,\n    VK_COMPARE_OP_NOT_EQUAL = 5,\n    VK_COMPARE_OP_GREATER_OR_EQUAL = 6,\n    VK_COMPARE_OP_ALWAYS = 7,\n    VK_COMPARE_OP_MAX_ENUM = 0x7FFFFFFF\n} VkCompareOp;\n\ntypedef enum\n{\n    VK_SAMPLER_MIPMAP_MODE_NEAREST = 0,\n    VK_SAMPLER_MIPMAP_MODE_LINEAR = 1,\n    VK_SAMPLER_MIPMAP_MODE_MAX_ENUM = 0x7FFFFFFF\n} VkSamplerMipmapMode;\n\ntypedef enum\n{\n    VK_DESCRIPTOR_TYPE_SAMPLER = 0,\n    VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 1,\n    VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 2,\n    VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 3,\n    VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 4,\n    VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 5,\n    VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 6,\n    VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 7,\n    VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 8,\n    VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 9,\n    VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 10,\n    VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK = 1000138000,\n    VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR = 1000150000,\n    VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000,\n    VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM = 1000440000,\n    VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM = 1000440001,\n    VK_DESCRIPTOR_TYPE_TENSOR_ARM = 1000460000,\n    VK_DESCRIPTOR_TYPE_MUTABLE_EXT = 1000351000,\n    VK_DESCRIPTOR_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_NV = 1000570000,\n    VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT = VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK,\n    VK_DESCRIPTOR_TYPE_MUTABLE_VALVE = VK_DESCRIPTOR_TYPE_MUTABLE_EXT,\n    VK_DESCRIPTOR_TYPE_MAX_ENUM = 0x7FFFFFFF\n} VkDescriptorType;\n\n\ntypedef enum\n{\n    VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 0x00000001,\n    VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT = 0x00000002,\n    VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_EXT = 0x00000004,\n    VK_DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_SETS_BIT_NV = 0x00000008,\n    VK_DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_POOLS_BIT_NV = 0x00000010,\n    VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT,\n    VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_VALVE = VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_EXT,\n    VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkDescriptorPoolCreateFlagBits;\ntypedef VkFlags VkDescriptorPoolCreateFlags;\ntypedef VkFlags VkDescriptorPoolResetFlags;\n\ntypedef enum\n{\n    VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT = 0x00000002,\n    VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT = 0x00000001,\n    VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT = 0x00000010,\n    VK_DESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT = 0x00000020,\n    VK_DESCRIPTOR_SET_LAYOUT_CREATE_INDIRECT_BINDABLE_BIT_NV = 0x00000080,\n    VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT = 0x00000004,\n    VK_DESCRIPTOR_SET_LAYOUT_CREATE_PER_STAGE_BIT_NV = 0x00000040,\n    VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR = VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT,\n    VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT = VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT,\n    VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_VALVE = VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT,\n    VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkDescriptorSetLayoutCreateFlagBits;\ntypedef VkFlags VkDescriptorSetLayoutCreateFlags;\ntypedef enum\n{\n    VK_PIPELINE_BIND_POINT_GRAPHICS = 0,\n    VK_PIPELINE_BIND_POINT_COMPUTE = 1,\n    VK_PIPELINE_BIND_POINT_EXECUTION_GRAPH_AMDX = 1000134000,\n    VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR = 1000165000,\n    VK_PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI = 1000369003,\n    VK_PIPELINE_BIND_POINT_DATA_GRAPH_ARM = 1000507000,\n    VK_PIPELINE_BIND_POINT_RAY_TRACING_NV = VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR,\n    VK_PIPELINE_BIND_POINT_MAX_ENUM = 0x7FFFFFFF\n} VkPipelineBindPoint;\n\n\ntypedef struct VkDispatchIndirectCommand\n{\n    uint32_t x;\n    uint32_t y;\n    uint32_t z;\n} VkDispatchIndirectCommand;\n\ntypedef struct VkPipelineCacheHeaderVersionOne\n{\n    uint32_t headerSize;\n    VkPipelineCacheHeaderVersion headerVersion;\n    uint32_t vendorID;\n    uint32_t deviceID;\n    uint8_t pipelineCacheUUID[VK_UUID_SIZE];\n} VkPipelineCacheHeaderVersionOne;\n\ntypedef struct VkEventCreateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkEventCreateFlags flags;\n} VkEventCreateInfo;\n\ntypedef struct VkBufferViewCreateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkBufferViewCreateFlags flags;\n    VkBuffer buffer;\n    VkFormat format;\n    VkDeviceSize offset;\n    VkDeviceSize range;\n} VkBufferViewCreateInfo;\n\ntypedef struct VkShaderModuleCreateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkShaderModuleCreateFlags flags;\n    size_t codeSize;\n    const uint32_t* pCode;\n} VkShaderModuleCreateInfo;\n\ntypedef struct VkPipelineCacheCreateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkPipelineCacheCreateFlags flags;\n    size_t initialDataSize;\n    const void* pInitialData;\n} VkPipelineCacheCreateInfo;\n\ntypedef struct VkSpecializationMapEntry\n{\n    uint32_t constantID;\n    uint32_t offset;\n    size_t size;\n} VkSpecializationMapEntry;\n\ntypedef struct VkSpecializationInfo\n{\n    uint32_t mapEntryCount;\n    const VkSpecializationMapEntry* pMapEntries;\n    size_t dataSize;\n    const void* pData;\n} VkSpecializationInfo;\n\ntypedef struct VkPipelineShaderStageCreateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkPipelineShaderStageCreateFlags flags;\n    VkShaderStageFlagBits stage;\n    VkShaderModule module;\n    const char* pName;\n    const VkSpecializationInfo* pSpecializationInfo;\n} VkPipelineShaderStageCreateInfo;\n\ntypedef struct VkComputePipelineCreateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkPipelineCreateFlags flags;\n    VkPipelineShaderStageCreateInfo stage;\n    VkPipelineLayout layout;\n    VkPipeline basePipelineHandle;\n    int32_t basePipelineIndex;\n} VkComputePipelineCreateInfo;\n\ntypedef struct VkPushConstantRange\n{\n    VkShaderStageFlags stageFlags;\n    uint32_t offset;\n    uint32_t size;\n} VkPushConstantRange;\n\ntypedef struct VkPipelineLayoutCreateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkPipelineLayoutCreateFlags flags;\n    uint32_t setLayoutCount;\n    const VkDescriptorSetLayout* pSetLayouts;\n    uint32_t pushConstantRangeCount;\n    const VkPushConstantRange* pPushConstantRanges;\n} VkPipelineLayoutCreateInfo;\n\ntypedef struct VkSamplerCreateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkSamplerCreateFlags flags;\n    VkFilter magFilter;\n    VkFilter minFilter;\n    VkSamplerMipmapMode mipmapMode;\n    VkSamplerAddressMode addressModeU;\n    VkSamplerAddressMode addressModeV;\n    VkSamplerAddressMode addressModeW;\n    float mipLodBias;\n    VkBool32 anisotropyEnable;\n    float maxAnisotropy;\n    VkBool32 compareEnable;\n    VkCompareOp compareOp;\n    float minLod;\n    float maxLod;\n    VkBorderColor borderColor;\n    VkBool32 unnormalizedCoordinates;\n} VkSamplerCreateInfo;\n\ntypedef struct VkCopyDescriptorSet\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkDescriptorSet srcSet;\n    uint32_t srcBinding;\n    uint32_t srcArrayElement;\n    VkDescriptorSet dstSet;\n    uint32_t dstBinding;\n    uint32_t dstArrayElement;\n    uint32_t descriptorCount;\n} VkCopyDescriptorSet;\n\ntypedef struct VkDescriptorBufferInfo\n{\n    VkBuffer buffer;\n    VkDeviceSize offset;\n    VkDeviceSize range;\n} VkDescriptorBufferInfo;\n\ntypedef struct VkDescriptorImageInfo\n{\n    VkSampler sampler;\n    VkImageView imageView;\n    VkImageLayout imageLayout;\n} VkDescriptorImageInfo;\n\ntypedef struct VkDescriptorPoolSize\n{\n    VkDescriptorType type;\n    uint32_t descriptorCount;\n} VkDescriptorPoolSize;\n\ntypedef struct VkDescriptorPoolCreateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkDescriptorPoolCreateFlags flags;\n    uint32_t maxSets;\n    uint32_t poolSizeCount;\n    const VkDescriptorPoolSize* pPoolSizes;\n} VkDescriptorPoolCreateInfo;\n\ntypedef struct VkDescriptorSetAllocateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkDescriptorPool descriptorPool;\n    uint32_t descriptorSetCount;\n    const VkDescriptorSetLayout* pSetLayouts;\n} VkDescriptorSetAllocateInfo;\n\ntypedef struct VkDescriptorSetLayoutBinding\n{\n    uint32_t binding;\n    VkDescriptorType descriptorType;\n    uint32_t descriptorCount;\n    VkShaderStageFlags stageFlags;\n    const VkSampler* pImmutableSamplers;\n} VkDescriptorSetLayoutBinding;\n\ntypedef struct VkDescriptorSetLayoutCreateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkDescriptorSetLayoutCreateFlags flags;\n    uint32_t bindingCount;\n    const VkDescriptorSetLayoutBinding* pBindings;\n} VkDescriptorSetLayoutCreateInfo;\n\ntypedef struct VkWriteDescriptorSet\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkDescriptorSet dstSet;\n    uint32_t dstBinding;\n    uint32_t dstArrayElement;\n    uint32_t descriptorCount;\n    VkDescriptorType descriptorType;\n    const VkDescriptorImageInfo* pImageInfo;\n    const VkDescriptorBufferInfo* pBufferInfo;\n    const VkBufferView* pTexelBufferView;\n} VkWriteDescriptorSet;\n\ntypedef union VkClearColorValue\n{\n    float float32[4];\n    int32_t int32[4];\n    uint32_t uint32[4];\n} VkClearColorValue;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateEvent)(VkDevice device, const VkEventCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkEvent* pEvent);\ntypedef void (VKAPI_PTR *PFN_vkDestroyEvent)(VkDevice device, VkEvent event, const VkAllocationCallbacks* pAllocator);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetEventStatus)(VkDevice device, VkEvent event);\ntypedef VkResult (VKAPI_PTR *PFN_vkSetEvent)(VkDevice device, VkEvent event);\ntypedef VkResult (VKAPI_PTR *PFN_vkResetEvent)(VkDevice device, VkEvent event);\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateBufferView)(VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferView* pView);\ntypedef void (VKAPI_PTR *PFN_vkDestroyBufferView)(VkDevice device, VkBufferView bufferView, const VkAllocationCallbacks* pAllocator);\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateShaderModule)(VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkShaderModule* pShaderModule);\ntypedef void (VKAPI_PTR *PFN_vkDestroyShaderModule)(VkDevice device, VkShaderModule shaderModule, const VkAllocationCallbacks* pAllocator);\ntypedef VkResult (VKAPI_PTR *PFN_vkCreatePipelineCache)(VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineCache* pPipelineCache);\ntypedef void (VKAPI_PTR *PFN_vkDestroyPipelineCache)(VkDevice device, VkPipelineCache pipelineCache, const VkAllocationCallbacks* pAllocator);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetPipelineCacheData)(VkDevice device, VkPipelineCache pipelineCache, size_t* pDataSize, void* pData);\ntypedef VkResult (VKAPI_PTR *PFN_vkMergePipelineCaches)(VkDevice device, VkPipelineCache dstCache, uint32_t srcCacheCount, const VkPipelineCache* pSrcCaches);\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateComputePipelines)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines);\ntypedef void (VKAPI_PTR *PFN_vkDestroyPipeline)(VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator);\ntypedef VkResult (VKAPI_PTR *PFN_vkCreatePipelineLayout)(VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineLayout* pPipelineLayout);\ntypedef void (VKAPI_PTR *PFN_vkDestroyPipelineLayout)(VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocationCallbacks* pAllocator);\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateSampler)(VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSampler* pSampler);\ntypedef void (VKAPI_PTR *PFN_vkDestroySampler)(VkDevice device, VkSampler sampler, const VkAllocationCallbacks* pAllocator);\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateDescriptorSetLayout)(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorSetLayout* pSetLayout);\ntypedef void (VKAPI_PTR *PFN_vkDestroyDescriptorSetLayout)(VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocationCallbacks* pAllocator);\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateDescriptorPool)(VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorPool* pDescriptorPool);\ntypedef void (VKAPI_PTR *PFN_vkDestroyDescriptorPool)(VkDevice device, VkDescriptorPool descriptorPool, const VkAllocationCallbacks* pAllocator);\ntypedef VkResult (VKAPI_PTR *PFN_vkResetDescriptorPool)(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags);\ntypedef VkResult (VKAPI_PTR *PFN_vkAllocateDescriptorSets)(VkDevice device, const VkDescriptorSetAllocateInfo* pAllocateInfo, VkDescriptorSet* pDescriptorSets);\ntypedef VkResult (VKAPI_PTR *PFN_vkFreeDescriptorSets)(VkDevice device, VkDescriptorPool descriptorPool, uint32_t descriptorSetCount, const VkDescriptorSet* pDescriptorSets);\ntypedef void (VKAPI_PTR *PFN_vkUpdateDescriptorSets)(VkDevice device, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const VkCopyDescriptorSet* pDescriptorCopies);\ntypedef void (VKAPI_PTR *PFN_vkCmdBindPipeline)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline);\ntypedef void (VKAPI_PTR *PFN_vkCmdBindDescriptorSets)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t firstSet, uint32_t descriptorSetCount, const VkDescriptorSet* pDescriptorSets, uint32_t dynamicOffsetCount, const uint32_t* pDynamicOffsets);\ntypedef void (VKAPI_PTR *PFN_vkCmdClearColorImage)(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);\ntypedef void (VKAPI_PTR *PFN_vkCmdDispatch)(VkCommandBuffer commandBuffer, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ);\ntypedef void (VKAPI_PTR *PFN_vkCmdDispatchIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetEvent)(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask);\ntypedef void (VKAPI_PTR *PFN_vkCmdResetEvent)(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask);\ntypedef void (VKAPI_PTR *PFN_vkCmdWaitEvents)(VkCommandBuffer commandBuffer, uint32_t eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, uint32_t memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, uint32_t bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, uint32_t imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers);\ntypedef void (VKAPI_PTR *PFN_vkCmdPushConstants)(VkCommandBuffer commandBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues);\n\n#define VK_GRAPHICS_VERSION_1_0 1\n\n#define VK_ATTACHMENT_UNUSED (~0U)\n#define VK_SUBPASS_EXTERNAL (~0U)\n\ntypedef uint32_t VkSampleMask;\n\ntypedef enum\n{\n    VK_BLEND_FACTOR_ZERO = 0,\n    VK_BLEND_FACTOR_ONE = 1,\n    VK_BLEND_FACTOR_SRC_COLOR = 2,\n    VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 3,\n    VK_BLEND_FACTOR_DST_COLOR = 4,\n    VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 5,\n    VK_BLEND_FACTOR_SRC_ALPHA = 6,\n    VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 7,\n    VK_BLEND_FACTOR_DST_ALPHA = 8,\n    VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 9,\n    VK_BLEND_FACTOR_CONSTANT_COLOR = 10,\n    VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 11,\n    VK_BLEND_FACTOR_CONSTANT_ALPHA = 12,\n    VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 13,\n    VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 14,\n    VK_BLEND_FACTOR_SRC1_COLOR = 15,\n    VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 16,\n    VK_BLEND_FACTOR_SRC1_ALPHA = 17,\n    VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 18,\n    VK_BLEND_FACTOR_MAX_ENUM = 0x7FFFFFFF\n} VkBlendFactor;\n\ntypedef enum\n{\n    VK_BLEND_OP_ADD = 0,\n    VK_BLEND_OP_SUBTRACT = 1,\n    VK_BLEND_OP_REVERSE_SUBTRACT = 2,\n    VK_BLEND_OP_MIN = 3,\n    VK_BLEND_OP_MAX = 4,\n    VK_BLEND_OP_ZERO_EXT = 1000148000,\n    VK_BLEND_OP_SRC_EXT = 1000148001,\n    VK_BLEND_OP_DST_EXT = 1000148002,\n    VK_BLEND_OP_SRC_OVER_EXT = 1000148003,\n    VK_BLEND_OP_DST_OVER_EXT = 1000148004,\n    VK_BLEND_OP_SRC_IN_EXT = 1000148005,\n    VK_BLEND_OP_DST_IN_EXT = 1000148006,\n    VK_BLEND_OP_SRC_OUT_EXT = 1000148007,\n    VK_BLEND_OP_DST_OUT_EXT = 1000148008,\n    VK_BLEND_OP_SRC_ATOP_EXT = 1000148009,\n    VK_BLEND_OP_DST_ATOP_EXT = 1000148010,\n    VK_BLEND_OP_XOR_EXT = 1000148011,\n    VK_BLEND_OP_MULTIPLY_EXT = 1000148012,\n    VK_BLEND_OP_SCREEN_EXT = 1000148013,\n    VK_BLEND_OP_OVERLAY_EXT = 1000148014,\n    VK_BLEND_OP_DARKEN_EXT = 1000148015,\n    VK_BLEND_OP_LIGHTEN_EXT = 1000148016,\n    VK_BLEND_OP_COLORDODGE_EXT = 1000148017,\n    VK_BLEND_OP_COLORBURN_EXT = 1000148018,\n    VK_BLEND_OP_HARDLIGHT_EXT = 1000148019,\n    VK_BLEND_OP_SOFTLIGHT_EXT = 1000148020,\n    VK_BLEND_OP_DIFFERENCE_EXT = 1000148021,\n    VK_BLEND_OP_EXCLUSION_EXT = 1000148022,\n    VK_BLEND_OP_INVERT_EXT = 1000148023,\n    VK_BLEND_OP_INVERT_RGB_EXT = 1000148024,\n    VK_BLEND_OP_LINEARDODGE_EXT = 1000148025,\n    VK_BLEND_OP_LINEARBURN_EXT = 1000148026,\n    VK_BLEND_OP_VIVIDLIGHT_EXT = 1000148027,\n    VK_BLEND_OP_LINEARLIGHT_EXT = 1000148028,\n    VK_BLEND_OP_PINLIGHT_EXT = 1000148029,\n    VK_BLEND_OP_HARDMIX_EXT = 1000148030,\n    VK_BLEND_OP_HSL_HUE_EXT = 1000148031,\n    VK_BLEND_OP_HSL_SATURATION_EXT = 1000148032,\n    VK_BLEND_OP_HSL_COLOR_EXT = 1000148033,\n    VK_BLEND_OP_HSL_LUMINOSITY_EXT = 1000148034,\n    VK_BLEND_OP_PLUS_EXT = 1000148035,\n    VK_BLEND_OP_PLUS_CLAMPED_EXT = 1000148036,\n    VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT = 1000148037,\n    VK_BLEND_OP_PLUS_DARKER_EXT = 1000148038,\n    VK_BLEND_OP_MINUS_EXT = 1000148039,\n    VK_BLEND_OP_MINUS_CLAMPED_EXT = 1000148040,\n    VK_BLEND_OP_CONTRAST_EXT = 1000148041,\n    VK_BLEND_OP_INVERT_OVG_EXT = 1000148042,\n    VK_BLEND_OP_RED_EXT = 1000148043,\n    VK_BLEND_OP_GREEN_EXT = 1000148044,\n    VK_BLEND_OP_BLUE_EXT = 1000148045,\n    VK_BLEND_OP_MAX_ENUM = 0x7FFFFFFF\n} VkBlendOp;\n\n\ntypedef enum\n{\n    VK_COLOR_COMPONENT_R_BIT = 0x00000001,\n    VK_COLOR_COMPONENT_G_BIT = 0x00000002,\n    VK_COLOR_COMPONENT_B_BIT = 0x00000004,\n    VK_COLOR_COMPONENT_A_BIT = 0x00000008,\n    VK_COLOR_COMPONENT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkColorComponentFlagBits;\ntypedef VkFlags VkColorComponentFlags;\n\ntypedef enum\n{\n    VK_CULL_MODE_NONE = 0,\n    VK_CULL_MODE_FRONT_BIT = 0x00000001,\n    VK_CULL_MODE_BACK_BIT = 0x00000002,\n    VK_CULL_MODE_FRONT_AND_BACK = 0x00000003,\n    VK_CULL_MODE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkCullModeFlagBits;\ntypedef VkFlags VkCullModeFlags;\ntypedef enum\n{\n    VK_DYNAMIC_STATE_VIEWPORT = 0,\n    VK_DYNAMIC_STATE_SCISSOR = 1,\n    VK_DYNAMIC_STATE_LINE_WIDTH = 2,\n    VK_DYNAMIC_STATE_DEPTH_BIAS = 3,\n    VK_DYNAMIC_STATE_BLEND_CONSTANTS = 4,\n    VK_DYNAMIC_STATE_DEPTH_BOUNDS = 5,\n    VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = 6,\n    VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = 7,\n    VK_DYNAMIC_STATE_STENCIL_REFERENCE = 8,\n    VK_DYNAMIC_STATE_CULL_MODE = 1000267000,\n    VK_DYNAMIC_STATE_FRONT_FACE = 1000267001,\n    VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY = 1000267002,\n    VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT = 1000267003,\n    VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT = 1000267004,\n    VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE = 1000267005,\n    VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE = 1000267006,\n    VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE = 1000267007,\n    VK_DYNAMIC_STATE_DEPTH_COMPARE_OP = 1000267008,\n    VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE = 1000267009,\n    VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE = 1000267010,\n    VK_DYNAMIC_STATE_STENCIL_OP = 1000267011,\n    VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE = 1000377001,\n    VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE = 1000377002,\n    VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE = 1000377004,\n    VK_DYNAMIC_STATE_LINE_STIPPLE = 1000259000,\n    VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV = 1000087000,\n    VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = 1000099000,\n    VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT = 1000099001,\n    VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT = 1000099002,\n    VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT = 1000143000,\n    VK_DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR = 1000347000,\n    VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV = 1000164004,\n    VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV = 1000164006,\n    VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV = 1000205000,\n    VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV = 1000205001,\n    VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR = 1000226000,\n    VK_DYNAMIC_STATE_VERTEX_INPUT_EXT = 1000352000,\n    VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT = 1000377000,\n    VK_DYNAMIC_STATE_LOGIC_OP_EXT = 1000377003,\n    VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT = 1000381000,\n    VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT = 1000455003,\n    VK_DYNAMIC_STATE_POLYGON_MODE_EXT = 1000455004,\n    VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT = 1000455005,\n    VK_DYNAMIC_STATE_SAMPLE_MASK_EXT = 1000455006,\n    VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT = 1000455007,\n    VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT = 1000455008,\n    VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT = 1000455009,\n    VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT = 1000455010,\n    VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT = 1000455011,\n    VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT = 1000455012,\n    VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT = 1000455002,\n    VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT = 1000455013,\n    VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT = 1000455014,\n    VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT = 1000455015,\n    VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT = 1000455016,\n    VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT = 1000455017,\n    VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT = 1000455018,\n    VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT = 1000455019,\n    VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT = 1000455020,\n    VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT = 1000455021,\n    VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT = 1000455022,\n    VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV = 1000455023,\n    VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV = 1000455024,\n    VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV = 1000455025,\n    VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV = 1000455026,\n    VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV = 1000455027,\n    VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV = 1000455028,\n    VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV = 1000455029,\n    VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV = 1000455030,\n    VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV = 1000455031,\n    VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV = 1000455032,\n    VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT = 1000524000,\n    VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT = 1000582000,\n    VK_DYNAMIC_STATE_CULL_MODE_EXT = VK_DYNAMIC_STATE_CULL_MODE,\n    VK_DYNAMIC_STATE_FRONT_FACE_EXT = VK_DYNAMIC_STATE_FRONT_FACE,\n    VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT = VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY,\n    VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT = VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT,\n    VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT = VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT,\n    VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT = VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE,\n    VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT = VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE,\n    VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT = VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE,\n    VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT = VK_DYNAMIC_STATE_DEPTH_COMPARE_OP,\n    VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT = VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE,\n    VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT = VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE,\n    VK_DYNAMIC_STATE_STENCIL_OP_EXT = VK_DYNAMIC_STATE_STENCIL_OP,\n    VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT = VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE,\n    VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT = VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE,\n    VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT = VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE,\n    VK_DYNAMIC_STATE_LINE_STIPPLE_KHR = VK_DYNAMIC_STATE_LINE_STIPPLE,\n    VK_DYNAMIC_STATE_LINE_STIPPLE_EXT = VK_DYNAMIC_STATE_LINE_STIPPLE,\n    VK_DYNAMIC_STATE_MAX_ENUM = 0x7FFFFFFF\n} VkDynamicState;\n\ntypedef enum\n{\n    VK_FRONT_FACE_COUNTER_CLOCKWISE = 0,\n    VK_FRONT_FACE_CLOCKWISE = 1,\n    VK_FRONT_FACE_MAX_ENUM = 0x7FFFFFFF\n} VkFrontFace;\n\ntypedef enum\n{\n    VK_LOGIC_OP_CLEAR = 0,\n    VK_LOGIC_OP_AND = 1,\n    VK_LOGIC_OP_AND_REVERSE = 2,\n    VK_LOGIC_OP_COPY = 3,\n    VK_LOGIC_OP_AND_INVERTED = 4,\n    VK_LOGIC_OP_NO_OP = 5,\n    VK_LOGIC_OP_XOR = 6,\n    VK_LOGIC_OP_OR = 7,\n    VK_LOGIC_OP_NOR = 8,\n    VK_LOGIC_OP_EQUIVALENT = 9,\n    VK_LOGIC_OP_INVERT = 10,\n    VK_LOGIC_OP_OR_REVERSE = 11,\n    VK_LOGIC_OP_COPY_INVERTED = 12,\n    VK_LOGIC_OP_OR_INVERTED = 13,\n    VK_LOGIC_OP_NAND = 14,\n    VK_LOGIC_OP_SET = 15,\n    VK_LOGIC_OP_MAX_ENUM = 0x7FFFFFFF\n} VkLogicOp;\n\ntypedef enum\n{\n    VK_STENCIL_OP_KEEP = 0,\n    VK_STENCIL_OP_ZERO = 1,\n    VK_STENCIL_OP_REPLACE = 2,\n    VK_STENCIL_OP_INCREMENT_AND_CLAMP = 3,\n    VK_STENCIL_OP_DECREMENT_AND_CLAMP = 4,\n    VK_STENCIL_OP_INVERT = 5,\n    VK_STENCIL_OP_INCREMENT_AND_WRAP = 6,\n    VK_STENCIL_OP_DECREMENT_AND_WRAP = 7,\n    VK_STENCIL_OP_MAX_ENUM = 0x7FFFFFFF\n} VkStencilOp;\n\ntypedef enum\n{\n    VK_VERTEX_INPUT_RATE_VERTEX = 0,\n    VK_VERTEX_INPUT_RATE_INSTANCE = 1,\n    VK_VERTEX_INPUT_RATE_MAX_ENUM = 0x7FFFFFFF\n} VkVertexInputRate;\n\n\ntypedef enum\n{\n    VK_PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_EXT = 0x00000001,\n    VK_PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_ARM = VK_PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_EXT,\n    VK_PIPELINE_COLOR_BLEND_STATE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkPipelineColorBlendStateCreateFlagBits;\ntypedef VkFlags VkPipelineColorBlendStateCreateFlags;\n\ntypedef enum\n{\n    VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT = 0x00000001,\n    VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT = 0x00000002,\n    VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_ARM = VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT,\n    VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_ARM = VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT,\n    VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkPipelineDepthStencilStateCreateFlagBits;\ntypedef VkFlags VkPipelineDepthStencilStateCreateFlags;\ntypedef VkFlags VkPipelineDynamicStateCreateFlags;\ntypedef VkFlags VkPipelineInputAssemblyStateCreateFlags;\ntypedef enum\n{\n    VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0,\n    VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1,\n    VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2,\n    VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3,\n    VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4,\n    VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5,\n    VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6,\n    VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7,\n    VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8,\n    VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9,\n    VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10,\n    VK_PRIMITIVE_TOPOLOGY_MAX_ENUM = 0x7FFFFFFF\n} VkPrimitiveTopology;\n\ntypedef VkFlags VkPipelineMultisampleStateCreateFlags;\ntypedef VkFlags VkPipelineRasterizationStateCreateFlags;\ntypedef enum\n{\n    VK_POLYGON_MODE_FILL = 0,\n    VK_POLYGON_MODE_LINE = 1,\n    VK_POLYGON_MODE_POINT = 2,\n    VK_POLYGON_MODE_FILL_RECTANGLE_NV = 1000153000,\n    VK_POLYGON_MODE_MAX_ENUM = 0x7FFFFFFF\n} VkPolygonMode;\n\ntypedef VkFlags VkPipelineTessellationStateCreateFlags;\ntypedef VkFlags VkPipelineVertexInputStateCreateFlags;\ntypedef VkFlags VkPipelineViewportStateCreateFlags;\n\ntypedef enum\n{\n    VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 0x00000001,\n    VK_ATTACHMENT_DESCRIPTION_RESOLVE_SKIP_TRANSFER_FUNCTION_BIT_KHR = 0x00000002,\n    VK_ATTACHMENT_DESCRIPTION_RESOLVE_ENABLE_TRANSFER_FUNCTION_BIT_KHR = 0x00000004,\n    VK_ATTACHMENT_DESCRIPTION_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkAttachmentDescriptionFlagBits;\ntypedef VkFlags VkAttachmentDescriptionFlags;\ntypedef enum\n{\n    VK_ATTACHMENT_LOAD_OP_LOAD = 0,\n    VK_ATTACHMENT_LOAD_OP_CLEAR = 1,\n    VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2,\n    VK_ATTACHMENT_LOAD_OP_NONE = 1000400000,\n    VK_ATTACHMENT_LOAD_OP_NONE_KHR = VK_ATTACHMENT_LOAD_OP_NONE,\n    VK_ATTACHMENT_LOAD_OP_NONE_EXT = VK_ATTACHMENT_LOAD_OP_NONE,\n    VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 0x7FFFFFFF\n} VkAttachmentLoadOp;\n\ntypedef enum\n{\n    VK_ATTACHMENT_STORE_OP_STORE = 0,\n    VK_ATTACHMENT_STORE_OP_DONT_CARE = 1,\n    VK_ATTACHMENT_STORE_OP_NONE = 1000301000,\n    VK_ATTACHMENT_STORE_OP_NONE_KHR = VK_ATTACHMENT_STORE_OP_NONE,\n    VK_ATTACHMENT_STORE_OP_NONE_QCOM = VK_ATTACHMENT_STORE_OP_NONE,\n    VK_ATTACHMENT_STORE_OP_NONE_EXT = VK_ATTACHMENT_STORE_OP_NONE,\n    VK_ATTACHMENT_STORE_OP_MAX_ENUM = 0x7FFFFFFF\n} VkAttachmentStoreOp;\n\n\ntypedef enum\n{\n    VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT = 0x00000001,\n    VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR = VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT,\n    VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkFramebufferCreateFlagBits;\ntypedef VkFlags VkFramebufferCreateFlags;\n\ntypedef enum\n{\n    VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM = 0x00000002,\n    VK_RENDER_PASS_CREATE_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE = 0x00000004,\n    VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkRenderPassCreateFlagBits;\ntypedef VkFlags VkRenderPassCreateFlags;\n\ntypedef enum\n{\n    VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = 0x00000001,\n    VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = 0x00000002,\n    VK_SUBPASS_DESCRIPTION_TILE_SHADING_APRON_BIT_QCOM = 0x00000100,\n    VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_EXT = 0x00000010,\n    VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT = 0x00000020,\n    VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT = 0x00000040,\n    VK_SUBPASS_DESCRIPTION_ENABLE_LEGACY_DITHERING_BIT_EXT = 0x00000080,\n    VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_EXT = 0x00000004,\n    VK_SUBPASS_DESCRIPTION_CUSTOM_RESOLVE_BIT_EXT = 0x00000008,\n    VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_ARM = VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_EXT,\n    VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_ARM = VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT,\n    VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_ARM = VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT,\n    VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM = VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_EXT,\n    VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM = VK_SUBPASS_DESCRIPTION_CUSTOM_RESOLVE_BIT_EXT,\n    VK_SUBPASS_DESCRIPTION_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkSubpassDescriptionFlagBits;\ntypedef VkFlags VkSubpassDescriptionFlags;\n\ntypedef enum\n{\n    VK_STENCIL_FACE_FRONT_BIT = 0x00000001,\n    VK_STENCIL_FACE_BACK_BIT = 0x00000002,\n    VK_STENCIL_FACE_FRONT_AND_BACK = 0x00000003,\n    VK_STENCIL_FRONT_AND_BACK = VK_STENCIL_FACE_FRONT_AND_BACK,\n    VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkStencilFaceFlagBits;\ntypedef VkFlags VkStencilFaceFlags;\ntypedef enum\n{\n    VK_SUBPASS_CONTENTS_INLINE = 0,\n    VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1,\n    VK_SUBPASS_CONTENTS_INLINE_AND_SECONDARY_COMMAND_BUFFERS_KHR = 1000451000,\n    VK_SUBPASS_CONTENTS_INLINE_AND_SECONDARY_COMMAND_BUFFERS_EXT = VK_SUBPASS_CONTENTS_INLINE_AND_SECONDARY_COMMAND_BUFFERS_KHR,\n    VK_SUBPASS_CONTENTS_MAX_ENUM = 0x7FFFFFFF\n} VkSubpassContents;\n\n\ntypedef struct VkDrawIndexedIndirectCommand\n{\n    uint32_t indexCount;\n    uint32_t instanceCount;\n    uint32_t firstIndex;\n    int32_t vertexOffset;\n    uint32_t firstInstance;\n} VkDrawIndexedIndirectCommand;\n\ntypedef struct VkDrawIndirectCommand\n{\n    uint32_t vertexCount;\n    uint32_t instanceCount;\n    uint32_t firstVertex;\n    uint32_t firstInstance;\n} VkDrawIndirectCommand;\n\ntypedef struct VkStencilOpState\n{\n    VkStencilOp failOp;\n    VkStencilOp passOp;\n    VkStencilOp depthFailOp;\n    VkCompareOp compareOp;\n    uint32_t compareMask;\n    uint32_t writeMask;\n    uint32_t reference;\n} VkStencilOpState;\n\ntypedef struct VkVertexInputAttributeDescription\n{\n    uint32_t location;\n    uint32_t binding;\n    VkFormat format;\n    uint32_t offset;\n} VkVertexInputAttributeDescription;\n\ntypedef struct VkVertexInputBindingDescription\n{\n    uint32_t binding;\n    uint32_t stride;\n    VkVertexInputRate inputRate;\n} VkVertexInputBindingDescription;\n\ntypedef struct VkViewport\n{\n    float x;\n    float y;\n    float width;\n    float height;\n    float minDepth;\n    float maxDepth;\n} VkViewport;\n\ntypedef struct VkPipelineColorBlendAttachmentState\n{\n    VkBool32 blendEnable;\n    VkBlendFactor srcColorBlendFactor;\n    VkBlendFactor dstColorBlendFactor;\n    VkBlendOp colorBlendOp;\n    VkBlendFactor srcAlphaBlendFactor;\n    VkBlendFactor dstAlphaBlendFactor;\n    VkBlendOp alphaBlendOp;\n    VkColorComponentFlags colorWriteMask;\n} VkPipelineColorBlendAttachmentState;\n\ntypedef struct VkPipelineColorBlendStateCreateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkPipelineColorBlendStateCreateFlags flags;\n    VkBool32 logicOpEnable;\n    VkLogicOp logicOp;\n    uint32_t attachmentCount;\n    const VkPipelineColorBlendAttachmentState* pAttachments;\n    float blendConstants[4];\n} VkPipelineColorBlendStateCreateInfo;\n\ntypedef struct VkPipelineDepthStencilStateCreateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkPipelineDepthStencilStateCreateFlags flags;\n    VkBool32 depthTestEnable;\n    VkBool32 depthWriteEnable;\n    VkCompareOp depthCompareOp;\n    VkBool32 depthBoundsTestEnable;\n    VkBool32 stencilTestEnable;\n    VkStencilOpState front;\n    VkStencilOpState back;\n    float minDepthBounds;\n    float maxDepthBounds;\n} VkPipelineDepthStencilStateCreateInfo;\n\ntypedef struct VkPipelineDynamicStateCreateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkPipelineDynamicStateCreateFlags flags;\n    uint32_t dynamicStateCount;\n    const VkDynamicState* pDynamicStates;\n} VkPipelineDynamicStateCreateInfo;\n\ntypedef struct VkPipelineInputAssemblyStateCreateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkPipelineInputAssemblyStateCreateFlags flags;\n    VkPrimitiveTopology topology;\n    VkBool32 primitiveRestartEnable;\n} VkPipelineInputAssemblyStateCreateInfo;\n\ntypedef struct VkPipelineMultisampleStateCreateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkPipelineMultisampleStateCreateFlags flags;\n    VkSampleCountFlagBits rasterizationSamples;\n    VkBool32 sampleShadingEnable;\n    float minSampleShading;\n    const VkSampleMask* pSampleMask;\n    VkBool32 alphaToCoverageEnable;\n    VkBool32 alphaToOneEnable;\n} VkPipelineMultisampleStateCreateInfo;\n\ntypedef struct VkPipelineRasterizationStateCreateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkPipelineRasterizationStateCreateFlags flags;\n    VkBool32 depthClampEnable;\n    VkBool32 rasterizerDiscardEnable;\n    VkPolygonMode polygonMode;\n    VkCullModeFlags cullMode;\n    VkFrontFace frontFace;\n    VkBool32 depthBiasEnable;\n    float depthBiasConstantFactor;\n    float depthBiasClamp;\n    float depthBiasSlopeFactor;\n    float lineWidth;\n} VkPipelineRasterizationStateCreateInfo;\n\ntypedef struct VkPipelineTessellationStateCreateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkPipelineTessellationStateCreateFlags flags;\n    uint32_t patchControlPoints;\n} VkPipelineTessellationStateCreateInfo;\n\ntypedef struct VkPipelineVertexInputStateCreateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkPipelineVertexInputStateCreateFlags flags;\n    uint32_t vertexBindingDescriptionCount;\n    const VkVertexInputBindingDescription* pVertexBindingDescriptions;\n    uint32_t vertexAttributeDescriptionCount;\n    const VkVertexInputAttributeDescription* pVertexAttributeDescriptions;\n} VkPipelineVertexInputStateCreateInfo;\n\ntypedef struct VkPipelineViewportStateCreateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkPipelineViewportStateCreateFlags flags;\n    uint32_t viewportCount;\n    const VkViewport* pViewports;\n    uint32_t scissorCount;\n    const VkRect2D* pScissors;\n} VkPipelineViewportStateCreateInfo;\n\ntypedef struct VkGraphicsPipelineCreateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkPipelineCreateFlags flags;\n    uint32_t stageCount;\n    const VkPipelineShaderStageCreateInfo* pStages;\n    const VkPipelineVertexInputStateCreateInfo* pVertexInputState;\n    const VkPipelineInputAssemblyStateCreateInfo* pInputAssemblyState;\n    const VkPipelineTessellationStateCreateInfo* pTessellationState;\n    const VkPipelineViewportStateCreateInfo* pViewportState;\n    const VkPipelineRasterizationStateCreateInfo* pRasterizationState;\n    const VkPipelineMultisampleStateCreateInfo* pMultisampleState;\n    const VkPipelineDepthStencilStateCreateInfo* pDepthStencilState;\n    const VkPipelineColorBlendStateCreateInfo* pColorBlendState;\n    const VkPipelineDynamicStateCreateInfo* pDynamicState;\n    VkPipelineLayout layout;\n    VkRenderPass renderPass;\n    uint32_t subpass;\n    VkPipeline basePipelineHandle;\n    int32_t basePipelineIndex;\n} VkGraphicsPipelineCreateInfo;\n\ntypedef struct VkAttachmentDescription\n{\n    VkAttachmentDescriptionFlags flags;\n    VkFormat format;\n    VkSampleCountFlagBits samples;\n    VkAttachmentLoadOp loadOp;\n    VkAttachmentStoreOp storeOp;\n    VkAttachmentLoadOp stencilLoadOp;\n    VkAttachmentStoreOp stencilStoreOp;\n    VkImageLayout initialLayout;\n    VkImageLayout finalLayout;\n} VkAttachmentDescription;\n\ntypedef struct VkAttachmentReference\n{\n    uint32_t attachment;\n    VkImageLayout layout;\n} VkAttachmentReference;\n\ntypedef struct VkFramebufferCreateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkFramebufferCreateFlags flags;\n    VkRenderPass renderPass;\n    uint32_t attachmentCount;\n    const VkImageView* pAttachments;\n    uint32_t width;\n    uint32_t height;\n    uint32_t layers;\n} VkFramebufferCreateInfo;\n\ntypedef struct VkSubpassDependency\n{\n    uint32_t srcSubpass;\n    uint32_t dstSubpass;\n    VkPipelineStageFlags srcStageMask;\n    VkPipelineStageFlags dstStageMask;\n    VkAccessFlags srcAccessMask;\n    VkAccessFlags dstAccessMask;\n    VkDependencyFlags dependencyFlags;\n} VkSubpassDependency;\n\ntypedef struct VkSubpassDescription\n{\n    VkSubpassDescriptionFlags flags;\n    VkPipelineBindPoint pipelineBindPoint;\n    uint32_t inputAttachmentCount;\n    const VkAttachmentReference* pInputAttachments;\n    uint32_t colorAttachmentCount;\n    const VkAttachmentReference* pColorAttachments;\n    const VkAttachmentReference* pResolveAttachments;\n    const VkAttachmentReference* pDepthStencilAttachment;\n    uint32_t preserveAttachmentCount;\n    const uint32_t* pPreserveAttachments;\n} VkSubpassDescription;\n\ntypedef struct VkRenderPassCreateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkRenderPassCreateFlags flags;\n    uint32_t attachmentCount;\n    const VkAttachmentDescription* pAttachments;\n    uint32_t subpassCount;\n    const VkSubpassDescription* pSubpasses;\n    uint32_t dependencyCount;\n    const VkSubpassDependency* pDependencies;\n} VkRenderPassCreateInfo;\n\ntypedef struct VkClearDepthStencilValue\n{\n    float depth;\n    uint32_t stencil;\n} VkClearDepthStencilValue;\n\ntypedef struct VkClearRect\n{\n    VkRect2D rect;\n    uint32_t baseArrayLayer;\n    uint32_t layerCount;\n} VkClearRect;\n\ntypedef union VkClearValue\n{\n    VkClearColorValue color;\n    VkClearDepthStencilValue depthStencil;\n} VkClearValue;\n\ntypedef struct VkClearAttachment\n{\n    VkImageAspectFlags aspectMask;\n    uint32_t colorAttachment;\n    VkClearValue clearValue;\n} VkClearAttachment;\n\ntypedef struct VkImageBlit\n{\n    VkImageSubresourceLayers srcSubresource;\n    VkOffset3D srcOffsets[2];\n    VkImageSubresourceLayers dstSubresource;\n    VkOffset3D dstOffsets[2];\n} VkImageBlit;\n\ntypedef struct VkImageResolve\n{\n    VkImageSubresourceLayers srcSubresource;\n    VkOffset3D srcOffset;\n    VkImageSubresourceLayers dstSubresource;\n    VkOffset3D dstOffset;\n    VkExtent3D extent;\n} VkImageResolve;\n\ntypedef struct VkRenderPassBeginInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkRenderPass renderPass;\n    VkFramebuffer framebuffer;\n    VkRect2D renderArea;\n    uint32_t clearValueCount;\n    const VkClearValue* pClearValues;\n} VkRenderPassBeginInfo;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateGraphicsPipelines)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines);\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateFramebuffer)(VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFramebuffer* pFramebuffer);\ntypedef void (VKAPI_PTR *PFN_vkDestroyFramebuffer)(VkDevice device, VkFramebuffer framebuffer, const VkAllocationCallbacks* pAllocator);\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateRenderPass)(VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass);\ntypedef void (VKAPI_PTR *PFN_vkDestroyRenderPass)(VkDevice device, VkRenderPass renderPass, const VkAllocationCallbacks* pAllocator);\ntypedef void (VKAPI_PTR *PFN_vkGetRenderAreaGranularity)(VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetViewport)(VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkViewport* pViewports);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetScissor)(VkCommandBuffer commandBuffer, uint32_t firstScissor, uint32_t scissorCount, const VkRect2D* pScissors);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetLineWidth)(VkCommandBuffer commandBuffer, float lineWidth);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetDepthBias)(VkCommandBuffer commandBuffer, float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetBlendConstants)(VkCommandBuffer commandBuffer, const float blendConstants[4]);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetDepthBounds)(VkCommandBuffer commandBuffer, float minDepthBounds, float maxDepthBounds);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetStencilCompareMask)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t compareMask);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetStencilWriteMask)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t writeMask);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetStencilReference)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t reference);\ntypedef void (VKAPI_PTR *PFN_vkCmdBindIndexBuffer)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType);\ntypedef void (VKAPI_PTR *PFN_vkCmdBindVertexBuffers)(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets);\ntypedef void (VKAPI_PTR *PFN_vkCmdDraw)(VkCommandBuffer commandBuffer, uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance);\ntypedef void (VKAPI_PTR *PFN_vkCmdDrawIndexed)(VkCommandBuffer commandBuffer, uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance);\ntypedef void (VKAPI_PTR *PFN_vkCmdDrawIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride);\ntypedef void (VKAPI_PTR *PFN_vkCmdDrawIndexedIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride);\ntypedef void (VKAPI_PTR *PFN_vkCmdBlitImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageBlit* pRegions, VkFilter filter);\ntypedef void (VKAPI_PTR *PFN_vkCmdClearDepthStencilImage)(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);\ntypedef void (VKAPI_PTR *PFN_vkCmdClearAttachments)(VkCommandBuffer commandBuffer, uint32_t attachmentCount, const VkClearAttachment* pAttachments, uint32_t rectCount, const VkClearRect* pRects);\ntypedef void (VKAPI_PTR *PFN_vkCmdResolveImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageResolve* pRegions);\ntypedef void (VKAPI_PTR *PFN_vkCmdBeginRenderPass)(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkSubpassContents contents);\ntypedef void (VKAPI_PTR *PFN_vkCmdNextSubpass)(VkCommandBuffer commandBuffer, VkSubpassContents contents);\ntypedef void (VKAPI_PTR *PFN_vkCmdEndRenderPass)(VkCommandBuffer commandBuffer);\n\n#define VK_VERSION_1_0 1\n\n\n#define VK_BASE_VERSION_1_1 1\n\n#define VK_API_VERSION_1_1 VK_MAKE_API_VERSION(0, 1, 1, 0)\n\n#define VK_MAX_DEVICE_GROUP_SIZE 32\n#define VK_LUID_SIZE 8\n#define VK_QUEUE_FAMILY_EXTERNAL (~1U)\n\n\ntypedef enum\n{\n    VK_SUBGROUP_FEATURE_BASIC_BIT = 0x00000001,\n    VK_SUBGROUP_FEATURE_VOTE_BIT = 0x00000002,\n    VK_SUBGROUP_FEATURE_ARITHMETIC_BIT = 0x00000004,\n    VK_SUBGROUP_FEATURE_BALLOT_BIT = 0x00000008,\n    VK_SUBGROUP_FEATURE_SHUFFLE_BIT = 0x00000010,\n    VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT = 0x00000020,\n    VK_SUBGROUP_FEATURE_CLUSTERED_BIT = 0x00000040,\n    VK_SUBGROUP_FEATURE_QUAD_BIT = 0x00000080,\n    VK_SUBGROUP_FEATURE_ROTATE_BIT = 0x00000200,\n    VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT = 0x00000400,\n    VK_SUBGROUP_FEATURE_PARTITIONED_BIT_EXT = 0x00000100,\n    VK_SUBGROUP_FEATURE_ROTATE_BIT_KHR = VK_SUBGROUP_FEATURE_ROTATE_BIT,\n    VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT_KHR = VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT,\n    VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV = VK_SUBGROUP_FEATURE_PARTITIONED_BIT_EXT,\n    VK_SUBGROUP_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkSubgroupFeatureFlagBits;\ntypedef VkFlags VkSubgroupFeatureFlags;\ntypedef enum\n{\n    VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES = 0,\n    VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY = 1,\n    VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR = VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES,\n    VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR = VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY,\n    VK_POINT_CLIPPING_BEHAVIOR_MAX_ENUM = 0x7FFFFFFF\n} VkPointClippingBehavior;\n\n\ntypedef enum\n{\n    VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT = 0x00000001,\n    VK_PEER_MEMORY_FEATURE_COPY_DST_BIT = 0x00000002,\n    VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT = 0x00000004,\n    VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT = 0x00000008,\n    VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHR = VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT,\n    VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR = VK_PEER_MEMORY_FEATURE_COPY_DST_BIT,\n    VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR = VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT,\n    VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR = VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT,\n    VK_PEER_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkPeerMemoryFeatureFlagBits;\ntypedef VkFlags VkPeerMemoryFeatureFlags;\n\ntypedef enum\n{\n    VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT = 0x00000001,\n    VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT = 0x00000002,\n    VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 0x00000004,\n    VK_MEMORY_ALLOCATE_ZERO_INITIALIZE_BIT_EXT = 0x00000008,\n    VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR = VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT,\n    VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR = VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT,\n    VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT,\n    VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkMemoryAllocateFlagBits;\ntypedef VkFlags VkMemoryAllocateFlags;\ntypedef VkFlags VkCommandPoolTrimFlags;\n\ntypedef enum\n{\n    VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT = 0x00000001,\n    VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT = 0x00000002,\n    VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 0x00000004,\n    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT = 0x00000008,\n    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT = 0x00000010,\n    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT = 0x00000020,\n    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT = 0x00000040,\n    VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT = 0x00000200,\n    VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID = 0x00000400,\n    VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT = 0x00000080,\n    VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT = 0x00000100,\n    VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA = 0x00000800,\n    VK_EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV = 0x00001000,\n    VK_EXTERNAL_MEMORY_HANDLE_TYPE_SCI_BUF_BIT_NV = 0x00002000,\n    VK_EXTERNAL_MEMORY_HANDLE_TYPE_OH_NATIVE_BUFFER_BIT_OHOS = 0x00008000,\n    VK_EXTERNAL_MEMORY_HANDLE_TYPE_SCREEN_BUFFER_BIT_QNX = 0x00004000,\n    VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLBUFFER_BIT_EXT = 0x00010000,\n    VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLTEXTURE_BIT_EXT = 0x00020000,\n    VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLHEAP_BIT_EXT = 0x00040000,\n    VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT,\n    VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT,\n    VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,\n    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT,\n    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT,\n    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT,\n    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT,\n    VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkExternalMemoryHandleTypeFlagBits;\ntypedef VkFlags VkExternalMemoryHandleTypeFlags;\n\ntypedef enum\n{\n    VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT = 0x00000001,\n    VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT = 0x00000002,\n    VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT = 0x00000004,\n    VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR = VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT,\n    VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR = VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT,\n    VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR = VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT,\n    VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkExternalMemoryFeatureFlagBits;\ntypedef VkFlags VkExternalMemoryFeatureFlags;\n\ntypedef enum\n{\n    VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT = 0x00000001,\n    VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 0x00000002,\n    VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 0x00000004,\n    VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT = 0x00000008,\n    VK_EXTERNAL_FENCE_HANDLE_TYPE_SCI_SYNC_OBJ_BIT_NV = 0x00000010,\n    VK_EXTERNAL_FENCE_HANDLE_TYPE_SCI_SYNC_FENCE_BIT_NV = 0x00000020,\n    VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT,\n    VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT,\n    VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,\n    VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR = VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT,\n    VK_EXTERNAL_FENCE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkExternalFenceHandleTypeFlagBits;\ntypedef VkFlags VkExternalFenceHandleTypeFlags;\n\ntypedef enum\n{\n    VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT = 0x00000001,\n    VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT = 0x00000002,\n    VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR = VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT,\n    VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR = VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT,\n    VK_EXTERNAL_FENCE_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkExternalFenceFeatureFlagBits;\ntypedef VkFlags VkExternalFenceFeatureFlags;\n\ntypedef enum\n{\n    VK_FENCE_IMPORT_TEMPORARY_BIT = 0x00000001,\n    VK_FENCE_IMPORT_TEMPORARY_BIT_KHR = VK_FENCE_IMPORT_TEMPORARY_BIT,\n    VK_FENCE_IMPORT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkFenceImportFlagBits;\ntypedef VkFlags VkFenceImportFlags;\n\ntypedef enum\n{\n    VK_SEMAPHORE_IMPORT_TEMPORARY_BIT = 0x00000001,\n    VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR = VK_SEMAPHORE_IMPORT_TEMPORARY_BIT,\n    VK_SEMAPHORE_IMPORT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkSemaphoreImportFlagBits;\ntypedef VkFlags VkSemaphoreImportFlags;\n\ntypedef enum\n{\n    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT = 0x00000001,\n    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 0x00000002,\n    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 0x00000004,\n    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT = 0x00000008,\n    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D11_FENCE_BIT = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT,\n    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT = 0x00000010,\n    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_ZIRCON_EVENT_BIT_FUCHSIA = 0x00000080,\n    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SCI_SYNC_OBJ_BIT_NV = 0x00000020,\n    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT,\n    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT,\n    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,\n    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT,\n    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT,\n    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkExternalSemaphoreHandleTypeFlagBits;\ntypedef VkFlags VkExternalSemaphoreHandleTypeFlags;\n\ntypedef enum\n{\n    VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT = 0x00000001,\n    VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT = 0x00000002,\n    VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR = VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT,\n    VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR = VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT,\n    VK_EXTERNAL_SEMAPHORE_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkExternalSemaphoreFeatureFlagBits;\ntypedef VkFlags VkExternalSemaphoreFeatureFlags;\n\ntypedef struct VkBindBufferMemoryInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkBuffer buffer;\n    VkDeviceMemory memory;\n    VkDeviceSize memoryOffset;\n} VkBindBufferMemoryInfo;\n\ntypedef struct VkBindImageMemoryInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkImage image;\n    VkDeviceMemory memory;\n    VkDeviceSize memoryOffset;\n} VkBindImageMemoryInfo;\n\ntypedef struct VkMemoryDedicatedRequirements\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 prefersDedicatedAllocation;\n    VkBool32 requiresDedicatedAllocation;\n} VkMemoryDedicatedRequirements;\n\ntypedef struct VkMemoryDedicatedAllocateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkImage image;\n    VkBuffer buffer;\n} VkMemoryDedicatedAllocateInfo;\n\ntypedef struct VkMemoryAllocateFlagsInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkMemoryAllocateFlags flags;\n    uint32_t deviceMask;\n} VkMemoryAllocateFlagsInfo;\n\ntypedef struct VkDeviceGroupCommandBufferBeginInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t deviceMask;\n} VkDeviceGroupCommandBufferBeginInfo;\n\ntypedef struct VkDeviceGroupSubmitInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t waitSemaphoreCount;\n    const uint32_t* pWaitSemaphoreDeviceIndices;\n    uint32_t commandBufferCount;\n    const uint32_t* pCommandBufferDeviceMasks;\n    uint32_t signalSemaphoreCount;\n    const uint32_t* pSignalSemaphoreDeviceIndices;\n} VkDeviceGroupSubmitInfo;\n\ntypedef struct VkDeviceGroupBindSparseInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t resourceDeviceIndex;\n    uint32_t memoryDeviceIndex;\n} VkDeviceGroupBindSparseInfo;\n\ntypedef struct VkBindBufferMemoryDeviceGroupInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t deviceIndexCount;\n    const uint32_t* pDeviceIndices;\n} VkBindBufferMemoryDeviceGroupInfo;\n\ntypedef struct VkBindImageMemoryDeviceGroupInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t deviceIndexCount;\n    const uint32_t* pDeviceIndices;\n    uint32_t splitInstanceBindRegionCount;\n    const VkRect2D* pSplitInstanceBindRegions;\n} VkBindImageMemoryDeviceGroupInfo;\n\ntypedef struct VkPhysicalDeviceGroupProperties\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t physicalDeviceCount;\n    VkPhysicalDevice physicalDevices[VK_MAX_DEVICE_GROUP_SIZE];\n    VkBool32 subsetAllocation;\n} VkPhysicalDeviceGroupProperties;\n\ntypedef struct VkDeviceGroupDeviceCreateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t physicalDeviceCount;\n    const VkPhysicalDevice* pPhysicalDevices;\n} VkDeviceGroupDeviceCreateInfo;\n\ntypedef struct VkBufferMemoryRequirementsInfo2\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkBuffer buffer;\n} VkBufferMemoryRequirementsInfo2;\n\ntypedef struct VkImageMemoryRequirementsInfo2\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkImage image;\n} VkImageMemoryRequirementsInfo2;\n\ntypedef struct VkImageSparseMemoryRequirementsInfo2\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkImage image;\n} VkImageSparseMemoryRequirementsInfo2;\n\ntypedef struct VkMemoryRequirements2\n{\n    VkStructureType sType;\n    void* pNext;\n    VkMemoryRequirements memoryRequirements;\n} VkMemoryRequirements2;\n\ntypedef struct VkSparseImageMemoryRequirements2\n{\n    VkStructureType sType;\n    void* pNext;\n    VkSparseImageMemoryRequirements memoryRequirements;\n} VkSparseImageMemoryRequirements2;\n\ntypedef struct VkPhysicalDeviceFeatures2\n{\n    VkStructureType sType;\n    void* pNext;\n    VkPhysicalDeviceFeatures features;\n} VkPhysicalDeviceFeatures2;\n\ntypedef struct VkPhysicalDeviceProperties2\n{\n    VkStructureType sType;\n    void* pNext;\n    VkPhysicalDeviceProperties properties;\n} VkPhysicalDeviceProperties2;\n\ntypedef struct VkFormatProperties2\n{\n    VkStructureType sType;\n    void* pNext;\n    VkFormatProperties formatProperties;\n} VkFormatProperties2;\n\ntypedef struct VkImageFormatProperties2\n{\n    VkStructureType sType;\n    void* pNext;\n    VkImageFormatProperties imageFormatProperties;\n} VkImageFormatProperties2;\n\ntypedef struct VkPhysicalDeviceImageFormatInfo2\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkFormat format;\n    VkImageType type;\n    VkImageTiling tiling;\n    VkImageUsageFlags usage;\n    VkImageCreateFlags flags;\n} VkPhysicalDeviceImageFormatInfo2;\n\ntypedef struct VkQueueFamilyProperties2\n{\n    VkStructureType sType;\n    void* pNext;\n    VkQueueFamilyProperties queueFamilyProperties;\n} VkQueueFamilyProperties2;\n\ntypedef struct VkPhysicalDeviceMemoryProperties2\n{\n    VkStructureType sType;\n    void* pNext;\n    VkPhysicalDeviceMemoryProperties memoryProperties;\n} VkPhysicalDeviceMemoryProperties2;\n\ntypedef struct VkSparseImageFormatProperties2\n{\n    VkStructureType sType;\n    void* pNext;\n    VkSparseImageFormatProperties properties;\n} VkSparseImageFormatProperties2;\n\ntypedef struct VkPhysicalDeviceSparseImageFormatInfo2\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkFormat format;\n    VkImageType type;\n    VkSampleCountFlagBits samples;\n    VkImageUsageFlags usage;\n    VkImageTiling tiling;\n} VkPhysicalDeviceSparseImageFormatInfo2;\n\ntypedef struct VkImageViewUsageCreateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkImageUsageFlags usage;\n} VkImageViewUsageCreateInfo;\n\ntypedef struct VkPhysicalDeviceProtectedMemoryFeatures\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 protectedMemory;\n} VkPhysicalDeviceProtectedMemoryFeatures;\n\ntypedef struct VkPhysicalDeviceProtectedMemoryProperties\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 protectedNoFault;\n} VkPhysicalDeviceProtectedMemoryProperties;\n\ntypedef struct VkDeviceQueueInfo2\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkDeviceQueueCreateFlags flags;\n    uint32_t queueFamilyIndex;\n    uint32_t queueIndex;\n} VkDeviceQueueInfo2;\n\ntypedef struct VkProtectedSubmitInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkBool32 protectedSubmit;\n} VkProtectedSubmitInfo;\n\ntypedef struct VkBindImagePlaneMemoryInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkImageAspectFlagBits planeAspect;\n} VkBindImagePlaneMemoryInfo;\n\ntypedef struct VkImagePlaneMemoryRequirementsInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkImageAspectFlagBits planeAspect;\n} VkImagePlaneMemoryRequirementsInfo;\n\ntypedef struct VkExternalMemoryProperties\n{\n    VkExternalMemoryFeatureFlags externalMemoryFeatures;\n    VkExternalMemoryHandleTypeFlags exportFromImportedHandleTypes;\n    VkExternalMemoryHandleTypeFlags compatibleHandleTypes;\n} VkExternalMemoryProperties;\n\ntypedef struct VkPhysicalDeviceExternalImageFormatInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkExternalMemoryHandleTypeFlagBits handleType;\n} VkPhysicalDeviceExternalImageFormatInfo;\n\ntypedef struct VkExternalImageFormatProperties\n{\n    VkStructureType sType;\n    void* pNext;\n    VkExternalMemoryProperties externalMemoryProperties;\n} VkExternalImageFormatProperties;\n\ntypedef struct VkPhysicalDeviceExternalBufferInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkBufferCreateFlags flags;\n    VkBufferUsageFlags usage;\n    VkExternalMemoryHandleTypeFlagBits handleType;\n} VkPhysicalDeviceExternalBufferInfo;\n\ntypedef struct VkExternalBufferProperties\n{\n    VkStructureType sType;\n    void* pNext;\n    VkExternalMemoryProperties externalMemoryProperties;\n} VkExternalBufferProperties;\n\ntypedef struct VkPhysicalDeviceIDProperties\n{\n    VkStructureType sType;\n    void* pNext;\n    uint8_t deviceUUID[VK_UUID_SIZE];\n    uint8_t driverUUID[VK_UUID_SIZE];\n    uint8_t deviceLUID[VK_LUID_SIZE];\n    uint32_t deviceNodeMask;\n    VkBool32 deviceLUIDValid;\n} VkPhysicalDeviceIDProperties;\n\ntypedef struct VkExternalMemoryImageCreateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkExternalMemoryHandleTypeFlags handleTypes;\n} VkExternalMemoryImageCreateInfo;\n\ntypedef struct VkExternalMemoryBufferCreateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkExternalMemoryHandleTypeFlags handleTypes;\n} VkExternalMemoryBufferCreateInfo;\n\ntypedef struct VkExportMemoryAllocateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkExternalMemoryHandleTypeFlags handleTypes;\n} VkExportMemoryAllocateInfo;\n\ntypedef struct VkPhysicalDeviceExternalFenceInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkExternalFenceHandleTypeFlagBits handleType;\n} VkPhysicalDeviceExternalFenceInfo;\n\ntypedef struct VkExternalFenceProperties\n{\n    VkStructureType sType;\n    void* pNext;\n    VkExternalFenceHandleTypeFlags exportFromImportedHandleTypes;\n    VkExternalFenceHandleTypeFlags compatibleHandleTypes;\n    VkExternalFenceFeatureFlags externalFenceFeatures;\n} VkExternalFenceProperties;\n\ntypedef struct VkExportFenceCreateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkExternalFenceHandleTypeFlags handleTypes;\n} VkExportFenceCreateInfo;\n\ntypedef struct VkExportSemaphoreCreateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkExternalSemaphoreHandleTypeFlags handleTypes;\n} VkExportSemaphoreCreateInfo;\n\ntypedef struct VkPhysicalDeviceExternalSemaphoreInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkExternalSemaphoreHandleTypeFlagBits handleType;\n} VkPhysicalDeviceExternalSemaphoreInfo;\n\ntypedef struct VkExternalSemaphoreProperties\n{\n    VkStructureType sType;\n    void* pNext;\n    VkExternalSemaphoreHandleTypeFlags exportFromImportedHandleTypes;\n    VkExternalSemaphoreHandleTypeFlags compatibleHandleTypes;\n    VkExternalSemaphoreFeatureFlags externalSemaphoreFeatures;\n} VkExternalSemaphoreProperties;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkEnumerateInstanceVersion)(uint32_t* pApiVersion);\ntypedef VkResult (VKAPI_PTR *PFN_vkBindBufferMemory2)(VkDevice device, uint32_t bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos);\ntypedef VkResult (VKAPI_PTR *PFN_vkBindImageMemory2)(VkDevice device, uint32_t bindInfoCount, const VkBindImageMemoryInfo* pBindInfos);\ntypedef void (VKAPI_PTR *PFN_vkGetDeviceGroupPeerMemoryFeatures)(VkDevice device, uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, VkPeerMemoryFeatureFlags* pPeerMemoryFeatures);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetDeviceMask)(VkCommandBuffer commandBuffer, uint32_t deviceMask);\ntypedef VkResult (VKAPI_PTR *PFN_vkEnumeratePhysicalDeviceGroups)(VkInstance instance, uint32_t* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties);\ntypedef void (VKAPI_PTR *PFN_vkGetImageMemoryRequirements2)(VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements);\ntypedef void (VKAPI_PTR *PFN_vkGetBufferMemoryRequirements2)(VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements);\ntypedef void (VKAPI_PTR *PFN_vkGetImageSparseMemoryRequirements2)(VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements);\ntypedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFeatures2)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures);\ntypedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceProperties2)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties);\ntypedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFormatProperties2)(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2* pFormatProperties);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceImageFormatProperties2)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, VkImageFormatProperties2* pImageFormatProperties);\ntypedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceQueueFamilyProperties2)(VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties2* pQueueFamilyProperties);\ntypedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMemoryProperties2)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties);\ntypedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceSparseImageFormatProperties2)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, uint32_t* pPropertyCount, VkSparseImageFormatProperties2* pProperties);\ntypedef void (VKAPI_PTR *PFN_vkTrimCommandPool)(VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags);\ntypedef void (VKAPI_PTR *PFN_vkGetDeviceQueue2)(VkDevice device, const VkDeviceQueueInfo2* pQueueInfo, VkQueue* pQueue);\ntypedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalBufferProperties)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VkExternalBufferProperties* pExternalBufferProperties);\ntypedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalFenceProperties)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties);\ntypedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalSemaphoreProperties)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties);\n\n#define VK_COMPUTE_VERSION_1_1 1\n\nVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorUpdateTemplate)\nVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSamplerYcbcrConversion)\n\ntypedef VkFlags VkDescriptorUpdateTemplateCreateFlags;\ntypedef enum\n{\n    VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET = 0,\n    VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS = 1,\n    VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS,\n    VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET,\n    VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_MAX_ENUM = 0x7FFFFFFF\n} VkDescriptorUpdateTemplateType;\n\ntypedef enum\n{\n    VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY = 0,\n    VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY = 1,\n    VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709 = 2,\n    VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601 = 3,\n    VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020 = 4,\n    VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY,\n    VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY,\n    VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709,\n    VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601,\n    VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020,\n    VK_SAMPLER_YCBCR_MODEL_CONVERSION_MAX_ENUM = 0x7FFFFFFF\n} VkSamplerYcbcrModelConversion;\n\ntypedef enum\n{\n    VK_SAMPLER_YCBCR_RANGE_ITU_FULL = 0,\n    VK_SAMPLER_YCBCR_RANGE_ITU_NARROW = 1,\n    VK_SAMPLER_YCBCR_RANGE_ITU_FULL_KHR = VK_SAMPLER_YCBCR_RANGE_ITU_FULL,\n    VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR = VK_SAMPLER_YCBCR_RANGE_ITU_NARROW,\n    VK_SAMPLER_YCBCR_RANGE_MAX_ENUM = 0x7FFFFFFF\n} VkSamplerYcbcrRange;\n\ntypedef enum\n{\n    VK_CHROMA_LOCATION_COSITED_EVEN = 0,\n    VK_CHROMA_LOCATION_MIDPOINT = 1,\n    VK_CHROMA_LOCATION_COSITED_EVEN_KHR = VK_CHROMA_LOCATION_COSITED_EVEN,\n    VK_CHROMA_LOCATION_MIDPOINT_KHR = VK_CHROMA_LOCATION_MIDPOINT,\n    VK_CHROMA_LOCATION_MAX_ENUM = 0x7FFFFFFF\n} VkChromaLocation;\n\n\ntypedef struct VkPhysicalDeviceSubgroupProperties\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t subgroupSize;\n    VkShaderStageFlags supportedStages;\n    VkSubgroupFeatureFlags supportedOperations;\n    VkBool32 quadOperationsInAllStages;\n} VkPhysicalDeviceSubgroupProperties;\n\ntypedef struct VkPhysicalDevice16BitStorageFeatures\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 storageBuffer16BitAccess;\n    VkBool32 uniformAndStorageBuffer16BitAccess;\n    VkBool32 storagePushConstant16;\n    VkBool32 storageInputOutput16;\n} VkPhysicalDevice16BitStorageFeatures;\n\ntypedef struct VkPhysicalDeviceVariablePointersFeatures\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 variablePointersStorageBuffer;\n    VkBool32 variablePointers;\n} VkPhysicalDeviceVariablePointersFeatures;\n\ntypedef VkPhysicalDeviceVariablePointersFeatures VkPhysicalDeviceVariablePointerFeatures;\n\ntypedef struct VkDescriptorUpdateTemplateEntry\n{\n    uint32_t dstBinding;\n    uint32_t dstArrayElement;\n    uint32_t descriptorCount;\n    VkDescriptorType descriptorType;\n    size_t offset;\n    size_t stride;\n} VkDescriptorUpdateTemplateEntry;\n\ntypedef struct VkDescriptorUpdateTemplateCreateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkDescriptorUpdateTemplateCreateFlags flags;\n    uint32_t descriptorUpdateEntryCount;\n    const VkDescriptorUpdateTemplateEntry* pDescriptorUpdateEntries;\n    VkDescriptorUpdateTemplateType templateType;\n    VkDescriptorSetLayout descriptorSetLayout;\n    VkPipelineBindPoint pipelineBindPoint;\n    VkPipelineLayout pipelineLayout;\n    uint32_t set;\n} VkDescriptorUpdateTemplateCreateInfo;\n\ntypedef struct VkPhysicalDeviceMaintenance3Properties\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t maxPerSetDescriptors;\n    VkDeviceSize maxMemoryAllocationSize;\n} VkPhysicalDeviceMaintenance3Properties;\n\ntypedef struct VkDescriptorSetLayoutSupport\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 supported;\n} VkDescriptorSetLayoutSupport;\n\ntypedef struct VkSamplerYcbcrConversionCreateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkFormat format;\n    VkSamplerYcbcrModelConversion ycbcrModel;\n    VkSamplerYcbcrRange ycbcrRange;\n    VkComponentMapping components;\n    VkChromaLocation xChromaOffset;\n    VkChromaLocation yChromaOffset;\n    VkFilter chromaFilter;\n    VkBool32 forceExplicitReconstruction;\n} VkSamplerYcbcrConversionCreateInfo;\n\ntypedef struct VkSamplerYcbcrConversionInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkSamplerYcbcrConversion conversion;\n} VkSamplerYcbcrConversionInfo;\n\ntypedef struct VkPhysicalDeviceSamplerYcbcrConversionFeatures\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 samplerYcbcrConversion;\n} VkPhysicalDeviceSamplerYcbcrConversionFeatures;\n\ntypedef struct VkSamplerYcbcrConversionImageFormatProperties\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t combinedImageSamplerDescriptorCount;\n} VkSamplerYcbcrConversionImageFormatProperties;\n\n\ntypedef void (VKAPI_PTR *PFN_vkCmdDispatchBase)(VkCommandBuffer commandBuffer, uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ);\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateDescriptorUpdateTemplate)(VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate);\ntypedef void (VKAPI_PTR *PFN_vkDestroyDescriptorUpdateTemplate)(VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator);\ntypedef void (VKAPI_PTR *PFN_vkUpdateDescriptorSetWithTemplate)(VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData);\ntypedef void (VKAPI_PTR *PFN_vkGetDescriptorSetLayoutSupport)(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport);\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateSamplerYcbcrConversion)(VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSamplerYcbcrConversion* pYcbcrConversion);\ntypedef void (VKAPI_PTR *PFN_vkDestroySamplerYcbcrConversion)(VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, const VkAllocationCallbacks* pAllocator);\n\n#define VK_GRAPHICS_VERSION_1_1 1\n\ntypedef enum\n{\n    VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT = 0,\n    VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT = 1,\n    VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR = VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT,\n    VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR = VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT,\n    VK_TESSELLATION_DOMAIN_ORIGIN_MAX_ENUM = 0x7FFFFFFF\n} VkTessellationDomainOrigin;\n\n\ntypedef struct VkDeviceGroupRenderPassBeginInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t deviceMask;\n    uint32_t deviceRenderAreaCount;\n    const VkRect2D* pDeviceRenderAreas;\n} VkDeviceGroupRenderPassBeginInfo;\n\ntypedef struct VkPhysicalDevicePointClippingProperties\n{\n    VkStructureType sType;\n    void* pNext;\n    VkPointClippingBehavior pointClippingBehavior;\n} VkPhysicalDevicePointClippingProperties;\n\ntypedef struct VkInputAttachmentAspectReference\n{\n    uint32_t subpass;\n    uint32_t inputAttachmentIndex;\n    VkImageAspectFlags aspectMask;\n} VkInputAttachmentAspectReference;\n\ntypedef struct VkRenderPassInputAttachmentAspectCreateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t aspectReferenceCount;\n    const VkInputAttachmentAspectReference* pAspectReferences;\n} VkRenderPassInputAttachmentAspectCreateInfo;\n\ntypedef struct VkPipelineTessellationDomainOriginStateCreateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkTessellationDomainOrigin domainOrigin;\n} VkPipelineTessellationDomainOriginStateCreateInfo;\n\ntypedef struct VkRenderPassMultiviewCreateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t subpassCount;\n    const uint32_t* pViewMasks;\n    uint32_t dependencyCount;\n    const int32_t* pViewOffsets;\n    uint32_t correlationMaskCount;\n    const uint32_t* pCorrelationMasks;\n} VkRenderPassMultiviewCreateInfo;\n\ntypedef struct VkPhysicalDeviceMultiviewFeatures\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 multiview;\n    VkBool32 multiviewGeometryShader;\n    VkBool32 multiviewTessellationShader;\n} VkPhysicalDeviceMultiviewFeatures;\n\ntypedef struct VkPhysicalDeviceMultiviewProperties\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t maxMultiviewViewCount;\n    uint32_t maxMultiviewInstanceIndex;\n} VkPhysicalDeviceMultiviewProperties;\n\ntypedef struct VkPhysicalDeviceShaderDrawParametersFeatures\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 shaderDrawParameters;\n} VkPhysicalDeviceShaderDrawParametersFeatures;\n\ntypedef VkPhysicalDeviceShaderDrawParametersFeatures VkPhysicalDeviceShaderDrawParameterFeatures;\n\n\n\n#define VK_VERSION_1_1 1\n\n\n#define VK_BASE_VERSION_1_2 1\n\n#define VK_API_VERSION_1_2 VK_MAKE_API_VERSION(0, 1, 2, 0)\n\n#define VK_MAX_DRIVER_NAME_SIZE 256\n#define VK_MAX_DRIVER_INFO_SIZE 256\n\ntypedef enum\n{\n    VK_DRIVER_ID_AMD_PROPRIETARY = 1,\n    VK_DRIVER_ID_AMD_OPEN_SOURCE = 2,\n    VK_DRIVER_ID_MESA_RADV = 3,\n    VK_DRIVER_ID_NVIDIA_PROPRIETARY = 4,\n    VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS = 5,\n    VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA = 6,\n    VK_DRIVER_ID_IMAGINATION_PROPRIETARY = 7,\n    VK_DRIVER_ID_QUALCOMM_PROPRIETARY = 8,\n    VK_DRIVER_ID_ARM_PROPRIETARY = 9,\n    VK_DRIVER_ID_GOOGLE_SWIFTSHADER = 10,\n    VK_DRIVER_ID_GGP_PROPRIETARY = 11,\n    VK_DRIVER_ID_BROADCOM_PROPRIETARY = 12,\n    VK_DRIVER_ID_MESA_LLVMPIPE = 13,\n    VK_DRIVER_ID_MOLTENVK = 14,\n    VK_DRIVER_ID_COREAVI_PROPRIETARY = 15,\n    VK_DRIVER_ID_JUICE_PROPRIETARY = 16,\n    VK_DRIVER_ID_VERISILICON_PROPRIETARY = 17,\n    VK_DRIVER_ID_MESA_TURNIP = 18,\n    VK_DRIVER_ID_MESA_V3DV = 19,\n    VK_DRIVER_ID_MESA_PANVK = 20,\n    VK_DRIVER_ID_SAMSUNG_PROPRIETARY = 21,\n    VK_DRIVER_ID_MESA_VENUS = 22,\n    VK_DRIVER_ID_MESA_DOZEN = 23,\n    VK_DRIVER_ID_MESA_NVK = 24,\n    VK_DRIVER_ID_IMAGINATION_OPEN_SOURCE_MESA = 25,\n    VK_DRIVER_ID_MESA_HONEYKRISP = 26,\n    VK_DRIVER_ID_VULKAN_SC_EMULATION_ON_VULKAN = 27,\n    VK_DRIVER_ID_MESA_KOSMICKRISP = 28,\n    VK_DRIVER_ID_AMD_PROPRIETARY_KHR = VK_DRIVER_ID_AMD_PROPRIETARY,\n    VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = VK_DRIVER_ID_AMD_OPEN_SOURCE,\n    VK_DRIVER_ID_MESA_RADV_KHR = VK_DRIVER_ID_MESA_RADV,\n    VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR = VK_DRIVER_ID_NVIDIA_PROPRIETARY,\n    VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR = VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS,\n    VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR = VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA,\n    VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR = VK_DRIVER_ID_IMAGINATION_PROPRIETARY,\n    VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR = VK_DRIVER_ID_QUALCOMM_PROPRIETARY,\n    VK_DRIVER_ID_ARM_PROPRIETARY_KHR = VK_DRIVER_ID_ARM_PROPRIETARY,\n    VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR = VK_DRIVER_ID_GOOGLE_SWIFTSHADER,\n    VK_DRIVER_ID_GGP_PROPRIETARY_KHR = VK_DRIVER_ID_GGP_PROPRIETARY,\n    VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR = VK_DRIVER_ID_BROADCOM_PROPRIETARY,\n    VK_DRIVER_ID_MAX_ENUM = 0x7FFFFFFF\n} VkDriverId;\n\ntypedef enum\n{\n    VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY = 0,\n    VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL = 1,\n    VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE = 2,\n    VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY,\n    VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL,\n    VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE,\n    VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM = 0x7FFFFFFF\n} VkShaderFloatControlsIndependence;\n\n\ntypedef enum\n{\n    VK_RESOLVE_MODE_NONE = 0,\n    VK_RESOLVE_MODE_SAMPLE_ZERO_BIT = 0x00000001,\n    VK_RESOLVE_MODE_AVERAGE_BIT = 0x00000002,\n    VK_RESOLVE_MODE_MIN_BIT = 0x00000004,\n    VK_RESOLVE_MODE_MAX_BIT = 0x00000008,\n    VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID = 0x00000010,\n    VK_RESOLVE_MODE_CUSTOM_BIT_EXT = 0x00000020,\n    VK_RESOLVE_MODE_NONE_KHR = VK_RESOLVE_MODE_NONE,\n    VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR = VK_RESOLVE_MODE_SAMPLE_ZERO_BIT,\n    VK_RESOLVE_MODE_AVERAGE_BIT_KHR = VK_RESOLVE_MODE_AVERAGE_BIT,\n    VK_RESOLVE_MODE_MIN_BIT_KHR = VK_RESOLVE_MODE_MIN_BIT,\n    VK_RESOLVE_MODE_MAX_BIT_KHR = VK_RESOLVE_MODE_MAX_BIT,\n    VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID = VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID,\n    VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkResolveModeFlagBits;\ntypedef VkFlags VkResolveModeFlags;\ntypedef enum\n{\n    VK_SEMAPHORE_TYPE_BINARY = 0,\n    VK_SEMAPHORE_TYPE_TIMELINE = 1,\n    VK_SEMAPHORE_TYPE_BINARY_KHR = VK_SEMAPHORE_TYPE_BINARY,\n    VK_SEMAPHORE_TYPE_TIMELINE_KHR = VK_SEMAPHORE_TYPE_TIMELINE,\n    VK_SEMAPHORE_TYPE_MAX_ENUM = 0x7FFFFFFF\n} VkSemaphoreType;\n\n\ntypedef enum\n{\n    VK_SEMAPHORE_WAIT_ANY_BIT = 0x00000001,\n    VK_SEMAPHORE_WAIT_ANY_BIT_KHR = VK_SEMAPHORE_WAIT_ANY_BIT,\n    VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkSemaphoreWaitFlagBits;\ntypedef VkFlags VkSemaphoreWaitFlags;\n\ntypedef struct VkConformanceVersion\n{\n    uint8_t major;\n    uint8_t minor;\n    uint8_t subminor;\n    uint8_t patch;\n} VkConformanceVersion;\n\ntypedef struct VkPhysicalDeviceDriverProperties\n{\n    VkStructureType sType;\n    void* pNext;\n    VkDriverId driverID;\n    char driverName[VK_MAX_DRIVER_NAME_SIZE];\n    char driverInfo[VK_MAX_DRIVER_INFO_SIZE];\n    VkConformanceVersion conformanceVersion;\n} VkPhysicalDeviceDriverProperties;\n\ntypedef struct VkPhysicalDeviceVulkan11Features\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 storageBuffer16BitAccess;\n    VkBool32 uniformAndStorageBuffer16BitAccess;\n    VkBool32 storagePushConstant16;\n    VkBool32 storageInputOutput16;\n    VkBool32 multiview;\n    VkBool32 multiviewGeometryShader;\n    VkBool32 multiviewTessellationShader;\n    VkBool32 variablePointersStorageBuffer;\n    VkBool32 variablePointers;\n    VkBool32 protectedMemory;\n    VkBool32 samplerYcbcrConversion;\n    VkBool32 shaderDrawParameters;\n} VkPhysicalDeviceVulkan11Features;\n\ntypedef struct VkPhysicalDeviceVulkan11Properties\n{\n    VkStructureType sType;\n    void* pNext;\n    uint8_t deviceUUID[VK_UUID_SIZE];\n    uint8_t driverUUID[VK_UUID_SIZE];\n    uint8_t deviceLUID[VK_LUID_SIZE];\n    uint32_t deviceNodeMask;\n    VkBool32 deviceLUIDValid;\n    uint32_t subgroupSize;\n    VkShaderStageFlags subgroupSupportedStages;\n    VkSubgroupFeatureFlags subgroupSupportedOperations;\n    VkBool32 subgroupQuadOperationsInAllStages;\n    VkPointClippingBehavior pointClippingBehavior;\n    uint32_t maxMultiviewViewCount;\n    uint32_t maxMultiviewInstanceIndex;\n    VkBool32 protectedNoFault;\n    uint32_t maxPerSetDescriptors;\n    VkDeviceSize maxMemoryAllocationSize;\n} VkPhysicalDeviceVulkan11Properties;\n\ntypedef struct VkPhysicalDeviceVulkan12Features\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 samplerMirrorClampToEdge;\n    VkBool32 drawIndirectCount;\n    VkBool32 storageBuffer8BitAccess;\n    VkBool32 uniformAndStorageBuffer8BitAccess;\n    VkBool32 storagePushConstant8;\n    VkBool32 shaderBufferInt64Atomics;\n    VkBool32 shaderSharedInt64Atomics;\n    VkBool32 shaderFloat16;\n    VkBool32 shaderInt8;\n    VkBool32 descriptorIndexing;\n    VkBool32 shaderInputAttachmentArrayDynamicIndexing;\n    VkBool32 shaderUniformTexelBufferArrayDynamicIndexing;\n    VkBool32 shaderStorageTexelBufferArrayDynamicIndexing;\n    VkBool32 shaderUniformBufferArrayNonUniformIndexing;\n    VkBool32 shaderSampledImageArrayNonUniformIndexing;\n    VkBool32 shaderStorageBufferArrayNonUniformIndexing;\n    VkBool32 shaderStorageImageArrayNonUniformIndexing;\n    VkBool32 shaderInputAttachmentArrayNonUniformIndexing;\n    VkBool32 shaderUniformTexelBufferArrayNonUniformIndexing;\n    VkBool32 shaderStorageTexelBufferArrayNonUniformIndexing;\n    VkBool32 descriptorBindingUniformBufferUpdateAfterBind;\n    VkBool32 descriptorBindingSampledImageUpdateAfterBind;\n    VkBool32 descriptorBindingStorageImageUpdateAfterBind;\n    VkBool32 descriptorBindingStorageBufferUpdateAfterBind;\n    VkBool32 descriptorBindingUniformTexelBufferUpdateAfterBind;\n    VkBool32 descriptorBindingStorageTexelBufferUpdateAfterBind;\n    VkBool32 descriptorBindingUpdateUnusedWhilePending;\n    VkBool32 descriptorBindingPartiallyBound;\n    VkBool32 descriptorBindingVariableDescriptorCount;\n    VkBool32 runtimeDescriptorArray;\n    VkBool32 samplerFilterMinmax;\n    VkBool32 scalarBlockLayout;\n    VkBool32 imagelessFramebuffer;\n    VkBool32 uniformBufferStandardLayout;\n    VkBool32 shaderSubgroupExtendedTypes;\n    VkBool32 separateDepthStencilLayouts;\n    VkBool32 hostQueryReset;\n    VkBool32 timelineSemaphore;\n    VkBool32 bufferDeviceAddress;\n    VkBool32 bufferDeviceAddressCaptureReplay;\n    VkBool32 bufferDeviceAddressMultiDevice;\n    VkBool32 vulkanMemoryModel;\n    VkBool32 vulkanMemoryModelDeviceScope;\n    VkBool32 vulkanMemoryModelAvailabilityVisibilityChains;\n    VkBool32 shaderOutputViewportIndex;\n    VkBool32 shaderOutputLayer;\n    VkBool32 subgroupBroadcastDynamicId;\n} VkPhysicalDeviceVulkan12Features;\n\ntypedef struct VkPhysicalDeviceVulkan12Properties\n{\n    VkStructureType sType;\n    void* pNext;\n    VkDriverId driverID;\n    char driverName[VK_MAX_DRIVER_NAME_SIZE];\n    char driverInfo[VK_MAX_DRIVER_INFO_SIZE];\n    VkConformanceVersion conformanceVersion;\n    VkShaderFloatControlsIndependence denormBehaviorIndependence;\n    VkShaderFloatControlsIndependence roundingModeIndependence;\n    VkBool32 shaderSignedZeroInfNanPreserveFloat16;\n    VkBool32 shaderSignedZeroInfNanPreserveFloat32;\n    VkBool32 shaderSignedZeroInfNanPreserveFloat64;\n    VkBool32 shaderDenormPreserveFloat16;\n    VkBool32 shaderDenormPreserveFloat32;\n    VkBool32 shaderDenormPreserveFloat64;\n    VkBool32 shaderDenormFlushToZeroFloat16;\n    VkBool32 shaderDenormFlushToZeroFloat32;\n    VkBool32 shaderDenormFlushToZeroFloat64;\n    VkBool32 shaderRoundingModeRTEFloat16;\n    VkBool32 shaderRoundingModeRTEFloat32;\n    VkBool32 shaderRoundingModeRTEFloat64;\n    VkBool32 shaderRoundingModeRTZFloat16;\n    VkBool32 shaderRoundingModeRTZFloat32;\n    VkBool32 shaderRoundingModeRTZFloat64;\n    uint32_t maxUpdateAfterBindDescriptorsInAllPools;\n    VkBool32 shaderUniformBufferArrayNonUniformIndexingNative;\n    VkBool32 shaderSampledImageArrayNonUniformIndexingNative;\n    VkBool32 shaderStorageBufferArrayNonUniformIndexingNative;\n    VkBool32 shaderStorageImageArrayNonUniformIndexingNative;\n    VkBool32 shaderInputAttachmentArrayNonUniformIndexingNative;\n    VkBool32 robustBufferAccessUpdateAfterBind;\n    VkBool32 quadDivergentImplicitLod;\n    uint32_t maxPerStageDescriptorUpdateAfterBindSamplers;\n    uint32_t maxPerStageDescriptorUpdateAfterBindUniformBuffers;\n    uint32_t maxPerStageDescriptorUpdateAfterBindStorageBuffers;\n    uint32_t maxPerStageDescriptorUpdateAfterBindSampledImages;\n    uint32_t maxPerStageDescriptorUpdateAfterBindStorageImages;\n    uint32_t maxPerStageDescriptorUpdateAfterBindInputAttachments;\n    uint32_t maxPerStageUpdateAfterBindResources;\n    uint32_t maxDescriptorSetUpdateAfterBindSamplers;\n    uint32_t maxDescriptorSetUpdateAfterBindUniformBuffers;\n    uint32_t maxDescriptorSetUpdateAfterBindUniformBuffersDynamic;\n    uint32_t maxDescriptorSetUpdateAfterBindStorageBuffers;\n    uint32_t maxDescriptorSetUpdateAfterBindStorageBuffersDynamic;\n    uint32_t maxDescriptorSetUpdateAfterBindSampledImages;\n    uint32_t maxDescriptorSetUpdateAfterBindStorageImages;\n    uint32_t maxDescriptorSetUpdateAfterBindInputAttachments;\n    VkResolveModeFlags supportedDepthResolveModes;\n    VkResolveModeFlags supportedStencilResolveModes;\n    VkBool32 independentResolveNone;\n    VkBool32 independentResolve;\n    VkBool32 filterMinmaxSingleComponentFormats;\n    VkBool32 filterMinmaxImageComponentMapping;\n    uint64_t maxTimelineSemaphoreValueDifference;\n    VkSampleCountFlags framebufferIntegerColorSampleCounts;\n} VkPhysicalDeviceVulkan12Properties;\n\ntypedef struct VkImageFormatListCreateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t viewFormatCount;\n    const VkFormat* pViewFormats;\n} VkImageFormatListCreateInfo;\n\ntypedef struct VkPhysicalDeviceVulkanMemoryModelFeatures\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 vulkanMemoryModel;\n    VkBool32 vulkanMemoryModelDeviceScope;\n    VkBool32 vulkanMemoryModelAvailabilityVisibilityChains;\n} VkPhysicalDeviceVulkanMemoryModelFeatures;\n\ntypedef struct VkPhysicalDeviceHostQueryResetFeatures\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 hostQueryReset;\n} VkPhysicalDeviceHostQueryResetFeatures;\n\ntypedef struct VkPhysicalDeviceTimelineSemaphoreFeatures\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 timelineSemaphore;\n} VkPhysicalDeviceTimelineSemaphoreFeatures;\n\ntypedef struct VkPhysicalDeviceTimelineSemaphoreProperties\n{\n    VkStructureType sType;\n    void* pNext;\n    uint64_t maxTimelineSemaphoreValueDifference;\n} VkPhysicalDeviceTimelineSemaphoreProperties;\n\ntypedef struct VkSemaphoreTypeCreateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkSemaphoreType semaphoreType;\n    uint64_t initialValue;\n} VkSemaphoreTypeCreateInfo;\n\ntypedef struct VkTimelineSemaphoreSubmitInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t waitSemaphoreValueCount;\n    const uint64_t* pWaitSemaphoreValues;\n    uint32_t signalSemaphoreValueCount;\n    const uint64_t* pSignalSemaphoreValues;\n} VkTimelineSemaphoreSubmitInfo;\n\ntypedef struct VkSemaphoreWaitInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkSemaphoreWaitFlags flags;\n    uint32_t semaphoreCount;\n    const VkSemaphore* pSemaphores;\n    const uint64_t* pValues;\n} VkSemaphoreWaitInfo;\n\ntypedef struct VkSemaphoreSignalInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkSemaphore semaphore;\n    uint64_t value;\n} VkSemaphoreSignalInfo;\n\ntypedef struct VkPhysicalDeviceBufferDeviceAddressFeatures\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 bufferDeviceAddress;\n    VkBool32 bufferDeviceAddressCaptureReplay;\n    VkBool32 bufferDeviceAddressMultiDevice;\n} VkPhysicalDeviceBufferDeviceAddressFeatures;\n\ntypedef struct VkBufferDeviceAddressInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkBuffer buffer;\n} VkBufferDeviceAddressInfo;\n\ntypedef struct VkBufferOpaqueCaptureAddressCreateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint64_t opaqueCaptureAddress;\n} VkBufferOpaqueCaptureAddressCreateInfo;\n\ntypedef struct VkMemoryOpaqueCaptureAddressAllocateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint64_t opaqueCaptureAddress;\n} VkMemoryOpaqueCaptureAddressAllocateInfo;\n\ntypedef struct VkDeviceMemoryOpaqueCaptureAddressInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkDeviceMemory memory;\n} VkDeviceMemoryOpaqueCaptureAddressInfo;\n\n\ntypedef void (VKAPI_PTR *PFN_vkResetQueryPool)(VkDevice device, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreCounterValue)(VkDevice device, VkSemaphore semaphore, uint64_t* pValue);\ntypedef VkResult (VKAPI_PTR *PFN_vkWaitSemaphores)(VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, uint64_t timeout);\ntypedef VkResult (VKAPI_PTR *PFN_vkSignalSemaphore)(VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo);\ntypedef VkDeviceAddress (VKAPI_PTR *PFN_vkGetBufferDeviceAddress)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo);\ntypedef uint64_t (VKAPI_PTR *PFN_vkGetBufferOpaqueCaptureAddress)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo);\ntypedef uint64_t (VKAPI_PTR *PFN_vkGetDeviceMemoryOpaqueCaptureAddress)(VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo);\n\n#define VK_COMPUTE_VERSION_1_2 1\n\n\ntypedef enum\n{\n    VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT = 0x00000001,\n    VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT = 0x00000002,\n    VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT = 0x00000004,\n    VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT = 0x00000008,\n    VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT = VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT,\n    VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT = VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT,\n    VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT = VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT,\n    VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT = VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT,\n    VK_DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkDescriptorBindingFlagBits;\ntypedef VkFlags VkDescriptorBindingFlags;\ntypedef enum\n{\n    VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE = 0,\n    VK_SAMPLER_REDUCTION_MODE_MIN = 1,\n    VK_SAMPLER_REDUCTION_MODE_MAX = 2,\n    VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM = 1000521000,\n    VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE,\n    VK_SAMPLER_REDUCTION_MODE_MIN_EXT = VK_SAMPLER_REDUCTION_MODE_MIN,\n    VK_SAMPLER_REDUCTION_MODE_MAX_EXT = VK_SAMPLER_REDUCTION_MODE_MAX,\n    VK_SAMPLER_REDUCTION_MODE_MAX_ENUM = 0x7FFFFFFF\n} VkSamplerReductionMode;\n\n\ntypedef struct VkPhysicalDevice8BitStorageFeatures\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 storageBuffer8BitAccess;\n    VkBool32 uniformAndStorageBuffer8BitAccess;\n    VkBool32 storagePushConstant8;\n} VkPhysicalDevice8BitStorageFeatures;\n\ntypedef struct VkPhysicalDeviceShaderAtomicInt64Features\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 shaderBufferInt64Atomics;\n    VkBool32 shaderSharedInt64Atomics;\n} VkPhysicalDeviceShaderAtomicInt64Features;\n\ntypedef struct VkPhysicalDeviceShaderFloat16Int8Features\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 shaderFloat16;\n    VkBool32 shaderInt8;\n} VkPhysicalDeviceShaderFloat16Int8Features;\n\ntypedef struct VkPhysicalDeviceFloatControlsProperties\n{\n    VkStructureType sType;\n    void* pNext;\n    VkShaderFloatControlsIndependence denormBehaviorIndependence;\n    VkShaderFloatControlsIndependence roundingModeIndependence;\n    VkBool32 shaderSignedZeroInfNanPreserveFloat16;\n    VkBool32 shaderSignedZeroInfNanPreserveFloat32;\n    VkBool32 shaderSignedZeroInfNanPreserveFloat64;\n    VkBool32 shaderDenormPreserveFloat16;\n    VkBool32 shaderDenormPreserveFloat32;\n    VkBool32 shaderDenormPreserveFloat64;\n    VkBool32 shaderDenormFlushToZeroFloat16;\n    VkBool32 shaderDenormFlushToZeroFloat32;\n    VkBool32 shaderDenormFlushToZeroFloat64;\n    VkBool32 shaderRoundingModeRTEFloat16;\n    VkBool32 shaderRoundingModeRTEFloat32;\n    VkBool32 shaderRoundingModeRTEFloat64;\n    VkBool32 shaderRoundingModeRTZFloat16;\n    VkBool32 shaderRoundingModeRTZFloat32;\n    VkBool32 shaderRoundingModeRTZFloat64;\n} VkPhysicalDeviceFloatControlsProperties;\n\ntypedef struct VkDescriptorSetLayoutBindingFlagsCreateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t bindingCount;\n    const VkDescriptorBindingFlags* pBindingFlags;\n} VkDescriptorSetLayoutBindingFlagsCreateInfo;\n\ntypedef struct VkPhysicalDeviceDescriptorIndexingFeatures\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 shaderInputAttachmentArrayDynamicIndexing;\n    VkBool32 shaderUniformTexelBufferArrayDynamicIndexing;\n    VkBool32 shaderStorageTexelBufferArrayDynamicIndexing;\n    VkBool32 shaderUniformBufferArrayNonUniformIndexing;\n    VkBool32 shaderSampledImageArrayNonUniformIndexing;\n    VkBool32 shaderStorageBufferArrayNonUniformIndexing;\n    VkBool32 shaderStorageImageArrayNonUniformIndexing;\n    VkBool32 shaderInputAttachmentArrayNonUniformIndexing;\n    VkBool32 shaderUniformTexelBufferArrayNonUniformIndexing;\n    VkBool32 shaderStorageTexelBufferArrayNonUniformIndexing;\n    VkBool32 descriptorBindingUniformBufferUpdateAfterBind;\n    VkBool32 descriptorBindingSampledImageUpdateAfterBind;\n    VkBool32 descriptorBindingStorageImageUpdateAfterBind;\n    VkBool32 descriptorBindingStorageBufferUpdateAfterBind;\n    VkBool32 descriptorBindingUniformTexelBufferUpdateAfterBind;\n    VkBool32 descriptorBindingStorageTexelBufferUpdateAfterBind;\n    VkBool32 descriptorBindingUpdateUnusedWhilePending;\n    VkBool32 descriptorBindingPartiallyBound;\n    VkBool32 descriptorBindingVariableDescriptorCount;\n    VkBool32 runtimeDescriptorArray;\n} VkPhysicalDeviceDescriptorIndexingFeatures;\n\ntypedef struct VkPhysicalDeviceDescriptorIndexingProperties\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t maxUpdateAfterBindDescriptorsInAllPools;\n    VkBool32 shaderUniformBufferArrayNonUniformIndexingNative;\n    VkBool32 shaderSampledImageArrayNonUniformIndexingNative;\n    VkBool32 shaderStorageBufferArrayNonUniformIndexingNative;\n    VkBool32 shaderStorageImageArrayNonUniformIndexingNative;\n    VkBool32 shaderInputAttachmentArrayNonUniformIndexingNative;\n    VkBool32 robustBufferAccessUpdateAfterBind;\n    VkBool32 quadDivergentImplicitLod;\n    uint32_t maxPerStageDescriptorUpdateAfterBindSamplers;\n    uint32_t maxPerStageDescriptorUpdateAfterBindUniformBuffers;\n    uint32_t maxPerStageDescriptorUpdateAfterBindStorageBuffers;\n    uint32_t maxPerStageDescriptorUpdateAfterBindSampledImages;\n    uint32_t maxPerStageDescriptorUpdateAfterBindStorageImages;\n    uint32_t maxPerStageDescriptorUpdateAfterBindInputAttachments;\n    uint32_t maxPerStageUpdateAfterBindResources;\n    uint32_t maxDescriptorSetUpdateAfterBindSamplers;\n    uint32_t maxDescriptorSetUpdateAfterBindUniformBuffers;\n    uint32_t maxDescriptorSetUpdateAfterBindUniformBuffersDynamic;\n    uint32_t maxDescriptorSetUpdateAfterBindStorageBuffers;\n    uint32_t maxDescriptorSetUpdateAfterBindStorageBuffersDynamic;\n    uint32_t maxDescriptorSetUpdateAfterBindSampledImages;\n    uint32_t maxDescriptorSetUpdateAfterBindStorageImages;\n    uint32_t maxDescriptorSetUpdateAfterBindInputAttachments;\n} VkPhysicalDeviceDescriptorIndexingProperties;\n\ntypedef struct VkDescriptorSetVariableDescriptorCountAllocateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t descriptorSetCount;\n    const uint32_t* pDescriptorCounts;\n} VkDescriptorSetVariableDescriptorCountAllocateInfo;\n\ntypedef struct VkDescriptorSetVariableDescriptorCountLayoutSupport\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t maxVariableDescriptorCount;\n} VkDescriptorSetVariableDescriptorCountLayoutSupport;\n\ntypedef struct VkPhysicalDeviceScalarBlockLayoutFeatures\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 scalarBlockLayout;\n} VkPhysicalDeviceScalarBlockLayoutFeatures;\n\ntypedef struct VkSamplerReductionModeCreateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkSamplerReductionMode reductionMode;\n} VkSamplerReductionModeCreateInfo;\n\ntypedef struct VkPhysicalDeviceSamplerFilterMinmaxProperties\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 filterMinmaxSingleComponentFormats;\n    VkBool32 filterMinmaxImageComponentMapping;\n} VkPhysicalDeviceSamplerFilterMinmaxProperties;\n\ntypedef struct VkPhysicalDeviceUniformBufferStandardLayoutFeatures\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 uniformBufferStandardLayout;\n} VkPhysicalDeviceUniformBufferStandardLayoutFeatures;\n\ntypedef struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 shaderSubgroupExtendedTypes;\n} VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures;\n\n\n\n#define VK_GRAPHICS_VERSION_1_2 1\n\ntypedef struct VkAttachmentDescription2\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkAttachmentDescriptionFlags flags;\n    VkFormat format;\n    VkSampleCountFlagBits samples;\n    VkAttachmentLoadOp loadOp;\n    VkAttachmentStoreOp storeOp;\n    VkAttachmentLoadOp stencilLoadOp;\n    VkAttachmentStoreOp stencilStoreOp;\n    VkImageLayout initialLayout;\n    VkImageLayout finalLayout;\n} VkAttachmentDescription2;\n\ntypedef struct VkAttachmentReference2\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t attachment;\n    VkImageLayout layout;\n    VkImageAspectFlags aspectMask;\n} VkAttachmentReference2;\n\ntypedef struct VkSubpassDescription2\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkSubpassDescriptionFlags flags;\n    VkPipelineBindPoint pipelineBindPoint;\n    uint32_t viewMask;\n    uint32_t inputAttachmentCount;\n    const VkAttachmentReference2* pInputAttachments;\n    uint32_t colorAttachmentCount;\n    const VkAttachmentReference2* pColorAttachments;\n    const VkAttachmentReference2* pResolveAttachments;\n    const VkAttachmentReference2* pDepthStencilAttachment;\n    uint32_t preserveAttachmentCount;\n    const uint32_t* pPreserveAttachments;\n} VkSubpassDescription2;\n\ntypedef struct VkSubpassDependency2\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t srcSubpass;\n    uint32_t dstSubpass;\n    VkPipelineStageFlags srcStageMask;\n    VkPipelineStageFlags dstStageMask;\n    VkAccessFlags srcAccessMask;\n    VkAccessFlags dstAccessMask;\n    VkDependencyFlags dependencyFlags;\n    int32_t viewOffset;\n} VkSubpassDependency2;\n\ntypedef struct VkSubpassBeginInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkSubpassContents contents;\n} VkSubpassBeginInfo;\n\ntypedef struct VkSubpassEndInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n} VkSubpassEndInfo;\n\ntypedef struct VkRenderPassCreateInfo2\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkRenderPassCreateFlags flags;\n    uint32_t attachmentCount;\n    const VkAttachmentDescription2* pAttachments;\n    uint32_t subpassCount;\n    const VkSubpassDescription2* pSubpasses;\n    uint32_t dependencyCount;\n    const VkSubpassDependency2* pDependencies;\n    uint32_t correlatedViewMaskCount;\n    const uint32_t* pCorrelatedViewMasks;\n} VkRenderPassCreateInfo2;\n\ntypedef struct VkSubpassDescriptionDepthStencilResolve\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkResolveModeFlagBits depthResolveMode;\n    VkResolveModeFlagBits stencilResolveMode;\n    const VkAttachmentReference2* pDepthStencilResolveAttachment;\n} VkSubpassDescriptionDepthStencilResolve;\n\ntypedef struct VkPhysicalDeviceDepthStencilResolveProperties\n{\n    VkStructureType sType;\n    void* pNext;\n    VkResolveModeFlags supportedDepthResolveModes;\n    VkResolveModeFlags supportedStencilResolveModes;\n    VkBool32 independentResolveNone;\n    VkBool32 independentResolve;\n} VkPhysicalDeviceDepthStencilResolveProperties;\n\ntypedef struct VkImageStencilUsageCreateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkImageUsageFlags stencilUsage;\n} VkImageStencilUsageCreateInfo;\n\ntypedef struct VkPhysicalDeviceImagelessFramebufferFeatures\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 imagelessFramebuffer;\n} VkPhysicalDeviceImagelessFramebufferFeatures;\n\ntypedef struct VkFramebufferAttachmentImageInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkImageCreateFlags flags;\n    VkImageUsageFlags usage;\n    uint32_t width;\n    uint32_t height;\n    uint32_t layerCount;\n    uint32_t viewFormatCount;\n    const VkFormat* pViewFormats;\n} VkFramebufferAttachmentImageInfo;\n\ntypedef struct VkRenderPassAttachmentBeginInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t attachmentCount;\n    const VkImageView* pAttachments;\n} VkRenderPassAttachmentBeginInfo;\n\ntypedef struct VkFramebufferAttachmentsCreateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t attachmentImageInfoCount;\n    const VkFramebufferAttachmentImageInfo* pAttachmentImageInfos;\n} VkFramebufferAttachmentsCreateInfo;\n\ntypedef struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 separateDepthStencilLayouts;\n} VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures;\n\ntypedef struct VkAttachmentReferenceStencilLayout\n{\n    VkStructureType sType;\n    void* pNext;\n    VkImageLayout stencilLayout;\n} VkAttachmentReferenceStencilLayout;\n\ntypedef struct VkAttachmentDescriptionStencilLayout\n{\n    VkStructureType sType;\n    void* pNext;\n    VkImageLayout stencilInitialLayout;\n    VkImageLayout stencilFinalLayout;\n} VkAttachmentDescriptionStencilLayout;\n\n\ntypedef void (VKAPI_PTR *PFN_vkCmdDrawIndirectCount)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride);\ntypedef void (VKAPI_PTR *PFN_vkCmdDrawIndexedIndirectCount)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride);\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateRenderPass2)(VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass);\ntypedef void (VKAPI_PTR *PFN_vkCmdBeginRenderPass2)(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, const VkSubpassBeginInfo* pSubpassBeginInfo);\ntypedef void (VKAPI_PTR *PFN_vkCmdNextSubpass2)(VkCommandBuffer commandBuffer, const VkSubpassBeginInfo* pSubpassBeginInfo, const VkSubpassEndInfo* pSubpassEndInfo);\ntypedef void (VKAPI_PTR *PFN_vkCmdEndRenderPass2)(VkCommandBuffer commandBuffer, const VkSubpassEndInfo* pSubpassEndInfo);\n\n#define VK_VERSION_1_2 1\n\n\n#define VK_BASE_VERSION_1_3 1\n\n#define VK_API_VERSION_1_3 VK_MAKE_API_VERSION(0, 1, 3, 0)\n\ntypedef uint64_t VkFlags64;\n\nVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPrivateDataSlot)\n\n\ntypedef enum\n{\n    VK_TOOL_PURPOSE_VALIDATION_BIT = 0x00000001,\n    VK_TOOL_PURPOSE_PROFILING_BIT = 0x00000002,\n    VK_TOOL_PURPOSE_TRACING_BIT = 0x00000004,\n    VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT = 0x00000008,\n    VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT = 0x00000010,\n    VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT = 0x00000020,\n    VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT = 0x00000040,\n    VK_TOOL_PURPOSE_VALIDATION_BIT_EXT = VK_TOOL_PURPOSE_VALIDATION_BIT,\n    VK_TOOL_PURPOSE_PROFILING_BIT_EXT = VK_TOOL_PURPOSE_PROFILING_BIT,\n    VK_TOOL_PURPOSE_TRACING_BIT_EXT = VK_TOOL_PURPOSE_TRACING_BIT,\n    VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT = VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT,\n    VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT = VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT,\n    VK_TOOL_PURPOSE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkToolPurposeFlagBits;\ntypedef VkFlags VkToolPurposeFlags;\ntypedef VkFlags VkPrivateDataSlotCreateFlags;\n\ntypedef VkFlags64 VkPipelineStageFlagBits2;\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_NONE = 0;\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT = 0x00000001;\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT = 0x00000002;\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT = 0x00000004;\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT = 0x00000008;\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT = 0x00000010;\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT = 0x00000020;\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT = 0x00000040;\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT = 0x00000080;\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT = 0x00000100;\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT = 0x00000200;\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT = 0x00000400;\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT = 0x00000800;\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT = 0x00001000;\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TRANSFER_BIT = 0x00001000;\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT = 0x00002000;\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_HOST_BIT = 0x00004000;\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT = 0x00008000;\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT = 0x00010000;\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COPY_BIT = (VkPipelineStageFlagBits2)(((VkPipelineStageFlagBits2)0x00000001 << 32) | (0x00000000));\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_RESOLVE_BIT = (VkPipelineStageFlagBits2)(((VkPipelineStageFlagBits2)0x00000002 << 32) | (0x00000000));\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_BLIT_BIT = (VkPipelineStageFlagBits2)(((VkPipelineStageFlagBits2)0x00000004 << 32) | (0x00000000));\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_CLEAR_BIT = (VkPipelineStageFlagBits2)(((VkPipelineStageFlagBits2)0x00000008 << 32) | (0x00000000));\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT = (VkPipelineStageFlagBits2)(((VkPipelineStageFlagBits2)0x00000010 << 32) | (0x00000000));\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT = (VkPipelineStageFlagBits2)(((VkPipelineStageFlagBits2)0x00000020 << 32) | (0x00000000));\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT = (VkPipelineStageFlagBits2)(((VkPipelineStageFlagBits2)0x00000040 << 32) | (0x00000000));\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR = 0x04000000;\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR = 0x08000000;\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT = 0x01000000;\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT = 0x00040000;\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_EXT = 0x00020000;\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x00400000;\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR = 0x02000000;\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR = 0x00200000;\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 0x00800000;\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT = 0x00080000;\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT = 0x00100000;\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI = (VkPipelineStageFlagBits2)(((VkPipelineStageFlagBits2)0x00000080 << 32) | (0x00000000));\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI = (VkPipelineStageFlagBits2)(((VkPipelineStageFlagBits2)0x00000100 << 32) | (0x00000000));\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR = 0x10000000;\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT = 0x40000000;\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI = (VkPipelineStageFlagBits2)(((VkPipelineStageFlagBits2)0x00000200 << 32) | (0x00000000));\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV = 0x20000000;\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_CONVERT_COOPERATIVE_VECTOR_MATRIX_BIT_NV = (VkPipelineStageFlagBits2)(((VkPipelineStageFlagBits2)0x00001000 << 32) | (0x00000000));\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_DATA_GRAPH_BIT_ARM = (VkPipelineStageFlagBits2)(((VkPipelineStageFlagBits2)0x00000400 << 32) | (0x00000000));\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COPY_INDIRECT_BIT_KHR = (VkPipelineStageFlagBits2)(((VkPipelineStageFlagBits2)0x00004000 << 32) | (0x00000000));\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_MEMORY_DECOMPRESSION_BIT_EXT = (VkPipelineStageFlagBits2)(((VkPipelineStageFlagBits2)0x00002000 << 32) | (0x00000000));\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_NONE_KHR = 0;\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR = 0x00000001;\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR = 0x00000002;\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT_KHR = 0x00000004;\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR = 0x00000008;\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR = 0x00000010;\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR = 0x00000020;\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR = 0x00000040;\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR = 0x00000080;\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR = 0x00000100;\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR = 0x00000200;\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR = 0x00000400;\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR = 0x00000800;\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT_KHR = 0x00001000;\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR = 0x00001000;\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR = 0x00002000;\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_HOST_BIT_KHR = 0x00004000;\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR = 0x00008000;\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR = 0x00010000;\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COPY_BIT_KHR = (VkPipelineStageFlagBits2)(((VkPipelineStageFlagBits2)0x00000001 << 32) | (0x00000000));\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR = (VkPipelineStageFlagBits2)(((VkPipelineStageFlagBits2)0x00000002 << 32) | (0x00000000));\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_BLIT_BIT_KHR = (VkPipelineStageFlagBits2)(((VkPipelineStageFlagBits2)0x00000004 << 32) | (0x00000000));\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR = (VkPipelineStageFlagBits2)(((VkPipelineStageFlagBits2)0x00000008 << 32) | (0x00000000));\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR = (VkPipelineStageFlagBits2)(((VkPipelineStageFlagBits2)0x00000010 << 32) | (0x00000000));\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR = (VkPipelineStageFlagBits2)(((VkPipelineStageFlagBits2)0x00000020 << 32) | (0x00000000));\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT_KHR = (VkPipelineStageFlagBits2)(((VkPipelineStageFlagBits2)0x00000040 << 32) | (0x00000000));\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV = 0x00020000;\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV = 0x00400000;\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_NV = 0x00200000;\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_NV = 0x02000000;\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV = 0x00080000;\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV = 0x00100000;\nstatic const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI = (VkPipelineStageFlagBits2)(((VkPipelineStageFlagBits2)0x00000080 << 32) | (0x00000000));\ntypedef VkFlags64 VkPipelineStageFlags2;\n\ntypedef VkFlags64 VkAccessFlagBits2;\nstatic const VkAccessFlagBits2 VK_ACCESS_2_NONE = 0;\nstatic const VkAccessFlagBits2 VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT = 0x00000001;\nstatic const VkAccessFlagBits2 VK_ACCESS_2_INDEX_READ_BIT = 0x00000002;\nstatic const VkAccessFlagBits2 VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT = 0x00000004;\nstatic const VkAccessFlagBits2 VK_ACCESS_2_UNIFORM_READ_BIT = 0x00000008;\nstatic const VkAccessFlagBits2 VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT = 0x00000010;\nstatic const VkAccessFlagBits2 VK_ACCESS_2_SHADER_READ_BIT = 0x00000020;\nstatic const VkAccessFlagBits2 VK_ACCESS_2_SHADER_WRITE_BIT = 0x00000040;\nstatic const VkAccessFlagBits2 VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT = 0x00000080;\nstatic const VkAccessFlagBits2 VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT = 0x00000100;\nstatic const VkAccessFlagBits2 VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 0x00000200;\nstatic const VkAccessFlagBits2 VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 0x00000400;\nstatic const VkAccessFlagBits2 VK_ACCESS_2_TRANSFER_READ_BIT = 0x00000800;\nstatic const VkAccessFlagBits2 VK_ACCESS_2_TRANSFER_WRITE_BIT = 0x00001000;\nstatic const VkAccessFlagBits2 VK_ACCESS_2_HOST_READ_BIT = 0x00002000;\nstatic const VkAccessFlagBits2 VK_ACCESS_2_HOST_WRITE_BIT = 0x00004000;\nstatic const VkAccessFlagBits2 VK_ACCESS_2_MEMORY_READ_BIT = 0x00008000;\nstatic const VkAccessFlagBits2 VK_ACCESS_2_MEMORY_WRITE_BIT = 0x00010000;\nstatic const VkAccessFlagBits2 VK_ACCESS_2_SHADER_SAMPLED_READ_BIT = (VkAccessFlagBits2)(((VkAccessFlagBits2)0x00000001 << 32) | (0x00000000));\nstatic const VkAccessFlagBits2 VK_ACCESS_2_SHADER_STORAGE_READ_BIT = (VkAccessFlagBits2)(((VkAccessFlagBits2)0x00000002 << 32) | (0x00000000));\nstatic const VkAccessFlagBits2 VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT = (VkAccessFlagBits2)(((VkAccessFlagBits2)0x00000004 << 32) | (0x00000000));\nstatic const VkAccessFlagBits2 VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR = (VkAccessFlagBits2)(((VkAccessFlagBits2)0x00000008 << 32) | (0x00000000));\nstatic const VkAccessFlagBits2 VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR = (VkAccessFlagBits2)(((VkAccessFlagBits2)0x00000010 << 32) | (0x00000000));\nstatic const VkAccessFlagBits2 VK_ACCESS_2_SAMPLER_HEAP_READ_BIT_EXT = (VkAccessFlagBits2)(((VkAccessFlagBits2)0x02000000 << 32) | (0x00000000));\nstatic const VkAccessFlagBits2 VK_ACCESS_2_RESOURCE_HEAP_READ_BIT_EXT = (VkAccessFlagBits2)(((VkAccessFlagBits2)0x04000000 << 32) | (0x00000000));\nstatic const VkAccessFlagBits2 VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR = (VkAccessFlagBits2)(((VkAccessFlagBits2)0x00000020 << 32) | (0x00000000));\nstatic const VkAccessFlagBits2 VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR = (VkAccessFlagBits2)(((VkAccessFlagBits2)0x00000040 << 32) | (0x00000000));\nstatic const VkAccessFlagBits2 VK_ACCESS_2_SHADER_TILE_ATTACHMENT_READ_BIT_QCOM = (VkAccessFlagBits2)(((VkAccessFlagBits2)0x00080000 << 32) | (0x00000000));\nstatic const VkAccessFlagBits2 VK_ACCESS_2_SHADER_TILE_ATTACHMENT_WRITE_BIT_QCOM = (VkAccessFlagBits2)(((VkAccessFlagBits2)0x00100000 << 32) | (0x00000000));\nstatic const VkAccessFlagBits2 VK_ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = 0x02000000;\nstatic const VkAccessFlagBits2 VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = 0x04000000;\nstatic const VkAccessFlagBits2 VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = 0x08000000;\nstatic const VkAccessFlagBits2 VK_ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT = 0x00100000;\nstatic const VkAccessFlagBits2 VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_EXT = 0x00020000;\nstatic const VkAccessFlagBits2 VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_EXT = 0x00040000;\nstatic const VkAccessFlagBits2 VK_ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR = 0x00800000;\nstatic const VkAccessFlagBits2 VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR = 0x00200000;\nstatic const VkAccessFlagBits2 VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 0x00400000;\nstatic const VkAccessFlagBits2 VK_ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 0x01000000;\nstatic const VkAccessFlagBits2 VK_ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 0x00080000;\nstatic const VkAccessFlagBits2 VK_ACCESS_2_DESCRIPTOR_BUFFER_READ_BIT_EXT = (VkAccessFlagBits2)(((VkAccessFlagBits2)0x00000200 << 32) | (0x00000000));\nstatic const VkAccessFlagBits2 VK_ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI = (VkAccessFlagBits2)(((VkAccessFlagBits2)0x00000080 << 32) | (0x00000000));\nstatic const VkAccessFlagBits2 VK_ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR = (VkAccessFlagBits2)(((VkAccessFlagBits2)0x00000100 << 32) | (0x00000000));\nstatic const VkAccessFlagBits2 VK_ACCESS_2_MICROMAP_READ_BIT_EXT = (VkAccessFlagBits2)(((VkAccessFlagBits2)0x00001000 << 32) | (0x00000000));\nstatic const VkAccessFlagBits2 VK_ACCESS_2_MICROMAP_WRITE_BIT_EXT = (VkAccessFlagBits2)(((VkAccessFlagBits2)0x00002000 << 32) | (0x00000000));\nstatic const VkAccessFlagBits2 VK_ACCESS_2_OPTICAL_FLOW_READ_BIT_NV = (VkAccessFlagBits2)(((VkAccessFlagBits2)0x00000400 << 32) | (0x00000000));\nstatic const VkAccessFlagBits2 VK_ACCESS_2_OPTICAL_FLOW_WRITE_BIT_NV = (VkAccessFlagBits2)(((VkAccessFlagBits2)0x00000800 << 32) | (0x00000000));\nstatic const VkAccessFlagBits2 VK_ACCESS_2_DATA_GRAPH_READ_BIT_ARM = (VkAccessFlagBits2)(((VkAccessFlagBits2)0x00008000 << 32) | (0x00000000));\nstatic const VkAccessFlagBits2 VK_ACCESS_2_DATA_GRAPH_WRITE_BIT_ARM = (VkAccessFlagBits2)(((VkAccessFlagBits2)0x00010000 << 32) | (0x00000000));\nstatic const VkAccessFlagBits2 VK_ACCESS_2_MEMORY_DECOMPRESSION_READ_BIT_EXT = (VkAccessFlagBits2)(((VkAccessFlagBits2)0x00800000 << 32) | (0x00000000));\nstatic const VkAccessFlagBits2 VK_ACCESS_2_MEMORY_DECOMPRESSION_WRITE_BIT_EXT = (VkAccessFlagBits2)(((VkAccessFlagBits2)0x01000000 << 32) | (0x00000000));\nstatic const VkAccessFlagBits2 VK_ACCESS_2_NONE_KHR = 0;\nstatic const VkAccessFlagBits2 VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT_KHR = 0x00000001;\nstatic const VkAccessFlagBits2 VK_ACCESS_2_INDEX_READ_BIT_KHR = 0x00000002;\nstatic const VkAccessFlagBits2 VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT_KHR = 0x00000004;\nstatic const VkAccessFlagBits2 VK_ACCESS_2_UNIFORM_READ_BIT_KHR = 0x00000008;\nstatic const VkAccessFlagBits2 VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT_KHR = 0x00000010;\nstatic const VkAccessFlagBits2 VK_ACCESS_2_SHADER_READ_BIT_KHR = 0x00000020;\nstatic const VkAccessFlagBits2 VK_ACCESS_2_SHADER_WRITE_BIT_KHR = 0x00000040;\nstatic const VkAccessFlagBits2 VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT_KHR = 0x00000080;\nstatic const VkAccessFlagBits2 VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT_KHR = 0x00000100;\nstatic const VkAccessFlagBits2 VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT_KHR = 0x00000200;\nstatic const VkAccessFlagBits2 VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT_KHR = 0x00000400;\nstatic const VkAccessFlagBits2 VK_ACCESS_2_TRANSFER_READ_BIT_KHR = 0x00000800;\nstatic const VkAccessFlagBits2 VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR = 0x00001000;\nstatic const VkAccessFlagBits2 VK_ACCESS_2_HOST_READ_BIT_KHR = 0x00002000;\nstatic const VkAccessFlagBits2 VK_ACCESS_2_HOST_WRITE_BIT_KHR = 0x00004000;\nstatic const VkAccessFlagBits2 VK_ACCESS_2_MEMORY_READ_BIT_KHR = 0x00008000;\nstatic const VkAccessFlagBits2 VK_ACCESS_2_MEMORY_WRITE_BIT_KHR = 0x00010000;\nstatic const VkAccessFlagBits2 VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR = (VkAccessFlagBits2)(((VkAccessFlagBits2)0x00000001 << 32) | (0x00000000));\nstatic const VkAccessFlagBits2 VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR = (VkAccessFlagBits2)(((VkAccessFlagBits2)0x00000002 << 32) | (0x00000000));\nstatic const VkAccessFlagBits2 VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR = (VkAccessFlagBits2)(((VkAccessFlagBits2)0x00000004 << 32) | (0x00000000));\nstatic const VkAccessFlagBits2 VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV = 0x00020000;\nstatic const VkAccessFlagBits2 VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV = 0x00040000;\nstatic const VkAccessFlagBits2 VK_ACCESS_2_SHADING_RATE_IMAGE_READ_BIT_NV = 0x00800000;\nstatic const VkAccessFlagBits2 VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_NV = 0x00200000;\nstatic const VkAccessFlagBits2 VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_NV = 0x00400000;\ntypedef VkFlags64 VkAccessFlags2;\n\ntypedef enum\n{\n    VK_SUBMIT_PROTECTED_BIT = 0x00000001,\n    VK_SUBMIT_PROTECTED_BIT_KHR = VK_SUBMIT_PROTECTED_BIT,\n    VK_SUBMIT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkSubmitFlagBits;\ntypedef VkFlags VkSubmitFlags;\n\ntypedef VkFlags64 VkFormatFeatureFlagBits2;\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT = 0x00000001;\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_IMAGE_BIT = 0x00000002;\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT = 0x00000004;\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT = 0x00000008;\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT = 0x00000010;\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 0x00000020;\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_VERTEX_BUFFER_BIT = 0x00000040;\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT = 0x00000080;\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT = 0x00000100;\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000200;\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_BLIT_SRC_BIT = 0x00000400;\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_BLIT_DST_BIT = 0x00000800;\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 0x00001000;\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT = 0x00004000;\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT = 0x00008000;\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT = 0x00010000;\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT = 0x00020000;\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = 0x00040000;\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = 0x00080000;\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = 0x00100000;\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 0x00200000;\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_DISJOINT_BIT = 0x00400000;\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT = 0x00800000;\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT = 0x80000000;\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT = (VkFormatFeatureFlagBits2)(((VkFormatFeatureFlagBits2)0x00000001 << 32) | (0x00000000));\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT = (VkFormatFeatureFlagBits2)(((VkFormatFeatureFlagBits2)0x00000002 << 32) | (0x00000000));\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT = 0x00002000;\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_HOST_IMAGE_TRANSFER_BIT = (VkFormatFeatureFlagBits2)(((VkFormatFeatureFlagBits2)0x00004000 << 32) | (0x00000000));\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_VIDEO_DECODE_OUTPUT_BIT_KHR = 0x02000000;\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_VIDEO_DECODE_DPB_BIT_KHR = 0x04000000;\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR = 0x20000000;\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_FRAGMENT_DENSITY_MAP_BIT_EXT = 0x01000000;\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x40000000;\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_VIDEO_ENCODE_INPUT_BIT_KHR = 0x08000000;\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_VIDEO_ENCODE_DPB_BIT_KHR = 0x10000000;\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_ACCELERATION_STRUCTURE_RADIUS_BUFFER_BIT_NV = (VkFormatFeatureFlagBits2)(((VkFormatFeatureFlagBits2)0x00080000 << 32) | (0x00000000));\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV = (VkFormatFeatureFlagBits2)(((VkFormatFeatureFlagBits2)0x00000040 << 32) | (0x00000000));\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM = (VkFormatFeatureFlagBits2)(((VkFormatFeatureFlagBits2)0x00000004 << 32) | (0x00000000));\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM = (VkFormatFeatureFlagBits2)(((VkFormatFeatureFlagBits2)0x00000008 << 32) | (0x00000000));\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM = (VkFormatFeatureFlagBits2)(((VkFormatFeatureFlagBits2)0x00000010 << 32) | (0x00000000));\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM = (VkFormatFeatureFlagBits2)(((VkFormatFeatureFlagBits2)0x00000020 << 32) | (0x00000000));\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_TENSOR_SHADER_BIT_ARM = (VkFormatFeatureFlagBits2)(((VkFormatFeatureFlagBits2)0x00000080 << 32) | (0x00000000));\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_TENSOR_IMAGE_ALIASING_BIT_ARM = (VkFormatFeatureFlagBits2)(((VkFormatFeatureFlagBits2)0x00000800 << 32) | (0x00000000));\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_OPTICAL_FLOW_IMAGE_BIT_NV = (VkFormatFeatureFlagBits2)(((VkFormatFeatureFlagBits2)0x00000100 << 32) | (0x00000000));\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_OPTICAL_FLOW_VECTOR_BIT_NV = (VkFormatFeatureFlagBits2)(((VkFormatFeatureFlagBits2)0x00000200 << 32) | (0x00000000));\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_OPTICAL_FLOW_COST_BIT_NV = (VkFormatFeatureFlagBits2)(((VkFormatFeatureFlagBits2)0x00000400 << 32) | (0x00000000));\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_TENSOR_DATA_GRAPH_BIT_ARM = (VkFormatFeatureFlagBits2)(((VkFormatFeatureFlagBits2)0x00010000 << 32) | (0x00000000));\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_COPY_IMAGE_INDIRECT_DST_BIT_KHR = (VkFormatFeatureFlagBits2)(((VkFormatFeatureFlagBits2)0x08000000 << 32) | (0x00000000));\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR = (VkFormatFeatureFlagBits2)(((VkFormatFeatureFlagBits2)0x00020000 << 32) | (0x00000000));\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR = (VkFormatFeatureFlagBits2)(((VkFormatFeatureFlagBits2)0x00040000 << 32) | (0x00000000));\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_DEPTH_COPY_ON_COMPUTE_QUEUE_BIT_KHR = (VkFormatFeatureFlagBits2)(((VkFormatFeatureFlagBits2)0x00100000 << 32) | (0x00000000));\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_DEPTH_COPY_ON_TRANSFER_QUEUE_BIT_KHR = (VkFormatFeatureFlagBits2)(((VkFormatFeatureFlagBits2)0x00200000 << 32) | (0x00000000));\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STENCIL_COPY_ON_COMPUTE_QUEUE_BIT_KHR = (VkFormatFeatureFlagBits2)(((VkFormatFeatureFlagBits2)0x00400000 << 32) | (0x00000000));\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STENCIL_COPY_ON_TRANSFER_QUEUE_BIT_KHR = (VkFormatFeatureFlagBits2)(((VkFormatFeatureFlagBits2)0x00800000 << 32) | (0x00000000));\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_HOST_IMAGE_TRANSFER_BIT_EXT = (VkFormatFeatureFlagBits2)(((VkFormatFeatureFlagBits2)0x00004000 << 32) | (0x00000000));\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT_KHR = 0x00000001;\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_IMAGE_BIT_KHR = 0x00000002;\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT_KHR = 0x00000004;\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT_KHR = 0x00000008;\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT_KHR = 0x00000010;\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT_KHR = 0x00000020;\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_VERTEX_BUFFER_BIT_KHR = 0x00000040;\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT_KHR = 0x00000080;\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT_KHR = 0x00000100;\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT_KHR = 0x00000200;\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_BLIT_SRC_BIT_KHR = 0x00000400;\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_BLIT_DST_BIT_KHR = 0x00000800;\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT_KHR = 0x00001000;\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT_KHR = 0x00004000;\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT_KHR = 0x00008000;\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT_KHR = 0x00020000;\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR = 0x00040000;\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR = 0x00080000;\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR = 0x00100000;\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR = 0x00200000;\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_DISJOINT_BIT_KHR = 0x00400000;\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT_KHR = 0x00800000;\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR = 0x80000000;\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR = (VkFormatFeatureFlagBits2)(((VkFormatFeatureFlagBits2)0x00000001 << 32) | (0x00000000));\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT_KHR = (VkFormatFeatureFlagBits2)(((VkFormatFeatureFlagBits2)0x00000002 << 32) | (0x00000000));\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT_KHR = 0x00010000;\nstatic const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = 0x00002000;\ntypedef VkFlags64 VkFormatFeatureFlags2;\n\ntypedef struct VkPhysicalDeviceVulkan13Features\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 robustImageAccess;\n    VkBool32 inlineUniformBlock;\n    VkBool32 descriptorBindingInlineUniformBlockUpdateAfterBind;\n    VkBool32 pipelineCreationCacheControl;\n    VkBool32 privateData;\n    VkBool32 shaderDemoteToHelperInvocation;\n    VkBool32 shaderTerminateInvocation;\n    VkBool32 subgroupSizeControl;\n    VkBool32 computeFullSubgroups;\n    VkBool32 synchronization2;\n    VkBool32 textureCompressionASTC_HDR;\n    VkBool32 shaderZeroInitializeWorkgroupMemory;\n    VkBool32 dynamicRendering;\n    VkBool32 shaderIntegerDotProduct;\n    VkBool32 maintenance4;\n} VkPhysicalDeviceVulkan13Features;\n\ntypedef struct VkPhysicalDeviceVulkan13Properties\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t minSubgroupSize;\n    uint32_t maxSubgroupSize;\n    uint32_t maxComputeWorkgroupSubgroups;\n    VkShaderStageFlags requiredSubgroupSizeStages;\n    uint32_t maxInlineUniformBlockSize;\n    uint32_t maxPerStageDescriptorInlineUniformBlocks;\n    uint32_t maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks;\n    uint32_t maxDescriptorSetInlineUniformBlocks;\n    uint32_t maxDescriptorSetUpdateAfterBindInlineUniformBlocks;\n    uint32_t maxInlineUniformTotalSize;\n    VkBool32 integerDotProduct8BitUnsignedAccelerated;\n    VkBool32 integerDotProduct8BitSignedAccelerated;\n    VkBool32 integerDotProduct8BitMixedSignednessAccelerated;\n    VkBool32 integerDotProduct4x8BitPackedUnsignedAccelerated;\n    VkBool32 integerDotProduct4x8BitPackedSignedAccelerated;\n    VkBool32 integerDotProduct4x8BitPackedMixedSignednessAccelerated;\n    VkBool32 integerDotProduct16BitUnsignedAccelerated;\n    VkBool32 integerDotProduct16BitSignedAccelerated;\n    VkBool32 integerDotProduct16BitMixedSignednessAccelerated;\n    VkBool32 integerDotProduct32BitUnsignedAccelerated;\n    VkBool32 integerDotProduct32BitSignedAccelerated;\n    VkBool32 integerDotProduct32BitMixedSignednessAccelerated;\n    VkBool32 integerDotProduct64BitUnsignedAccelerated;\n    VkBool32 integerDotProduct64BitSignedAccelerated;\n    VkBool32 integerDotProduct64BitMixedSignednessAccelerated;\n    VkBool32 integerDotProductAccumulatingSaturating8BitUnsignedAccelerated;\n    VkBool32 integerDotProductAccumulatingSaturating8BitSignedAccelerated;\n    VkBool32 integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated;\n    VkBool32 integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated;\n    VkBool32 integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated;\n    VkBool32 integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated;\n    VkBool32 integerDotProductAccumulatingSaturating16BitUnsignedAccelerated;\n    VkBool32 integerDotProductAccumulatingSaturating16BitSignedAccelerated;\n    VkBool32 integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated;\n    VkBool32 integerDotProductAccumulatingSaturating32BitUnsignedAccelerated;\n    VkBool32 integerDotProductAccumulatingSaturating32BitSignedAccelerated;\n    VkBool32 integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated;\n    VkBool32 integerDotProductAccumulatingSaturating64BitUnsignedAccelerated;\n    VkBool32 integerDotProductAccumulatingSaturating64BitSignedAccelerated;\n    VkBool32 integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated;\n    VkDeviceSize storageTexelBufferOffsetAlignmentBytes;\n    VkBool32 storageTexelBufferOffsetSingleTexelAlignment;\n    VkDeviceSize uniformTexelBufferOffsetAlignmentBytes;\n    VkBool32 uniformTexelBufferOffsetSingleTexelAlignment;\n    VkDeviceSize maxBufferSize;\n} VkPhysicalDeviceVulkan13Properties;\n\ntypedef struct VkPhysicalDeviceToolProperties\n{\n    VkStructureType sType;\n    void* pNext;\n    char name[VK_MAX_EXTENSION_NAME_SIZE];\n    char version[VK_MAX_EXTENSION_NAME_SIZE];\n    VkToolPurposeFlags purposes;\n    char description[VK_MAX_DESCRIPTION_SIZE];\n    char layer[VK_MAX_EXTENSION_NAME_SIZE];\n} VkPhysicalDeviceToolProperties;\n\ntypedef struct VkPhysicalDevicePrivateDataFeatures\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 privateData;\n} VkPhysicalDevicePrivateDataFeatures;\n\ntypedef struct VkDevicePrivateDataCreateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t privateDataSlotRequestCount;\n} VkDevicePrivateDataCreateInfo;\n\ntypedef struct VkPrivateDataSlotCreateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkPrivateDataSlotCreateFlags flags;\n} VkPrivateDataSlotCreateInfo;\n\ntypedef struct VkMemoryBarrier2\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkPipelineStageFlags2 srcStageMask;\n    VkAccessFlags2 srcAccessMask;\n    VkPipelineStageFlags2 dstStageMask;\n    VkAccessFlags2 dstAccessMask;\n} VkMemoryBarrier2;\n\ntypedef struct VkBufferMemoryBarrier2\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkPipelineStageFlags2 srcStageMask;\n    VkAccessFlags2 srcAccessMask;\n    VkPipelineStageFlags2 dstStageMask;\n    VkAccessFlags2 dstAccessMask;\n    uint32_t srcQueueFamilyIndex;\n    uint32_t dstQueueFamilyIndex;\n    VkBuffer buffer;\n    VkDeviceSize offset;\n    VkDeviceSize size;\n} VkBufferMemoryBarrier2;\n\ntypedef struct VkImageMemoryBarrier2\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkPipelineStageFlags2 srcStageMask;\n    VkAccessFlags2 srcAccessMask;\n    VkPipelineStageFlags2 dstStageMask;\n    VkAccessFlags2 dstAccessMask;\n    VkImageLayout oldLayout;\n    VkImageLayout newLayout;\n    uint32_t srcQueueFamilyIndex;\n    uint32_t dstQueueFamilyIndex;\n    VkImage image;\n    VkImageSubresourceRange subresourceRange;\n} VkImageMemoryBarrier2;\n\ntypedef struct VkDependencyInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkDependencyFlags dependencyFlags;\n    uint32_t memoryBarrierCount;\n    const VkMemoryBarrier2* pMemoryBarriers;\n    uint32_t bufferMemoryBarrierCount;\n    const VkBufferMemoryBarrier2* pBufferMemoryBarriers;\n    uint32_t imageMemoryBarrierCount;\n    const VkImageMemoryBarrier2* pImageMemoryBarriers;\n} VkDependencyInfo;\n\ntypedef struct VkSemaphoreSubmitInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkSemaphore semaphore;\n    uint64_t value;\n    VkPipelineStageFlags2 stageMask;\n    uint32_t deviceIndex;\n} VkSemaphoreSubmitInfo;\n\ntypedef struct VkCommandBufferSubmitInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkCommandBuffer commandBuffer;\n    uint32_t deviceMask;\n} VkCommandBufferSubmitInfo;\n\ntypedef struct VkSubmitInfo2\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkSubmitFlags flags;\n    uint32_t waitSemaphoreInfoCount;\n    const VkSemaphoreSubmitInfo* pWaitSemaphoreInfos;\n    uint32_t commandBufferInfoCount;\n    const VkCommandBufferSubmitInfo* pCommandBufferInfos;\n    uint32_t signalSemaphoreInfoCount;\n    const VkSemaphoreSubmitInfo* pSignalSemaphoreInfos;\n} VkSubmitInfo2;\n\ntypedef struct VkPhysicalDeviceSynchronization2Features\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 synchronization2;\n} VkPhysicalDeviceSynchronization2Features;\n\ntypedef struct VkBufferCopy2\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkDeviceSize srcOffset;\n    VkDeviceSize dstOffset;\n    VkDeviceSize size;\n} VkBufferCopy2;\n\ntypedef struct VkCopyBufferInfo2\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkBuffer srcBuffer;\n    VkBuffer dstBuffer;\n    uint32_t regionCount;\n    const VkBufferCopy2* pRegions;\n} VkCopyBufferInfo2;\n\ntypedef struct VkImageCopy2\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkImageSubresourceLayers srcSubresource;\n    VkOffset3D srcOffset;\n    VkImageSubresourceLayers dstSubresource;\n    VkOffset3D dstOffset;\n    VkExtent3D extent;\n} VkImageCopy2;\n\ntypedef struct VkCopyImageInfo2\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkImage srcImage;\n    VkImageLayout srcImageLayout;\n    VkImage dstImage;\n    VkImageLayout dstImageLayout;\n    uint32_t regionCount;\n    const VkImageCopy2* pRegions;\n} VkCopyImageInfo2;\n\ntypedef struct VkBufferImageCopy2\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkDeviceSize bufferOffset;\n    uint32_t bufferRowLength;\n    uint32_t bufferImageHeight;\n    VkImageSubresourceLayers imageSubresource;\n    VkOffset3D imageOffset;\n    VkExtent3D imageExtent;\n} VkBufferImageCopy2;\n\ntypedef struct VkCopyBufferToImageInfo2\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkBuffer srcBuffer;\n    VkImage dstImage;\n    VkImageLayout dstImageLayout;\n    uint32_t regionCount;\n    const VkBufferImageCopy2* pRegions;\n} VkCopyBufferToImageInfo2;\n\ntypedef struct VkCopyImageToBufferInfo2\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkImage srcImage;\n    VkImageLayout srcImageLayout;\n    VkBuffer dstBuffer;\n    uint32_t regionCount;\n    const VkBufferImageCopy2* pRegions;\n} VkCopyImageToBufferInfo2;\n\ntypedef struct VkPhysicalDeviceTextureCompressionASTCHDRFeatures\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 textureCompressionASTC_HDR;\n} VkPhysicalDeviceTextureCompressionASTCHDRFeatures;\n\ntypedef struct VkFormatProperties3\n{\n    VkStructureType sType;\n    void* pNext;\n    VkFormatFeatureFlags2 linearTilingFeatures;\n    VkFormatFeatureFlags2 optimalTilingFeatures;\n    VkFormatFeatureFlags2 bufferFeatures;\n} VkFormatProperties3;\n\ntypedef struct VkPhysicalDeviceMaintenance4Features\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 maintenance4;\n} VkPhysicalDeviceMaintenance4Features;\n\ntypedef struct VkPhysicalDeviceMaintenance4Properties\n{\n    VkStructureType sType;\n    void* pNext;\n    VkDeviceSize maxBufferSize;\n} VkPhysicalDeviceMaintenance4Properties;\n\ntypedef struct VkDeviceBufferMemoryRequirements\n{\n    VkStructureType sType;\n    const void* pNext;\n    const VkBufferCreateInfo* pCreateInfo;\n} VkDeviceBufferMemoryRequirements;\n\ntypedef struct VkDeviceImageMemoryRequirements\n{\n    VkStructureType sType;\n    const void* pNext;\n    const VkImageCreateInfo* pCreateInfo;\n    VkImageAspectFlagBits planeAspect;\n} VkDeviceImageMemoryRequirements;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceToolProperties)(VkPhysicalDevice physicalDevice, uint32_t* pToolCount, VkPhysicalDeviceToolProperties* pToolProperties);\ntypedef VkResult (VKAPI_PTR *PFN_vkCreatePrivateDataSlot)(VkDevice device, const VkPrivateDataSlotCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPrivateDataSlot* pPrivateDataSlot);\ntypedef void (VKAPI_PTR *PFN_vkDestroyPrivateDataSlot)(VkDevice device, VkPrivateDataSlot privateDataSlot, const VkAllocationCallbacks* pAllocator);\ntypedef VkResult (VKAPI_PTR *PFN_vkSetPrivateData)(VkDevice device, VkObjectType objectType, uint64_t objectHandle, VkPrivateDataSlot privateDataSlot, uint64_t data);\ntypedef void (VKAPI_PTR *PFN_vkGetPrivateData)(VkDevice device, VkObjectType objectType, uint64_t objectHandle, VkPrivateDataSlot privateDataSlot, uint64_t* pData);\ntypedef void (VKAPI_PTR *PFN_vkCmdPipelineBarrier2)(VkCommandBuffer commandBuffer, const VkDependencyInfo* pDependencyInfo);\ntypedef void (VKAPI_PTR *PFN_vkCmdWriteTimestamp2)(VkCommandBuffer commandBuffer, VkPipelineStageFlags2 stage, VkQueryPool queryPool, uint32_t query);\ntypedef VkResult (VKAPI_PTR *PFN_vkQueueSubmit2)(VkQueue queue, uint32_t submitCount, const VkSubmitInfo2* pSubmits, VkFence fence);\ntypedef void (VKAPI_PTR *PFN_vkCmdCopyBuffer2)(VkCommandBuffer commandBuffer, const VkCopyBufferInfo2* pCopyBufferInfo);\ntypedef void (VKAPI_PTR *PFN_vkCmdCopyImage2)(VkCommandBuffer commandBuffer, const VkCopyImageInfo2* pCopyImageInfo);\ntypedef void (VKAPI_PTR *PFN_vkCmdCopyBufferToImage2)(VkCommandBuffer commandBuffer, const VkCopyBufferToImageInfo2* pCopyBufferToImageInfo);\ntypedef void (VKAPI_PTR *PFN_vkCmdCopyImageToBuffer2)(VkCommandBuffer commandBuffer, const VkCopyImageToBufferInfo2* pCopyImageToBufferInfo);\ntypedef void (VKAPI_PTR *PFN_vkGetDeviceBufferMemoryRequirements)(VkDevice device, const VkDeviceBufferMemoryRequirements* pInfo, VkMemoryRequirements2* pMemoryRequirements);\ntypedef void (VKAPI_PTR *PFN_vkGetDeviceImageMemoryRequirements)(VkDevice device, const VkDeviceImageMemoryRequirements* pInfo, VkMemoryRequirements2* pMemoryRequirements);\ntypedef void (VKAPI_PTR *PFN_vkGetDeviceImageSparseMemoryRequirements)(VkDevice device, const VkDeviceImageMemoryRequirements* pInfo, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements);\n\n#define VK_COMPUTE_VERSION_1_3 1\n\n\ntypedef enum\n{\n    VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT = 0x00000001,\n    VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT = 0x00000002,\n    VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT = 0x00000004,\n    VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT = VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT,\n    VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT = VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT,\n    VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT = VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT,\n    VK_PIPELINE_CREATION_FEEDBACK_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkPipelineCreationFeedbackFlagBits;\ntypedef VkFlags VkPipelineCreationFeedbackFlags;\n\ntypedef struct VkPipelineCreationFeedback\n{\n    VkPipelineCreationFeedbackFlags flags;\n    uint64_t duration;\n} VkPipelineCreationFeedback;\n\ntypedef struct VkPipelineCreationFeedbackCreateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkPipelineCreationFeedback* pPipelineCreationFeedback;\n    uint32_t pipelineStageCreationFeedbackCount;\n    VkPipelineCreationFeedback* pPipelineStageCreationFeedbacks;\n} VkPipelineCreationFeedbackCreateInfo;\n\ntypedef struct VkPhysicalDeviceShaderTerminateInvocationFeatures\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 shaderTerminateInvocation;\n} VkPhysicalDeviceShaderTerminateInvocationFeatures;\n\ntypedef struct VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 shaderDemoteToHelperInvocation;\n} VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures;\n\ntypedef struct VkPhysicalDevicePipelineCreationCacheControlFeatures\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 pipelineCreationCacheControl;\n} VkPhysicalDevicePipelineCreationCacheControlFeatures;\n\ntypedef struct VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 shaderZeroInitializeWorkgroupMemory;\n} VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures;\n\ntypedef struct VkPhysicalDeviceImageRobustnessFeatures\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 robustImageAccess;\n} VkPhysicalDeviceImageRobustnessFeatures;\n\ntypedef struct VkPhysicalDeviceSubgroupSizeControlFeatures\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 subgroupSizeControl;\n    VkBool32 computeFullSubgroups;\n} VkPhysicalDeviceSubgroupSizeControlFeatures;\n\ntypedef struct VkPhysicalDeviceSubgroupSizeControlProperties\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t minSubgroupSize;\n    uint32_t maxSubgroupSize;\n    uint32_t maxComputeWorkgroupSubgroups;\n    VkShaderStageFlags requiredSubgroupSizeStages;\n} VkPhysicalDeviceSubgroupSizeControlProperties;\n\ntypedef struct VkPipelineShaderStageRequiredSubgroupSizeCreateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t requiredSubgroupSize;\n} VkPipelineShaderStageRequiredSubgroupSizeCreateInfo;\n\ntypedef struct VkPhysicalDeviceInlineUniformBlockFeatures\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 inlineUniformBlock;\n    VkBool32 descriptorBindingInlineUniformBlockUpdateAfterBind;\n} VkPhysicalDeviceInlineUniformBlockFeatures;\n\ntypedef struct VkPhysicalDeviceInlineUniformBlockProperties\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t maxInlineUniformBlockSize;\n    uint32_t maxPerStageDescriptorInlineUniformBlocks;\n    uint32_t maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks;\n    uint32_t maxDescriptorSetInlineUniformBlocks;\n    uint32_t maxDescriptorSetUpdateAfterBindInlineUniformBlocks;\n} VkPhysicalDeviceInlineUniformBlockProperties;\n\ntypedef struct VkWriteDescriptorSetInlineUniformBlock\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t dataSize;\n    const void* pData;\n} VkWriteDescriptorSetInlineUniformBlock;\n\ntypedef struct VkDescriptorPoolInlineUniformBlockCreateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t maxInlineUniformBlockBindings;\n} VkDescriptorPoolInlineUniformBlockCreateInfo;\n\ntypedef struct VkPhysicalDeviceShaderIntegerDotProductFeatures\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 shaderIntegerDotProduct;\n} VkPhysicalDeviceShaderIntegerDotProductFeatures;\n\ntypedef struct VkPhysicalDeviceShaderIntegerDotProductProperties\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 integerDotProduct8BitUnsignedAccelerated;\n    VkBool32 integerDotProduct8BitSignedAccelerated;\n    VkBool32 integerDotProduct8BitMixedSignednessAccelerated;\n    VkBool32 integerDotProduct4x8BitPackedUnsignedAccelerated;\n    VkBool32 integerDotProduct4x8BitPackedSignedAccelerated;\n    VkBool32 integerDotProduct4x8BitPackedMixedSignednessAccelerated;\n    VkBool32 integerDotProduct16BitUnsignedAccelerated;\n    VkBool32 integerDotProduct16BitSignedAccelerated;\n    VkBool32 integerDotProduct16BitMixedSignednessAccelerated;\n    VkBool32 integerDotProduct32BitUnsignedAccelerated;\n    VkBool32 integerDotProduct32BitSignedAccelerated;\n    VkBool32 integerDotProduct32BitMixedSignednessAccelerated;\n    VkBool32 integerDotProduct64BitUnsignedAccelerated;\n    VkBool32 integerDotProduct64BitSignedAccelerated;\n    VkBool32 integerDotProduct64BitMixedSignednessAccelerated;\n    VkBool32 integerDotProductAccumulatingSaturating8BitUnsignedAccelerated;\n    VkBool32 integerDotProductAccumulatingSaturating8BitSignedAccelerated;\n    VkBool32 integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated;\n    VkBool32 integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated;\n    VkBool32 integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated;\n    VkBool32 integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated;\n    VkBool32 integerDotProductAccumulatingSaturating16BitUnsignedAccelerated;\n    VkBool32 integerDotProductAccumulatingSaturating16BitSignedAccelerated;\n    VkBool32 integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated;\n    VkBool32 integerDotProductAccumulatingSaturating32BitUnsignedAccelerated;\n    VkBool32 integerDotProductAccumulatingSaturating32BitSignedAccelerated;\n    VkBool32 integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated;\n    VkBool32 integerDotProductAccumulatingSaturating64BitUnsignedAccelerated;\n    VkBool32 integerDotProductAccumulatingSaturating64BitSignedAccelerated;\n    VkBool32 integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated;\n} VkPhysicalDeviceShaderIntegerDotProductProperties;\n\ntypedef struct VkPhysicalDeviceTexelBufferAlignmentProperties\n{\n    VkStructureType sType;\n    void* pNext;\n    VkDeviceSize storageTexelBufferOffsetAlignmentBytes;\n    VkBool32 storageTexelBufferOffsetSingleTexelAlignment;\n    VkDeviceSize uniformTexelBufferOffsetAlignmentBytes;\n    VkBool32 uniformTexelBufferOffsetSingleTexelAlignment;\n} VkPhysicalDeviceTexelBufferAlignmentProperties;\n\n\ntypedef void (VKAPI_PTR *PFN_vkCmdSetEvent2)(VkCommandBuffer commandBuffer, VkEvent event, const VkDependencyInfo* pDependencyInfo);\ntypedef void (VKAPI_PTR *PFN_vkCmdResetEvent2)(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags2 stageMask);\ntypedef void (VKAPI_PTR *PFN_vkCmdWaitEvents2)(VkCommandBuffer commandBuffer, uint32_t eventCount, const VkEvent* pEvents, const VkDependencyInfo* pDependencyInfos);\n\n#define VK_GRAPHICS_VERSION_1_3 1\n\n\ntypedef enum\n{\n    VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT = 0x00000001,\n    VK_RENDERING_SUSPENDING_BIT = 0x00000002,\n    VK_RENDERING_RESUMING_BIT = 0x00000004,\n    VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT = 0x00000008,\n    VK_RENDERING_CONTENTS_INLINE_BIT_KHR = 0x00000010,\n    VK_RENDERING_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE = 0x00000020,\n    VK_RENDERING_FRAGMENT_REGION_BIT_EXT = 0x00000040,\n    VK_RENDERING_CUSTOM_RESOLVE_BIT_EXT = 0x00000080,\n    VK_RENDERING_LOCAL_READ_CONCURRENT_ACCESS_CONTROL_BIT_KHR = 0x00000100,\n    VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT_KHR = VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT,\n    VK_RENDERING_SUSPENDING_BIT_KHR = VK_RENDERING_SUSPENDING_BIT,\n    VK_RENDERING_RESUMING_BIT_KHR = VK_RENDERING_RESUMING_BIT,\n    VK_RENDERING_CONTENTS_INLINE_BIT_EXT = VK_RENDERING_CONTENTS_INLINE_BIT_KHR,\n    VK_RENDERING_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkRenderingFlagBits;\ntypedef VkFlags VkRenderingFlags;\n\ntypedef struct VkImageBlit2\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkImageSubresourceLayers srcSubresource;\n    VkOffset3D srcOffsets[2];\n    VkImageSubresourceLayers dstSubresource;\n    VkOffset3D dstOffsets[2];\n} VkImageBlit2;\n\ntypedef struct VkBlitImageInfo2\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkImage srcImage;\n    VkImageLayout srcImageLayout;\n    VkImage dstImage;\n    VkImageLayout dstImageLayout;\n    uint32_t regionCount;\n    const VkImageBlit2* pRegions;\n    VkFilter filter;\n} VkBlitImageInfo2;\n\ntypedef struct VkImageResolve2\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkImageSubresourceLayers srcSubresource;\n    VkOffset3D srcOffset;\n    VkImageSubresourceLayers dstSubresource;\n    VkOffset3D dstOffset;\n    VkExtent3D extent;\n} VkImageResolve2;\n\ntypedef struct VkResolveImageInfo2\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkImage srcImage;\n    VkImageLayout srcImageLayout;\n    VkImage dstImage;\n    VkImageLayout dstImageLayout;\n    uint32_t regionCount;\n    const VkImageResolve2* pRegions;\n} VkResolveImageInfo2;\n\ntypedef struct VkRenderingAttachmentInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkImageView imageView;\n    VkImageLayout imageLayout;\n    VkResolveModeFlagBits resolveMode;\n    VkImageView resolveImageView;\n    VkImageLayout resolveImageLayout;\n    VkAttachmentLoadOp loadOp;\n    VkAttachmentStoreOp storeOp;\n    VkClearValue clearValue;\n} VkRenderingAttachmentInfo;\n\ntypedef struct VkRenderingInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkRenderingFlags flags;\n    VkRect2D renderArea;\n    uint32_t layerCount;\n    uint32_t viewMask;\n    uint32_t colorAttachmentCount;\n    const VkRenderingAttachmentInfo* pColorAttachments;\n    const VkRenderingAttachmentInfo* pDepthAttachment;\n    const VkRenderingAttachmentInfo* pStencilAttachment;\n} VkRenderingInfo;\n\ntypedef struct VkPipelineRenderingCreateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t viewMask;\n    uint32_t colorAttachmentCount;\n    const VkFormat* pColorAttachmentFormats;\n    VkFormat depthAttachmentFormat;\n    VkFormat stencilAttachmentFormat;\n} VkPipelineRenderingCreateInfo;\n\ntypedef struct VkPhysicalDeviceDynamicRenderingFeatures\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 dynamicRendering;\n} VkPhysicalDeviceDynamicRenderingFeatures;\n\ntypedef struct VkCommandBufferInheritanceRenderingInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkRenderingFlags flags;\n    uint32_t viewMask;\n    uint32_t colorAttachmentCount;\n    const VkFormat* pColorAttachmentFormats;\n    VkFormat depthAttachmentFormat;\n    VkFormat stencilAttachmentFormat;\n    VkSampleCountFlagBits rasterizationSamples;\n} VkCommandBufferInheritanceRenderingInfo;\n\n\ntypedef void (VKAPI_PTR *PFN_vkCmdBlitImage2)(VkCommandBuffer commandBuffer, const VkBlitImageInfo2* pBlitImageInfo);\ntypedef void (VKAPI_PTR *PFN_vkCmdResolveImage2)(VkCommandBuffer commandBuffer, const VkResolveImageInfo2* pResolveImageInfo);\ntypedef void (VKAPI_PTR *PFN_vkCmdBeginRendering)(VkCommandBuffer commandBuffer, const VkRenderingInfo* pRenderingInfo);\ntypedef void (VKAPI_PTR *PFN_vkCmdEndRendering)(VkCommandBuffer commandBuffer);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetCullMode)(VkCommandBuffer commandBuffer, VkCullModeFlags cullMode);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetFrontFace)(VkCommandBuffer commandBuffer, VkFrontFace frontFace);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetPrimitiveTopology)(VkCommandBuffer commandBuffer, VkPrimitiveTopology primitiveTopology);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetViewportWithCount)(VkCommandBuffer commandBuffer, uint32_t viewportCount, const VkViewport* pViewports);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetScissorWithCount)(VkCommandBuffer commandBuffer, uint32_t scissorCount, const VkRect2D* pScissors);\ntypedef void (VKAPI_PTR *PFN_vkCmdBindVertexBuffers2)(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets, const VkDeviceSize* pSizes, const VkDeviceSize* pStrides);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetDepthTestEnable)(VkCommandBuffer commandBuffer, VkBool32 depthTestEnable);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetDepthWriteEnable)(VkCommandBuffer commandBuffer, VkBool32 depthWriteEnable);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetDepthCompareOp)(VkCommandBuffer commandBuffer, VkCompareOp depthCompareOp);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetDepthBoundsTestEnable)(VkCommandBuffer commandBuffer, VkBool32 depthBoundsTestEnable);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetStencilTestEnable)(VkCommandBuffer commandBuffer, VkBool32 stencilTestEnable);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetStencilOp)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, VkStencilOp failOp, VkStencilOp passOp, VkStencilOp depthFailOp, VkCompareOp compareOp);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetRasterizerDiscardEnable)(VkCommandBuffer commandBuffer, VkBool32 rasterizerDiscardEnable);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetDepthBiasEnable)(VkCommandBuffer commandBuffer, VkBool32 depthBiasEnable);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetPrimitiveRestartEnable)(VkCommandBuffer commandBuffer, VkBool32 primitiveRestartEnable);\n\n#define VK_VERSION_1_3 1\n\n\n#define VK_BASE_VERSION_1_4 1\n\n#define VK_API_VERSION_1_4 VK_MAKE_API_VERSION(0, 1, 4, 0)\n\n#define VK_MAX_GLOBAL_PRIORITY_SIZE 16\n\ntypedef enum\n{\n    VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT = 0,\n    VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED = 1,\n    VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS = 2,\n    VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2 = 3,\n    VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT = VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT,\n    VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT = VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED,\n    VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT = VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS,\n    VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT = VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2,\n    VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_MAX_ENUM = 0x7FFFFFFF\n} VkPipelineRobustnessBufferBehavior;\n\ntypedef enum\n{\n    VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT = 0,\n    VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED = 1,\n    VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS = 2,\n    VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2 = 3,\n    VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT_EXT = VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT,\n    VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED_EXT = VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED,\n    VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_EXT = VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS,\n    VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT = VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2,\n    VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_MAX_ENUM = 0x7FFFFFFF\n} VkPipelineRobustnessImageBehavior;\n\ntypedef enum\n{\n    VK_QUEUE_GLOBAL_PRIORITY_LOW = 128,\n    VK_QUEUE_GLOBAL_PRIORITY_MEDIUM = 256,\n    VK_QUEUE_GLOBAL_PRIORITY_HIGH = 512,\n    VK_QUEUE_GLOBAL_PRIORITY_REALTIME = 1024,\n    VK_QUEUE_GLOBAL_PRIORITY_LOW_KHR = VK_QUEUE_GLOBAL_PRIORITY_LOW,\n    VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR = VK_QUEUE_GLOBAL_PRIORITY_MEDIUM,\n    VK_QUEUE_GLOBAL_PRIORITY_HIGH_KHR = VK_QUEUE_GLOBAL_PRIORITY_HIGH,\n    VK_QUEUE_GLOBAL_PRIORITY_REALTIME_KHR = VK_QUEUE_GLOBAL_PRIORITY_REALTIME,\n    VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT = VK_QUEUE_GLOBAL_PRIORITY_LOW,\n    VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT = VK_QUEUE_GLOBAL_PRIORITY_MEDIUM,\n    VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT = VK_QUEUE_GLOBAL_PRIORITY_HIGH,\n    VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT = VK_QUEUE_GLOBAL_PRIORITY_REALTIME,\n    VK_QUEUE_GLOBAL_PRIORITY_MAX_ENUM = 0x7FFFFFFF\n} VkQueueGlobalPriority;\n\n\ntypedef enum\n{\n    VK_MEMORY_UNMAP_RESERVE_BIT_EXT = 0x00000001,\n    VK_MEMORY_UNMAP_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkMemoryUnmapFlagBits;\ntypedef VkFlags VkMemoryUnmapFlags;\n\ntypedef VkFlags64 VkBufferUsageFlagBits2;\nstatic const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_TRANSFER_SRC_BIT = 0x00000001;\nstatic const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_TRANSFER_DST_BIT = 0x00000002;\nstatic const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_UNIFORM_TEXEL_BUFFER_BIT = 0x00000004;\nstatic const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_STORAGE_TEXEL_BUFFER_BIT = 0x00000008;\nstatic const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_UNIFORM_BUFFER_BIT = 0x00000010;\nstatic const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_STORAGE_BUFFER_BIT = 0x00000020;\nstatic const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_INDEX_BUFFER_BIT = 0x00000040;\nstatic const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_VERTEX_BUFFER_BIT = 0x00000080;\nstatic const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_INDIRECT_BUFFER_BIT = 0x00000100;\nstatic const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_SHADER_DEVICE_ADDRESS_BIT = 0x00020000;\nstatic const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_EXECUTION_GRAPH_SCRATCH_BIT_AMDX = 0x02000000;\nstatic const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_DESCRIPTOR_HEAP_BIT_EXT = 0x10000000;\nstatic const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_CONDITIONAL_RENDERING_BIT_EXT = 0x00000200;\nstatic const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_SHADER_BINDING_TABLE_BIT_KHR = 0x00000400;\nstatic const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT = 0x00000800;\nstatic const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT = 0x00001000;\nstatic const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_VIDEO_DECODE_SRC_BIT_KHR = 0x00002000;\nstatic const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_VIDEO_DECODE_DST_BIT_KHR = 0x00004000;\nstatic const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_VIDEO_ENCODE_DST_BIT_KHR = 0x00008000;\nstatic const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_VIDEO_ENCODE_SRC_BIT_KHR = 0x00010000;\nstatic const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR = 0x00080000;\nstatic const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR = 0x00100000;\nstatic const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT = 0x00200000;\nstatic const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT = 0x00400000;\nstatic const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT = 0x04000000;\nstatic const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT = 0x00800000;\nstatic const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_MICROMAP_STORAGE_BIT_EXT = 0x01000000;\nstatic const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_COMPRESSED_DATA_DGF1_BIT_AMDX = (VkBufferUsageFlagBits2)(((VkBufferUsageFlagBits2)0x00000002 << 32) | (0x00000000));\nstatic const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_DATA_GRAPH_FOREIGN_DESCRIPTOR_BIT_ARM = 0x20000000;\nstatic const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_TILE_MEMORY_BIT_QCOM = 0x08000000;\nstatic const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_MEMORY_DECOMPRESSION_BIT_EXT = (VkBufferUsageFlagBits2)(((VkBufferUsageFlagBits2)0x00000001 << 32) | (0x00000000));\nstatic const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_PREPROCESS_BUFFER_BIT_EXT = 0x80000000;\nstatic const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_TRANSFER_SRC_BIT_KHR = 0x00000001;\nstatic const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_TRANSFER_DST_BIT_KHR = 0x00000002;\nstatic const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_UNIFORM_TEXEL_BUFFER_BIT_KHR = 0x00000004;\nstatic const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_STORAGE_TEXEL_BUFFER_BIT_KHR = 0x00000008;\nstatic const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_UNIFORM_BUFFER_BIT_KHR = 0x00000010;\nstatic const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_STORAGE_BUFFER_BIT_KHR = 0x00000020;\nstatic const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_INDEX_BUFFER_BIT_KHR = 0x00000040;\nstatic const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_VERTEX_BUFFER_BIT_KHR = 0x00000080;\nstatic const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_INDIRECT_BUFFER_BIT_KHR = 0x00000100;\nstatic const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_RAY_TRACING_BIT_NV = 0x00000400;\nstatic const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_SHADER_DEVICE_ADDRESS_BIT_KHR = 0x00020000;\ntypedef VkFlags64 VkBufferUsageFlags2;\n\ntypedef enum\n{\n    VK_HOST_IMAGE_COPY_MEMCPY_BIT = 0x00000001,\n    VK_HOST_IMAGE_COPY_MEMCPY = VK_HOST_IMAGE_COPY_MEMCPY_BIT,\n    VK_HOST_IMAGE_COPY_MEMCPY_BIT_EXT = VK_HOST_IMAGE_COPY_MEMCPY_BIT,\n    VK_HOST_IMAGE_COPY_MEMCPY_EXT = VK_HOST_IMAGE_COPY_MEMCPY_BIT,\n    VK_HOST_IMAGE_COPY_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkHostImageCopyFlagBits;\ntypedef VkFlags VkHostImageCopyFlags;\n\ntypedef struct VkPhysicalDeviceVulkan14Features\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 globalPriorityQuery;\n    VkBool32 shaderSubgroupRotate;\n    VkBool32 shaderSubgroupRotateClustered;\n    VkBool32 shaderFloatControls2;\n    VkBool32 shaderExpectAssume;\n    VkBool32 rectangularLines;\n    VkBool32 bresenhamLines;\n    VkBool32 smoothLines;\n    VkBool32 stippledRectangularLines;\n    VkBool32 stippledBresenhamLines;\n    VkBool32 stippledSmoothLines;\n    VkBool32 vertexAttributeInstanceRateDivisor;\n    VkBool32 vertexAttributeInstanceRateZeroDivisor;\n    VkBool32 indexTypeUint8;\n    VkBool32 dynamicRenderingLocalRead;\n    VkBool32 maintenance5;\n    VkBool32 maintenance6;\n    VkBool32 pipelineProtectedAccess;\n    VkBool32 pipelineRobustness;\n    VkBool32 hostImageCopy;\n    VkBool32 pushDescriptor;\n} VkPhysicalDeviceVulkan14Features;\n\ntypedef struct VkPhysicalDeviceVulkan14Properties\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t lineSubPixelPrecisionBits;\n    uint32_t maxVertexAttribDivisor;\n    VkBool32 supportsNonZeroFirstInstance;\n    uint32_t maxPushDescriptors;\n    VkBool32 dynamicRenderingLocalReadDepthStencilAttachments;\n    VkBool32 dynamicRenderingLocalReadMultisampledAttachments;\n    VkBool32 earlyFragmentMultisampleCoverageAfterSampleCounting;\n    VkBool32 earlyFragmentSampleMaskTestBeforeSampleCounting;\n    VkBool32 depthStencilSwizzleOneSupport;\n    VkBool32 polygonModePointSize;\n    VkBool32 nonStrictSinglePixelWideLinesUseParallelogram;\n    VkBool32 nonStrictWideLinesUseParallelogram;\n    VkBool32 blockTexelViewCompatibleMultipleLayers;\n    uint32_t maxCombinedImageSamplerDescriptorCount;\n    VkBool32 fragmentShadingRateClampCombinerInputs;\n    VkPipelineRobustnessBufferBehavior defaultRobustnessStorageBuffers;\n    VkPipelineRobustnessBufferBehavior defaultRobustnessUniformBuffers;\n    VkPipelineRobustnessBufferBehavior defaultRobustnessVertexInputs;\n    VkPipelineRobustnessImageBehavior defaultRobustnessImages;\n    uint32_t copySrcLayoutCount;\n    VkImageLayout* pCopySrcLayouts;\n    uint32_t copyDstLayoutCount;\n    VkImageLayout* pCopyDstLayouts;\n    uint8_t optimalTilingLayoutUUID[VK_UUID_SIZE];\n    VkBool32 identicalMemoryTypeRequirements;\n} VkPhysicalDeviceVulkan14Properties;\n\ntypedef struct VkDeviceQueueGlobalPriorityCreateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkQueueGlobalPriority globalPriority;\n} VkDeviceQueueGlobalPriorityCreateInfo;\n\ntypedef struct VkPhysicalDeviceGlobalPriorityQueryFeatures\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 globalPriorityQuery;\n} VkPhysicalDeviceGlobalPriorityQueryFeatures;\n\ntypedef struct VkQueueFamilyGlobalPriorityProperties\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t priorityCount;\n    VkQueueGlobalPriority priorities[VK_MAX_GLOBAL_PRIORITY_SIZE];\n} VkQueueFamilyGlobalPriorityProperties;\n\ntypedef struct VkPhysicalDeviceIndexTypeUint8Features\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 indexTypeUint8;\n} VkPhysicalDeviceIndexTypeUint8Features;\n\ntypedef struct VkMemoryMapInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkMemoryMapFlags flags;\n    VkDeviceMemory memory;\n    VkDeviceSize offset;\n    VkDeviceSize size;\n} VkMemoryMapInfo;\n\ntypedef struct VkMemoryUnmapInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkMemoryUnmapFlags flags;\n    VkDeviceMemory memory;\n} VkMemoryUnmapInfo;\n\ntypedef struct VkPhysicalDeviceMaintenance5Features\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 maintenance5;\n} VkPhysicalDeviceMaintenance5Features;\n\ntypedef struct VkPhysicalDeviceMaintenance5Properties\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 earlyFragmentMultisampleCoverageAfterSampleCounting;\n    VkBool32 earlyFragmentSampleMaskTestBeforeSampleCounting;\n    VkBool32 depthStencilSwizzleOneSupport;\n    VkBool32 polygonModePointSize;\n    VkBool32 nonStrictSinglePixelWideLinesUseParallelogram;\n    VkBool32 nonStrictWideLinesUseParallelogram;\n} VkPhysicalDeviceMaintenance5Properties;\n\ntypedef struct VkSubresourceLayout2\n{\n    VkStructureType sType;\n    void* pNext;\n    VkSubresourceLayout subresourceLayout;\n} VkSubresourceLayout2;\n\ntypedef struct VkImageSubresource2\n{\n    VkStructureType sType;\n    void* pNext;\n    VkImageSubresource imageSubresource;\n} VkImageSubresource2;\n\ntypedef struct VkDeviceImageSubresourceInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    const VkImageCreateInfo* pCreateInfo;\n    const VkImageSubresource2* pSubresource;\n} VkDeviceImageSubresourceInfo;\n\ntypedef struct VkBufferUsageFlags2CreateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkBufferUsageFlags2 usage;\n} VkBufferUsageFlags2CreateInfo;\n\ntypedef struct VkPhysicalDeviceMaintenance6Features\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 maintenance6;\n} VkPhysicalDeviceMaintenance6Features;\n\ntypedef struct VkPhysicalDeviceMaintenance6Properties\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 blockTexelViewCompatibleMultipleLayers;\n    uint32_t maxCombinedImageSamplerDescriptorCount;\n    VkBool32 fragmentShadingRateClampCombinerInputs;\n} VkPhysicalDeviceMaintenance6Properties;\n\ntypedef struct VkBindMemoryStatus\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkResult* pResult;\n} VkBindMemoryStatus;\n\ntypedef struct VkPhysicalDeviceHostImageCopyFeatures\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 hostImageCopy;\n} VkPhysicalDeviceHostImageCopyFeatures;\n\ntypedef struct VkPhysicalDeviceHostImageCopyProperties\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t copySrcLayoutCount;\n    VkImageLayout* pCopySrcLayouts;\n    uint32_t copyDstLayoutCount;\n    VkImageLayout* pCopyDstLayouts;\n    uint8_t optimalTilingLayoutUUID[VK_UUID_SIZE];\n    VkBool32 identicalMemoryTypeRequirements;\n} VkPhysicalDeviceHostImageCopyProperties;\n\ntypedef struct VkMemoryToImageCopy\n{\n    VkStructureType sType;\n    const void* pNext;\n    const void* pHostPointer;\n    uint32_t memoryRowLength;\n    uint32_t memoryImageHeight;\n    VkImageSubresourceLayers imageSubresource;\n    VkOffset3D imageOffset;\n    VkExtent3D imageExtent;\n} VkMemoryToImageCopy;\n\ntypedef struct VkImageToMemoryCopy\n{\n    VkStructureType sType;\n    const void* pNext;\n    void* pHostPointer;\n    uint32_t memoryRowLength;\n    uint32_t memoryImageHeight;\n    VkImageSubresourceLayers imageSubresource;\n    VkOffset3D imageOffset;\n    VkExtent3D imageExtent;\n} VkImageToMemoryCopy;\n\ntypedef struct VkCopyMemoryToImageInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkHostImageCopyFlags flags;\n    VkImage dstImage;\n    VkImageLayout dstImageLayout;\n    uint32_t regionCount;\n    const VkMemoryToImageCopy* pRegions;\n} VkCopyMemoryToImageInfo;\n\ntypedef struct VkCopyImageToMemoryInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkHostImageCopyFlags flags;\n    VkImage srcImage;\n    VkImageLayout srcImageLayout;\n    uint32_t regionCount;\n    const VkImageToMemoryCopy* pRegions;\n} VkCopyImageToMemoryInfo;\n\ntypedef struct VkCopyImageToImageInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkHostImageCopyFlags flags;\n    VkImage srcImage;\n    VkImageLayout srcImageLayout;\n    VkImage dstImage;\n    VkImageLayout dstImageLayout;\n    uint32_t regionCount;\n    const VkImageCopy2* pRegions;\n} VkCopyImageToImageInfo;\n\ntypedef struct VkHostImageLayoutTransitionInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkImage image;\n    VkImageLayout oldLayout;\n    VkImageLayout newLayout;\n    VkImageSubresourceRange subresourceRange;\n} VkHostImageLayoutTransitionInfo;\n\ntypedef struct VkSubresourceHostMemcpySize\n{\n    VkStructureType sType;\n    void* pNext;\n    VkDeviceSize size;\n} VkSubresourceHostMemcpySize;\n\ntypedef struct VkHostImageCopyDevicePerformanceQuery\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 optimalDeviceAccess;\n    VkBool32 identicalMemoryLayout;\n} VkHostImageCopyDevicePerformanceQuery;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkMapMemory2)(VkDevice device, const VkMemoryMapInfo* pMemoryMapInfo, void** ppData);\ntypedef VkResult (VKAPI_PTR *PFN_vkUnmapMemory2)(VkDevice device, const VkMemoryUnmapInfo* pMemoryUnmapInfo);\ntypedef void (VKAPI_PTR *PFN_vkGetDeviceImageSubresourceLayout)(VkDevice device, const VkDeviceImageSubresourceInfo* pInfo, VkSubresourceLayout2* pLayout);\ntypedef void (VKAPI_PTR *PFN_vkGetImageSubresourceLayout2)(VkDevice device, VkImage image, const VkImageSubresource2* pSubresource, VkSubresourceLayout2* pLayout);\ntypedef VkResult (VKAPI_PTR *PFN_vkCopyMemoryToImage)(VkDevice device, const VkCopyMemoryToImageInfo* pCopyMemoryToImageInfo);\ntypedef VkResult (VKAPI_PTR *PFN_vkCopyImageToMemory)(VkDevice device, const VkCopyImageToMemoryInfo* pCopyImageToMemoryInfo);\ntypedef VkResult (VKAPI_PTR *PFN_vkCopyImageToImage)(VkDevice device, const VkCopyImageToImageInfo* pCopyImageToImageInfo);\ntypedef VkResult (VKAPI_PTR *PFN_vkTransitionImageLayout)(VkDevice device, uint32_t transitionCount, const VkHostImageLayoutTransitionInfo* pTransitions);\n\n#define VK_COMPUTE_VERSION_1_4 1\n\n\ntypedef VkFlags64 VkPipelineCreateFlagBits2;\nstatic const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_DISABLE_OPTIMIZATION_BIT = 0x00000001;\nstatic const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_ALLOW_DERIVATIVES_BIT = 0x00000002;\nstatic const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_DERIVATIVE_BIT = 0x00000004;\nstatic const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = 0x00000008;\nstatic const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_DISPATCH_BASE_BIT = 0x00000010;\nstatic const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT = 0x00000100;\nstatic const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_EARLY_RETURN_ON_FAILURE_BIT = 0x00000200;\nstatic const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_NO_PROTECTED_ACCESS_BIT = 0x08000000;\nstatic const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_PROTECTED_ACCESS_ONLY_BIT = 0x40000000;\nstatic const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_EXECUTION_GRAPH_BIT_AMDX = (VkPipelineCreateFlagBits2)(((VkPipelineCreateFlagBits2)0x00000001 << 32) | (0x00000000));\nstatic const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT = (VkPipelineCreateFlagBits2)(((VkPipelineCreateFlagBits2)0x00000010 << 32) | (0x00000000));\nstatic const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_RAY_TRACING_ALLOW_SPHERES_AND_LINEAR_SWEPT_SPHERES_BIT_NV = (VkPipelineCreateFlagBits2)(((VkPipelineCreateFlagBits2)0x00000002 << 32) | (0x00000000));\nstatic const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT = (VkPipelineCreateFlagBits2)(((VkPipelineCreateFlagBits2)0x00000004 << 32) | (0x00000000));\nstatic const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_DEFER_COMPILE_BIT_NV = 0x00000020;\nstatic const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_CAPTURE_STATISTICS_BIT_KHR = 0x00000040;\nstatic const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR = 0x00000080;\nstatic const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_LINK_TIME_OPTIMIZATION_BIT_EXT = 0x00000400;\nstatic const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT = 0x00800000;\nstatic const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_LIBRARY_BIT_KHR = 0x00000800;\nstatic const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR = 0x00001000;\nstatic const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_RAY_TRACING_SKIP_AABBS_BIT_KHR = 0x00002000;\nstatic const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR = 0x00004000;\nstatic const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR = 0x00008000;\nstatic const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR = 0x00010000;\nstatic const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR = 0x00020000;\nstatic const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR = 0x00080000;\nstatic const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_NV = 0x00040000;\nstatic const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_RAY_TRACING_ALLOW_MOTION_BIT_NV = 0x00100000;\nstatic const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x00200000;\nstatic const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 0x00400000;\nstatic const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT = 0x01000000;\nstatic const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 0x02000000;\nstatic const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 0x04000000;\nstatic const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV = 0x10000000;\nstatic const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_DESCRIPTOR_BUFFER_BIT_EXT = 0x20000000;\nstatic const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_DISALLOW_OPACITY_MICROMAP_BIT_ARM = (VkPipelineCreateFlagBits2)(((VkPipelineCreateFlagBits2)0x00000020 << 32) | (0x00000000));\nstatic const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_INSTRUMENT_SHADERS_BIT_ARM = (VkPipelineCreateFlagBits2)(((VkPipelineCreateFlagBits2)0x00000080 << 32) | (0x00000000));\nstatic const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR = 0x80000000;\nstatic const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT = (VkPipelineCreateFlagBits2)(((VkPipelineCreateFlagBits2)0x00000040 << 32) | (0x00000000));\nstatic const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE = (VkPipelineCreateFlagBits2)(((VkPipelineCreateFlagBits2)0x00000100 << 32) | (0x00000000));\nstatic const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_64_BIT_INDEXING_BIT_EXT = (VkPipelineCreateFlagBits2)(((VkPipelineCreateFlagBits2)0x00000800 << 32) | (0x00000000));\nstatic const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_RAY_TRACING_SKIP_BUILT_IN_PRIMITIVES_BIT_KHR = 0x00001000;\nstatic const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_DISABLE_OPTIMIZATION_BIT_KHR = 0x00000001;\nstatic const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_ALLOW_DERIVATIVES_BIT_KHR = 0x00000002;\nstatic const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_DERIVATIVE_BIT_KHR = 0x00000004;\nstatic const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR = 0x00000008;\nstatic const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_DISPATCH_BASE_BIT_KHR = 0x00000010;\nstatic const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_KHR = 0x00000100;\nstatic const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_EARLY_RETURN_ON_FAILURE_BIT_KHR = 0x00000200;\nstatic const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_NO_PROTECTED_ACCESS_BIT_EXT = 0x08000000;\nstatic const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_PROTECTED_ACCESS_ONLY_BIT_EXT = 0x40000000;\ntypedef VkFlags64 VkPipelineCreateFlags2;\n\ntypedef struct VkPhysicalDeviceShaderSubgroupRotateFeatures\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 shaderSubgroupRotate;\n    VkBool32 shaderSubgroupRotateClustered;\n} VkPhysicalDeviceShaderSubgroupRotateFeatures;\n\ntypedef struct VkPhysicalDeviceShaderFloatControls2Features\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 shaderFloatControls2;\n} VkPhysicalDeviceShaderFloatControls2Features;\n\ntypedef struct VkPhysicalDeviceShaderExpectAssumeFeatures\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 shaderExpectAssume;\n} VkPhysicalDeviceShaderExpectAssumeFeatures;\n\ntypedef struct VkPipelineCreateFlags2CreateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkPipelineCreateFlags2 flags;\n} VkPipelineCreateFlags2CreateInfo;\n\ntypedef struct VkPhysicalDevicePushDescriptorProperties\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t maxPushDescriptors;\n} VkPhysicalDevicePushDescriptorProperties;\n\ntypedef struct VkBindDescriptorSetsInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkShaderStageFlags stageFlags;\n    VkPipelineLayout layout;\n    uint32_t firstSet;\n    uint32_t descriptorSetCount;\n    const VkDescriptorSet* pDescriptorSets;\n    uint32_t dynamicOffsetCount;\n    const uint32_t* pDynamicOffsets;\n} VkBindDescriptorSetsInfo;\n\ntypedef struct VkPushConstantsInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkPipelineLayout layout;\n    VkShaderStageFlags stageFlags;\n    uint32_t offset;\n    uint32_t size;\n    const void* pValues;\n} VkPushConstantsInfo;\n\ntypedef struct VkPushDescriptorSetInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkShaderStageFlags stageFlags;\n    VkPipelineLayout layout;\n    uint32_t set;\n    uint32_t descriptorWriteCount;\n    const VkWriteDescriptorSet* pDescriptorWrites;\n} VkPushDescriptorSetInfo;\n\ntypedef struct VkPushDescriptorSetWithTemplateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkDescriptorUpdateTemplate descriptorUpdateTemplate;\n    VkPipelineLayout layout;\n    uint32_t set;\n    const void* pData;\n} VkPushDescriptorSetWithTemplateInfo;\n\ntypedef struct VkPhysicalDevicePipelineProtectedAccessFeatures\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 pipelineProtectedAccess;\n} VkPhysicalDevicePipelineProtectedAccessFeatures;\n\ntypedef struct VkPhysicalDevicePipelineRobustnessFeatures\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 pipelineRobustness;\n} VkPhysicalDevicePipelineRobustnessFeatures;\n\ntypedef struct VkPhysicalDevicePipelineRobustnessProperties\n{\n    VkStructureType sType;\n    void* pNext;\n    VkPipelineRobustnessBufferBehavior defaultRobustnessStorageBuffers;\n    VkPipelineRobustnessBufferBehavior defaultRobustnessUniformBuffers;\n    VkPipelineRobustnessBufferBehavior defaultRobustnessVertexInputs;\n    VkPipelineRobustnessImageBehavior defaultRobustnessImages;\n} VkPhysicalDevicePipelineRobustnessProperties;\n\ntypedef struct VkPipelineRobustnessCreateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkPipelineRobustnessBufferBehavior storageBuffers;\n    VkPipelineRobustnessBufferBehavior uniformBuffers;\n    VkPipelineRobustnessBufferBehavior vertexInputs;\n    VkPipelineRobustnessImageBehavior images;\n} VkPipelineRobustnessCreateInfo;\n\n\ntypedef void (VKAPI_PTR *PFN_vkCmdPushDescriptorSet)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites);\ntypedef void (VKAPI_PTR *PFN_vkCmdPushDescriptorSetWithTemplate)(VkCommandBuffer commandBuffer, VkDescriptorUpdateTemplate descriptorUpdateTemplate, VkPipelineLayout layout, uint32_t set, const void* pData);\ntypedef void (VKAPI_PTR *PFN_vkCmdBindDescriptorSets2)(VkCommandBuffer commandBuffer, const VkBindDescriptorSetsInfo* pBindDescriptorSetsInfo);\ntypedef void (VKAPI_PTR *PFN_vkCmdPushConstants2)(VkCommandBuffer commandBuffer, const VkPushConstantsInfo* pPushConstantsInfo);\ntypedef void (VKAPI_PTR *PFN_vkCmdPushDescriptorSet2)(VkCommandBuffer commandBuffer, const VkPushDescriptorSetInfo* pPushDescriptorSetInfo);\ntypedef void (VKAPI_PTR *PFN_vkCmdPushDescriptorSetWithTemplate2)(VkCommandBuffer commandBuffer, const VkPushDescriptorSetWithTemplateInfo* pPushDescriptorSetWithTemplateInfo);\n\n#define VK_GRAPHICS_VERSION_1_4 1\n\ntypedef enum\n{\n    VK_LINE_RASTERIZATION_MODE_DEFAULT = 0,\n    VK_LINE_RASTERIZATION_MODE_RECTANGULAR = 1,\n    VK_LINE_RASTERIZATION_MODE_BRESENHAM = 2,\n    VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH = 3,\n    VK_LINE_RASTERIZATION_MODE_DEFAULT_KHR = VK_LINE_RASTERIZATION_MODE_DEFAULT,\n    VK_LINE_RASTERIZATION_MODE_RECTANGULAR_KHR = VK_LINE_RASTERIZATION_MODE_RECTANGULAR,\n    VK_LINE_RASTERIZATION_MODE_BRESENHAM_KHR = VK_LINE_RASTERIZATION_MODE_BRESENHAM,\n    VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR = VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH,\n    VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT = VK_LINE_RASTERIZATION_MODE_DEFAULT,\n    VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT = VK_LINE_RASTERIZATION_MODE_RECTANGULAR,\n    VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT = VK_LINE_RASTERIZATION_MODE_BRESENHAM,\n    VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT = VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH,\n    VK_LINE_RASTERIZATION_MODE_MAX_ENUM = 0x7FFFFFFF\n} VkLineRasterizationMode;\n\n\ntypedef struct VkPhysicalDeviceLineRasterizationFeatures\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 rectangularLines;\n    VkBool32 bresenhamLines;\n    VkBool32 smoothLines;\n    VkBool32 stippledRectangularLines;\n    VkBool32 stippledBresenhamLines;\n    VkBool32 stippledSmoothLines;\n} VkPhysicalDeviceLineRasterizationFeatures;\n\ntypedef struct VkPhysicalDeviceLineRasterizationProperties\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t lineSubPixelPrecisionBits;\n} VkPhysicalDeviceLineRasterizationProperties;\n\ntypedef struct VkPipelineRasterizationLineStateCreateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkLineRasterizationMode lineRasterizationMode;\n    VkBool32 stippledLineEnable;\n    uint32_t lineStippleFactor;\n    uint16_t lineStipplePattern;\n} VkPipelineRasterizationLineStateCreateInfo;\n\ntypedef struct VkPhysicalDeviceVertexAttributeDivisorProperties\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t maxVertexAttribDivisor;\n    VkBool32 supportsNonZeroFirstInstance;\n} VkPhysicalDeviceVertexAttributeDivisorProperties;\n\ntypedef struct VkVertexInputBindingDivisorDescription\n{\n    uint32_t binding;\n    uint32_t divisor;\n} VkVertexInputBindingDivisorDescription;\n\ntypedef struct VkPipelineVertexInputDivisorStateCreateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t vertexBindingDivisorCount;\n    const VkVertexInputBindingDivisorDescription* pVertexBindingDivisors;\n} VkPipelineVertexInputDivisorStateCreateInfo;\n\ntypedef struct VkPhysicalDeviceVertexAttributeDivisorFeatures\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 vertexAttributeInstanceRateDivisor;\n    VkBool32 vertexAttributeInstanceRateZeroDivisor;\n} VkPhysicalDeviceVertexAttributeDivisorFeatures;\n\ntypedef struct VkRenderingAreaInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t viewMask;\n    uint32_t colorAttachmentCount;\n    const VkFormat* pColorAttachmentFormats;\n    VkFormat depthAttachmentFormat;\n    VkFormat stencilAttachmentFormat;\n} VkRenderingAreaInfo;\n\ntypedef struct VkPhysicalDeviceDynamicRenderingLocalReadFeatures\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 dynamicRenderingLocalRead;\n} VkPhysicalDeviceDynamicRenderingLocalReadFeatures;\n\ntypedef struct VkRenderingAttachmentLocationInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t colorAttachmentCount;\n    const uint32_t* pColorAttachmentLocations;\n} VkRenderingAttachmentLocationInfo;\n\ntypedef struct VkRenderingInputAttachmentIndexInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t colorAttachmentCount;\n    const uint32_t* pColorAttachmentInputIndices;\n    const uint32_t* pDepthInputAttachmentIndex;\n    const uint32_t* pStencilInputAttachmentIndex;\n} VkRenderingInputAttachmentIndexInfo;\n\n\ntypedef void (VKAPI_PTR *PFN_vkCmdSetLineStipple)(VkCommandBuffer commandBuffer, uint32_t lineStippleFactor, uint16_t lineStipplePattern);\ntypedef void (VKAPI_PTR *PFN_vkCmdBindIndexBuffer2)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkDeviceSize size, VkIndexType indexType);\ntypedef void (VKAPI_PTR *PFN_vkGetRenderingAreaGranularity)(VkDevice device, const VkRenderingAreaInfo* pRenderingAreaInfo, VkExtent2D* pGranularity);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetRenderingAttachmentLocations)(VkCommandBuffer commandBuffer, const VkRenderingAttachmentLocationInfo* pLocationInfo);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetRenderingInputAttachmentIndices)(VkCommandBuffer commandBuffer, const VkRenderingInputAttachmentIndexInfo* pInputAttachmentIndexInfo);\n\n#define VK_VERSION_1_4 1\n\n\n#define VKSC_VERSION_1_0 1\n\n#define VKSC_API_VARIANT 1\n#define VKSC_API_VERSION_1_0 VK_MAKE_API_VERSION(VKSC_API_VARIANT, 1, 0, 0)\n\ntypedef enum\n{\n    VK_FAULT_LEVEL_UNASSIGNED = 0,\n    VK_FAULT_LEVEL_CRITICAL = 1,\n    VK_FAULT_LEVEL_RECOVERABLE = 2,\n    VK_FAULT_LEVEL_WARNING = 3,\n    VK_FAULT_LEVEL_MAX_ENUM = 0x7FFFFFFF\n} VkFaultLevel;\n\ntypedef enum\n{\n    VK_FAULT_TYPE_INVALID = 0,\n    VK_FAULT_TYPE_UNASSIGNED = 1,\n    VK_FAULT_TYPE_IMPLEMENTATION = 2,\n    VK_FAULT_TYPE_SYSTEM = 3,\n    VK_FAULT_TYPE_PHYSICAL_DEVICE = 4,\n    VK_FAULT_TYPE_COMMAND_BUFFER_FULL = 5,\n    VK_FAULT_TYPE_INVALID_API_USAGE = 6,\n    VK_FAULT_TYPE_MAX_ENUM = 0x7FFFFFFF\n} VkFaultType;\n\ntypedef enum\n{\n    VK_FAULT_QUERY_BEHAVIOR_GET_AND_CLEAR_ALL_FAULTS = 0,\n    VK_FAULT_QUERY_BEHAVIOR_MAX_ENUM = 0x7FFFFFFF\n} VkFaultQueryBehavior;\n\ntypedef enum\n{\n    VK_PIPELINE_MATCH_CONTROL_APPLICATION_UUID_EXACT_MATCH = 0,\n    VK_PIPELINE_MATCH_CONTROL_MAX_ENUM = 0x7FFFFFFF\n} VkPipelineMatchControl;\n\ntypedef enum\n{\n    VK_PIPELINE_CACHE_VALIDATION_VERSION_SAFETY_CRITICAL_ONE = 1,\n    VK_PIPELINE_CACHE_VALIDATION_VERSION_MAX_ENUM = 0x7FFFFFFF\n} VkPipelineCacheValidationVersion;\n\n\ntypedef struct VkPhysicalDeviceVulkanSC10Features\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 shaderAtomicInstructions;\n} VkPhysicalDeviceVulkanSC10Features;\n\ntypedef struct VkPhysicalDeviceVulkanSC10Properties\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 deviceNoDynamicHostAllocations;\n    VkBool32 deviceDestroyFreesMemory;\n    VkBool32 commandPoolMultipleCommandBuffersRecording;\n    VkBool32 commandPoolResetCommandBuffer;\n    VkBool32 commandBufferSimultaneousUse;\n    VkBool32 secondaryCommandBufferNullOrImagelessFramebuffer;\n    VkBool32 recycleDescriptorSetMemory;\n    VkBool32 recyclePipelineMemory;\n    uint32_t maxRenderPassSubpasses;\n    uint32_t maxRenderPassDependencies;\n    uint32_t maxSubpassInputAttachments;\n    uint32_t maxSubpassPreserveAttachments;\n    uint32_t maxFramebufferAttachments;\n    uint32_t maxDescriptorSetLayoutBindings;\n    uint32_t maxQueryFaultCount;\n    uint32_t maxCallbackFaultCount;\n    uint32_t maxCommandPoolCommandBuffers;\n    VkDeviceSize maxCommandBufferSize;\n} VkPhysicalDeviceVulkanSC10Properties;\n\ntypedef struct VkPipelinePoolSize\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkDeviceSize poolEntrySize;\n    uint32_t poolEntryCount;\n} VkPipelinePoolSize;\n\ntypedef struct VkDeviceObjectReservationCreateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t pipelineCacheCreateInfoCount;\n    const VkPipelineCacheCreateInfo* pPipelineCacheCreateInfos;\n    uint32_t pipelinePoolSizeCount;\n    const VkPipelinePoolSize* pPipelinePoolSizes;\n    uint32_t semaphoreRequestCount;\n    uint32_t commandBufferRequestCount;\n    uint32_t fenceRequestCount;\n    uint32_t deviceMemoryRequestCount;\n    uint32_t bufferRequestCount;\n    uint32_t imageRequestCount;\n    uint32_t eventRequestCount;\n    uint32_t queryPoolRequestCount;\n    uint32_t bufferViewRequestCount;\n    uint32_t imageViewRequestCount;\n    uint32_t layeredImageViewRequestCount;\n    uint32_t pipelineCacheRequestCount;\n    uint32_t pipelineLayoutRequestCount;\n    uint32_t renderPassRequestCount;\n    uint32_t graphicsPipelineRequestCount;\n    uint32_t computePipelineRequestCount;\n    uint32_t descriptorSetLayoutRequestCount;\n    uint32_t samplerRequestCount;\n    uint32_t descriptorPoolRequestCount;\n    uint32_t descriptorSetRequestCount;\n    uint32_t framebufferRequestCount;\n    uint32_t commandPoolRequestCount;\n    uint32_t samplerYcbcrConversionRequestCount;\n    uint32_t surfaceRequestCount;\n    uint32_t swapchainRequestCount;\n    uint32_t displayModeRequestCount;\n    uint32_t subpassDescriptionRequestCount;\n    uint32_t attachmentDescriptionRequestCount;\n    uint32_t descriptorSetLayoutBindingRequestCount;\n    uint32_t descriptorSetLayoutBindingLimit;\n    uint32_t maxImageViewMipLevels;\n    uint32_t maxImageViewArrayLayers;\n    uint32_t maxLayeredImageViewMipLevels;\n    uint32_t maxOcclusionQueriesPerPool;\n    uint32_t maxPipelineStatisticsQueriesPerPool;\n    uint32_t maxTimestampQueriesPerPool;\n    uint32_t maxImmutableSamplersPerDescriptorSetLayout;\n} VkDeviceObjectReservationCreateInfo;\n\ntypedef struct VkCommandPoolMemoryReservationCreateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkDeviceSize commandPoolReservedSize;\n    uint32_t commandPoolMaxCommandBuffers;\n} VkCommandPoolMemoryReservationCreateInfo;\n\ntypedef struct VkCommandPoolMemoryConsumption\n{\n    VkStructureType sType;\n    void* pNext;\n    VkDeviceSize commandPoolAllocated;\n    VkDeviceSize commandPoolReservedSize;\n    VkDeviceSize commandBufferAllocated;\n} VkCommandPoolMemoryConsumption;\n\ntypedef struct VkFaultData\n{\n    VkStructureType sType;\n    void* pNext;\n    VkFaultLevel faultLevel;\n    VkFaultType faultType;\n} VkFaultData;\n\ntypedef void (VKAPI_PTR *PFN_vkFaultCallbackFunction)(VkBool32 unrecordedFaults, uint32_t faultCount, const VkFaultData* pFaults);\n\ntypedef struct VkFaultCallbackInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t faultCount;\n    VkFaultData* pFaults;\n    PFN_vkFaultCallbackFunction pfnFaultCallback;\n} VkFaultCallbackInfo;\n\ntypedef struct VkPipelineOfflineCreateInfo\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint8_t pipelineIdentifier[VK_UUID_SIZE];\n    VkPipelineMatchControl matchControl;\n    VkDeviceSize poolEntrySize;\n} VkPipelineOfflineCreateInfo;\n\ntypedef struct VkPipelineCacheStageValidationIndexEntry\n{\n    uint64_t codeSize;\n    uint64_t codeOffset;\n} VkPipelineCacheStageValidationIndexEntry;\n\ntypedef struct VkPipelineCacheSafetyCriticalIndexEntry\n{\n    uint8_t pipelineIdentifier[VK_UUID_SIZE];\n    uint64_t pipelineMemorySize;\n    uint64_t jsonSize;\n    uint64_t jsonOffset;\n    uint32_t stageIndexCount;\n    uint32_t stageIndexStride;\n    uint64_t stageIndexOffset;\n} VkPipelineCacheSafetyCriticalIndexEntry;\n\ntypedef struct VkPipelineCacheHeaderVersionSafetyCriticalOne\n{\n    VkPipelineCacheHeaderVersionOne headerVersionOne;\n    VkPipelineCacheValidationVersion validationVersion;\n    uint32_t implementationData;\n    uint32_t pipelineIndexCount;\n    uint32_t pipelineIndexStride;\n    uint64_t pipelineIndexOffset;\n} VkPipelineCacheHeaderVersionSafetyCriticalOne;\n\n\ntypedef void (VKAPI_PTR *PFN_vkGetCommandPoolMemoryConsumption)(VkDevice device, VkCommandPool commandPool, VkCommandBuffer commandBuffer, VkCommandPoolMemoryConsumption* pConsumption);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetFaultData)(VkDevice device, VkFaultQueryBehavior faultQueryBehavior, VkBool32* pUnrecordedFaults, uint32_t* pFaultCount, VkFaultData* pFaults);\n\n#define VK_KHR_surface 1\n#define VK_KHR_SURFACE_SPEC_VERSION 25\n#define VK_KHR_SURFACE_EXTENSION_NAME \"VK_KHR_surface\"\n\nVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSurfaceKHR)\n\ntypedef enum\n{\n    VK_PRESENT_MODE_IMMEDIATE_KHR = 0,\n    VK_PRESENT_MODE_MAILBOX_KHR = 1,\n    VK_PRESENT_MODE_FIFO_KHR = 2,\n    VK_PRESENT_MODE_FIFO_RELAXED_KHR = 3,\n    VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR = 1000111000,\n    VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR = 1000111001,\n    VK_PRESENT_MODE_FIFO_LATEST_READY_KHR = 1000361000,\n    VK_PRESENT_MODE_FIFO_LATEST_READY_EXT = VK_PRESENT_MODE_FIFO_LATEST_READY_KHR,\n    VK_PRESENT_MODE_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkPresentModeKHR;\n\ntypedef enum\n{\n    VK_COLOR_SPACE_SRGB_NONLINEAR_KHR = 0,\n    VK_COLORSPACE_SRGB_NONLINEAR_KHR = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR,\n    VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT = 1000104001,\n    VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT = 1000104002,\n    VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT = 1000104003,\n    VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT = 1000104004,\n    VK_COLOR_SPACE_BT709_LINEAR_EXT = 1000104005,\n    VK_COLOR_SPACE_BT709_NONLINEAR_EXT = 1000104006,\n    VK_COLOR_SPACE_BT2020_LINEAR_EXT = 1000104007,\n    VK_COLOR_SPACE_HDR10_ST2084_EXT = 1000104008,\n    VK_COLOR_SPACE_DOLBYVISION_EXT = 1000104009,\n    VK_COLOR_SPACE_HDR10_HLG_EXT = 1000104010,\n    VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT = 1000104011,\n    VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT = 1000104012,\n    VK_COLOR_SPACE_PASS_THROUGH_EXT = 1000104013,\n    VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT = 1000104014,\n    VK_COLOR_SPACE_DISPLAY_NATIVE_AMD = 1000213000,\n    VK_COLOR_SPACE_DCI_P3_LINEAR_EXT = VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT,\n    VK_COLOR_SPACE_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkColorSpaceKHR;\n\n\ntypedef enum\n{\n    VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR = 0x00000001,\n    VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR = 0x00000002,\n    VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR = 0x00000004,\n    VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR = 0x00000008,\n    VK_COMPOSITE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkCompositeAlphaFlagBitsKHR;\ntypedef VkFlags VkCompositeAlphaFlagsKHR;\n\ntypedef enum\n{\n    VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR = 0x00000001,\n    VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR = 0x00000002,\n    VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR = 0x00000004,\n    VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR = 0x00000008,\n    VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR = 0x00000010,\n    VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR = 0x00000020,\n    VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR = 0x00000040,\n    VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR = 0x00000080,\n    VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR = 0x00000100,\n    VK_SURFACE_TRANSFORM_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkSurfaceTransformFlagBitsKHR;\ntypedef VkFlags VkSurfaceTransformFlagsKHR;\n\ntypedef struct VkSurfaceCapabilitiesKHR\n{\n    uint32_t minImageCount;\n    uint32_t maxImageCount;\n    VkExtent2D currentExtent;\n    VkExtent2D minImageExtent;\n    VkExtent2D maxImageExtent;\n    uint32_t maxImageArrayLayers;\n    VkSurfaceTransformFlagsKHR supportedTransforms;\n    VkSurfaceTransformFlagBitsKHR currentTransform;\n    VkCompositeAlphaFlagsKHR supportedCompositeAlpha;\n    VkImageUsageFlags supportedUsageFlags;\n} VkSurfaceCapabilitiesKHR;\n\ntypedef struct VkSurfaceFormatKHR\n{\n    VkFormat format;\n    VkColorSpaceKHR colorSpace;\n} VkSurfaceFormatKHR;\n\n\ntypedef void (VKAPI_PTR *PFN_vkDestroySurfaceKHR)(VkInstance instance, VkSurfaceKHR surface, const VkAllocationCallbacks* pAllocator);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, VkSurfaceKHR surface, VkBool32* pSupported);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR* pSurfaceCapabilities);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceFormatsKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pSurfaceFormatCount, VkSurfaceFormatKHR* pSurfaceFormats);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfacePresentModesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pPresentModeCount, VkPresentModeKHR* pPresentModes);\n\n\n#define VK_KHR_swapchain 1\n#define VK_KHR_SWAPCHAIN_SPEC_VERSION 70\n#define VK_KHR_SWAPCHAIN_EXTENSION_NAME \"VK_KHR_swapchain\"\n\nVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSwapchainKHR)\n\n\ntypedef enum\n{\n    VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 0x00000001,\n    VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR = 0x00000002,\n    VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR = 0x00000004,\n    VK_SWAPCHAIN_CREATE_PRESENT_TIMING_BIT_EXT = 0x00000200,\n    VK_SWAPCHAIN_CREATE_PRESENT_ID_2_BIT_KHR = 0x00000040,\n    VK_SWAPCHAIN_CREATE_PRESENT_WAIT_2_BIT_KHR = 0x00000080,\n    VK_SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_KHR = 0x00000008,\n    VK_SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_EXT = VK_SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_KHR,\n    VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkSwapchainCreateFlagBitsKHR;\ntypedef VkFlags VkSwapchainCreateFlagsKHR;\n\ntypedef enum\n{\n    VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR = 0x00000001,\n    VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR = 0x00000002,\n    VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR = 0x00000004,\n    VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR = 0x00000008,\n    VK_DEVICE_GROUP_PRESENT_MODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkDeviceGroupPresentModeFlagBitsKHR;\ntypedef VkFlags VkDeviceGroupPresentModeFlagsKHR;\n\ntypedef struct VkSwapchainCreateInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkSwapchainCreateFlagsKHR flags;\n    VkSurfaceKHR surface;\n    uint32_t minImageCount;\n    VkFormat imageFormat;\n    VkColorSpaceKHR imageColorSpace;\n    VkExtent2D imageExtent;\n    uint32_t imageArrayLayers;\n    VkImageUsageFlags imageUsage;\n    VkSharingMode imageSharingMode;\n    uint32_t queueFamilyIndexCount;\n    const uint32_t* pQueueFamilyIndices;\n    VkSurfaceTransformFlagBitsKHR preTransform;\n    VkCompositeAlphaFlagBitsKHR compositeAlpha;\n    VkPresentModeKHR presentMode;\n    VkBool32 clipped;\n    VkSwapchainKHR oldSwapchain;\n} VkSwapchainCreateInfoKHR;\n\ntypedef struct VkPresentInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t waitSemaphoreCount;\n    const VkSemaphore* pWaitSemaphores;\n    uint32_t swapchainCount;\n    const VkSwapchainKHR* pSwapchains;\n    const uint32_t* pImageIndices;\n    VkResult* pResults;\n} VkPresentInfoKHR;\n\ntypedef struct VkImageSwapchainCreateInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkSwapchainKHR swapchain;\n} VkImageSwapchainCreateInfoKHR;\n\ntypedef struct VkBindImageMemorySwapchainInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkSwapchainKHR swapchain;\n    uint32_t imageIndex;\n} VkBindImageMemorySwapchainInfoKHR;\n\ntypedef struct VkAcquireNextImageInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkSwapchainKHR swapchain;\n    uint64_t timeout;\n    VkSemaphore semaphore;\n    VkFence fence;\n    uint32_t deviceMask;\n} VkAcquireNextImageInfoKHR;\n\ntypedef struct VkDeviceGroupPresentCapabilitiesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t presentMask[VK_MAX_DEVICE_GROUP_SIZE];\n    VkDeviceGroupPresentModeFlagsKHR modes;\n} VkDeviceGroupPresentCapabilitiesKHR;\n\ntypedef struct VkDeviceGroupPresentInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t swapchainCount;\n    const uint32_t* pDeviceMasks;\n    VkDeviceGroupPresentModeFlagBitsKHR mode;\n} VkDeviceGroupPresentInfoKHR;\n\ntypedef struct VkDeviceGroupSwapchainCreateInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkDeviceGroupPresentModeFlagsKHR modes;\n} VkDeviceGroupSwapchainCreateInfoKHR;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateSwapchainKHR)(VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchain);\ntypedef void (VKAPI_PTR *PFN_vkDestroySwapchainKHR)(VkDevice device, VkSwapchainKHR swapchain, const VkAllocationCallbacks* pAllocator);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainImagesKHR)(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pSwapchainImageCount, VkImage* pSwapchainImages);\ntypedef VkResult (VKAPI_PTR *PFN_vkAcquireNextImageKHR)(VkDevice device, VkSwapchainKHR swapchain, uint64_t timeout, VkSemaphore semaphore, VkFence fence, uint32_t* pImageIndex);\ntypedef VkResult (VKAPI_PTR *PFN_vkQueuePresentKHR)(VkQueue queue, const VkPresentInfoKHR* pPresentInfo);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetDeviceGroupPresentCapabilitiesKHR)(VkDevice device, VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetDeviceGroupSurfacePresentModesKHR)(VkDevice device, VkSurfaceKHR surface, VkDeviceGroupPresentModeFlagsKHR* pModes);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDevicePresentRectanglesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pRectCount, VkRect2D* pRects);\ntypedef VkResult (VKAPI_PTR *PFN_vkAcquireNextImage2KHR)(VkDevice device, const VkAcquireNextImageInfoKHR* pAcquireInfo, uint32_t* pImageIndex);\n\n\n#define VK_KHR_display 1\n#define VK_KHR_DISPLAY_SPEC_VERSION 23\n#define VK_KHR_DISPLAY_EXTENSION_NAME \"VK_KHR_display\"\n\nVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDisplayKHR)\nVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDisplayModeKHR)\n\ntypedef VkFlags VkDisplayModeCreateFlagsKHR;\n\ntypedef enum\n{\n    VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR = 0x00000001,\n    VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR = 0x00000002,\n    VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = 0x00000004,\n    VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = 0x00000008,\n    VK_DISPLAY_PLANE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkDisplayPlaneAlphaFlagBitsKHR;\ntypedef VkFlags VkDisplayPlaneAlphaFlagsKHR;\ntypedef VkFlags VkDisplaySurfaceCreateFlagsKHR;\n\ntypedef struct VkDisplayModeParametersKHR\n{\n    VkExtent2D visibleRegion;\n    uint32_t refreshRate;\n} VkDisplayModeParametersKHR;\n\ntypedef struct VkDisplayModeCreateInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkDisplayModeCreateFlagsKHR flags;\n    VkDisplayModeParametersKHR parameters;\n} VkDisplayModeCreateInfoKHR;\n\ntypedef struct VkDisplayModePropertiesKHR\n{\n    VkDisplayModeKHR displayMode;\n    VkDisplayModeParametersKHR parameters;\n} VkDisplayModePropertiesKHR;\n\ntypedef struct VkDisplayPlaneCapabilitiesKHR\n{\n    VkDisplayPlaneAlphaFlagsKHR supportedAlpha;\n    VkOffset2D minSrcPosition;\n    VkOffset2D maxSrcPosition;\n    VkExtent2D minSrcExtent;\n    VkExtent2D maxSrcExtent;\n    VkOffset2D minDstPosition;\n    VkOffset2D maxDstPosition;\n    VkExtent2D minDstExtent;\n    VkExtent2D maxDstExtent;\n} VkDisplayPlaneCapabilitiesKHR;\n\ntypedef struct VkDisplayPlanePropertiesKHR\n{\n    VkDisplayKHR currentDisplay;\n    uint32_t currentStackIndex;\n} VkDisplayPlanePropertiesKHR;\n\ntypedef struct VkDisplayPropertiesKHR\n{\n    VkDisplayKHR display;\n    const char* displayName;\n    VkExtent2D physicalDimensions;\n    VkExtent2D physicalResolution;\n    VkSurfaceTransformFlagsKHR supportedTransforms;\n    VkBool32 planeReorderPossible;\n    VkBool32 persistentContent;\n} VkDisplayPropertiesKHR;\n\ntypedef struct VkDisplaySurfaceCreateInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkDisplaySurfaceCreateFlagsKHR flags;\n    VkDisplayModeKHR displayMode;\n    uint32_t planeIndex;\n    uint32_t planeStackIndex;\n    VkSurfaceTransformFlagBitsKHR transform;\n    float globalAlpha;\n    VkDisplayPlaneAlphaFlagBitsKHR alphaMode;\n    VkExtent2D imageExtent;\n} VkDisplaySurfaceCreateInfoKHR;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPropertiesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPropertiesKHR* pProperties);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPlanePropertiesKHR* pProperties);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneSupportedDisplaysKHR)(VkPhysicalDevice physicalDevice, uint32_t planeIndex, uint32_t* pDisplayCount, VkDisplayKHR* pDisplays);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetDisplayModePropertiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t* pPropertyCount, VkDisplayModePropertiesKHR* pProperties);\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateDisplayModeKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, const VkDisplayModeCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDisplayModeKHR* pMode);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneCapabilitiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode, uint32_t planeIndex, VkDisplayPlaneCapabilitiesKHR* pCapabilities);\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateDisplayPlaneSurfaceKHR)(VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);\n\n\n#define VK_KHR_display_swapchain 1\n#define VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION 10\n#define VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME \"VK_KHR_display_swapchain\"\n\ntypedef struct VkDisplayPresentInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkRect2D srcRect;\n    VkRect2D dstRect;\n    VkBool32 persistent;\n} VkDisplayPresentInfoKHR;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateSharedSwapchainsKHR)(VkDevice device, uint32_t swapchainCount, const VkSwapchainCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchains);\n\n\n#define VK_NV_glsl_shader 1\n#define VK_NV_GLSL_SHADER_SPEC_VERSION 1\n#define VK_NV_GLSL_SHADER_EXTENSION_NAME \"VK_NV_glsl_shader\"\n\n\n#define VK_EXT_depth_range_unrestricted 1\n#define VK_EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION 1\n#define VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME \"VK_EXT_depth_range_unrestricted\"\n\n\n#define VK_KHR_sampler_mirror_clamp_to_edge 1\n#define VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION 3\n#define VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME \"VK_KHR_sampler_mirror_clamp_to_edge\"\n\n\n#define VK_IMG_filter_cubic 1\n#define VK_IMG_FILTER_CUBIC_SPEC_VERSION 1\n#define VK_IMG_FILTER_CUBIC_EXTENSION_NAME \"VK_IMG_filter_cubic\"\n\n\n#define VK_AMD_rasterization_order 1\n#define VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION 1\n#define VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME \"VK_AMD_rasterization_order\"\n\ntypedef enum\n{\n    VK_RASTERIZATION_ORDER_STRICT_AMD = 0,\n    VK_RASTERIZATION_ORDER_RELAXED_AMD = 1,\n    VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 0x7FFFFFFF\n} VkRasterizationOrderAMD;\n\n\ntypedef struct VkPipelineRasterizationStateRasterizationOrderAMD\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkRasterizationOrderAMD rasterizationOrder;\n} VkPipelineRasterizationStateRasterizationOrderAMD;\n\n\n#define VK_AMD_shader_trinary_minmax 1\n#define VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION 1\n#define VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME \"VK_AMD_shader_trinary_minmax\"\n\n\n#define VK_AMD_shader_explicit_vertex_parameter 1\n#define VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION 1\n#define VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME \"VK_AMD_shader_explicit_vertex_parameter\"\n\n\n#define VK_KHR_video_queue 1\n#define VK_KHR_VIDEO_QUEUE_SPEC_VERSION 8\n#define VK_KHR_VIDEO_QUEUE_EXTENSION_NAME \"VK_KHR_video_queue\"\n\nVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkVideoSessionKHR)\nVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkVideoSessionParametersKHR)\n\n\ntypedef enum\n{\n    VK_VIDEO_CODEC_OPERATION_NONE_KHR = 0,\n    VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR = 0x00010000,\n    VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR = 0x00020000,\n    VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR = 0x00000001,\n    VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR = 0x00000002,\n    VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR = 0x00000004,\n    VK_VIDEO_CODEC_OPERATION_ENCODE_AV1_BIT_KHR = 0x00040000,\n    VK_VIDEO_CODEC_OPERATION_DECODE_VP9_BIT_KHR = 0x00000008,\n    VK_VIDEO_CODEC_OPERATION_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkVideoCodecOperationFlagBitsKHR;\ntypedef VkFlags VkVideoCodecOperationFlagsKHR;\n\ntypedef enum\n{\n    VK_VIDEO_CHROMA_SUBSAMPLING_INVALID_KHR = 0,\n    VK_VIDEO_CHROMA_SUBSAMPLING_MONOCHROME_BIT_KHR = 0x00000001,\n    VK_VIDEO_CHROMA_SUBSAMPLING_420_BIT_KHR = 0x00000002,\n    VK_VIDEO_CHROMA_SUBSAMPLING_422_BIT_KHR = 0x00000004,\n    VK_VIDEO_CHROMA_SUBSAMPLING_444_BIT_KHR = 0x00000008,\n    VK_VIDEO_CHROMA_SUBSAMPLING_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkVideoChromaSubsamplingFlagBitsKHR;\ntypedef VkFlags VkVideoChromaSubsamplingFlagsKHR;\n\ntypedef enum\n{\n    VK_VIDEO_COMPONENT_BIT_DEPTH_INVALID_KHR = 0,\n    VK_VIDEO_COMPONENT_BIT_DEPTH_8_BIT_KHR = 0x00000001,\n    VK_VIDEO_COMPONENT_BIT_DEPTH_10_BIT_KHR = 0x00000004,\n    VK_VIDEO_COMPONENT_BIT_DEPTH_12_BIT_KHR = 0x00000010,\n    VK_VIDEO_COMPONENT_BIT_DEPTH_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkVideoComponentBitDepthFlagBitsKHR;\ntypedef VkFlags VkVideoComponentBitDepthFlagsKHR;\n\ntypedef enum\n{\n    VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR = 0x00000001,\n    VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR = 0x00000002,\n    VK_VIDEO_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkVideoCapabilityFlagBitsKHR;\ntypedef VkFlags VkVideoCapabilityFlagsKHR;\n\ntypedef enum\n{\n    VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR = 0x00000001,\n    VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_PARAMETER_OPTIMIZATIONS_BIT_KHR = 0x00000002,\n    VK_VIDEO_SESSION_CREATE_INLINE_QUERIES_BIT_KHR = 0x00000004,\n    VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR = 0x00000008,\n    VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_EMPHASIS_MAP_BIT_KHR = 0x00000010,\n    VK_VIDEO_SESSION_CREATE_INLINE_SESSION_PARAMETERS_BIT_KHR = 0x00000020,\n    VK_VIDEO_SESSION_CREATE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkVideoSessionCreateFlagBitsKHR;\ntypedef VkFlags VkVideoSessionCreateFlagsKHR;\n\ntypedef enum\n{\n    VK_VIDEO_SESSION_PARAMETERS_CREATE_QUANTIZATION_MAP_COMPATIBLE_BIT_KHR = 0x00000001,\n    VK_VIDEO_SESSION_PARAMETERS_CREATE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkVideoSessionParametersCreateFlagBitsKHR;\ntypedef VkFlags VkVideoSessionParametersCreateFlagsKHR;\ntypedef VkFlags VkVideoBeginCodingFlagsKHR;\ntypedef VkFlags VkVideoEndCodingFlagsKHR;\n\ntypedef enum\n{\n    VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR = 0x00000001,\n    VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_BIT_KHR = 0x00000002,\n    VK_VIDEO_CODING_CONTROL_ENCODE_QUALITY_LEVEL_BIT_KHR = 0x00000004,\n    VK_VIDEO_CODING_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkVideoCodingControlFlagBitsKHR;\ntypedef VkFlags VkVideoCodingControlFlagsKHR;\ntypedef enum\n{\n    VK_QUERY_RESULT_STATUS_ERROR_KHR = -1,\n    VK_QUERY_RESULT_STATUS_NOT_READY_KHR = 0,\n    VK_QUERY_RESULT_STATUS_COMPLETE_KHR = 1,\n    VK_QUERY_RESULT_STATUS_INSUFFICIENT_BITSTREAM_BUFFER_RANGE_KHR = -1000299000,\n    VK_QUERY_RESULT_STATUS_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkQueryResultStatusKHR;\n\n\ntypedef struct VkQueueFamilyQueryResultStatusPropertiesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 queryResultStatusSupport;\n} VkQueueFamilyQueryResultStatusPropertiesKHR;\n\ntypedef struct VkQueueFamilyVideoPropertiesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkVideoCodecOperationFlagsKHR videoCodecOperations;\n} VkQueueFamilyVideoPropertiesKHR;\n\ntypedef struct VkVideoProfileInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkVideoCodecOperationFlagBitsKHR videoCodecOperation;\n    VkVideoChromaSubsamplingFlagsKHR chromaSubsampling;\n    VkVideoComponentBitDepthFlagsKHR lumaBitDepth;\n    VkVideoComponentBitDepthFlagsKHR chromaBitDepth;\n} VkVideoProfileInfoKHR;\n\ntypedef struct VkVideoProfileListInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t profileCount;\n    const VkVideoProfileInfoKHR* pProfiles;\n} VkVideoProfileListInfoKHR;\n\ntypedef struct VkVideoCapabilitiesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkVideoCapabilityFlagsKHR flags;\n    VkDeviceSize minBitstreamBufferOffsetAlignment;\n    VkDeviceSize minBitstreamBufferSizeAlignment;\n    VkExtent2D pictureAccessGranularity;\n    VkExtent2D minCodedExtent;\n    VkExtent2D maxCodedExtent;\n    uint32_t maxDpbSlots;\n    uint32_t maxActiveReferencePictures;\n    VkExtensionProperties stdHeaderVersion;\n} VkVideoCapabilitiesKHR;\n\ntypedef struct VkPhysicalDeviceVideoFormatInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkImageUsageFlags imageUsage;\n} VkPhysicalDeviceVideoFormatInfoKHR;\n\ntypedef struct VkVideoFormatPropertiesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkFormat format;\n    VkComponentMapping componentMapping;\n    VkImageCreateFlags imageCreateFlags;\n    VkImageType imageType;\n    VkImageTiling imageTiling;\n    VkImageUsageFlags imageUsageFlags;\n} VkVideoFormatPropertiesKHR;\n\ntypedef struct VkVideoPictureResourceInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkOffset2D codedOffset;\n    VkExtent2D codedExtent;\n    uint32_t baseArrayLayer;\n    VkImageView imageViewBinding;\n} VkVideoPictureResourceInfoKHR;\n\ntypedef struct VkVideoReferenceSlotInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    int32_t slotIndex;\n    const VkVideoPictureResourceInfoKHR* pPictureResource;\n} VkVideoReferenceSlotInfoKHR;\n\ntypedef struct VkVideoSessionMemoryRequirementsKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t memoryBindIndex;\n    VkMemoryRequirements memoryRequirements;\n} VkVideoSessionMemoryRequirementsKHR;\n\ntypedef struct VkBindVideoSessionMemoryInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t memoryBindIndex;\n    VkDeviceMemory memory;\n    VkDeviceSize memoryOffset;\n    VkDeviceSize memorySize;\n} VkBindVideoSessionMemoryInfoKHR;\n\ntypedef struct VkVideoSessionCreateInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t queueFamilyIndex;\n    VkVideoSessionCreateFlagsKHR flags;\n    const VkVideoProfileInfoKHR* pVideoProfile;\n    VkFormat pictureFormat;\n    VkExtent2D maxCodedExtent;\n    VkFormat referencePictureFormat;\n    uint32_t maxDpbSlots;\n    uint32_t maxActiveReferencePictures;\n    const VkExtensionProperties* pStdHeaderVersion;\n} VkVideoSessionCreateInfoKHR;\n\ntypedef struct VkVideoSessionParametersCreateInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkVideoSessionParametersCreateFlagsKHR flags;\n    VkVideoSessionParametersKHR videoSessionParametersTemplate;\n    VkVideoSessionKHR videoSession;\n} VkVideoSessionParametersCreateInfoKHR;\n\ntypedef struct VkVideoSessionParametersUpdateInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t updateSequenceCount;\n} VkVideoSessionParametersUpdateInfoKHR;\n\ntypedef struct VkVideoBeginCodingInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkVideoBeginCodingFlagsKHR flags;\n    VkVideoSessionKHR videoSession;\n    VkVideoSessionParametersKHR videoSessionParameters;\n    uint32_t referenceSlotCount;\n    const VkVideoReferenceSlotInfoKHR* pReferenceSlots;\n} VkVideoBeginCodingInfoKHR;\n\ntypedef struct VkVideoEndCodingInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkVideoEndCodingFlagsKHR flags;\n} VkVideoEndCodingInfoKHR;\n\ntypedef struct VkVideoCodingControlInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkVideoCodingControlFlagsKHR flags;\n} VkVideoCodingControlInfoKHR;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR)(VkPhysicalDevice physicalDevice, const VkVideoProfileInfoKHR* pVideoProfile, VkVideoCapabilitiesKHR* pCapabilities);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceVideoFormatInfoKHR* pVideoFormatInfo, uint32_t* pVideoFormatPropertyCount, VkVideoFormatPropertiesKHR* pVideoFormatProperties);\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateVideoSessionKHR)(VkDevice device, const VkVideoSessionCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkVideoSessionKHR* pVideoSession);\ntypedef void (VKAPI_PTR *PFN_vkDestroyVideoSessionKHR)(VkDevice device, VkVideoSessionKHR videoSession, const VkAllocationCallbacks* pAllocator);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetVideoSessionMemoryRequirementsKHR)(VkDevice device, VkVideoSessionKHR videoSession, uint32_t* pMemoryRequirementsCount, VkVideoSessionMemoryRequirementsKHR* pMemoryRequirements);\ntypedef VkResult (VKAPI_PTR *PFN_vkBindVideoSessionMemoryKHR)(VkDevice device, VkVideoSessionKHR videoSession, uint32_t bindSessionMemoryInfoCount, const VkBindVideoSessionMemoryInfoKHR* pBindSessionMemoryInfos);\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateVideoSessionParametersKHR)(VkDevice device, const VkVideoSessionParametersCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkVideoSessionParametersKHR* pVideoSessionParameters);\ntypedef VkResult (VKAPI_PTR *PFN_vkUpdateVideoSessionParametersKHR)(VkDevice device, VkVideoSessionParametersKHR videoSessionParameters, const VkVideoSessionParametersUpdateInfoKHR* pUpdateInfo);\ntypedef void (VKAPI_PTR *PFN_vkDestroyVideoSessionParametersKHR)(VkDevice device, VkVideoSessionParametersKHR videoSessionParameters, const VkAllocationCallbacks* pAllocator);\ntypedef void (VKAPI_PTR *PFN_vkCmdBeginVideoCodingKHR)(VkCommandBuffer commandBuffer, const VkVideoBeginCodingInfoKHR* pBeginInfo);\ntypedef void (VKAPI_PTR *PFN_vkCmdEndVideoCodingKHR)(VkCommandBuffer commandBuffer, const VkVideoEndCodingInfoKHR* pEndCodingInfo);\ntypedef void (VKAPI_PTR *PFN_vkCmdControlVideoCodingKHR)(VkCommandBuffer commandBuffer, const VkVideoCodingControlInfoKHR* pCodingControlInfo);\n\n\n#define VK_KHR_video_decode_queue 1\n#define VK_KHR_VIDEO_DECODE_QUEUE_SPEC_VERSION 8\n#define VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME \"VK_KHR_video_decode_queue\"\n\n\ntypedef enum\n{\n    VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR = 0x00000001,\n    VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR = 0x00000002,\n    VK_VIDEO_DECODE_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkVideoDecodeCapabilityFlagBitsKHR;\ntypedef VkFlags VkVideoDecodeCapabilityFlagsKHR;\n\ntypedef enum\n{\n    VK_VIDEO_DECODE_USAGE_DEFAULT_KHR = 0,\n    VK_VIDEO_DECODE_USAGE_TRANSCODING_BIT_KHR = 0x00000001,\n    VK_VIDEO_DECODE_USAGE_OFFLINE_BIT_KHR = 0x00000002,\n    VK_VIDEO_DECODE_USAGE_STREAMING_BIT_KHR = 0x00000004,\n    VK_VIDEO_DECODE_USAGE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkVideoDecodeUsageFlagBitsKHR;\ntypedef VkFlags VkVideoDecodeUsageFlagsKHR;\ntypedef VkFlags VkVideoDecodeFlagsKHR;\n\ntypedef struct VkVideoDecodeCapabilitiesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkVideoDecodeCapabilityFlagsKHR flags;\n} VkVideoDecodeCapabilitiesKHR;\n\ntypedef struct VkVideoDecodeUsageInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkVideoDecodeUsageFlagsKHR videoUsageHints;\n} VkVideoDecodeUsageInfoKHR;\n\ntypedef struct VkVideoDecodeInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkVideoDecodeFlagsKHR flags;\n    VkBuffer srcBuffer;\n    VkDeviceSize srcBufferOffset;\n    VkDeviceSize srcBufferRange;\n    VkVideoPictureResourceInfoKHR dstPictureResource;\n    const VkVideoReferenceSlotInfoKHR* pSetupReferenceSlot;\n    uint32_t referenceSlotCount;\n    const VkVideoReferenceSlotInfoKHR* pReferenceSlots;\n} VkVideoDecodeInfoKHR;\n\n\ntypedef void (VKAPI_PTR *PFN_vkCmdDecodeVideoKHR)(VkCommandBuffer commandBuffer, const VkVideoDecodeInfoKHR* pDecodeInfo);\n\n\n#define VK_AMD_gcn_shader 1\n#define VK_AMD_GCN_SHADER_SPEC_VERSION 1\n#define VK_AMD_GCN_SHADER_EXTENSION_NAME \"VK_AMD_gcn_shader\"\n\n\n#define VK_EXT_transform_feedback 1\n#define VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION 1\n#define VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME \"VK_EXT_transform_feedback\"\n\ntypedef VkFlags VkPipelineRasterizationStateStreamCreateFlagsEXT;\ntypedef struct VkPhysicalDeviceTransformFeedbackFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 transformFeedback;\n    VkBool32 geometryStreams;\n} VkPhysicalDeviceTransformFeedbackFeaturesEXT;\n\ntypedef struct VkPhysicalDeviceTransformFeedbackPropertiesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t maxTransformFeedbackStreams;\n    uint32_t maxTransformFeedbackBuffers;\n    VkDeviceSize maxTransformFeedbackBufferSize;\n    uint32_t maxTransformFeedbackStreamDataSize;\n    uint32_t maxTransformFeedbackBufferDataSize;\n    uint32_t maxTransformFeedbackBufferDataStride;\n    VkBool32 transformFeedbackQueries;\n    VkBool32 transformFeedbackStreamsLinesTriangles;\n    VkBool32 transformFeedbackRasterizationStreamSelect;\n    VkBool32 transformFeedbackDraw;\n} VkPhysicalDeviceTransformFeedbackPropertiesEXT;\n\ntypedef struct VkPipelineRasterizationStateStreamCreateInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkPipelineRasterizationStateStreamCreateFlagsEXT flags;\n    uint32_t rasterizationStream;\n} VkPipelineRasterizationStateStreamCreateInfoEXT;\n\n\ntypedef void (VKAPI_PTR *PFN_vkCmdBindTransformFeedbackBuffersEXT)(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets, const VkDeviceSize* pSizes);\ntypedef void (VKAPI_PTR *PFN_vkCmdBeginTransformFeedbackEXT)(VkCommandBuffer commandBuffer, uint32_t firstCounterBuffer, uint32_t counterBufferCount, const VkBuffer* pCounterBuffers, const VkDeviceSize* pCounterBufferOffsets);\ntypedef void (VKAPI_PTR *PFN_vkCmdEndTransformFeedbackEXT)(VkCommandBuffer commandBuffer, uint32_t firstCounterBuffer, uint32_t counterBufferCount, const VkBuffer* pCounterBuffers, const VkDeviceSize* pCounterBufferOffsets);\ntypedef void (VKAPI_PTR *PFN_vkCmdBeginQueryIndexedEXT)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, VkQueryControlFlags flags, uint32_t index);\ntypedef void (VKAPI_PTR *PFN_vkCmdEndQueryIndexedEXT)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, uint32_t index);\ntypedef void (VKAPI_PTR *PFN_vkCmdDrawIndirectByteCountEXT)(VkCommandBuffer commandBuffer, uint32_t instanceCount, uint32_t firstInstance, VkBuffer counterBuffer, VkDeviceSize counterBufferOffset, uint32_t counterOffset, uint32_t vertexStride);\n\n\n#define VK_NVX_binary_import 1\n#define VK_NVX_BINARY_IMPORT_SPEC_VERSION 2\n#define VK_NVX_BINARY_IMPORT_EXTENSION_NAME \"VK_NVX_binary_import\"\n\nVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkCuModuleNVX)\nVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkCuFunctionNVX)\n\ntypedef struct VkCuModuleCreateInfoNVX\n{\n    VkStructureType sType;\n    const void* pNext;\n    size_t dataSize;\n    const void* pData;\n} VkCuModuleCreateInfoNVX;\n\ntypedef struct VkCuModuleTexturingModeCreateInfoNVX\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkBool32 use64bitTexturing;\n} VkCuModuleTexturingModeCreateInfoNVX;\n\ntypedef struct VkCuFunctionCreateInfoNVX\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkCuModuleNVX module;\n    const char* pName;\n} VkCuFunctionCreateInfoNVX;\n\ntypedef struct VkCuLaunchInfoNVX\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkCuFunctionNVX function;\n    uint32_t gridDimX;\n    uint32_t gridDimY;\n    uint32_t gridDimZ;\n    uint32_t blockDimX;\n    uint32_t blockDimY;\n    uint32_t blockDimZ;\n    uint32_t sharedMemBytes;\n    size_t paramCount;\n    const void* const * pParams;\n    size_t extraCount;\n    const void* const * pExtras;\n} VkCuLaunchInfoNVX;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateCuModuleNVX)(VkDevice device, const VkCuModuleCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCuModuleNVX* pModule);\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateCuFunctionNVX)(VkDevice device, const VkCuFunctionCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCuFunctionNVX* pFunction);\ntypedef void (VKAPI_PTR *PFN_vkDestroyCuModuleNVX)(VkDevice device, VkCuModuleNVX module, const VkAllocationCallbacks* pAllocator);\ntypedef void (VKAPI_PTR *PFN_vkDestroyCuFunctionNVX)(VkDevice device, VkCuFunctionNVX function, const VkAllocationCallbacks* pAllocator);\ntypedef void (VKAPI_PTR *PFN_vkCmdCuLaunchKernelNVX)(VkCommandBuffer commandBuffer, const VkCuLaunchInfoNVX* pLaunchInfo);\n\n\n#define VK_NVX_image_view_handle 1\n#define VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION 4\n#define VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME \"VK_NVX_image_view_handle\"\n\ntypedef struct VkImageViewHandleInfoNVX\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkImageView imageView;\n    VkDescriptorType descriptorType;\n    VkSampler sampler;\n} VkImageViewHandleInfoNVX;\n\ntypedef struct VkImageViewAddressPropertiesNVX\n{\n    VkStructureType sType;\n    void* pNext;\n    VkDeviceAddress deviceAddress;\n    VkDeviceSize size;\n} VkImageViewAddressPropertiesNVX;\n\n\ntypedef uint32_t (VKAPI_PTR *PFN_vkGetImageViewHandleNVX)(VkDevice device, const VkImageViewHandleInfoNVX* pInfo);\ntypedef uint64_t (VKAPI_PTR *PFN_vkGetImageViewHandle64NVX)(VkDevice device, const VkImageViewHandleInfoNVX* pInfo);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetImageViewAddressNVX)(VkDevice device, VkImageView imageView, VkImageViewAddressPropertiesNVX* pProperties);\ntypedef uint64_t (VKAPI_PTR *PFN_vkGetDeviceCombinedImageSamplerIndexNVX)(VkDevice device, uint64_t imageViewIndex, uint64_t samplerIndex);\n\n\n#define VK_AMD_negative_viewport_height 1\n#define VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION 1\n#define VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME \"VK_AMD_negative_viewport_height\"\n\n\n#define VK_AMD_shader_ballot 1\n#define VK_AMD_SHADER_BALLOT_SPEC_VERSION 1\n#define VK_AMD_SHADER_BALLOT_EXTENSION_NAME \"VK_AMD_shader_ballot\"\n\n\n#define VK_KHR_video_encode_h264 1\n#define VK_KHR_VIDEO_ENCODE_H264_SPEC_VERSION 14\n#define VK_KHR_VIDEO_ENCODE_H264_EXTENSION_NAME \"VK_KHR_video_encode_h264\"\n\n\ntypedef enum\n{\n    VK_VIDEO_ENCODE_H264_CAPABILITY_HRD_COMPLIANCE_BIT_KHR = 0x00000001,\n    VK_VIDEO_ENCODE_H264_CAPABILITY_PREDICTION_WEIGHT_TABLE_GENERATED_BIT_KHR = 0x00000002,\n    VK_VIDEO_ENCODE_H264_CAPABILITY_ROW_UNALIGNED_SLICE_BIT_KHR = 0x00000004,\n    VK_VIDEO_ENCODE_H264_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_KHR = 0x00000008,\n    VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L0_LIST_BIT_KHR = 0x00000010,\n    VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_KHR = 0x00000020,\n    VK_VIDEO_ENCODE_H264_CAPABILITY_PER_PICTURE_TYPE_MIN_MAX_QP_BIT_KHR = 0x00000040,\n    VK_VIDEO_ENCODE_H264_CAPABILITY_PER_SLICE_CONSTANT_QP_BIT_KHR = 0x00000080,\n    VK_VIDEO_ENCODE_H264_CAPABILITY_GENERATE_PREFIX_NALU_BIT_KHR = 0x00000100,\n    VK_VIDEO_ENCODE_H264_CAPABILITY_B_PICTURE_INTRA_REFRESH_BIT_KHR = 0x00000400,\n    VK_VIDEO_ENCODE_H264_CAPABILITY_MB_QP_DIFF_WRAPAROUND_BIT_KHR = 0x00000200,\n    VK_VIDEO_ENCODE_H264_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkVideoEncodeH264CapabilityFlagBitsKHR;\ntypedef VkFlags VkVideoEncodeH264CapabilityFlagsKHR;\n\ntypedef enum\n{\n    VK_VIDEO_ENCODE_H264_STD_SEPARATE_COLOR_PLANE_FLAG_SET_BIT_KHR = 0x00000001,\n    VK_VIDEO_ENCODE_H264_STD_QPPRIME_Y_ZERO_TRANSFORM_BYPASS_FLAG_SET_BIT_KHR = 0x00000002,\n    VK_VIDEO_ENCODE_H264_STD_SCALING_MATRIX_PRESENT_FLAG_SET_BIT_KHR = 0x00000004,\n    VK_VIDEO_ENCODE_H264_STD_CHROMA_QP_INDEX_OFFSET_BIT_KHR = 0x00000008,\n    VK_VIDEO_ENCODE_H264_STD_SECOND_CHROMA_QP_INDEX_OFFSET_BIT_KHR = 0x00000010,\n    VK_VIDEO_ENCODE_H264_STD_PIC_INIT_QP_MINUS26_BIT_KHR = 0x00000020,\n    VK_VIDEO_ENCODE_H264_STD_WEIGHTED_PRED_FLAG_SET_BIT_KHR = 0x00000040,\n    VK_VIDEO_ENCODE_H264_STD_WEIGHTED_BIPRED_IDC_EXPLICIT_BIT_KHR = 0x00000080,\n    VK_VIDEO_ENCODE_H264_STD_WEIGHTED_BIPRED_IDC_IMPLICIT_BIT_KHR = 0x00000100,\n    VK_VIDEO_ENCODE_H264_STD_TRANSFORM_8X8_MODE_FLAG_SET_BIT_KHR = 0x00000200,\n    VK_VIDEO_ENCODE_H264_STD_DIRECT_SPATIAL_MV_PRED_FLAG_UNSET_BIT_KHR = 0x00000400,\n    VK_VIDEO_ENCODE_H264_STD_ENTROPY_CODING_MODE_FLAG_UNSET_BIT_KHR = 0x00000800,\n    VK_VIDEO_ENCODE_H264_STD_ENTROPY_CODING_MODE_FLAG_SET_BIT_KHR = 0x00001000,\n    VK_VIDEO_ENCODE_H264_STD_DIRECT_8X8_INFERENCE_FLAG_UNSET_BIT_KHR = 0x00002000,\n    VK_VIDEO_ENCODE_H264_STD_CONSTRAINED_INTRA_PRED_FLAG_SET_BIT_KHR = 0x00004000,\n    VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_DISABLED_BIT_KHR = 0x00008000,\n    VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_ENABLED_BIT_KHR = 0x00010000,\n    VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_PARTIAL_BIT_KHR = 0x00020000,\n    VK_VIDEO_ENCODE_H264_STD_SLICE_QP_DELTA_BIT_KHR = 0x00080000,\n    VK_VIDEO_ENCODE_H264_STD_DIFFERENT_SLICE_QP_DELTA_BIT_KHR = 0x00100000,\n    VK_VIDEO_ENCODE_H264_STD_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkVideoEncodeH264StdFlagBitsKHR;\ntypedef VkFlags VkVideoEncodeH264StdFlagsKHR;\n\ntypedef enum\n{\n    VK_VIDEO_ENCODE_H264_RATE_CONTROL_ATTEMPT_HRD_COMPLIANCE_BIT_KHR = 0x00000001,\n    VK_VIDEO_ENCODE_H264_RATE_CONTROL_REGULAR_GOP_BIT_KHR = 0x00000002,\n    VK_VIDEO_ENCODE_H264_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_KHR = 0x00000004,\n    VK_VIDEO_ENCODE_H264_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_KHR = 0x00000008,\n    VK_VIDEO_ENCODE_H264_RATE_CONTROL_TEMPORAL_LAYER_PATTERN_DYADIC_BIT_KHR = 0x00000010,\n    VK_VIDEO_ENCODE_H264_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkVideoEncodeH264RateControlFlagBitsKHR;\ntypedef VkFlags VkVideoEncodeH264RateControlFlagsKHR;\n\ntypedef struct VkVideoEncodeH264CapabilitiesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkVideoEncodeH264CapabilityFlagsKHR flags;\n    StdVideoH264LevelIdc maxLevelIdc;\n    uint32_t maxSliceCount;\n    uint32_t maxPPictureL0ReferenceCount;\n    uint32_t maxBPictureL0ReferenceCount;\n    uint32_t maxL1ReferenceCount;\n    uint32_t maxTemporalLayerCount;\n    VkBool32 expectDyadicTemporalLayerPattern;\n    int32_t minQp;\n    int32_t maxQp;\n    VkBool32 prefersGopRemainingFrames;\n    VkBool32 requiresGopRemainingFrames;\n    VkVideoEncodeH264StdFlagsKHR stdSyntaxFlags;\n} VkVideoEncodeH264CapabilitiesKHR;\n\ntypedef struct VkVideoEncodeH264QpKHR\n{\n    int32_t qpI;\n    int32_t qpP;\n    int32_t qpB;\n} VkVideoEncodeH264QpKHR;\n\ntypedef struct VkVideoEncodeH264QualityLevelPropertiesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkVideoEncodeH264RateControlFlagsKHR preferredRateControlFlags;\n    uint32_t preferredGopFrameCount;\n    uint32_t preferredIdrPeriod;\n    uint32_t preferredConsecutiveBFrameCount;\n    uint32_t preferredTemporalLayerCount;\n    VkVideoEncodeH264QpKHR preferredConstantQp;\n    uint32_t preferredMaxL0ReferenceCount;\n    uint32_t preferredMaxL1ReferenceCount;\n    VkBool32 preferredStdEntropyCodingModeFlag;\n} VkVideoEncodeH264QualityLevelPropertiesKHR;\n\ntypedef struct VkVideoEncodeH264SessionCreateInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkBool32 useMaxLevelIdc;\n    StdVideoH264LevelIdc maxLevelIdc;\n} VkVideoEncodeH264SessionCreateInfoKHR;\n\ntypedef struct VkVideoEncodeH264SessionParametersAddInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t stdSPSCount;\n    const StdVideoH264SequenceParameterSet* pStdSPSs;\n    uint32_t stdPPSCount;\n    const StdVideoH264PictureParameterSet* pStdPPSs;\n} VkVideoEncodeH264SessionParametersAddInfoKHR;\n\ntypedef struct VkVideoEncodeH264SessionParametersCreateInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t maxStdSPSCount;\n    uint32_t maxStdPPSCount;\n    const VkVideoEncodeH264SessionParametersAddInfoKHR* pParametersAddInfo;\n} VkVideoEncodeH264SessionParametersCreateInfoKHR;\n\ntypedef struct VkVideoEncodeH264SessionParametersGetInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkBool32 writeStdSPS;\n    VkBool32 writeStdPPS;\n    uint32_t stdSPSId;\n    uint32_t stdPPSId;\n} VkVideoEncodeH264SessionParametersGetInfoKHR;\n\ntypedef struct VkVideoEncodeH264SessionParametersFeedbackInfoKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 hasStdSPSOverrides;\n    VkBool32 hasStdPPSOverrides;\n} VkVideoEncodeH264SessionParametersFeedbackInfoKHR;\n\ntypedef struct VkVideoEncodeH264NaluSliceInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    int32_t constantQp;\n    const StdVideoEncodeH264SliceHeader* pStdSliceHeader;\n} VkVideoEncodeH264NaluSliceInfoKHR;\n\ntypedef struct VkVideoEncodeH264PictureInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t naluSliceEntryCount;\n    const VkVideoEncodeH264NaluSliceInfoKHR* pNaluSliceEntries;\n    const StdVideoEncodeH264PictureInfo* pStdPictureInfo;\n    VkBool32 generatePrefixNalu;\n} VkVideoEncodeH264PictureInfoKHR;\n\ntypedef struct VkVideoEncodeH264DpbSlotInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    const StdVideoEncodeH264ReferenceInfo* pStdReferenceInfo;\n} VkVideoEncodeH264DpbSlotInfoKHR;\n\ntypedef struct VkVideoEncodeH264ProfileInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    StdVideoH264ProfileIdc stdProfileIdc;\n} VkVideoEncodeH264ProfileInfoKHR;\n\ntypedef struct VkVideoEncodeH264RateControlInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkVideoEncodeH264RateControlFlagsKHR flags;\n    uint32_t gopFrameCount;\n    uint32_t idrPeriod;\n    uint32_t consecutiveBFrameCount;\n    uint32_t temporalLayerCount;\n} VkVideoEncodeH264RateControlInfoKHR;\n\ntypedef struct VkVideoEncodeH264FrameSizeKHR\n{\n    uint32_t frameISize;\n    uint32_t framePSize;\n    uint32_t frameBSize;\n} VkVideoEncodeH264FrameSizeKHR;\n\ntypedef struct VkVideoEncodeH264RateControlLayerInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkBool32 useMinQp;\n    VkVideoEncodeH264QpKHR minQp;\n    VkBool32 useMaxQp;\n    VkVideoEncodeH264QpKHR maxQp;\n    VkBool32 useMaxFrameSize;\n    VkVideoEncodeH264FrameSizeKHR maxFrameSize;\n} VkVideoEncodeH264RateControlLayerInfoKHR;\n\ntypedef struct VkVideoEncodeH264GopRemainingFrameInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkBool32 useGopRemainingFrames;\n    uint32_t gopRemainingI;\n    uint32_t gopRemainingP;\n    uint32_t gopRemainingB;\n} VkVideoEncodeH264GopRemainingFrameInfoKHR;\n\n\n#define VK_KHR_video_encode_h265 1\n#define VK_KHR_VIDEO_ENCODE_H265_SPEC_VERSION 14\n#define VK_KHR_VIDEO_ENCODE_H265_EXTENSION_NAME \"VK_KHR_video_encode_h265\"\n\n\ntypedef enum\n{\n    VK_VIDEO_ENCODE_H265_CAPABILITY_HRD_COMPLIANCE_BIT_KHR = 0x00000001,\n    VK_VIDEO_ENCODE_H265_CAPABILITY_PREDICTION_WEIGHT_TABLE_GENERATED_BIT_KHR = 0x00000002,\n    VK_VIDEO_ENCODE_H265_CAPABILITY_ROW_UNALIGNED_SLICE_SEGMENT_BIT_KHR = 0x00000004,\n    VK_VIDEO_ENCODE_H265_CAPABILITY_DIFFERENT_SLICE_SEGMENT_TYPE_BIT_KHR = 0x00000008,\n    VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L0_LIST_BIT_KHR = 0x00000010,\n    VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_KHR = 0x00000020,\n    VK_VIDEO_ENCODE_H265_CAPABILITY_PER_PICTURE_TYPE_MIN_MAX_QP_BIT_KHR = 0x00000040,\n    VK_VIDEO_ENCODE_H265_CAPABILITY_PER_SLICE_SEGMENT_CONSTANT_QP_BIT_KHR = 0x00000080,\n    VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_TILES_PER_SLICE_SEGMENT_BIT_KHR = 0x00000100,\n    VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_SLICE_SEGMENTS_PER_TILE_BIT_KHR = 0x00000200,\n    VK_VIDEO_ENCODE_H265_CAPABILITY_B_PICTURE_INTRA_REFRESH_BIT_KHR = 0x00000800,\n    VK_VIDEO_ENCODE_H265_CAPABILITY_CU_QP_DIFF_WRAPAROUND_BIT_KHR = 0x00000400,\n    VK_VIDEO_ENCODE_H265_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkVideoEncodeH265CapabilityFlagBitsKHR;\ntypedef VkFlags VkVideoEncodeH265CapabilityFlagsKHR;\n\ntypedef enum\n{\n    VK_VIDEO_ENCODE_H265_STD_SEPARATE_COLOR_PLANE_FLAG_SET_BIT_KHR = 0x00000001,\n    VK_VIDEO_ENCODE_H265_STD_SAMPLE_ADAPTIVE_OFFSET_ENABLED_FLAG_SET_BIT_KHR = 0x00000002,\n    VK_VIDEO_ENCODE_H265_STD_SCALING_LIST_DATA_PRESENT_FLAG_SET_BIT_KHR = 0x00000004,\n    VK_VIDEO_ENCODE_H265_STD_PCM_ENABLED_FLAG_SET_BIT_KHR = 0x00000008,\n    VK_VIDEO_ENCODE_H265_STD_SPS_TEMPORAL_MVP_ENABLED_FLAG_SET_BIT_KHR = 0x00000010,\n    VK_VIDEO_ENCODE_H265_STD_INIT_QP_MINUS26_BIT_KHR = 0x00000020,\n    VK_VIDEO_ENCODE_H265_STD_WEIGHTED_PRED_FLAG_SET_BIT_KHR = 0x00000040,\n    VK_VIDEO_ENCODE_H265_STD_WEIGHTED_BIPRED_FLAG_SET_BIT_KHR = 0x00000080,\n    VK_VIDEO_ENCODE_H265_STD_LOG2_PARALLEL_MERGE_LEVEL_MINUS2_BIT_KHR = 0x00000100,\n    VK_VIDEO_ENCODE_H265_STD_SIGN_DATA_HIDING_ENABLED_FLAG_SET_BIT_KHR = 0x00000200,\n    VK_VIDEO_ENCODE_H265_STD_TRANSFORM_SKIP_ENABLED_FLAG_SET_BIT_KHR = 0x00000400,\n    VK_VIDEO_ENCODE_H265_STD_TRANSFORM_SKIP_ENABLED_FLAG_UNSET_BIT_KHR = 0x00000800,\n    VK_VIDEO_ENCODE_H265_STD_PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT_FLAG_SET_BIT_KHR = 0x00001000,\n    VK_VIDEO_ENCODE_H265_STD_TRANSQUANT_BYPASS_ENABLED_FLAG_SET_BIT_KHR = 0x00002000,\n    VK_VIDEO_ENCODE_H265_STD_CONSTRAINED_INTRA_PRED_FLAG_SET_BIT_KHR = 0x00004000,\n    VK_VIDEO_ENCODE_H265_STD_ENTROPY_CODING_SYNC_ENABLED_FLAG_SET_BIT_KHR = 0x00008000,\n    VK_VIDEO_ENCODE_H265_STD_DEBLOCKING_FILTER_OVERRIDE_ENABLED_FLAG_SET_BIT_KHR = 0x00010000,\n    VK_VIDEO_ENCODE_H265_STD_DEPENDENT_SLICE_SEGMENTS_ENABLED_FLAG_SET_BIT_KHR = 0x00020000,\n    VK_VIDEO_ENCODE_H265_STD_DEPENDENT_SLICE_SEGMENT_FLAG_SET_BIT_KHR = 0x00040000,\n    VK_VIDEO_ENCODE_H265_STD_SLICE_QP_DELTA_BIT_KHR = 0x00080000,\n    VK_VIDEO_ENCODE_H265_STD_DIFFERENT_SLICE_QP_DELTA_BIT_KHR = 0x00100000,\n    VK_VIDEO_ENCODE_H265_STD_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkVideoEncodeH265StdFlagBitsKHR;\ntypedef VkFlags VkVideoEncodeH265StdFlagsKHR;\n\ntypedef enum\n{\n    VK_VIDEO_ENCODE_H265_CTB_SIZE_16_BIT_KHR = 0x00000001,\n    VK_VIDEO_ENCODE_H265_CTB_SIZE_32_BIT_KHR = 0x00000002,\n    VK_VIDEO_ENCODE_H265_CTB_SIZE_64_BIT_KHR = 0x00000004,\n    VK_VIDEO_ENCODE_H265_CTB_SIZE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkVideoEncodeH265CtbSizeFlagBitsKHR;\ntypedef VkFlags VkVideoEncodeH265CtbSizeFlagsKHR;\n\ntypedef enum\n{\n    VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_4_BIT_KHR = 0x00000001,\n    VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_8_BIT_KHR = 0x00000002,\n    VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_16_BIT_KHR = 0x00000004,\n    VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_32_BIT_KHR = 0x00000008,\n    VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkVideoEncodeH265TransformBlockSizeFlagBitsKHR;\ntypedef VkFlags VkVideoEncodeH265TransformBlockSizeFlagsKHR;\n\ntypedef enum\n{\n    VK_VIDEO_ENCODE_H265_RATE_CONTROL_ATTEMPT_HRD_COMPLIANCE_BIT_KHR = 0x00000001,\n    VK_VIDEO_ENCODE_H265_RATE_CONTROL_REGULAR_GOP_BIT_KHR = 0x00000002,\n    VK_VIDEO_ENCODE_H265_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_KHR = 0x00000004,\n    VK_VIDEO_ENCODE_H265_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_KHR = 0x00000008,\n    VK_VIDEO_ENCODE_H265_RATE_CONTROL_TEMPORAL_SUB_LAYER_PATTERN_DYADIC_BIT_KHR = 0x00000010,\n    VK_VIDEO_ENCODE_H265_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkVideoEncodeH265RateControlFlagBitsKHR;\ntypedef VkFlags VkVideoEncodeH265RateControlFlagsKHR;\n\ntypedef struct VkVideoEncodeH265CapabilitiesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkVideoEncodeH265CapabilityFlagsKHR flags;\n    StdVideoH265LevelIdc maxLevelIdc;\n    uint32_t maxSliceSegmentCount;\n    VkExtent2D maxTiles;\n    VkVideoEncodeH265CtbSizeFlagsKHR ctbSizes;\n    VkVideoEncodeH265TransformBlockSizeFlagsKHR transformBlockSizes;\n    uint32_t maxPPictureL0ReferenceCount;\n    uint32_t maxBPictureL0ReferenceCount;\n    uint32_t maxL1ReferenceCount;\n    uint32_t maxSubLayerCount;\n    VkBool32 expectDyadicTemporalSubLayerPattern;\n    int32_t minQp;\n    int32_t maxQp;\n    VkBool32 prefersGopRemainingFrames;\n    VkBool32 requiresGopRemainingFrames;\n    VkVideoEncodeH265StdFlagsKHR stdSyntaxFlags;\n} VkVideoEncodeH265CapabilitiesKHR;\n\ntypedef struct VkVideoEncodeH265SessionCreateInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkBool32 useMaxLevelIdc;\n    StdVideoH265LevelIdc maxLevelIdc;\n} VkVideoEncodeH265SessionCreateInfoKHR;\n\ntypedef struct VkVideoEncodeH265QpKHR\n{\n    int32_t qpI;\n    int32_t qpP;\n    int32_t qpB;\n} VkVideoEncodeH265QpKHR;\n\ntypedef struct VkVideoEncodeH265QualityLevelPropertiesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkVideoEncodeH265RateControlFlagsKHR preferredRateControlFlags;\n    uint32_t preferredGopFrameCount;\n    uint32_t preferredIdrPeriod;\n    uint32_t preferredConsecutiveBFrameCount;\n    uint32_t preferredSubLayerCount;\n    VkVideoEncodeH265QpKHR preferredConstantQp;\n    uint32_t preferredMaxL0ReferenceCount;\n    uint32_t preferredMaxL1ReferenceCount;\n} VkVideoEncodeH265QualityLevelPropertiesKHR;\n\ntypedef struct VkVideoEncodeH265SessionParametersAddInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t stdVPSCount;\n    const StdVideoH265VideoParameterSet* pStdVPSs;\n    uint32_t stdSPSCount;\n    const StdVideoH265SequenceParameterSet* pStdSPSs;\n    uint32_t stdPPSCount;\n    const StdVideoH265PictureParameterSet* pStdPPSs;\n} VkVideoEncodeH265SessionParametersAddInfoKHR;\n\ntypedef struct VkVideoEncodeH265SessionParametersCreateInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t maxStdVPSCount;\n    uint32_t maxStdSPSCount;\n    uint32_t maxStdPPSCount;\n    const VkVideoEncodeH265SessionParametersAddInfoKHR* pParametersAddInfo;\n} VkVideoEncodeH265SessionParametersCreateInfoKHR;\n\ntypedef struct VkVideoEncodeH265SessionParametersGetInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkBool32 writeStdVPS;\n    VkBool32 writeStdSPS;\n    VkBool32 writeStdPPS;\n    uint32_t stdVPSId;\n    uint32_t stdSPSId;\n    uint32_t stdPPSId;\n} VkVideoEncodeH265SessionParametersGetInfoKHR;\n\ntypedef struct VkVideoEncodeH265SessionParametersFeedbackInfoKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 hasStdVPSOverrides;\n    VkBool32 hasStdSPSOverrides;\n    VkBool32 hasStdPPSOverrides;\n} VkVideoEncodeH265SessionParametersFeedbackInfoKHR;\n\ntypedef struct VkVideoEncodeH265NaluSliceSegmentInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    int32_t constantQp;\n    const StdVideoEncodeH265SliceSegmentHeader* pStdSliceSegmentHeader;\n} VkVideoEncodeH265NaluSliceSegmentInfoKHR;\n\ntypedef struct VkVideoEncodeH265PictureInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t naluSliceSegmentEntryCount;\n    const VkVideoEncodeH265NaluSliceSegmentInfoKHR* pNaluSliceSegmentEntries;\n    const StdVideoEncodeH265PictureInfo* pStdPictureInfo;\n} VkVideoEncodeH265PictureInfoKHR;\n\ntypedef struct VkVideoEncodeH265DpbSlotInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    const StdVideoEncodeH265ReferenceInfo* pStdReferenceInfo;\n} VkVideoEncodeH265DpbSlotInfoKHR;\n\ntypedef struct VkVideoEncodeH265ProfileInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    StdVideoH265ProfileIdc stdProfileIdc;\n} VkVideoEncodeH265ProfileInfoKHR;\n\ntypedef struct VkVideoEncodeH265RateControlInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkVideoEncodeH265RateControlFlagsKHR flags;\n    uint32_t gopFrameCount;\n    uint32_t idrPeriod;\n    uint32_t consecutiveBFrameCount;\n    uint32_t subLayerCount;\n} VkVideoEncodeH265RateControlInfoKHR;\n\ntypedef struct VkVideoEncodeH265FrameSizeKHR\n{\n    uint32_t frameISize;\n    uint32_t framePSize;\n    uint32_t frameBSize;\n} VkVideoEncodeH265FrameSizeKHR;\n\ntypedef struct VkVideoEncodeH265RateControlLayerInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkBool32 useMinQp;\n    VkVideoEncodeH265QpKHR minQp;\n    VkBool32 useMaxQp;\n    VkVideoEncodeH265QpKHR maxQp;\n    VkBool32 useMaxFrameSize;\n    VkVideoEncodeH265FrameSizeKHR maxFrameSize;\n} VkVideoEncodeH265RateControlLayerInfoKHR;\n\ntypedef struct VkVideoEncodeH265GopRemainingFrameInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkBool32 useGopRemainingFrames;\n    uint32_t gopRemainingI;\n    uint32_t gopRemainingP;\n    uint32_t gopRemainingB;\n} VkVideoEncodeH265GopRemainingFrameInfoKHR;\n\n\n#define VK_KHR_video_decode_h264 1\n#define VK_KHR_VIDEO_DECODE_H264_SPEC_VERSION 9\n#define VK_KHR_VIDEO_DECODE_H264_EXTENSION_NAME \"VK_KHR_video_decode_h264\"\n\n\ntypedef enum\n{\n    VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_KHR = 0,\n    VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_KHR = 0x00000001,\n    VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR = 0x00000002,\n    VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkVideoDecodeH264PictureLayoutFlagBitsKHR;\ntypedef VkFlags VkVideoDecodeH264PictureLayoutFlagsKHR;\n\ntypedef struct VkVideoDecodeH264ProfileInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    StdVideoH264ProfileIdc stdProfileIdc;\n    VkVideoDecodeH264PictureLayoutFlagBitsKHR pictureLayout;\n} VkVideoDecodeH264ProfileInfoKHR;\n\ntypedef struct VkVideoDecodeH264CapabilitiesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    StdVideoH264LevelIdc maxLevelIdc;\n    VkOffset2D fieldOffsetGranularity;\n} VkVideoDecodeH264CapabilitiesKHR;\n\ntypedef struct VkVideoDecodeH264SessionParametersAddInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t stdSPSCount;\n    const StdVideoH264SequenceParameterSet* pStdSPSs;\n    uint32_t stdPPSCount;\n    const StdVideoH264PictureParameterSet* pStdPPSs;\n} VkVideoDecodeH264SessionParametersAddInfoKHR;\n\ntypedef struct VkVideoDecodeH264SessionParametersCreateInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t maxStdSPSCount;\n    uint32_t maxStdPPSCount;\n    const VkVideoDecodeH264SessionParametersAddInfoKHR* pParametersAddInfo;\n} VkVideoDecodeH264SessionParametersCreateInfoKHR;\n\ntypedef struct VkVideoDecodeH264PictureInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    const StdVideoDecodeH264PictureInfo* pStdPictureInfo;\n    uint32_t sliceCount;\n    const uint32_t* pSliceOffsets;\n} VkVideoDecodeH264PictureInfoKHR;\n\ntypedef struct VkVideoDecodeH264DpbSlotInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    const StdVideoDecodeH264ReferenceInfo* pStdReferenceInfo;\n} VkVideoDecodeH264DpbSlotInfoKHR;\n\n\n#define VK_AMD_texture_gather_bias_lod 1\n#define VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION 1\n#define VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME \"VK_AMD_texture_gather_bias_lod\"\n\ntypedef struct VkTextureLODGatherFormatPropertiesAMD\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 supportsTextureGatherLODBiasAMD;\n} VkTextureLODGatherFormatPropertiesAMD;\n\n\n#define VK_AMD_shader_info 1\n#define VK_AMD_SHADER_INFO_SPEC_VERSION 1\n#define VK_AMD_SHADER_INFO_EXTENSION_NAME \"VK_AMD_shader_info\"\n\ntypedef enum\n{\n    VK_SHADER_INFO_TYPE_STATISTICS_AMD = 0,\n    VK_SHADER_INFO_TYPE_BINARY_AMD = 1,\n    VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD = 2,\n    VK_SHADER_INFO_TYPE_MAX_ENUM_AMD = 0x7FFFFFFF\n} VkShaderInfoTypeAMD;\n\n\ntypedef struct VkShaderResourceUsageAMD\n{\n    uint32_t numUsedVgprs;\n    uint32_t numUsedSgprs;\n    uint32_t ldsSizePerLocalWorkGroup;\n    size_t ldsUsageSizeInBytes;\n    size_t scratchMemUsageInBytes;\n} VkShaderResourceUsageAMD;\n\ntypedef struct VkShaderStatisticsInfoAMD\n{\n    VkShaderStageFlags shaderStageMask;\n    VkShaderResourceUsageAMD resourceUsage;\n    uint32_t numPhysicalVgprs;\n    uint32_t numPhysicalSgprs;\n    uint32_t numAvailableVgprs;\n    uint32_t numAvailableSgprs;\n    uint32_t computeWorkGroupSize[3];\n} VkShaderStatisticsInfoAMD;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkGetShaderInfoAMD)(VkDevice device, VkPipeline pipeline, VkShaderStageFlagBits shaderStage, VkShaderInfoTypeAMD infoType, size_t* pInfoSize, void* pInfo);\n\n\n#define VK_KHR_dynamic_rendering 1\n#define VK_KHR_DYNAMIC_RENDERING_SPEC_VERSION 1\n#define VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME \"VK_KHR_dynamic_rendering\"\n\ntypedef VkRenderingFlags VkRenderingFlagsKHR;\ntypedef VkRenderingFlagBits VkRenderingFlagBitsKHR;\ntypedef VkRenderingInfo VkRenderingInfoKHR;\n\ntypedef VkRenderingAttachmentInfo VkRenderingAttachmentInfoKHR;\n\ntypedef VkPipelineRenderingCreateInfo VkPipelineRenderingCreateInfoKHR;\n\ntypedef VkPhysicalDeviceDynamicRenderingFeatures VkPhysicalDeviceDynamicRenderingFeaturesKHR;\n\ntypedef VkCommandBufferInheritanceRenderingInfo VkCommandBufferInheritanceRenderingInfoKHR;\n\ntypedef void (VKAPI_PTR *PFN_vkCmdBeginRenderingKHR)(VkCommandBuffer commandBuffer, const VkRenderingInfo* pRenderingInfo);\ntypedef void (VKAPI_PTR *PFN_vkCmdEndRenderingKHR)(VkCommandBuffer commandBuffer);\n\n\n#define VK_AMD_shader_image_load_store_lod 1\n#define VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION 1\n#define VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME \"VK_AMD_shader_image_load_store_lod\"\n\n\n#define VK_NV_corner_sampled_image 1\n#define VK_NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION 2\n#define VK_NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME \"VK_NV_corner_sampled_image\"\n\ntypedef struct VkPhysicalDeviceCornerSampledImageFeaturesNV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 cornerSampledImage;\n} VkPhysicalDeviceCornerSampledImageFeaturesNV;\n\n\n#define VK_NV_private_vendor_info 1\n#define VK_NV_PRIVATE_VENDOR_INFO_SPEC_VERSION 2\n#define VK_NV_PRIVATE_VENDOR_INFO_EXTENSION_NAME \"VK_NV_private_vendor_info\"\n\n\n#define VK_KHR_multiview 1\n#define VK_KHR_MULTIVIEW_SPEC_VERSION 1\n#define VK_KHR_MULTIVIEW_EXTENSION_NAME \"VK_KHR_multiview\"\n\ntypedef VkRenderPassMultiviewCreateInfo VkRenderPassMultiviewCreateInfoKHR;\n\ntypedef VkPhysicalDeviceMultiviewFeatures VkPhysicalDeviceMultiviewFeaturesKHR;\n\ntypedef VkPhysicalDeviceMultiviewProperties VkPhysicalDeviceMultiviewPropertiesKHR;\n\n\n#define VK_IMG_format_pvrtc 1\n#define VK_IMG_FORMAT_PVRTC_SPEC_VERSION 1\n#define VK_IMG_FORMAT_PVRTC_EXTENSION_NAME \"VK_IMG_format_pvrtc\"\n\n\n#define VK_KHR_get_physical_device_properties2 1\n#define VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION 2\n#define VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME \"VK_KHR_get_physical_device_properties2\"\n\ntypedef VkPhysicalDeviceFeatures2 VkPhysicalDeviceFeatures2KHR;\n\ntypedef VkPhysicalDeviceProperties2 VkPhysicalDeviceProperties2KHR;\n\ntypedef VkFormatProperties2 VkFormatProperties2KHR;\n\ntypedef VkImageFormatProperties2 VkImageFormatProperties2KHR;\n\ntypedef VkPhysicalDeviceImageFormatInfo2 VkPhysicalDeviceImageFormatInfo2KHR;\n\ntypedef VkQueueFamilyProperties2 VkQueueFamilyProperties2KHR;\n\ntypedef VkPhysicalDeviceMemoryProperties2 VkPhysicalDeviceMemoryProperties2KHR;\n\ntypedef VkSparseImageFormatProperties2 VkSparseImageFormatProperties2KHR;\n\ntypedef VkPhysicalDeviceSparseImageFormatInfo2 VkPhysicalDeviceSparseImageFormatInfo2KHR;\n\ntypedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFeatures2KHR)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures);\ntypedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceProperties2KHR)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties);\ntypedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFormatProperties2KHR)(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2* pFormatProperties);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceImageFormatProperties2KHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, VkImageFormatProperties2* pImageFormatProperties);\ntypedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR)(VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties2* pQueueFamilyProperties);\ntypedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMemoryProperties2KHR)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties);\ntypedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, uint32_t* pPropertyCount, VkSparseImageFormatProperties2* pProperties);\n\n\n#define VK_KHR_device_group 1\n#define VK_KHR_DEVICE_GROUP_SPEC_VERSION 4\n#define VK_KHR_DEVICE_GROUP_EXTENSION_NAME \"VK_KHR_device_group\"\n\ntypedef VkPeerMemoryFeatureFlags VkPeerMemoryFeatureFlagsKHR;\ntypedef VkPeerMemoryFeatureFlagBits VkPeerMemoryFeatureFlagBitsKHR;\ntypedef VkMemoryAllocateFlags VkMemoryAllocateFlagsKHR;\ntypedef VkMemoryAllocateFlagBits VkMemoryAllocateFlagBitsKHR;\ntypedef VkMemoryAllocateFlagsInfo VkMemoryAllocateFlagsInfoKHR;\n\ntypedef VkDeviceGroupRenderPassBeginInfo VkDeviceGroupRenderPassBeginInfoKHR;\n\ntypedef VkDeviceGroupCommandBufferBeginInfo VkDeviceGroupCommandBufferBeginInfoKHR;\n\ntypedef VkDeviceGroupSubmitInfo VkDeviceGroupSubmitInfoKHR;\n\ntypedef VkDeviceGroupBindSparseInfo VkDeviceGroupBindSparseInfoKHR;\n\ntypedef VkBindBufferMemoryDeviceGroupInfo VkBindBufferMemoryDeviceGroupInfoKHR;\n\ntypedef VkBindImageMemoryDeviceGroupInfo VkBindImageMemoryDeviceGroupInfoKHR;\n\ntypedef void (VKAPI_PTR *PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR)(VkDevice device, uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, VkPeerMemoryFeatureFlags* pPeerMemoryFeatures);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetDeviceMaskKHR)(VkCommandBuffer commandBuffer, uint32_t deviceMask);\ntypedef void (VKAPI_PTR *PFN_vkCmdDispatchBaseKHR)(VkCommandBuffer commandBuffer, uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ);\n\n\n#define VK_KHR_shader_draw_parameters 1\n#define VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION 1\n#define VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME \"VK_KHR_shader_draw_parameters\"\n\n\n#define VK_EXT_shader_subgroup_ballot 1\n#define VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION 1\n#define VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME \"VK_EXT_shader_subgroup_ballot\"\n\n\n#define VK_EXT_shader_subgroup_vote 1\n#define VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION 1\n#define VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME \"VK_EXT_shader_subgroup_vote\"\n\n\n#define VK_EXT_texture_compression_astc_hdr 1\n#define VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION 1\n#define VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME \"VK_EXT_texture_compression_astc_hdr\"\n\ntypedef VkPhysicalDeviceTextureCompressionASTCHDRFeatures VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT;\n\n\n#define VK_EXT_astc_decode_mode 1\n#define VK_EXT_ASTC_DECODE_MODE_SPEC_VERSION 1\n#define VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME \"VK_EXT_astc_decode_mode\"\n\ntypedef struct VkImageViewASTCDecodeModeEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkFormat decodeMode;\n} VkImageViewASTCDecodeModeEXT;\n\ntypedef struct VkPhysicalDeviceASTCDecodeFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 decodeModeSharedExponent;\n} VkPhysicalDeviceASTCDecodeFeaturesEXT;\n\n\n#define VK_EXT_pipeline_robustness 1\n#define VK_EXT_PIPELINE_ROBUSTNESS_SPEC_VERSION 1\n#define VK_EXT_PIPELINE_ROBUSTNESS_EXTENSION_NAME \"VK_EXT_pipeline_robustness\"\n\ntypedef VkPipelineRobustnessBufferBehavior VkPipelineRobustnessBufferBehaviorEXT;\ntypedef VkPipelineRobustnessImageBehavior VkPipelineRobustnessImageBehaviorEXT;\ntypedef VkPhysicalDevicePipelineRobustnessFeatures VkPhysicalDevicePipelineRobustnessFeaturesEXT;\n\ntypedef VkPhysicalDevicePipelineRobustnessProperties VkPhysicalDevicePipelineRobustnessPropertiesEXT;\n\ntypedef VkPipelineRobustnessCreateInfo VkPipelineRobustnessCreateInfoEXT;\n\n\n#define VK_KHR_maintenance1 1\n#define VK_KHR_MAINTENANCE_1_SPEC_VERSION 2\n#define VK_KHR_MAINTENANCE_1_EXTENSION_NAME \"VK_KHR_maintenance1\"\n\ntypedef VkCommandPoolTrimFlags VkCommandPoolTrimFlagsKHR;\ntypedef void (VKAPI_PTR *PFN_vkTrimCommandPoolKHR)(VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags);\n\n\n#define VK_KHR_device_group_creation 1\n#define VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION 1\n#define VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME \"VK_KHR_device_group_creation\"\n\ntypedef VkPhysicalDeviceGroupProperties VkPhysicalDeviceGroupPropertiesKHR;\n\ntypedef VkDeviceGroupDeviceCreateInfo VkDeviceGroupDeviceCreateInfoKHR;\n\ntypedef VkResult (VKAPI_PTR *PFN_vkEnumeratePhysicalDeviceGroupsKHR)(VkInstance instance, uint32_t* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties);\n\n\n#define VK_KHR_external_memory_capabilities 1\n#define VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION 1\n#define VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME \"VK_KHR_external_memory_capabilities\"\n\ntypedef VkExternalMemoryHandleTypeFlags VkExternalMemoryHandleTypeFlagsKHR;\ntypedef VkExternalMemoryHandleTypeFlagBits VkExternalMemoryHandleTypeFlagBitsKHR;\ntypedef VkExternalMemoryFeatureFlags VkExternalMemoryFeatureFlagsKHR;\ntypedef VkExternalMemoryFeatureFlagBits VkExternalMemoryFeatureFlagBitsKHR;\ntypedef VkExternalMemoryProperties VkExternalMemoryPropertiesKHR;\n\ntypedef VkPhysicalDeviceExternalImageFormatInfo VkPhysicalDeviceExternalImageFormatInfoKHR;\n\ntypedef VkExternalImageFormatProperties VkExternalImageFormatPropertiesKHR;\n\ntypedef VkPhysicalDeviceExternalBufferInfo VkPhysicalDeviceExternalBufferInfoKHR;\n\ntypedef VkExternalBufferProperties VkExternalBufferPropertiesKHR;\n\ntypedef VkPhysicalDeviceIDProperties VkPhysicalDeviceIDPropertiesKHR;\n\ntypedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VkExternalBufferProperties* pExternalBufferProperties);\n\n\n#define VK_NV_external_memory_capabilities 1\n#define VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION 1\n#define VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME \"VK_NV_external_memory_capabilities\"\n\n\ntypedef enum\n{\n    VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV = 0x00000001,\n    VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV = 0x00000002,\n    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV = 0x00000004,\n    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV = 0x00000008,\n    VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF\n} VkExternalMemoryHandleTypeFlagBitsNV;\ntypedef VkFlags VkExternalMemoryHandleTypeFlagsNV;\n\ntypedef enum\n{\n    VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV = 0x00000001,\n    VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV = 0x00000002,\n    VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV = 0x00000004,\n    VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF\n} VkExternalMemoryFeatureFlagBitsNV;\ntypedef VkFlags VkExternalMemoryFeatureFlagsNV;\n\ntypedef struct VkExternalImageFormatPropertiesNV\n{\n    VkImageFormatProperties imageFormatProperties;\n    VkExternalMemoryFeatureFlagsNV externalMemoryFeatures;\n    VkExternalMemoryHandleTypeFlagsNV exportFromImportedHandleTypes;\n    VkExternalMemoryHandleTypeFlagsNV compatibleHandleTypes;\n} VkExternalImageFormatPropertiesNV;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkExternalMemoryHandleTypeFlagsNV externalHandleType, VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties);\n\n\n#define VK_KHR_external_memory 1\n#define VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION 1\n#define VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME \"VK_KHR_external_memory\"\n\ntypedef VkExternalMemoryImageCreateInfo VkExternalMemoryImageCreateInfoKHR;\n\ntypedef VkExternalMemoryBufferCreateInfo VkExternalMemoryBufferCreateInfoKHR;\n\ntypedef VkExportMemoryAllocateInfo VkExportMemoryAllocateInfoKHR;\n\n\n#define VK_NV_external_memory 1\n#define VK_NV_EXTERNAL_MEMORY_SPEC_VERSION 1\n#define VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME \"VK_NV_external_memory\"\n\ntypedef struct VkExternalMemoryImageCreateInfoNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkExternalMemoryHandleTypeFlagsNV handleTypes;\n} VkExternalMemoryImageCreateInfoNV;\n\ntypedef struct VkExportMemoryAllocateInfoNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkExternalMemoryHandleTypeFlagsNV handleTypes;\n} VkExportMemoryAllocateInfoNV;\n\n\n#define VK_KHR_external_memory_fd 1\n#define VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION 1\n#define VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME \"VK_KHR_external_memory_fd\"\n\ntypedef struct VkImportMemoryFdInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkExternalMemoryHandleTypeFlagBits handleType;\n    int fd;\n} VkImportMemoryFdInfoKHR;\n\ntypedef struct VkMemoryFdPropertiesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t memoryTypeBits;\n} VkMemoryFdPropertiesKHR;\n\ntypedef struct VkMemoryGetFdInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkDeviceMemory memory;\n    VkExternalMemoryHandleTypeFlagBits handleType;\n} VkMemoryGetFdInfoKHR;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkGetMemoryFdKHR)(VkDevice device, const VkMemoryGetFdInfoKHR* pGetFdInfo, int* pFd);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetMemoryFdPropertiesKHR)(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, int fd, VkMemoryFdPropertiesKHR* pMemoryFdProperties);\n\n\n#define VK_KHR_external_semaphore_capabilities 1\n#define VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION 1\n#define VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME \"VK_KHR_external_semaphore_capabilities\"\n\ntypedef VkExternalSemaphoreHandleTypeFlags VkExternalSemaphoreHandleTypeFlagsKHR;\ntypedef VkExternalSemaphoreHandleTypeFlagBits VkExternalSemaphoreHandleTypeFlagBitsKHR;\ntypedef VkExternalSemaphoreFeatureFlags VkExternalSemaphoreFeatureFlagsKHR;\ntypedef VkExternalSemaphoreFeatureFlagBits VkExternalSemaphoreFeatureFlagBitsKHR;\ntypedef VkPhysicalDeviceExternalSemaphoreInfo VkPhysicalDeviceExternalSemaphoreInfoKHR;\n\ntypedef VkExternalSemaphoreProperties VkExternalSemaphorePropertiesKHR;\n\ntypedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties);\n\n\n#define VK_KHR_external_semaphore 1\n#define VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION 1\n#define VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME \"VK_KHR_external_semaphore\"\n\ntypedef VkSemaphoreImportFlags VkSemaphoreImportFlagsKHR;\ntypedef VkSemaphoreImportFlagBits VkSemaphoreImportFlagBitsKHR;\ntypedef VkExportSemaphoreCreateInfo VkExportSemaphoreCreateInfoKHR;\n\n\n#define VK_KHR_external_semaphore_fd 1\n#define VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION 1\n#define VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME \"VK_KHR_external_semaphore_fd\"\n\ntypedef struct VkImportSemaphoreFdInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkSemaphore semaphore;\n    VkSemaphoreImportFlags flags;\n    VkExternalSemaphoreHandleTypeFlagBits handleType;\n    int fd;\n} VkImportSemaphoreFdInfoKHR;\n\ntypedef struct VkSemaphoreGetFdInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkSemaphore semaphore;\n    VkExternalSemaphoreHandleTypeFlagBits handleType;\n} VkSemaphoreGetFdInfoKHR;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkImportSemaphoreFdKHR)(VkDevice device, const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreFdKHR)(VkDevice device, const VkSemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd);\n\n\n#define VK_KHR_push_descriptor 1\n#define VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION 2\n#define VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME \"VK_KHR_push_descriptor\"\n\ntypedef VkPhysicalDevicePushDescriptorProperties VkPhysicalDevicePushDescriptorPropertiesKHR;\n\ntypedef void (VKAPI_PTR *PFN_vkCmdPushDescriptorSetKHR)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites);\ntypedef void (VKAPI_PTR *PFN_vkCmdPushDescriptorSetWithTemplateKHR)(VkCommandBuffer commandBuffer, VkDescriptorUpdateTemplate descriptorUpdateTemplate, VkPipelineLayout layout, uint32_t set, const void* pData);\n\n\n#define VK_EXT_conditional_rendering 1\n#define VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION 2\n#define VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME \"VK_EXT_conditional_rendering\"\n\n\ntypedef enum\n{\n    VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 0x00000001,\n    VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF\n} VkConditionalRenderingFlagBitsEXT;\ntypedef VkFlags VkConditionalRenderingFlagsEXT;\n\ntypedef struct VkConditionalRenderingBeginInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkBuffer buffer;\n    VkDeviceSize offset;\n    VkConditionalRenderingFlagsEXT flags;\n} VkConditionalRenderingBeginInfoEXT;\n\ntypedef struct VkPhysicalDeviceConditionalRenderingFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 conditionalRendering;\n    VkBool32 inheritedConditionalRendering;\n} VkPhysicalDeviceConditionalRenderingFeaturesEXT;\n\ntypedef struct VkCommandBufferInheritanceConditionalRenderingInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkBool32 conditionalRenderingEnable;\n} VkCommandBufferInheritanceConditionalRenderingInfoEXT;\n\n\ntypedef void (VKAPI_PTR *PFN_vkCmdBeginConditionalRenderingEXT)(VkCommandBuffer commandBuffer, const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin);\ntypedef void (VKAPI_PTR *PFN_vkCmdEndConditionalRenderingEXT)(VkCommandBuffer commandBuffer);\n\n\n#define VK_KHR_shader_float16_int8 1\n#define VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION 1\n#define VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME \"VK_KHR_shader_float16_int8\"\n\ntypedef VkPhysicalDeviceShaderFloat16Int8Features VkPhysicalDeviceShaderFloat16Int8FeaturesKHR;\n\ntypedef VkPhysicalDeviceShaderFloat16Int8Features VkPhysicalDeviceFloat16Int8FeaturesKHR;\n\n\n#define VK_AMD_gpu_shader_half_float 1\n#define VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION 2\n#define VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME \"VK_AMD_gpu_shader_half_float\"\n\n\n#define VK_KHR_16bit_storage 1\n#define VK_KHR_16BIT_STORAGE_SPEC_VERSION 1\n#define VK_KHR_16BIT_STORAGE_EXTENSION_NAME \"VK_KHR_16bit_storage\"\n\ntypedef VkPhysicalDevice16BitStorageFeatures VkPhysicalDevice16BitStorageFeaturesKHR;\n\n\n#define VK_KHR_incremental_present 1\n#define VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION 2\n#define VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME \"VK_KHR_incremental_present\"\n\ntypedef struct VkRectLayerKHR\n{\n    VkOffset2D offset;\n    VkExtent2D extent;\n    uint32_t layer;\n} VkRectLayerKHR;\n\ntypedef struct VkPresentRegionKHR\n{\n    uint32_t rectangleCount;\n    const VkRectLayerKHR* pRectangles;\n} VkPresentRegionKHR;\n\ntypedef struct VkPresentRegionsKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t swapchainCount;\n    const VkPresentRegionKHR* pRegions;\n} VkPresentRegionsKHR;\n\n\n#define VK_KHR_descriptor_update_template 1\n#define VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION 1\n#define VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME \"VK_KHR_descriptor_update_template\"\n\ntypedef VkDescriptorUpdateTemplate VkDescriptorUpdateTemplateKHR;\ntypedef VkDescriptorUpdateTemplateCreateFlags VkDescriptorUpdateTemplateCreateFlagsKHR;\ntypedef VkDescriptorUpdateTemplateType VkDescriptorUpdateTemplateTypeKHR;\ntypedef VkDescriptorUpdateTemplateEntry VkDescriptorUpdateTemplateEntryKHR;\n\ntypedef VkDescriptorUpdateTemplateCreateInfo VkDescriptorUpdateTemplateCreateInfoKHR;\n\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateDescriptorUpdateTemplateKHR)(VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate);\ntypedef void (VKAPI_PTR *PFN_vkDestroyDescriptorUpdateTemplateKHR)(VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator);\ntypedef void (VKAPI_PTR *PFN_vkUpdateDescriptorSetWithTemplateKHR)(VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData);\n\n\n#define VK_NV_clip_space_w_scaling 1\n#define VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION 1\n#define VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME \"VK_NV_clip_space_w_scaling\"\n\ntypedef struct VkViewportWScalingNV\n{\n    float xcoeff;\n    float ycoeff;\n} VkViewportWScalingNV;\n\ntypedef struct VkPipelineViewportWScalingStateCreateInfoNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkBool32 viewportWScalingEnable;\n    uint32_t viewportCount;\n    const VkViewportWScalingNV* pViewportWScalings;\n} VkPipelineViewportWScalingStateCreateInfoNV;\n\n\ntypedef void (VKAPI_PTR *PFN_vkCmdSetViewportWScalingNV)(VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkViewportWScalingNV* pViewportWScalings);\n\n\n#define VK_EXT_direct_mode_display 1\n#define VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION 1\n#define VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME \"VK_EXT_direct_mode_display\"\n\ntypedef VkResult (VKAPI_PTR *PFN_vkReleaseDisplayEXT)(VkPhysicalDevice physicalDevice, VkDisplayKHR display);\n\n\n#define VK_EXT_display_surface_counter 1\n#define VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION 1\n#define VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME \"VK_EXT_display_surface_counter\"\n\n\ntypedef enum\n{\n    VK_SURFACE_COUNTER_VBLANK_BIT_EXT = 0x00000001,\n    VK_SURFACE_COUNTER_VBLANK_EXT = VK_SURFACE_COUNTER_VBLANK_BIT_EXT,\n    VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF\n} VkSurfaceCounterFlagBitsEXT;\ntypedef VkFlags VkSurfaceCounterFlagsEXT;\n\ntypedef struct VkSurfaceCapabilities2EXT\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t minImageCount;\n    uint32_t maxImageCount;\n    VkExtent2D currentExtent;\n    VkExtent2D minImageExtent;\n    VkExtent2D maxImageExtent;\n    uint32_t maxImageArrayLayers;\n    VkSurfaceTransformFlagsKHR supportedTransforms;\n    VkSurfaceTransformFlagBitsKHR currentTransform;\n    VkCompositeAlphaFlagsKHR supportedCompositeAlpha;\n    VkImageUsageFlags supportedUsageFlags;\n    VkSurfaceCounterFlagsEXT supportedSurfaceCounters;\n} VkSurfaceCapabilities2EXT;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilities2EXT* pSurfaceCapabilities);\n\n\n#define VK_EXT_display_control 1\n#define VK_EXT_DISPLAY_CONTROL_SPEC_VERSION 1\n#define VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME \"VK_EXT_display_control\"\n\ntypedef enum\n{\n    VK_DISPLAY_POWER_STATE_OFF_EXT = 0,\n    VK_DISPLAY_POWER_STATE_SUSPEND_EXT = 1,\n    VK_DISPLAY_POWER_STATE_ON_EXT = 2,\n    VK_DISPLAY_POWER_STATE_MAX_ENUM_EXT = 0x7FFFFFFF\n} VkDisplayPowerStateEXT;\n\ntypedef enum\n{\n    VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0,\n    VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF\n} VkDeviceEventTypeEXT;\n\ntypedef enum\n{\n    VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0,\n    VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF\n} VkDisplayEventTypeEXT;\n\n\ntypedef struct VkDisplayPowerInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkDisplayPowerStateEXT powerState;\n} VkDisplayPowerInfoEXT;\n\ntypedef struct VkDeviceEventInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkDeviceEventTypeEXT deviceEvent;\n} VkDeviceEventInfoEXT;\n\ntypedef struct VkDisplayEventInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkDisplayEventTypeEXT displayEvent;\n} VkDisplayEventInfoEXT;\n\ntypedef struct VkSwapchainCounterCreateInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkSurfaceCounterFlagsEXT surfaceCounters;\n} VkSwapchainCounterCreateInfoEXT;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkDisplayPowerControlEXT)(VkDevice device, VkDisplayKHR display, const VkDisplayPowerInfoEXT* pDisplayPowerInfo);\ntypedef VkResult (VKAPI_PTR *PFN_vkRegisterDeviceEventEXT)(VkDevice device, const VkDeviceEventInfoEXT* pDeviceEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence);\ntypedef VkResult (VKAPI_PTR *PFN_vkRegisterDisplayEventEXT)(VkDevice device, VkDisplayKHR display, const VkDisplayEventInfoEXT* pDisplayEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainCounterEXT)(VkDevice device, VkSwapchainKHR swapchain, VkSurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue);\n\n\n#define VK_GOOGLE_display_timing 1\n#define VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION 1\n#define VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME \"VK_GOOGLE_display_timing\"\n\ntypedef struct VkRefreshCycleDurationGOOGLE\n{\n    uint64_t refreshDuration;\n} VkRefreshCycleDurationGOOGLE;\n\ntypedef struct VkPastPresentationTimingGOOGLE\n{\n    uint32_t presentID;\n    uint64_t desiredPresentTime;\n    uint64_t actualPresentTime;\n    uint64_t earliestPresentTime;\n    uint64_t presentMargin;\n} VkPastPresentationTimingGOOGLE;\n\ntypedef struct VkPresentTimeGOOGLE\n{\n    uint32_t presentID;\n    uint64_t desiredPresentTime;\n} VkPresentTimeGOOGLE;\n\ntypedef struct VkPresentTimesInfoGOOGLE\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t swapchainCount;\n    const VkPresentTimeGOOGLE* pTimes;\n} VkPresentTimesInfoGOOGLE;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkGetRefreshCycleDurationGOOGLE)(VkDevice device, VkSwapchainKHR swapchain, VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetPastPresentationTimingGOOGLE)(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pPresentationTimingCount, VkPastPresentationTimingGOOGLE* pPresentationTimings);\n\n\n#define VK_NV_sample_mask_override_coverage 1\n#define VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION 1\n#define VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME \"VK_NV_sample_mask_override_coverage\"\n\n\n#define VK_NV_geometry_shader_passthrough 1\n#define VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION 1\n#define VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME \"VK_NV_geometry_shader_passthrough\"\n\n\n#define VK_NV_viewport_array2 1\n#define VK_NV_VIEWPORT_ARRAY_2_SPEC_VERSION 1\n#define VK_NV_VIEWPORT_ARRAY_2_EXTENSION_NAME \"VK_NV_viewport_array2\"\n\n\n#define VK_NVX_multiview_per_view_attributes 1\n#define VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION 1\n#define VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME \"VK_NVX_multiview_per_view_attributes\"\n\ntypedef struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 perViewPositionAllComponents;\n} VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX;\n\ntypedef struct VkMultiviewPerViewAttributesInfoNVX\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkBool32 perViewAttributes;\n    VkBool32 perViewAttributesPositionXOnly;\n} VkMultiviewPerViewAttributesInfoNVX;\n\n\n#define VK_NV_viewport_swizzle 1\n#define VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION 1\n#define VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME \"VK_NV_viewport_swizzle\"\n\ntypedef enum\n{\n    VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV = 0,\n    VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV = 1,\n    VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV = 2,\n    VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV = 3,\n    VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV = 4,\n    VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV = 5,\n    VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV = 6,\n    VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV = 7,\n    VK_VIEWPORT_COORDINATE_SWIZZLE_MAX_ENUM_NV = 0x7FFFFFFF\n} VkViewportCoordinateSwizzleNV;\n\ntypedef VkFlags VkPipelineViewportSwizzleStateCreateFlagsNV;\n\ntypedef struct VkViewportSwizzleNV\n{\n    VkViewportCoordinateSwizzleNV x;\n    VkViewportCoordinateSwizzleNV y;\n    VkViewportCoordinateSwizzleNV z;\n    VkViewportCoordinateSwizzleNV w;\n} VkViewportSwizzleNV;\n\ntypedef struct VkPipelineViewportSwizzleStateCreateInfoNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkPipelineViewportSwizzleStateCreateFlagsNV flags;\n    uint32_t viewportCount;\n    const VkViewportSwizzleNV* pViewportSwizzles;\n} VkPipelineViewportSwizzleStateCreateInfoNV;\n\n\n#define VK_EXT_discard_rectangles 1\n#define VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION 2\n#define VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME \"VK_EXT_discard_rectangles\"\n\ntypedef VkFlags VkPipelineDiscardRectangleStateCreateFlagsEXT;\ntypedef enum\n{\n    VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = 0,\n    VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = 1,\n    VK_DISCARD_RECTANGLE_MODE_MAX_ENUM_EXT = 0x7FFFFFFF\n} VkDiscardRectangleModeEXT;\n\n\ntypedef struct VkPhysicalDeviceDiscardRectanglePropertiesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t maxDiscardRectangles;\n} VkPhysicalDeviceDiscardRectanglePropertiesEXT;\n\ntypedef struct VkPipelineDiscardRectangleStateCreateInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkPipelineDiscardRectangleStateCreateFlagsEXT flags;\n    VkDiscardRectangleModeEXT discardRectangleMode;\n    uint32_t discardRectangleCount;\n    const VkRect2D* pDiscardRectangles;\n} VkPipelineDiscardRectangleStateCreateInfoEXT;\n\n\ntypedef void (VKAPI_PTR *PFN_vkCmdSetDiscardRectangleEXT)(VkCommandBuffer commandBuffer, uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const VkRect2D* pDiscardRectangles);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetDiscardRectangleEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 discardRectangleEnable);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetDiscardRectangleModeEXT)(VkCommandBuffer commandBuffer, VkDiscardRectangleModeEXT discardRectangleMode);\n\n\n#define VK_EXT_conservative_rasterization 1\n#define VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION 1\n#define VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME \"VK_EXT_conservative_rasterization\"\n\ntypedef VkFlags VkPipelineRasterizationConservativeStateCreateFlagsEXT;\ntypedef enum\n{\n    VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT = 0,\n    VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT = 1,\n    VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT = 2,\n    VK_CONSERVATIVE_RASTERIZATION_MODE_MAX_ENUM_EXT = 0x7FFFFFFF\n} VkConservativeRasterizationModeEXT;\n\n\ntypedef struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    float primitiveOverestimationSize;\n    float maxExtraPrimitiveOverestimationSize;\n    float extraPrimitiveOverestimationSizeGranularity;\n    VkBool32 primitiveUnderestimation;\n    VkBool32 conservativePointAndLineRasterization;\n    VkBool32 degenerateTrianglesRasterized;\n    VkBool32 degenerateLinesRasterized;\n    VkBool32 fullyCoveredFragmentShaderInputVariable;\n    VkBool32 conservativeRasterizationPostDepthCoverage;\n} VkPhysicalDeviceConservativeRasterizationPropertiesEXT;\n\ntypedef struct VkPipelineRasterizationConservativeStateCreateInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkPipelineRasterizationConservativeStateCreateFlagsEXT flags;\n    VkConservativeRasterizationModeEXT conservativeRasterizationMode;\n    float extraPrimitiveOverestimationSize;\n} VkPipelineRasterizationConservativeStateCreateInfoEXT;\n\n\n#define VK_EXT_depth_clip_enable 1\n#define VK_EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION 1\n#define VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME \"VK_EXT_depth_clip_enable\"\n\ntypedef VkFlags VkPipelineRasterizationDepthClipStateCreateFlagsEXT;\ntypedef struct VkPhysicalDeviceDepthClipEnableFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 depthClipEnable;\n} VkPhysicalDeviceDepthClipEnableFeaturesEXT;\n\ntypedef struct VkPipelineRasterizationDepthClipStateCreateInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkPipelineRasterizationDepthClipStateCreateFlagsEXT flags;\n    VkBool32 depthClipEnable;\n} VkPipelineRasterizationDepthClipStateCreateInfoEXT;\n\n\n#define VK_EXT_swapchain_colorspace 1\n#define VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION 5\n#define VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME \"VK_EXT_swapchain_colorspace\"\n\n\n#define VK_EXT_hdr_metadata 1\n#define VK_EXT_HDR_METADATA_SPEC_VERSION 3\n#define VK_EXT_HDR_METADATA_EXTENSION_NAME \"VK_EXT_hdr_metadata\"\n\ntypedef struct VkXYColorEXT\n{\n    float x;\n    float y;\n} VkXYColorEXT;\n\ntypedef struct VkHdrMetadataEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkXYColorEXT displayPrimaryRed;\n    VkXYColorEXT displayPrimaryGreen;\n    VkXYColorEXT displayPrimaryBlue;\n    VkXYColorEXT whitePoint;\n    float maxLuminance;\n    float minLuminance;\n    float maxContentLightLevel;\n    float maxFrameAverageLightLevel;\n} VkHdrMetadataEXT;\n\n\ntypedef void (VKAPI_PTR *PFN_vkSetHdrMetadataEXT)(VkDevice device, uint32_t swapchainCount, const VkSwapchainKHR* pSwapchains, const VkHdrMetadataEXT* pMetadata);\n\n\n#define VK_KHR_imageless_framebuffer 1\n#define VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION 1\n#define VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME \"VK_KHR_imageless_framebuffer\"\n\ntypedef VkPhysicalDeviceImagelessFramebufferFeatures VkPhysicalDeviceImagelessFramebufferFeaturesKHR;\n\ntypedef VkFramebufferAttachmentsCreateInfo VkFramebufferAttachmentsCreateInfoKHR;\n\ntypedef VkFramebufferAttachmentImageInfo VkFramebufferAttachmentImageInfoKHR;\n\ntypedef VkRenderPassAttachmentBeginInfo VkRenderPassAttachmentBeginInfoKHR;\n\n\n#define VK_KHR_create_renderpass2 1\n#define VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION 1\n#define VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME \"VK_KHR_create_renderpass2\"\n\ntypedef VkRenderPassCreateInfo2 VkRenderPassCreateInfo2KHR;\n\ntypedef VkAttachmentDescription2 VkAttachmentDescription2KHR;\n\ntypedef VkAttachmentReference2 VkAttachmentReference2KHR;\n\ntypedef VkSubpassDescription2 VkSubpassDescription2KHR;\n\ntypedef VkSubpassDependency2 VkSubpassDependency2KHR;\n\ntypedef VkSubpassBeginInfo VkSubpassBeginInfoKHR;\n\ntypedef VkSubpassEndInfo VkSubpassEndInfoKHR;\n\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateRenderPass2KHR)(VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass);\ntypedef void (VKAPI_PTR *PFN_vkCmdBeginRenderPass2KHR)(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, const VkSubpassBeginInfo* pSubpassBeginInfo);\ntypedef void (VKAPI_PTR *PFN_vkCmdNextSubpass2KHR)(VkCommandBuffer commandBuffer, const VkSubpassBeginInfo* pSubpassBeginInfo, const VkSubpassEndInfo* pSubpassEndInfo);\ntypedef void (VKAPI_PTR *PFN_vkCmdEndRenderPass2KHR)(VkCommandBuffer commandBuffer, const VkSubpassEndInfo* pSubpassEndInfo);\n\n\n#define VK_IMG_relaxed_line_rasterization 1\n#define VK_IMG_RELAXED_LINE_RASTERIZATION_SPEC_VERSION 1\n#define VK_IMG_RELAXED_LINE_RASTERIZATION_EXTENSION_NAME \"VK_IMG_relaxed_line_rasterization\"\n\ntypedef struct VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 relaxedLineRasterization;\n} VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG;\n\n\n#define VK_KHR_shared_presentable_image 1\n#define VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION 1\n#define VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME \"VK_KHR_shared_presentable_image\"\n\ntypedef struct VkSharedPresentSurfaceCapabilitiesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkImageUsageFlags sharedPresentSupportedUsageFlags;\n} VkSharedPresentSurfaceCapabilitiesKHR;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainStatusKHR)(VkDevice device, VkSwapchainKHR swapchain);\n\n\n#define VK_KHR_external_fence_capabilities 1\n#define VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION 1\n#define VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME \"VK_KHR_external_fence_capabilities\"\n\ntypedef VkExternalFenceHandleTypeFlags VkExternalFenceHandleTypeFlagsKHR;\ntypedef VkExternalFenceHandleTypeFlagBits VkExternalFenceHandleTypeFlagBitsKHR;\ntypedef VkExternalFenceFeatureFlags VkExternalFenceFeatureFlagsKHR;\ntypedef VkExternalFenceFeatureFlagBits VkExternalFenceFeatureFlagBitsKHR;\ntypedef VkPhysicalDeviceExternalFenceInfo VkPhysicalDeviceExternalFenceInfoKHR;\n\ntypedef VkExternalFenceProperties VkExternalFencePropertiesKHR;\n\ntypedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties);\n\n\n#define VK_KHR_external_fence 1\n#define VK_KHR_EXTERNAL_FENCE_SPEC_VERSION 1\n#define VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME \"VK_KHR_external_fence\"\n\ntypedef VkFenceImportFlags VkFenceImportFlagsKHR;\ntypedef VkFenceImportFlagBits VkFenceImportFlagBitsKHR;\ntypedef VkExportFenceCreateInfo VkExportFenceCreateInfoKHR;\n\n\n#define VK_KHR_external_fence_fd 1\n#define VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION 1\n#define VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME \"VK_KHR_external_fence_fd\"\n\ntypedef struct VkImportFenceFdInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkFence fence;\n    VkFenceImportFlags flags;\n    VkExternalFenceHandleTypeFlagBits handleType;\n    int fd;\n} VkImportFenceFdInfoKHR;\n\ntypedef struct VkFenceGetFdInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkFence fence;\n    VkExternalFenceHandleTypeFlagBits handleType;\n} VkFenceGetFdInfoKHR;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkImportFenceFdKHR)(VkDevice device, const VkImportFenceFdInfoKHR* pImportFenceFdInfo);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetFenceFdKHR)(VkDevice device, const VkFenceGetFdInfoKHR* pGetFdInfo, int* pFd);\n\n\n#define VK_KHR_performance_query 1\n#define VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION 1\n#define VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME \"VK_KHR_performance_query\"\n\ntypedef enum\n{\n    VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR = 0,\n    VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR = 1,\n    VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR = 2,\n    VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR = 3,\n    VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR = 4,\n    VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR = 5,\n    VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR = 6,\n    VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR = 7,\n    VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR = 8,\n    VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR = 9,\n    VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR = 10,\n    VK_PERFORMANCE_COUNTER_UNIT_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkPerformanceCounterUnitKHR;\n\ntypedef enum\n{\n    VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR = 0,\n    VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR = 1,\n    VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR = 2,\n    VK_QUERY_SCOPE_COMMAND_BUFFER_KHR = VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR,\n    VK_QUERY_SCOPE_RENDER_PASS_KHR = VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR,\n    VK_QUERY_SCOPE_COMMAND_KHR = VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR,\n    VK_PERFORMANCE_COUNTER_SCOPE_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkPerformanceCounterScopeKHR;\n\ntypedef enum\n{\n    VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR = 0,\n    VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR = 1,\n    VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR = 2,\n    VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR = 3,\n    VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR = 4,\n    VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR = 5,\n    VK_PERFORMANCE_COUNTER_STORAGE_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkPerformanceCounterStorageKHR;\n\n\ntypedef enum\n{\n    VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR = 0x00000001,\n    VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR = VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR,\n    VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR = 0x00000002,\n    VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR = VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR,\n    VK_PERFORMANCE_COUNTER_DESCRIPTION_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkPerformanceCounterDescriptionFlagBitsKHR;\ntypedef VkFlags VkPerformanceCounterDescriptionFlagsKHR;\n\ntypedef enum\n{\n    VK_ACQUIRE_PROFILING_LOCK_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkAcquireProfilingLockFlagBitsKHR;\ntypedef VkFlags VkAcquireProfilingLockFlagsKHR;\n\ntypedef struct VkPhysicalDevicePerformanceQueryFeaturesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 performanceCounterQueryPools;\n    VkBool32 performanceCounterMultipleQueryPools;\n} VkPhysicalDevicePerformanceQueryFeaturesKHR;\n\ntypedef struct VkPhysicalDevicePerformanceQueryPropertiesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 allowCommandBufferQueryCopies;\n} VkPhysicalDevicePerformanceQueryPropertiesKHR;\n\ntypedef struct VkPerformanceCounterKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkPerformanceCounterUnitKHR unit;\n    VkPerformanceCounterScopeKHR scope;\n    VkPerformanceCounterStorageKHR storage;\n    uint8_t uuid[VK_UUID_SIZE];\n} VkPerformanceCounterKHR;\n\ntypedef struct VkPerformanceCounterDescriptionKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkPerformanceCounterDescriptionFlagsKHR flags;\n    char name[VK_MAX_DESCRIPTION_SIZE];\n    char category[VK_MAX_DESCRIPTION_SIZE];\n    char description[VK_MAX_DESCRIPTION_SIZE];\n} VkPerformanceCounterDescriptionKHR;\n\ntypedef struct VkQueryPoolPerformanceCreateInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t queueFamilyIndex;\n    uint32_t counterIndexCount;\n    const uint32_t* pCounterIndices;\n} VkQueryPoolPerformanceCreateInfoKHR;\n\ntypedef union VkPerformanceCounterResultKHR\n{\n    int32_t int32;\n    int64_t int64;\n    uint32_t uint32;\n    uint64_t uint64;\n    float float32;\n    double float64;\n} VkPerformanceCounterResultKHR;\n\ntypedef struct VkAcquireProfilingLockInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkAcquireProfilingLockFlagsKHR flags;\n    uint64_t timeout;\n} VkAcquireProfilingLockInfoKHR;\n\ntypedef struct VkPerformanceQuerySubmitInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t counterPassIndex;\n} VkPerformanceQuerySubmitInfoKHR;\n\ntypedef struct VkPerformanceQueryReservationInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t maxPerformanceQueriesPerPool;\n} VkPerformanceQueryReservationInfoKHR;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, uint32_t* pCounterCount, VkPerformanceCounterKHR* pCounters, VkPerformanceCounterDescriptionKHR* pCounterDescriptions);\ntypedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR)(VkPhysicalDevice physicalDevice, const VkQueryPoolPerformanceCreateInfoKHR* pPerformanceQueryCreateInfo, uint32_t* pNumPasses);\ntypedef VkResult (VKAPI_PTR *PFN_vkAcquireProfilingLockKHR)(VkDevice device, const VkAcquireProfilingLockInfoKHR* pInfo);\ntypedef void (VKAPI_PTR *PFN_vkReleaseProfilingLockKHR)(VkDevice device);\n\n\n#define VK_KHR_maintenance2 1\n#define VK_KHR_MAINTENANCE_2_SPEC_VERSION 1\n#define VK_KHR_MAINTENANCE_2_EXTENSION_NAME \"VK_KHR_maintenance2\"\n\ntypedef VkPointClippingBehavior VkPointClippingBehaviorKHR;\ntypedef VkTessellationDomainOrigin VkTessellationDomainOriginKHR;\ntypedef VkPhysicalDevicePointClippingProperties VkPhysicalDevicePointClippingPropertiesKHR;\n\ntypedef VkRenderPassInputAttachmentAspectCreateInfo VkRenderPassInputAttachmentAspectCreateInfoKHR;\n\ntypedef VkInputAttachmentAspectReference VkInputAttachmentAspectReferenceKHR;\n\ntypedef VkImageViewUsageCreateInfo VkImageViewUsageCreateInfoKHR;\n\ntypedef VkPipelineTessellationDomainOriginStateCreateInfo VkPipelineTessellationDomainOriginStateCreateInfoKHR;\n\n\n#define VK_KHR_get_surface_capabilities2 1\n#define VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION 1\n#define VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME \"VK_KHR_get_surface_capabilities2\"\n\ntypedef struct VkPhysicalDeviceSurfaceInfo2KHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkSurfaceKHR surface;\n} VkPhysicalDeviceSurfaceInfo2KHR;\n\ntypedef struct VkSurfaceCapabilities2KHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkSurfaceCapabilitiesKHR surfaceCapabilities;\n} VkSurfaceCapabilities2KHR;\n\ntypedef struct VkSurfaceFormat2KHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkSurfaceFormatKHR surfaceFormat;\n} VkSurfaceFormat2KHR;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkSurfaceCapabilities2KHR* pSurfaceCapabilities);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceFormats2KHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pSurfaceFormatCount, VkSurfaceFormat2KHR* pSurfaceFormats);\n\n\n#define VK_KHR_variable_pointers 1\n#define VK_KHR_VARIABLE_POINTERS_SPEC_VERSION 1\n#define VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME \"VK_KHR_variable_pointers\"\n\ntypedef VkPhysicalDeviceVariablePointersFeatures VkPhysicalDeviceVariablePointerFeaturesKHR;\n\ntypedef VkPhysicalDeviceVariablePointersFeatures VkPhysicalDeviceVariablePointersFeaturesKHR;\n\n\n#define VK_KHR_get_display_properties2 1\n#define VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION 1\n#define VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME \"VK_KHR_get_display_properties2\"\n\ntypedef struct VkDisplayProperties2KHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkDisplayPropertiesKHR displayProperties;\n} VkDisplayProperties2KHR;\n\ntypedef struct VkDisplayPlaneProperties2KHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkDisplayPlanePropertiesKHR displayPlaneProperties;\n} VkDisplayPlaneProperties2KHR;\n\ntypedef struct VkDisplayModeProperties2KHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkDisplayModePropertiesKHR displayModeProperties;\n} VkDisplayModeProperties2KHR;\n\ntypedef struct VkDisplayPlaneInfo2KHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkDisplayModeKHR mode;\n    uint32_t planeIndex;\n} VkDisplayPlaneInfo2KHR;\n\ntypedef struct VkDisplayPlaneCapabilities2KHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkDisplayPlaneCapabilitiesKHR capabilities;\n} VkDisplayPlaneCapabilities2KHR;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayProperties2KHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayProperties2KHR* pProperties);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPlaneProperties2KHR* pProperties);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetDisplayModeProperties2KHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t* pPropertyCount, VkDisplayModeProperties2KHR* pProperties);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneCapabilities2KHR)(VkPhysicalDevice physicalDevice, const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo, VkDisplayPlaneCapabilities2KHR* pCapabilities);\n\n\n#define VK_EXT_external_memory_dma_buf 1\n#define VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION 1\n#define VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME \"VK_EXT_external_memory_dma_buf\"\n\n\n#define VK_EXT_queue_family_foreign 1\n#define VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION 1\n#define VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME \"VK_EXT_queue_family_foreign\"\n\n#define VK_QUEUE_FAMILY_FOREIGN_EXT (~2U)\n\n\n#define VK_KHR_dedicated_allocation 1\n#define VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION 3\n#define VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME \"VK_KHR_dedicated_allocation\"\n\ntypedef VkMemoryDedicatedRequirements VkMemoryDedicatedRequirementsKHR;\n\ntypedef VkMemoryDedicatedAllocateInfo VkMemoryDedicatedAllocateInfoKHR;\n\n\n#define VK_NV_dedicated_allocation 1\n#define VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION 1\n#define VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME \"VK_NV_dedicated_allocation\"\n\ntypedef struct VkDedicatedAllocationImageCreateInfoNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkBool32 dedicatedAllocation;\n} VkDedicatedAllocationImageCreateInfoNV;\n\ntypedef struct VkDedicatedAllocationBufferCreateInfoNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkBool32 dedicatedAllocation;\n} VkDedicatedAllocationBufferCreateInfoNV;\n\ntypedef struct VkDedicatedAllocationMemoryAllocateInfoNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkImage image;\n    VkBuffer buffer;\n} VkDedicatedAllocationMemoryAllocateInfoNV;\n\n\n#define VK_EXT_debug_utils 1\n#define VK_EXT_DEBUG_UTILS_SPEC_VERSION 2\n#define VK_EXT_DEBUG_UTILS_EXTENSION_NAME \"VK_EXT_debug_utils\"\n\nVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDebugUtilsMessengerEXT)\n\n\ntypedef enum\n{\n    VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT = 0x00000001,\n    VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT = 0x00000002,\n    VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT = 0x00000004,\n    VK_DEBUG_UTILS_MESSAGE_TYPE_DEVICE_ADDRESS_BINDING_BIT_EXT = 0x00000008,\n    VK_DEBUG_UTILS_MESSAGE_TYPE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF\n} VkDebugUtilsMessageTypeFlagBitsEXT;\ntypedef VkFlags VkDebugUtilsMessageTypeFlagsEXT;\ntypedef VkFlags VkDebugUtilsMessengerCallbackDataFlagsEXT;\n\ntypedef enum\n{\n    VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT = 0x00000001,\n    VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT = 0x00000010,\n    VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT = 0x00000100,\n    VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT = 0x00001000,\n    VK_DEBUG_UTILS_MESSAGE_SEVERITY_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF\n} VkDebugUtilsMessageSeverityFlagBitsEXT;\ntypedef VkFlags VkDebugUtilsMessageSeverityFlagsEXT;\ntypedef VkFlags VkDebugUtilsMessengerCreateFlagsEXT;\n\ntypedef struct VkDebugUtilsLabelEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    const char* pLabelName;\n    float color[4];\n} VkDebugUtilsLabelEXT;\n\ntypedef struct VkDebugUtilsObjectNameInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkObjectType objectType;\n    uint64_t objectHandle;\n    const char* pObjectName;\n} VkDebugUtilsObjectNameInfoEXT;\n\ntypedef struct VkDebugUtilsMessengerCallbackDataEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkDebugUtilsMessengerCallbackDataFlagsEXT flags;\n    const char* pMessageIdName;\n    int32_t messageIdNumber;\n    const char* pMessage;\n    uint32_t queueLabelCount;\n    const VkDebugUtilsLabelEXT* pQueueLabels;\n    uint32_t cmdBufLabelCount;\n    const VkDebugUtilsLabelEXT* pCmdBufLabels;\n    uint32_t objectCount;\n    const VkDebugUtilsObjectNameInfoEXT* pObjects;\n} VkDebugUtilsMessengerCallbackDataEXT;\n\ntypedef VkBool32 (VKAPI_PTR *PFN_vkDebugUtilsMessengerCallbackEXT)(VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, VkDebugUtilsMessageTypeFlagsEXT messageTypes, const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData, void* pUserData);\n\ntypedef struct VkDebugUtilsMessengerCreateInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkDebugUtilsMessengerCreateFlagsEXT flags;\n    VkDebugUtilsMessageSeverityFlagsEXT messageSeverity;\n    VkDebugUtilsMessageTypeFlagsEXT messageType;\n    PFN_vkDebugUtilsMessengerCallbackEXT pfnUserCallback;\n    void* pUserData;\n} VkDebugUtilsMessengerCreateInfoEXT;\n\ntypedef struct VkDebugUtilsObjectTagInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkObjectType objectType;\n    uint64_t objectHandle;\n    uint64_t tagName;\n    size_t tagSize;\n    const void* pTag;\n} VkDebugUtilsObjectTagInfoEXT;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkSetDebugUtilsObjectNameEXT)(VkDevice device, const VkDebugUtilsObjectNameInfoEXT* pNameInfo);\ntypedef VkResult (VKAPI_PTR *PFN_vkSetDebugUtilsObjectTagEXT)(VkDevice device, const VkDebugUtilsObjectTagInfoEXT* pTagInfo);\ntypedef void (VKAPI_PTR *PFN_vkQueueBeginDebugUtilsLabelEXT)(VkQueue queue, const VkDebugUtilsLabelEXT* pLabelInfo);\ntypedef void (VKAPI_PTR *PFN_vkQueueEndDebugUtilsLabelEXT)(VkQueue queue);\ntypedef void (VKAPI_PTR *PFN_vkQueueInsertDebugUtilsLabelEXT)(VkQueue queue, const VkDebugUtilsLabelEXT* pLabelInfo);\ntypedef void (VKAPI_PTR *PFN_vkCmdBeginDebugUtilsLabelEXT)(VkCommandBuffer commandBuffer, const VkDebugUtilsLabelEXT* pLabelInfo);\ntypedef void (VKAPI_PTR *PFN_vkCmdEndDebugUtilsLabelEXT)(VkCommandBuffer commandBuffer);\ntypedef void (VKAPI_PTR *PFN_vkCmdInsertDebugUtilsLabelEXT)(VkCommandBuffer commandBuffer, const VkDebugUtilsLabelEXT* pLabelInfo);\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateDebugUtilsMessengerEXT)(VkInstance instance, const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugUtilsMessengerEXT* pMessenger);\ntypedef void (VKAPI_PTR *PFN_vkDestroyDebugUtilsMessengerEXT)(VkInstance instance, VkDebugUtilsMessengerEXT messenger, const VkAllocationCallbacks* pAllocator);\ntypedef void (VKAPI_PTR *PFN_vkSubmitDebugUtilsMessageEXT)(VkInstance instance, VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, VkDebugUtilsMessageTypeFlagsEXT messageTypes, const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData);\n\n\n#define VK_EXT_debug_marker 1\n#define VK_EXT_DEBUG_MARKER_SPEC_VERSION 4\n#define VK_EXT_DEBUG_MARKER_EXTENSION_NAME \"VK_EXT_debug_marker\"\n\ntypedef enum\n{\n    VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT = 0,\n    VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT = 1,\n    VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT = 2,\n    VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT = 3,\n    VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT = 4,\n    VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT = 5,\n    VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT = 6,\n    VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT = 7,\n    VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT = 8,\n    VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT = 9,\n    VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT = 10,\n    VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT = 11,\n    VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT = 12,\n    VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT = 13,\n    VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT = 14,\n    VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT = 15,\n    VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT = 16,\n    VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT = 17,\n    VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT = 18,\n    VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT = 19,\n    VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT = 20,\n    VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT = 21,\n    VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT = 22,\n    VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT = 23,\n    VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT = 24,\n    VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT = 25,\n    VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT = 26,\n    VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT = 27,\n    VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT = 28,\n    VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT,\n    VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT = 29,\n    VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT = 30,\n    VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT = 33,\n    VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT,\n    VK_DEBUG_REPORT_OBJECT_TYPE_CU_MODULE_NVX_EXT = 1000029000,\n    VK_DEBUG_REPORT_OBJECT_TYPE_CU_FUNCTION_NVX_EXT = 1000029001,\n    VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT = 1000156000,\n    VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT = 1000085000,\n    VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT = 1000150000,\n    VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT = 1000165000,\n    VK_DEBUG_REPORT_OBJECT_TYPE_CUDA_MODULE_NV_EXT = 1000307000,\n    VK_DEBUG_REPORT_OBJECT_TYPE_CUDA_FUNCTION_NV_EXT = 1000307001,\n    VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA_EXT = 1000366000,\n    VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT,\n    VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT,\n    VK_DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF\n} VkDebugReportObjectTypeEXT;\n\n\ntypedef struct VkDebugMarkerObjectNameInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkDebugReportObjectTypeEXT objectType;\n    uint64_t object;\n    const char* pObjectName;\n} VkDebugMarkerObjectNameInfoEXT;\n\ntypedef struct VkDebugMarkerObjectTagInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkDebugReportObjectTypeEXT objectType;\n    uint64_t object;\n    uint64_t tagName;\n    size_t tagSize;\n    const void* pTag;\n} VkDebugMarkerObjectTagInfoEXT;\n\ntypedef struct VkDebugMarkerMarkerInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    const char* pMarkerName;\n    float color[4];\n} VkDebugMarkerMarkerInfoEXT;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkDebugMarkerSetObjectTagEXT)(VkDevice device, const VkDebugMarkerObjectTagInfoEXT* pTagInfo);\ntypedef VkResult (VKAPI_PTR *PFN_vkDebugMarkerSetObjectNameEXT)(VkDevice device, const VkDebugMarkerObjectNameInfoEXT* pNameInfo);\ntypedef void (VKAPI_PTR *PFN_vkCmdDebugMarkerBeginEXT)(VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo);\ntypedef void (VKAPI_PTR *PFN_vkCmdDebugMarkerEndEXT)(VkCommandBuffer commandBuffer);\ntypedef void (VKAPI_PTR *PFN_vkCmdDebugMarkerInsertEXT)(VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo);\n\n\n#define VK_EXT_debug_report 1\n#define VK_EXT_DEBUG_REPORT_SPEC_VERSION 10\n#define VK_EXT_DEBUG_REPORT_EXTENSION_NAME \"VK_EXT_debug_report\"\n\nVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDebugReportCallbackEXT)\n\n\ntypedef enum\n{\n    VK_DEBUG_REPORT_INFORMATION_BIT_EXT = 0x00000001,\n    VK_DEBUG_REPORT_WARNING_BIT_EXT = 0x00000002,\n    VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT = 0x00000004,\n    VK_DEBUG_REPORT_ERROR_BIT_EXT = 0x00000008,\n    VK_DEBUG_REPORT_DEBUG_BIT_EXT = 0x00000010,\n    VK_DEBUG_REPORT_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF\n} VkDebugReportFlagBitsEXT;\ntypedef VkFlags VkDebugReportFlagsEXT;\n\ntypedef VkBool32 (VKAPI_PTR *PFN_vkDebugReportCallbackEXT)(VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objectType, uint64_t object, size_t location, int32_t messageCode, const char* pLayerPrefix, const char* pMessage, void* pUserData);\n\ntypedef struct VkDebugReportCallbackCreateInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkDebugReportFlagsEXT flags;\n    PFN_vkDebugReportCallbackEXT pfnCallback;\n    void* pUserData;\n} VkDebugReportCallbackCreateInfoEXT;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateDebugReportCallbackEXT)(VkInstance instance, const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugReportCallbackEXT* pCallback);\ntypedef void (VKAPI_PTR *PFN_vkDestroyDebugReportCallbackEXT)(VkInstance instance, VkDebugReportCallbackEXT callback, const VkAllocationCallbacks* pAllocator);\ntypedef void (VKAPI_PTR *PFN_vkDebugReportMessageEXT)(VkInstance instance, VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objectType, uint64_t object, size_t location, int32_t messageCode, const char* pLayerPrefix, const char* pMessage);\n\n\n#define VK_EXT_sampler_filter_minmax 1\n#define VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION 2\n#define VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME \"VK_EXT_sampler_filter_minmax\"\n\ntypedef VkSamplerReductionMode VkSamplerReductionModeEXT;\ntypedef VkSamplerReductionModeCreateInfo VkSamplerReductionModeCreateInfoEXT;\n\ntypedef VkPhysicalDeviceSamplerFilterMinmaxProperties VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT;\n\n\n#define VK_KHR_storage_buffer_storage_class 1\n#define VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION 1\n#define VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME \"VK_KHR_storage_buffer_storage_class\"\n\n\n#define VK_AMD_gpu_shader_int16 1\n#define VK_AMD_GPU_SHADER_INT16_SPEC_VERSION 2\n#define VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME \"VK_AMD_gpu_shader_int16\"\n\n\n#define VK_EXT_descriptor_heap 1\n#define VK_EXT_DESCRIPTOR_HEAP_SPEC_VERSION 1\n#define VK_EXT_DESCRIPTOR_HEAP_EXTENSION_NAME \"VK_EXT_descriptor_heap\"\n\nVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkTensorARM)\n\n\ntypedef VkFlags64 VkTensorViewCreateFlagBitsARM;\nstatic const VkTensorViewCreateFlagBitsARM VK_TENSOR_VIEW_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_ARM = 0x00000001;\ntypedef VkFlags64 VkTensorViewCreateFlagsARM;\ntypedef enum\n{\n    VK_DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_CONSTANT_OFFSET_EXT = 0,\n    VK_DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT = 1,\n    VK_DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT = 2,\n    VK_DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT = 3,\n    VK_DESCRIPTOR_MAPPING_SOURCE_RESOURCE_HEAP_DATA_EXT = 4,\n    VK_DESCRIPTOR_MAPPING_SOURCE_PUSH_DATA_EXT = 5,\n    VK_DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT = 6,\n    VK_DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT = 7,\n    VK_DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT = 8,\n    VK_DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_DATA_EXT = 9,\n    VK_DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT = 10,\n    VK_DESCRIPTOR_MAPPING_SOURCE_MAX_ENUM_EXT = 0x7FFFFFFF\n} VkDescriptorMappingSourceEXT;\n\n\ntypedef enum\n{\n    VK_SPIRV_RESOURCE_TYPE_ALL_EXT = 0x7FFFFFFF,\n    VK_SPIRV_RESOURCE_TYPE_SAMPLER_BIT_EXT = 0x00000001,\n    VK_SPIRV_RESOURCE_TYPE_SAMPLED_IMAGE_BIT_EXT = 0x00000002,\n    VK_SPIRV_RESOURCE_TYPE_READ_ONLY_IMAGE_BIT_EXT = 0x00000004,\n    VK_SPIRV_RESOURCE_TYPE_READ_WRITE_IMAGE_BIT_EXT = 0x00000008,\n    VK_SPIRV_RESOURCE_TYPE_COMBINED_SAMPLED_IMAGE_BIT_EXT = 0x00000010,\n    VK_SPIRV_RESOURCE_TYPE_UNIFORM_BUFFER_BIT_EXT = 0x00000020,\n    VK_SPIRV_RESOURCE_TYPE_READ_ONLY_STORAGE_BUFFER_BIT_EXT = 0x00000040,\n    VK_SPIRV_RESOURCE_TYPE_READ_WRITE_STORAGE_BUFFER_BIT_EXT = 0x00000080,\n    VK_SPIRV_RESOURCE_TYPE_ACCELERATION_STRUCTURE_BIT_EXT = 0x00000100,\n    VK_SPIRV_RESOURCE_TYPE_TENSOR_BIT_ARM = 0x00000200,\n    VK_SPIRV_RESOURCE_TYPE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF\n} VkSpirvResourceTypeFlagBitsEXT;\ntypedef VkFlags VkSpirvResourceTypeFlagsEXT;\n\ntypedef struct VkHostAddressRangeEXT\n{\n    void* address;\n    size_t size;\n} VkHostAddressRangeEXT;\n\ntypedef struct VkHostAddressRangeConstEXT\n{\n    const void* address;\n    size_t size;\n} VkHostAddressRangeConstEXT;\n\ntypedef struct VkDeviceAddressRangeEXT\n{\n    VkDeviceAddress address;\n    VkDeviceSize size;\n} VkDeviceAddressRangeEXT;\n\ntypedef struct VkTexelBufferDescriptorInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkFormat format;\n    VkDeviceAddressRangeEXT addressRange;\n} VkTexelBufferDescriptorInfoEXT;\n\ntypedef struct VkImageDescriptorInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    const VkImageViewCreateInfo* pView;\n    VkImageLayout layout;\n} VkImageDescriptorInfoEXT;\n\ntypedef struct VkTensorViewCreateInfoARM\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkTensorViewCreateFlagsARM flags;\n    VkTensorARM tensor;\n    VkFormat format;\n} VkTensorViewCreateInfoARM;\n\ntypedef union VkResourceDescriptorDataEXT\n{\n    const VkImageDescriptorInfoEXT* pImage;\n    const VkTexelBufferDescriptorInfoEXT* pTexelBuffer;\n    const VkDeviceAddressRangeEXT* pAddressRange;\n    const VkTensorViewCreateInfoARM* pTensorARM;\n} VkResourceDescriptorDataEXT;\n\ntypedef struct VkResourceDescriptorInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkDescriptorType type;\n    VkResourceDescriptorDataEXT data;\n} VkResourceDescriptorInfoEXT;\n\ntypedef struct VkBindHeapInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkDeviceAddressRangeEXT heapRange;\n    VkDeviceSize reservedRangeOffset;\n    VkDeviceSize reservedRangeSize;\n} VkBindHeapInfoEXT;\n\ntypedef struct VkPushDataInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t offset;\n    VkHostAddressRangeConstEXT data;\n} VkPushDataInfoEXT;\n\ntypedef struct VkDescriptorMappingSourceConstantOffsetEXT\n{\n    uint32_t heapOffset;\n    uint32_t heapArrayStride;\n    const VkSamplerCreateInfo* pEmbeddedSampler;\n    uint32_t samplerHeapOffset;\n    uint32_t samplerHeapArrayStride;\n} VkDescriptorMappingSourceConstantOffsetEXT;\n\ntypedef struct VkDescriptorMappingSourcePushIndexEXT\n{\n    uint32_t heapOffset;\n    uint32_t pushOffset;\n    uint32_t heapIndexStride;\n    uint32_t heapArrayStride;\n    const VkSamplerCreateInfo* pEmbeddedSampler;\n    VkBool32 useCombinedImageSamplerIndex;\n    uint32_t samplerHeapOffset;\n    uint32_t samplerPushOffset;\n    uint32_t samplerHeapIndexStride;\n    uint32_t samplerHeapArrayStride;\n} VkDescriptorMappingSourcePushIndexEXT;\n\ntypedef struct VkDescriptorMappingSourceIndirectIndexEXT\n{\n    uint32_t heapOffset;\n    uint32_t pushOffset;\n    uint32_t addressOffset;\n    uint32_t heapIndexStride;\n    uint32_t heapArrayStride;\n    const VkSamplerCreateInfo* pEmbeddedSampler;\n    VkBool32 useCombinedImageSamplerIndex;\n    uint32_t samplerHeapOffset;\n    uint32_t samplerPushOffset;\n    uint32_t samplerAddressOffset;\n    uint32_t samplerHeapIndexStride;\n    uint32_t samplerHeapArrayStride;\n} VkDescriptorMappingSourceIndirectIndexEXT;\n\ntypedef struct VkDescriptorMappingSourceHeapDataEXT\n{\n    uint32_t heapOffset;\n    uint32_t pushOffset;\n} VkDescriptorMappingSourceHeapDataEXT;\n\ntypedef struct VkDescriptorMappingSourceIndirectAddressEXT\n{\n    uint32_t pushOffset;\n    uint32_t addressOffset;\n} VkDescriptorMappingSourceIndirectAddressEXT;\n\ntypedef struct VkDescriptorMappingSourceShaderRecordIndexEXT\n{\n    uint32_t heapOffset;\n    uint32_t shaderRecordOffset;\n    uint32_t heapIndexStride;\n    uint32_t heapArrayStride;\n    const VkSamplerCreateInfo* pEmbeddedSampler;\n    VkBool32 useCombinedImageSamplerIndex;\n    uint32_t samplerHeapOffset;\n    uint32_t samplerShaderRecordOffset;\n    uint32_t samplerHeapIndexStride;\n    uint32_t samplerHeapArrayStride;\n} VkDescriptorMappingSourceShaderRecordIndexEXT;\n\ntypedef struct VkDescriptorMappingSourceIndirectIndexArrayEXT\n{\n    uint32_t heapOffset;\n    uint32_t pushOffset;\n    uint32_t addressOffset;\n    uint32_t heapIndexStride;\n    const VkSamplerCreateInfo* pEmbeddedSampler;\n    VkBool32 useCombinedImageSamplerIndex;\n    uint32_t samplerHeapOffset;\n    uint32_t samplerPushOffset;\n    uint32_t samplerAddressOffset;\n    uint32_t samplerHeapIndexStride;\n} VkDescriptorMappingSourceIndirectIndexArrayEXT;\n\ntypedef union VkDescriptorMappingSourceDataEXT\n{\n    VkDescriptorMappingSourceConstantOffsetEXT constantOffset;\n    VkDescriptorMappingSourcePushIndexEXT pushIndex;\n    VkDescriptorMappingSourceIndirectIndexEXT indirectIndex;\n    VkDescriptorMappingSourceIndirectIndexArrayEXT indirectIndexArray;\n    VkDescriptorMappingSourceHeapDataEXT heapData;\n    uint32_t pushDataOffset;\n    uint32_t pushAddressOffset;\n    VkDescriptorMappingSourceIndirectAddressEXT indirectAddress;\n    VkDescriptorMappingSourceShaderRecordIndexEXT shaderRecordIndex;\n    uint32_t shaderRecordDataOffset;\n    uint32_t shaderRecordAddressOffset;\n} VkDescriptorMappingSourceDataEXT;\n\ntypedef struct VkDescriptorSetAndBindingMappingEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t descriptorSet;\n    uint32_t firstBinding;\n    uint32_t bindingCount;\n    VkSpirvResourceTypeFlagsEXT resourceMask;\n    VkDescriptorMappingSourceEXT source;\n    VkDescriptorMappingSourceDataEXT sourceData;\n} VkDescriptorSetAndBindingMappingEXT;\n\ntypedef struct VkShaderDescriptorSetAndBindingMappingInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t mappingCount;\n    const VkDescriptorSetAndBindingMappingEXT* pMappings;\n} VkShaderDescriptorSetAndBindingMappingInfoEXT;\n\ntypedef struct VkOpaqueCaptureDataCreateInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    const VkHostAddressRangeConstEXT* pData;\n} VkOpaqueCaptureDataCreateInfoEXT;\n\ntypedef struct VkPhysicalDeviceDescriptorHeapFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 descriptorHeap;\n    VkBool32 descriptorHeapCaptureReplay;\n} VkPhysicalDeviceDescriptorHeapFeaturesEXT;\n\ntypedef struct VkPhysicalDeviceDescriptorHeapPropertiesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkDeviceSize samplerHeapAlignment;\n    VkDeviceSize resourceHeapAlignment;\n    VkDeviceSize maxSamplerHeapSize;\n    VkDeviceSize maxResourceHeapSize;\n    VkDeviceSize minSamplerHeapReservedRange;\n    VkDeviceSize minSamplerHeapReservedRangeWithEmbedded;\n    VkDeviceSize minResourceHeapReservedRange;\n    VkDeviceSize samplerDescriptorSize;\n    VkDeviceSize imageDescriptorSize;\n    VkDeviceSize bufferDescriptorSize;\n    VkDeviceSize samplerDescriptorAlignment;\n    VkDeviceSize imageDescriptorAlignment;\n    VkDeviceSize bufferDescriptorAlignment;\n    VkDeviceSize maxPushDataSize;\n    size_t imageCaptureReplayOpaqueDataSize;\n    uint32_t maxDescriptorHeapEmbeddedSamplers;\n    uint32_t samplerYcbcrConversionCount;\n    VkBool32 sparseDescriptorHeaps;\n    VkBool32 protectedDescriptorHeaps;\n} VkPhysicalDeviceDescriptorHeapPropertiesEXT;\n\ntypedef struct VkCommandBufferInheritanceDescriptorHeapInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    const VkBindHeapInfoEXT* pSamplerHeapBindInfo;\n    const VkBindHeapInfoEXT* pResourceHeapBindInfo;\n} VkCommandBufferInheritanceDescriptorHeapInfoEXT;\n\ntypedef struct VkSamplerCustomBorderColorIndexCreateInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t index;\n} VkSamplerCustomBorderColorIndexCreateInfoEXT;\n\ntypedef struct VkSamplerCustomBorderColorCreateInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkClearColorValue customBorderColor;\n    VkFormat format;\n} VkSamplerCustomBorderColorCreateInfoEXT;\n\ntypedef struct VkIndirectCommandsLayoutPushDataTokenNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t pushDataOffset;\n    uint32_t pushDataSize;\n} VkIndirectCommandsLayoutPushDataTokenNV;\n\ntypedef struct VkSubsampledImageFormatPropertiesEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t subsampledImageDescriptorCount;\n} VkSubsampledImageFormatPropertiesEXT;\n\ntypedef struct VkPhysicalDeviceDescriptorHeapTensorPropertiesARM\n{\n    VkStructureType sType;\n    void* pNext;\n    VkDeviceSize tensorDescriptorSize;\n    VkDeviceSize tensorDescriptorAlignment;\n    size_t tensorCaptureReplayOpaqueDataSize;\n} VkPhysicalDeviceDescriptorHeapTensorPropertiesARM;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkWriteSamplerDescriptorsEXT)(VkDevice device, uint32_t samplerCount, const VkSamplerCreateInfo* pSamplers, const VkHostAddressRangeEXT* pDescriptors);\ntypedef VkResult (VKAPI_PTR *PFN_vkWriteResourceDescriptorsEXT)(VkDevice device, uint32_t resourceCount, const VkResourceDescriptorInfoEXT* pResources, const VkHostAddressRangeEXT* pDescriptors);\ntypedef void (VKAPI_PTR *PFN_vkCmdBindSamplerHeapEXT)(VkCommandBuffer commandBuffer, const VkBindHeapInfoEXT* pBindInfo);\ntypedef void (VKAPI_PTR *PFN_vkCmdBindResourceHeapEXT)(VkCommandBuffer commandBuffer, const VkBindHeapInfoEXT* pBindInfo);\ntypedef void (VKAPI_PTR *PFN_vkCmdPushDataEXT)(VkCommandBuffer commandBuffer, const VkPushDataInfoEXT* pPushDataInfo);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetImageOpaqueCaptureDataEXT)(VkDevice device, uint32_t imageCount, const VkImage* pImages, VkHostAddressRangeEXT* pDatas);\ntypedef VkDeviceSize (VKAPI_PTR *PFN_vkGetPhysicalDeviceDescriptorSizeEXT)(VkPhysicalDevice physicalDevice, VkDescriptorType descriptorType);\ntypedef VkResult (VKAPI_PTR *PFN_vkRegisterCustomBorderColorEXT)(VkDevice device, const VkSamplerCustomBorderColorCreateInfoEXT* pBorderColor, VkBool32 requestIndex, uint32_t* pIndex);\ntypedef void (VKAPI_PTR *PFN_vkUnregisterCustomBorderColorEXT)(VkDevice device, uint32_t index);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetTensorOpaqueCaptureDataARM)(VkDevice device, uint32_t tensorCount, const VkTensorARM* pTensors, VkHostAddressRangeEXT* pDatas);\n\n\n#define VK_AMD_mixed_attachment_samples 1\n#define VK_AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION 1\n#define VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME \"VK_AMD_mixed_attachment_samples\"\n\ntypedef struct VkAttachmentSampleCountInfoAMD\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t colorAttachmentCount;\n    const VkSampleCountFlagBits* pColorAttachmentSamples;\n    VkSampleCountFlagBits depthStencilAttachmentSamples;\n} VkAttachmentSampleCountInfoAMD;\n\n\n#define VK_AMD_shader_fragment_mask 1\n#define VK_AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION 1\n#define VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME \"VK_AMD_shader_fragment_mask\"\n\n\n#define VK_EXT_inline_uniform_block 1\n#define VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION 1\n#define VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME \"VK_EXT_inline_uniform_block\"\n\ntypedef VkPhysicalDeviceInlineUniformBlockFeatures VkPhysicalDeviceInlineUniformBlockFeaturesEXT;\n\ntypedef VkPhysicalDeviceInlineUniformBlockProperties VkPhysicalDeviceInlineUniformBlockPropertiesEXT;\n\ntypedef VkWriteDescriptorSetInlineUniformBlock VkWriteDescriptorSetInlineUniformBlockEXT;\n\ntypedef VkDescriptorPoolInlineUniformBlockCreateInfo VkDescriptorPoolInlineUniformBlockCreateInfoEXT;\n\n\n#define VK_EXT_shader_stencil_export 1\n#define VK_EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION 1\n#define VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME \"VK_EXT_shader_stencil_export\"\n\n\n#define VK_KHR_shader_bfloat16 1\n#define VK_KHR_SHADER_BFLOAT16_SPEC_VERSION 1\n#define VK_KHR_SHADER_BFLOAT16_EXTENSION_NAME \"VK_KHR_shader_bfloat16\"\n\ntypedef struct VkPhysicalDeviceShaderBfloat16FeaturesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 shaderBFloat16Type;\n    VkBool32 shaderBFloat16DotProduct;\n    VkBool32 shaderBFloat16CooperativeMatrix;\n} VkPhysicalDeviceShaderBfloat16FeaturesKHR;\n\n\n#define VK_EXT_sample_locations 1\n#define VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION 1\n#define VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME \"VK_EXT_sample_locations\"\n\ntypedef struct VkSampleLocationEXT\n{\n    float x;\n    float y;\n} VkSampleLocationEXT;\n\ntypedef struct VkSampleLocationsInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkSampleCountFlagBits sampleLocationsPerPixel;\n    VkExtent2D sampleLocationGridSize;\n    uint32_t sampleLocationsCount;\n    const VkSampleLocationEXT* pSampleLocations;\n} VkSampleLocationsInfoEXT;\n\ntypedef struct VkAttachmentSampleLocationsEXT\n{\n    uint32_t attachmentIndex;\n    VkSampleLocationsInfoEXT sampleLocationsInfo;\n} VkAttachmentSampleLocationsEXT;\n\ntypedef struct VkSubpassSampleLocationsEXT\n{\n    uint32_t subpassIndex;\n    VkSampleLocationsInfoEXT sampleLocationsInfo;\n} VkSubpassSampleLocationsEXT;\n\ntypedef struct VkRenderPassSampleLocationsBeginInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t attachmentInitialSampleLocationsCount;\n    const VkAttachmentSampleLocationsEXT* pAttachmentInitialSampleLocations;\n    uint32_t postSubpassSampleLocationsCount;\n    const VkSubpassSampleLocationsEXT* pPostSubpassSampleLocations;\n} VkRenderPassSampleLocationsBeginInfoEXT;\n\ntypedef struct VkPipelineSampleLocationsStateCreateInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkBool32 sampleLocationsEnable;\n    VkSampleLocationsInfoEXT sampleLocationsInfo;\n} VkPipelineSampleLocationsStateCreateInfoEXT;\n\ntypedef struct VkPhysicalDeviceSampleLocationsPropertiesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkSampleCountFlags sampleLocationSampleCounts;\n    VkExtent2D maxSampleLocationGridSize;\n    float sampleLocationCoordinateRange[2];\n    uint32_t sampleLocationSubPixelBits;\n    VkBool32 variableSampleLocations;\n} VkPhysicalDeviceSampleLocationsPropertiesEXT;\n\ntypedef struct VkMultisamplePropertiesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkExtent2D maxSampleLocationGridSize;\n} VkMultisamplePropertiesEXT;\n\n\ntypedef void (VKAPI_PTR *PFN_vkCmdSetSampleLocationsEXT)(VkCommandBuffer commandBuffer, const VkSampleLocationsInfoEXT* pSampleLocationsInfo);\ntypedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT)(VkPhysicalDevice physicalDevice, VkSampleCountFlagBits samples, VkMultisamplePropertiesEXT* pMultisampleProperties);\n\n\n#define VK_KHR_relaxed_block_layout 1\n#define VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION 1\n#define VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME \"VK_KHR_relaxed_block_layout\"\n\n\n#define VK_KHR_get_memory_requirements2 1\n#define VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION 1\n#define VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME \"VK_KHR_get_memory_requirements2\"\n\ntypedef VkBufferMemoryRequirementsInfo2 VkBufferMemoryRequirementsInfo2KHR;\n\ntypedef VkImageMemoryRequirementsInfo2 VkImageMemoryRequirementsInfo2KHR;\n\ntypedef VkImageSparseMemoryRequirementsInfo2 VkImageSparseMemoryRequirementsInfo2KHR;\n\ntypedef VkMemoryRequirements2 VkMemoryRequirements2KHR;\n\ntypedef VkSparseImageMemoryRequirements2 VkSparseImageMemoryRequirements2KHR;\n\ntypedef void (VKAPI_PTR *PFN_vkGetImageMemoryRequirements2KHR)(VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements);\ntypedef void (VKAPI_PTR *PFN_vkGetBufferMemoryRequirements2KHR)(VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements);\ntypedef void (VKAPI_PTR *PFN_vkGetImageSparseMemoryRequirements2KHR)(VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements);\n\n\n#define VK_KHR_image_format_list 1\n#define VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION 1\n#define VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME \"VK_KHR_image_format_list\"\n\ntypedef VkImageFormatListCreateInfo VkImageFormatListCreateInfoKHR;\n\n\n#define VK_EXT_blend_operation_advanced 1\n#define VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION 2\n#define VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME \"VK_EXT_blend_operation_advanced\"\n\ntypedef enum\n{\n    VK_BLEND_OVERLAP_UNCORRELATED_EXT = 0,\n    VK_BLEND_OVERLAP_DISJOINT_EXT = 1,\n    VK_BLEND_OVERLAP_CONJOINT_EXT = 2,\n    VK_BLEND_OVERLAP_MAX_ENUM_EXT = 0x7FFFFFFF\n} VkBlendOverlapEXT;\n\n\ntypedef struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 advancedBlendCoherentOperations;\n} VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT;\n\ntypedef struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t advancedBlendMaxColorAttachments;\n    VkBool32 advancedBlendIndependentBlend;\n    VkBool32 advancedBlendNonPremultipliedSrcColor;\n    VkBool32 advancedBlendNonPremultipliedDstColor;\n    VkBool32 advancedBlendCorrelatedOverlap;\n    VkBool32 advancedBlendAllOperations;\n} VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT;\n\ntypedef struct VkPipelineColorBlendAdvancedStateCreateInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkBool32 srcPremultiplied;\n    VkBool32 dstPremultiplied;\n    VkBlendOverlapEXT blendOverlap;\n} VkPipelineColorBlendAdvancedStateCreateInfoEXT;\n\n\n#define VK_NV_fragment_coverage_to_color 1\n#define VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION 1\n#define VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME \"VK_NV_fragment_coverage_to_color\"\n\ntypedef VkFlags VkPipelineCoverageToColorStateCreateFlagsNV;\ntypedef struct VkPipelineCoverageToColorStateCreateInfoNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkPipelineCoverageToColorStateCreateFlagsNV flags;\n    VkBool32 coverageToColorEnable;\n    uint32_t coverageToColorLocation;\n} VkPipelineCoverageToColorStateCreateInfoNV;\n\n\n#define VK_KHR_acceleration_structure 1\n#define VK_KHR_ACCELERATION_STRUCTURE_SPEC_VERSION 13\n#define VK_KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME \"VK_KHR_acceleration_structure\"\n\nVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkAccelerationStructureKHR)\nVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDeferredOperationKHR)\n\ntypedef enum\n{\n    VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR = 0,\n    VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR = 1,\n    VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR = 2,\n    VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV = VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR,\n    VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV = VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR,\n    VK_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkAccelerationStructureTypeKHR;\n\n\ntypedef enum\n{\n    VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR = 0x00000001,\n    VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR = 0x00000002,\n    VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR = 0x00000004,\n    VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR = 0x00000008,\n    VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR = 0x00000010,\n    VK_BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV = 0x00000020,\n    VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_BIT_EXT = 0x00000040,\n    VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_BIT_EXT = 0x00000080,\n    VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_BIT_EXT = 0x00000100,\n    VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_BIT_KHR = 0x00000800,\n    VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_CLUSTER_OPACITY_MICROMAPS_BIT_NV = 0x00001000,\n    VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISPLACEMENT_MICROMAP_UPDATE_BIT_NV = 0x00000200,\n    VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV = VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR,\n    VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV = VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR,\n    VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV = VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR,\n    VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV = VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR,\n    VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV = VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR,\n    VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_EXT = VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_BIT_EXT,\n    VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_EXT = VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_BIT_EXT,\n    VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_EXT = VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_BIT_EXT,\n    VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_KHR = VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_BIT_KHR,\n    VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISPLACEMENT_MICROMAP_UPDATE_NV = VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISPLACEMENT_MICROMAP_UPDATE_BIT_NV,\n    VK_BUILD_ACCELERATION_STRUCTURE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkBuildAccelerationStructureFlagBitsKHR;\ntypedef VkFlags VkBuildAccelerationStructureFlagsKHR;\ntypedef enum\n{\n    VK_BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR = 0,\n    VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR = 1,\n    VK_BUILD_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkBuildAccelerationStructureModeKHR;\n\ntypedef enum\n{\n    VK_GEOMETRY_TYPE_TRIANGLES_KHR = 0,\n    VK_GEOMETRY_TYPE_AABBS_KHR = 1,\n    VK_GEOMETRY_TYPE_INSTANCES_KHR = 2,\n    VK_GEOMETRY_TYPE_SPHERES_NV = 1000429004,\n    VK_GEOMETRY_TYPE_LINEAR_SWEPT_SPHERES_NV = 1000429005,\n    VK_GEOMETRY_TYPE_DENSE_GEOMETRY_FORMAT_TRIANGLES_AMDX = 1000478000,\n    VK_GEOMETRY_TYPE_TRIANGLES_NV = VK_GEOMETRY_TYPE_TRIANGLES_KHR,\n    VK_GEOMETRY_TYPE_AABBS_NV = VK_GEOMETRY_TYPE_AABBS_KHR,\n    VK_GEOMETRY_TYPE_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkGeometryTypeKHR;\n\n\ntypedef enum\n{\n    VK_GEOMETRY_OPAQUE_BIT_KHR = 0x00000001,\n    VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR = 0x00000002,\n    VK_GEOMETRY_OPAQUE_BIT_NV = VK_GEOMETRY_OPAQUE_BIT_KHR,\n    VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV = VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR,\n    VK_GEOMETRY_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkGeometryFlagBitsKHR;\ntypedef VkFlags VkGeometryFlagsKHR;\ntypedef enum\n{\n    VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR = 0,\n    VK_ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR = 1,\n    VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR = 2,\n    VK_ACCELERATION_STRUCTURE_BUILD_TYPE_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkAccelerationStructureBuildTypeKHR;\n\n\ntypedef enum\n{\n    VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR = 0x00000001,\n    VK_GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR = 0x00000002,\n    VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 0x00000004,\n    VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 0x00000008,\n    VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = VK_GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR,\n    VK_GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_BIT_EXT = 0x00000010,\n    VK_GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_BIT_EXT = 0x00000020,\n    VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV = VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR,\n    VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV = VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR,\n    VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV = VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR,\n    VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV = VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR,\n    VK_GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_EXT = VK_GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_BIT_EXT,\n    VK_GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_EXT = VK_GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_BIT_EXT,\n    VK_GEOMETRY_INSTANCE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkGeometryInstanceFlagBitsKHR;\ntypedef VkFlags VkGeometryInstanceFlagsKHR;\n\ntypedef enum\n{\n    VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 0x00000001,\n    VK_ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 0x00000008,\n    VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV = 0x00000004,\n    VK_ACCELERATION_STRUCTURE_CREATE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkAccelerationStructureCreateFlagBitsKHR;\ntypedef VkFlags VkAccelerationStructureCreateFlagsKHR;\ntypedef enum\n{\n    VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR = 0,\n    VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR = 1,\n    VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR = 2,\n    VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR = 3,\n    VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV = VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR,\n    VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV = VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR,\n    VK_COPY_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkCopyAccelerationStructureModeKHR;\n\ntypedef enum\n{\n    VK_ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR = 0,\n    VK_ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR = 1,\n    VK_ACCELERATION_STRUCTURE_COMPATIBILITY_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkAccelerationStructureCompatibilityKHR;\n\n\ntypedef union VkDeviceOrHostAddressKHR\n{\n    VkDeviceAddress deviceAddress;\n    void* hostAddress;\n} VkDeviceOrHostAddressKHR;\n\ntypedef union VkDeviceOrHostAddressConstKHR\n{\n    VkDeviceAddress deviceAddress;\n    const void* hostAddress;\n} VkDeviceOrHostAddressConstKHR;\n\ntypedef struct VkAccelerationStructureBuildRangeInfoKHR\n{\n    uint32_t primitiveCount;\n    uint32_t primitiveOffset;\n    uint32_t firstVertex;\n    uint32_t transformOffset;\n} VkAccelerationStructureBuildRangeInfoKHR;\n\ntypedef struct VkAabbPositionsKHR\n{\n    float minX;\n    float minY;\n    float minZ;\n    float maxX;\n    float maxY;\n    float maxZ;\n} VkAabbPositionsKHR;\n\ntypedef struct VkAccelerationStructureGeometryTrianglesDataKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkFormat vertexFormat;\n    VkDeviceOrHostAddressConstKHR vertexData;\n    VkDeviceSize vertexStride;\n    uint32_t maxVertex;\n    VkIndexType indexType;\n    VkDeviceOrHostAddressConstKHR indexData;\n    VkDeviceOrHostAddressConstKHR transformData;\n} VkAccelerationStructureGeometryTrianglesDataKHR;\n\ntypedef struct VkTransformMatrixKHR\n{\n    float matrix[3][4];\n} VkTransformMatrixKHR;\n\ntypedef struct VkAccelerationStructureGeometryAabbsDataKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkDeviceOrHostAddressConstKHR data;\n    VkDeviceSize stride;\n} VkAccelerationStructureGeometryAabbsDataKHR;\n\ntypedef struct VkAccelerationStructureGeometryInstancesDataKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkBool32 arrayOfPointers;\n    VkDeviceOrHostAddressConstKHR data;\n} VkAccelerationStructureGeometryInstancesDataKHR;\n\ntypedef union VkAccelerationStructureGeometryDataKHR\n{\n    VkAccelerationStructureGeometryTrianglesDataKHR triangles;\n    VkAccelerationStructureGeometryAabbsDataKHR aabbs;\n    VkAccelerationStructureGeometryInstancesDataKHR instances;\n} VkAccelerationStructureGeometryDataKHR;\n\ntypedef struct VkAccelerationStructureGeometryKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkGeometryTypeKHR geometryType;\n    VkAccelerationStructureGeometryDataKHR geometry;\n    VkGeometryFlagsKHR flags;\n} VkAccelerationStructureGeometryKHR;\n\ntypedef struct VkAccelerationStructureBuildGeometryInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkAccelerationStructureTypeKHR type;\n    VkBuildAccelerationStructureFlagsKHR flags;\n    VkBuildAccelerationStructureModeKHR mode;\n    VkAccelerationStructureKHR srcAccelerationStructure;\n    VkAccelerationStructureKHR dstAccelerationStructure;\n    uint32_t geometryCount;\n    const VkAccelerationStructureGeometryKHR* pGeometries;\n    const VkAccelerationStructureGeometryKHR* const* ppGeometries;\n    VkDeviceOrHostAddressKHR scratchData;\n} VkAccelerationStructureBuildGeometryInfoKHR;\n\ntypedef struct VkAccelerationStructureInstanceKHR\n{\n    VkTransformMatrixKHR transform;\n    uint32_t instanceCustomIndex:24;\n    uint32_t mask:8;\n    uint32_t instanceShaderBindingTableRecordOffset:24;\n    VkGeometryInstanceFlagsKHR flags:8;\n    uint64_t accelerationStructureReference;\n} VkAccelerationStructureInstanceKHR;\n\ntypedef struct VkAccelerationStructureCreateInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkAccelerationStructureCreateFlagsKHR createFlags;\n    VkBuffer buffer;\n    VkDeviceSize offset;\n    VkDeviceSize size;\n    VkAccelerationStructureTypeKHR type;\n    VkDeviceAddress deviceAddress;\n} VkAccelerationStructureCreateInfoKHR;\n\ntypedef struct VkWriteDescriptorSetAccelerationStructureKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t accelerationStructureCount;\n    const VkAccelerationStructureKHR* pAccelerationStructures;\n} VkWriteDescriptorSetAccelerationStructureKHR;\n\ntypedef struct VkPhysicalDeviceAccelerationStructureFeaturesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 accelerationStructure;\n    VkBool32 accelerationStructureCaptureReplay;\n    VkBool32 accelerationStructureIndirectBuild;\n    VkBool32 accelerationStructureHostCommands;\n    VkBool32 descriptorBindingAccelerationStructureUpdateAfterBind;\n} VkPhysicalDeviceAccelerationStructureFeaturesKHR;\n\ntypedef struct VkPhysicalDeviceAccelerationStructurePropertiesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    uint64_t maxGeometryCount;\n    uint64_t maxInstanceCount;\n    uint64_t maxPrimitiveCount;\n    uint32_t maxPerStageDescriptorAccelerationStructures;\n    uint32_t maxPerStageDescriptorUpdateAfterBindAccelerationStructures;\n    uint32_t maxDescriptorSetAccelerationStructures;\n    uint32_t maxDescriptorSetUpdateAfterBindAccelerationStructures;\n    uint32_t minAccelerationStructureScratchOffsetAlignment;\n} VkPhysicalDeviceAccelerationStructurePropertiesKHR;\n\ntypedef struct VkAccelerationStructureDeviceAddressInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkAccelerationStructureKHR accelerationStructure;\n} VkAccelerationStructureDeviceAddressInfoKHR;\n\ntypedef struct VkAccelerationStructureVersionInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    const uint8_t* pVersionData;\n} VkAccelerationStructureVersionInfoKHR;\n\ntypedef struct VkCopyAccelerationStructureToMemoryInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkAccelerationStructureKHR src;\n    VkDeviceOrHostAddressKHR dst;\n    VkCopyAccelerationStructureModeKHR mode;\n} VkCopyAccelerationStructureToMemoryInfoKHR;\n\ntypedef struct VkCopyMemoryToAccelerationStructureInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkDeviceOrHostAddressConstKHR src;\n    VkAccelerationStructureKHR dst;\n    VkCopyAccelerationStructureModeKHR mode;\n} VkCopyMemoryToAccelerationStructureInfoKHR;\n\ntypedef struct VkCopyAccelerationStructureInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkAccelerationStructureKHR src;\n    VkAccelerationStructureKHR dst;\n    VkCopyAccelerationStructureModeKHR mode;\n} VkCopyAccelerationStructureInfoKHR;\n\ntypedef struct VkAccelerationStructureBuildSizesInfoKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkDeviceSize accelerationStructureSize;\n    VkDeviceSize updateScratchSize;\n    VkDeviceSize buildScratchSize;\n} VkAccelerationStructureBuildSizesInfoKHR;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateAccelerationStructureKHR)(VkDevice device, const VkAccelerationStructureCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkAccelerationStructureKHR* pAccelerationStructure);\ntypedef void (VKAPI_PTR *PFN_vkDestroyAccelerationStructureKHR)(VkDevice device, VkAccelerationStructureKHR accelerationStructure, const VkAllocationCallbacks* pAllocator);\ntypedef void (VKAPI_PTR *PFN_vkCmdBuildAccelerationStructuresKHR)(VkCommandBuffer commandBuffer, uint32_t infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos);\ntypedef void (VKAPI_PTR *PFN_vkCmdBuildAccelerationStructuresIndirectKHR)(VkCommandBuffer commandBuffer, uint32_t infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkDeviceAddress* pIndirectDeviceAddresses, const uint32_t* pIndirectStrides, const uint32_t* const* ppMaxPrimitiveCounts);\ntypedef VkResult (VKAPI_PTR *PFN_vkBuildAccelerationStructuresKHR)(VkDevice device, VkDeferredOperationKHR deferredOperation, uint32_t infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos);\ntypedef VkResult (VKAPI_PTR *PFN_vkCopyAccelerationStructureKHR)(VkDevice device, VkDeferredOperationKHR deferredOperation, const VkCopyAccelerationStructureInfoKHR* pInfo);\ntypedef VkResult (VKAPI_PTR *PFN_vkCopyAccelerationStructureToMemoryKHR)(VkDevice device, VkDeferredOperationKHR deferredOperation, const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo);\ntypedef VkResult (VKAPI_PTR *PFN_vkCopyMemoryToAccelerationStructureKHR)(VkDevice device, VkDeferredOperationKHR deferredOperation, const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo);\ntypedef VkResult (VKAPI_PTR *PFN_vkWriteAccelerationStructuresPropertiesKHR)(VkDevice device, uint32_t accelerationStructureCount, const VkAccelerationStructureKHR* pAccelerationStructures, VkQueryType queryType, size_t dataSize, void* pData, size_t stride);\ntypedef void (VKAPI_PTR *PFN_vkCmdCopyAccelerationStructureKHR)(VkCommandBuffer commandBuffer, const VkCopyAccelerationStructureInfoKHR* pInfo);\ntypedef void (VKAPI_PTR *PFN_vkCmdCopyAccelerationStructureToMemoryKHR)(VkCommandBuffer commandBuffer, const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo);\ntypedef void (VKAPI_PTR *PFN_vkCmdCopyMemoryToAccelerationStructureKHR)(VkCommandBuffer commandBuffer, const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo);\ntypedef VkDeviceAddress (VKAPI_PTR *PFN_vkGetAccelerationStructureDeviceAddressKHR)(VkDevice device, const VkAccelerationStructureDeviceAddressInfoKHR* pInfo);\ntypedef void (VKAPI_PTR *PFN_vkCmdWriteAccelerationStructuresPropertiesKHR)(VkCommandBuffer commandBuffer, uint32_t accelerationStructureCount, const VkAccelerationStructureKHR* pAccelerationStructures, VkQueryType queryType, VkQueryPool queryPool, uint32_t firstQuery);\ntypedef void (VKAPI_PTR *PFN_vkGetDeviceAccelerationStructureCompatibilityKHR)(VkDevice device, const VkAccelerationStructureVersionInfoKHR* pVersionInfo, VkAccelerationStructureCompatibilityKHR* pCompatibility);\ntypedef void (VKAPI_PTR *PFN_vkGetAccelerationStructureBuildSizesKHR)(VkDevice device, VkAccelerationStructureBuildTypeKHR buildType, const VkAccelerationStructureBuildGeometryInfoKHR* pBuildInfo, const uint32_t* pMaxPrimitiveCounts, VkAccelerationStructureBuildSizesInfoKHR* pSizeInfo);\n\n\n#define VK_KHR_ray_tracing_pipeline 1\n#define VK_KHR_RAY_TRACING_PIPELINE_SPEC_VERSION 1\n#define VK_KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME \"VK_KHR_ray_tracing_pipeline\"\n\n#define VK_SHADER_UNUSED_KHR (~0U)\n\ntypedef enum\n{\n    VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR = 0,\n    VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR = 1,\n    VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR = 2,\n    VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV = VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR,\n    VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV = VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR,\n    VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV = VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR,\n    VK_RAY_TRACING_SHADER_GROUP_TYPE_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkRayTracingShaderGroupTypeKHR;\n\ntypedef enum\n{\n    VK_SHADER_GROUP_SHADER_GENERAL_KHR = 0,\n    VK_SHADER_GROUP_SHADER_CLOSEST_HIT_KHR = 1,\n    VK_SHADER_GROUP_SHADER_ANY_HIT_KHR = 2,\n    VK_SHADER_GROUP_SHADER_INTERSECTION_KHR = 3,\n    VK_SHADER_GROUP_SHADER_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkShaderGroupShaderKHR;\n\n\ntypedef struct VkRayTracingShaderGroupCreateInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkRayTracingShaderGroupTypeKHR type;\n    uint32_t generalShader;\n    uint32_t closestHitShader;\n    uint32_t anyHitShader;\n    uint32_t intersectionShader;\n    const void* pShaderGroupCaptureReplayHandle;\n} VkRayTracingShaderGroupCreateInfoKHR;\n\ntypedef struct VkPipelineLibraryCreateInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t libraryCount;\n    const VkPipeline* pLibraries;\n} VkPipelineLibraryCreateInfoKHR;\n\ntypedef struct VkRayTracingPipelineInterfaceCreateInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t maxPipelineRayPayloadSize;\n    uint32_t maxPipelineRayHitAttributeSize;\n} VkRayTracingPipelineInterfaceCreateInfoKHR;\n\ntypedef struct VkRayTracingPipelineCreateInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkPipelineCreateFlags flags;\n    uint32_t stageCount;\n    const VkPipelineShaderStageCreateInfo* pStages;\n    uint32_t groupCount;\n    const VkRayTracingShaderGroupCreateInfoKHR* pGroups;\n    uint32_t maxPipelineRayRecursionDepth;\n    const VkPipelineLibraryCreateInfoKHR* pLibraryInfo;\n    const VkRayTracingPipelineInterfaceCreateInfoKHR* pLibraryInterface;\n    const VkPipelineDynamicStateCreateInfo* pDynamicState;\n    VkPipelineLayout layout;\n    VkPipeline basePipelineHandle;\n    int32_t basePipelineIndex;\n} VkRayTracingPipelineCreateInfoKHR;\n\ntypedef struct VkPhysicalDeviceRayTracingPipelineFeaturesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 rayTracingPipeline;\n    VkBool32 rayTracingPipelineShaderGroupHandleCaptureReplay;\n    VkBool32 rayTracingPipelineShaderGroupHandleCaptureReplayMixed;\n    VkBool32 rayTracingPipelineTraceRaysIndirect;\n    VkBool32 rayTraversalPrimitiveCulling;\n} VkPhysicalDeviceRayTracingPipelineFeaturesKHR;\n\ntypedef struct VkPhysicalDeviceRayTracingPipelinePropertiesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t shaderGroupHandleSize;\n    uint32_t maxRayRecursionDepth;\n    uint32_t maxShaderGroupStride;\n    uint32_t shaderGroupBaseAlignment;\n    uint32_t shaderGroupHandleCaptureReplaySize;\n    uint32_t maxRayDispatchInvocationCount;\n    uint32_t shaderGroupHandleAlignment;\n    uint32_t maxRayHitAttributeSize;\n} VkPhysicalDeviceRayTracingPipelinePropertiesKHR;\n\ntypedef struct VkStridedDeviceAddressRegionKHR\n{\n    VkDeviceAddress deviceAddress;\n    VkDeviceSize stride;\n    VkDeviceSize size;\n} VkStridedDeviceAddressRegionKHR;\n\ntypedef struct VkTraceRaysIndirectCommandKHR\n{\n    uint32_t width;\n    uint32_t height;\n    uint32_t depth;\n} VkTraceRaysIndirectCommandKHR;\n\n\ntypedef void (VKAPI_PTR *PFN_vkCmdTraceRaysKHR)(VkCommandBuffer commandBuffer, const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable, uint32_t width, uint32_t height, uint32_t depth);\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateRayTracingPipelinesKHR)(VkDevice device, VkDeferredOperationKHR deferredOperation, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkRayTracingPipelineCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetRayTracingShaderGroupHandlesKHR)(VkDevice device, VkPipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, void* pData);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR)(VkDevice device, VkPipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, void* pData);\ntypedef void (VKAPI_PTR *PFN_vkCmdTraceRaysIndirectKHR)(VkCommandBuffer commandBuffer, const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable, VkDeviceAddress indirectDeviceAddress);\ntypedef VkDeviceSize (VKAPI_PTR *PFN_vkGetRayTracingShaderGroupStackSizeKHR)(VkDevice device, VkPipeline pipeline, uint32_t group, VkShaderGroupShaderKHR groupShader);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetRayTracingPipelineStackSizeKHR)(VkCommandBuffer commandBuffer, uint32_t pipelineStackSize);\n\n\n#define VK_KHR_ray_query 1\n#define VK_KHR_RAY_QUERY_SPEC_VERSION 1\n#define VK_KHR_RAY_QUERY_EXTENSION_NAME \"VK_KHR_ray_query\"\n\ntypedef struct VkPhysicalDeviceRayQueryFeaturesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 rayQuery;\n} VkPhysicalDeviceRayQueryFeaturesKHR;\n\n\n#define VK_NV_framebuffer_mixed_samples 1\n#define VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION 1\n#define VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME \"VK_NV_framebuffer_mixed_samples\"\n\ntypedef VkFlags VkPipelineCoverageModulationStateCreateFlagsNV;\ntypedef enum\n{\n    VK_COVERAGE_MODULATION_MODE_NONE_NV = 0,\n    VK_COVERAGE_MODULATION_MODE_RGB_NV = 1,\n    VK_COVERAGE_MODULATION_MODE_ALPHA_NV = 2,\n    VK_COVERAGE_MODULATION_MODE_RGBA_NV = 3,\n    VK_COVERAGE_MODULATION_MODE_MAX_ENUM_NV = 0x7FFFFFFF\n} VkCoverageModulationModeNV;\n\n\ntypedef struct VkPipelineCoverageModulationStateCreateInfoNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkPipelineCoverageModulationStateCreateFlagsNV flags;\n    VkCoverageModulationModeNV coverageModulationMode;\n    VkBool32 coverageModulationTableEnable;\n    uint32_t coverageModulationTableCount;\n    const float* pCoverageModulationTable;\n} VkPipelineCoverageModulationStateCreateInfoNV;\n\ntypedef VkAttachmentSampleCountInfoAMD VkAttachmentSampleCountInfoNV;\n\n\n#define VK_NV_fill_rectangle 1\n#define VK_NV_FILL_RECTANGLE_SPEC_VERSION 1\n#define VK_NV_FILL_RECTANGLE_EXTENSION_NAME \"VK_NV_fill_rectangle\"\n\n\n#define VK_NV_shader_sm_builtins 1\n#define VK_NV_SHADER_SM_BUILTINS_SPEC_VERSION 1\n#define VK_NV_SHADER_SM_BUILTINS_EXTENSION_NAME \"VK_NV_shader_sm_builtins\"\n\ntypedef struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t shaderSMCount;\n    uint32_t shaderWarpsPerSM;\n} VkPhysicalDeviceShaderSMBuiltinsPropertiesNV;\n\ntypedef struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 shaderSMBuiltins;\n} VkPhysicalDeviceShaderSMBuiltinsFeaturesNV;\n\n\n#define VK_EXT_post_depth_coverage 1\n#define VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION 1\n#define VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME \"VK_EXT_post_depth_coverage\"\n\n\n#define VK_KHR_sampler_ycbcr_conversion 1\n#define VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION 14\n#define VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME \"VK_KHR_sampler_ycbcr_conversion\"\n\ntypedef VkSamplerYcbcrConversion VkSamplerYcbcrConversionKHR;\ntypedef VkSamplerYcbcrModelConversion VkSamplerYcbcrModelConversionKHR;\ntypedef VkSamplerYcbcrRange VkSamplerYcbcrRangeKHR;\ntypedef VkChromaLocation VkChromaLocationKHR;\ntypedef VkSamplerYcbcrConversionCreateInfo VkSamplerYcbcrConversionCreateInfoKHR;\n\ntypedef VkSamplerYcbcrConversionInfo VkSamplerYcbcrConversionInfoKHR;\n\ntypedef VkBindImagePlaneMemoryInfo VkBindImagePlaneMemoryInfoKHR;\n\ntypedef VkImagePlaneMemoryRequirementsInfo VkImagePlaneMemoryRequirementsInfoKHR;\n\ntypedef VkPhysicalDeviceSamplerYcbcrConversionFeatures VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR;\n\ntypedef VkSamplerYcbcrConversionImageFormatProperties VkSamplerYcbcrConversionImageFormatPropertiesKHR;\n\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateSamplerYcbcrConversionKHR)(VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSamplerYcbcrConversion* pYcbcrConversion);\ntypedef void (VKAPI_PTR *PFN_vkDestroySamplerYcbcrConversionKHR)(VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, const VkAllocationCallbacks* pAllocator);\n\n\n#define VK_KHR_bind_memory2 1\n#define VK_KHR_BIND_MEMORY_2_SPEC_VERSION 1\n#define VK_KHR_BIND_MEMORY_2_EXTENSION_NAME \"VK_KHR_bind_memory2\"\n\ntypedef VkBindBufferMemoryInfo VkBindBufferMemoryInfoKHR;\n\ntypedef VkBindImageMemoryInfo VkBindImageMemoryInfoKHR;\n\ntypedef VkResult (VKAPI_PTR *PFN_vkBindBufferMemory2KHR)(VkDevice device, uint32_t bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos);\ntypedef VkResult (VKAPI_PTR *PFN_vkBindImageMemory2KHR)(VkDevice device, uint32_t bindInfoCount, const VkBindImageMemoryInfo* pBindInfos);\n\n\n#define VK_EXT_image_drm_format_modifier 1\n#define VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION 2\n#define VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME \"VK_EXT_image_drm_format_modifier\"\n\ntypedef struct VkDrmFormatModifierPropertiesEXT\n{\n    uint64_t drmFormatModifier;\n    uint32_t drmFormatModifierPlaneCount;\n    VkFormatFeatureFlags drmFormatModifierTilingFeatures;\n} VkDrmFormatModifierPropertiesEXT;\n\ntypedef struct VkDrmFormatModifierPropertiesListEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t drmFormatModifierCount;\n    VkDrmFormatModifierPropertiesEXT* pDrmFormatModifierProperties;\n} VkDrmFormatModifierPropertiesListEXT;\n\ntypedef struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint64_t drmFormatModifier;\n    VkSharingMode sharingMode;\n    uint32_t queueFamilyIndexCount;\n    const uint32_t* pQueueFamilyIndices;\n} VkPhysicalDeviceImageDrmFormatModifierInfoEXT;\n\ntypedef struct VkImageDrmFormatModifierListCreateInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t drmFormatModifierCount;\n    const uint64_t* pDrmFormatModifiers;\n} VkImageDrmFormatModifierListCreateInfoEXT;\n\ntypedef struct VkImageDrmFormatModifierExplicitCreateInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint64_t drmFormatModifier;\n    uint32_t drmFormatModifierPlaneCount;\n    const VkSubresourceLayout* pPlaneLayouts;\n} VkImageDrmFormatModifierExplicitCreateInfoEXT;\n\ntypedef struct VkImageDrmFormatModifierPropertiesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    uint64_t drmFormatModifier;\n} VkImageDrmFormatModifierPropertiesEXT;\n\ntypedef struct VkDrmFormatModifierProperties2EXT\n{\n    uint64_t drmFormatModifier;\n    uint32_t drmFormatModifierPlaneCount;\n    VkFormatFeatureFlags2 drmFormatModifierTilingFeatures;\n} VkDrmFormatModifierProperties2EXT;\n\ntypedef struct VkDrmFormatModifierPropertiesList2EXT\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t drmFormatModifierCount;\n    VkDrmFormatModifierProperties2EXT* pDrmFormatModifierProperties;\n} VkDrmFormatModifierPropertiesList2EXT;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkGetImageDrmFormatModifierPropertiesEXT)(VkDevice device, VkImage image, VkImageDrmFormatModifierPropertiesEXT* pProperties);\n\n\n#define VK_EXT_validation_cache 1\n#define VK_EXT_VALIDATION_CACHE_SPEC_VERSION 1\n#define VK_EXT_VALIDATION_CACHE_EXTENSION_NAME \"VK_EXT_validation_cache\"\n\nVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkValidationCacheEXT)\n\ntypedef VkFlags VkValidationCacheCreateFlagsEXT;\ntypedef enum\n{\n    VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1,\n    VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 0x7FFFFFFF\n} VkValidationCacheHeaderVersionEXT;\n\n\ntypedef struct VkValidationCacheCreateInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkValidationCacheCreateFlagsEXT flags;\n    size_t initialDataSize;\n    const void* pInitialData;\n} VkValidationCacheCreateInfoEXT;\n\ntypedef struct VkShaderModuleValidationCacheCreateInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkValidationCacheEXT validationCache;\n} VkShaderModuleValidationCacheCreateInfoEXT;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateValidationCacheEXT)(VkDevice device, const VkValidationCacheCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkValidationCacheEXT* pValidationCache);\ntypedef void (VKAPI_PTR *PFN_vkDestroyValidationCacheEXT)(VkDevice device, VkValidationCacheEXT validationCache, const VkAllocationCallbacks* pAllocator);\ntypedef VkResult (VKAPI_PTR *PFN_vkMergeValidationCachesEXT)(VkDevice device, VkValidationCacheEXT dstCache, uint32_t srcCacheCount, const VkValidationCacheEXT* pSrcCaches);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetValidationCacheDataEXT)(VkDevice device, VkValidationCacheEXT validationCache, size_t* pDataSize, void* pData);\n\n\n#define VK_EXT_descriptor_indexing 1\n#define VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION 2\n#define VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME \"VK_EXT_descriptor_indexing\"\n\ntypedef VkDescriptorBindingFlagBits VkDescriptorBindingFlagBitsEXT;\ntypedef VkDescriptorBindingFlags VkDescriptorBindingFlagsEXT;\ntypedef VkDescriptorSetLayoutBindingFlagsCreateInfo VkDescriptorSetLayoutBindingFlagsCreateInfoEXT;\n\ntypedef VkPhysicalDeviceDescriptorIndexingFeatures VkPhysicalDeviceDescriptorIndexingFeaturesEXT;\n\ntypedef VkPhysicalDeviceDescriptorIndexingProperties VkPhysicalDeviceDescriptorIndexingPropertiesEXT;\n\ntypedef VkDescriptorSetVariableDescriptorCountAllocateInfo VkDescriptorSetVariableDescriptorCountAllocateInfoEXT;\n\ntypedef VkDescriptorSetVariableDescriptorCountLayoutSupport VkDescriptorSetVariableDescriptorCountLayoutSupportEXT;\n\n\n#define VK_EXT_shader_viewport_index_layer 1\n#define VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION 1\n#define VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME \"VK_EXT_shader_viewport_index_layer\"\n\n\n#define VK_NV_shading_rate_image 1\n#define VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION 3\n#define VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME \"VK_NV_shading_rate_image\"\n\ntypedef enum\n{\n    VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV = 0,\n    VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV = 1,\n    VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV = 2,\n    VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV = 3,\n    VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV = 4,\n    VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV = 5,\n    VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV = 6,\n    VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV = 7,\n    VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV = 8,\n    VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV = 9,\n    VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV = 10,\n    VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV = 11,\n    VK_SHADING_RATE_PALETTE_ENTRY_MAX_ENUM_NV = 0x7FFFFFFF\n} VkShadingRatePaletteEntryNV;\n\ntypedef enum\n{\n    VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV = 0,\n    VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV = 1,\n    VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV = 2,\n    VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV = 3,\n    VK_COARSE_SAMPLE_ORDER_TYPE_MAX_ENUM_NV = 0x7FFFFFFF\n} VkCoarseSampleOrderTypeNV;\n\n\ntypedef struct VkShadingRatePaletteNV\n{\n    uint32_t shadingRatePaletteEntryCount;\n    const VkShadingRatePaletteEntryNV* pShadingRatePaletteEntries;\n} VkShadingRatePaletteNV;\n\ntypedef struct VkPipelineViewportShadingRateImageStateCreateInfoNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkBool32 shadingRateImageEnable;\n    uint32_t viewportCount;\n    const VkShadingRatePaletteNV* pShadingRatePalettes;\n} VkPipelineViewportShadingRateImageStateCreateInfoNV;\n\ntypedef struct VkPhysicalDeviceShadingRateImageFeaturesNV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 shadingRateImage;\n    VkBool32 shadingRateCoarseSampleOrder;\n} VkPhysicalDeviceShadingRateImageFeaturesNV;\n\ntypedef struct VkPhysicalDeviceShadingRateImagePropertiesNV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkExtent2D shadingRateTexelSize;\n    uint32_t shadingRatePaletteSize;\n    uint32_t shadingRateMaxCoarseSamples;\n} VkPhysicalDeviceShadingRateImagePropertiesNV;\n\ntypedef struct VkCoarseSampleLocationNV\n{\n    uint32_t pixelX;\n    uint32_t pixelY;\n    uint32_t sample;\n} VkCoarseSampleLocationNV;\n\ntypedef struct VkCoarseSampleOrderCustomNV\n{\n    VkShadingRatePaletteEntryNV shadingRate;\n    uint32_t sampleCount;\n    uint32_t sampleLocationCount;\n    const VkCoarseSampleLocationNV* pSampleLocations;\n} VkCoarseSampleOrderCustomNV;\n\ntypedef struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkCoarseSampleOrderTypeNV sampleOrderType;\n    uint32_t customSampleOrderCount;\n    const VkCoarseSampleOrderCustomNV* pCustomSampleOrders;\n} VkPipelineViewportCoarseSampleOrderStateCreateInfoNV;\n\n\ntypedef void (VKAPI_PTR *PFN_vkCmdBindShadingRateImageNV)(VkCommandBuffer commandBuffer, VkImageView imageView, VkImageLayout imageLayout);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetViewportShadingRatePaletteNV)(VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkShadingRatePaletteNV* pShadingRatePalettes);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetCoarseSampleOrderNV)(VkCommandBuffer commandBuffer, VkCoarseSampleOrderTypeNV sampleOrderType, uint32_t customSampleOrderCount, const VkCoarseSampleOrderCustomNV* pCustomSampleOrders);\n\n\n#define VK_NV_ray_tracing 1\n#define VK_NV_RAY_TRACING_SPEC_VERSION 3\n#define VK_NV_RAY_TRACING_EXTENSION_NAME \"VK_NV_ray_tracing\"\n\nVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkAccelerationStructureNV)\n\ntypedef VkRayTracingShaderGroupTypeKHR VkRayTracingShaderGroupTypeNV;\ntypedef VkGeometryTypeKHR VkGeometryTypeNV;\ntypedef VkAccelerationStructureTypeKHR VkAccelerationStructureTypeNV;\ntypedef VkGeometryFlagsKHR VkGeometryFlagsNV;\ntypedef VkGeometryFlagBitsKHR VkGeometryFlagBitsNV;\ntypedef VkGeometryInstanceFlagsKHR VkGeometryInstanceFlagsNV;\ntypedef VkGeometryInstanceFlagBitsKHR VkGeometryInstanceFlagBitsNV;\ntypedef VkBuildAccelerationStructureFlagsKHR VkBuildAccelerationStructureFlagsNV;\ntypedef VkBuildAccelerationStructureFlagBitsKHR VkBuildAccelerationStructureFlagBitsNV;\ntypedef VkCopyAccelerationStructureModeKHR VkCopyAccelerationStructureModeNV;\ntypedef enum\n{\n    VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV = 0,\n    VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV = 1,\n    VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV = 2,\n    VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_MAX_ENUM_NV = 0x7FFFFFFF\n} VkAccelerationStructureMemoryRequirementsTypeNV;\n\n\ntypedef struct VkRayTracingShaderGroupCreateInfoNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkRayTracingShaderGroupTypeKHR type;\n    uint32_t generalShader;\n    uint32_t closestHitShader;\n    uint32_t anyHitShader;\n    uint32_t intersectionShader;\n} VkRayTracingShaderGroupCreateInfoNV;\n\ntypedef struct VkRayTracingPipelineCreateInfoNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkPipelineCreateFlags flags;\n    uint32_t stageCount;\n    const VkPipelineShaderStageCreateInfo* pStages;\n    uint32_t groupCount;\n    const VkRayTracingShaderGroupCreateInfoNV* pGroups;\n    uint32_t maxRecursionDepth;\n    VkPipelineLayout layout;\n    VkPipeline basePipelineHandle;\n    int32_t basePipelineIndex;\n} VkRayTracingPipelineCreateInfoNV;\n\ntypedef struct VkGeometryTrianglesNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkBuffer vertexData;\n    VkDeviceSize vertexOffset;\n    uint32_t vertexCount;\n    VkDeviceSize vertexStride;\n    VkFormat vertexFormat;\n    VkBuffer indexData;\n    VkDeviceSize indexOffset;\n    uint32_t indexCount;\n    VkIndexType indexType;\n    VkBuffer transformData;\n    VkDeviceSize transformOffset;\n} VkGeometryTrianglesNV;\n\ntypedef struct VkGeometryAABBNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkBuffer aabbData;\n    uint32_t numAABBs;\n    uint32_t stride;\n    VkDeviceSize offset;\n} VkGeometryAABBNV;\n\ntypedef struct VkGeometryDataNV\n{\n    VkGeometryTrianglesNV triangles;\n    VkGeometryAABBNV aabbs;\n} VkGeometryDataNV;\n\ntypedef struct VkGeometryNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkGeometryTypeKHR geometryType;\n    VkGeometryDataNV geometry;\n    VkGeometryFlagsKHR flags;\n} VkGeometryNV;\n\ntypedef struct VkAccelerationStructureInfoNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkAccelerationStructureTypeNV type;\n    VkBuildAccelerationStructureFlagsNV flags;\n    uint32_t instanceCount;\n    uint32_t geometryCount;\n    const VkGeometryNV* pGeometries;\n} VkAccelerationStructureInfoNV;\n\ntypedef struct VkAccelerationStructureCreateInfoNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkDeviceSize compactedSize;\n    VkAccelerationStructureInfoNV info;\n} VkAccelerationStructureCreateInfoNV;\n\ntypedef struct VkBindAccelerationStructureMemoryInfoNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkAccelerationStructureNV accelerationStructure;\n    VkDeviceMemory memory;\n    VkDeviceSize memoryOffset;\n    uint32_t deviceIndexCount;\n    const uint32_t* pDeviceIndices;\n} VkBindAccelerationStructureMemoryInfoNV;\n\ntypedef struct VkWriteDescriptorSetAccelerationStructureNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t accelerationStructureCount;\n    const VkAccelerationStructureNV* pAccelerationStructures;\n} VkWriteDescriptorSetAccelerationStructureNV;\n\ntypedef struct VkAccelerationStructureMemoryRequirementsInfoNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkAccelerationStructureMemoryRequirementsTypeNV type;\n    VkAccelerationStructureNV accelerationStructure;\n} VkAccelerationStructureMemoryRequirementsInfoNV;\n\ntypedef struct VkPhysicalDeviceRayTracingPropertiesNV\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t shaderGroupHandleSize;\n    uint32_t maxRecursionDepth;\n    uint32_t maxShaderGroupStride;\n    uint32_t shaderGroupBaseAlignment;\n    uint64_t maxGeometryCount;\n    uint64_t maxInstanceCount;\n    uint64_t maxTriangleCount;\n    uint32_t maxDescriptorSetAccelerationStructures;\n} VkPhysicalDeviceRayTracingPropertiesNV;\n\ntypedef VkTransformMatrixKHR VkTransformMatrixNV;\n\ntypedef VkAabbPositionsKHR VkAabbPositionsNV;\n\ntypedef VkAccelerationStructureInstanceKHR VkAccelerationStructureInstanceNV;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateAccelerationStructureNV)(VkDevice device, const VkAccelerationStructureCreateInfoNV* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkAccelerationStructureNV* pAccelerationStructure);\ntypedef void (VKAPI_PTR *PFN_vkDestroyAccelerationStructureNV)(VkDevice device, VkAccelerationStructureNV accelerationStructure, const VkAllocationCallbacks* pAllocator);\ntypedef void (VKAPI_PTR *PFN_vkGetAccelerationStructureMemoryRequirementsNV)(VkDevice device, const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo, VkMemoryRequirements2KHR* pMemoryRequirements);\ntypedef VkResult (VKAPI_PTR *PFN_vkBindAccelerationStructureMemoryNV)(VkDevice device, uint32_t bindInfoCount, const VkBindAccelerationStructureMemoryInfoNV* pBindInfos);\ntypedef void (VKAPI_PTR *PFN_vkCmdBuildAccelerationStructureNV)(VkCommandBuffer commandBuffer, const VkAccelerationStructureInfoNV* pInfo, VkBuffer instanceData, VkDeviceSize instanceOffset, VkBool32 update, VkAccelerationStructureNV dst, VkAccelerationStructureNV src, VkBuffer scratch, VkDeviceSize scratchOffset);\ntypedef void (VKAPI_PTR *PFN_vkCmdCopyAccelerationStructureNV)(VkCommandBuffer commandBuffer, VkAccelerationStructureNV dst, VkAccelerationStructureNV src, VkCopyAccelerationStructureModeKHR mode);\ntypedef void (VKAPI_PTR *PFN_vkCmdTraceRaysNV)(VkCommandBuffer commandBuffer, VkBuffer raygenShaderBindingTableBuffer, VkDeviceSize raygenShaderBindingOffset, VkBuffer missShaderBindingTableBuffer, VkDeviceSize missShaderBindingOffset, VkDeviceSize missShaderBindingStride, VkBuffer hitShaderBindingTableBuffer, VkDeviceSize hitShaderBindingOffset, VkDeviceSize hitShaderBindingStride, VkBuffer callableShaderBindingTableBuffer, VkDeviceSize callableShaderBindingOffset, VkDeviceSize callableShaderBindingStride, uint32_t width, uint32_t height, uint32_t depth);\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateRayTracingPipelinesNV)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkRayTracingPipelineCreateInfoNV* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetRayTracingShaderGroupHandlesNV)(VkDevice device, VkPipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, void* pData);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetAccelerationStructureHandleNV)(VkDevice device, VkAccelerationStructureNV accelerationStructure, size_t dataSize, void* pData);\ntypedef void (VKAPI_PTR *PFN_vkCmdWriteAccelerationStructuresPropertiesNV)(VkCommandBuffer commandBuffer, uint32_t accelerationStructureCount, const VkAccelerationStructureNV* pAccelerationStructures, VkQueryType queryType, VkQueryPool queryPool, uint32_t firstQuery);\ntypedef VkResult (VKAPI_PTR *PFN_vkCompileDeferredNV)(VkDevice device, VkPipeline pipeline, uint32_t shader);\n\n\n#define VK_NV_representative_fragment_test 1\n#define VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION 2\n#define VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME \"VK_NV_representative_fragment_test\"\n\ntypedef struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 representativeFragmentTest;\n} VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV;\n\ntypedef struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkBool32 representativeFragmentTestEnable;\n} VkPipelineRepresentativeFragmentTestStateCreateInfoNV;\n\n\n#define VK_KHR_maintenance3 1\n#define VK_KHR_MAINTENANCE_3_SPEC_VERSION 1\n#define VK_KHR_MAINTENANCE_3_EXTENSION_NAME \"VK_KHR_maintenance3\"\n\ntypedef VkPhysicalDeviceMaintenance3Properties VkPhysicalDeviceMaintenance3PropertiesKHR;\n\ntypedef VkDescriptorSetLayoutSupport VkDescriptorSetLayoutSupportKHR;\n\ntypedef void (VKAPI_PTR *PFN_vkGetDescriptorSetLayoutSupportKHR)(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport);\n\n\n#define VK_KHR_draw_indirect_count 1\n#define VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION 1\n#define VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME \"VK_KHR_draw_indirect_count\"\n\ntypedef void (VKAPI_PTR *PFN_vkCmdDrawIndirectCountKHR)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride);\ntypedef void (VKAPI_PTR *PFN_vkCmdDrawIndexedIndirectCountKHR)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride);\n\n\n#define VK_AMD_draw_indirect_count 1\n#define VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION 2\n#define VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME \"VK_AMD_draw_indirect_count\"\n\ntypedef void (VKAPI_PTR *PFN_vkCmdDrawIndirectCountAMD)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride);\ntypedef void (VKAPI_PTR *PFN_vkCmdDrawIndexedIndirectCountAMD)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride);\n\n\n#define VK_EXT_filter_cubic 1\n#define VK_EXT_FILTER_CUBIC_SPEC_VERSION 3\n#define VK_EXT_FILTER_CUBIC_EXTENSION_NAME \"VK_EXT_filter_cubic\"\n\ntypedef struct VkPhysicalDeviceImageViewImageFormatInfoEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkImageViewType imageViewType;\n} VkPhysicalDeviceImageViewImageFormatInfoEXT;\n\ntypedef struct VkFilterCubicImageViewImageFormatPropertiesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 filterCubic;\n    VkBool32 filterCubicMinmax;\n} VkFilterCubicImageViewImageFormatPropertiesEXT;\n\n\n#define VK_QCOM_cooperative_matrix_conversion 1\n#define VK_QCOM_COOPERATIVE_MATRIX_CONVERSION_SPEC_VERSION 1\n#define VK_QCOM_COOPERATIVE_MATRIX_CONVERSION_EXTENSION_NAME \"VK_QCOM_cooperative_matrix_conversion\"\n\ntypedef struct VkPhysicalDeviceCooperativeMatrixConversionFeaturesQCOM\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 cooperativeMatrixConversion;\n} VkPhysicalDeviceCooperativeMatrixConversionFeaturesQCOM;\n\n\n#define VK_KHR_shader_subgroup_extended_types 1\n#define VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION 1\n#define VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME \"VK_KHR_shader_subgroup_extended_types\"\n\ntypedef VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR;\n\n\n#define VK_KHR_8bit_storage 1\n#define VK_KHR_8BIT_STORAGE_SPEC_VERSION 1\n#define VK_KHR_8BIT_STORAGE_EXTENSION_NAME \"VK_KHR_8bit_storage\"\n\ntypedef VkPhysicalDevice8BitStorageFeatures VkPhysicalDevice8BitStorageFeaturesKHR;\n\n\n#define VK_EXT_external_memory_host 1\n#define VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION 1\n#define VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME \"VK_EXT_external_memory_host\"\n\ntypedef struct VkImportMemoryHostPointerInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkExternalMemoryHandleTypeFlagBits handleType;\n    void* pHostPointer;\n} VkImportMemoryHostPointerInfoEXT;\n\ntypedef struct VkMemoryHostPointerPropertiesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t memoryTypeBits;\n} VkMemoryHostPointerPropertiesEXT;\n\ntypedef struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkDeviceSize minImportedHostPointerAlignment;\n} VkPhysicalDeviceExternalMemoryHostPropertiesEXT;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkGetMemoryHostPointerPropertiesEXT)(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, const void* pHostPointer, VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties);\n\n\n#define VK_AMD_buffer_marker 1\n#define VK_AMD_BUFFER_MARKER_SPEC_VERSION 1\n#define VK_AMD_BUFFER_MARKER_EXTENSION_NAME \"VK_AMD_buffer_marker\"\n\ntypedef void (VKAPI_PTR *PFN_vkCmdWriteBufferMarkerAMD)(VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkBuffer dstBuffer, VkDeviceSize dstOffset, uint32_t marker);\ntypedef void (VKAPI_PTR *PFN_vkCmdWriteBufferMarker2AMD)(VkCommandBuffer commandBuffer, VkPipelineStageFlags2 stage, VkBuffer dstBuffer, VkDeviceSize dstOffset, uint32_t marker);\n\n\n#define VK_KHR_shader_atomic_int64 1\n#define VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION 1\n#define VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME \"VK_KHR_shader_atomic_int64\"\n\ntypedef VkPhysicalDeviceShaderAtomicInt64Features VkPhysicalDeviceShaderAtomicInt64FeaturesKHR;\n\n\n#define VK_KHR_shader_clock 1\n#define VK_KHR_SHADER_CLOCK_SPEC_VERSION 1\n#define VK_KHR_SHADER_CLOCK_EXTENSION_NAME \"VK_KHR_shader_clock\"\n\ntypedef struct VkPhysicalDeviceShaderClockFeaturesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 shaderSubgroupClock;\n    VkBool32 shaderDeviceClock;\n} VkPhysicalDeviceShaderClockFeaturesKHR;\n\n\n#define VK_AMD_pipeline_compiler_control 1\n#define VK_AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION 1\n#define VK_AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME \"VK_AMD_pipeline_compiler_control\"\n\n\ntypedef enum\n{\n    VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD = 0x7FFFFFFF\n} VkPipelineCompilerControlFlagBitsAMD;\ntypedef VkFlags VkPipelineCompilerControlFlagsAMD;\n\ntypedef struct VkPipelineCompilerControlCreateInfoAMD\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkPipelineCompilerControlFlagsAMD compilerControlFlags;\n} VkPipelineCompilerControlCreateInfoAMD;\n\n\n#define VK_AMD_shader_core_properties 1\n#define VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION 2\n#define VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME \"VK_AMD_shader_core_properties\"\n\ntypedef struct VkPhysicalDeviceShaderCorePropertiesAMD\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t shaderEngineCount;\n    uint32_t shaderArraysPerEngineCount;\n    uint32_t computeUnitsPerShaderArray;\n    uint32_t simdPerComputeUnit;\n    uint32_t wavefrontsPerSimd;\n    uint32_t wavefrontSize;\n    uint32_t sgprsPerSimd;\n    uint32_t minSgprAllocation;\n    uint32_t maxSgprAllocation;\n    uint32_t sgprAllocationGranularity;\n    uint32_t vgprsPerSimd;\n    uint32_t minVgprAllocation;\n    uint32_t maxVgprAllocation;\n    uint32_t vgprAllocationGranularity;\n} VkPhysicalDeviceShaderCorePropertiesAMD;\n\n\n#define VK_KHR_video_decode_h265 1\n#define VK_KHR_VIDEO_DECODE_H265_SPEC_VERSION 8\n#define VK_KHR_VIDEO_DECODE_H265_EXTENSION_NAME \"VK_KHR_video_decode_h265\"\n\ntypedef struct VkVideoDecodeH265ProfileInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    StdVideoH265ProfileIdc stdProfileIdc;\n} VkVideoDecodeH265ProfileInfoKHR;\n\ntypedef struct VkVideoDecodeH265CapabilitiesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    StdVideoH265LevelIdc maxLevelIdc;\n} VkVideoDecodeH265CapabilitiesKHR;\n\ntypedef struct VkVideoDecodeH265SessionParametersAddInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t stdVPSCount;\n    const StdVideoH265VideoParameterSet* pStdVPSs;\n    uint32_t stdSPSCount;\n    const StdVideoH265SequenceParameterSet* pStdSPSs;\n    uint32_t stdPPSCount;\n    const StdVideoH265PictureParameterSet* pStdPPSs;\n} VkVideoDecodeH265SessionParametersAddInfoKHR;\n\ntypedef struct VkVideoDecodeH265SessionParametersCreateInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t maxStdVPSCount;\n    uint32_t maxStdSPSCount;\n    uint32_t maxStdPPSCount;\n    const VkVideoDecodeH265SessionParametersAddInfoKHR* pParametersAddInfo;\n} VkVideoDecodeH265SessionParametersCreateInfoKHR;\n\ntypedef struct VkVideoDecodeH265PictureInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    const StdVideoDecodeH265PictureInfo* pStdPictureInfo;\n    uint32_t sliceSegmentCount;\n    const uint32_t* pSliceSegmentOffsets;\n} VkVideoDecodeH265PictureInfoKHR;\n\ntypedef struct VkVideoDecodeH265DpbSlotInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    const StdVideoDecodeH265ReferenceInfo* pStdReferenceInfo;\n} VkVideoDecodeH265DpbSlotInfoKHR;\n\n\n#define VK_EXT_global_priority_query 1\n#define VK_EXT_GLOBAL_PRIORITY_QUERY_SPEC_VERSION 1\n#define VK_EXT_GLOBAL_PRIORITY_QUERY_EXTENSION_NAME \"VK_EXT_global_priority_query\"\n\ntypedef VkPhysicalDeviceGlobalPriorityQueryFeatures VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT;\n\ntypedef VkQueueFamilyGlobalPriorityProperties VkQueueFamilyGlobalPriorityPropertiesEXT;\n\n\n#define VK_KHR_global_priority 1\n#define VK_KHR_GLOBAL_PRIORITY_SPEC_VERSION 1\n#define VK_KHR_GLOBAL_PRIORITY_EXTENSION_NAME \"VK_KHR_global_priority\"\n\ntypedef VkQueueGlobalPriority VkQueueGlobalPriorityKHR;\ntypedef VkDeviceQueueGlobalPriorityCreateInfo VkDeviceQueueGlobalPriorityCreateInfoKHR;\n\ntypedef VkPhysicalDeviceGlobalPriorityQueryFeatures VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR;\n\ntypedef VkQueueFamilyGlobalPriorityProperties VkQueueFamilyGlobalPriorityPropertiesKHR;\n\n\n#define VK_EXT_global_priority 1\n#define VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION 2\n#define VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME \"VK_EXT_global_priority\"\n\ntypedef VkQueueGlobalPriority VkQueueGlobalPriorityEXT;\ntypedef VkDeviceQueueGlobalPriorityCreateInfo VkDeviceQueueGlobalPriorityCreateInfoEXT;\n\n\n#define VK_AMD_memory_overallocation_behavior 1\n#define VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_SPEC_VERSION 1\n#define VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME \"VK_AMD_memory_overallocation_behavior\"\n\ntypedef enum\n{\n    VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD = 0,\n    VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD = 1,\n    VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD = 2,\n    VK_MEMORY_OVERALLOCATION_BEHAVIOR_MAX_ENUM_AMD = 0x7FFFFFFF\n} VkMemoryOverallocationBehaviorAMD;\n\n\ntypedef struct VkDeviceMemoryOverallocationCreateInfoAMD\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkMemoryOverallocationBehaviorAMD overallocationBehavior;\n} VkDeviceMemoryOverallocationCreateInfoAMD;\n\n\n#define VK_EXT_pipeline_creation_feedback 1\n#define VK_EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION 1\n#define VK_EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME \"VK_EXT_pipeline_creation_feedback\"\n\ntypedef VkPipelineCreationFeedbackFlagBits VkPipelineCreationFeedbackFlagBitsEXT;\ntypedef VkPipelineCreationFeedbackFlags VkPipelineCreationFeedbackFlagsEXT;\ntypedef VkPipelineCreationFeedbackCreateInfo VkPipelineCreationFeedbackCreateInfoEXT;\n\ntypedef VkPipelineCreationFeedback VkPipelineCreationFeedbackEXT;\n\n\n#define VK_KHR_driver_properties 1\n#define VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION 1\n#define VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME \"VK_KHR_driver_properties\"\n\ntypedef VkDriverId VkDriverIdKHR;\ntypedef VkConformanceVersion VkConformanceVersionKHR;\n\ntypedef VkPhysicalDeviceDriverProperties VkPhysicalDeviceDriverPropertiesKHR;\n\n\n#define VK_KHR_shader_float_controls 1\n#define VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION 4\n#define VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME \"VK_KHR_shader_float_controls\"\n\ntypedef VkShaderFloatControlsIndependence VkShaderFloatControlsIndependenceKHR;\ntypedef VkPhysicalDeviceFloatControlsProperties VkPhysicalDeviceFloatControlsPropertiesKHR;\n\n\n#define VK_KHR_depth_stencil_resolve 1\n#define VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION 1\n#define VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME \"VK_KHR_depth_stencil_resolve\"\n\ntypedef VkResolveModeFlagBits VkResolveModeFlagBitsKHR;\ntypedef VkResolveModeFlags VkResolveModeFlagsKHR;\ntypedef VkSubpassDescriptionDepthStencilResolve VkSubpassDescriptionDepthStencilResolveKHR;\n\ntypedef VkPhysicalDeviceDepthStencilResolveProperties VkPhysicalDeviceDepthStencilResolvePropertiesKHR;\n\n\n#define VK_KHR_swapchain_mutable_format 1\n#define VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION 1\n#define VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME \"VK_KHR_swapchain_mutable_format\"\n\n\n#define VK_NV_mesh_shader 1\n#define VK_NV_MESH_SHADER_SPEC_VERSION 1\n#define VK_NV_MESH_SHADER_EXTENSION_NAME \"VK_NV_mesh_shader\"\n\ntypedef struct VkPhysicalDeviceMeshShaderFeaturesNV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 taskShader;\n    VkBool32 meshShader;\n} VkPhysicalDeviceMeshShaderFeaturesNV;\n\ntypedef struct VkPhysicalDeviceMeshShaderPropertiesNV\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t maxDrawMeshTasksCount;\n    uint32_t maxTaskWorkGroupInvocations;\n    uint32_t maxTaskWorkGroupSize[3];\n    uint32_t maxTaskTotalMemorySize;\n    uint32_t maxTaskOutputCount;\n    uint32_t maxMeshWorkGroupInvocations;\n    uint32_t maxMeshWorkGroupSize[3];\n    uint32_t maxMeshTotalMemorySize;\n    uint32_t maxMeshOutputVertices;\n    uint32_t maxMeshOutputPrimitives;\n    uint32_t maxMeshMultiviewViewCount;\n    uint32_t meshOutputPerVertexGranularity;\n    uint32_t meshOutputPerPrimitiveGranularity;\n} VkPhysicalDeviceMeshShaderPropertiesNV;\n\ntypedef struct VkDrawMeshTasksIndirectCommandNV\n{\n    uint32_t taskCount;\n    uint32_t firstTask;\n} VkDrawMeshTasksIndirectCommandNV;\n\n\ntypedef void (VKAPI_PTR *PFN_vkCmdDrawMeshTasksNV)(VkCommandBuffer commandBuffer, uint32_t taskCount, uint32_t firstTask);\ntypedef void (VKAPI_PTR *PFN_vkCmdDrawMeshTasksIndirectNV)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride);\ntypedef void (VKAPI_PTR *PFN_vkCmdDrawMeshTasksIndirectCountNV)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride);\n\n\n#define VK_NV_shader_image_footprint 1\n#define VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION 2\n#define VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME \"VK_NV_shader_image_footprint\"\n\ntypedef struct VkPhysicalDeviceShaderImageFootprintFeaturesNV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 imageFootprint;\n} VkPhysicalDeviceShaderImageFootprintFeaturesNV;\n\n\n#define VK_NV_scissor_exclusive 1\n#define VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION 2\n#define VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME \"VK_NV_scissor_exclusive\"\n\ntypedef struct VkPipelineViewportExclusiveScissorStateCreateInfoNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t exclusiveScissorCount;\n    const VkRect2D* pExclusiveScissors;\n} VkPipelineViewportExclusiveScissorStateCreateInfoNV;\n\ntypedef struct VkPhysicalDeviceExclusiveScissorFeaturesNV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 exclusiveScissor;\n} VkPhysicalDeviceExclusiveScissorFeaturesNV;\n\n\ntypedef void (VKAPI_PTR *PFN_vkCmdSetExclusiveScissorEnableNV)(VkCommandBuffer commandBuffer, uint32_t firstExclusiveScissor, uint32_t exclusiveScissorCount, const VkBool32* pExclusiveScissorEnables);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetExclusiveScissorNV)(VkCommandBuffer commandBuffer, uint32_t firstExclusiveScissor, uint32_t exclusiveScissorCount, const VkRect2D* pExclusiveScissors);\n\n\n#define VK_NV_device_diagnostic_checkpoints 1\n#define VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_SPEC_VERSION 2\n#define VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME \"VK_NV_device_diagnostic_checkpoints\"\n\ntypedef struct VkQueueFamilyCheckpointPropertiesNV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkPipelineStageFlags checkpointExecutionStageMask;\n} VkQueueFamilyCheckpointPropertiesNV;\n\ntypedef struct VkCheckpointDataNV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkPipelineStageFlagBits stage;\n    void* pCheckpointMarker;\n} VkCheckpointDataNV;\n\ntypedef struct VkQueueFamilyCheckpointProperties2NV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkPipelineStageFlags2 checkpointExecutionStageMask;\n} VkQueueFamilyCheckpointProperties2NV;\n\ntypedef struct VkCheckpointData2NV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkPipelineStageFlags2 stage;\n    void* pCheckpointMarker;\n} VkCheckpointData2NV;\n\n\ntypedef void (VKAPI_PTR *PFN_vkCmdSetCheckpointNV)(VkCommandBuffer commandBuffer, const void* pCheckpointMarker);\ntypedef void (VKAPI_PTR *PFN_vkGetQueueCheckpointDataNV)(VkQueue queue, uint32_t* pCheckpointDataCount, VkCheckpointDataNV* pCheckpointData);\ntypedef void (VKAPI_PTR *PFN_vkGetQueueCheckpointData2NV)(VkQueue queue, uint32_t* pCheckpointDataCount, VkCheckpointData2NV* pCheckpointData);\n\n\n#define VK_KHR_timeline_semaphore 1\n#define VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION 2\n#define VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME \"VK_KHR_timeline_semaphore\"\n\ntypedef VkSemaphoreType VkSemaphoreTypeKHR;\ntypedef VkSemaphoreWaitFlagBits VkSemaphoreWaitFlagBitsKHR;\ntypedef VkSemaphoreWaitFlags VkSemaphoreWaitFlagsKHR;\ntypedef VkPhysicalDeviceTimelineSemaphoreFeatures VkPhysicalDeviceTimelineSemaphoreFeaturesKHR;\n\ntypedef VkPhysicalDeviceTimelineSemaphoreProperties VkPhysicalDeviceTimelineSemaphorePropertiesKHR;\n\ntypedef VkSemaphoreTypeCreateInfo VkSemaphoreTypeCreateInfoKHR;\n\ntypedef VkTimelineSemaphoreSubmitInfo VkTimelineSemaphoreSubmitInfoKHR;\n\ntypedef VkSemaphoreWaitInfo VkSemaphoreWaitInfoKHR;\n\ntypedef VkSemaphoreSignalInfo VkSemaphoreSignalInfoKHR;\n\ntypedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreCounterValueKHR)(VkDevice device, VkSemaphore semaphore, uint64_t* pValue);\ntypedef VkResult (VKAPI_PTR *PFN_vkWaitSemaphoresKHR)(VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, uint64_t timeout);\ntypedef VkResult (VKAPI_PTR *PFN_vkSignalSemaphoreKHR)(VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo);\n\n\n#define VK_EXT_present_timing 1\n#define VK_EXT_PRESENT_TIMING_SPEC_VERSION 3\n#define VK_EXT_PRESENT_TIMING_EXTENSION_NAME \"VK_EXT_present_timing\"\n\n\ntypedef enum\n{\n    VK_PRESENT_STAGE_QUEUE_OPERATIONS_END_BIT_EXT = 0x00000001,\n    VK_PRESENT_STAGE_REQUEST_DEQUEUED_BIT_EXT = 0x00000002,\n    VK_PRESENT_STAGE_IMAGE_FIRST_PIXEL_OUT_BIT_EXT = 0x00000004,\n    VK_PRESENT_STAGE_IMAGE_FIRST_PIXEL_VISIBLE_BIT_EXT = 0x00000008,\n    VK_PRESENT_STAGE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF\n} VkPresentStageFlagBitsEXT;\ntypedef VkFlags VkPresentStageFlagsEXT;\ntypedef enum\n{\n    VK_TIME_DOMAIN_DEVICE_KHR = 0,\n    VK_TIME_DOMAIN_CLOCK_MONOTONIC_KHR = 1,\n    VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_KHR = 2,\n    VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_KHR = 3,\n    VK_TIME_DOMAIN_PRESENT_STAGE_LOCAL_EXT = 1000208000,\n    VK_TIME_DOMAIN_SWAPCHAIN_LOCAL_EXT = 1000208001,\n    VK_TIME_DOMAIN_DEVICE_EXT = VK_TIME_DOMAIN_DEVICE_KHR,\n    VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT = VK_TIME_DOMAIN_CLOCK_MONOTONIC_KHR,\n    VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT = VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_KHR,\n    VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT = VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_KHR,\n    VK_TIME_DOMAIN_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkTimeDomainKHR;\n\n\ntypedef enum\n{\n    VK_PAST_PRESENTATION_TIMING_ALLOW_PARTIAL_RESULTS_BIT_EXT = 0x00000001,\n    VK_PAST_PRESENTATION_TIMING_ALLOW_OUT_OF_ORDER_RESULTS_BIT_EXT = 0x00000002,\n    VK_PAST_PRESENTATION_TIMING_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF\n} VkPastPresentationTimingFlagBitsEXT;\ntypedef VkFlags VkPastPresentationTimingFlagsEXT;\n\ntypedef enum\n{\n    VK_PRESENT_TIMING_INFO_PRESENT_AT_RELATIVE_TIME_BIT_EXT = 0x00000001,\n    VK_PRESENT_TIMING_INFO_PRESENT_AT_NEAREST_REFRESH_CYCLE_BIT_EXT = 0x00000002,\n    VK_PRESENT_TIMING_INFO_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF\n} VkPresentTimingInfoFlagBitsEXT;\ntypedef VkFlags VkPresentTimingInfoFlagsEXT;\n\ntypedef struct VkPhysicalDevicePresentTimingFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 presentTiming;\n    VkBool32 presentAtAbsoluteTime;\n    VkBool32 presentAtRelativeTime;\n} VkPhysicalDevicePresentTimingFeaturesEXT;\n\ntypedef struct VkPresentTimingSurfaceCapabilitiesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 presentTimingSupported;\n    VkBool32 presentAtAbsoluteTimeSupported;\n    VkBool32 presentAtRelativeTimeSupported;\n    VkPresentStageFlagsEXT presentStageQueries;\n} VkPresentTimingSurfaceCapabilitiesEXT;\n\ntypedef struct VkSwapchainCalibratedTimestampInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkSwapchainKHR swapchain;\n    VkPresentStageFlagsEXT presentStage;\n    uint64_t timeDomainId;\n} VkSwapchainCalibratedTimestampInfoEXT;\n\ntypedef struct VkSwapchainTimingPropertiesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    uint64_t refreshDuration;\n    uint64_t refreshInterval;\n} VkSwapchainTimingPropertiesEXT;\n\ntypedef struct VkSwapchainTimeDomainPropertiesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t timeDomainCount;\n    VkTimeDomainKHR* pTimeDomains;\n    uint64_t* pTimeDomainIds;\n} VkSwapchainTimeDomainPropertiesEXT;\n\ntypedef struct VkPastPresentationTimingInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkPastPresentationTimingFlagsEXT flags;\n    VkSwapchainKHR swapchain;\n} VkPastPresentationTimingInfoEXT;\n\ntypedef struct VkPresentStageTimeEXT\n{\n    VkPresentStageFlagsEXT stage;\n    uint64_t time;\n} VkPresentStageTimeEXT;\n\ntypedef struct VkPastPresentationTimingEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    uint64_t presentId;\n    uint64_t targetTime;\n    uint32_t presentStageCount;\n    VkPresentStageTimeEXT* pPresentStages;\n    VkTimeDomainKHR timeDomain;\n    uint64_t timeDomainId;\n    VkBool32 reportComplete;\n} VkPastPresentationTimingEXT;\n\ntypedef struct VkPastPresentationTimingPropertiesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    uint64_t timingPropertiesCounter;\n    uint64_t timeDomainsCounter;\n    uint32_t presentationTimingCount;\n    VkPastPresentationTimingEXT* pPresentationTimings;\n} VkPastPresentationTimingPropertiesEXT;\n\ntypedef struct VkPresentTimingInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkPresentTimingInfoFlagsEXT flags;\n    uint64_t targetTime;\n    uint64_t timeDomainId;\n    VkPresentStageFlagsEXT presentStageQueries;\n    VkPresentStageFlagsEXT targetTimeDomainPresentStage;\n} VkPresentTimingInfoEXT;\n\ntypedef struct VkPresentTimingsInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t swapchainCount;\n    const VkPresentTimingInfoEXT* pTimingInfos;\n} VkPresentTimingsInfoEXT;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkSetSwapchainPresentTimingQueueSizeEXT)(VkDevice device, VkSwapchainKHR swapchain, uint32_t size);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainTimingPropertiesEXT)(VkDevice device, VkSwapchainKHR swapchain, VkSwapchainTimingPropertiesEXT* pSwapchainTimingProperties, uint64_t* pSwapchainTimingPropertiesCounter);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainTimeDomainPropertiesEXT)(VkDevice device, VkSwapchainKHR swapchain, VkSwapchainTimeDomainPropertiesEXT* pSwapchainTimeDomainProperties, uint64_t* pTimeDomainsCounter);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetPastPresentationTimingEXT)(VkDevice device, const VkPastPresentationTimingInfoEXT* pPastPresentationTimingInfo, VkPastPresentationTimingPropertiesEXT* pPastPresentationTimingProperties);\n\n\n#define VK_INTEL_shader_integer_functions2 1\n#define VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION 1\n#define VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME \"VK_INTEL_shader_integer_functions2\"\n\ntypedef struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 shaderIntegerFunctions2;\n} VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL;\n\n\n#define VK_INTEL_performance_query 1\n#define VK_INTEL_PERFORMANCE_QUERY_SPEC_VERSION 2\n#define VK_INTEL_PERFORMANCE_QUERY_EXTENSION_NAME \"VK_INTEL_performance_query\"\n\nVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPerformanceConfigurationINTEL)\n\ntypedef enum\n{\n    VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL = 0,\n    VK_PERFORMANCE_CONFIGURATION_TYPE_MAX_ENUM_INTEL = 0x7FFFFFFF\n} VkPerformanceConfigurationTypeINTEL;\n\ntypedef enum\n{\n    VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0,\n    VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL = 0x7FFFFFFF\n} VkQueryPoolSamplingModeINTEL;\n\ntypedef enum\n{\n    VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL = 0,\n    VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL = 1,\n    VK_PERFORMANCE_OVERRIDE_TYPE_MAX_ENUM_INTEL = 0x7FFFFFFF\n} VkPerformanceOverrideTypeINTEL;\n\ntypedef enum\n{\n    VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL = 0,\n    VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL = 1,\n    VK_PERFORMANCE_PARAMETER_TYPE_MAX_ENUM_INTEL = 0x7FFFFFFF\n} VkPerformanceParameterTypeINTEL;\n\ntypedef enum\n{\n    VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL = 0,\n    VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL = 1,\n    VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL = 2,\n    VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL = 3,\n    VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL = 4,\n    VK_PERFORMANCE_VALUE_TYPE_MAX_ENUM_INTEL = 0x7FFFFFFF\n} VkPerformanceValueTypeINTEL;\n\n\ntypedef union VkPerformanceValueDataINTEL\n{\n    uint32_t value32;\n    uint64_t value64;\n    float valueFloat;\n    VkBool32 valueBool;\n    const char* valueString;\n} VkPerformanceValueDataINTEL;\n\ntypedef struct VkPerformanceValueINTEL\n{\n    VkPerformanceValueTypeINTEL type;\n    VkPerformanceValueDataINTEL data;\n} VkPerformanceValueINTEL;\n\ntypedef struct VkInitializePerformanceApiInfoINTEL\n{\n    VkStructureType sType;\n    const void* pNext;\n    void* pUserData;\n} VkInitializePerformanceApiInfoINTEL;\n\ntypedef struct VkQueryPoolPerformanceQueryCreateInfoINTEL\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkQueryPoolSamplingModeINTEL performanceCountersSampling;\n} VkQueryPoolPerformanceQueryCreateInfoINTEL;\n\ntypedef VkQueryPoolPerformanceQueryCreateInfoINTEL VkQueryPoolCreateInfoINTEL;\n\ntypedef struct VkPerformanceMarkerInfoINTEL\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint64_t marker;\n} VkPerformanceMarkerInfoINTEL;\n\ntypedef struct VkPerformanceStreamMarkerInfoINTEL\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t marker;\n} VkPerformanceStreamMarkerInfoINTEL;\n\ntypedef struct VkPerformanceOverrideInfoINTEL\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkPerformanceOverrideTypeINTEL type;\n    VkBool32 enable;\n    uint64_t parameter;\n} VkPerformanceOverrideInfoINTEL;\n\ntypedef struct VkPerformanceConfigurationAcquireInfoINTEL\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkPerformanceConfigurationTypeINTEL type;\n} VkPerformanceConfigurationAcquireInfoINTEL;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkInitializePerformanceApiINTEL)(VkDevice device, const VkInitializePerformanceApiInfoINTEL* pInitializeInfo);\ntypedef void (VKAPI_PTR *PFN_vkUninitializePerformanceApiINTEL)(VkDevice device);\ntypedef VkResult (VKAPI_PTR *PFN_vkCmdSetPerformanceMarkerINTEL)(VkCommandBuffer commandBuffer, const VkPerformanceMarkerInfoINTEL* pMarkerInfo);\ntypedef VkResult (VKAPI_PTR *PFN_vkCmdSetPerformanceStreamMarkerINTEL)(VkCommandBuffer commandBuffer, const VkPerformanceStreamMarkerInfoINTEL* pMarkerInfo);\ntypedef VkResult (VKAPI_PTR *PFN_vkCmdSetPerformanceOverrideINTEL)(VkCommandBuffer commandBuffer, const VkPerformanceOverrideInfoINTEL* pOverrideInfo);\ntypedef VkResult (VKAPI_PTR *PFN_vkAcquirePerformanceConfigurationINTEL)(VkDevice device, const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo, VkPerformanceConfigurationINTEL* pConfiguration);\ntypedef VkResult (VKAPI_PTR *PFN_vkReleasePerformanceConfigurationINTEL)(VkDevice device, VkPerformanceConfigurationINTEL configuration);\ntypedef VkResult (VKAPI_PTR *PFN_vkQueueSetPerformanceConfigurationINTEL)(VkQueue queue, VkPerformanceConfigurationINTEL configuration);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetPerformanceParameterINTEL)(VkDevice device, VkPerformanceParameterTypeINTEL parameter, VkPerformanceValueINTEL* pValue);\n\n\n#define VK_KHR_vulkan_memory_model 1\n#define VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION 3\n#define VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME \"VK_KHR_vulkan_memory_model\"\n\ntypedef VkPhysicalDeviceVulkanMemoryModelFeatures VkPhysicalDeviceVulkanMemoryModelFeaturesKHR;\n\n\n#define VK_EXT_pci_bus_info 1\n#define VK_EXT_PCI_BUS_INFO_SPEC_VERSION 2\n#define VK_EXT_PCI_BUS_INFO_EXTENSION_NAME \"VK_EXT_pci_bus_info\"\n\ntypedef struct VkPhysicalDevicePCIBusInfoPropertiesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t pciDomain;\n    uint32_t pciBus;\n    uint32_t pciDevice;\n    uint32_t pciFunction;\n} VkPhysicalDevicePCIBusInfoPropertiesEXT;\n\n\n#define VK_AMD_display_native_hdr 1\n#define VK_AMD_DISPLAY_NATIVE_HDR_SPEC_VERSION 1\n#define VK_AMD_DISPLAY_NATIVE_HDR_EXTENSION_NAME \"VK_AMD_display_native_hdr\"\n\ntypedef struct VkDisplayNativeHdrSurfaceCapabilitiesAMD\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 localDimmingSupport;\n} VkDisplayNativeHdrSurfaceCapabilitiesAMD;\n\ntypedef struct VkSwapchainDisplayNativeHdrCreateInfoAMD\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkBool32 localDimmingEnable;\n} VkSwapchainDisplayNativeHdrCreateInfoAMD;\n\n\ntypedef void (VKAPI_PTR *PFN_vkSetLocalDimmingAMD)(VkDevice device, VkSwapchainKHR swapChain, VkBool32 localDimmingEnable);\n\n\n#define VK_KHR_shader_terminate_invocation 1\n#define VK_KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION 1\n#define VK_KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME \"VK_KHR_shader_terminate_invocation\"\n\ntypedef VkPhysicalDeviceShaderTerminateInvocationFeatures VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR;\n\n\n#define VK_EXT_fragment_density_map 1\n#define VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION 3\n#define VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME \"VK_EXT_fragment_density_map\"\n\ntypedef struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 fragmentDensityMap;\n    VkBool32 fragmentDensityMapDynamic;\n    VkBool32 fragmentDensityMapNonSubsampledImages;\n} VkPhysicalDeviceFragmentDensityMapFeaturesEXT;\n\ntypedef struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkExtent2D minFragmentDensityTexelSize;\n    VkExtent2D maxFragmentDensityTexelSize;\n    VkBool32 fragmentDensityInvocations;\n} VkPhysicalDeviceFragmentDensityMapPropertiesEXT;\n\ntypedef struct VkRenderPassFragmentDensityMapCreateInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkAttachmentReference fragmentDensityMapAttachment;\n} VkRenderPassFragmentDensityMapCreateInfoEXT;\n\ntypedef struct VkRenderingFragmentDensityMapAttachmentInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkImageView imageView;\n    VkImageLayout imageLayout;\n} VkRenderingFragmentDensityMapAttachmentInfoEXT;\n\n\n#define VK_EXT_scalar_block_layout 1\n#define VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION 1\n#define VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME \"VK_EXT_scalar_block_layout\"\n\ntypedef VkPhysicalDeviceScalarBlockLayoutFeatures VkPhysicalDeviceScalarBlockLayoutFeaturesEXT;\n\n\n#define VK_GOOGLE_hlsl_functionality1 1\n#define VK_GOOGLE_HLSL_FUNCTIONALITY_1_SPEC_VERSION 1\n#define VK_GOOGLE_HLSL_FUNCTIONALITY_1_EXTENSION_NAME \"VK_GOOGLE_hlsl_functionality1\"\n\n\n#define VK_GOOGLE_decorate_string 1\n#define VK_GOOGLE_DECORATE_STRING_SPEC_VERSION 1\n#define VK_GOOGLE_DECORATE_STRING_EXTENSION_NAME \"VK_GOOGLE_decorate_string\"\n\n\n#define VK_EXT_subgroup_size_control 1\n#define VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION 2\n#define VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME \"VK_EXT_subgroup_size_control\"\n\ntypedef VkPhysicalDeviceSubgroupSizeControlFeatures VkPhysicalDeviceSubgroupSizeControlFeaturesEXT;\n\ntypedef VkPhysicalDeviceSubgroupSizeControlProperties VkPhysicalDeviceSubgroupSizeControlPropertiesEXT;\n\ntypedef VkPipelineShaderStageRequiredSubgroupSizeCreateInfo VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT;\n\n\n#define VK_KHR_fragment_shading_rate 1\n#define VK_KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION 2\n#define VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME \"VK_KHR_fragment_shading_rate\"\n\ntypedef enum\n{\n    VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR = 0,\n    VK_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR = 1,\n    VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_KHR = 2,\n    VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_KHR = 3,\n    VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHR = 4,\n    VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkFragmentShadingRateCombinerOpKHR;\n\n\ntypedef struct VkFragmentShadingRateAttachmentInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    const VkAttachmentReference2* pFragmentShadingRateAttachment;\n    VkExtent2D shadingRateAttachmentTexelSize;\n} VkFragmentShadingRateAttachmentInfoKHR;\n\ntypedef struct VkPipelineFragmentShadingRateStateCreateInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkExtent2D fragmentSize;\n    VkFragmentShadingRateCombinerOpKHR combinerOps[2];\n} VkPipelineFragmentShadingRateStateCreateInfoKHR;\n\ntypedef struct VkPhysicalDeviceFragmentShadingRateFeaturesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 pipelineFragmentShadingRate;\n    VkBool32 primitiveFragmentShadingRate;\n    VkBool32 attachmentFragmentShadingRate;\n} VkPhysicalDeviceFragmentShadingRateFeaturesKHR;\n\ntypedef struct VkPhysicalDeviceFragmentShadingRatePropertiesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkExtent2D minFragmentShadingRateAttachmentTexelSize;\n    VkExtent2D maxFragmentShadingRateAttachmentTexelSize;\n    uint32_t maxFragmentShadingRateAttachmentTexelSizeAspectRatio;\n    VkBool32 primitiveFragmentShadingRateWithMultipleViewports;\n    VkBool32 layeredShadingRateAttachments;\n    VkBool32 fragmentShadingRateNonTrivialCombinerOps;\n    VkExtent2D maxFragmentSize;\n    uint32_t maxFragmentSizeAspectRatio;\n    uint32_t maxFragmentShadingRateCoverageSamples;\n    VkSampleCountFlagBits maxFragmentShadingRateRasterizationSamples;\n    VkBool32 fragmentShadingRateWithShaderDepthStencilWrites;\n    VkBool32 fragmentShadingRateWithSampleMask;\n    VkBool32 fragmentShadingRateWithShaderSampleMask;\n    VkBool32 fragmentShadingRateWithConservativeRasterization;\n    VkBool32 fragmentShadingRateWithFragmentShaderInterlock;\n    VkBool32 fragmentShadingRateWithCustomSampleLocations;\n    VkBool32 fragmentShadingRateStrictMultiplyCombiner;\n} VkPhysicalDeviceFragmentShadingRatePropertiesKHR;\n\ntypedef struct VkPhysicalDeviceFragmentShadingRateKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkSampleCountFlags sampleCounts;\n    VkExtent2D fragmentSize;\n} VkPhysicalDeviceFragmentShadingRateKHR;\n\ntypedef struct VkRenderingFragmentShadingRateAttachmentInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkImageView imageView;\n    VkImageLayout imageLayout;\n    VkExtent2D shadingRateAttachmentTexelSize;\n} VkRenderingFragmentShadingRateAttachmentInfoKHR;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pFragmentShadingRateCount, VkPhysicalDeviceFragmentShadingRateKHR* pFragmentShadingRates);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetFragmentShadingRateKHR)(VkCommandBuffer commandBuffer, const VkExtent2D* pFragmentSize, const VkFragmentShadingRateCombinerOpKHR combinerOps[2]);\n\n\n#define VK_AMD_shader_core_properties2 1\n#define VK_AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSION 1\n#define VK_AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME \"VK_AMD_shader_core_properties2\"\n\n\ntypedef enum\n{\n    VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD = 0x7FFFFFFF\n} VkShaderCorePropertiesFlagBitsAMD;\ntypedef VkFlags VkShaderCorePropertiesFlagsAMD;\n\ntypedef struct VkPhysicalDeviceShaderCoreProperties2AMD\n{\n    VkStructureType sType;\n    void* pNext;\n    VkShaderCorePropertiesFlagsAMD shaderCoreFeatures;\n    uint32_t activeComputeUnitCount;\n} VkPhysicalDeviceShaderCoreProperties2AMD;\n\n\n#define VK_AMD_device_coherent_memory 1\n#define VK_AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSION 1\n#define VK_AMD_DEVICE_COHERENT_MEMORY_EXTENSION_NAME \"VK_AMD_device_coherent_memory\"\n\ntypedef struct VkPhysicalDeviceCoherentMemoryFeaturesAMD\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 deviceCoherentMemory;\n} VkPhysicalDeviceCoherentMemoryFeaturesAMD;\n\n\n#define VK_KHR_dynamic_rendering_local_read 1\n#define VK_KHR_DYNAMIC_RENDERING_LOCAL_READ_SPEC_VERSION 1\n#define VK_KHR_DYNAMIC_RENDERING_LOCAL_READ_EXTENSION_NAME \"VK_KHR_dynamic_rendering_local_read\"\n\ntypedef VkPhysicalDeviceDynamicRenderingLocalReadFeatures VkPhysicalDeviceDynamicRenderingLocalReadFeaturesKHR;\n\ntypedef VkRenderingAttachmentLocationInfo VkRenderingAttachmentLocationInfoKHR;\n\ntypedef VkRenderingInputAttachmentIndexInfo VkRenderingInputAttachmentIndexInfoKHR;\n\ntypedef void (VKAPI_PTR *PFN_vkCmdSetRenderingAttachmentLocationsKHR)(VkCommandBuffer commandBuffer, const VkRenderingAttachmentLocationInfo* pLocationInfo);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetRenderingInputAttachmentIndicesKHR)(VkCommandBuffer commandBuffer, const VkRenderingInputAttachmentIndexInfo* pInputAttachmentIndexInfo);\n\n\n#define VK_EXT_shader_image_atomic_int64 1\n#define VK_EXT_SHADER_IMAGE_ATOMIC_INT64_SPEC_VERSION 1\n#define VK_EXT_SHADER_IMAGE_ATOMIC_INT64_EXTENSION_NAME \"VK_EXT_shader_image_atomic_int64\"\n\ntypedef struct VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 shaderImageInt64Atomics;\n    VkBool32 sparseImageInt64Atomics;\n} VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT;\n\n\n#define VK_KHR_shader_quad_control 1\n#define VK_KHR_SHADER_QUAD_CONTROL_SPEC_VERSION 1\n#define VK_KHR_SHADER_QUAD_CONTROL_EXTENSION_NAME \"VK_KHR_shader_quad_control\"\n\ntypedef struct VkPhysicalDeviceShaderQuadControlFeaturesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 shaderQuadControl;\n} VkPhysicalDeviceShaderQuadControlFeaturesKHR;\n\n\n#define VK_KHR_spirv_1_4 1\n#define VK_KHR_SPIRV_1_4_SPEC_VERSION 1\n#define VK_KHR_SPIRV_1_4_EXTENSION_NAME \"VK_KHR_spirv_1_4\"\n\n\n#define VK_EXT_memory_budget 1\n#define VK_EXT_MEMORY_BUDGET_SPEC_VERSION 1\n#define VK_EXT_MEMORY_BUDGET_EXTENSION_NAME \"VK_EXT_memory_budget\"\n\ntypedef struct VkPhysicalDeviceMemoryBudgetPropertiesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkDeviceSize heapBudget[VK_MAX_MEMORY_HEAPS];\n    VkDeviceSize heapUsage[VK_MAX_MEMORY_HEAPS];\n} VkPhysicalDeviceMemoryBudgetPropertiesEXT;\n\n\n#define VK_EXT_memory_priority 1\n#define VK_EXT_MEMORY_PRIORITY_SPEC_VERSION 1\n#define VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME \"VK_EXT_memory_priority\"\n\ntypedef struct VkPhysicalDeviceMemoryPriorityFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 memoryPriority;\n} VkPhysicalDeviceMemoryPriorityFeaturesEXT;\n\ntypedef struct VkMemoryPriorityAllocateInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    float priority;\n} VkMemoryPriorityAllocateInfoEXT;\n\n\n#define VK_KHR_surface_protected_capabilities 1\n#define VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION 1\n#define VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME \"VK_KHR_surface_protected_capabilities\"\n\ntypedef struct VkSurfaceProtectedCapabilitiesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 supportsProtected;\n} VkSurfaceProtectedCapabilitiesKHR;\n\n\n#define VK_NV_dedicated_allocation_image_aliasing 1\n#define VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION 1\n#define VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME \"VK_NV_dedicated_allocation_image_aliasing\"\n\ntypedef struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 dedicatedAllocationImageAliasing;\n} VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV;\n\n\n#define VK_KHR_separate_depth_stencil_layouts 1\n#define VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION 1\n#define VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME \"VK_KHR_separate_depth_stencil_layouts\"\n\ntypedef VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR;\n\ntypedef VkAttachmentReferenceStencilLayout VkAttachmentReferenceStencilLayoutKHR;\n\ntypedef VkAttachmentDescriptionStencilLayout VkAttachmentDescriptionStencilLayoutKHR;\n\n\n#define VK_EXT_tooling_info 1\n#define VK_EXT_TOOLING_INFO_SPEC_VERSION 1\n#define VK_EXT_TOOLING_INFO_EXTENSION_NAME \"VK_EXT_tooling_info\"\n\ntypedef VkToolPurposeFlagBits VkToolPurposeFlagBitsEXT;\ntypedef VkToolPurposeFlags VkToolPurposeFlagsEXT;\ntypedef VkPhysicalDeviceToolProperties VkPhysicalDeviceToolPropertiesEXT;\n\ntypedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceToolPropertiesEXT)(VkPhysicalDevice physicalDevice, uint32_t* pToolCount, VkPhysicalDeviceToolProperties* pToolProperties);\n\n\n#define VK_EXT_separate_stencil_usage 1\n#define VK_EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION 1\n#define VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME \"VK_EXT_separate_stencil_usage\"\n\ntypedef VkImageStencilUsageCreateInfo VkImageStencilUsageCreateInfoEXT;\n\n\n#define VK_EXT_validation_features 1\n#define VK_EXT_VALIDATION_FEATURES_SPEC_VERSION 6\n#define VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME \"VK_EXT_validation_features\"\n\ntypedef enum\n{\n    VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT = 0,\n    VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT = 1,\n    VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT = 2,\n    VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT = 3,\n    VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT = 4,\n    VK_VALIDATION_FEATURE_ENABLE_MAX_ENUM_EXT = 0x7FFFFFFF\n} VkValidationFeatureEnableEXT;\n\ntypedef enum\n{\n    VK_VALIDATION_FEATURE_DISABLE_ALL_EXT = 0,\n    VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT = 1,\n    VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT = 2,\n    VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT = 3,\n    VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT = 4,\n    VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT = 5,\n    VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT = 6,\n    VK_VALIDATION_FEATURE_DISABLE_SHADER_VALIDATION_CACHE_EXT = 7,\n    VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 0x7FFFFFFF\n} VkValidationFeatureDisableEXT;\n\n\ntypedef struct VkValidationFeaturesEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t enabledValidationFeatureCount;\n    const VkValidationFeatureEnableEXT* pEnabledValidationFeatures;\n    uint32_t disabledValidationFeatureCount;\n    const VkValidationFeatureDisableEXT* pDisabledValidationFeatures;\n} VkValidationFeaturesEXT;\n\n\n#define VK_KHR_present_wait 1\n#define VK_KHR_PRESENT_WAIT_SPEC_VERSION 1\n#define VK_KHR_PRESENT_WAIT_EXTENSION_NAME \"VK_KHR_present_wait\"\n\ntypedef struct VkPhysicalDevicePresentWaitFeaturesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 presentWait;\n} VkPhysicalDevicePresentWaitFeaturesKHR;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkWaitForPresentKHR)(VkDevice device, VkSwapchainKHR swapchain, uint64_t presentId, uint64_t timeout);\n\n\n#define VK_NV_cooperative_matrix 1\n#define VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION 1\n#define VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME \"VK_NV_cooperative_matrix\"\n\ntypedef enum\n{\n    VK_COMPONENT_TYPE_FLOAT16_KHR = 0,\n    VK_COMPONENT_TYPE_FLOAT32_KHR = 1,\n    VK_COMPONENT_TYPE_FLOAT64_KHR = 2,\n    VK_COMPONENT_TYPE_SINT8_KHR = 3,\n    VK_COMPONENT_TYPE_SINT16_KHR = 4,\n    VK_COMPONENT_TYPE_SINT32_KHR = 5,\n    VK_COMPONENT_TYPE_SINT64_KHR = 6,\n    VK_COMPONENT_TYPE_UINT8_KHR = 7,\n    VK_COMPONENT_TYPE_UINT16_KHR = 8,\n    VK_COMPONENT_TYPE_UINT32_KHR = 9,\n    VK_COMPONENT_TYPE_UINT64_KHR = 10,\n    VK_COMPONENT_TYPE_BFLOAT16_KHR = 1000141000,\n    VK_COMPONENT_TYPE_SINT8_PACKED_NV = 1000491000,\n    VK_COMPONENT_TYPE_UINT8_PACKED_NV = 1000491001,\n    VK_COMPONENT_TYPE_FLOAT8_E4M3_EXT = 1000491002,\n    VK_COMPONENT_TYPE_FLOAT8_E5M2_EXT = 1000491003,\n    VK_COMPONENT_TYPE_FLOAT16_NV = VK_COMPONENT_TYPE_FLOAT16_KHR,\n    VK_COMPONENT_TYPE_FLOAT32_NV = VK_COMPONENT_TYPE_FLOAT32_KHR,\n    VK_COMPONENT_TYPE_FLOAT64_NV = VK_COMPONENT_TYPE_FLOAT64_KHR,\n    VK_COMPONENT_TYPE_SINT8_NV = VK_COMPONENT_TYPE_SINT8_KHR,\n    VK_COMPONENT_TYPE_SINT16_NV = VK_COMPONENT_TYPE_SINT16_KHR,\n    VK_COMPONENT_TYPE_SINT32_NV = VK_COMPONENT_TYPE_SINT32_KHR,\n    VK_COMPONENT_TYPE_SINT64_NV = VK_COMPONENT_TYPE_SINT64_KHR,\n    VK_COMPONENT_TYPE_UINT8_NV = VK_COMPONENT_TYPE_UINT8_KHR,\n    VK_COMPONENT_TYPE_UINT16_NV = VK_COMPONENT_TYPE_UINT16_KHR,\n    VK_COMPONENT_TYPE_UINT32_NV = VK_COMPONENT_TYPE_UINT32_KHR,\n    VK_COMPONENT_TYPE_UINT64_NV = VK_COMPONENT_TYPE_UINT64_KHR,\n    VK_COMPONENT_TYPE_FLOAT_E4M3_NV = VK_COMPONENT_TYPE_FLOAT8_E4M3_EXT,\n    VK_COMPONENT_TYPE_FLOAT_E5M2_NV = VK_COMPONENT_TYPE_FLOAT8_E5M2_EXT,\n    VK_COMPONENT_TYPE_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkComponentTypeKHR;\n\ntypedef VkComponentTypeKHR VkComponentTypeNV;\ntypedef enum\n{\n    VK_SCOPE_DEVICE_KHR = 1,\n    VK_SCOPE_WORKGROUP_KHR = 2,\n    VK_SCOPE_SUBGROUP_KHR = 3,\n    VK_SCOPE_QUEUE_FAMILY_KHR = 5,\n    VK_SCOPE_DEVICE_NV = VK_SCOPE_DEVICE_KHR,\n    VK_SCOPE_WORKGROUP_NV = VK_SCOPE_WORKGROUP_KHR,\n    VK_SCOPE_SUBGROUP_NV = VK_SCOPE_SUBGROUP_KHR,\n    VK_SCOPE_QUEUE_FAMILY_NV = VK_SCOPE_QUEUE_FAMILY_KHR,\n    VK_SCOPE_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkScopeKHR;\n\ntypedef VkScopeKHR VkScopeNV;\n\ntypedef struct VkCooperativeMatrixPropertiesNV\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t MSize;\n    uint32_t NSize;\n    uint32_t KSize;\n    VkComponentTypeNV AType;\n    VkComponentTypeNV BType;\n    VkComponentTypeNV CType;\n    VkComponentTypeNV DType;\n    VkScopeNV scope;\n} VkCooperativeMatrixPropertiesNV;\n\ntypedef struct VkPhysicalDeviceCooperativeMatrixFeaturesNV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 cooperativeMatrix;\n    VkBool32 cooperativeMatrixRobustBufferAccess;\n} VkPhysicalDeviceCooperativeMatrixFeaturesNV;\n\ntypedef struct VkPhysicalDeviceCooperativeMatrixPropertiesNV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkShaderStageFlags cooperativeMatrixSupportedStages;\n} VkPhysicalDeviceCooperativeMatrixPropertiesNV;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkCooperativeMatrixPropertiesNV* pProperties);\n\n\n#define VK_NV_coverage_reduction_mode 1\n#define VK_NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION 1\n#define VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME \"VK_NV_coverage_reduction_mode\"\n\ntypedef VkFlags VkPipelineCoverageReductionStateCreateFlagsNV;\ntypedef enum\n{\n    VK_COVERAGE_REDUCTION_MODE_MERGE_NV = 0,\n    VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV = 1,\n    VK_COVERAGE_REDUCTION_MODE_MAX_ENUM_NV = 0x7FFFFFFF\n} VkCoverageReductionModeNV;\n\n\ntypedef struct VkPhysicalDeviceCoverageReductionModeFeaturesNV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 coverageReductionMode;\n} VkPhysicalDeviceCoverageReductionModeFeaturesNV;\n\ntypedef struct VkPipelineCoverageReductionStateCreateInfoNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkPipelineCoverageReductionStateCreateFlagsNV flags;\n    VkCoverageReductionModeNV coverageReductionMode;\n} VkPipelineCoverageReductionStateCreateInfoNV;\n\ntypedef struct VkFramebufferMixedSamplesCombinationNV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkCoverageReductionModeNV coverageReductionMode;\n    VkSampleCountFlagBits rasterizationSamples;\n    VkSampleCountFlags depthStencilSamples;\n    VkSampleCountFlags colorSamples;\n} VkFramebufferMixedSamplesCombinationNV;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV)(VkPhysicalDevice physicalDevice, uint32_t* pCombinationCount, VkFramebufferMixedSamplesCombinationNV* pCombinations);\n\n\n#define VK_EXT_fragment_shader_interlock 1\n#define VK_EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION 1\n#define VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME \"VK_EXT_fragment_shader_interlock\"\n\ntypedef struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 fragmentShaderSampleInterlock;\n    VkBool32 fragmentShaderPixelInterlock;\n    VkBool32 fragmentShaderShadingRateInterlock;\n} VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT;\n\n\n#define VK_EXT_ycbcr_image_arrays 1\n#define VK_EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION 1\n#define VK_EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME \"VK_EXT_ycbcr_image_arrays\"\n\ntypedef struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 ycbcrImageArrays;\n} VkPhysicalDeviceYcbcrImageArraysFeaturesEXT;\n\n\n#define VK_KHR_uniform_buffer_standard_layout 1\n#define VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION 1\n#define VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME \"VK_KHR_uniform_buffer_standard_layout\"\n\ntypedef VkPhysicalDeviceUniformBufferStandardLayoutFeatures VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR;\n\n\n#define VK_EXT_provoking_vertex 1\n#define VK_EXT_PROVOKING_VERTEX_SPEC_VERSION 1\n#define VK_EXT_PROVOKING_VERTEX_EXTENSION_NAME \"VK_EXT_provoking_vertex\"\n\ntypedef enum\n{\n    VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT = 0,\n    VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT = 1,\n    VK_PROVOKING_VERTEX_MODE_MAX_ENUM_EXT = 0x7FFFFFFF\n} VkProvokingVertexModeEXT;\n\n\ntypedef struct VkPhysicalDeviceProvokingVertexFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 provokingVertexLast;\n    VkBool32 transformFeedbackPreservesProvokingVertex;\n} VkPhysicalDeviceProvokingVertexFeaturesEXT;\n\ntypedef struct VkPhysicalDeviceProvokingVertexPropertiesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 provokingVertexModePerPipeline;\n    VkBool32 transformFeedbackPreservesTriangleFanProvokingVertex;\n} VkPhysicalDeviceProvokingVertexPropertiesEXT;\n\ntypedef struct VkPipelineRasterizationProvokingVertexStateCreateInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkProvokingVertexModeEXT provokingVertexMode;\n} VkPipelineRasterizationProvokingVertexStateCreateInfoEXT;\n\n\n#define VK_EXT_headless_surface 1\n#define VK_EXT_HEADLESS_SURFACE_SPEC_VERSION 1\n#define VK_EXT_HEADLESS_SURFACE_EXTENSION_NAME \"VK_EXT_headless_surface\"\n\ntypedef VkFlags VkHeadlessSurfaceCreateFlagsEXT;\ntypedef struct VkHeadlessSurfaceCreateInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkHeadlessSurfaceCreateFlagsEXT flags;\n} VkHeadlessSurfaceCreateInfoEXT;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateHeadlessSurfaceEXT)(VkInstance instance, const VkHeadlessSurfaceCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);\n\n\n#define VK_KHR_buffer_device_address 1\n#define VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION 1\n#define VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME \"VK_KHR_buffer_device_address\"\n\ntypedef VkPhysicalDeviceBufferDeviceAddressFeatures VkPhysicalDeviceBufferDeviceAddressFeaturesKHR;\n\ntypedef VkBufferDeviceAddressInfo VkBufferDeviceAddressInfoKHR;\n\ntypedef VkBufferOpaqueCaptureAddressCreateInfo VkBufferOpaqueCaptureAddressCreateInfoKHR;\n\ntypedef VkMemoryOpaqueCaptureAddressAllocateInfo VkMemoryOpaqueCaptureAddressAllocateInfoKHR;\n\ntypedef VkDeviceMemoryOpaqueCaptureAddressInfo VkDeviceMemoryOpaqueCaptureAddressInfoKHR;\n\ntypedef VkDeviceAddress (VKAPI_PTR *PFN_vkGetBufferDeviceAddressKHR)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo);\ntypedef uint64_t (VKAPI_PTR *PFN_vkGetBufferOpaqueCaptureAddressKHR)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo);\ntypedef uint64_t (VKAPI_PTR *PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR)(VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo);\n\n\n#define VK_EXT_buffer_device_address 1\n#define VK_EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION 2\n#define VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME \"VK_EXT_buffer_device_address\"\n\ntypedef struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 bufferDeviceAddress;\n    VkBool32 bufferDeviceAddressCaptureReplay;\n    VkBool32 bufferDeviceAddressMultiDevice;\n} VkPhysicalDeviceBufferDeviceAddressFeaturesEXT;\n\ntypedef VkPhysicalDeviceBufferDeviceAddressFeaturesEXT VkPhysicalDeviceBufferAddressFeaturesEXT;\n\ntypedef VkBufferDeviceAddressInfo VkBufferDeviceAddressInfoEXT;\n\ntypedef struct VkBufferDeviceAddressCreateInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkDeviceAddress deviceAddress;\n} VkBufferDeviceAddressCreateInfoEXT;\n\n\ntypedef VkDeviceAddress (VKAPI_PTR *PFN_vkGetBufferDeviceAddressEXT)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo);\n\n\n#define VK_EXT_shader_atomic_float 1\n#define VK_EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION 1\n#define VK_EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME \"VK_EXT_shader_atomic_float\"\n\ntypedef struct VkPhysicalDeviceShaderAtomicFloatFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 shaderBufferFloat32Atomics;\n    VkBool32 shaderBufferFloat32AtomicAdd;\n    VkBool32 shaderBufferFloat64Atomics;\n    VkBool32 shaderBufferFloat64AtomicAdd;\n    VkBool32 shaderSharedFloat32Atomics;\n    VkBool32 shaderSharedFloat32AtomicAdd;\n    VkBool32 shaderSharedFloat64Atomics;\n    VkBool32 shaderSharedFloat64AtomicAdd;\n    VkBool32 shaderImageFloat32Atomics;\n    VkBool32 shaderImageFloat32AtomicAdd;\n    VkBool32 sparseImageFloat32Atomics;\n    VkBool32 sparseImageFloat32AtomicAdd;\n} VkPhysicalDeviceShaderAtomicFloatFeaturesEXT;\n\n\n#define VK_EXT_host_query_reset 1\n#define VK_EXT_HOST_QUERY_RESET_SPEC_VERSION 1\n#define VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME \"VK_EXT_host_query_reset\"\n\ntypedef VkPhysicalDeviceHostQueryResetFeatures VkPhysicalDeviceHostQueryResetFeaturesEXT;\n\ntypedef void (VKAPI_PTR *PFN_vkResetQueryPoolEXT)(VkDevice device, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount);\n\n\n#define VK_EXT_extended_dynamic_state 1\n#define VK_EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION 1\n#define VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME \"VK_EXT_extended_dynamic_state\"\n\ntypedef struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 extendedDynamicState;\n} VkPhysicalDeviceExtendedDynamicStateFeaturesEXT;\n\n\ntypedef void (VKAPI_PTR *PFN_vkCmdSetCullModeEXT)(VkCommandBuffer commandBuffer, VkCullModeFlags cullMode);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetFrontFaceEXT)(VkCommandBuffer commandBuffer, VkFrontFace frontFace);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetPrimitiveTopologyEXT)(VkCommandBuffer commandBuffer, VkPrimitiveTopology primitiveTopology);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetViewportWithCountEXT)(VkCommandBuffer commandBuffer, uint32_t viewportCount, const VkViewport* pViewports);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetScissorWithCountEXT)(VkCommandBuffer commandBuffer, uint32_t scissorCount, const VkRect2D* pScissors);\ntypedef void (VKAPI_PTR *PFN_vkCmdBindVertexBuffers2EXT)(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets, const VkDeviceSize* pSizes, const VkDeviceSize* pStrides);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetDepthTestEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 depthTestEnable);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetDepthWriteEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 depthWriteEnable);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetDepthCompareOpEXT)(VkCommandBuffer commandBuffer, VkCompareOp depthCompareOp);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetDepthBoundsTestEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 depthBoundsTestEnable);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetStencilTestEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 stencilTestEnable);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetStencilOpEXT)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, VkStencilOp failOp, VkStencilOp passOp, VkStencilOp depthFailOp, VkCompareOp compareOp);\n\n\n#define VK_KHR_deferred_host_operations 1\n#define VK_KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION 4\n#define VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME \"VK_KHR_deferred_host_operations\"\n\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateDeferredOperationKHR)(VkDevice device, const VkAllocationCallbacks* pAllocator, VkDeferredOperationKHR* pDeferredOperation);\ntypedef void (VKAPI_PTR *PFN_vkDestroyDeferredOperationKHR)(VkDevice device, VkDeferredOperationKHR operation, const VkAllocationCallbacks* pAllocator);\ntypedef uint32_t (VKAPI_PTR *PFN_vkGetDeferredOperationMaxConcurrencyKHR)(VkDevice device, VkDeferredOperationKHR operation);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetDeferredOperationResultKHR)(VkDevice device, VkDeferredOperationKHR operation);\ntypedef VkResult (VKAPI_PTR *PFN_vkDeferredOperationJoinKHR)(VkDevice device, VkDeferredOperationKHR operation);\n\n\n#define VK_KHR_pipeline_executable_properties 1\n#define VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION 1\n#define VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME \"VK_KHR_pipeline_executable_properties\"\n\ntypedef enum\n{\n    VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR = 0,\n    VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR = 1,\n    VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR = 2,\n    VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR = 3,\n    VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkPipelineExecutableStatisticFormatKHR;\n\n\ntypedef struct VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 pipelineExecutableInfo;\n} VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR;\n\ntypedef struct VkPipelineInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkPipeline pipeline;\n} VkPipelineInfoKHR;\n\ntypedef struct VkPipelineExecutablePropertiesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkShaderStageFlags stages;\n    char name[VK_MAX_DESCRIPTION_SIZE];\n    char description[VK_MAX_DESCRIPTION_SIZE];\n    uint32_t subgroupSize;\n} VkPipelineExecutablePropertiesKHR;\n\ntypedef struct VkPipelineExecutableInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkPipeline pipeline;\n    uint32_t executableIndex;\n} VkPipelineExecutableInfoKHR;\n\ntypedef union VkPipelineExecutableStatisticValueKHR\n{\n    VkBool32 b32;\n    int64_t i64;\n    uint64_t u64;\n    double f64;\n} VkPipelineExecutableStatisticValueKHR;\n\ntypedef struct VkPipelineExecutableStatisticKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    char name[VK_MAX_DESCRIPTION_SIZE];\n    char description[VK_MAX_DESCRIPTION_SIZE];\n    VkPipelineExecutableStatisticFormatKHR format;\n    VkPipelineExecutableStatisticValueKHR value;\n} VkPipelineExecutableStatisticKHR;\n\ntypedef struct VkPipelineExecutableInternalRepresentationKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    char name[VK_MAX_DESCRIPTION_SIZE];\n    char description[VK_MAX_DESCRIPTION_SIZE];\n    VkBool32 isText;\n    size_t dataSize;\n    void* pData;\n} VkPipelineExecutableInternalRepresentationKHR;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkGetPipelineExecutablePropertiesKHR)(VkDevice device, const VkPipelineInfoKHR* pPipelineInfo, uint32_t* pExecutableCount, VkPipelineExecutablePropertiesKHR* pProperties);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetPipelineExecutableStatisticsKHR)(VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, uint32_t* pStatisticCount, VkPipelineExecutableStatisticKHR* pStatistics);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetPipelineExecutableInternalRepresentationsKHR)(VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, uint32_t* pInternalRepresentationCount, VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations);\n\n\n#define VK_EXT_host_image_copy 1\n#define VK_EXT_HOST_IMAGE_COPY_SPEC_VERSION 1\n#define VK_EXT_HOST_IMAGE_COPY_EXTENSION_NAME \"VK_EXT_host_image_copy\"\n\ntypedef VkHostImageCopyFlagBits VkHostImageCopyFlagBitsEXT;\ntypedef VkHostImageCopyFlags VkHostImageCopyFlagsEXT;\ntypedef VkPhysicalDeviceHostImageCopyFeatures VkPhysicalDeviceHostImageCopyFeaturesEXT;\n\ntypedef VkPhysicalDeviceHostImageCopyProperties VkPhysicalDeviceHostImageCopyPropertiesEXT;\n\ntypedef VkMemoryToImageCopy VkMemoryToImageCopyEXT;\n\ntypedef VkImageToMemoryCopy VkImageToMemoryCopyEXT;\n\ntypedef VkCopyMemoryToImageInfo VkCopyMemoryToImageInfoEXT;\n\ntypedef VkCopyImageToMemoryInfo VkCopyImageToMemoryInfoEXT;\n\ntypedef VkCopyImageToImageInfo VkCopyImageToImageInfoEXT;\n\ntypedef VkHostImageLayoutTransitionInfo VkHostImageLayoutTransitionInfoEXT;\n\ntypedef VkSubresourceHostMemcpySize VkSubresourceHostMemcpySizeEXT;\n\ntypedef VkHostImageCopyDevicePerformanceQuery VkHostImageCopyDevicePerformanceQueryEXT;\n\ntypedef VkSubresourceLayout2 VkSubresourceLayout2EXT;\n\ntypedef VkImageSubresource2 VkImageSubresource2EXT;\n\ntypedef VkResult (VKAPI_PTR *PFN_vkCopyMemoryToImageEXT)(VkDevice device, const VkCopyMemoryToImageInfo* pCopyMemoryToImageInfo);\ntypedef VkResult (VKAPI_PTR *PFN_vkCopyImageToMemoryEXT)(VkDevice device, const VkCopyImageToMemoryInfo* pCopyImageToMemoryInfo);\ntypedef VkResult (VKAPI_PTR *PFN_vkCopyImageToImageEXT)(VkDevice device, const VkCopyImageToImageInfo* pCopyImageToImageInfo);\ntypedef VkResult (VKAPI_PTR *PFN_vkTransitionImageLayoutEXT)(VkDevice device, uint32_t transitionCount, const VkHostImageLayoutTransitionInfo* pTransitions);\ntypedef void (VKAPI_PTR *PFN_vkGetImageSubresourceLayout2EXT)(VkDevice device, VkImage image, const VkImageSubresource2* pSubresource, VkSubresourceLayout2* pLayout);\n\n\n#define VK_KHR_map_memory2 1\n#define VK_KHR_MAP_MEMORY_2_SPEC_VERSION 1\n#define VK_KHR_MAP_MEMORY_2_EXTENSION_NAME \"VK_KHR_map_memory2\"\n\ntypedef VkMemoryUnmapFlagBits VkMemoryUnmapFlagBitsKHR;\ntypedef VkMemoryUnmapFlags VkMemoryUnmapFlagsKHR;\ntypedef VkMemoryMapInfo VkMemoryMapInfoKHR;\n\ntypedef VkMemoryUnmapInfo VkMemoryUnmapInfoKHR;\n\ntypedef VkResult (VKAPI_PTR *PFN_vkMapMemory2KHR)(VkDevice device, const VkMemoryMapInfo* pMemoryMapInfo, void** ppData);\ntypedef VkResult (VKAPI_PTR *PFN_vkUnmapMemory2KHR)(VkDevice device, const VkMemoryUnmapInfo* pMemoryUnmapInfo);\n\n\n#define VK_EXT_map_memory_placed 1\n#define VK_EXT_MAP_MEMORY_PLACED_SPEC_VERSION 1\n#define VK_EXT_MAP_MEMORY_PLACED_EXTENSION_NAME \"VK_EXT_map_memory_placed\"\n\ntypedef struct VkPhysicalDeviceMapMemoryPlacedFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 memoryMapPlaced;\n    VkBool32 memoryMapRangePlaced;\n    VkBool32 memoryUnmapReserve;\n} VkPhysicalDeviceMapMemoryPlacedFeaturesEXT;\n\ntypedef struct VkPhysicalDeviceMapMemoryPlacedPropertiesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkDeviceSize minPlacedMemoryMapAlignment;\n} VkPhysicalDeviceMapMemoryPlacedPropertiesEXT;\n\ntypedef struct VkMemoryMapPlacedInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    void* pPlacedAddress;\n} VkMemoryMapPlacedInfoEXT;\n\n\n#define VK_EXT_shader_atomic_float2 1\n#define VK_EXT_SHADER_ATOMIC_FLOAT_2_SPEC_VERSION 1\n#define VK_EXT_SHADER_ATOMIC_FLOAT_2_EXTENSION_NAME \"VK_EXT_shader_atomic_float2\"\n\ntypedef struct VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 shaderBufferFloat16Atomics;\n    VkBool32 shaderBufferFloat16AtomicAdd;\n    VkBool32 shaderBufferFloat16AtomicMinMax;\n    VkBool32 shaderBufferFloat32AtomicMinMax;\n    VkBool32 shaderBufferFloat64AtomicMinMax;\n    VkBool32 shaderSharedFloat16Atomics;\n    VkBool32 shaderSharedFloat16AtomicAdd;\n    VkBool32 shaderSharedFloat16AtomicMinMax;\n    VkBool32 shaderSharedFloat32AtomicMinMax;\n    VkBool32 shaderSharedFloat64AtomicMinMax;\n    VkBool32 shaderImageFloat32AtomicMinMax;\n    VkBool32 sparseImageFloat32AtomicMinMax;\n} VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT;\n\n\n#define VK_EXT_shader_demote_to_helper_invocation 1\n#define VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION 1\n#define VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME \"VK_EXT_shader_demote_to_helper_invocation\"\n\ntypedef VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT;\n\n\n#define VK_NV_device_generated_commands 1\n#define VK_NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION 3\n#define VK_NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME \"VK_NV_device_generated_commands\"\n\nVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkIndirectCommandsLayoutNV)\n\n\ntypedef enum\n{\n    VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 0x00000001,\n    VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF\n} VkIndirectStateFlagBitsNV;\ntypedef VkFlags VkIndirectStateFlagsNV;\ntypedef enum\n{\n    VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV = 0,\n    VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV = 1,\n    VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV = 2,\n    VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV = 3,\n    VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV = 4,\n    VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV = 5,\n    VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV = 6,\n    VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV = 7,\n    VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_NV = 1000135000,\n    VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV = 1000328000,\n    VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NV = 1000428003,\n    VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NV = 1000428004,\n    VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 0x7FFFFFFF\n} VkIndirectCommandsTokenTypeNV;\n\n\ntypedef enum\n{\n    VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV = 0x00000001,\n    VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV = 0x00000002,\n    VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV = 0x00000004,\n    VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF\n} VkIndirectCommandsLayoutUsageFlagBitsNV;\ntypedef VkFlags VkIndirectCommandsLayoutUsageFlagsNV;\n\ntypedef struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t maxGraphicsShaderGroupCount;\n    uint32_t maxIndirectSequenceCount;\n    uint32_t maxIndirectCommandsTokenCount;\n    uint32_t maxIndirectCommandsStreamCount;\n    uint32_t maxIndirectCommandsTokenOffset;\n    uint32_t maxIndirectCommandsStreamStride;\n    uint32_t minSequencesCountBufferOffsetAlignment;\n    uint32_t minSequencesIndexBufferOffsetAlignment;\n    uint32_t minIndirectCommandsBufferOffsetAlignment;\n} VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV;\n\ntypedef struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 deviceGeneratedCommands;\n} VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV;\n\ntypedef struct VkGraphicsShaderGroupCreateInfoNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t stageCount;\n    const VkPipelineShaderStageCreateInfo* pStages;\n    const VkPipelineVertexInputStateCreateInfo* pVertexInputState;\n    const VkPipelineTessellationStateCreateInfo* pTessellationState;\n} VkGraphicsShaderGroupCreateInfoNV;\n\ntypedef struct VkGraphicsPipelineShaderGroupsCreateInfoNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t groupCount;\n    const VkGraphicsShaderGroupCreateInfoNV* pGroups;\n    uint32_t pipelineCount;\n    const VkPipeline* pPipelines;\n} VkGraphicsPipelineShaderGroupsCreateInfoNV;\n\ntypedef struct VkBindShaderGroupIndirectCommandNV\n{\n    uint32_t groupIndex;\n} VkBindShaderGroupIndirectCommandNV;\n\ntypedef struct VkBindIndexBufferIndirectCommandNV\n{\n    VkDeviceAddress bufferAddress;\n    uint32_t size;\n    VkIndexType indexType;\n} VkBindIndexBufferIndirectCommandNV;\n\ntypedef struct VkBindVertexBufferIndirectCommandNV\n{\n    VkDeviceAddress bufferAddress;\n    uint32_t size;\n    uint32_t stride;\n} VkBindVertexBufferIndirectCommandNV;\n\ntypedef struct VkSetStateFlagsIndirectCommandNV\n{\n    uint32_t data;\n} VkSetStateFlagsIndirectCommandNV;\n\ntypedef struct VkIndirectCommandsStreamNV\n{\n    VkBuffer buffer;\n    VkDeviceSize offset;\n} VkIndirectCommandsStreamNV;\n\ntypedef struct VkIndirectCommandsLayoutTokenNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkIndirectCommandsTokenTypeNV tokenType;\n    uint32_t stream;\n    uint32_t offset;\n    uint32_t vertexBindingUnit;\n    VkBool32 vertexDynamicStride;\n    VkPipelineLayout pushconstantPipelineLayout;\n    VkShaderStageFlags pushconstantShaderStageFlags;\n    uint32_t pushconstantOffset;\n    uint32_t pushconstantSize;\n    VkIndirectStateFlagsNV indirectStateFlags;\n    uint32_t indexTypeCount;\n    const VkIndexType* pIndexTypes;\n    const uint32_t* pIndexTypeValues;\n} VkIndirectCommandsLayoutTokenNV;\n\ntypedef struct VkIndirectCommandsLayoutCreateInfoNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkIndirectCommandsLayoutUsageFlagsNV flags;\n    VkPipelineBindPoint pipelineBindPoint;\n    uint32_t tokenCount;\n    const VkIndirectCommandsLayoutTokenNV* pTokens;\n    uint32_t streamCount;\n    const uint32_t* pStreamStrides;\n} VkIndirectCommandsLayoutCreateInfoNV;\n\ntypedef struct VkGeneratedCommandsInfoNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkPipelineBindPoint pipelineBindPoint;\n    VkPipeline pipeline;\n    VkIndirectCommandsLayoutNV indirectCommandsLayout;\n    uint32_t streamCount;\n    const VkIndirectCommandsStreamNV* pStreams;\n    uint32_t sequencesCount;\n    VkBuffer preprocessBuffer;\n    VkDeviceSize preprocessOffset;\n    VkDeviceSize preprocessSize;\n    VkBuffer sequencesCountBuffer;\n    VkDeviceSize sequencesCountOffset;\n    VkBuffer sequencesIndexBuffer;\n    VkDeviceSize sequencesIndexOffset;\n} VkGeneratedCommandsInfoNV;\n\ntypedef struct VkGeneratedCommandsMemoryRequirementsInfoNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkPipelineBindPoint pipelineBindPoint;\n    VkPipeline pipeline;\n    VkIndirectCommandsLayoutNV indirectCommandsLayout;\n    uint32_t maxSequencesCount;\n} VkGeneratedCommandsMemoryRequirementsInfoNV;\n\n\ntypedef void (VKAPI_PTR *PFN_vkGetGeneratedCommandsMemoryRequirementsNV)(VkDevice device, const VkGeneratedCommandsMemoryRequirementsInfoNV* pInfo, VkMemoryRequirements2* pMemoryRequirements);\ntypedef void (VKAPI_PTR *PFN_vkCmdPreprocessGeneratedCommandsNV)(VkCommandBuffer commandBuffer, const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo);\ntypedef void (VKAPI_PTR *PFN_vkCmdExecuteGeneratedCommandsNV)(VkCommandBuffer commandBuffer, VkBool32 isPreprocessed, const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo);\ntypedef void (VKAPI_PTR *PFN_vkCmdBindPipelineShaderGroupNV)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline, uint32_t groupIndex);\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateIndirectCommandsLayoutNV)(VkDevice device, const VkIndirectCommandsLayoutCreateInfoNV* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkIndirectCommandsLayoutNV* pIndirectCommandsLayout);\ntypedef void (VKAPI_PTR *PFN_vkDestroyIndirectCommandsLayoutNV)(VkDevice device, VkIndirectCommandsLayoutNV indirectCommandsLayout, const VkAllocationCallbacks* pAllocator);\n\n\n#define VK_NV_inherited_viewport_scissor 1\n#define VK_NV_INHERITED_VIEWPORT_SCISSOR_SPEC_VERSION 1\n#define VK_NV_INHERITED_VIEWPORT_SCISSOR_EXTENSION_NAME \"VK_NV_inherited_viewport_scissor\"\n\ntypedef struct VkPhysicalDeviceInheritedViewportScissorFeaturesNV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 inheritedViewportScissor2D;\n} VkPhysicalDeviceInheritedViewportScissorFeaturesNV;\n\ntypedef struct VkCommandBufferInheritanceViewportScissorInfoNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkBool32 viewportScissor2D;\n    uint32_t viewportDepthCount;\n    const VkViewport* pViewportDepths;\n} VkCommandBufferInheritanceViewportScissorInfoNV;\n\n\n#define VK_KHR_shader_integer_dot_product 1\n#define VK_KHR_SHADER_INTEGER_DOT_PRODUCT_SPEC_VERSION 1\n#define VK_KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME \"VK_KHR_shader_integer_dot_product\"\n\ntypedef VkPhysicalDeviceShaderIntegerDotProductFeatures VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR;\n\ntypedef VkPhysicalDeviceShaderIntegerDotProductProperties VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR;\n\n\n#define VK_EXT_texel_buffer_alignment 1\n#define VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION 1\n#define VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME \"VK_EXT_texel_buffer_alignment\"\n\ntypedef struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 texelBufferAlignment;\n} VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT;\n\ntypedef VkPhysicalDeviceTexelBufferAlignmentProperties VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT;\n\n\n#define VK_QCOM_render_pass_transform 1\n#define VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION 5\n#define VK_QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME \"VK_QCOM_render_pass_transform\"\n\ntypedef struct VkRenderPassTransformBeginInfoQCOM\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkSurfaceTransformFlagBitsKHR transform;\n} VkRenderPassTransformBeginInfoQCOM;\n\ntypedef struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkSurfaceTransformFlagBitsKHR transform;\n    VkRect2D renderArea;\n} VkCommandBufferInheritanceRenderPassTransformInfoQCOM;\n\n\n#define VK_EXT_depth_bias_control 1\n#define VK_EXT_DEPTH_BIAS_CONTROL_SPEC_VERSION 1\n#define VK_EXT_DEPTH_BIAS_CONTROL_EXTENSION_NAME \"VK_EXT_depth_bias_control\"\n\ntypedef enum\n{\n    VK_DEPTH_BIAS_REPRESENTATION_LEAST_REPRESENTABLE_VALUE_FORMAT_EXT = 0,\n    VK_DEPTH_BIAS_REPRESENTATION_LEAST_REPRESENTABLE_VALUE_FORCE_UNORM_EXT = 1,\n    VK_DEPTH_BIAS_REPRESENTATION_FLOAT_EXT = 2,\n    VK_DEPTH_BIAS_REPRESENTATION_MAX_ENUM_EXT = 0x7FFFFFFF\n} VkDepthBiasRepresentationEXT;\n\n\ntypedef struct VkPhysicalDeviceDepthBiasControlFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 depthBiasControl;\n    VkBool32 leastRepresentableValueForceUnormRepresentation;\n    VkBool32 floatRepresentation;\n    VkBool32 depthBiasExact;\n} VkPhysicalDeviceDepthBiasControlFeaturesEXT;\n\ntypedef struct VkDepthBiasInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    float depthBiasConstantFactor;\n    float depthBiasClamp;\n    float depthBiasSlopeFactor;\n} VkDepthBiasInfoEXT;\n\ntypedef struct VkDepthBiasRepresentationInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkDepthBiasRepresentationEXT depthBiasRepresentation;\n    VkBool32 depthBiasExact;\n} VkDepthBiasRepresentationInfoEXT;\n\n\ntypedef void (VKAPI_PTR *PFN_vkCmdSetDepthBias2EXT)(VkCommandBuffer commandBuffer, const VkDepthBiasInfoEXT* pDepthBiasInfo);\n\n\n#define VK_EXT_device_memory_report 1\n#define VK_EXT_DEVICE_MEMORY_REPORT_SPEC_VERSION 2\n#define VK_EXT_DEVICE_MEMORY_REPORT_EXTENSION_NAME \"VK_EXT_device_memory_report\"\n\ntypedef VkFlags VkDeviceMemoryReportFlagsEXT;\ntypedef enum\n{\n    VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATE_EXT = 0,\n    VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_FREE_EXT = 1,\n    VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_IMPORT_EXT = 2,\n    VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_UNIMPORT_EXT = 3,\n    VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATION_FAILED_EXT = 4,\n    VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF\n} VkDeviceMemoryReportEventTypeEXT;\n\n\ntypedef struct VkPhysicalDeviceDeviceMemoryReportFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 deviceMemoryReport;\n} VkPhysicalDeviceDeviceMemoryReportFeaturesEXT;\n\ntypedef struct VkDeviceMemoryReportCallbackDataEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkDeviceMemoryReportFlagsEXT flags;\n    VkDeviceMemoryReportEventTypeEXT type;\n    uint64_t memoryObjectId;\n    VkDeviceSize size;\n    VkObjectType objectType;\n    uint64_t objectHandle;\n    uint32_t heapIndex;\n} VkDeviceMemoryReportCallbackDataEXT;\n\ntypedef void (VKAPI_PTR *PFN_vkDeviceMemoryReportCallbackEXT)(const VkDeviceMemoryReportCallbackDataEXT* pCallbackData, void* pUserData);\n\ntypedef struct VkDeviceDeviceMemoryReportCreateInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkDeviceMemoryReportFlagsEXT flags;\n    PFN_vkDeviceMemoryReportCallbackEXT pfnUserCallback;\n    void* pUserData;\n} VkDeviceDeviceMemoryReportCreateInfoEXT;\n\n\n#define VK_EXT_acquire_drm_display 1\n#define VK_EXT_ACQUIRE_DRM_DISPLAY_SPEC_VERSION 1\n#define VK_EXT_ACQUIRE_DRM_DISPLAY_EXTENSION_NAME \"VK_EXT_acquire_drm_display\"\n\ntypedef VkResult (VKAPI_PTR *PFN_vkAcquireDrmDisplayEXT)(VkPhysicalDevice physicalDevice, int32_t drmFd, VkDisplayKHR display);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetDrmDisplayEXT)(VkPhysicalDevice physicalDevice, int32_t drmFd, uint32_t connectorId, VkDisplayKHR* display);\n\n\n#define VK_EXT_custom_border_color 1\n#define VK_EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION 12\n#define VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME \"VK_EXT_custom_border_color\"\n\ntypedef struct VkPhysicalDeviceCustomBorderColorPropertiesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t maxCustomBorderColorSamplers;\n} VkPhysicalDeviceCustomBorderColorPropertiesEXT;\n\ntypedef struct VkPhysicalDeviceCustomBorderColorFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 customBorderColors;\n    VkBool32 customBorderColorWithoutFormat;\n} VkPhysicalDeviceCustomBorderColorFeaturesEXT;\n\n\n#define VK_EXT_texture_compression_astc_3d 1\n#define VK_EXT_TEXTURE_COMPRESSION_ASTC_3D_SPEC_VERSION 1\n#define VK_EXT_TEXTURE_COMPRESSION_ASTC_3D_EXTENSION_NAME \"VK_EXT_texture_compression_astc_3d\"\n\ntypedef struct VkPhysicalDeviceTextureCompressionASTC3DFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 textureCompressionASTC_3D;\n} VkPhysicalDeviceTextureCompressionASTC3DFeaturesEXT;\n\n\n#define VK_GOOGLE_user_type 1\n#define VK_GOOGLE_USER_TYPE_SPEC_VERSION 1\n#define VK_GOOGLE_USER_TYPE_EXTENSION_NAME \"VK_GOOGLE_user_type\"\n\n\n#define VK_KHR_pipeline_library 1\n#define VK_KHR_PIPELINE_LIBRARY_SPEC_VERSION 1\n#define VK_KHR_PIPELINE_LIBRARY_EXTENSION_NAME \"VK_KHR_pipeline_library\"\n\n\n#define VK_NV_present_barrier 1\n#define VK_NV_PRESENT_BARRIER_SPEC_VERSION 1\n#define VK_NV_PRESENT_BARRIER_EXTENSION_NAME \"VK_NV_present_barrier\"\n\ntypedef struct VkPhysicalDevicePresentBarrierFeaturesNV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 presentBarrier;\n} VkPhysicalDevicePresentBarrierFeaturesNV;\n\ntypedef struct VkSurfaceCapabilitiesPresentBarrierNV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 presentBarrierSupported;\n} VkSurfaceCapabilitiesPresentBarrierNV;\n\ntypedef struct VkSwapchainPresentBarrierCreateInfoNV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 presentBarrierEnable;\n} VkSwapchainPresentBarrierCreateInfoNV;\n\n\n#define VK_KHR_shader_non_semantic_info 1\n#define VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION 1\n#define VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME \"VK_KHR_shader_non_semantic_info\"\n\n\n#define VK_KHR_present_id 1\n#define VK_KHR_PRESENT_ID_SPEC_VERSION 1\n#define VK_KHR_PRESENT_ID_EXTENSION_NAME \"VK_KHR_present_id\"\n\ntypedef struct VkPresentIdKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t swapchainCount;\n    const uint64_t* pPresentIds;\n} VkPresentIdKHR;\n\ntypedef struct VkPhysicalDevicePresentIdFeaturesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 presentId;\n} VkPhysicalDevicePresentIdFeaturesKHR;\n\n\n#define VK_EXT_private_data 1\n#define VK_EXT_PRIVATE_DATA_SPEC_VERSION 1\n#define VK_EXT_PRIVATE_DATA_EXTENSION_NAME \"VK_EXT_private_data\"\n\ntypedef VkPrivateDataSlot VkPrivateDataSlotEXT;\ntypedef VkPrivateDataSlotCreateFlags VkPrivateDataSlotCreateFlagsEXT;\ntypedef VkPhysicalDevicePrivateDataFeatures VkPhysicalDevicePrivateDataFeaturesEXT;\n\ntypedef VkDevicePrivateDataCreateInfo VkDevicePrivateDataCreateInfoEXT;\n\ntypedef VkPrivateDataSlotCreateInfo VkPrivateDataSlotCreateInfoEXT;\n\ntypedef VkResult (VKAPI_PTR *PFN_vkCreatePrivateDataSlotEXT)(VkDevice device, const VkPrivateDataSlotCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPrivateDataSlot* pPrivateDataSlot);\ntypedef void (VKAPI_PTR *PFN_vkDestroyPrivateDataSlotEXT)(VkDevice device, VkPrivateDataSlot privateDataSlot, const VkAllocationCallbacks* pAllocator);\ntypedef VkResult (VKAPI_PTR *PFN_vkSetPrivateDataEXT)(VkDevice device, VkObjectType objectType, uint64_t objectHandle, VkPrivateDataSlot privateDataSlot, uint64_t data);\ntypedef void (VKAPI_PTR *PFN_vkGetPrivateDataEXT)(VkDevice device, VkObjectType objectType, uint64_t objectHandle, VkPrivateDataSlot privateDataSlot, uint64_t* pData);\n\n\n#define VK_EXT_pipeline_creation_cache_control 1\n#define VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION 3\n#define VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME \"VK_EXT_pipeline_creation_cache_control\"\n\ntypedef VkPhysicalDevicePipelineCreationCacheControlFeatures VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT;\n\n\n#define VK_KHR_video_encode_queue 1\n#define VK_KHR_VIDEO_ENCODE_QUEUE_SPEC_VERSION 12\n#define VK_KHR_VIDEO_ENCODE_QUEUE_EXTENSION_NAME \"VK_KHR_video_encode_queue\"\n\n\ntypedef enum\n{\n    VK_VIDEO_ENCODE_INTRA_REFRESH_BIT_KHR = 0x00000004,\n    VK_VIDEO_ENCODE_WITH_QUANTIZATION_DELTA_MAP_BIT_KHR = 0x00000001,\n    VK_VIDEO_ENCODE_WITH_EMPHASIS_MAP_BIT_KHR = 0x00000002,\n    VK_VIDEO_ENCODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkVideoEncodeFlagBitsKHR;\ntypedef VkFlags VkVideoEncodeFlagsKHR;\n\ntypedef enum\n{\n    VK_VIDEO_ENCODE_CAPABILITY_PRECEDING_EXTERNALLY_ENCODED_BYTES_BIT_KHR = 0x00000001,\n    VK_VIDEO_ENCODE_CAPABILITY_INSUFFICIENT_BITSTREAM_BUFFER_RANGE_DETECTION_BIT_KHR = 0x00000002,\n    VK_VIDEO_ENCODE_CAPABILITY_QUANTIZATION_DELTA_MAP_BIT_KHR = 0x00000004,\n    VK_VIDEO_ENCODE_CAPABILITY_EMPHASIS_MAP_BIT_KHR = 0x00000008,\n    VK_VIDEO_ENCODE_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkVideoEncodeCapabilityFlagBitsKHR;\ntypedef VkFlags VkVideoEncodeCapabilityFlagsKHR;\n\ntypedef enum\n{\n    VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DEFAULT_KHR = 0,\n    VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DISABLED_BIT_KHR = 0x00000001,\n    VK_VIDEO_ENCODE_RATE_CONTROL_MODE_CBR_BIT_KHR = 0x00000002,\n    VK_VIDEO_ENCODE_RATE_CONTROL_MODE_VBR_BIT_KHR = 0x00000004,\n    VK_VIDEO_ENCODE_RATE_CONTROL_MODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkVideoEncodeRateControlModeFlagBitsKHR;\ntypedef VkFlags VkVideoEncodeRateControlModeFlagsKHR;\n\ntypedef enum\n{\n    VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BUFFER_OFFSET_BIT_KHR = 0x00000001,\n    VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BYTES_WRITTEN_BIT_KHR = 0x00000002,\n    VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_HAS_OVERRIDES_BIT_KHR = 0x00000004,\n    VK_VIDEO_ENCODE_FEEDBACK_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkVideoEncodeFeedbackFlagBitsKHR;\ntypedef VkFlags VkVideoEncodeFeedbackFlagsKHR;\n\ntypedef enum\n{\n    VK_VIDEO_ENCODE_USAGE_DEFAULT_KHR = 0,\n    VK_VIDEO_ENCODE_USAGE_TRANSCODING_BIT_KHR = 0x00000001,\n    VK_VIDEO_ENCODE_USAGE_STREAMING_BIT_KHR = 0x00000002,\n    VK_VIDEO_ENCODE_USAGE_RECORDING_BIT_KHR = 0x00000004,\n    VK_VIDEO_ENCODE_USAGE_CONFERENCING_BIT_KHR = 0x00000008,\n    VK_VIDEO_ENCODE_USAGE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkVideoEncodeUsageFlagBitsKHR;\ntypedef VkFlags VkVideoEncodeUsageFlagsKHR;\n\ntypedef enum\n{\n    VK_VIDEO_ENCODE_CONTENT_DEFAULT_KHR = 0,\n    VK_VIDEO_ENCODE_CONTENT_CAMERA_BIT_KHR = 0x00000001,\n    VK_VIDEO_ENCODE_CONTENT_DESKTOP_BIT_KHR = 0x00000002,\n    VK_VIDEO_ENCODE_CONTENT_RENDERED_BIT_KHR = 0x00000004,\n    VK_VIDEO_ENCODE_CONTENT_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkVideoEncodeContentFlagBitsKHR;\ntypedef VkFlags VkVideoEncodeContentFlagsKHR;\ntypedef enum\n{\n    VK_VIDEO_ENCODE_TUNING_MODE_DEFAULT_KHR = 0,\n    VK_VIDEO_ENCODE_TUNING_MODE_HIGH_QUALITY_KHR = 1,\n    VK_VIDEO_ENCODE_TUNING_MODE_LOW_LATENCY_KHR = 2,\n    VK_VIDEO_ENCODE_TUNING_MODE_ULTRA_LOW_LATENCY_KHR = 3,\n    VK_VIDEO_ENCODE_TUNING_MODE_LOSSLESS_KHR = 4,\n    VK_VIDEO_ENCODE_TUNING_MODE_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkVideoEncodeTuningModeKHR;\n\ntypedef VkFlags VkVideoEncodeRateControlFlagsKHR;\n\ntypedef struct VkVideoEncodeInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkVideoEncodeFlagsKHR flags;\n    VkBuffer dstBuffer;\n    VkDeviceSize dstBufferOffset;\n    VkDeviceSize dstBufferRange;\n    VkVideoPictureResourceInfoKHR srcPictureResource;\n    const VkVideoReferenceSlotInfoKHR* pSetupReferenceSlot;\n    uint32_t referenceSlotCount;\n    const VkVideoReferenceSlotInfoKHR* pReferenceSlots;\n    uint32_t precedingExternallyEncodedBytes;\n} VkVideoEncodeInfoKHR;\n\ntypedef struct VkVideoEncodeCapabilitiesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkVideoEncodeCapabilityFlagsKHR flags;\n    VkVideoEncodeRateControlModeFlagsKHR rateControlModes;\n    uint32_t maxRateControlLayers;\n    uint64_t maxBitrate;\n    uint32_t maxQualityLevels;\n    VkExtent2D encodeInputPictureGranularity;\n    VkVideoEncodeFeedbackFlagsKHR supportedEncodeFeedbackFlags;\n} VkVideoEncodeCapabilitiesKHR;\n\ntypedef struct VkQueryPoolVideoEncodeFeedbackCreateInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkVideoEncodeFeedbackFlagsKHR encodeFeedbackFlags;\n} VkQueryPoolVideoEncodeFeedbackCreateInfoKHR;\n\ntypedef struct VkVideoEncodeUsageInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkVideoEncodeUsageFlagsKHR videoUsageHints;\n    VkVideoEncodeContentFlagsKHR videoContentHints;\n    VkVideoEncodeTuningModeKHR tuningMode;\n} VkVideoEncodeUsageInfoKHR;\n\ntypedef struct VkVideoEncodeRateControlLayerInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint64_t averageBitrate;\n    uint64_t maxBitrate;\n    uint32_t frameRateNumerator;\n    uint32_t frameRateDenominator;\n} VkVideoEncodeRateControlLayerInfoKHR;\n\ntypedef struct VkVideoEncodeRateControlInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkVideoEncodeRateControlFlagsKHR flags;\n    VkVideoEncodeRateControlModeFlagBitsKHR rateControlMode;\n    uint32_t layerCount;\n    const VkVideoEncodeRateControlLayerInfoKHR* pLayers;\n    uint32_t virtualBufferSizeInMs;\n    uint32_t initialVirtualBufferSizeInMs;\n} VkVideoEncodeRateControlInfoKHR;\n\ntypedef struct VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    const VkVideoProfileInfoKHR* pVideoProfile;\n    uint32_t qualityLevel;\n} VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR;\n\ntypedef struct VkVideoEncodeQualityLevelPropertiesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkVideoEncodeRateControlModeFlagBitsKHR preferredRateControlMode;\n    uint32_t preferredRateControlLayerCount;\n} VkVideoEncodeQualityLevelPropertiesKHR;\n\ntypedef struct VkVideoEncodeQualityLevelInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t qualityLevel;\n} VkVideoEncodeQualityLevelInfoKHR;\n\ntypedef struct VkVideoEncodeSessionParametersGetInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkVideoSessionParametersKHR videoSessionParameters;\n} VkVideoEncodeSessionParametersGetInfoKHR;\n\ntypedef struct VkVideoEncodeSessionParametersFeedbackInfoKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 hasOverrides;\n} VkVideoEncodeSessionParametersFeedbackInfoKHR;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR* pQualityLevelInfo, VkVideoEncodeQualityLevelPropertiesKHR* pQualityLevelProperties);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetEncodedVideoSessionParametersKHR)(VkDevice device, const VkVideoEncodeSessionParametersGetInfoKHR* pVideoSessionParametersInfo, VkVideoEncodeSessionParametersFeedbackInfoKHR* pFeedbackInfo, size_t* pDataSize, void* pData);\ntypedef void (VKAPI_PTR *PFN_vkCmdEncodeVideoKHR)(VkCommandBuffer commandBuffer, const VkVideoEncodeInfoKHR* pEncodeInfo);\n\n\n#define VK_NV_device_diagnostics_config 1\n#define VK_NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION 2\n#define VK_NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME \"VK_NV_device_diagnostics_config\"\n\n\ntypedef enum\n{\n    VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV = 0x00000001,\n    VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV = 0x00000002,\n    VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV = 0x00000004,\n    VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_ERROR_REPORTING_BIT_NV = 0x00000008,\n    VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF\n} VkDeviceDiagnosticsConfigFlagBitsNV;\ntypedef VkFlags VkDeviceDiagnosticsConfigFlagsNV;\n\ntypedef struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 diagnosticsConfig;\n} VkPhysicalDeviceDiagnosticsConfigFeaturesNV;\n\ntypedef struct VkDeviceDiagnosticsConfigCreateInfoNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkDeviceDiagnosticsConfigFlagsNV flags;\n} VkDeviceDiagnosticsConfigCreateInfoNV;\n\n\n#define VK_QCOM_render_pass_store_ops 1\n#define VK_QCOM_RENDER_PASS_STORE_OPS_SPEC_VERSION 2\n#define VK_QCOM_RENDER_PASS_STORE_OPS_EXTENSION_NAME \"VK_QCOM_render_pass_store_ops\"\n\n\n#define VK_KHR_object_refresh 1\n#define VK_KHR_OBJECT_REFRESH_SPEC_VERSION 1\n#define VK_KHR_OBJECT_REFRESH_EXTENSION_NAME \"VK_KHR_object_refresh\"\n\n\ntypedef enum\n{\n    VK_REFRESH_OBJECT_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkRefreshObjectFlagBitsKHR;\ntypedef VkFlags VkRefreshObjectFlagsKHR;\n\ntypedef struct VkRefreshObjectKHR\n{\n    VkObjectType objectType;\n    uint64_t objectHandle;\n    VkRefreshObjectFlagsKHR flags;\n} VkRefreshObjectKHR;\n\ntypedef struct VkRefreshObjectListKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t objectCount;\n    const VkRefreshObjectKHR* pObjects;\n} VkRefreshObjectListKHR;\n\n\ntypedef void (VKAPI_PTR *PFN_vkCmdRefreshObjectsKHR)(VkCommandBuffer commandBuffer, const VkRefreshObjectListKHR* pRefreshObjects);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceRefreshableObjectTypesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pRefreshableObjectTypeCount, VkObjectType* pRefreshableObjectTypes);\n\n\n#define VK_QCOM_tile_shading 1\n#define VK_QCOM_TILE_SHADING_SPEC_VERSION 2\n#define VK_QCOM_TILE_SHADING_EXTENSION_NAME \"VK_QCOM_tile_shading\"\n\n\ntypedef enum\n{\n    VK_TILE_SHADING_RENDER_PASS_ENABLE_BIT_QCOM = 0x00000001,\n    VK_TILE_SHADING_RENDER_PASS_PER_TILE_EXECUTION_BIT_QCOM = 0x00000002,\n    VK_TILE_SHADING_RENDER_PASS_FLAG_BITS_MAX_ENUM_QCOM = 0x7FFFFFFF\n} VkTileShadingRenderPassFlagBitsQCOM;\ntypedef VkFlags VkTileShadingRenderPassFlagsQCOM;\n\ntypedef struct VkPhysicalDeviceTileShadingFeaturesQCOM\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 tileShading;\n    VkBool32 tileShadingFragmentStage;\n    VkBool32 tileShadingColorAttachments;\n    VkBool32 tileShadingDepthAttachments;\n    VkBool32 tileShadingStencilAttachments;\n    VkBool32 tileShadingInputAttachments;\n    VkBool32 tileShadingSampledAttachments;\n    VkBool32 tileShadingPerTileDraw;\n    VkBool32 tileShadingPerTileDispatch;\n    VkBool32 tileShadingDispatchTile;\n    VkBool32 tileShadingApron;\n    VkBool32 tileShadingAnisotropicApron;\n    VkBool32 tileShadingAtomicOps;\n    VkBool32 tileShadingImageProcessing;\n} VkPhysicalDeviceTileShadingFeaturesQCOM;\n\ntypedef struct VkPhysicalDeviceTileShadingPropertiesQCOM\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t maxApronSize;\n    VkBool32 preferNonCoherent;\n    VkExtent2D tileGranularity;\n    VkExtent2D maxTileShadingRate;\n} VkPhysicalDeviceTileShadingPropertiesQCOM;\n\ntypedef struct VkRenderPassTileShadingCreateInfoQCOM\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkTileShadingRenderPassFlagsQCOM flags;\n    VkExtent2D tileApronSize;\n} VkRenderPassTileShadingCreateInfoQCOM;\n\ntypedef struct VkPerTileBeginInfoQCOM\n{\n    VkStructureType sType;\n    const void* pNext;\n} VkPerTileBeginInfoQCOM;\n\ntypedef struct VkPerTileEndInfoQCOM\n{\n    VkStructureType sType;\n    const void* pNext;\n} VkPerTileEndInfoQCOM;\n\ntypedef struct VkDispatchTileInfoQCOM\n{\n    VkStructureType sType;\n    const void* pNext;\n} VkDispatchTileInfoQCOM;\n\n\ntypedef void (VKAPI_PTR *PFN_vkCmdDispatchTileQCOM)(VkCommandBuffer commandBuffer, const VkDispatchTileInfoQCOM* pDispatchTileInfo);\ntypedef void (VKAPI_PTR *PFN_vkCmdBeginPerTileExecutionQCOM)(VkCommandBuffer commandBuffer, const VkPerTileBeginInfoQCOM* pPerTileBeginInfo);\ntypedef void (VKAPI_PTR *PFN_vkCmdEndPerTileExecutionQCOM)(VkCommandBuffer commandBuffer, const VkPerTileEndInfoQCOM* pPerTileEndInfo);\n\n\n#define VK_NV_low_latency 1\n#define VK_NV_LOW_LATENCY_SPEC_VERSION 1\n#define VK_NV_LOW_LATENCY_EXTENSION_NAME \"VK_NV_low_latency\"\n\ntypedef struct VkQueryLowLatencySupportNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    void* pQueriedLowLatencyData;\n} VkQueryLowLatencySupportNV;\n\n\n#define VK_KHR_synchronization2 1\n#define VK_KHR_SYNCHRONIZATION_2_SPEC_VERSION 1\n#define VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME \"VK_KHR_synchronization2\"\n\ntypedef VkPipelineStageFlags2 VkPipelineStageFlags2KHR;\ntypedef VkPipelineStageFlagBits2 VkPipelineStageFlagBits2KHR;\ntypedef VkAccessFlags2 VkAccessFlags2KHR;\ntypedef VkAccessFlagBits2 VkAccessFlagBits2KHR;\ntypedef VkSubmitFlagBits VkSubmitFlagBitsKHR;\ntypedef VkSubmitFlags VkSubmitFlagsKHR;\ntypedef VkMemoryBarrier2 VkMemoryBarrier2KHR;\n\ntypedef VkBufferMemoryBarrier2 VkBufferMemoryBarrier2KHR;\n\ntypedef VkImageMemoryBarrier2 VkImageMemoryBarrier2KHR;\n\ntypedef VkDependencyInfo VkDependencyInfoKHR;\n\ntypedef VkSubmitInfo2 VkSubmitInfo2KHR;\n\ntypedef VkSemaphoreSubmitInfo VkSemaphoreSubmitInfoKHR;\n\ntypedef VkCommandBufferSubmitInfo VkCommandBufferSubmitInfoKHR;\n\ntypedef VkPhysicalDeviceSynchronization2Features VkPhysicalDeviceSynchronization2FeaturesKHR;\n\ntypedef void (VKAPI_PTR *PFN_vkCmdSetEvent2KHR)(VkCommandBuffer commandBuffer, VkEvent event, const VkDependencyInfo* pDependencyInfo);\ntypedef void (VKAPI_PTR *PFN_vkCmdResetEvent2KHR)(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags2 stageMask);\ntypedef void (VKAPI_PTR *PFN_vkCmdWaitEvents2KHR)(VkCommandBuffer commandBuffer, uint32_t eventCount, const VkEvent* pEvents, const VkDependencyInfo* pDependencyInfos);\ntypedef void (VKAPI_PTR *PFN_vkCmdPipelineBarrier2KHR)(VkCommandBuffer commandBuffer, const VkDependencyInfo* pDependencyInfo);\ntypedef void (VKAPI_PTR *PFN_vkCmdWriteTimestamp2KHR)(VkCommandBuffer commandBuffer, VkPipelineStageFlags2 stage, VkQueryPool queryPool, uint32_t query);\ntypedef VkResult (VKAPI_PTR *PFN_vkQueueSubmit2KHR)(VkQueue queue, uint32_t submitCount, const VkSubmitInfo2* pSubmits, VkFence fence);\n\n\n#define VK_EXT_descriptor_buffer 1\n#define VK_EXT_DESCRIPTOR_BUFFER_SPEC_VERSION 1\n#define VK_EXT_DESCRIPTOR_BUFFER_EXTENSION_NAME \"VK_EXT_descriptor_buffer\"\n\ntypedef struct VkPhysicalDeviceDescriptorBufferPropertiesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 combinedImageSamplerDescriptorSingleArray;\n    VkBool32 bufferlessPushDescriptors;\n    VkBool32 allowSamplerImageViewPostSubmitCreation;\n    VkDeviceSize descriptorBufferOffsetAlignment;\n    uint32_t maxDescriptorBufferBindings;\n    uint32_t maxResourceDescriptorBufferBindings;\n    uint32_t maxSamplerDescriptorBufferBindings;\n    uint32_t maxEmbeddedImmutableSamplerBindings;\n    uint32_t maxEmbeddedImmutableSamplers;\n    size_t bufferCaptureReplayDescriptorDataSize;\n    size_t imageCaptureReplayDescriptorDataSize;\n    size_t imageViewCaptureReplayDescriptorDataSize;\n    size_t samplerCaptureReplayDescriptorDataSize;\n    size_t accelerationStructureCaptureReplayDescriptorDataSize;\n    size_t samplerDescriptorSize;\n    size_t combinedImageSamplerDescriptorSize;\n    size_t sampledImageDescriptorSize;\n    size_t storageImageDescriptorSize;\n    size_t uniformTexelBufferDescriptorSize;\n    size_t robustUniformTexelBufferDescriptorSize;\n    size_t storageTexelBufferDescriptorSize;\n    size_t robustStorageTexelBufferDescriptorSize;\n    size_t uniformBufferDescriptorSize;\n    size_t robustUniformBufferDescriptorSize;\n    size_t storageBufferDescriptorSize;\n    size_t robustStorageBufferDescriptorSize;\n    size_t inputAttachmentDescriptorSize;\n    size_t accelerationStructureDescriptorSize;\n    VkDeviceSize maxSamplerDescriptorBufferRange;\n    VkDeviceSize maxResourceDescriptorBufferRange;\n    VkDeviceSize samplerDescriptorBufferAddressSpaceSize;\n    VkDeviceSize resourceDescriptorBufferAddressSpaceSize;\n    VkDeviceSize descriptorBufferAddressSpaceSize;\n} VkPhysicalDeviceDescriptorBufferPropertiesEXT;\n\ntypedef struct VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    size_t combinedImageSamplerDensityMapDescriptorSize;\n} VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT;\n\ntypedef struct VkPhysicalDeviceDescriptorBufferFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 descriptorBuffer;\n    VkBool32 descriptorBufferCaptureReplay;\n    VkBool32 descriptorBufferImageLayoutIgnored;\n    VkBool32 descriptorBufferPushDescriptors;\n} VkPhysicalDeviceDescriptorBufferFeaturesEXT;\n\ntypedef struct VkDescriptorAddressInfoEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkDeviceAddress address;\n    VkDeviceSize range;\n    VkFormat format;\n} VkDescriptorAddressInfoEXT;\n\ntypedef struct VkDescriptorBufferBindingInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkDeviceAddress address;\n    VkBufferUsageFlags usage;\n} VkDescriptorBufferBindingInfoEXT;\n\ntypedef struct VkDescriptorBufferBindingPushDescriptorBufferHandleEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkBuffer buffer;\n} VkDescriptorBufferBindingPushDescriptorBufferHandleEXT;\n\ntypedef union VkDescriptorDataEXT\n{\n    const VkSampler* pSampler;\n    const VkDescriptorImageInfo* pCombinedImageSampler;\n    const VkDescriptorImageInfo* pInputAttachmentImage;\n    const VkDescriptorImageInfo* pSampledImage;\n    const VkDescriptorImageInfo* pStorageImage;\n    const VkDescriptorAddressInfoEXT* pUniformTexelBuffer;\n    const VkDescriptorAddressInfoEXT* pStorageTexelBuffer;\n    const VkDescriptorAddressInfoEXT* pUniformBuffer;\n    const VkDescriptorAddressInfoEXT* pStorageBuffer;\n    VkDeviceAddress accelerationStructure;\n} VkDescriptorDataEXT;\n\ntypedef struct VkDescriptorGetInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkDescriptorType type;\n    VkDescriptorDataEXT data;\n} VkDescriptorGetInfoEXT;\n\ntypedef struct VkBufferCaptureDescriptorDataInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkBuffer buffer;\n} VkBufferCaptureDescriptorDataInfoEXT;\n\ntypedef struct VkImageCaptureDescriptorDataInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkImage image;\n} VkImageCaptureDescriptorDataInfoEXT;\n\ntypedef struct VkImageViewCaptureDescriptorDataInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkImageView imageView;\n} VkImageViewCaptureDescriptorDataInfoEXT;\n\ntypedef struct VkSamplerCaptureDescriptorDataInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkSampler sampler;\n} VkSamplerCaptureDescriptorDataInfoEXT;\n\ntypedef struct VkOpaqueCaptureDescriptorDataCreateInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    const void* opaqueCaptureDescriptorData;\n} VkOpaqueCaptureDescriptorDataCreateInfoEXT;\n\ntypedef struct VkAccelerationStructureCaptureDescriptorDataInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkAccelerationStructureKHR accelerationStructure;\n    VkAccelerationStructureNV accelerationStructureNV;\n} VkAccelerationStructureCaptureDescriptorDataInfoEXT;\n\n\ntypedef void (VKAPI_PTR *PFN_vkGetDescriptorSetLayoutSizeEXT)(VkDevice device, VkDescriptorSetLayout layout, VkDeviceSize* pLayoutSizeInBytes);\ntypedef void (VKAPI_PTR *PFN_vkGetDescriptorSetLayoutBindingOffsetEXT)(VkDevice device, VkDescriptorSetLayout layout, uint32_t binding, VkDeviceSize* pOffset);\ntypedef void (VKAPI_PTR *PFN_vkGetDescriptorEXT)(VkDevice device, const VkDescriptorGetInfoEXT* pDescriptorInfo, size_t dataSize, void* pDescriptor);\ntypedef void (VKAPI_PTR *PFN_vkCmdBindDescriptorBuffersEXT)(VkCommandBuffer commandBuffer, uint32_t bufferCount, const VkDescriptorBufferBindingInfoEXT* pBindingInfos);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetDescriptorBufferOffsetsEXT)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t firstSet, uint32_t setCount, const uint32_t* pBufferIndices, const VkDeviceSize* pOffsets);\ntypedef void (VKAPI_PTR *PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t set);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT)(VkDevice device, const VkBufferCaptureDescriptorDataInfoEXT* pInfo, void* pData);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetImageOpaqueCaptureDescriptorDataEXT)(VkDevice device, const VkImageCaptureDescriptorDataInfoEXT* pInfo, void* pData);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT)(VkDevice device, const VkImageViewCaptureDescriptorDataInfoEXT* pInfo, void* pData);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT)(VkDevice device, const VkSamplerCaptureDescriptorDataInfoEXT* pInfo, void* pData);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT)(VkDevice device, const VkAccelerationStructureCaptureDescriptorDataInfoEXT* pInfo, void* pData);\n\n\n#define VK_EXT_graphics_pipeline_library 1\n#define VK_EXT_GRAPHICS_PIPELINE_LIBRARY_SPEC_VERSION 1\n#define VK_EXT_GRAPHICS_PIPELINE_LIBRARY_EXTENSION_NAME \"VK_EXT_graphics_pipeline_library\"\n\n\ntypedef enum\n{\n    VK_GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT = 0x00000001,\n    VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT = 0x00000002,\n    VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT = 0x00000004,\n    VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT = 0x00000008,\n    VK_GRAPHICS_PIPELINE_LIBRARY_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF\n} VkGraphicsPipelineLibraryFlagBitsEXT;\ntypedef VkFlags VkGraphicsPipelineLibraryFlagsEXT;\n\ntypedef struct VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 graphicsPipelineLibrary;\n} VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT;\n\ntypedef struct VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 graphicsPipelineLibraryFastLinking;\n    VkBool32 graphicsPipelineLibraryIndependentInterpolationDecoration;\n} VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT;\n\ntypedef struct VkGraphicsPipelineLibraryCreateInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkGraphicsPipelineLibraryFlagsEXT flags;\n} VkGraphicsPipelineLibraryCreateInfoEXT;\n\n\n#define VK_AMD_shader_early_and_late_fragment_tests 1\n#define VK_AMD_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_SPEC_VERSION 1\n#define VK_AMD_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_EXTENSION_NAME \"VK_AMD_shader_early_and_late_fragment_tests\"\n\ntypedef struct VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 shaderEarlyAndLateFragmentTests;\n} VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD;\n\n\n#define VK_KHR_fragment_shader_barycentric 1\n#define VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION 1\n#define VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME \"VK_KHR_fragment_shader_barycentric\"\n\ntypedef struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 fragmentShaderBarycentric;\n} VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR;\n\ntypedef struct VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 triStripVertexOrderIndependentOfProvokingVertex;\n} VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR;\n\n\n#define VK_NV_fragment_shader_barycentric 1\n#define VK_NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION 1\n#define VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME \"VK_NV_fragment_shader_barycentric\"\n\ntypedef VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV;\n\n\n#define VK_KHR_shader_subgroup_uniform_control_flow 1\n#define VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_SPEC_VERSION 1\n#define VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_EXTENSION_NAME \"VK_KHR_shader_subgroup_uniform_control_flow\"\n\ntypedef struct VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 shaderSubgroupUniformControlFlow;\n} VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR;\n\n\n#define VK_KHR_zero_initialize_workgroup_memory 1\n#define VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_SPEC_VERSION 1\n#define VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_EXTENSION_NAME \"VK_KHR_zero_initialize_workgroup_memory\"\n\ntypedef VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR;\n\n\n#define VK_NV_fragment_shading_rate_enums 1\n#define VK_NV_FRAGMENT_SHADING_RATE_ENUMS_SPEC_VERSION 1\n#define VK_NV_FRAGMENT_SHADING_RATE_ENUMS_EXTENSION_NAME \"VK_NV_fragment_shading_rate_enums\"\n\ntypedef enum\n{\n    VK_FRAGMENT_SHADING_RATE_TYPE_FRAGMENT_SIZE_NV = 0,\n    VK_FRAGMENT_SHADING_RATE_TYPE_ENUMS_NV = 1,\n    VK_FRAGMENT_SHADING_RATE_TYPE_MAX_ENUM_NV = 0x7FFFFFFF\n} VkFragmentShadingRateTypeNV;\n\ntypedef enum\n{\n    VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV = 0,\n    VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_1X2_PIXELS_NV = 1,\n    VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X1_PIXELS_NV = 4,\n    VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X2_PIXELS_NV = 5,\n    VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X4_PIXELS_NV = 6,\n    VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X2_PIXELS_NV = 9,\n    VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X4_PIXELS_NV = 10,\n    VK_FRAGMENT_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV = 11,\n    VK_FRAGMENT_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV = 12,\n    VK_FRAGMENT_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV = 13,\n    VK_FRAGMENT_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV = 14,\n    VK_FRAGMENT_SHADING_RATE_NO_INVOCATIONS_NV = 15,\n    VK_FRAGMENT_SHADING_RATE_MAX_ENUM_NV = 0x7FFFFFFF\n} VkFragmentShadingRateNV;\n\n\ntypedef struct VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 fragmentShadingRateEnums;\n    VkBool32 supersampleFragmentShadingRates;\n    VkBool32 noInvocationFragmentShadingRates;\n} VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV;\n\ntypedef struct VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkSampleCountFlagBits maxFragmentShadingRateInvocationCount;\n} VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV;\n\ntypedef struct VkPipelineFragmentShadingRateEnumStateCreateInfoNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkFragmentShadingRateTypeNV shadingRateType;\n    VkFragmentShadingRateNV shadingRate;\n    VkFragmentShadingRateCombinerOpKHR combinerOps[2];\n} VkPipelineFragmentShadingRateEnumStateCreateInfoNV;\n\n\ntypedef void (VKAPI_PTR *PFN_vkCmdSetFragmentShadingRateEnumNV)(VkCommandBuffer commandBuffer, VkFragmentShadingRateNV shadingRate, const VkFragmentShadingRateCombinerOpKHR combinerOps[2]);\n\n\n#define VK_NV_ray_tracing_motion_blur 1\n#define VK_NV_RAY_TRACING_MOTION_BLUR_SPEC_VERSION 1\n#define VK_NV_RAY_TRACING_MOTION_BLUR_EXTENSION_NAME \"VK_NV_ray_tracing_motion_blur\"\n\ntypedef VkFlags VkAccelerationStructureMotionInfoFlagsNV;\ntypedef enum\n{\n    VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV = 0,\n    VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV = 1,\n    VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV = 2,\n    VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MAX_ENUM_NV = 0x7FFFFFFF\n} VkAccelerationStructureMotionInstanceTypeNV;\n\ntypedef VkFlags VkAccelerationStructureMotionInstanceFlagsNV;\n\ntypedef struct VkAccelerationStructureGeometryMotionTrianglesDataNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkDeviceOrHostAddressConstKHR vertexData;\n} VkAccelerationStructureGeometryMotionTrianglesDataNV;\n\ntypedef struct VkAccelerationStructureMotionInfoNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t maxInstances;\n    VkAccelerationStructureMotionInfoFlagsNV flags;\n} VkAccelerationStructureMotionInfoNV;\n\ntypedef struct VkAccelerationStructureMatrixMotionInstanceNV\n{\n    VkTransformMatrixKHR transformT0;\n    VkTransformMatrixKHR transformT1;\n    uint32_t instanceCustomIndex:24;\n    uint32_t mask:8;\n    uint32_t instanceShaderBindingTableRecordOffset:24;\n    VkGeometryInstanceFlagsKHR flags:8;\n    uint64_t accelerationStructureReference;\n} VkAccelerationStructureMatrixMotionInstanceNV;\n\ntypedef struct VkSRTDataNV\n{\n    float sx;\n    float a;\n    float b;\n    float pvx;\n    float sy;\n    float c;\n    float pvy;\n    float sz;\n    float pvz;\n    float qx;\n    float qy;\n    float qz;\n    float qw;\n    float tx;\n    float ty;\n    float tz;\n} VkSRTDataNV;\n\ntypedef struct VkAccelerationStructureSRTMotionInstanceNV\n{\n    VkSRTDataNV transformT0;\n    VkSRTDataNV transformT1;\n    uint32_t instanceCustomIndex:24;\n    uint32_t mask:8;\n    uint32_t instanceShaderBindingTableRecordOffset:24;\n    VkGeometryInstanceFlagsKHR flags:8;\n    uint64_t accelerationStructureReference;\n} VkAccelerationStructureSRTMotionInstanceNV;\n\ntypedef union VkAccelerationStructureMotionInstanceDataNV\n{\n    VkAccelerationStructureInstanceKHR staticInstance;\n    VkAccelerationStructureMatrixMotionInstanceNV matrixMotionInstance;\n    VkAccelerationStructureSRTMotionInstanceNV srtMotionInstance;\n} VkAccelerationStructureMotionInstanceDataNV;\n\ntypedef struct VkAccelerationStructureMotionInstanceNV\n{\n    VkAccelerationStructureMotionInstanceTypeNV type;\n    VkAccelerationStructureMotionInstanceFlagsNV flags;\n    VkAccelerationStructureMotionInstanceDataNV data;\n} VkAccelerationStructureMotionInstanceNV;\n\ntypedef struct VkPhysicalDeviceRayTracingMotionBlurFeaturesNV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 rayTracingMotionBlur;\n    VkBool32 rayTracingMotionBlurPipelineTraceRaysIndirect;\n} VkPhysicalDeviceRayTracingMotionBlurFeaturesNV;\n\n\n#define VK_EXT_mesh_shader 1\n#define VK_EXT_MESH_SHADER_SPEC_VERSION 1\n#define VK_EXT_MESH_SHADER_EXTENSION_NAME \"VK_EXT_mesh_shader\"\n\ntypedef struct VkPhysicalDeviceMeshShaderFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 taskShader;\n    VkBool32 meshShader;\n    VkBool32 multiviewMeshShader;\n    VkBool32 primitiveFragmentShadingRateMeshShader;\n    VkBool32 meshShaderQueries;\n} VkPhysicalDeviceMeshShaderFeaturesEXT;\n\ntypedef struct VkPhysicalDeviceMeshShaderPropertiesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t maxTaskWorkGroupTotalCount;\n    uint32_t maxTaskWorkGroupCount[3];\n    uint32_t maxTaskWorkGroupInvocations;\n    uint32_t maxTaskWorkGroupSize[3];\n    uint32_t maxTaskPayloadSize;\n    uint32_t maxTaskSharedMemorySize;\n    uint32_t maxTaskPayloadAndSharedMemorySize;\n    uint32_t maxMeshWorkGroupTotalCount;\n    uint32_t maxMeshWorkGroupCount[3];\n    uint32_t maxMeshWorkGroupInvocations;\n    uint32_t maxMeshWorkGroupSize[3];\n    uint32_t maxMeshSharedMemorySize;\n    uint32_t maxMeshPayloadAndSharedMemorySize;\n    uint32_t maxMeshOutputMemorySize;\n    uint32_t maxMeshPayloadAndOutputMemorySize;\n    uint32_t maxMeshOutputComponents;\n    uint32_t maxMeshOutputVertices;\n    uint32_t maxMeshOutputPrimitives;\n    uint32_t maxMeshOutputLayers;\n    uint32_t maxMeshMultiviewViewCount;\n    uint32_t meshOutputPerVertexGranularity;\n    uint32_t meshOutputPerPrimitiveGranularity;\n    uint32_t maxPreferredTaskWorkGroupInvocations;\n    uint32_t maxPreferredMeshWorkGroupInvocations;\n    VkBool32 prefersLocalInvocationVertexOutput;\n    VkBool32 prefersLocalInvocationPrimitiveOutput;\n    VkBool32 prefersCompactVertexOutput;\n    VkBool32 prefersCompactPrimitiveOutput;\n} VkPhysicalDeviceMeshShaderPropertiesEXT;\n\ntypedef struct VkDrawMeshTasksIndirectCommandEXT\n{\n    uint32_t groupCountX;\n    uint32_t groupCountY;\n    uint32_t groupCountZ;\n} VkDrawMeshTasksIndirectCommandEXT;\n\n\ntypedef void (VKAPI_PTR *PFN_vkCmdDrawMeshTasksEXT)(VkCommandBuffer commandBuffer, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ);\ntypedef void (VKAPI_PTR *PFN_vkCmdDrawMeshTasksIndirectEXT)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride);\ntypedef void (VKAPI_PTR *PFN_vkCmdDrawMeshTasksIndirectCountEXT)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride);\n\n\n#define VK_EXT_ycbcr_2plane_444_formats 1\n#define VK_EXT_YCBCR_2PLANE_444_FORMATS_SPEC_VERSION 1\n#define VK_EXT_YCBCR_2PLANE_444_FORMATS_EXTENSION_NAME \"VK_EXT_ycbcr_2plane_444_formats\"\n\ntypedef struct VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 ycbcr2plane444Formats;\n} VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT;\n\n\n#define VK_EXT_fragment_density_map2 1\n#define VK_EXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSION 1\n#define VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME \"VK_EXT_fragment_density_map2\"\n\ntypedef struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 fragmentDensityMapDeferred;\n} VkPhysicalDeviceFragmentDensityMap2FeaturesEXT;\n\ntypedef struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 subsampledLoads;\n    VkBool32 subsampledCoarseReconstructionEarlyAccess;\n    uint32_t maxSubsampledArrayLayers;\n    uint32_t maxDescriptorSetSubsampledSamplers;\n} VkPhysicalDeviceFragmentDensityMap2PropertiesEXT;\n\n\n#define VK_QCOM_rotated_copy_commands 1\n#define VK_QCOM_ROTATED_COPY_COMMANDS_SPEC_VERSION 2\n#define VK_QCOM_ROTATED_COPY_COMMANDS_EXTENSION_NAME \"VK_QCOM_rotated_copy_commands\"\n\ntypedef struct VkCopyCommandTransformInfoQCOM\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkSurfaceTransformFlagBitsKHR transform;\n} VkCopyCommandTransformInfoQCOM;\n\n\n#define VK_EXT_image_robustness 1\n#define VK_EXT_IMAGE_ROBUSTNESS_SPEC_VERSION 1\n#define VK_EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME \"VK_EXT_image_robustness\"\n\ntypedef VkPhysicalDeviceImageRobustnessFeatures VkPhysicalDeviceImageRobustnessFeaturesEXT;\n\n\n#define VK_KHR_workgroup_memory_explicit_layout 1\n#define VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_SPEC_VERSION 1\n#define VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_EXTENSION_NAME \"VK_KHR_workgroup_memory_explicit_layout\"\n\ntypedef struct VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 workgroupMemoryExplicitLayout;\n    VkBool32 workgroupMemoryExplicitLayoutScalarBlockLayout;\n    VkBool32 workgroupMemoryExplicitLayout8BitAccess;\n    VkBool32 workgroupMemoryExplicitLayout16BitAccess;\n} VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR;\n\n\n#define VK_KHR_copy_commands2 1\n#define VK_KHR_COPY_COMMANDS_2_SPEC_VERSION 1\n#define VK_KHR_COPY_COMMANDS_2_EXTENSION_NAME \"VK_KHR_copy_commands2\"\n\ntypedef VkCopyBufferInfo2 VkCopyBufferInfo2KHR;\n\ntypedef VkCopyImageInfo2 VkCopyImageInfo2KHR;\n\ntypedef VkCopyBufferToImageInfo2 VkCopyBufferToImageInfo2KHR;\n\ntypedef VkCopyImageToBufferInfo2 VkCopyImageToBufferInfo2KHR;\n\ntypedef VkBlitImageInfo2 VkBlitImageInfo2KHR;\n\ntypedef VkResolveImageInfo2 VkResolveImageInfo2KHR;\n\ntypedef VkBufferCopy2 VkBufferCopy2KHR;\n\ntypedef VkImageCopy2 VkImageCopy2KHR;\n\ntypedef VkImageBlit2 VkImageBlit2KHR;\n\ntypedef VkBufferImageCopy2 VkBufferImageCopy2KHR;\n\ntypedef VkImageResolve2 VkImageResolve2KHR;\n\ntypedef void (VKAPI_PTR *PFN_vkCmdCopyBuffer2KHR)(VkCommandBuffer commandBuffer, const VkCopyBufferInfo2* pCopyBufferInfo);\ntypedef void (VKAPI_PTR *PFN_vkCmdCopyImage2KHR)(VkCommandBuffer commandBuffer, const VkCopyImageInfo2* pCopyImageInfo);\ntypedef void (VKAPI_PTR *PFN_vkCmdCopyBufferToImage2KHR)(VkCommandBuffer commandBuffer, const VkCopyBufferToImageInfo2* pCopyBufferToImageInfo);\ntypedef void (VKAPI_PTR *PFN_vkCmdCopyImageToBuffer2KHR)(VkCommandBuffer commandBuffer, const VkCopyImageToBufferInfo2* pCopyImageToBufferInfo);\ntypedef void (VKAPI_PTR *PFN_vkCmdBlitImage2KHR)(VkCommandBuffer commandBuffer, const VkBlitImageInfo2* pBlitImageInfo);\ntypedef void (VKAPI_PTR *PFN_vkCmdResolveImage2KHR)(VkCommandBuffer commandBuffer, const VkResolveImageInfo2* pResolveImageInfo);\n\n\n#define VK_EXT_image_compression_control 1\n#define VK_EXT_IMAGE_COMPRESSION_CONTROL_SPEC_VERSION 1\n#define VK_EXT_IMAGE_COMPRESSION_CONTROL_EXTENSION_NAME \"VK_EXT_image_compression_control\"\n\n\ntypedef enum\n{\n    VK_IMAGE_COMPRESSION_DEFAULT_EXT = 0,\n    VK_IMAGE_COMPRESSION_FIXED_RATE_DEFAULT_EXT = 0x00000001,\n    VK_IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT = 0x00000002,\n    VK_IMAGE_COMPRESSION_DISABLED_EXT = 0x00000004,\n    VK_IMAGE_COMPRESSION_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF\n} VkImageCompressionFlagBitsEXT;\ntypedef VkFlags VkImageCompressionFlagsEXT;\n\ntypedef enum\n{\n    VK_IMAGE_COMPRESSION_FIXED_RATE_NONE_EXT = 0,\n    VK_IMAGE_COMPRESSION_FIXED_RATE_1BPC_BIT_EXT = 0x00000001,\n    VK_IMAGE_COMPRESSION_FIXED_RATE_2BPC_BIT_EXT = 0x00000002,\n    VK_IMAGE_COMPRESSION_FIXED_RATE_3BPC_BIT_EXT = 0x00000004,\n    VK_IMAGE_COMPRESSION_FIXED_RATE_4BPC_BIT_EXT = 0x00000008,\n    VK_IMAGE_COMPRESSION_FIXED_RATE_5BPC_BIT_EXT = 0x00000010,\n    VK_IMAGE_COMPRESSION_FIXED_RATE_6BPC_BIT_EXT = 0x00000020,\n    VK_IMAGE_COMPRESSION_FIXED_RATE_7BPC_BIT_EXT = 0x00000040,\n    VK_IMAGE_COMPRESSION_FIXED_RATE_8BPC_BIT_EXT = 0x00000080,\n    VK_IMAGE_COMPRESSION_FIXED_RATE_9BPC_BIT_EXT = 0x00000100,\n    VK_IMAGE_COMPRESSION_FIXED_RATE_10BPC_BIT_EXT = 0x00000200,\n    VK_IMAGE_COMPRESSION_FIXED_RATE_11BPC_BIT_EXT = 0x00000400,\n    VK_IMAGE_COMPRESSION_FIXED_RATE_12BPC_BIT_EXT = 0x00000800,\n    VK_IMAGE_COMPRESSION_FIXED_RATE_13BPC_BIT_EXT = 0x00001000,\n    VK_IMAGE_COMPRESSION_FIXED_RATE_14BPC_BIT_EXT = 0x00002000,\n    VK_IMAGE_COMPRESSION_FIXED_RATE_15BPC_BIT_EXT = 0x00004000,\n    VK_IMAGE_COMPRESSION_FIXED_RATE_16BPC_BIT_EXT = 0x00008000,\n    VK_IMAGE_COMPRESSION_FIXED_RATE_17BPC_BIT_EXT = 0x00010000,\n    VK_IMAGE_COMPRESSION_FIXED_RATE_18BPC_BIT_EXT = 0x00020000,\n    VK_IMAGE_COMPRESSION_FIXED_RATE_19BPC_BIT_EXT = 0x00040000,\n    VK_IMAGE_COMPRESSION_FIXED_RATE_20BPC_BIT_EXT = 0x00080000,\n    VK_IMAGE_COMPRESSION_FIXED_RATE_21BPC_BIT_EXT = 0x00100000,\n    VK_IMAGE_COMPRESSION_FIXED_RATE_22BPC_BIT_EXT = 0x00200000,\n    VK_IMAGE_COMPRESSION_FIXED_RATE_23BPC_BIT_EXT = 0x00400000,\n    VK_IMAGE_COMPRESSION_FIXED_RATE_24BPC_BIT_EXT = 0x00800000,\n    VK_IMAGE_COMPRESSION_FIXED_RATE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF\n} VkImageCompressionFixedRateFlagBitsEXT;\ntypedef VkFlags VkImageCompressionFixedRateFlagsEXT;\n\ntypedef struct VkPhysicalDeviceImageCompressionControlFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 imageCompressionControl;\n} VkPhysicalDeviceImageCompressionControlFeaturesEXT;\n\ntypedef struct VkImageCompressionControlEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkImageCompressionFlagsEXT flags;\n    uint32_t compressionControlPlaneCount;\n    VkImageCompressionFixedRateFlagsEXT* pFixedRateFlags;\n} VkImageCompressionControlEXT;\n\ntypedef struct VkImageCompressionPropertiesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkImageCompressionFlagsEXT imageCompressionFlags;\n    VkImageCompressionFixedRateFlagsEXT imageCompressionFixedRateFlags;\n} VkImageCompressionPropertiesEXT;\n\n\n#define VK_EXT_attachment_feedback_loop_layout 1\n#define VK_EXT_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_SPEC_VERSION 2\n#define VK_EXT_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_EXTENSION_NAME \"VK_EXT_attachment_feedback_loop_layout\"\n\ntypedef struct VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 attachmentFeedbackLoopLayout;\n} VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT;\n\n\n#define VK_EXT_4444_formats 1\n#define VK_EXT_4444_FORMATS_SPEC_VERSION 1\n#define VK_EXT_4444_FORMATS_EXTENSION_NAME \"VK_EXT_4444_formats\"\n\ntypedef struct VkPhysicalDevice4444FormatsFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 formatA4R4G4B4;\n    VkBool32 formatA4B4G4R4;\n} VkPhysicalDevice4444FormatsFeaturesEXT;\n\n\n#define VK_EXT_device_fault 1\n#define VK_EXT_DEVICE_FAULT_SPEC_VERSION 2\n#define VK_EXT_DEVICE_FAULT_EXTENSION_NAME \"VK_EXT_device_fault\"\n\ntypedef enum\n{\n    VK_DEVICE_FAULT_ADDRESS_TYPE_NONE_EXT = 0,\n    VK_DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_EXT = 1,\n    VK_DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_EXT = 2,\n    VK_DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_EXT = 3,\n    VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_EXT = 4,\n    VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_EXT = 5,\n    VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_EXT = 6,\n    VK_DEVICE_FAULT_ADDRESS_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF\n} VkDeviceFaultAddressTypeEXT;\n\ntypedef enum\n{\n    VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_EXT = 1,\n    VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_MAX_ENUM_EXT = 0x7FFFFFFF\n} VkDeviceFaultVendorBinaryHeaderVersionEXT;\n\n\ntypedef struct VkPhysicalDeviceFaultFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 deviceFault;\n    VkBool32 deviceFaultVendorBinary;\n} VkPhysicalDeviceFaultFeaturesEXT;\n\ntypedef struct VkDeviceFaultCountsEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t addressInfoCount;\n    uint32_t vendorInfoCount;\n    VkDeviceSize vendorBinarySize;\n} VkDeviceFaultCountsEXT;\n\ntypedef struct VkDeviceFaultAddressInfoEXT\n{\n    VkDeviceFaultAddressTypeEXT addressType;\n    VkDeviceAddress reportedAddress;\n    VkDeviceSize addressPrecision;\n} VkDeviceFaultAddressInfoEXT;\n\ntypedef struct VkDeviceFaultVendorInfoEXT\n{\n    char description[VK_MAX_DESCRIPTION_SIZE];\n    uint64_t vendorFaultCode;\n    uint64_t vendorFaultData;\n} VkDeviceFaultVendorInfoEXT;\n\ntypedef struct VkDeviceFaultInfoEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    char description[VK_MAX_DESCRIPTION_SIZE];\n    VkDeviceFaultAddressInfoEXT* pAddressInfos;\n    VkDeviceFaultVendorInfoEXT* pVendorInfos;\n    void* pVendorBinaryData;\n} VkDeviceFaultInfoEXT;\n\ntypedef struct VkDeviceFaultVendorBinaryHeaderVersionOneEXT\n{\n    uint32_t headerSize;\n    VkDeviceFaultVendorBinaryHeaderVersionEXT headerVersion;\n    uint32_t vendorID;\n    uint32_t deviceID;\n    uint32_t driverVersion;\n    uint8_t pipelineCacheUUID[VK_UUID_SIZE];\n    uint32_t applicationNameOffset;\n    uint32_t applicationVersion;\n    uint32_t engineNameOffset;\n    uint32_t engineVersion;\n    uint32_t apiVersion;\n} VkDeviceFaultVendorBinaryHeaderVersionOneEXT;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkGetDeviceFaultInfoEXT)(VkDevice device, VkDeviceFaultCountsEXT* pFaultCounts, VkDeviceFaultInfoEXT* pFaultInfo);\n\n\n#define VK_EXT_rgba10x6_formats 1\n#define VK_EXT_RGBA10X6_FORMATS_SPEC_VERSION 1\n#define VK_EXT_RGBA10X6_FORMATS_EXTENSION_NAME \"VK_EXT_rgba10x6_formats\"\n\ntypedef struct VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 formatRgba10x6WithoutYCbCrSampler;\n} VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT;\n\n\n#define VK_EXT_vertex_input_dynamic_state 1\n#define VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_SPEC_VERSION 2\n#define VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME \"VK_EXT_vertex_input_dynamic_state\"\n\ntypedef struct VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 vertexInputDynamicState;\n} VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT;\n\ntypedef struct VkVertexInputBindingDescription2EXT\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t binding;\n    uint32_t stride;\n    VkVertexInputRate inputRate;\n    uint32_t divisor;\n} VkVertexInputBindingDescription2EXT;\n\ntypedef struct VkVertexInputAttributeDescription2EXT\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t location;\n    uint32_t binding;\n    VkFormat format;\n    uint32_t offset;\n} VkVertexInputAttributeDescription2EXT;\n\n\ntypedef void (VKAPI_PTR *PFN_vkCmdSetVertexInputEXT)(VkCommandBuffer commandBuffer, uint32_t vertexBindingDescriptionCount, const VkVertexInputBindingDescription2EXT* pVertexBindingDescriptions, uint32_t vertexAttributeDescriptionCount, const VkVertexInputAttributeDescription2EXT* pVertexAttributeDescriptions);\n\n\n#define VK_EXT_physical_device_drm 1\n#define VK_EXT_PHYSICAL_DEVICE_DRM_SPEC_VERSION 1\n#define VK_EXT_PHYSICAL_DEVICE_DRM_EXTENSION_NAME \"VK_EXT_physical_device_drm\"\n\ntypedef struct VkPhysicalDeviceDrmPropertiesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 hasPrimary;\n    VkBool32 hasRender;\n    int64_t primaryMajor;\n    int64_t primaryMinor;\n    int64_t renderMajor;\n    int64_t renderMinor;\n} VkPhysicalDeviceDrmPropertiesEXT;\n\n\n#define VK_EXT_device_address_binding_report 1\n#define VK_EXT_DEVICE_ADDRESS_BINDING_REPORT_SPEC_VERSION 1\n#define VK_EXT_DEVICE_ADDRESS_BINDING_REPORT_EXTENSION_NAME \"VK_EXT_device_address_binding_report\"\n\n\ntypedef enum\n{\n    VK_DEVICE_ADDRESS_BINDING_INTERNAL_OBJECT_BIT_EXT = 0x00000001,\n    VK_DEVICE_ADDRESS_BINDING_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF\n} VkDeviceAddressBindingFlagBitsEXT;\ntypedef VkFlags VkDeviceAddressBindingFlagsEXT;\ntypedef enum\n{\n    VK_DEVICE_ADDRESS_BINDING_TYPE_BIND_EXT = 0,\n    VK_DEVICE_ADDRESS_BINDING_TYPE_UNBIND_EXT = 1,\n    VK_DEVICE_ADDRESS_BINDING_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF\n} VkDeviceAddressBindingTypeEXT;\n\n\ntypedef struct VkPhysicalDeviceAddressBindingReportFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 reportAddressBinding;\n} VkPhysicalDeviceAddressBindingReportFeaturesEXT;\n\ntypedef struct VkDeviceAddressBindingCallbackDataEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkDeviceAddressBindingFlagsEXT flags;\n    VkDeviceAddress baseAddress;\n    VkDeviceSize size;\n    VkDeviceAddressBindingTypeEXT bindingType;\n} VkDeviceAddressBindingCallbackDataEXT;\n\n\n#define VK_EXT_depth_clip_control 1\n#define VK_EXT_DEPTH_CLIP_CONTROL_SPEC_VERSION 1\n#define VK_EXT_DEPTH_CLIP_CONTROL_EXTENSION_NAME \"VK_EXT_depth_clip_control\"\n\ntypedef struct VkPhysicalDeviceDepthClipControlFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 depthClipControl;\n} VkPhysicalDeviceDepthClipControlFeaturesEXT;\n\ntypedef struct VkPipelineViewportDepthClipControlCreateInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkBool32 negativeOneToOne;\n} VkPipelineViewportDepthClipControlCreateInfoEXT;\n\n\n#define VK_EXT_primitive_topology_list_restart 1\n#define VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_SPEC_VERSION 1\n#define VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_EXTENSION_NAME \"VK_EXT_primitive_topology_list_restart\"\n\ntypedef struct VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 primitiveTopologyListRestart;\n    VkBool32 primitiveTopologyPatchListRestart;\n} VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT;\n\n\n#define VK_KHR_format_feature_flags2 1\n#define VK_KHR_FORMAT_FEATURE_FLAGS_2_SPEC_VERSION 2\n#define VK_KHR_FORMAT_FEATURE_FLAGS_2_EXTENSION_NAME \"VK_KHR_format_feature_flags2\"\n\ntypedef VkFormatFeatureFlags2 VkFormatFeatureFlags2KHR;\ntypedef VkFormatFeatureFlagBits2 VkFormatFeatureFlagBits2KHR;\ntypedef VkFormatProperties3 VkFormatProperties3KHR;\n\n\n#define VK_HUAWEI_subpass_shading 1\n#define VK_HUAWEI_SUBPASS_SHADING_SPEC_VERSION 3\n#define VK_HUAWEI_SUBPASS_SHADING_EXTENSION_NAME \"VK_HUAWEI_subpass_shading\"\n\ntypedef struct VkSubpassShadingPipelineCreateInfoHUAWEI\n{\n    VkStructureType sType;\n    void* pNext;\n    VkRenderPass renderPass;\n    uint32_t subpass;\n} VkSubpassShadingPipelineCreateInfoHUAWEI;\n\ntypedef struct VkPhysicalDeviceSubpassShadingFeaturesHUAWEI\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 subpassShading;\n} VkPhysicalDeviceSubpassShadingFeaturesHUAWEI;\n\ntypedef struct VkPhysicalDeviceSubpassShadingPropertiesHUAWEI\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t maxSubpassShadingWorkgroupSizeAspectRatio;\n} VkPhysicalDeviceSubpassShadingPropertiesHUAWEI;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI)(VkDevice device, VkRenderPass renderpass, VkExtent2D* pMaxWorkgroupSize);\ntypedef void (VKAPI_PTR *PFN_vkCmdSubpassShadingHUAWEI)(VkCommandBuffer commandBuffer);\n\n\n#define VK_HUAWEI_invocation_mask 1\n#define VK_HUAWEI_INVOCATION_MASK_SPEC_VERSION 1\n#define VK_HUAWEI_INVOCATION_MASK_EXTENSION_NAME \"VK_HUAWEI_invocation_mask\"\n\ntypedef struct VkPhysicalDeviceInvocationMaskFeaturesHUAWEI\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 invocationMask;\n} VkPhysicalDeviceInvocationMaskFeaturesHUAWEI;\n\n\ntypedef void (VKAPI_PTR *PFN_vkCmdBindInvocationMaskHUAWEI)(VkCommandBuffer commandBuffer, VkImageView imageView, VkImageLayout imageLayout);\n\n\n#define VK_NV_external_memory_rdma 1\n#define VK_NV_EXTERNAL_MEMORY_RDMA_SPEC_VERSION 1\n#define VK_NV_EXTERNAL_MEMORY_RDMA_EXTENSION_NAME \"VK_NV_external_memory_rdma\"\n\ntypedef void* VkRemoteAddressNV;\n\ntypedef struct VkMemoryGetRemoteAddressInfoNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkDeviceMemory memory;\n    VkExternalMemoryHandleTypeFlagBits handleType;\n} VkMemoryGetRemoteAddressInfoNV;\n\ntypedef struct VkPhysicalDeviceExternalMemoryRDMAFeaturesNV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 externalMemoryRDMA;\n} VkPhysicalDeviceExternalMemoryRDMAFeaturesNV;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkGetMemoryRemoteAddressNV)(VkDevice device, const VkMemoryGetRemoteAddressInfoNV* pMemoryGetRemoteAddressInfo, VkRemoteAddressNV* pAddress);\n\n\n#define VK_EXT_pipeline_properties 1\n#define VK_EXT_PIPELINE_PROPERTIES_SPEC_VERSION 1\n#define VK_EXT_PIPELINE_PROPERTIES_EXTENSION_NAME \"VK_EXT_pipeline_properties\"\n\ntypedef VkPipelineInfoKHR VkPipelineInfoEXT;\n\ntypedef struct VkPipelinePropertiesIdentifierEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    uint8_t pipelineIdentifier[VK_UUID_SIZE];\n} VkPipelinePropertiesIdentifierEXT;\n\ntypedef struct VkPhysicalDevicePipelinePropertiesFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 pipelinePropertiesIdentifier;\n} VkPhysicalDevicePipelinePropertiesFeaturesEXT;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkGetPipelinePropertiesEXT)(VkDevice device, const VkPipelineInfoEXT* pPipelineInfo, VkBaseOutStructure* pPipelineProperties);\n\n\n#define VK_EXT_frame_boundary 1\n#define VK_EXT_FRAME_BOUNDARY_SPEC_VERSION 1\n#define VK_EXT_FRAME_BOUNDARY_EXTENSION_NAME \"VK_EXT_frame_boundary\"\n\n\ntypedef enum\n{\n    VK_FRAME_BOUNDARY_FRAME_END_BIT_EXT = 0x00000001,\n    VK_FRAME_BOUNDARY_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF\n} VkFrameBoundaryFlagBitsEXT;\ntypedef VkFlags VkFrameBoundaryFlagsEXT;\n\ntypedef struct VkPhysicalDeviceFrameBoundaryFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 frameBoundary;\n} VkPhysicalDeviceFrameBoundaryFeaturesEXT;\n\ntypedef struct VkFrameBoundaryEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkFrameBoundaryFlagsEXT flags;\n    uint64_t frameID;\n    uint32_t imageCount;\n    const VkImage* pImages;\n    uint32_t bufferCount;\n    const VkBuffer* pBuffers;\n    uint64_t tagName;\n    size_t tagSize;\n    const void* pTag;\n} VkFrameBoundaryEXT;\n\n\n#define VK_EXT_multisampled_render_to_single_sampled 1\n#define VK_EXT_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_SPEC_VERSION 1\n#define VK_EXT_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_EXTENSION_NAME \"VK_EXT_multisampled_render_to_single_sampled\"\n\ntypedef struct VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 multisampledRenderToSingleSampled;\n} VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT;\n\ntypedef struct VkSubpassResolvePerformanceQueryEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 optimal;\n} VkSubpassResolvePerformanceQueryEXT;\n\ntypedef struct VkMultisampledRenderToSingleSampledInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkBool32 multisampledRenderToSingleSampledEnable;\n    VkSampleCountFlagBits rasterizationSamples;\n} VkMultisampledRenderToSingleSampledInfoEXT;\n\n\n#define VK_EXT_extended_dynamic_state2 1\n#define VK_EXT_EXTENDED_DYNAMIC_STATE_2_SPEC_VERSION 1\n#define VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME \"VK_EXT_extended_dynamic_state2\"\n\ntypedef struct VkPhysicalDeviceExtendedDynamicState2FeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 extendedDynamicState2;\n    VkBool32 extendedDynamicState2LogicOp;\n    VkBool32 extendedDynamicState2PatchControlPoints;\n} VkPhysicalDeviceExtendedDynamicState2FeaturesEXT;\n\n\ntypedef void (VKAPI_PTR *PFN_vkCmdSetPatchControlPointsEXT)(VkCommandBuffer commandBuffer, uint32_t patchControlPoints);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetRasterizerDiscardEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 rasterizerDiscardEnable);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetDepthBiasEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 depthBiasEnable);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetLogicOpEXT)(VkCommandBuffer commandBuffer, VkLogicOp logicOp);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetPrimitiveRestartEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 primitiveRestartEnable);\n\n\n#define VK_EXT_color_write_enable 1\n#define VK_EXT_COLOR_WRITE_ENABLE_SPEC_VERSION 1\n#define VK_EXT_COLOR_WRITE_ENABLE_EXTENSION_NAME \"VK_EXT_color_write_enable\"\n\ntypedef struct VkPhysicalDeviceColorWriteEnableFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 colorWriteEnable;\n} VkPhysicalDeviceColorWriteEnableFeaturesEXT;\n\ntypedef struct VkPipelineColorWriteCreateInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t attachmentCount;\n    const VkBool32* pColorWriteEnables;\n} VkPipelineColorWriteCreateInfoEXT;\n\n\ntypedef void (VKAPI_PTR *PFN_vkCmdSetColorWriteEnableEXT)(VkCommandBuffer commandBuffer, uint32_t attachmentCount, const VkBool32* pColorWriteEnables);\n\n\n#define VK_EXT_primitives_generated_query 1\n#define VK_EXT_PRIMITIVES_GENERATED_QUERY_SPEC_VERSION 1\n#define VK_EXT_PRIMITIVES_GENERATED_QUERY_EXTENSION_NAME \"VK_EXT_primitives_generated_query\"\n\ntypedef struct VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 primitivesGeneratedQuery;\n    VkBool32 primitivesGeneratedQueryWithRasterizerDiscard;\n    VkBool32 primitivesGeneratedQueryWithNonZeroStreams;\n} VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT;\n\n\n#define VK_KHR_ray_tracing_maintenance1 1\n#define VK_KHR_RAY_TRACING_MAINTENANCE_1_SPEC_VERSION 1\n#define VK_KHR_RAY_TRACING_MAINTENANCE_1_EXTENSION_NAME \"VK_KHR_ray_tracing_maintenance1\"\n\ntypedef struct VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 rayTracingMaintenance1;\n    VkBool32 rayTracingPipelineTraceRaysIndirect2;\n} VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR;\n\ntypedef struct VkTraceRaysIndirectCommand2KHR\n{\n    VkDeviceAddress raygenShaderRecordAddress;\n    VkDeviceSize raygenShaderRecordSize;\n    VkDeviceAddress missShaderBindingTableAddress;\n    VkDeviceSize missShaderBindingTableSize;\n    VkDeviceSize missShaderBindingTableStride;\n    VkDeviceAddress hitShaderBindingTableAddress;\n    VkDeviceSize hitShaderBindingTableSize;\n    VkDeviceSize hitShaderBindingTableStride;\n    VkDeviceAddress callableShaderBindingTableAddress;\n    VkDeviceSize callableShaderBindingTableSize;\n    VkDeviceSize callableShaderBindingTableStride;\n    uint32_t width;\n    uint32_t height;\n    uint32_t depth;\n} VkTraceRaysIndirectCommand2KHR;\n\n\ntypedef void (VKAPI_PTR *PFN_vkCmdTraceRaysIndirect2KHR)(VkCommandBuffer commandBuffer, VkDeviceAddress indirectDeviceAddress);\n\n\n#define VK_KHR_shader_untyped_pointers 1\n#define VK_KHR_SHADER_UNTYPED_POINTERS_SPEC_VERSION 1\n#define VK_KHR_SHADER_UNTYPED_POINTERS_EXTENSION_NAME \"VK_KHR_shader_untyped_pointers\"\n\ntypedef struct VkPhysicalDeviceShaderUntypedPointersFeaturesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 shaderUntypedPointers;\n} VkPhysicalDeviceShaderUntypedPointersFeaturesKHR;\n\n\n#define VK_VALVE_video_encode_rgb_conversion 1\n#define VK_VALVE_VIDEO_ENCODE_RGB_CONVERSION_SPEC_VERSION 1\n#define VK_VALVE_VIDEO_ENCODE_RGB_CONVERSION_EXTENSION_NAME \"VK_VALVE_video_encode_rgb_conversion\"\n\n\ntypedef enum\n{\n    VK_VIDEO_ENCODE_RGB_MODEL_CONVERSION_RGB_IDENTITY_BIT_VALVE = 0x00000001,\n    VK_VIDEO_ENCODE_RGB_MODEL_CONVERSION_YCBCR_IDENTITY_BIT_VALVE = 0x00000002,\n    VK_VIDEO_ENCODE_RGB_MODEL_CONVERSION_YCBCR_709_BIT_VALVE = 0x00000004,\n    VK_VIDEO_ENCODE_RGB_MODEL_CONVERSION_YCBCR_601_BIT_VALVE = 0x00000008,\n    VK_VIDEO_ENCODE_RGB_MODEL_CONVERSION_YCBCR_2020_BIT_VALVE = 0x00000010,\n    VK_VIDEO_ENCODE_RGB_MODEL_CONVERSION_FLAG_BITS_MAX_ENUM_VALVE = 0x7FFFFFFF\n} VkVideoEncodeRgbModelConversionFlagBitsVALVE;\ntypedef VkFlags VkVideoEncodeRgbModelConversionFlagsVALVE;\n\ntypedef enum\n{\n    VK_VIDEO_ENCODE_RGB_RANGE_COMPRESSION_FULL_RANGE_BIT_VALVE = 0x00000001,\n    VK_VIDEO_ENCODE_RGB_RANGE_COMPRESSION_NARROW_RANGE_BIT_VALVE = 0x00000002,\n    VK_VIDEO_ENCODE_RGB_RANGE_COMPRESSION_FLAG_BITS_MAX_ENUM_VALVE = 0x7FFFFFFF\n} VkVideoEncodeRgbRangeCompressionFlagBitsVALVE;\ntypedef VkFlags VkVideoEncodeRgbRangeCompressionFlagsVALVE;\n\ntypedef enum\n{\n    VK_VIDEO_ENCODE_RGB_CHROMA_OFFSET_COSITED_EVEN_BIT_VALVE = 0x00000001,\n    VK_VIDEO_ENCODE_RGB_CHROMA_OFFSET_MIDPOINT_BIT_VALVE = 0x00000002,\n    VK_VIDEO_ENCODE_RGB_CHROMA_OFFSET_FLAG_BITS_MAX_ENUM_VALVE = 0x7FFFFFFF\n} VkVideoEncodeRgbChromaOffsetFlagBitsVALVE;\ntypedef VkFlags VkVideoEncodeRgbChromaOffsetFlagsVALVE;\n\ntypedef struct VkPhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 videoEncodeRgbConversion;\n} VkPhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE;\n\ntypedef struct VkVideoEncodeRgbConversionCapabilitiesVALVE\n{\n    VkStructureType sType;\n    void* pNext;\n    VkVideoEncodeRgbModelConversionFlagsVALVE rgbModels;\n    VkVideoEncodeRgbRangeCompressionFlagsVALVE rgbRanges;\n    VkVideoEncodeRgbChromaOffsetFlagsVALVE xChromaOffsets;\n    VkVideoEncodeRgbChromaOffsetFlagsVALVE yChromaOffsets;\n} VkVideoEncodeRgbConversionCapabilitiesVALVE;\n\ntypedef struct VkVideoEncodeProfileRgbConversionInfoVALVE\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkBool32 performEncodeRgbConversion;\n} VkVideoEncodeProfileRgbConversionInfoVALVE;\n\ntypedef struct VkVideoEncodeSessionRgbConversionCreateInfoVALVE\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkVideoEncodeRgbModelConversionFlagBitsVALVE rgbModel;\n    VkVideoEncodeRgbRangeCompressionFlagBitsVALVE rgbRange;\n    VkVideoEncodeRgbChromaOffsetFlagBitsVALVE xChromaOffset;\n    VkVideoEncodeRgbChromaOffsetFlagBitsVALVE yChromaOffset;\n} VkVideoEncodeSessionRgbConversionCreateInfoVALVE;\n\n\n#define VK_EXT_image_view_min_lod 1\n#define VK_EXT_IMAGE_VIEW_MIN_LOD_SPEC_VERSION 1\n#define VK_EXT_IMAGE_VIEW_MIN_LOD_EXTENSION_NAME \"VK_EXT_image_view_min_lod\"\n\ntypedef struct VkPhysicalDeviceImageViewMinLodFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 minLod;\n} VkPhysicalDeviceImageViewMinLodFeaturesEXT;\n\ntypedef struct VkImageViewMinLodCreateInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    float minLod;\n} VkImageViewMinLodCreateInfoEXT;\n\n\n#define VK_EXT_multi_draw 1\n#define VK_EXT_MULTI_DRAW_SPEC_VERSION 1\n#define VK_EXT_MULTI_DRAW_EXTENSION_NAME \"VK_EXT_multi_draw\"\n\ntypedef struct VkPhysicalDeviceMultiDrawFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 multiDraw;\n} VkPhysicalDeviceMultiDrawFeaturesEXT;\n\ntypedef struct VkPhysicalDeviceMultiDrawPropertiesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t maxMultiDrawCount;\n} VkPhysicalDeviceMultiDrawPropertiesEXT;\n\ntypedef struct VkMultiDrawInfoEXT\n{\n    uint32_t firstVertex;\n    uint32_t vertexCount;\n} VkMultiDrawInfoEXT;\n\ntypedef struct VkMultiDrawIndexedInfoEXT\n{\n    uint32_t firstIndex;\n    uint32_t indexCount;\n    int32_t vertexOffset;\n} VkMultiDrawIndexedInfoEXT;\n\n\ntypedef void (VKAPI_PTR *PFN_vkCmdDrawMultiEXT)(VkCommandBuffer commandBuffer, uint32_t drawCount, const VkMultiDrawInfoEXT* pVertexInfo, uint32_t instanceCount, uint32_t firstInstance, uint32_t stride);\ntypedef void (VKAPI_PTR *PFN_vkCmdDrawMultiIndexedEXT)(VkCommandBuffer commandBuffer, uint32_t drawCount, const VkMultiDrawIndexedInfoEXT* pIndexInfo, uint32_t instanceCount, uint32_t firstInstance, uint32_t stride, const int32_t* pVertexOffset);\n\n\n#define VK_EXT_image_2d_view_of_3d 1\n#define VK_EXT_IMAGE_2D_VIEW_OF_3D_SPEC_VERSION 1\n#define VK_EXT_IMAGE_2D_VIEW_OF_3D_EXTENSION_NAME \"VK_EXT_image_2d_view_of_3d\"\n\ntypedef struct VkPhysicalDeviceImage2DViewOf3DFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 image2DViewOf3D;\n    VkBool32 sampler2DViewOf3D;\n} VkPhysicalDeviceImage2DViewOf3DFeaturesEXT;\n\n\n#define VK_KHR_portability_enumeration 1\n#define VK_KHR_PORTABILITY_ENUMERATION_SPEC_VERSION 1\n#define VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME \"VK_KHR_portability_enumeration\"\n\n\n#define VK_EXT_shader_tile_image 1\n#define VK_EXT_SHADER_TILE_IMAGE_SPEC_VERSION 1\n#define VK_EXT_SHADER_TILE_IMAGE_EXTENSION_NAME \"VK_EXT_shader_tile_image\"\n\ntypedef struct VkPhysicalDeviceShaderTileImageFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 shaderTileImageColorReadAccess;\n    VkBool32 shaderTileImageDepthReadAccess;\n    VkBool32 shaderTileImageStencilReadAccess;\n} VkPhysicalDeviceShaderTileImageFeaturesEXT;\n\ntypedef struct VkPhysicalDeviceShaderTileImagePropertiesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 shaderTileImageCoherentReadAccelerated;\n    VkBool32 shaderTileImageReadSampleFromPixelRateInvocation;\n    VkBool32 shaderTileImageReadFromHelperInvocation;\n} VkPhysicalDeviceShaderTileImagePropertiesEXT;\n\n\n#define VK_EXT_opacity_micromap 1\n#define VK_EXT_OPACITY_MICROMAP_SPEC_VERSION 2\n#define VK_EXT_OPACITY_MICROMAP_EXTENSION_NAME \"VK_EXT_opacity_micromap\"\n\nVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkMicromapEXT)\n\ntypedef enum\n{\n    VK_MICROMAP_TYPE_OPACITY_MICROMAP_EXT = 0,\n    VK_MICROMAP_TYPE_DISPLACEMENT_MICROMAP_NV = 1000397000,\n    VK_MICROMAP_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF\n} VkMicromapTypeEXT;\n\n\ntypedef enum\n{\n    VK_BUILD_MICROMAP_PREFER_FAST_TRACE_BIT_EXT = 0x00000001,\n    VK_BUILD_MICROMAP_PREFER_FAST_BUILD_BIT_EXT = 0x00000002,\n    VK_BUILD_MICROMAP_ALLOW_COMPACTION_BIT_EXT = 0x00000004,\n    VK_BUILD_MICROMAP_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF\n} VkBuildMicromapFlagBitsEXT;\ntypedef VkFlags VkBuildMicromapFlagsEXT;\ntypedef enum\n{\n    VK_BUILD_MICROMAP_MODE_BUILD_EXT = 0,\n    VK_BUILD_MICROMAP_MODE_MAX_ENUM_EXT = 0x7FFFFFFF\n} VkBuildMicromapModeEXT;\n\n\ntypedef enum\n{\n    VK_MICROMAP_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 0x00000001,\n    VK_MICROMAP_CREATE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF\n} VkMicromapCreateFlagBitsEXT;\ntypedef VkFlags VkMicromapCreateFlagsEXT;\ntypedef enum\n{\n    VK_COPY_MICROMAP_MODE_CLONE_EXT = 0,\n    VK_COPY_MICROMAP_MODE_SERIALIZE_EXT = 1,\n    VK_COPY_MICROMAP_MODE_DESERIALIZE_EXT = 2,\n    VK_COPY_MICROMAP_MODE_COMPACT_EXT = 3,\n    VK_COPY_MICROMAP_MODE_MAX_ENUM_EXT = 0x7FFFFFFF\n} VkCopyMicromapModeEXT;\n\ntypedef enum\n{\n    VK_OPACITY_MICROMAP_FORMAT_2_STATE_EXT = 1,\n    VK_OPACITY_MICROMAP_FORMAT_4_STATE_EXT = 2,\n    VK_OPACITY_MICROMAP_FORMAT_MAX_ENUM_EXT = 0x7FFFFFFF\n} VkOpacityMicromapFormatEXT;\n\ntypedef enum\n{\n    VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT_EXT = -1,\n    VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE_EXT = -2,\n    VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT_EXT = -3,\n    VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE_EXT = -4,\n    VK_OPACITY_MICROMAP_SPECIAL_INDEX_CLUSTER_GEOMETRY_DISABLE_OPACITY_MICROMAP_NV = -5,\n    VK_OPACITY_MICROMAP_SPECIAL_INDEX_MAX_ENUM_EXT = 0x7FFFFFFF\n} VkOpacityMicromapSpecialIndexEXT;\n\n\ntypedef struct VkMicromapUsageEXT\n{\n    uint32_t count;\n    uint32_t subdivisionLevel;\n    uint32_t format;\n} VkMicromapUsageEXT;\n\ntypedef struct VkMicromapBuildInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkMicromapTypeEXT type;\n    VkBuildMicromapFlagsEXT flags;\n    VkBuildMicromapModeEXT mode;\n    VkMicromapEXT dstMicromap;\n    uint32_t usageCountsCount;\n    const VkMicromapUsageEXT* pUsageCounts;\n    const VkMicromapUsageEXT* const* ppUsageCounts;\n    VkDeviceOrHostAddressConstKHR data;\n    VkDeviceOrHostAddressKHR scratchData;\n    VkDeviceOrHostAddressConstKHR triangleArray;\n    VkDeviceSize triangleArrayStride;\n} VkMicromapBuildInfoEXT;\n\ntypedef struct VkMicromapCreateInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkMicromapCreateFlagsEXT createFlags;\n    VkBuffer buffer;\n    VkDeviceSize offset;\n    VkDeviceSize size;\n    VkMicromapTypeEXT type;\n    VkDeviceAddress deviceAddress;\n} VkMicromapCreateInfoEXT;\n\ntypedef struct VkPhysicalDeviceOpacityMicromapFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 micromap;\n    VkBool32 micromapCaptureReplay;\n    VkBool32 micromapHostCommands;\n} VkPhysicalDeviceOpacityMicromapFeaturesEXT;\n\ntypedef struct VkPhysicalDeviceOpacityMicromapPropertiesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t maxOpacity2StateSubdivisionLevel;\n    uint32_t maxOpacity4StateSubdivisionLevel;\n} VkPhysicalDeviceOpacityMicromapPropertiesEXT;\n\ntypedef struct VkMicromapVersionInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    const uint8_t* pVersionData;\n} VkMicromapVersionInfoEXT;\n\ntypedef struct VkCopyMicromapToMemoryInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkMicromapEXT src;\n    VkDeviceOrHostAddressKHR dst;\n    VkCopyMicromapModeEXT mode;\n} VkCopyMicromapToMemoryInfoEXT;\n\ntypedef struct VkCopyMemoryToMicromapInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkDeviceOrHostAddressConstKHR src;\n    VkMicromapEXT dst;\n    VkCopyMicromapModeEXT mode;\n} VkCopyMemoryToMicromapInfoEXT;\n\ntypedef struct VkCopyMicromapInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkMicromapEXT src;\n    VkMicromapEXT dst;\n    VkCopyMicromapModeEXT mode;\n} VkCopyMicromapInfoEXT;\n\ntypedef struct VkMicromapBuildSizesInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkDeviceSize micromapSize;\n    VkDeviceSize buildScratchSize;\n    VkBool32 discardable;\n} VkMicromapBuildSizesInfoEXT;\n\ntypedef struct VkAccelerationStructureTrianglesOpacityMicromapEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkIndexType indexType;\n    VkDeviceOrHostAddressConstKHR indexBuffer;\n    VkDeviceSize indexStride;\n    uint32_t baseTriangle;\n    uint32_t usageCountsCount;\n    const VkMicromapUsageEXT* pUsageCounts;\n    const VkMicromapUsageEXT* const* ppUsageCounts;\n    VkMicromapEXT micromap;\n} VkAccelerationStructureTrianglesOpacityMicromapEXT;\n\ntypedef struct VkMicromapTriangleEXT\n{\n    uint32_t dataOffset;\n    uint16_t subdivisionLevel;\n    uint16_t format;\n} VkMicromapTriangleEXT;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateMicromapEXT)(VkDevice device, const VkMicromapCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkMicromapEXT* pMicromap);\ntypedef void (VKAPI_PTR *PFN_vkDestroyMicromapEXT)(VkDevice device, VkMicromapEXT micromap, const VkAllocationCallbacks* pAllocator);\ntypedef void (VKAPI_PTR *PFN_vkCmdBuildMicromapsEXT)(VkCommandBuffer commandBuffer, uint32_t infoCount, const VkMicromapBuildInfoEXT* pInfos);\ntypedef VkResult (VKAPI_PTR *PFN_vkBuildMicromapsEXT)(VkDevice device, VkDeferredOperationKHR deferredOperation, uint32_t infoCount, const VkMicromapBuildInfoEXT* pInfos);\ntypedef VkResult (VKAPI_PTR *PFN_vkCopyMicromapEXT)(VkDevice device, VkDeferredOperationKHR deferredOperation, const VkCopyMicromapInfoEXT* pInfo);\ntypedef VkResult (VKAPI_PTR *PFN_vkCopyMicromapToMemoryEXT)(VkDevice device, VkDeferredOperationKHR deferredOperation, const VkCopyMicromapToMemoryInfoEXT* pInfo);\ntypedef VkResult (VKAPI_PTR *PFN_vkCopyMemoryToMicromapEXT)(VkDevice device, VkDeferredOperationKHR deferredOperation, const VkCopyMemoryToMicromapInfoEXT* pInfo);\ntypedef VkResult (VKAPI_PTR *PFN_vkWriteMicromapsPropertiesEXT)(VkDevice device, uint32_t micromapCount, const VkMicromapEXT* pMicromaps, VkQueryType queryType, size_t dataSize, void* pData, size_t stride);\ntypedef void (VKAPI_PTR *PFN_vkCmdCopyMicromapEXT)(VkCommandBuffer commandBuffer, const VkCopyMicromapInfoEXT* pInfo);\ntypedef void (VKAPI_PTR *PFN_vkCmdCopyMicromapToMemoryEXT)(VkCommandBuffer commandBuffer, const VkCopyMicromapToMemoryInfoEXT* pInfo);\ntypedef void (VKAPI_PTR *PFN_vkCmdCopyMemoryToMicromapEXT)(VkCommandBuffer commandBuffer, const VkCopyMemoryToMicromapInfoEXT* pInfo);\ntypedef void (VKAPI_PTR *PFN_vkCmdWriteMicromapsPropertiesEXT)(VkCommandBuffer commandBuffer, uint32_t micromapCount, const VkMicromapEXT* pMicromaps, VkQueryType queryType, VkQueryPool queryPool, uint32_t firstQuery);\ntypedef void (VKAPI_PTR *PFN_vkGetDeviceMicromapCompatibilityEXT)(VkDevice device, const VkMicromapVersionInfoEXT* pVersionInfo, VkAccelerationStructureCompatibilityKHR* pCompatibility);\ntypedef void (VKAPI_PTR *PFN_vkGetMicromapBuildSizesEXT)(VkDevice device, VkAccelerationStructureBuildTypeKHR buildType, const VkMicromapBuildInfoEXT* pBuildInfo, VkMicromapBuildSizesInfoEXT* pSizeInfo);\n\n\n#define VK_HUAWEI_cluster_culling_shader 1\n#define VK_HUAWEI_CLUSTER_CULLING_SHADER_SPEC_VERSION 3\n#define VK_HUAWEI_CLUSTER_CULLING_SHADER_EXTENSION_NAME \"VK_HUAWEI_cluster_culling_shader\"\n\ntypedef struct VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 clustercullingShader;\n    VkBool32 multiviewClusterCullingShader;\n} VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI;\n\ntypedef struct VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t maxWorkGroupCount[3];\n    uint32_t maxWorkGroupSize[3];\n    uint32_t maxOutputClusterCount;\n    VkDeviceSize indirectBufferOffsetAlignment;\n} VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI;\n\ntypedef struct VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 clusterShadingRate;\n} VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI;\n\n\ntypedef void (VKAPI_PTR *PFN_vkCmdDrawClusterHUAWEI)(VkCommandBuffer commandBuffer, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ);\ntypedef void (VKAPI_PTR *PFN_vkCmdDrawClusterIndirectHUAWEI)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset);\n\n\n#define VK_EXT_border_color_swizzle 1\n#define VK_EXT_BORDER_COLOR_SWIZZLE_SPEC_VERSION 1\n#define VK_EXT_BORDER_COLOR_SWIZZLE_EXTENSION_NAME \"VK_EXT_border_color_swizzle\"\n\ntypedef struct VkPhysicalDeviceBorderColorSwizzleFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 borderColorSwizzle;\n    VkBool32 borderColorSwizzleFromImage;\n} VkPhysicalDeviceBorderColorSwizzleFeaturesEXT;\n\ntypedef struct VkSamplerBorderColorComponentMappingCreateInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkComponentMapping components;\n    VkBool32 srgb;\n} VkSamplerBorderColorComponentMappingCreateInfoEXT;\n\n\n#define VK_EXT_pageable_device_local_memory 1\n#define VK_EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_SPEC_VERSION 1\n#define VK_EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_EXTENSION_NAME \"VK_EXT_pageable_device_local_memory\"\n\ntypedef struct VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 pageableDeviceLocalMemory;\n} VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT;\n\n\ntypedef void (VKAPI_PTR *PFN_vkSetDeviceMemoryPriorityEXT)(VkDevice device, VkDeviceMemory memory, float priority);\n\n\n#define VK_KHR_maintenance4 1\n#define VK_KHR_MAINTENANCE_4_SPEC_VERSION 2\n#define VK_KHR_MAINTENANCE_4_EXTENSION_NAME \"VK_KHR_maintenance4\"\n\ntypedef VkPhysicalDeviceMaintenance4Features VkPhysicalDeviceMaintenance4FeaturesKHR;\n\ntypedef VkPhysicalDeviceMaintenance4Properties VkPhysicalDeviceMaintenance4PropertiesKHR;\n\ntypedef VkDeviceBufferMemoryRequirements VkDeviceBufferMemoryRequirementsKHR;\n\ntypedef VkDeviceImageMemoryRequirements VkDeviceImageMemoryRequirementsKHR;\n\ntypedef void (VKAPI_PTR *PFN_vkGetDeviceBufferMemoryRequirementsKHR)(VkDevice device, const VkDeviceBufferMemoryRequirements* pInfo, VkMemoryRequirements2* pMemoryRequirements);\ntypedef void (VKAPI_PTR *PFN_vkGetDeviceImageMemoryRequirementsKHR)(VkDevice device, const VkDeviceImageMemoryRequirements* pInfo, VkMemoryRequirements2* pMemoryRequirements);\ntypedef void (VKAPI_PTR *PFN_vkGetDeviceImageSparseMemoryRequirementsKHR)(VkDevice device, const VkDeviceImageMemoryRequirements* pInfo, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements);\n\n\n#define VK_ARM_shader_core_properties 1\n#define VK_ARM_SHADER_CORE_PROPERTIES_SPEC_VERSION 1\n#define VK_ARM_SHADER_CORE_PROPERTIES_EXTENSION_NAME \"VK_ARM_shader_core_properties\"\n\ntypedef struct VkPhysicalDeviceShaderCorePropertiesARM\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t pixelRate;\n    uint32_t texelRate;\n    uint32_t fmaRate;\n} VkPhysicalDeviceShaderCorePropertiesARM;\n\n\n#define VK_KHR_shader_subgroup_rotate 1\n#define VK_KHR_SHADER_SUBGROUP_ROTATE_SPEC_VERSION 2\n#define VK_KHR_SHADER_SUBGROUP_ROTATE_EXTENSION_NAME \"VK_KHR_shader_subgroup_rotate\"\n\ntypedef VkPhysicalDeviceShaderSubgroupRotateFeatures VkPhysicalDeviceShaderSubgroupRotateFeaturesKHR;\n\n\n#define VK_ARM_scheduling_controls 1\n#define VK_ARM_SCHEDULING_CONTROLS_SPEC_VERSION 1\n#define VK_ARM_SCHEDULING_CONTROLS_EXTENSION_NAME \"VK_ARM_scheduling_controls\"\n\n\ntypedef VkFlags64 VkPhysicalDeviceSchedulingControlsFlagBitsARM;\nstatic const VkPhysicalDeviceSchedulingControlsFlagBitsARM VK_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_SHADER_CORE_COUNT_ARM = 0x00000001;\ntypedef VkFlags64 VkPhysicalDeviceSchedulingControlsFlagsARM;\n\ntypedef struct VkDeviceQueueShaderCoreControlCreateInfoARM\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t shaderCoreCount;\n} VkDeviceQueueShaderCoreControlCreateInfoARM;\n\ntypedef struct VkPhysicalDeviceSchedulingControlsFeaturesARM\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 schedulingControls;\n} VkPhysicalDeviceSchedulingControlsFeaturesARM;\n\ntypedef struct VkPhysicalDeviceSchedulingControlsPropertiesARM\n{\n    VkStructureType sType;\n    void* pNext;\n    VkPhysicalDeviceSchedulingControlsFlagsARM schedulingControlsFlags;\n} VkPhysicalDeviceSchedulingControlsPropertiesARM;\n\n\n#define VK_EXT_image_sliced_view_of_3d 1\n#define VK_EXT_IMAGE_SLICED_VIEW_OF_3D_SPEC_VERSION 1\n#define VK_EXT_IMAGE_SLICED_VIEW_OF_3D_EXTENSION_NAME \"VK_EXT_image_sliced_view_of_3d\"\n\n#define VK_REMAINING_3D_SLICES_EXT (~0U)\n\ntypedef struct VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 imageSlicedViewOf3D;\n} VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT;\n\ntypedef struct VkImageViewSlicedCreateInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t sliceOffset;\n    uint32_t sliceCount;\n} VkImageViewSlicedCreateInfoEXT;\n\n\n#define VK_VALVE_descriptor_set_host_mapping 1\n#define VK_VALVE_DESCRIPTOR_SET_HOST_MAPPING_SPEC_VERSION 1\n#define VK_VALVE_DESCRIPTOR_SET_HOST_MAPPING_EXTENSION_NAME \"VK_VALVE_descriptor_set_host_mapping\"\n\ntypedef struct VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 descriptorSetHostMapping;\n} VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE;\n\ntypedef struct VkDescriptorSetBindingReferenceVALVE\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkDescriptorSetLayout descriptorSetLayout;\n    uint32_t binding;\n} VkDescriptorSetBindingReferenceVALVE;\n\ntypedef struct VkDescriptorSetLayoutHostMappingInfoVALVE\n{\n    VkStructureType sType;\n    void* pNext;\n    size_t descriptorOffset;\n    uint32_t descriptorSize;\n} VkDescriptorSetLayoutHostMappingInfoVALVE;\n\n\ntypedef void (VKAPI_PTR *PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE)(VkDevice device, const VkDescriptorSetBindingReferenceVALVE* pBindingReference, VkDescriptorSetLayoutHostMappingInfoVALVE* pHostMapping);\ntypedef void (VKAPI_PTR *PFN_vkGetDescriptorSetHostMappingVALVE)(VkDevice device, VkDescriptorSet descriptorSet, void** ppData);\n\n\n#define VK_EXT_non_seamless_cube_map 1\n#define VK_EXT_NON_SEAMLESS_CUBE_MAP_SPEC_VERSION 1\n#define VK_EXT_NON_SEAMLESS_CUBE_MAP_EXTENSION_NAME \"VK_EXT_non_seamless_cube_map\"\n\ntypedef struct VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 nonSeamlessCubeMap;\n} VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT;\n\n\n#define VK_ARM_render_pass_striped 1\n#define VK_ARM_RENDER_PASS_STRIPED_SPEC_VERSION 1\n#define VK_ARM_RENDER_PASS_STRIPED_EXTENSION_NAME \"VK_ARM_render_pass_striped\"\n\ntypedef struct VkPhysicalDeviceRenderPassStripedFeaturesARM\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 renderPassStriped;\n} VkPhysicalDeviceRenderPassStripedFeaturesARM;\n\ntypedef struct VkPhysicalDeviceRenderPassStripedPropertiesARM\n{\n    VkStructureType sType;\n    void* pNext;\n    VkExtent2D renderPassStripeGranularity;\n    uint32_t maxRenderPassStripes;\n} VkPhysicalDeviceRenderPassStripedPropertiesARM;\n\ntypedef struct VkRenderPassStripeInfoARM\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkRect2D stripeArea;\n} VkRenderPassStripeInfoARM;\n\ntypedef struct VkRenderPassStripeBeginInfoARM\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t stripeInfoCount;\n    const VkRenderPassStripeInfoARM* pStripeInfos;\n} VkRenderPassStripeBeginInfoARM;\n\ntypedef struct VkRenderPassStripeSubmitInfoARM\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t stripeSemaphoreInfoCount;\n    const VkSemaphoreSubmitInfo* pStripeSemaphoreInfos;\n} VkRenderPassStripeSubmitInfoARM;\n\n\n#define VK_NV_device_generated_commands_compute 1\n#define VK_NV_DEVICE_GENERATED_COMMANDS_COMPUTE_SPEC_VERSION 2\n#define VK_NV_DEVICE_GENERATED_COMMANDS_COMPUTE_EXTENSION_NAME \"VK_NV_device_generated_commands_compute\"\n\ntypedef struct VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 deviceGeneratedCompute;\n    VkBool32 deviceGeneratedComputePipelines;\n    VkBool32 deviceGeneratedComputeCaptureReplay;\n} VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV;\n\ntypedef struct VkComputePipelineIndirectBufferInfoNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkDeviceAddress deviceAddress;\n    VkDeviceSize size;\n    VkDeviceAddress pipelineDeviceAddressCaptureReplay;\n} VkComputePipelineIndirectBufferInfoNV;\n\ntypedef struct VkPipelineIndirectDeviceAddressInfoNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkPipelineBindPoint pipelineBindPoint;\n    VkPipeline pipeline;\n} VkPipelineIndirectDeviceAddressInfoNV;\n\ntypedef struct VkBindPipelineIndirectCommandNV\n{\n    VkDeviceAddress pipelineAddress;\n} VkBindPipelineIndirectCommandNV;\n\n\ntypedef void (VKAPI_PTR *PFN_vkGetPipelineIndirectMemoryRequirementsNV)(VkDevice device, const VkComputePipelineCreateInfo* pCreateInfo, VkMemoryRequirements2* pMemoryRequirements);\ntypedef void (VKAPI_PTR *PFN_vkCmdUpdatePipelineIndirectBufferNV)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline);\ntypedef VkDeviceAddress (VKAPI_PTR *PFN_vkGetPipelineIndirectDeviceAddressNV)(VkDevice device, const VkPipelineIndirectDeviceAddressInfoNV* pInfo);\n\n\n#define VK_NV_ray_tracing_linear_swept_spheres 1\n#define VK_NV_RAY_TRACING_LINEAR_SWEPT_SPHERES_SPEC_VERSION 1\n#define VK_NV_RAY_TRACING_LINEAR_SWEPT_SPHERES_EXTENSION_NAME \"VK_NV_ray_tracing_linear_swept_spheres\"\n\ntypedef enum\n{\n    VK_RAY_TRACING_LSS_INDEXING_MODE_LIST_NV = 0,\n    VK_RAY_TRACING_LSS_INDEXING_MODE_SUCCESSIVE_NV = 1,\n    VK_RAY_TRACING_LSS_INDEXING_MODE_MAX_ENUM_NV = 0x7FFFFFFF\n} VkRayTracingLssIndexingModeNV;\n\ntypedef enum\n{\n    VK_RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_NONE_NV = 0,\n    VK_RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_CHAINED_NV = 1,\n    VK_RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_MAX_ENUM_NV = 0x7FFFFFFF\n} VkRayTracingLssPrimitiveEndCapsModeNV;\n\n\ntypedef struct VkPhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 spheres;\n    VkBool32 linearSweptSpheres;\n} VkPhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV;\n\ntypedef struct VkAccelerationStructureGeometryLinearSweptSpheresDataNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkFormat vertexFormat;\n    VkDeviceOrHostAddressConstKHR vertexData;\n    VkDeviceSize vertexStride;\n    VkFormat radiusFormat;\n    VkDeviceOrHostAddressConstKHR radiusData;\n    VkDeviceSize radiusStride;\n    VkIndexType indexType;\n    VkDeviceOrHostAddressConstKHR indexData;\n    VkDeviceSize indexStride;\n    VkRayTracingLssIndexingModeNV indexingMode;\n    VkRayTracingLssPrimitiveEndCapsModeNV endCapsMode;\n} VkAccelerationStructureGeometryLinearSweptSpheresDataNV;\n\ntypedef struct VkAccelerationStructureGeometrySpheresDataNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkFormat vertexFormat;\n    VkDeviceOrHostAddressConstKHR vertexData;\n    VkDeviceSize vertexStride;\n    VkFormat radiusFormat;\n    VkDeviceOrHostAddressConstKHR radiusData;\n    VkDeviceSize radiusStride;\n    VkIndexType indexType;\n    VkDeviceOrHostAddressConstKHR indexData;\n    VkDeviceSize indexStride;\n} VkAccelerationStructureGeometrySpheresDataNV;\n\n\n#define VK_NV_linear_color_attachment 1\n#define VK_NV_LINEAR_COLOR_ATTACHMENT_SPEC_VERSION 1\n#define VK_NV_LINEAR_COLOR_ATTACHMENT_EXTENSION_NAME \"VK_NV_linear_color_attachment\"\n\ntypedef struct VkPhysicalDeviceLinearColorAttachmentFeaturesNV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 linearColorAttachment;\n} VkPhysicalDeviceLinearColorAttachmentFeaturesNV;\n\n\n#define VK_GOOGLE_surfaceless_query 1\n#define VK_GOOGLE_SURFACELESS_QUERY_SPEC_VERSION 2\n#define VK_GOOGLE_SURFACELESS_QUERY_EXTENSION_NAME \"VK_GOOGLE_surfaceless_query\"\n\n\n#define VK_KHR_shader_maximal_reconvergence 1\n#define VK_KHR_SHADER_MAXIMAL_RECONVERGENCE_SPEC_VERSION 1\n#define VK_KHR_SHADER_MAXIMAL_RECONVERGENCE_EXTENSION_NAME \"VK_KHR_shader_maximal_reconvergence\"\n\ntypedef struct VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 shaderMaximalReconvergence;\n} VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR;\n\n\n#define VK_EXT_application_parameters 1\n#define VK_EXT_APPLICATION_PARAMETERS_SPEC_VERSION 1\n#define VK_EXT_APPLICATION_PARAMETERS_EXTENSION_NAME \"VK_EXT_application_parameters\"\n\ntypedef struct VkApplicationParametersEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t vendorID;\n    uint32_t deviceID;\n    uint32_t key;\n    uint64_t value;\n} VkApplicationParametersEXT;\n\n\n#define VK_EXT_image_compression_control_swapchain 1\n#define VK_EXT_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_SPEC_VERSION 1\n#define VK_EXT_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_EXTENSION_NAME \"VK_EXT_image_compression_control_swapchain\"\n\ntypedef struct VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 imageCompressionControlSwapchain;\n} VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT;\n\n\n#define VK_QCOM_image_processing 1\n#define VK_QCOM_IMAGE_PROCESSING_SPEC_VERSION 1\n#define VK_QCOM_IMAGE_PROCESSING_EXTENSION_NAME \"VK_QCOM_image_processing\"\n\ntypedef struct VkImageViewSampleWeightCreateInfoQCOM\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkOffset2D filterCenter;\n    VkExtent2D filterSize;\n    uint32_t numPhases;\n} VkImageViewSampleWeightCreateInfoQCOM;\n\ntypedef struct VkPhysicalDeviceImageProcessingFeaturesQCOM\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 textureSampleWeighted;\n    VkBool32 textureBoxFilter;\n    VkBool32 textureBlockMatch;\n} VkPhysicalDeviceImageProcessingFeaturesQCOM;\n\ntypedef struct VkPhysicalDeviceImageProcessingPropertiesQCOM\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t maxWeightFilterPhases;\n    VkExtent2D maxWeightFilterDimension;\n    VkExtent2D maxBlockMatchRegion;\n    VkExtent2D maxBoxFilterBlockSize;\n} VkPhysicalDeviceImageProcessingPropertiesQCOM;\n\n\n#define VK_EXT_nested_command_buffer 1\n#define VK_EXT_NESTED_COMMAND_BUFFER_SPEC_VERSION 1\n#define VK_EXT_NESTED_COMMAND_BUFFER_EXTENSION_NAME \"VK_EXT_nested_command_buffer\"\n\ntypedef struct VkPhysicalDeviceNestedCommandBufferFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 nestedCommandBuffer;\n    VkBool32 nestedCommandBufferRendering;\n    VkBool32 nestedCommandBufferSimultaneousUse;\n} VkPhysicalDeviceNestedCommandBufferFeaturesEXT;\n\ntypedef struct VkPhysicalDeviceNestedCommandBufferPropertiesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t maxCommandBufferNestingLevel;\n} VkPhysicalDeviceNestedCommandBufferPropertiesEXT;\n\n\n#define VK_EXT_external_memory_acquire_unmodified 1\n#define VK_EXT_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_SPEC_VERSION 1\n#define VK_EXT_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXTENSION_NAME \"VK_EXT_external_memory_acquire_unmodified\"\n\ntypedef struct VkExternalMemoryAcquireUnmodifiedEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkBool32 acquireUnmodifiedMemory;\n} VkExternalMemoryAcquireUnmodifiedEXT;\n\n\n#define VK_EXT_extended_dynamic_state3 1\n#define VK_EXT_EXTENDED_DYNAMIC_STATE_3_SPEC_VERSION 2\n#define VK_EXT_EXTENDED_DYNAMIC_STATE_3_EXTENSION_NAME \"VK_EXT_extended_dynamic_state3\"\n\ntypedef VkLineRasterizationMode VkLineRasterizationModeEXT;\ntypedef struct VkPhysicalDeviceExtendedDynamicState3FeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 extendedDynamicState3TessellationDomainOrigin;\n    VkBool32 extendedDynamicState3DepthClampEnable;\n    VkBool32 extendedDynamicState3PolygonMode;\n    VkBool32 extendedDynamicState3RasterizationSamples;\n    VkBool32 extendedDynamicState3SampleMask;\n    VkBool32 extendedDynamicState3AlphaToCoverageEnable;\n    VkBool32 extendedDynamicState3AlphaToOneEnable;\n    VkBool32 extendedDynamicState3LogicOpEnable;\n    VkBool32 extendedDynamicState3ColorBlendEnable;\n    VkBool32 extendedDynamicState3ColorBlendEquation;\n    VkBool32 extendedDynamicState3ColorWriteMask;\n    VkBool32 extendedDynamicState3RasterizationStream;\n    VkBool32 extendedDynamicState3ConservativeRasterizationMode;\n    VkBool32 extendedDynamicState3ExtraPrimitiveOverestimationSize;\n    VkBool32 extendedDynamicState3DepthClipEnable;\n    VkBool32 extendedDynamicState3SampleLocationsEnable;\n    VkBool32 extendedDynamicState3ColorBlendAdvanced;\n    VkBool32 extendedDynamicState3ProvokingVertexMode;\n    VkBool32 extendedDynamicState3LineRasterizationMode;\n    VkBool32 extendedDynamicState3LineStippleEnable;\n    VkBool32 extendedDynamicState3DepthClipNegativeOneToOne;\n    VkBool32 extendedDynamicState3ViewportWScalingEnable;\n    VkBool32 extendedDynamicState3ViewportSwizzle;\n    VkBool32 extendedDynamicState3CoverageToColorEnable;\n    VkBool32 extendedDynamicState3CoverageToColorLocation;\n    VkBool32 extendedDynamicState3CoverageModulationMode;\n    VkBool32 extendedDynamicState3CoverageModulationTableEnable;\n    VkBool32 extendedDynamicState3CoverageModulationTable;\n    VkBool32 extendedDynamicState3CoverageReductionMode;\n    VkBool32 extendedDynamicState3RepresentativeFragmentTestEnable;\n    VkBool32 extendedDynamicState3ShadingRateImageEnable;\n} VkPhysicalDeviceExtendedDynamicState3FeaturesEXT;\n\ntypedef struct VkPhysicalDeviceExtendedDynamicState3PropertiesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 dynamicPrimitiveTopologyUnrestricted;\n} VkPhysicalDeviceExtendedDynamicState3PropertiesEXT;\n\ntypedef struct VkColorBlendEquationEXT\n{\n    VkBlendFactor srcColorBlendFactor;\n    VkBlendFactor dstColorBlendFactor;\n    VkBlendOp colorBlendOp;\n    VkBlendFactor srcAlphaBlendFactor;\n    VkBlendFactor dstAlphaBlendFactor;\n    VkBlendOp alphaBlendOp;\n} VkColorBlendEquationEXT;\n\ntypedef struct VkColorBlendAdvancedEXT\n{\n    VkBlendOp advancedBlendOp;\n    VkBool32 srcPremultiplied;\n    VkBool32 dstPremultiplied;\n    VkBlendOverlapEXT blendOverlap;\n    VkBool32 clampResults;\n} VkColorBlendAdvancedEXT;\n\n\ntypedef void (VKAPI_PTR *PFN_vkCmdSetDepthClampEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 depthClampEnable);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetPolygonModeEXT)(VkCommandBuffer commandBuffer, VkPolygonMode polygonMode);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetRasterizationSamplesEXT)(VkCommandBuffer commandBuffer, VkSampleCountFlagBits rasterizationSamples);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetSampleMaskEXT)(VkCommandBuffer commandBuffer, VkSampleCountFlagBits samples, const VkSampleMask* pSampleMask);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetAlphaToCoverageEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 alphaToCoverageEnable);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetAlphaToOneEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 alphaToOneEnable);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetLogicOpEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 logicOpEnable);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetColorBlendEnableEXT)(VkCommandBuffer commandBuffer, uint32_t firstAttachment, uint32_t attachmentCount, const VkBool32* pColorBlendEnables);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetColorBlendEquationEXT)(VkCommandBuffer commandBuffer, uint32_t firstAttachment, uint32_t attachmentCount, const VkColorBlendEquationEXT* pColorBlendEquations);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetColorWriteMaskEXT)(VkCommandBuffer commandBuffer, uint32_t firstAttachment, uint32_t attachmentCount, const VkColorComponentFlags* pColorWriteMasks);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetTessellationDomainOriginEXT)(VkCommandBuffer commandBuffer, VkTessellationDomainOrigin domainOrigin);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetRasterizationStreamEXT)(VkCommandBuffer commandBuffer, uint32_t rasterizationStream);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetConservativeRasterizationModeEXT)(VkCommandBuffer commandBuffer, VkConservativeRasterizationModeEXT conservativeRasterizationMode);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT)(VkCommandBuffer commandBuffer, float extraPrimitiveOverestimationSize);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetDepthClipEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 depthClipEnable);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetSampleLocationsEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 sampleLocationsEnable);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetColorBlendAdvancedEXT)(VkCommandBuffer commandBuffer, uint32_t firstAttachment, uint32_t attachmentCount, const VkColorBlendAdvancedEXT* pColorBlendAdvanced);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetProvokingVertexModeEXT)(VkCommandBuffer commandBuffer, VkProvokingVertexModeEXT provokingVertexMode);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetLineRasterizationModeEXT)(VkCommandBuffer commandBuffer, VkLineRasterizationModeEXT lineRasterizationMode);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetLineStippleEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 stippledLineEnable);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetDepthClipNegativeOneToOneEXT)(VkCommandBuffer commandBuffer, VkBool32 negativeOneToOne);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetViewportWScalingEnableNV)(VkCommandBuffer commandBuffer, VkBool32 viewportWScalingEnable);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetViewportSwizzleNV)(VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkViewportSwizzleNV* pViewportSwizzles);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetCoverageToColorEnableNV)(VkCommandBuffer commandBuffer, VkBool32 coverageToColorEnable);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetCoverageToColorLocationNV)(VkCommandBuffer commandBuffer, uint32_t coverageToColorLocation);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetCoverageModulationModeNV)(VkCommandBuffer commandBuffer, VkCoverageModulationModeNV coverageModulationMode);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetCoverageModulationTableEnableNV)(VkCommandBuffer commandBuffer, VkBool32 coverageModulationTableEnable);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetCoverageModulationTableNV)(VkCommandBuffer commandBuffer, uint32_t coverageModulationTableCount, const float* pCoverageModulationTable);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetShadingRateImageEnableNV)(VkCommandBuffer commandBuffer, VkBool32 shadingRateImageEnable);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetRepresentativeFragmentTestEnableNV)(VkCommandBuffer commandBuffer, VkBool32 representativeFragmentTestEnable);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetCoverageReductionModeNV)(VkCommandBuffer commandBuffer, VkCoverageReductionModeNV coverageReductionMode);\n\n\n#define VK_EXT_subpass_merge_feedback 1\n#define VK_EXT_SUBPASS_MERGE_FEEDBACK_SPEC_VERSION 2\n#define VK_EXT_SUBPASS_MERGE_FEEDBACK_EXTENSION_NAME \"VK_EXT_subpass_merge_feedback\"\n\ntypedef enum\n{\n    VK_SUBPASS_MERGE_STATUS_MERGED_EXT = 0,\n    VK_SUBPASS_MERGE_STATUS_DISALLOWED_EXT = 1,\n    VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SIDE_EFFECTS_EXT = 2,\n    VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SAMPLES_MISMATCH_EXT = 3,\n    VK_SUBPASS_MERGE_STATUS_NOT_MERGED_VIEWS_MISMATCH_EXT = 4,\n    VK_SUBPASS_MERGE_STATUS_NOT_MERGED_ALIASING_EXT = 5,\n    VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPENDENCIES_EXT = 6,\n    VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INCOMPATIBLE_INPUT_ATTACHMENT_EXT = 7,\n    VK_SUBPASS_MERGE_STATUS_NOT_MERGED_TOO_MANY_ATTACHMENTS_EXT = 8,\n    VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INSUFFICIENT_STORAGE_EXT = 9,\n    VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPTH_STENCIL_COUNT_EXT = 10,\n    VK_SUBPASS_MERGE_STATUS_NOT_MERGED_RESOLVE_ATTACHMENT_REUSE_EXT = 11,\n    VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SINGLE_SUBPASS_EXT = 12,\n    VK_SUBPASS_MERGE_STATUS_NOT_MERGED_UNSPECIFIED_EXT = 13,\n    VK_SUBPASS_MERGE_STATUS_MAX_ENUM_EXT = 0x7FFFFFFF\n} VkSubpassMergeStatusEXT;\n\n\ntypedef struct VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 subpassMergeFeedback;\n} VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT;\n\ntypedef struct VkRenderPassCreationControlEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkBool32 disallowMerging;\n} VkRenderPassCreationControlEXT;\n\ntypedef struct VkRenderPassCreationFeedbackInfoEXT\n{\n    uint32_t postMergeSubpassCount;\n} VkRenderPassCreationFeedbackInfoEXT;\n\ntypedef struct VkRenderPassCreationFeedbackCreateInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkRenderPassCreationFeedbackInfoEXT* pRenderPassFeedback;\n} VkRenderPassCreationFeedbackCreateInfoEXT;\n\ntypedef struct VkRenderPassSubpassFeedbackInfoEXT\n{\n    VkSubpassMergeStatusEXT subpassMergeStatus;\n    char description[VK_MAX_DESCRIPTION_SIZE];\n    uint32_t postMergeIndex;\n} VkRenderPassSubpassFeedbackInfoEXT;\n\ntypedef struct VkRenderPassSubpassFeedbackCreateInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkRenderPassSubpassFeedbackInfoEXT* pSubpassFeedback;\n} VkRenderPassSubpassFeedbackCreateInfoEXT;\n\n\n#define VK_LUNARG_direct_driver_loading 1\n#define VK_LUNARG_DIRECT_DRIVER_LOADING_SPEC_VERSION 1\n#define VK_LUNARG_DIRECT_DRIVER_LOADING_EXTENSION_NAME \"VK_LUNARG_direct_driver_loading\"\n\ntypedef VkFlags VkDirectDriverLoadingFlagsLUNARG;\ntypedef enum\n{\n    VK_DIRECT_DRIVER_LOADING_MODE_EXCLUSIVE_LUNARG = 0,\n    VK_DIRECT_DRIVER_LOADING_MODE_INCLUSIVE_LUNARG = 1,\n    VK_DIRECT_DRIVER_LOADING_MODE_MAX_ENUM_LUNARG = 0x7FFFFFFF\n} VkDirectDriverLoadingModeLUNARG;\n\n\ntypedef PFN_vkVoidFunction (VKAPI_PTR *PFN_vkGetInstanceProcAddrLUNARG)(VkInstance instance, const char* pName);\n\ntypedef struct VkDirectDriverLoadingInfoLUNARG\n{\n    VkStructureType sType;\n    void* pNext;\n    VkDirectDriverLoadingFlagsLUNARG flags;\n    PFN_vkGetInstanceProcAddrLUNARG pfnGetInstanceProcAddr;\n} VkDirectDriverLoadingInfoLUNARG;\n\ntypedef struct VkDirectDriverLoadingListLUNARG\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkDirectDriverLoadingModeLUNARG mode;\n    uint32_t driverCount;\n    const VkDirectDriverLoadingInfoLUNARG* pDrivers;\n} VkDirectDriverLoadingListLUNARG;\n\n\n#define VK_ARM_tensors 1\n#define VK_ARM_TENSORS_SPEC_VERSION 2\n#define VK_ARM_TENSORS_EXTENSION_NAME \"VK_ARM_tensors\"\n\nVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkTensorViewARM)\n\n\ntypedef VkFlags64 VkTensorCreateFlagBitsARM;\nstatic const VkTensorCreateFlagBitsARM VK_TENSOR_CREATE_MUTABLE_FORMAT_BIT_ARM = 0x00000001;\nstatic const VkTensorCreateFlagBitsARM VK_TENSOR_CREATE_PROTECTED_BIT_ARM = 0x00000002;\nstatic const VkTensorCreateFlagBitsARM VK_TENSOR_CREATE_DESCRIPTOR_HEAP_CAPTURE_REPLAY_BIT_ARM = 0x00000008;\nstatic const VkTensorCreateFlagBitsARM VK_TENSOR_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_ARM = 0x00000004;\ntypedef VkFlags64 VkTensorCreateFlagsARM;\n\ntypedef VkFlags64 VkTensorUsageFlagBitsARM;\nstatic const VkTensorUsageFlagBitsARM VK_TENSOR_USAGE_SHADER_BIT_ARM = 0x00000002;\nstatic const VkTensorUsageFlagBitsARM VK_TENSOR_USAGE_TRANSFER_SRC_BIT_ARM = 0x00000004;\nstatic const VkTensorUsageFlagBitsARM VK_TENSOR_USAGE_TRANSFER_DST_BIT_ARM = 0x00000008;\nstatic const VkTensorUsageFlagBitsARM VK_TENSOR_USAGE_IMAGE_ALIASING_BIT_ARM = 0x00000010;\nstatic const VkTensorUsageFlagBitsARM VK_TENSOR_USAGE_DATA_GRAPH_BIT_ARM = 0x00000020;\ntypedef VkFlags64 VkTensorUsageFlagsARM;\ntypedef enum\n{\n    VK_TENSOR_TILING_OPTIMAL_ARM = 0,\n    VK_TENSOR_TILING_LINEAR_ARM = 1,\n    VK_TENSOR_TILING_MAX_ENUM_ARM = 0x7FFFFFFF\n} VkTensorTilingARM;\n\n\ntypedef struct VkTensorDescriptionARM\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkTensorTilingARM tiling;\n    VkFormat format;\n    uint32_t dimensionCount;\n    const int64_t* pDimensions;\n    const int64_t* pStrides;\n    VkTensorUsageFlagsARM usage;\n} VkTensorDescriptionARM;\n\ntypedef struct VkTensorCreateInfoARM\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkTensorCreateFlagsARM flags;\n    const VkTensorDescriptionARM* pDescription;\n    VkSharingMode sharingMode;\n    uint32_t queueFamilyIndexCount;\n    const uint32_t* pQueueFamilyIndices;\n} VkTensorCreateInfoARM;\n\ntypedef struct VkTensorMemoryRequirementsInfoARM\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkTensorARM tensor;\n} VkTensorMemoryRequirementsInfoARM;\n\ntypedef struct VkBindTensorMemoryInfoARM\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkTensorARM tensor;\n    VkDeviceMemory memory;\n    VkDeviceSize memoryOffset;\n} VkBindTensorMemoryInfoARM;\n\ntypedef struct VkWriteDescriptorSetTensorARM\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t tensorViewCount;\n    const VkTensorViewARM* pTensorViews;\n} VkWriteDescriptorSetTensorARM;\n\ntypedef struct VkTensorFormatPropertiesARM\n{\n    VkStructureType sType;\n    void* pNext;\n    VkFormatFeatureFlags2 optimalTilingTensorFeatures;\n    VkFormatFeatureFlags2 linearTilingTensorFeatures;\n} VkTensorFormatPropertiesARM;\n\ntypedef struct VkPhysicalDeviceTensorPropertiesARM\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t maxTensorDimensionCount;\n    uint64_t maxTensorElements;\n    uint64_t maxPerDimensionTensorElements;\n    int64_t maxTensorStride;\n    uint64_t maxTensorSize;\n    uint32_t maxTensorShaderAccessArrayLength;\n    uint32_t maxTensorShaderAccessSize;\n    uint32_t maxDescriptorSetStorageTensors;\n    uint32_t maxPerStageDescriptorSetStorageTensors;\n    uint32_t maxDescriptorSetUpdateAfterBindStorageTensors;\n    uint32_t maxPerStageDescriptorUpdateAfterBindStorageTensors;\n    VkBool32 shaderStorageTensorArrayNonUniformIndexingNative;\n    VkShaderStageFlags shaderTensorSupportedStages;\n} VkPhysicalDeviceTensorPropertiesARM;\n\ntypedef struct VkTensorMemoryBarrierARM\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkPipelineStageFlags2 srcStageMask;\n    VkAccessFlags2 srcAccessMask;\n    VkPipelineStageFlags2 dstStageMask;\n    VkAccessFlags2 dstAccessMask;\n    uint32_t srcQueueFamilyIndex;\n    uint32_t dstQueueFamilyIndex;\n    VkTensorARM tensor;\n} VkTensorMemoryBarrierARM;\n\ntypedef struct VkTensorDependencyInfoARM\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t tensorMemoryBarrierCount;\n    const VkTensorMemoryBarrierARM* pTensorMemoryBarriers;\n} VkTensorDependencyInfoARM;\n\ntypedef struct VkPhysicalDeviceTensorFeaturesARM\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 tensorNonPacked;\n    VkBool32 shaderTensorAccess;\n    VkBool32 shaderStorageTensorArrayDynamicIndexing;\n    VkBool32 shaderStorageTensorArrayNonUniformIndexing;\n    VkBool32 descriptorBindingStorageTensorUpdateAfterBind;\n    VkBool32 tensors;\n} VkPhysicalDeviceTensorFeaturesARM;\n\ntypedef struct VkDeviceTensorMemoryRequirementsARM\n{\n    VkStructureType sType;\n    const void* pNext;\n    const VkTensorCreateInfoARM* pCreateInfo;\n} VkDeviceTensorMemoryRequirementsARM;\n\ntypedef struct VkTensorCopyARM\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t dimensionCount;\n    const uint64_t* pSrcOffset;\n    const uint64_t* pDstOffset;\n    const uint64_t* pExtent;\n} VkTensorCopyARM;\n\ntypedef struct VkCopyTensorInfoARM\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkTensorARM srcTensor;\n    VkTensorARM dstTensor;\n    uint32_t regionCount;\n    const VkTensorCopyARM* pRegions;\n} VkCopyTensorInfoARM;\n\ntypedef struct VkMemoryDedicatedAllocateInfoTensorARM\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkTensorARM tensor;\n} VkMemoryDedicatedAllocateInfoTensorARM;\n\ntypedef struct VkPhysicalDeviceExternalTensorInfoARM\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkTensorCreateFlagsARM flags;\n    const VkTensorDescriptionARM* pDescription;\n    VkExternalMemoryHandleTypeFlagBits handleType;\n} VkPhysicalDeviceExternalTensorInfoARM;\n\ntypedef struct VkExternalTensorPropertiesARM\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkExternalMemoryProperties externalMemoryProperties;\n} VkExternalTensorPropertiesARM;\n\ntypedef struct VkExternalMemoryTensorCreateInfoARM\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkExternalMemoryHandleTypeFlags handleTypes;\n} VkExternalMemoryTensorCreateInfoARM;\n\ntypedef struct VkPhysicalDeviceDescriptorBufferTensorFeaturesARM\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 descriptorBufferTensorDescriptors;\n} VkPhysicalDeviceDescriptorBufferTensorFeaturesARM;\n\ntypedef struct VkPhysicalDeviceDescriptorBufferTensorPropertiesARM\n{\n    VkStructureType sType;\n    void* pNext;\n    size_t tensorCaptureReplayDescriptorDataSize;\n    size_t tensorViewCaptureReplayDescriptorDataSize;\n    size_t tensorDescriptorSize;\n} VkPhysicalDeviceDescriptorBufferTensorPropertiesARM;\n\ntypedef struct VkDescriptorGetTensorInfoARM\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkTensorViewARM tensorView;\n} VkDescriptorGetTensorInfoARM;\n\ntypedef struct VkTensorCaptureDescriptorDataInfoARM\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkTensorARM tensor;\n} VkTensorCaptureDescriptorDataInfoARM;\n\ntypedef struct VkTensorViewCaptureDescriptorDataInfoARM\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkTensorViewARM tensorView;\n} VkTensorViewCaptureDescriptorDataInfoARM;\n\ntypedef struct VkFrameBoundaryTensorsARM\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t tensorCount;\n    const VkTensorARM* pTensors;\n} VkFrameBoundaryTensorsARM;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateTensorARM)(VkDevice device, const VkTensorCreateInfoARM* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkTensorARM* pTensor);\ntypedef void (VKAPI_PTR *PFN_vkDestroyTensorARM)(VkDevice device, VkTensorARM tensor, const VkAllocationCallbacks* pAllocator);\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateTensorViewARM)(VkDevice device, const VkTensorViewCreateInfoARM* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkTensorViewARM* pView);\ntypedef void (VKAPI_PTR *PFN_vkDestroyTensorViewARM)(VkDevice device, VkTensorViewARM tensorView, const VkAllocationCallbacks* pAllocator);\ntypedef void (VKAPI_PTR *PFN_vkGetTensorMemoryRequirementsARM)(VkDevice device, const VkTensorMemoryRequirementsInfoARM* pInfo, VkMemoryRequirements2* pMemoryRequirements);\ntypedef VkResult (VKAPI_PTR *PFN_vkBindTensorMemoryARM)(VkDevice device, uint32_t bindInfoCount, const VkBindTensorMemoryInfoARM* pBindInfos);\ntypedef void (VKAPI_PTR *PFN_vkGetDeviceTensorMemoryRequirementsARM)(VkDevice device, const VkDeviceTensorMemoryRequirementsARM* pInfo, VkMemoryRequirements2* pMemoryRequirements);\ntypedef void (VKAPI_PTR *PFN_vkCmdCopyTensorARM)(VkCommandBuffer commandBuffer, const VkCopyTensorInfoARM* pCopyTensorInfo);\ntypedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalTensorPropertiesARM)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalTensorInfoARM* pExternalTensorInfo, VkExternalTensorPropertiesARM* pExternalTensorProperties);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetTensorOpaqueCaptureDescriptorDataARM)(VkDevice device, const VkTensorCaptureDescriptorDataInfoARM* pInfo, void* pData);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetTensorViewOpaqueCaptureDescriptorDataARM)(VkDevice device, const VkTensorViewCaptureDescriptorDataInfoARM* pInfo, void* pData);\n\n\n#define VK_EXT_shader_module_identifier 1\n#define VK_EXT_SHADER_MODULE_IDENTIFIER_SPEC_VERSION 1\n#define VK_EXT_SHADER_MODULE_IDENTIFIER_EXTENSION_NAME \"VK_EXT_shader_module_identifier\"\n\n#define VK_MAX_SHADER_MODULE_IDENTIFIER_SIZE_EXT 32\n\ntypedef struct VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 shaderModuleIdentifier;\n} VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT;\n\ntypedef struct VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    uint8_t shaderModuleIdentifierAlgorithmUUID[VK_UUID_SIZE];\n} VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT;\n\ntypedef struct VkPipelineShaderStageModuleIdentifierCreateInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t identifierSize;\n    const uint8_t* pIdentifier;\n} VkPipelineShaderStageModuleIdentifierCreateInfoEXT;\n\ntypedef struct VkShaderModuleIdentifierEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t identifierSize;\n    uint8_t identifier[VK_MAX_SHADER_MODULE_IDENTIFIER_SIZE_EXT];\n} VkShaderModuleIdentifierEXT;\n\n\ntypedef void (VKAPI_PTR *PFN_vkGetShaderModuleIdentifierEXT)(VkDevice device, VkShaderModule shaderModule, VkShaderModuleIdentifierEXT* pIdentifier);\ntypedef void (VKAPI_PTR *PFN_vkGetShaderModuleCreateInfoIdentifierEXT)(VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, VkShaderModuleIdentifierEXT* pIdentifier);\n\n\n#define VK_EXT_rasterization_order_attachment_access 1\n#define VK_EXT_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_SPEC_VERSION 1\n#define VK_EXT_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_EXTENSION_NAME \"VK_EXT_rasterization_order_attachment_access\"\n\ntypedef struct VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 rasterizationOrderColorAttachmentAccess;\n    VkBool32 rasterizationOrderDepthAttachmentAccess;\n    VkBool32 rasterizationOrderStencilAttachmentAccess;\n} VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT;\n\n\n#define VK_ARM_rasterization_order_attachment_access 1\n#define VK_ARM_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_SPEC_VERSION 1\n#define VK_ARM_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_EXTENSION_NAME \"VK_ARM_rasterization_order_attachment_access\"\n\ntypedef VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM;\n\n\n#define VK_NV_optical_flow 1\n#define VK_NV_OPTICAL_FLOW_SPEC_VERSION 1\n#define VK_NV_OPTICAL_FLOW_EXTENSION_NAME \"VK_NV_optical_flow\"\n\nVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkOpticalFlowSessionNV)\n\n\ntypedef enum\n{\n    VK_OPTICAL_FLOW_GRID_SIZE_UNKNOWN_NV = 0,\n    VK_OPTICAL_FLOW_GRID_SIZE_1X1_BIT_NV = 0x00000001,\n    VK_OPTICAL_FLOW_GRID_SIZE_2X2_BIT_NV = 0x00000002,\n    VK_OPTICAL_FLOW_GRID_SIZE_4X4_BIT_NV = 0x00000004,\n    VK_OPTICAL_FLOW_GRID_SIZE_8X8_BIT_NV = 0x00000008,\n    VK_OPTICAL_FLOW_GRID_SIZE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF\n} VkOpticalFlowGridSizeFlagBitsNV;\ntypedef VkFlags VkOpticalFlowGridSizeFlagsNV;\n\ntypedef enum\n{\n    VK_OPTICAL_FLOW_USAGE_UNKNOWN_NV = 0,\n    VK_OPTICAL_FLOW_USAGE_INPUT_BIT_NV = 0x00000001,\n    VK_OPTICAL_FLOW_USAGE_OUTPUT_BIT_NV = 0x00000002,\n    VK_OPTICAL_FLOW_USAGE_HINT_BIT_NV = 0x00000004,\n    VK_OPTICAL_FLOW_USAGE_COST_BIT_NV = 0x00000008,\n    VK_OPTICAL_FLOW_USAGE_GLOBAL_FLOW_BIT_NV = 0x00000010,\n    VK_OPTICAL_FLOW_USAGE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF\n} VkOpticalFlowUsageFlagBitsNV;\ntypedef VkFlags VkOpticalFlowUsageFlagsNV;\ntypedef enum\n{\n    VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_UNKNOWN_NV = 0,\n    VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_SLOW_NV = 1,\n    VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MEDIUM_NV = 2,\n    VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_FAST_NV = 3,\n    VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MAX_ENUM_NV = 0x7FFFFFFF\n} VkOpticalFlowPerformanceLevelNV;\n\ntypedef enum\n{\n    VK_OPTICAL_FLOW_SESSION_BINDING_POINT_UNKNOWN_NV = 0,\n    VK_OPTICAL_FLOW_SESSION_BINDING_POINT_INPUT_NV = 1,\n    VK_OPTICAL_FLOW_SESSION_BINDING_POINT_REFERENCE_NV = 2,\n    VK_OPTICAL_FLOW_SESSION_BINDING_POINT_HINT_NV = 3,\n    VK_OPTICAL_FLOW_SESSION_BINDING_POINT_FLOW_VECTOR_NV = 4,\n    VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_FLOW_VECTOR_NV = 5,\n    VK_OPTICAL_FLOW_SESSION_BINDING_POINT_COST_NV = 6,\n    VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_COST_NV = 7,\n    VK_OPTICAL_FLOW_SESSION_BINDING_POINT_GLOBAL_FLOW_NV = 8,\n    VK_OPTICAL_FLOW_SESSION_BINDING_POINT_MAX_ENUM_NV = 0x7FFFFFFF\n} VkOpticalFlowSessionBindingPointNV;\n\n\ntypedef enum\n{\n    VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_HINT_BIT_NV = 0x00000001,\n    VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_COST_BIT_NV = 0x00000002,\n    VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_GLOBAL_FLOW_BIT_NV = 0x00000004,\n    VK_OPTICAL_FLOW_SESSION_CREATE_ALLOW_REGIONS_BIT_NV = 0x00000008,\n    VK_OPTICAL_FLOW_SESSION_CREATE_BOTH_DIRECTIONS_BIT_NV = 0x00000010,\n    VK_OPTICAL_FLOW_SESSION_CREATE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF\n} VkOpticalFlowSessionCreateFlagBitsNV;\ntypedef VkFlags VkOpticalFlowSessionCreateFlagsNV;\n\ntypedef enum\n{\n    VK_OPTICAL_FLOW_EXECUTE_DISABLE_TEMPORAL_HINTS_BIT_NV = 0x00000001,\n    VK_OPTICAL_FLOW_EXECUTE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF\n} VkOpticalFlowExecuteFlagBitsNV;\ntypedef VkFlags VkOpticalFlowExecuteFlagsNV;\n\ntypedef struct VkPhysicalDeviceOpticalFlowFeaturesNV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 opticalFlow;\n} VkPhysicalDeviceOpticalFlowFeaturesNV;\n\ntypedef struct VkPhysicalDeviceOpticalFlowPropertiesNV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkOpticalFlowGridSizeFlagsNV supportedOutputGridSizes;\n    VkOpticalFlowGridSizeFlagsNV supportedHintGridSizes;\n    VkBool32 hintSupported;\n    VkBool32 costSupported;\n    VkBool32 bidirectionalFlowSupported;\n    VkBool32 globalFlowSupported;\n    uint32_t minWidth;\n    uint32_t minHeight;\n    uint32_t maxWidth;\n    uint32_t maxHeight;\n    uint32_t maxNumRegionsOfInterest;\n} VkPhysicalDeviceOpticalFlowPropertiesNV;\n\ntypedef struct VkOpticalFlowImageFormatInfoNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkOpticalFlowUsageFlagsNV usage;\n} VkOpticalFlowImageFormatInfoNV;\n\ntypedef struct VkOpticalFlowImageFormatPropertiesNV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkFormat format;\n} VkOpticalFlowImageFormatPropertiesNV;\n\ntypedef struct VkOpticalFlowSessionCreateInfoNV\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t width;\n    uint32_t height;\n    VkFormat imageFormat;\n    VkFormat flowVectorFormat;\n    VkFormat costFormat;\n    VkOpticalFlowGridSizeFlagsNV outputGridSize;\n    VkOpticalFlowGridSizeFlagsNV hintGridSize;\n    VkOpticalFlowPerformanceLevelNV performanceLevel;\n    VkOpticalFlowSessionCreateFlagsNV flags;\n} VkOpticalFlowSessionCreateInfoNV;\n\ntypedef struct VkOpticalFlowSessionCreatePrivateDataInfoNV\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t id;\n    uint32_t size;\n    const void* pPrivateData;\n} VkOpticalFlowSessionCreatePrivateDataInfoNV;\n\ntypedef struct VkOpticalFlowExecuteInfoNV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkOpticalFlowExecuteFlagsNV flags;\n    uint32_t regionCount;\n    const VkRect2D* pRegions;\n} VkOpticalFlowExecuteInfoNV;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV)(VkPhysicalDevice physicalDevice, const VkOpticalFlowImageFormatInfoNV* pOpticalFlowImageFormatInfo, uint32_t* pFormatCount, VkOpticalFlowImageFormatPropertiesNV* pImageFormatProperties);\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateOpticalFlowSessionNV)(VkDevice device, const VkOpticalFlowSessionCreateInfoNV* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkOpticalFlowSessionNV* pSession);\ntypedef void (VKAPI_PTR *PFN_vkDestroyOpticalFlowSessionNV)(VkDevice device, VkOpticalFlowSessionNV session, const VkAllocationCallbacks* pAllocator);\ntypedef VkResult (VKAPI_PTR *PFN_vkBindOpticalFlowSessionImageNV)(VkDevice device, VkOpticalFlowSessionNV session, VkOpticalFlowSessionBindingPointNV bindingPoint, VkImageView view, VkImageLayout layout);\ntypedef void (VKAPI_PTR *PFN_vkCmdOpticalFlowExecuteNV)(VkCommandBuffer commandBuffer, VkOpticalFlowSessionNV session, const VkOpticalFlowExecuteInfoNV* pExecuteInfo);\n\n\n#define VK_EXT_legacy_dithering 1\n#define VK_EXT_LEGACY_DITHERING_SPEC_VERSION 2\n#define VK_EXT_LEGACY_DITHERING_EXTENSION_NAME \"VK_EXT_legacy_dithering\"\n\ntypedef struct VkPhysicalDeviceLegacyDitheringFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 legacyDithering;\n} VkPhysicalDeviceLegacyDitheringFeaturesEXT;\n\n\n#define VK_EXT_pipeline_protected_access 1\n#define VK_EXT_PIPELINE_PROTECTED_ACCESS_SPEC_VERSION 1\n#define VK_EXT_PIPELINE_PROTECTED_ACCESS_EXTENSION_NAME \"VK_EXT_pipeline_protected_access\"\n\ntypedef VkPhysicalDevicePipelineProtectedAccessFeatures VkPhysicalDevicePipelineProtectedAccessFeaturesEXT;\n\n\n#define VK_KHR_maintenance5 1\n#define VK_KHR_MAINTENANCE_5_SPEC_VERSION 1\n#define VK_KHR_MAINTENANCE_5_EXTENSION_NAME \"VK_KHR_maintenance5\"\n\ntypedef VkPipelineCreateFlags2 VkPipelineCreateFlags2KHR;\ntypedef VkPipelineCreateFlagBits2 VkPipelineCreateFlagBits2KHR;\ntypedef VkBufferUsageFlags2 VkBufferUsageFlags2KHR;\ntypedef VkBufferUsageFlagBits2 VkBufferUsageFlagBits2KHR;\ntypedef VkPhysicalDeviceMaintenance5Features VkPhysicalDeviceMaintenance5FeaturesKHR;\n\ntypedef VkPhysicalDeviceMaintenance5Properties VkPhysicalDeviceMaintenance5PropertiesKHR;\n\ntypedef VkRenderingAreaInfo VkRenderingAreaInfoKHR;\n\ntypedef VkDeviceImageSubresourceInfo VkDeviceImageSubresourceInfoKHR;\n\ntypedef VkImageSubresource2 VkImageSubresource2KHR;\n\ntypedef VkSubresourceLayout2 VkSubresourceLayout2KHR;\n\ntypedef VkPipelineCreateFlags2CreateInfo VkPipelineCreateFlags2CreateInfoKHR;\n\ntypedef VkBufferUsageFlags2CreateInfo VkBufferUsageFlags2CreateInfoKHR;\n\ntypedef void (VKAPI_PTR *PFN_vkCmdBindIndexBuffer2KHR)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkDeviceSize size, VkIndexType indexType);\ntypedef void (VKAPI_PTR *PFN_vkGetRenderingAreaGranularityKHR)(VkDevice device, const VkRenderingAreaInfo* pRenderingAreaInfo, VkExtent2D* pGranularity);\ntypedef void (VKAPI_PTR *PFN_vkGetDeviceImageSubresourceLayoutKHR)(VkDevice device, const VkDeviceImageSubresourceInfo* pInfo, VkSubresourceLayout2* pLayout);\ntypedef void (VKAPI_PTR *PFN_vkGetImageSubresourceLayout2KHR)(VkDevice device, VkImage image, const VkImageSubresource2* pSubresource, VkSubresourceLayout2* pLayout);\n\n\n#define VK_AMD_anti_lag 1\n#define VK_AMD_ANTI_LAG_SPEC_VERSION 1\n#define VK_AMD_ANTI_LAG_EXTENSION_NAME \"VK_AMD_anti_lag\"\n\ntypedef enum\n{\n    VK_ANTI_LAG_MODE_DRIVER_CONTROL_AMD = 0,\n    VK_ANTI_LAG_MODE_ON_AMD = 1,\n    VK_ANTI_LAG_MODE_OFF_AMD = 2,\n    VK_ANTI_LAG_MODE_MAX_ENUM_AMD = 0x7FFFFFFF\n} VkAntiLagModeAMD;\n\ntypedef enum\n{\n    VK_ANTI_LAG_STAGE_INPUT_AMD = 0,\n    VK_ANTI_LAG_STAGE_PRESENT_AMD = 1,\n    VK_ANTI_LAG_STAGE_MAX_ENUM_AMD = 0x7FFFFFFF\n} VkAntiLagStageAMD;\n\n\ntypedef struct VkPhysicalDeviceAntiLagFeaturesAMD\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 antiLag;\n} VkPhysicalDeviceAntiLagFeaturesAMD;\n\ntypedef struct VkAntiLagPresentationInfoAMD\n{\n    VkStructureType sType;\n    void* pNext;\n    VkAntiLagStageAMD stage;\n    uint64_t frameIndex;\n} VkAntiLagPresentationInfoAMD;\n\ntypedef struct VkAntiLagDataAMD\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkAntiLagModeAMD mode;\n    uint32_t maxFPS;\n    const VkAntiLagPresentationInfoAMD* pPresentationInfo;\n} VkAntiLagDataAMD;\n\n\ntypedef void (VKAPI_PTR *PFN_vkAntiLagUpdateAMD)(VkDevice device, const VkAntiLagDataAMD* pData);\n\n\n#define VK_KHR_present_id2 1\n#define VK_KHR_PRESENT_ID_2_SPEC_VERSION 1\n#define VK_KHR_PRESENT_ID_2_EXTENSION_NAME \"VK_KHR_present_id2\"\n\ntypedef struct VkSurfaceCapabilitiesPresentId2KHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 presentId2Supported;\n} VkSurfaceCapabilitiesPresentId2KHR;\n\ntypedef struct VkPresentId2KHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t swapchainCount;\n    const uint64_t* pPresentIds;\n} VkPresentId2KHR;\n\ntypedef struct VkPhysicalDevicePresentId2FeaturesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 presentId2;\n} VkPhysicalDevicePresentId2FeaturesKHR;\n\n\n#define VK_KHR_present_wait2 1\n#define VK_KHR_PRESENT_WAIT_2_SPEC_VERSION 1\n#define VK_KHR_PRESENT_WAIT_2_EXTENSION_NAME \"VK_KHR_present_wait2\"\n\ntypedef struct VkSurfaceCapabilitiesPresentWait2KHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 presentWait2Supported;\n} VkSurfaceCapabilitiesPresentWait2KHR;\n\ntypedef struct VkPhysicalDevicePresentWait2FeaturesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 presentWait2;\n} VkPhysicalDevicePresentWait2FeaturesKHR;\n\ntypedef struct VkPresentWait2InfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint64_t presentId;\n    uint64_t timeout;\n} VkPresentWait2InfoKHR;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkWaitForPresent2KHR)(VkDevice device, VkSwapchainKHR swapchain, const VkPresentWait2InfoKHR* pPresentWait2Info);\n\n\n#define VK_KHR_ray_tracing_position_fetch 1\n#define VK_KHR_RAY_TRACING_POSITION_FETCH_SPEC_VERSION 1\n#define VK_KHR_RAY_TRACING_POSITION_FETCH_EXTENSION_NAME \"VK_KHR_ray_tracing_position_fetch\"\n\ntypedef struct VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 rayTracingPositionFetch;\n} VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR;\n\n\n#define VK_EXT_shader_object 1\n#define VK_EXT_SHADER_OBJECT_SPEC_VERSION 1\n#define VK_EXT_SHADER_OBJECT_EXTENSION_NAME \"VK_EXT_shader_object\"\n\nVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkShaderEXT)\n\n\ntypedef enum\n{\n    VK_SHADER_CREATE_LINK_STAGE_BIT_EXT = 0x00000001,\n    VK_SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT = 0x00000400,\n    VK_SHADER_CREATE_INSTRUMENT_SHADER_BIT_ARM = 0x00000800,\n    VK_SHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = 0x00000002,\n    VK_SHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = 0x00000004,\n    VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT = 0x00000008,\n    VK_SHADER_CREATE_DISPATCH_BASE_BIT_EXT = 0x00000010,\n    VK_SHADER_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_EXT = 0x00000020,\n    VK_SHADER_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 0x00000040,\n    VK_SHADER_CREATE_INDIRECT_BINDABLE_BIT_EXT = 0x00000080,\n    VK_SHADER_CREATE_64_BIT_INDEXING_BIT_EXT = 0x00008000,\n    VK_SHADER_CREATE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF\n} VkShaderCreateFlagBitsEXT;\ntypedef VkFlags VkShaderCreateFlagsEXT;\ntypedef enum\n{\n    VK_SHADER_CODE_TYPE_BINARY_EXT = 0,\n    VK_SHADER_CODE_TYPE_SPIRV_EXT = 1,\n    VK_SHADER_CODE_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF\n} VkShaderCodeTypeEXT;\n\ntypedef enum\n{\n    VK_DEPTH_CLAMP_MODE_VIEWPORT_RANGE_EXT = 0,\n    VK_DEPTH_CLAMP_MODE_USER_DEFINED_RANGE_EXT = 1,\n    VK_DEPTH_CLAMP_MODE_MAX_ENUM_EXT = 0x7FFFFFFF\n} VkDepthClampModeEXT;\n\n\ntypedef struct VkPhysicalDeviceShaderObjectFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 shaderObject;\n} VkPhysicalDeviceShaderObjectFeaturesEXT;\n\ntypedef struct VkPhysicalDeviceShaderObjectPropertiesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    uint8_t shaderBinaryUUID[VK_UUID_SIZE];\n    uint32_t shaderBinaryVersion;\n} VkPhysicalDeviceShaderObjectPropertiesEXT;\n\ntypedef struct VkShaderCreateInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkShaderCreateFlagsEXT flags;\n    VkShaderStageFlagBits stage;\n    VkShaderStageFlags nextStage;\n    VkShaderCodeTypeEXT codeType;\n    size_t codeSize;\n    const void* pCode;\n    const char* pName;\n    uint32_t setLayoutCount;\n    const VkDescriptorSetLayout* pSetLayouts;\n    uint32_t pushConstantRangeCount;\n    const VkPushConstantRange* pPushConstantRanges;\n    const VkSpecializationInfo* pSpecializationInfo;\n} VkShaderCreateInfoEXT;\n\ntypedef VkPipelineShaderStageRequiredSubgroupSizeCreateInfo VkShaderRequiredSubgroupSizeCreateInfoEXT;\n\ntypedef struct VkDepthClampRangeEXT\n{\n    float minDepthClamp;\n    float maxDepthClamp;\n} VkDepthClampRangeEXT;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateShadersEXT)(VkDevice device, uint32_t createInfoCount, const VkShaderCreateInfoEXT* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkShaderEXT* pShaders);\ntypedef void (VKAPI_PTR *PFN_vkDestroyShaderEXT)(VkDevice device, VkShaderEXT shader, const VkAllocationCallbacks* pAllocator);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetShaderBinaryDataEXT)(VkDevice device, VkShaderEXT shader, size_t* pDataSize, void* pData);\ntypedef void (VKAPI_PTR *PFN_vkCmdBindShadersEXT)(VkCommandBuffer commandBuffer, uint32_t stageCount, const VkShaderStageFlagBits* pStages, const VkShaderEXT* pShaders);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetDepthClampRangeEXT)(VkCommandBuffer commandBuffer, VkDepthClampModeEXT depthClampMode, const VkDepthClampRangeEXT* pDepthClampRange);\n\n\n#define VK_KHR_pipeline_binary 1\n#define VK_KHR_PIPELINE_BINARY_SPEC_VERSION 1\n#define VK_KHR_PIPELINE_BINARY_EXTENSION_NAME \"VK_KHR_pipeline_binary\"\n\n#define VK_MAX_PIPELINE_BINARY_KEY_SIZE_KHR 32\n\nVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipelineBinaryKHR)\n\ntypedef struct VkPhysicalDevicePipelineBinaryFeaturesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 pipelineBinaries;\n} VkPhysicalDevicePipelineBinaryFeaturesKHR;\n\ntypedef struct VkPhysicalDevicePipelineBinaryPropertiesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 pipelineBinaryInternalCache;\n    VkBool32 pipelineBinaryInternalCacheControl;\n    VkBool32 pipelineBinaryPrefersInternalCache;\n    VkBool32 pipelineBinaryPrecompiledInternalCache;\n    VkBool32 pipelineBinaryCompressedData;\n} VkPhysicalDevicePipelineBinaryPropertiesKHR;\n\ntypedef struct VkDevicePipelineBinaryInternalCacheControlKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkBool32 disableInternalCache;\n} VkDevicePipelineBinaryInternalCacheControlKHR;\n\ntypedef struct VkPipelineBinaryKeyKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t keySize;\n    uint8_t key[VK_MAX_PIPELINE_BINARY_KEY_SIZE_KHR];\n} VkPipelineBinaryKeyKHR;\n\ntypedef struct VkPipelineBinaryDataKHR\n{\n    size_t dataSize;\n    void* pData;\n} VkPipelineBinaryDataKHR;\n\ntypedef struct VkPipelineBinaryKeysAndDataKHR\n{\n    uint32_t binaryCount;\n    const VkPipelineBinaryKeyKHR* pPipelineBinaryKeys;\n    const VkPipelineBinaryDataKHR* pPipelineBinaryData;\n} VkPipelineBinaryKeysAndDataKHR;\n\ntypedef struct VkPipelineCreateInfoKHR\n{\n    VkStructureType sType;\n    void* pNext;\n} VkPipelineCreateInfoKHR;\n\ntypedef struct VkPipelineBinaryCreateInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    const VkPipelineBinaryKeysAndDataKHR* pKeysAndDataInfo;\n    VkPipeline pipeline;\n    const VkPipelineCreateInfoKHR* pPipelineCreateInfo;\n} VkPipelineBinaryCreateInfoKHR;\n\ntypedef struct VkPipelineBinaryInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t binaryCount;\n    const VkPipelineBinaryKHR* pPipelineBinaries;\n} VkPipelineBinaryInfoKHR;\n\ntypedef struct VkReleaseCapturedPipelineDataInfoKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkPipeline pipeline;\n} VkReleaseCapturedPipelineDataInfoKHR;\n\ntypedef struct VkPipelineBinaryDataInfoKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkPipelineBinaryKHR pipelineBinary;\n} VkPipelineBinaryDataInfoKHR;\n\ntypedef struct VkPipelineBinaryHandlesInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t pipelineBinaryCount;\n    VkPipelineBinaryKHR* pPipelineBinaries;\n} VkPipelineBinaryHandlesInfoKHR;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkCreatePipelineBinariesKHR)(VkDevice device, const VkPipelineBinaryCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineBinaryHandlesInfoKHR* pBinaries);\ntypedef void (VKAPI_PTR *PFN_vkDestroyPipelineBinaryKHR)(VkDevice device, VkPipelineBinaryKHR pipelineBinary, const VkAllocationCallbacks* pAllocator);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetPipelineKeyKHR)(VkDevice device, const VkPipelineCreateInfoKHR* pPipelineCreateInfo, VkPipelineBinaryKeyKHR* pPipelineKey);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetPipelineBinaryDataKHR)(VkDevice device, const VkPipelineBinaryDataInfoKHR* pInfo, VkPipelineBinaryKeyKHR* pPipelineBinaryKey, size_t* pPipelineBinaryDataSize, void* pPipelineBinaryData);\ntypedef VkResult (VKAPI_PTR *PFN_vkReleaseCapturedPipelineDataKHR)(VkDevice device, const VkReleaseCapturedPipelineDataInfoKHR* pInfo, const VkAllocationCallbacks* pAllocator);\n\n\n#define VK_QCOM_tile_properties 1\n#define VK_QCOM_TILE_PROPERTIES_SPEC_VERSION 1\n#define VK_QCOM_TILE_PROPERTIES_EXTENSION_NAME \"VK_QCOM_tile_properties\"\n\ntypedef struct VkPhysicalDeviceTilePropertiesFeaturesQCOM\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 tileProperties;\n} VkPhysicalDeviceTilePropertiesFeaturesQCOM;\n\ntypedef struct VkTilePropertiesQCOM\n{\n    VkStructureType sType;\n    void* pNext;\n    VkExtent3D tileSize;\n    VkExtent2D apronSize;\n    VkOffset2D origin;\n} VkTilePropertiesQCOM;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkGetFramebufferTilePropertiesQCOM)(VkDevice device, VkFramebuffer framebuffer, uint32_t* pPropertiesCount, VkTilePropertiesQCOM* pProperties);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetDynamicRenderingTilePropertiesQCOM)(VkDevice device, const VkRenderingInfo* pRenderingInfo, VkTilePropertiesQCOM* pProperties);\n\n\n#define VK_SEC_amigo_profiling 1\n#define VK_SEC_AMIGO_PROFILING_SPEC_VERSION 1\n#define VK_SEC_AMIGO_PROFILING_EXTENSION_NAME \"VK_SEC_amigo_profiling\"\n\ntypedef struct VkPhysicalDeviceAmigoProfilingFeaturesSEC\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 amigoProfiling;\n} VkPhysicalDeviceAmigoProfilingFeaturesSEC;\n\ntypedef struct VkAmigoProfilingSubmitInfoSEC\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint64_t firstDrawTimestamp;\n    uint64_t swapBufferTimestamp;\n} VkAmigoProfilingSubmitInfoSEC;\n\n\n#define VK_KHR_surface_maintenance1 1\n#define VK_KHR_SURFACE_MAINTENANCE_1_SPEC_VERSION 1\n#define VK_KHR_SURFACE_MAINTENANCE_1_EXTENSION_NAME \"VK_KHR_surface_maintenance1\"\n\n\ntypedef enum\n{\n    VK_PRESENT_SCALING_ONE_TO_ONE_BIT_KHR = 0x00000001,\n    VK_PRESENT_SCALING_ONE_TO_ONE_BIT_EXT = VK_PRESENT_SCALING_ONE_TO_ONE_BIT_KHR,\n    VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_KHR = 0x00000002,\n    VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_EXT = VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_KHR,\n    VK_PRESENT_SCALING_STRETCH_BIT_KHR = 0x00000004,\n    VK_PRESENT_SCALING_STRETCH_BIT_EXT = VK_PRESENT_SCALING_STRETCH_BIT_KHR,\n    VK_PRESENT_SCALING_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkPresentScalingFlagBitsKHR;\ntypedef VkFlags VkPresentScalingFlagsKHR;\n\ntypedef enum\n{\n    VK_PRESENT_GRAVITY_MIN_BIT_KHR = 0x00000001,\n    VK_PRESENT_GRAVITY_MIN_BIT_EXT = VK_PRESENT_GRAVITY_MIN_BIT_KHR,\n    VK_PRESENT_GRAVITY_MAX_BIT_KHR = 0x00000002,\n    VK_PRESENT_GRAVITY_MAX_BIT_EXT = VK_PRESENT_GRAVITY_MAX_BIT_KHR,\n    VK_PRESENT_GRAVITY_CENTERED_BIT_KHR = 0x00000004,\n    VK_PRESENT_GRAVITY_CENTERED_BIT_EXT = VK_PRESENT_GRAVITY_CENTERED_BIT_KHR,\n    VK_PRESENT_GRAVITY_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkPresentGravityFlagBitsKHR;\ntypedef VkFlags VkPresentGravityFlagsKHR;\n\ntypedef struct VkSurfacePresentModeKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkPresentModeKHR presentMode;\n} VkSurfacePresentModeKHR;\n\ntypedef struct VkSurfacePresentScalingCapabilitiesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkPresentScalingFlagsKHR supportedPresentScaling;\n    VkPresentGravityFlagsKHR supportedPresentGravityX;\n    VkPresentGravityFlagsKHR supportedPresentGravityY;\n    VkExtent2D minScaledImageExtent;\n    VkExtent2D maxScaledImageExtent;\n} VkSurfacePresentScalingCapabilitiesKHR;\n\ntypedef struct VkSurfacePresentModeCompatibilityKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t presentModeCount;\n    VkPresentModeKHR* pPresentModes;\n} VkSurfacePresentModeCompatibilityKHR;\n\n\n#define VK_EXT_surface_maintenance1 1\n#define VK_EXT_SURFACE_MAINTENANCE_1_SPEC_VERSION 1\n#define VK_EXT_SURFACE_MAINTENANCE_1_EXTENSION_NAME \"VK_EXT_surface_maintenance1\"\n\ntypedef VkPresentScalingFlagBitsKHR VkPresentScalingFlagBitsEXT;\ntypedef VkPresentScalingFlagsKHR VkPresentScalingFlagsEXT;\ntypedef VkPresentGravityFlagBitsKHR VkPresentGravityFlagBitsEXT;\ntypedef VkPresentGravityFlagsKHR VkPresentGravityFlagsEXT;\ntypedef VkSurfacePresentModeKHR VkSurfacePresentModeEXT;\n\ntypedef VkSurfacePresentScalingCapabilitiesKHR VkSurfacePresentScalingCapabilitiesEXT;\n\ntypedef VkSurfacePresentModeCompatibilityKHR VkSurfacePresentModeCompatibilityEXT;\n\n\n#define VK_KHR_swapchain_maintenance1 1\n#define VK_KHR_SWAPCHAIN_MAINTENANCE_1_SPEC_VERSION 1\n#define VK_KHR_SWAPCHAIN_MAINTENANCE_1_EXTENSION_NAME \"VK_KHR_swapchain_maintenance1\"\n\ntypedef struct VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 swapchainMaintenance1;\n} VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR;\n\ntypedef struct VkSwapchainPresentFenceInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t swapchainCount;\n    const VkFence* pFences;\n} VkSwapchainPresentFenceInfoKHR;\n\ntypedef struct VkSwapchainPresentModesCreateInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t presentModeCount;\n    const VkPresentModeKHR* pPresentModes;\n} VkSwapchainPresentModesCreateInfoKHR;\n\ntypedef struct VkSwapchainPresentModeInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t swapchainCount;\n    const VkPresentModeKHR* pPresentModes;\n} VkSwapchainPresentModeInfoKHR;\n\ntypedef struct VkSwapchainPresentScalingCreateInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkPresentScalingFlagsKHR scalingBehavior;\n    VkPresentGravityFlagsKHR presentGravityX;\n    VkPresentGravityFlagsKHR presentGravityY;\n} VkSwapchainPresentScalingCreateInfoKHR;\n\ntypedef struct VkReleaseSwapchainImagesInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkSwapchainKHR swapchain;\n    uint32_t imageIndexCount;\n    const uint32_t* pImageIndices;\n} VkReleaseSwapchainImagesInfoKHR;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkReleaseSwapchainImagesKHR)(VkDevice device, const VkReleaseSwapchainImagesInfoKHR* pReleaseInfo);\n\n\n#define VK_EXT_swapchain_maintenance1 1\n#define VK_EXT_SWAPCHAIN_MAINTENANCE_1_SPEC_VERSION 1\n#define VK_EXT_SWAPCHAIN_MAINTENANCE_1_EXTENSION_NAME \"VK_EXT_swapchain_maintenance1\"\n\ntypedef VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT;\n\ntypedef VkSwapchainPresentFenceInfoKHR VkSwapchainPresentFenceInfoEXT;\n\ntypedef VkSwapchainPresentModesCreateInfoKHR VkSwapchainPresentModesCreateInfoEXT;\n\ntypedef VkSwapchainPresentModeInfoKHR VkSwapchainPresentModeInfoEXT;\n\ntypedef VkSwapchainPresentScalingCreateInfoKHR VkSwapchainPresentScalingCreateInfoEXT;\n\ntypedef VkReleaseSwapchainImagesInfoKHR VkReleaseSwapchainImagesInfoEXT;\n\ntypedef VkResult (VKAPI_PTR *PFN_vkReleaseSwapchainImagesEXT)(VkDevice device, const VkReleaseSwapchainImagesInfoKHR* pReleaseInfo);\n\n\n#define VK_QCOM_multiview_per_view_viewports 1\n#define VK_QCOM_MULTIVIEW_PER_VIEW_VIEWPORTS_SPEC_VERSION 1\n#define VK_QCOM_MULTIVIEW_PER_VIEW_VIEWPORTS_EXTENSION_NAME \"VK_QCOM_multiview_per_view_viewports\"\n\ntypedef struct VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 multiviewPerViewViewports;\n} VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM;\n\n\n#define VK_NV_cooperative_vector 1\n#define VK_NV_COOPERATIVE_VECTOR_SPEC_VERSION 4\n#define VK_NV_COOPERATIVE_VECTOR_EXTENSION_NAME \"VK_NV_cooperative_vector\"\n\ntypedef enum\n{\n    VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_ROW_MAJOR_NV = 0,\n    VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_COLUMN_MAJOR_NV = 1,\n    VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_INFERENCING_OPTIMAL_NV = 2,\n    VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_TRAINING_OPTIMAL_NV = 3,\n    VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_MAX_ENUM_NV = 0x7FFFFFFF\n} VkCooperativeVectorMatrixLayoutNV;\n\n\ntypedef struct VkPhysicalDeviceCooperativeVectorPropertiesNV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkShaderStageFlags cooperativeVectorSupportedStages;\n    VkBool32 cooperativeVectorTrainingFloat16Accumulation;\n    VkBool32 cooperativeVectorTrainingFloat32Accumulation;\n    uint32_t maxCooperativeVectorComponents;\n} VkPhysicalDeviceCooperativeVectorPropertiesNV;\n\ntypedef struct VkPhysicalDeviceCooperativeVectorFeaturesNV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 cooperativeVector;\n    VkBool32 cooperativeVectorTraining;\n} VkPhysicalDeviceCooperativeVectorFeaturesNV;\n\ntypedef struct VkCooperativeVectorPropertiesNV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkComponentTypeKHR inputType;\n    VkComponentTypeKHR inputInterpretation;\n    VkComponentTypeKHR matrixInterpretation;\n    VkComponentTypeKHR biasInterpretation;\n    VkComponentTypeKHR resultType;\n    VkBool32 transpose;\n} VkCooperativeVectorPropertiesNV;\n\ntypedef struct VkConvertCooperativeVectorMatrixInfoNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    size_t srcSize;\n    VkDeviceOrHostAddressConstKHR srcData;\n    size_t* pDstSize;\n    VkDeviceOrHostAddressKHR dstData;\n    VkComponentTypeKHR srcComponentType;\n    VkComponentTypeKHR dstComponentType;\n    uint32_t numRows;\n    uint32_t numColumns;\n    VkCooperativeVectorMatrixLayoutNV srcLayout;\n    size_t srcStride;\n    VkCooperativeVectorMatrixLayoutNV dstLayout;\n    size_t dstStride;\n} VkConvertCooperativeVectorMatrixInfoNV;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceCooperativeVectorPropertiesNV)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkCooperativeVectorPropertiesNV* pProperties);\ntypedef VkResult (VKAPI_PTR *PFN_vkConvertCooperativeVectorMatrixNV)(VkDevice device, const VkConvertCooperativeVectorMatrixInfoNV* pInfo);\ntypedef void (VKAPI_PTR *PFN_vkCmdConvertCooperativeVectorMatrixNV)(VkCommandBuffer commandBuffer, uint32_t infoCount, const VkConvertCooperativeVectorMatrixInfoNV* pInfos);\n\n\n#define VK_NV_extended_sparse_address_space 1\n#define VK_NV_EXTENDED_SPARSE_ADDRESS_SPACE_SPEC_VERSION 1\n#define VK_NV_EXTENDED_SPARSE_ADDRESS_SPACE_EXTENSION_NAME \"VK_NV_extended_sparse_address_space\"\n\ntypedef struct VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 extendedSparseAddressSpace;\n} VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV;\n\ntypedef struct VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkDeviceSize extendedSparseAddressSpaceSize;\n    VkImageUsageFlags extendedSparseImageUsageFlags;\n    VkBufferUsageFlags extendedSparseBufferUsageFlags;\n} VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV;\n\n\n#define VK_EXT_mutable_descriptor_type 1\n#define VK_EXT_MUTABLE_DESCRIPTOR_TYPE_SPEC_VERSION 1\n#define VK_EXT_MUTABLE_DESCRIPTOR_TYPE_EXTENSION_NAME \"VK_EXT_mutable_descriptor_type\"\n\ntypedef struct VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 mutableDescriptorType;\n} VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT;\n\ntypedef struct VkMutableDescriptorTypeListEXT\n{\n    uint32_t descriptorTypeCount;\n    const VkDescriptorType* pDescriptorTypes;\n} VkMutableDescriptorTypeListEXT;\n\ntypedef struct VkMutableDescriptorTypeCreateInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t mutableDescriptorTypeListCount;\n    const VkMutableDescriptorTypeListEXT* pMutableDescriptorTypeLists;\n} VkMutableDescriptorTypeCreateInfoEXT;\n\n\n#define VK_VALVE_mutable_descriptor_type 1\n#define VK_VALVE_MUTABLE_DESCRIPTOR_TYPE_SPEC_VERSION 1\n#define VK_VALVE_MUTABLE_DESCRIPTOR_TYPE_EXTENSION_NAME \"VK_VALVE_mutable_descriptor_type\"\n\ntypedef VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE;\n\ntypedef VkMutableDescriptorTypeListEXT VkMutableDescriptorTypeListVALVE;\n\ntypedef VkMutableDescriptorTypeCreateInfoEXT VkMutableDescriptorTypeCreateInfoVALVE;\n\n\n#define VK_EXT_legacy_vertex_attributes 1\n#define VK_EXT_LEGACY_VERTEX_ATTRIBUTES_SPEC_VERSION 1\n#define VK_EXT_LEGACY_VERTEX_ATTRIBUTES_EXTENSION_NAME \"VK_EXT_legacy_vertex_attributes\"\n\ntypedef struct VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 legacyVertexAttributes;\n} VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT;\n\ntypedef struct VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 nativeUnalignedPerformance;\n} VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT;\n\n\n#define VK_EXT_layer_settings 1\n#define VK_EXT_LAYER_SETTINGS_SPEC_VERSION 2\n#define VK_EXT_LAYER_SETTINGS_EXTENSION_NAME \"VK_EXT_layer_settings\"\n\ntypedef enum\n{\n    VK_LAYER_SETTING_TYPE_BOOL32_EXT = 0,\n    VK_LAYER_SETTING_TYPE_INT32_EXT = 1,\n    VK_LAYER_SETTING_TYPE_INT64_EXT = 2,\n    VK_LAYER_SETTING_TYPE_UINT32_EXT = 3,\n    VK_LAYER_SETTING_TYPE_UINT64_EXT = 4,\n    VK_LAYER_SETTING_TYPE_FLOAT32_EXT = 5,\n    VK_LAYER_SETTING_TYPE_FLOAT64_EXT = 6,\n    VK_LAYER_SETTING_TYPE_STRING_EXT = 7,\n    VK_LAYER_SETTING_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF\n} VkLayerSettingTypeEXT;\n\n\ntypedef struct VkLayerSettingEXT\n{\n    const char* pLayerName;\n    const char* pSettingName;\n    VkLayerSettingTypeEXT type;\n    uint32_t valueCount;\n    const void* pValues;\n} VkLayerSettingEXT;\n\ntypedef struct VkLayerSettingsCreateInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t settingCount;\n    const VkLayerSettingEXT* pSettings;\n} VkLayerSettingsCreateInfoEXT;\n\n\n#define VK_EXT_validation_flags 1\n#define VK_EXT_VALIDATION_FLAGS_SPEC_VERSION 3\n#define VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME \"VK_EXT_validation_flags\"\n\ntypedef enum\n{\n    VK_VALIDATION_CHECK_ALL_EXT = 0,\n    VK_VALIDATION_CHECK_SHADERS_EXT = 1,\n    VK_VALIDATION_CHECK_MAX_ENUM_EXT = 0x7FFFFFFF\n} VkValidationCheckEXT;\n\n\ntypedef struct VkValidationFlagsEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t disabledValidationCheckCount;\n    const VkValidationCheckEXT* pDisabledValidationChecks;\n} VkValidationFlagsEXT;\n\n\n#define VK_ARM_shader_core_builtins 1\n#define VK_ARM_SHADER_CORE_BUILTINS_SPEC_VERSION 2\n#define VK_ARM_SHADER_CORE_BUILTINS_EXTENSION_NAME \"VK_ARM_shader_core_builtins\"\n\ntypedef struct VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 shaderCoreBuiltins;\n} VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM;\n\ntypedef struct VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM\n{\n    VkStructureType sType;\n    void* pNext;\n    uint64_t shaderCoreMask;\n    uint32_t shaderCoreCount;\n    uint32_t shaderWarpsPerCore;\n} VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM;\n\n\n#define VK_EXT_pipeline_library_group_handles 1\n#define VK_EXT_PIPELINE_LIBRARY_GROUP_HANDLES_SPEC_VERSION 1\n#define VK_EXT_PIPELINE_LIBRARY_GROUP_HANDLES_EXTENSION_NAME \"VK_EXT_pipeline_library_group_handles\"\n\ntypedef struct VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 pipelineLibraryGroupHandles;\n} VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT;\n\n\n#define VK_EXT_dynamic_rendering_unused_attachments 1\n#define VK_EXT_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_SPEC_VERSION 1\n#define VK_EXT_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_EXTENSION_NAME \"VK_EXT_dynamic_rendering_unused_attachments\"\n\ntypedef struct VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 dynamicRenderingUnusedAttachments;\n} VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT;\n\n\n#define VK_KHR_internally_synchronized_queues 1\n#define VK_KHR_INTERNALLY_SYNCHRONIZED_QUEUES_SPEC_VERSION 1\n#define VK_KHR_INTERNALLY_SYNCHRONIZED_QUEUES_EXTENSION_NAME \"VK_KHR_internally_synchronized_queues\"\n\ntypedef struct VkPhysicalDeviceInternallySynchronizedQueuesFeaturesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 internallySynchronizedQueues;\n} VkPhysicalDeviceInternallySynchronizedQueuesFeaturesKHR;\n\n\n#define VK_NV_low_latency2 1\n#define VK_NV_LOW_LATENCY_2_SPEC_VERSION 2\n#define VK_NV_LOW_LATENCY_2_EXTENSION_NAME \"VK_NV_low_latency2\"\n\ntypedef enum\n{\n    VK_LATENCY_MARKER_SIMULATION_START_NV = 0,\n    VK_LATENCY_MARKER_SIMULATION_END_NV = 1,\n    VK_LATENCY_MARKER_RENDERSUBMIT_START_NV = 2,\n    VK_LATENCY_MARKER_RENDERSUBMIT_END_NV = 3,\n    VK_LATENCY_MARKER_PRESENT_START_NV = 4,\n    VK_LATENCY_MARKER_PRESENT_END_NV = 5,\n    VK_LATENCY_MARKER_INPUT_SAMPLE_NV = 6,\n    VK_LATENCY_MARKER_TRIGGER_FLASH_NV = 7,\n    VK_LATENCY_MARKER_OUT_OF_BAND_RENDERSUBMIT_START_NV = 8,\n    VK_LATENCY_MARKER_OUT_OF_BAND_RENDERSUBMIT_END_NV = 9,\n    VK_LATENCY_MARKER_OUT_OF_BAND_PRESENT_START_NV = 10,\n    VK_LATENCY_MARKER_OUT_OF_BAND_PRESENT_END_NV = 11,\n    VK_LATENCY_MARKER_MAX_ENUM_NV = 0x7FFFFFFF\n} VkLatencyMarkerNV;\n\ntypedef enum\n{\n    VK_OUT_OF_BAND_QUEUE_TYPE_RENDER_NV = 0,\n    VK_OUT_OF_BAND_QUEUE_TYPE_PRESENT_NV = 1,\n    VK_OUT_OF_BAND_QUEUE_TYPE_MAX_ENUM_NV = 0x7FFFFFFF\n} VkOutOfBandQueueTypeNV;\n\n\ntypedef struct VkLatencySleepModeInfoNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkBool32 lowLatencyMode;\n    VkBool32 lowLatencyBoost;\n    uint32_t minimumIntervalUs;\n} VkLatencySleepModeInfoNV;\n\ntypedef struct VkLatencySleepInfoNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkSemaphore signalSemaphore;\n    uint64_t value;\n} VkLatencySleepInfoNV;\n\ntypedef struct VkSetLatencyMarkerInfoNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint64_t presentID;\n    VkLatencyMarkerNV marker;\n} VkSetLatencyMarkerInfoNV;\n\ntypedef struct VkLatencyTimingsFrameReportNV\n{\n    VkStructureType sType;\n    void* pNext;\n    uint64_t presentID;\n    uint64_t inputSampleTimeUs;\n    uint64_t simStartTimeUs;\n    uint64_t simEndTimeUs;\n    uint64_t renderSubmitStartTimeUs;\n    uint64_t renderSubmitEndTimeUs;\n    uint64_t presentStartTimeUs;\n    uint64_t presentEndTimeUs;\n    uint64_t driverStartTimeUs;\n    uint64_t driverEndTimeUs;\n    uint64_t osRenderQueueStartTimeUs;\n    uint64_t osRenderQueueEndTimeUs;\n    uint64_t gpuRenderStartTimeUs;\n    uint64_t gpuRenderEndTimeUs;\n} VkLatencyTimingsFrameReportNV;\n\ntypedef struct VkGetLatencyMarkerInfoNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t timingCount;\n    VkLatencyTimingsFrameReportNV* pTimings;\n} VkGetLatencyMarkerInfoNV;\n\ntypedef struct VkLatencySubmissionPresentIdNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint64_t presentID;\n} VkLatencySubmissionPresentIdNV;\n\ntypedef struct VkSwapchainLatencyCreateInfoNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkBool32 latencyModeEnable;\n} VkSwapchainLatencyCreateInfoNV;\n\ntypedef struct VkOutOfBandQueueTypeInfoNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkOutOfBandQueueTypeNV queueType;\n} VkOutOfBandQueueTypeInfoNV;\n\ntypedef struct VkLatencySurfaceCapabilitiesNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t presentModeCount;\n    VkPresentModeKHR* pPresentModes;\n} VkLatencySurfaceCapabilitiesNV;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkSetLatencySleepModeNV)(VkDevice device, VkSwapchainKHR swapchain, const VkLatencySleepModeInfoNV* pSleepModeInfo);\ntypedef VkResult (VKAPI_PTR *PFN_vkLatencySleepNV)(VkDevice device, VkSwapchainKHR swapchain, const VkLatencySleepInfoNV* pSleepInfo);\ntypedef void (VKAPI_PTR *PFN_vkSetLatencyMarkerNV)(VkDevice device, VkSwapchainKHR swapchain, const VkSetLatencyMarkerInfoNV* pLatencyMarkerInfo);\ntypedef void (VKAPI_PTR *PFN_vkGetLatencyTimingsNV)(VkDevice device, VkSwapchainKHR swapchain, VkGetLatencyMarkerInfoNV* pLatencyMarkerInfo);\ntypedef void (VKAPI_PTR *PFN_vkQueueNotifyOutOfBandNV)(VkQueue queue, const VkOutOfBandQueueTypeInfoNV* pQueueTypeInfo);\n\n\n#define VK_KHR_cooperative_matrix 1\n#define VK_KHR_COOPERATIVE_MATRIX_SPEC_VERSION 2\n#define VK_KHR_COOPERATIVE_MATRIX_EXTENSION_NAME \"VK_KHR_cooperative_matrix\"\n\ntypedef struct VkCooperativeMatrixPropertiesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t MSize;\n    uint32_t NSize;\n    uint32_t KSize;\n    VkComponentTypeKHR AType;\n    VkComponentTypeKHR BType;\n    VkComponentTypeKHR CType;\n    VkComponentTypeKHR ResultType;\n    VkBool32 saturatingAccumulation;\n    VkScopeKHR scope;\n} VkCooperativeMatrixPropertiesKHR;\n\ntypedef struct VkPhysicalDeviceCooperativeMatrixFeaturesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 cooperativeMatrix;\n    VkBool32 cooperativeMatrixRobustBufferAccess;\n} VkPhysicalDeviceCooperativeMatrixFeaturesKHR;\n\ntypedef struct VkPhysicalDeviceCooperativeMatrixPropertiesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkShaderStageFlags cooperativeMatrixSupportedStages;\n} VkPhysicalDeviceCooperativeMatrixPropertiesKHR;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkCooperativeMatrixPropertiesKHR* pProperties);\n\n\n#define VK_ARM_data_graph 1\n#define VK_ARM_DATA_GRAPH_SPEC_VERSION 1\n#define VK_ARM_DATA_GRAPH_EXTENSION_NAME \"VK_ARM_data_graph\"\n\n#define VK_MAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARM 128\n\nVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDataGraphPipelineSessionARM)\n\ntypedef enum\n{\n    VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TRANSIENT_ARM = 0,\n    VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_MAX_ENUM_ARM = 0x7FFFFFFF\n} VkDataGraphPipelineSessionBindPointARM;\n\ntypedef enum\n{\n    VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TYPE_MEMORY_ARM = 0,\n    VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TYPE_MAX_ENUM_ARM = 0x7FFFFFFF\n} VkDataGraphPipelineSessionBindPointTypeARM;\n\n\ntypedef VkFlags64 VkDataGraphPipelineSessionCreateFlagBitsARM;\nstatic const VkDataGraphPipelineSessionCreateFlagBitsARM VK_DATA_GRAPH_PIPELINE_SESSION_CREATE_PROTECTED_BIT_ARM = 0x00000001;\ntypedef VkFlags64 VkDataGraphPipelineSessionCreateFlagsARM;\ntypedef enum\n{\n    VK_DATA_GRAPH_PIPELINE_PROPERTY_CREATION_LOG_ARM = 0,\n    VK_DATA_GRAPH_PIPELINE_PROPERTY_IDENTIFIER_ARM = 1,\n    VK_DATA_GRAPH_PIPELINE_PROPERTY_MAX_ENUM_ARM = 0x7FFFFFFF\n} VkDataGraphPipelinePropertyARM;\n\n\ntypedef VkFlags64 VkDataGraphPipelineDispatchFlagBitsARM;\ntypedef VkFlags64 VkDataGraphPipelineDispatchFlagsARM;\ntypedef enum\n{\n    VK_PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_DEFAULT_ARM = 0,\n    VK_PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_NEURAL_QCOM = 1000629000,\n    VK_PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_COMPUTE_QCOM = 1000629001,\n    VK_PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_MAX_ENUM_ARM = 0x7FFFFFFF\n} VkPhysicalDeviceDataGraphProcessingEngineTypeARM;\n\ntypedef enum\n{\n    VK_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_SPIRV_EXTENDED_INSTRUCTION_SET_ARM = 0,\n    VK_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_NEURAL_MODEL_QCOM = 1000629000,\n    VK_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_BUILTIN_MODEL_QCOM = 1000629001,\n    VK_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_MAX_ENUM_ARM = 0x7FFFFFFF\n} VkPhysicalDeviceDataGraphOperationTypeARM;\n\n\ntypedef struct VkPhysicalDeviceDataGraphFeaturesARM\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 dataGraph;\n    VkBool32 dataGraphUpdateAfterBind;\n    VkBool32 dataGraphSpecializationConstants;\n    VkBool32 dataGraphDescriptorBuffer;\n    VkBool32 dataGraphShaderModule;\n} VkPhysicalDeviceDataGraphFeaturesARM;\n\ntypedef struct VkDataGraphPipelineConstantARM\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t id;\n    const void* pConstantData;\n} VkDataGraphPipelineConstantARM;\n\ntypedef struct VkDataGraphPipelineResourceInfoARM\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t descriptorSet;\n    uint32_t binding;\n    uint32_t arrayElement;\n} VkDataGraphPipelineResourceInfoARM;\n\ntypedef struct VkDataGraphPipelineCompilerControlCreateInfoARM\n{\n    VkStructureType sType;\n    const void* pNext;\n    const char* pVendorOptions;\n} VkDataGraphPipelineCompilerControlCreateInfoARM;\n\ntypedef struct VkDataGraphPipelineCreateInfoARM\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkPipelineCreateFlags2KHR flags;\n    VkPipelineLayout layout;\n    uint32_t resourceInfoCount;\n    const VkDataGraphPipelineResourceInfoARM* pResourceInfos;\n} VkDataGraphPipelineCreateInfoARM;\n\ntypedef struct VkDataGraphPipelineShaderModuleCreateInfoARM\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkShaderModule module;\n    const char* pName;\n    const VkSpecializationInfo* pSpecializationInfo;\n    uint32_t constantCount;\n    const VkDataGraphPipelineConstantARM* pConstants;\n} VkDataGraphPipelineShaderModuleCreateInfoARM;\n\ntypedef struct VkDataGraphPipelineSessionCreateInfoARM\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkDataGraphPipelineSessionCreateFlagsARM flags;\n    VkPipeline dataGraphPipeline;\n} VkDataGraphPipelineSessionCreateInfoARM;\n\ntypedef struct VkDataGraphPipelineSessionBindPointRequirementsInfoARM\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkDataGraphPipelineSessionARM session;\n} VkDataGraphPipelineSessionBindPointRequirementsInfoARM;\n\ntypedef struct VkDataGraphPipelineSessionBindPointRequirementARM\n{\n    VkStructureType sType;\n    void* pNext;\n    VkDataGraphPipelineSessionBindPointARM bindPoint;\n    VkDataGraphPipelineSessionBindPointTypeARM bindPointType;\n    uint32_t numObjects;\n} VkDataGraphPipelineSessionBindPointRequirementARM;\n\ntypedef struct VkDataGraphPipelineSessionMemoryRequirementsInfoARM\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkDataGraphPipelineSessionARM session;\n    VkDataGraphPipelineSessionBindPointARM bindPoint;\n    uint32_t objectIndex;\n} VkDataGraphPipelineSessionMemoryRequirementsInfoARM;\n\ntypedef struct VkBindDataGraphPipelineSessionMemoryInfoARM\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkDataGraphPipelineSessionARM session;\n    VkDataGraphPipelineSessionBindPointARM bindPoint;\n    uint32_t objectIndex;\n    VkDeviceMemory memory;\n    VkDeviceSize memoryOffset;\n} VkBindDataGraphPipelineSessionMemoryInfoARM;\n\ntypedef struct VkDataGraphPipelineInfoARM\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkPipeline dataGraphPipeline;\n} VkDataGraphPipelineInfoARM;\n\ntypedef struct VkDataGraphPipelinePropertyQueryResultARM\n{\n    VkStructureType sType;\n    void* pNext;\n    VkDataGraphPipelinePropertyARM property;\n    VkBool32 isText;\n    size_t dataSize;\n    void* pData;\n} VkDataGraphPipelinePropertyQueryResultARM;\n\ntypedef struct VkDataGraphPipelineIdentifierCreateInfoARM\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t identifierSize;\n    const uint8_t* pIdentifier;\n} VkDataGraphPipelineIdentifierCreateInfoARM;\n\ntypedef struct VkDataGraphPipelineDispatchInfoARM\n{\n    VkStructureType sType;\n    void* pNext;\n    VkDataGraphPipelineDispatchFlagsARM flags;\n} VkDataGraphPipelineDispatchInfoARM;\n\ntypedef struct VkPhysicalDeviceDataGraphProcessingEngineARM\n{\n    VkPhysicalDeviceDataGraphProcessingEngineTypeARM type;\n    VkBool32 isForeign;\n} VkPhysicalDeviceDataGraphProcessingEngineARM;\n\ntypedef struct VkPhysicalDeviceDataGraphOperationSupportARM\n{\n    VkPhysicalDeviceDataGraphOperationTypeARM operationType;\n    char name[VK_MAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARM];\n    uint32_t version;\n} VkPhysicalDeviceDataGraphOperationSupportARM;\n\ntypedef struct VkQueueFamilyDataGraphPropertiesARM\n{\n    VkStructureType sType;\n    void* pNext;\n    VkPhysicalDeviceDataGraphProcessingEngineARM engine;\n    VkPhysicalDeviceDataGraphOperationSupportARM operation;\n} VkQueueFamilyDataGraphPropertiesARM;\n\ntypedef struct VkDataGraphProcessingEngineCreateInfoARM\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t processingEngineCount;\n    VkPhysicalDeviceDataGraphProcessingEngineARM* pProcessingEngines;\n} VkDataGraphProcessingEngineCreateInfoARM;\n\ntypedef struct VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t queueFamilyIndex;\n    VkPhysicalDeviceDataGraphProcessingEngineTypeARM engineType;\n} VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM;\n\ntypedef struct VkQueueFamilyDataGraphProcessingEnginePropertiesARM\n{\n    VkStructureType sType;\n    void* pNext;\n    VkExternalSemaphoreHandleTypeFlags foreignSemaphoreHandleTypes;\n    VkExternalMemoryHandleTypeFlags foreignMemoryHandleTypes;\n} VkQueueFamilyDataGraphProcessingEnginePropertiesARM;\n\ntypedef struct VkDataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t dimension;\n    uint32_t zeroCount;\n    uint32_t groupSize;\n} VkDataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateDataGraphPipelinesARM)(VkDevice device, VkDeferredOperationKHR deferredOperation, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkDataGraphPipelineCreateInfoARM* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines);\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateDataGraphPipelineSessionARM)(VkDevice device, const VkDataGraphPipelineSessionCreateInfoARM* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDataGraphPipelineSessionARM* pSession);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetDataGraphPipelineSessionBindPointRequirementsARM)(VkDevice device, const VkDataGraphPipelineSessionBindPointRequirementsInfoARM* pInfo, uint32_t* pBindPointRequirementCount, VkDataGraphPipelineSessionBindPointRequirementARM* pBindPointRequirements);\ntypedef void (VKAPI_PTR *PFN_vkGetDataGraphPipelineSessionMemoryRequirementsARM)(VkDevice device, const VkDataGraphPipelineSessionMemoryRequirementsInfoARM* pInfo, VkMemoryRequirements2* pMemoryRequirements);\ntypedef VkResult (VKAPI_PTR *PFN_vkBindDataGraphPipelineSessionMemoryARM)(VkDevice device, uint32_t bindInfoCount, const VkBindDataGraphPipelineSessionMemoryInfoARM* pBindInfos);\ntypedef void (VKAPI_PTR *PFN_vkDestroyDataGraphPipelineSessionARM)(VkDevice device, VkDataGraphPipelineSessionARM session, const VkAllocationCallbacks* pAllocator);\ntypedef void (VKAPI_PTR *PFN_vkCmdDispatchDataGraphARM)(VkCommandBuffer commandBuffer, VkDataGraphPipelineSessionARM session, const VkDataGraphPipelineDispatchInfoARM* pInfo);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetDataGraphPipelineAvailablePropertiesARM)(VkDevice device, const VkDataGraphPipelineInfoARM* pPipelineInfo, uint32_t* pPropertiesCount, VkDataGraphPipelinePropertyARM* pProperties);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetDataGraphPipelinePropertiesARM)(VkDevice device, const VkDataGraphPipelineInfoARM* pPipelineInfo, uint32_t propertiesCount, VkDataGraphPipelinePropertyQueryResultARM* pProperties);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, uint32_t* pQueueFamilyDataGraphPropertyCount, VkQueueFamilyDataGraphPropertiesARM* pQueueFamilyDataGraphProperties);\ntypedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM* pQueueFamilyDataGraphProcessingEngineInfo, VkQueueFamilyDataGraphProcessingEnginePropertiesARM* pQueueFamilyDataGraphProcessingEngineProperties);\n\n\n#define VK_QCOM_multiview_per_view_render_areas 1\n#define VK_QCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_SPEC_VERSION 1\n#define VK_QCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_EXTENSION_NAME \"VK_QCOM_multiview_per_view_render_areas\"\n\ntypedef struct VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 multiviewPerViewRenderAreas;\n} VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM;\n\ntypedef struct VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t perViewRenderAreaCount;\n    const VkRect2D* pPerViewRenderAreas;\n} VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM;\n\n\n#define VK_KHR_compute_shader_derivatives 1\n#define VK_KHR_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION 1\n#define VK_KHR_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME \"VK_KHR_compute_shader_derivatives\"\n\ntypedef struct VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 computeDerivativeGroupQuads;\n    VkBool32 computeDerivativeGroupLinear;\n} VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR;\n\ntypedef struct VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 meshAndTaskShaderDerivatives;\n} VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR;\n\n\n#define VK_NV_compute_shader_derivatives 1\n#define VK_NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION 1\n#define VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME \"VK_NV_compute_shader_derivatives\"\n\ntypedef VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR VkPhysicalDeviceComputeShaderDerivativesFeaturesNV;\n\n\n#define VK_KHR_video_decode_av1 1\n#define VK_KHR_VIDEO_DECODE_AV1_SPEC_VERSION 1\n#define VK_KHR_VIDEO_DECODE_AV1_EXTENSION_NAME \"VK_KHR_video_decode_av1\"\n\n#define VK_MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR 7\n\ntypedef struct VkVideoDecodeAV1ProfileInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    StdVideoAV1Profile stdProfile;\n    VkBool32 filmGrainSupport;\n} VkVideoDecodeAV1ProfileInfoKHR;\n\ntypedef struct VkVideoDecodeAV1CapabilitiesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    StdVideoAV1Level maxLevel;\n} VkVideoDecodeAV1CapabilitiesKHR;\n\ntypedef struct VkVideoDecodeAV1SessionParametersCreateInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    const StdVideoAV1SequenceHeader* pStdSequenceHeader;\n} VkVideoDecodeAV1SessionParametersCreateInfoKHR;\n\ntypedef struct VkVideoDecodeAV1PictureInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    const StdVideoDecodeAV1PictureInfo* pStdPictureInfo;\n    int32_t referenceNameSlotIndices[VK_MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR];\n    uint32_t frameHeaderOffset;\n    uint32_t tileCount;\n    const uint32_t* pTileOffsets;\n    const uint32_t* pTileSizes;\n} VkVideoDecodeAV1PictureInfoKHR;\n\ntypedef struct VkVideoDecodeAV1DpbSlotInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    const StdVideoDecodeAV1ReferenceInfo* pStdReferenceInfo;\n} VkVideoDecodeAV1DpbSlotInfoKHR;\n\n\n#define VK_KHR_video_encode_av1 1\n#define VK_KHR_VIDEO_ENCODE_AV1_SPEC_VERSION 1\n#define VK_KHR_VIDEO_ENCODE_AV1_EXTENSION_NAME \"VK_KHR_video_encode_av1\"\n\ntypedef enum\n{\n    VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_INTRA_ONLY_KHR = 0,\n    VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_SINGLE_REFERENCE_KHR = 1,\n    VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_UNIDIRECTIONAL_COMPOUND_KHR = 2,\n    VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_BIDIRECTIONAL_COMPOUND_KHR = 3,\n    VK_VIDEO_ENCODE_A_V1_PREDICTION_MODE_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkVideoEncodeAV1PredictionModeKHR;\n\ntypedef enum\n{\n    VK_VIDEO_ENCODE_AV1_RATE_CONTROL_GROUP_INTRA_KHR = 0,\n    VK_VIDEO_ENCODE_AV1_RATE_CONTROL_GROUP_PREDICTIVE_KHR = 1,\n    VK_VIDEO_ENCODE_AV1_RATE_CONTROL_GROUP_BIPREDICTIVE_KHR = 2,\n    VK_VIDEO_ENCODE_A_V1_RATE_CONTROL_GROUP_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkVideoEncodeAV1RateControlGroupKHR;\n\n\ntypedef enum\n{\n    VK_VIDEO_ENCODE_AV1_CAPABILITY_PER_RATE_CONTROL_GROUP_MIN_MAX_Q_INDEX_BIT_KHR = 0x00000001,\n    VK_VIDEO_ENCODE_AV1_CAPABILITY_GENERATE_OBU_EXTENSION_HEADER_BIT_KHR = 0x00000002,\n    VK_VIDEO_ENCODE_AV1_CAPABILITY_PRIMARY_REFERENCE_CDF_ONLY_BIT_KHR = 0x00000004,\n    VK_VIDEO_ENCODE_AV1_CAPABILITY_FRAME_SIZE_OVERRIDE_BIT_KHR = 0x00000008,\n    VK_VIDEO_ENCODE_AV1_CAPABILITY_MOTION_VECTOR_SCALING_BIT_KHR = 0x00000010,\n    VK_VIDEO_ENCODE_AV1_CAPABILITY_COMPOUND_PREDICTION_INTRA_REFRESH_BIT_KHR = 0x00000020,\n    VK_VIDEO_ENCODE_A_V1_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkVideoEncodeAV1CapabilityFlagBitsKHR;\ntypedef VkFlags VkVideoEncodeAV1CapabilityFlagsKHR;\n\ntypedef enum\n{\n    VK_VIDEO_ENCODE_AV1_STD_UNIFORM_TILE_SPACING_FLAG_SET_BIT_KHR = 0x00000001,\n    VK_VIDEO_ENCODE_AV1_STD_SKIP_MODE_PRESENT_UNSET_BIT_KHR = 0x00000002,\n    VK_VIDEO_ENCODE_AV1_STD_PRIMARY_REF_FRAME_BIT_KHR = 0x00000004,\n    VK_VIDEO_ENCODE_AV1_STD_DELTA_Q_BIT_KHR = 0x00000008,\n    VK_VIDEO_ENCODE_A_V1_STD_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkVideoEncodeAV1StdFlagBitsKHR;\ntypedef VkFlags VkVideoEncodeAV1StdFlagsKHR;\n\ntypedef enum\n{\n    VK_VIDEO_ENCODE_AV1_SUPERBLOCK_SIZE_64_BIT_KHR = 0x00000001,\n    VK_VIDEO_ENCODE_AV1_SUPERBLOCK_SIZE_128_BIT_KHR = 0x00000002,\n    VK_VIDEO_ENCODE_A_V1_SUPERBLOCK_SIZE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkVideoEncodeAV1SuperblockSizeFlagBitsKHR;\ntypedef VkFlags VkVideoEncodeAV1SuperblockSizeFlagsKHR;\n\ntypedef enum\n{\n    VK_VIDEO_ENCODE_AV1_RATE_CONTROL_REGULAR_GOP_BIT_KHR = 0x00000001,\n    VK_VIDEO_ENCODE_AV1_RATE_CONTROL_TEMPORAL_LAYER_PATTERN_DYADIC_BIT_KHR = 0x00000002,\n    VK_VIDEO_ENCODE_AV1_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_KHR = 0x00000004,\n    VK_VIDEO_ENCODE_AV1_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_KHR = 0x00000008,\n    VK_VIDEO_ENCODE_A_V1_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkVideoEncodeAV1RateControlFlagBitsKHR;\ntypedef VkFlags VkVideoEncodeAV1RateControlFlagsKHR;\n\ntypedef struct VkPhysicalDeviceVideoEncodeAV1FeaturesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 videoEncodeAV1;\n} VkPhysicalDeviceVideoEncodeAV1FeaturesKHR;\n\ntypedef struct VkVideoEncodeAV1CapabilitiesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkVideoEncodeAV1CapabilityFlagsKHR flags;\n    StdVideoAV1Level maxLevel;\n    VkExtent2D codedPictureAlignment;\n    VkExtent2D maxTiles;\n    VkExtent2D minTileSize;\n    VkExtent2D maxTileSize;\n    VkVideoEncodeAV1SuperblockSizeFlagsKHR superblockSizes;\n    uint32_t maxSingleReferenceCount;\n    uint32_t singleReferenceNameMask;\n    uint32_t maxUnidirectionalCompoundReferenceCount;\n    uint32_t maxUnidirectionalCompoundGroup1ReferenceCount;\n    uint32_t unidirectionalCompoundReferenceNameMask;\n    uint32_t maxBidirectionalCompoundReferenceCount;\n    uint32_t maxBidirectionalCompoundGroup1ReferenceCount;\n    uint32_t maxBidirectionalCompoundGroup2ReferenceCount;\n    uint32_t bidirectionalCompoundReferenceNameMask;\n    uint32_t maxTemporalLayerCount;\n    uint32_t maxSpatialLayerCount;\n    uint32_t maxOperatingPoints;\n    uint32_t minQIndex;\n    uint32_t maxQIndex;\n    VkBool32 prefersGopRemainingFrames;\n    VkBool32 requiresGopRemainingFrames;\n    VkVideoEncodeAV1StdFlagsKHR stdSyntaxFlags;\n} VkVideoEncodeAV1CapabilitiesKHR;\n\ntypedef struct VkVideoEncodeAV1QIndexKHR\n{\n    uint32_t intraQIndex;\n    uint32_t predictiveQIndex;\n    uint32_t bipredictiveQIndex;\n} VkVideoEncodeAV1QIndexKHR;\n\ntypedef struct VkVideoEncodeAV1QualityLevelPropertiesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkVideoEncodeAV1RateControlFlagsKHR preferredRateControlFlags;\n    uint32_t preferredGopFrameCount;\n    uint32_t preferredKeyFramePeriod;\n    uint32_t preferredConsecutiveBipredictiveFrameCount;\n    uint32_t preferredTemporalLayerCount;\n    VkVideoEncodeAV1QIndexKHR preferredConstantQIndex;\n    uint32_t preferredMaxSingleReferenceCount;\n    uint32_t preferredSingleReferenceNameMask;\n    uint32_t preferredMaxUnidirectionalCompoundReferenceCount;\n    uint32_t preferredMaxUnidirectionalCompoundGroup1ReferenceCount;\n    uint32_t preferredUnidirectionalCompoundReferenceNameMask;\n    uint32_t preferredMaxBidirectionalCompoundReferenceCount;\n    uint32_t preferredMaxBidirectionalCompoundGroup1ReferenceCount;\n    uint32_t preferredMaxBidirectionalCompoundGroup2ReferenceCount;\n    uint32_t preferredBidirectionalCompoundReferenceNameMask;\n} VkVideoEncodeAV1QualityLevelPropertiesKHR;\n\ntypedef struct VkVideoEncodeAV1SessionCreateInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkBool32 useMaxLevel;\n    StdVideoAV1Level maxLevel;\n} VkVideoEncodeAV1SessionCreateInfoKHR;\n\ntypedef struct VkVideoEncodeAV1SessionParametersCreateInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    const StdVideoAV1SequenceHeader* pStdSequenceHeader;\n    const StdVideoEncodeAV1DecoderModelInfo* pStdDecoderModelInfo;\n    uint32_t stdOperatingPointCount;\n    const StdVideoEncodeAV1OperatingPointInfo* pStdOperatingPoints;\n} VkVideoEncodeAV1SessionParametersCreateInfoKHR;\n\ntypedef struct VkVideoEncodeAV1PictureInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkVideoEncodeAV1PredictionModeKHR predictionMode;\n    VkVideoEncodeAV1RateControlGroupKHR rateControlGroup;\n    uint32_t constantQIndex;\n    const StdVideoEncodeAV1PictureInfo* pStdPictureInfo;\n    int32_t referenceNameSlotIndices[VK_MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR];\n    VkBool32 primaryReferenceCdfOnly;\n    VkBool32 generateObuExtensionHeader;\n} VkVideoEncodeAV1PictureInfoKHR;\n\ntypedef struct VkVideoEncodeAV1DpbSlotInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    const StdVideoEncodeAV1ReferenceInfo* pStdReferenceInfo;\n} VkVideoEncodeAV1DpbSlotInfoKHR;\n\ntypedef struct VkVideoEncodeAV1ProfileInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    StdVideoAV1Profile stdProfile;\n} VkVideoEncodeAV1ProfileInfoKHR;\n\ntypedef struct VkVideoEncodeAV1FrameSizeKHR\n{\n    uint32_t intraFrameSize;\n    uint32_t predictiveFrameSize;\n    uint32_t bipredictiveFrameSize;\n} VkVideoEncodeAV1FrameSizeKHR;\n\ntypedef struct VkVideoEncodeAV1GopRemainingFrameInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkBool32 useGopRemainingFrames;\n    uint32_t gopRemainingIntra;\n    uint32_t gopRemainingPredictive;\n    uint32_t gopRemainingBipredictive;\n} VkVideoEncodeAV1GopRemainingFrameInfoKHR;\n\ntypedef struct VkVideoEncodeAV1RateControlInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkVideoEncodeAV1RateControlFlagsKHR flags;\n    uint32_t gopFrameCount;\n    uint32_t keyFramePeriod;\n    uint32_t consecutiveBipredictiveFrameCount;\n    uint32_t temporalLayerCount;\n} VkVideoEncodeAV1RateControlInfoKHR;\n\ntypedef struct VkVideoEncodeAV1RateControlLayerInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkBool32 useMinQIndex;\n    VkVideoEncodeAV1QIndexKHR minQIndex;\n    VkBool32 useMaxQIndex;\n    VkVideoEncodeAV1QIndexKHR maxQIndex;\n    VkBool32 useMaxFrameSize;\n    VkVideoEncodeAV1FrameSizeKHR maxFrameSize;\n} VkVideoEncodeAV1RateControlLayerInfoKHR;\n\n\n#define VK_KHR_video_decode_vp9 1\n#define VK_KHR_VIDEO_DECODE_VP9_SPEC_VERSION 1\n#define VK_KHR_VIDEO_DECODE_VP9_EXTENSION_NAME \"VK_KHR_video_decode_vp9\"\n\n#define VK_MAX_VIDEO_VP9_REFERENCES_PER_FRAME_KHR 3\n\ntypedef struct VkPhysicalDeviceVideoDecodeVP9FeaturesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 videoDecodeVP9;\n} VkPhysicalDeviceVideoDecodeVP9FeaturesKHR;\n\ntypedef struct VkVideoDecodeVP9ProfileInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    StdVideoVP9Profile stdProfile;\n} VkVideoDecodeVP9ProfileInfoKHR;\n\ntypedef struct VkVideoDecodeVP9CapabilitiesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    StdVideoVP9Level maxLevel;\n} VkVideoDecodeVP9CapabilitiesKHR;\n\ntypedef struct VkVideoDecodeVP9PictureInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    const StdVideoDecodeVP9PictureInfo* pStdPictureInfo;\n    int32_t referenceNameSlotIndices[VK_MAX_VIDEO_VP9_REFERENCES_PER_FRAME_KHR];\n    uint32_t uncompressedHeaderOffset;\n    uint32_t compressedHeaderOffset;\n    uint32_t tilesOffset;\n} VkVideoDecodeVP9PictureInfoKHR;\n\n\n#define VK_KHR_video_maintenance1 1\n#define VK_KHR_VIDEO_MAINTENANCE_1_SPEC_VERSION 1\n#define VK_KHR_VIDEO_MAINTENANCE_1_EXTENSION_NAME \"VK_KHR_video_maintenance1\"\n\ntypedef struct VkPhysicalDeviceVideoMaintenance1FeaturesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 videoMaintenance1;\n} VkPhysicalDeviceVideoMaintenance1FeaturesKHR;\n\ntypedef struct VkVideoInlineQueryInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkQueryPool queryPool;\n    uint32_t firstQuery;\n    uint32_t queryCount;\n} VkVideoInlineQueryInfoKHR;\n\n\n#define VK_NV_per_stage_descriptor_set 1\n#define VK_NV_PER_STAGE_DESCRIPTOR_SET_SPEC_VERSION 1\n#define VK_NV_PER_STAGE_DESCRIPTOR_SET_EXTENSION_NAME \"VK_NV_per_stage_descriptor_set\"\n\ntypedef struct VkPhysicalDevicePerStageDescriptorSetFeaturesNV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 perStageDescriptorSet;\n    VkBool32 dynamicPipelineLayout;\n} VkPhysicalDevicePerStageDescriptorSetFeaturesNV;\n\n\n#define VK_QCOM_image_processing2 1\n#define VK_QCOM_IMAGE_PROCESSING_2_SPEC_VERSION 1\n#define VK_QCOM_IMAGE_PROCESSING_2_EXTENSION_NAME \"VK_QCOM_image_processing2\"\n\ntypedef enum\n{\n    VK_BLOCK_MATCH_WINDOW_COMPARE_MODE_MIN_QCOM = 0,\n    VK_BLOCK_MATCH_WINDOW_COMPARE_MODE_MAX_QCOM = 1,\n    VK_BLOCK_MATCH_WINDOW_COMPARE_MODE_MAX_ENUM_QCOM = 0x7FFFFFFF\n} VkBlockMatchWindowCompareModeQCOM;\n\n\ntypedef struct VkPhysicalDeviceImageProcessing2FeaturesQCOM\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 textureBlockMatch2;\n} VkPhysicalDeviceImageProcessing2FeaturesQCOM;\n\ntypedef struct VkPhysicalDeviceImageProcessing2PropertiesQCOM\n{\n    VkStructureType sType;\n    void* pNext;\n    VkExtent2D maxBlockMatchWindow;\n} VkPhysicalDeviceImageProcessing2PropertiesQCOM;\n\ntypedef struct VkSamplerBlockMatchWindowCreateInfoQCOM\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkExtent2D windowExtent;\n    VkBlockMatchWindowCompareModeQCOM windowCompareMode;\n} VkSamplerBlockMatchWindowCreateInfoQCOM;\n\n\n#define VK_QCOM_filter_cubic_weights 1\n#define VK_QCOM_FILTER_CUBIC_WEIGHTS_SPEC_VERSION 1\n#define VK_QCOM_FILTER_CUBIC_WEIGHTS_EXTENSION_NAME \"VK_QCOM_filter_cubic_weights\"\n\ntypedef enum\n{\n    VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM = 0,\n    VK_CUBIC_FILTER_WEIGHTS_ZERO_TANGENT_CARDINAL_QCOM = 1,\n    VK_CUBIC_FILTER_WEIGHTS_B_SPLINE_QCOM = 2,\n    VK_CUBIC_FILTER_WEIGHTS_MITCHELL_NETRAVALI_QCOM = 3,\n    VK_CUBIC_FILTER_WEIGHTS_MAX_ENUM_QCOM = 0x7FFFFFFF\n} VkCubicFilterWeightsQCOM;\n\n\ntypedef struct VkPhysicalDeviceCubicWeightsFeaturesQCOM\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 selectableCubicWeights;\n} VkPhysicalDeviceCubicWeightsFeaturesQCOM;\n\ntypedef struct VkSamplerCubicWeightsCreateInfoQCOM\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkCubicFilterWeightsQCOM cubicWeights;\n} VkSamplerCubicWeightsCreateInfoQCOM;\n\ntypedef struct VkBlitImageCubicWeightsInfoQCOM\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkCubicFilterWeightsQCOM cubicWeights;\n} VkBlitImageCubicWeightsInfoQCOM;\n\n\n#define VK_QCOM_ycbcr_degamma 1\n#define VK_QCOM_YCBCR_DEGAMMA_SPEC_VERSION 1\n#define VK_QCOM_YCBCR_DEGAMMA_EXTENSION_NAME \"VK_QCOM_ycbcr_degamma\"\n\ntypedef struct VkPhysicalDeviceYcbcrDegammaFeaturesQCOM\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 ycbcrDegamma;\n} VkPhysicalDeviceYcbcrDegammaFeaturesQCOM;\n\ntypedef struct VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 enableYDegamma;\n    VkBool32 enableCbCrDegamma;\n} VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM;\n\n\n#define VK_QCOM_filter_cubic_clamp 1\n#define VK_QCOM_FILTER_CUBIC_CLAMP_SPEC_VERSION 1\n#define VK_QCOM_FILTER_CUBIC_CLAMP_EXTENSION_NAME \"VK_QCOM_filter_cubic_clamp\"\n\ntypedef struct VkPhysicalDeviceCubicClampFeaturesQCOM\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 cubicRangeClamp;\n} VkPhysicalDeviceCubicClampFeaturesQCOM;\n\n\n#define VK_EXT_attachment_feedback_loop_dynamic_state 1\n#define VK_EXT_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_SPEC_VERSION 1\n#define VK_EXT_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_EXTENSION_NAME \"VK_EXT_attachment_feedback_loop_dynamic_state\"\n\ntypedef struct VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 attachmentFeedbackLoopDynamicState;\n} VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT;\n\n\ntypedef void (VKAPI_PTR *PFN_vkCmdSetAttachmentFeedbackLoopEnableEXT)(VkCommandBuffer commandBuffer, VkImageAspectFlags aspectMask);\n\n\n#define VK_KHR_vertex_attribute_divisor 1\n#define VK_KHR_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION 1\n#define VK_KHR_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME \"VK_KHR_vertex_attribute_divisor\"\n\ntypedef VkPhysicalDeviceVertexAttributeDivisorProperties VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR;\n\ntypedef VkVertexInputBindingDivisorDescription VkVertexInputBindingDivisorDescriptionKHR;\n\ntypedef VkPipelineVertexInputDivisorStateCreateInfo VkPipelineVertexInputDivisorStateCreateInfoKHR;\n\ntypedef VkPhysicalDeviceVertexAttributeDivisorFeatures VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR;\n\n\n#define VK_EXT_vertex_attribute_divisor 1\n#define VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION 3\n#define VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME \"VK_EXT_vertex_attribute_divisor\"\n\ntypedef struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t maxVertexAttribDivisor;\n} VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT;\n\ntypedef VkVertexInputBindingDivisorDescription VkVertexInputBindingDivisorDescriptionEXT;\n\ntypedef VkPipelineVertexInputDivisorStateCreateInfo VkPipelineVertexInputDivisorStateCreateInfoEXT;\n\ntypedef VkPhysicalDeviceVertexAttributeDivisorFeatures VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT;\n\n\n#define VK_KHR_load_store_op_none 1\n#define VK_KHR_LOAD_STORE_OP_NONE_SPEC_VERSION 1\n#define VK_KHR_LOAD_STORE_OP_NONE_EXTENSION_NAME \"VK_KHR_load_store_op_none\"\n\n\n#define VK_EXT_load_store_op_none 1\n#define VK_EXT_LOAD_STORE_OP_NONE_SPEC_VERSION 1\n#define VK_EXT_LOAD_STORE_OP_NONE_EXTENSION_NAME \"VK_EXT_load_store_op_none\"\n\n\n#define VK_KHR_unified_image_layouts 1\n#define VK_KHR_UNIFIED_IMAGE_LAYOUTS_SPEC_VERSION 1\n#define VK_KHR_UNIFIED_IMAGE_LAYOUTS_EXTENSION_NAME \"VK_KHR_unified_image_layouts\"\n\ntypedef struct VkPhysicalDeviceUnifiedImageLayoutsFeaturesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 unifiedImageLayouts;\n    VkBool32 unifiedImageLayoutsVideo;\n} VkPhysicalDeviceUnifiedImageLayoutsFeaturesKHR;\n\ntypedef struct VkAttachmentFeedbackLoopInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkBool32 feedbackLoopEnable;\n} VkAttachmentFeedbackLoopInfoEXT;\n\n\n#define VK_KHR_shader_float_controls2 1\n#define VK_KHR_SHADER_FLOAT_CONTROLS_2_SPEC_VERSION 1\n#define VK_KHR_SHADER_FLOAT_CONTROLS_2_EXTENSION_NAME \"VK_KHR_shader_float_controls2\"\n\ntypedef VkPhysicalDeviceShaderFloatControls2Features VkPhysicalDeviceShaderFloatControls2FeaturesKHR;\n\n\n#define VK_MSFT_layered_driver 1\n#define VK_MSFT_LAYERED_DRIVER_SPEC_VERSION 1\n#define VK_MSFT_LAYERED_DRIVER_EXTENSION_NAME \"VK_MSFT_layered_driver\"\n\ntypedef enum\n{\n    VK_LAYERED_DRIVER_UNDERLYING_API_NONE_MSFT = 0,\n    VK_LAYERED_DRIVER_UNDERLYING_API_D3D12_MSFT = 1,\n    VK_LAYERED_DRIVER_UNDERLYING_API_MAX_ENUM_MSFT = 0x7FFFFFFF\n} VkLayeredDriverUnderlyingApiMSFT;\n\n\ntypedef struct VkPhysicalDeviceLayeredDriverPropertiesMSFT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkLayeredDriverUnderlyingApiMSFT underlyingAPI;\n} VkPhysicalDeviceLayeredDriverPropertiesMSFT;\n\n\n#define VK_KHR_index_type_uint8 1\n#define VK_KHR_INDEX_TYPE_UINT8_SPEC_VERSION 1\n#define VK_KHR_INDEX_TYPE_UINT8_EXTENSION_NAME \"VK_KHR_index_type_uint8\"\n\ntypedef VkPhysicalDeviceIndexTypeUint8Features VkPhysicalDeviceIndexTypeUint8FeaturesKHR;\n\n\n#define VK_EXT_index_type_uint8 1\n#define VK_EXT_INDEX_TYPE_UINT8_SPEC_VERSION 1\n#define VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME \"VK_EXT_index_type_uint8\"\n\ntypedef VkPhysicalDeviceIndexTypeUint8Features VkPhysicalDeviceIndexTypeUint8FeaturesEXT;\n\n\n#define VK_KHR_line_rasterization 1\n#define VK_KHR_LINE_RASTERIZATION_SPEC_VERSION 1\n#define VK_KHR_LINE_RASTERIZATION_EXTENSION_NAME \"VK_KHR_line_rasterization\"\n\ntypedef VkLineRasterizationMode VkLineRasterizationModeKHR;\ntypedef VkPhysicalDeviceLineRasterizationFeatures VkPhysicalDeviceLineRasterizationFeaturesKHR;\n\ntypedef VkPhysicalDeviceLineRasterizationProperties VkPhysicalDeviceLineRasterizationPropertiesKHR;\n\ntypedef VkPipelineRasterizationLineStateCreateInfo VkPipelineRasterizationLineStateCreateInfoKHR;\n\ntypedef void (VKAPI_PTR *PFN_vkCmdSetLineStippleKHR)(VkCommandBuffer commandBuffer, uint32_t lineStippleFactor, uint16_t lineStipplePattern);\n\n\n#define VK_EXT_line_rasterization 1\n#define VK_EXT_LINE_RASTERIZATION_SPEC_VERSION 1\n#define VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME \"VK_EXT_line_rasterization\"\n\ntypedef VkPhysicalDeviceLineRasterizationFeatures VkPhysicalDeviceLineRasterizationFeaturesEXT;\n\ntypedef VkPhysicalDeviceLineRasterizationProperties VkPhysicalDeviceLineRasterizationPropertiesEXT;\n\ntypedef VkPipelineRasterizationLineStateCreateInfo VkPipelineRasterizationLineStateCreateInfoEXT;\n\ntypedef void (VKAPI_PTR *PFN_vkCmdSetLineStippleEXT)(VkCommandBuffer commandBuffer, uint32_t lineStippleFactor, uint16_t lineStipplePattern);\n\n\n#define VK_KHR_calibrated_timestamps 1\n#define VK_KHR_CALIBRATED_TIMESTAMPS_SPEC_VERSION 1\n#define VK_KHR_CALIBRATED_TIMESTAMPS_EXTENSION_NAME \"VK_KHR_calibrated_timestamps\"\n\ntypedef struct VkCalibratedTimestampInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkTimeDomainKHR timeDomain;\n} VkCalibratedTimestampInfoKHR;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsKHR)(VkPhysicalDevice physicalDevice, uint32_t* pTimeDomainCount, VkTimeDomainKHR* pTimeDomains);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetCalibratedTimestampsKHR)(VkDevice device, uint32_t timestampCount, const VkCalibratedTimestampInfoKHR* pTimestampInfos, uint64_t* pTimestamps, uint64_t* pMaxDeviation);\n\n\n#define VK_EXT_calibrated_timestamps 1\n#define VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION 2\n#define VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME \"VK_EXT_calibrated_timestamps\"\n\ntypedef VkTimeDomainKHR VkTimeDomainEXT;\ntypedef VkCalibratedTimestampInfoKHR VkCalibratedTimestampInfoEXT;\n\ntypedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT)(VkPhysicalDevice physicalDevice, uint32_t* pTimeDomainCount, VkTimeDomainKHR* pTimeDomains);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetCalibratedTimestampsEXT)(VkDevice device, uint32_t timestampCount, const VkCalibratedTimestampInfoKHR* pTimestampInfos, uint64_t* pTimestamps, uint64_t* pMaxDeviation);\n\n\n#define VK_KHR_shader_expect_assume 1\n#define VK_KHR_SHADER_EXPECT_ASSUME_SPEC_VERSION 1\n#define VK_KHR_SHADER_EXPECT_ASSUME_EXTENSION_NAME \"VK_KHR_shader_expect_assume\"\n\ntypedef VkPhysicalDeviceShaderExpectAssumeFeatures VkPhysicalDeviceShaderExpectAssumeFeaturesKHR;\n\n\n#define VK_KHR_maintenance6 1\n#define VK_KHR_MAINTENANCE_6_SPEC_VERSION 1\n#define VK_KHR_MAINTENANCE_6_EXTENSION_NAME \"VK_KHR_maintenance6\"\n\ntypedef VkPhysicalDeviceMaintenance6Features VkPhysicalDeviceMaintenance6FeaturesKHR;\n\ntypedef VkPhysicalDeviceMaintenance6Properties VkPhysicalDeviceMaintenance6PropertiesKHR;\n\ntypedef VkBindMemoryStatus VkBindMemoryStatusKHR;\n\ntypedef VkBindDescriptorSetsInfo VkBindDescriptorSetsInfoKHR;\n\ntypedef VkPushConstantsInfo VkPushConstantsInfoKHR;\n\ntypedef VkPushDescriptorSetInfo VkPushDescriptorSetInfoKHR;\n\ntypedef VkPushDescriptorSetWithTemplateInfo VkPushDescriptorSetWithTemplateInfoKHR;\n\ntypedef struct VkSetDescriptorBufferOffsetsInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkShaderStageFlags stageFlags;\n    VkPipelineLayout layout;\n    uint32_t firstSet;\n    uint32_t setCount;\n    const uint32_t* pBufferIndices;\n    const VkDeviceSize* pOffsets;\n} VkSetDescriptorBufferOffsetsInfoEXT;\n\ntypedef struct VkBindDescriptorBufferEmbeddedSamplersInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkShaderStageFlags stageFlags;\n    VkPipelineLayout layout;\n    uint32_t set;\n} VkBindDescriptorBufferEmbeddedSamplersInfoEXT;\n\n\ntypedef void (VKAPI_PTR *PFN_vkCmdBindDescriptorSets2KHR)(VkCommandBuffer commandBuffer, const VkBindDescriptorSetsInfo* pBindDescriptorSetsInfo);\ntypedef void (VKAPI_PTR *PFN_vkCmdPushConstants2KHR)(VkCommandBuffer commandBuffer, const VkPushConstantsInfo* pPushConstantsInfo);\ntypedef void (VKAPI_PTR *PFN_vkCmdPushDescriptorSet2KHR)(VkCommandBuffer commandBuffer, const VkPushDescriptorSetInfo* pPushDescriptorSetInfo);\ntypedef void (VKAPI_PTR *PFN_vkCmdPushDescriptorSetWithTemplate2KHR)(VkCommandBuffer commandBuffer, const VkPushDescriptorSetWithTemplateInfo* pPushDescriptorSetWithTemplateInfo);\ntypedef void (VKAPI_PTR *PFN_vkCmdSetDescriptorBufferOffsets2EXT)(VkCommandBuffer commandBuffer, const VkSetDescriptorBufferOffsetsInfoEXT* pSetDescriptorBufferOffsetsInfo);\ntypedef void (VKAPI_PTR *PFN_vkCmdBindDescriptorBufferEmbeddedSamplers2EXT)(VkCommandBuffer commandBuffer, const VkBindDescriptorBufferEmbeddedSamplersInfoEXT* pBindDescriptorBufferEmbeddedSamplersInfo);\n\n\n#define VK_NV_descriptor_pool_overallocation 1\n#define VK_NV_DESCRIPTOR_POOL_OVERALLOCATION_SPEC_VERSION 1\n#define VK_NV_DESCRIPTOR_POOL_OVERALLOCATION_EXTENSION_NAME \"VK_NV_descriptor_pool_overallocation\"\n\ntypedef struct VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 descriptorPoolOverallocation;\n} VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV;\n\n\n#define VK_QCOM_tile_memory_heap 1\n#define VK_QCOM_TILE_MEMORY_HEAP_SPEC_VERSION 1\n#define VK_QCOM_TILE_MEMORY_HEAP_EXTENSION_NAME \"VK_QCOM_tile_memory_heap\"\n\ntypedef struct VkPhysicalDeviceTileMemoryHeapFeaturesQCOM\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 tileMemoryHeap;\n} VkPhysicalDeviceTileMemoryHeapFeaturesQCOM;\n\ntypedef struct VkPhysicalDeviceTileMemoryHeapPropertiesQCOM\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 queueSubmitBoundary;\n    VkBool32 tileBufferTransfers;\n} VkPhysicalDeviceTileMemoryHeapPropertiesQCOM;\n\ntypedef struct VkTileMemoryRequirementsQCOM\n{\n    VkStructureType sType;\n    void* pNext;\n    VkDeviceSize size;\n    VkDeviceSize alignment;\n} VkTileMemoryRequirementsQCOM;\n\ntypedef struct VkTileMemoryBindInfoQCOM\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkDeviceMemory memory;\n} VkTileMemoryBindInfoQCOM;\n\ntypedef struct VkTileMemorySizeInfoQCOM\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkDeviceSize size;\n} VkTileMemorySizeInfoQCOM;\n\n\ntypedef void (VKAPI_PTR *PFN_vkCmdBindTileMemoryQCOM)(VkCommandBuffer commandBuffer, const VkTileMemoryBindInfoQCOM* pTileMemoryBindInfo);\n\n\n#define VK_KHR_copy_memory_indirect 1\n#define VK_KHR_COPY_MEMORY_INDIRECT_SPEC_VERSION 1\n#define VK_KHR_COPY_MEMORY_INDIRECT_EXTENSION_NAME \"VK_KHR_copy_memory_indirect\"\n\n\ntypedef enum\n{\n    VK_ADDRESS_COPY_DEVICE_LOCAL_BIT_KHR = 0x00000001,\n    VK_ADDRESS_COPY_SPARSE_BIT_KHR = 0x00000002,\n    VK_ADDRESS_COPY_PROTECTED_BIT_KHR = 0x00000004,\n    VK_ADDRESS_COPY_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkAddressCopyFlagBitsKHR;\ntypedef VkFlags VkAddressCopyFlagsKHR;\n\ntypedef struct VkStridedDeviceAddressRangeKHR\n{\n    VkDeviceAddress address;\n    VkDeviceSize size;\n    VkDeviceSize stride;\n} VkStridedDeviceAddressRangeKHR;\n\ntypedef struct VkCopyMemoryIndirectCommandKHR\n{\n    VkDeviceAddress srcAddress;\n    VkDeviceAddress dstAddress;\n    VkDeviceSize size;\n} VkCopyMemoryIndirectCommandKHR;\n\ntypedef struct VkCopyMemoryIndirectInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkAddressCopyFlagsKHR srcCopyFlags;\n    VkAddressCopyFlagsKHR dstCopyFlags;\n    uint32_t copyCount;\n    VkStridedDeviceAddressRangeKHR copyAddressRange;\n} VkCopyMemoryIndirectInfoKHR;\n\ntypedef struct VkCopyMemoryToImageIndirectCommandKHR\n{\n    VkDeviceAddress srcAddress;\n    uint32_t bufferRowLength;\n    uint32_t bufferImageHeight;\n    VkImageSubresourceLayers imageSubresource;\n    VkOffset3D imageOffset;\n    VkExtent3D imageExtent;\n} VkCopyMemoryToImageIndirectCommandKHR;\n\ntypedef struct VkCopyMemoryToImageIndirectInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkAddressCopyFlagsKHR srcCopyFlags;\n    uint32_t copyCount;\n    VkStridedDeviceAddressRangeKHR copyAddressRange;\n    VkImage dstImage;\n    VkImageLayout dstImageLayout;\n    const VkImageSubresourceLayers* pImageSubresources;\n} VkCopyMemoryToImageIndirectInfoKHR;\n\ntypedef struct VkPhysicalDeviceCopyMemoryIndirectFeaturesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 indirectMemoryCopy;\n    VkBool32 indirectMemoryToImageCopy;\n} VkPhysicalDeviceCopyMemoryIndirectFeaturesKHR;\n\ntypedef struct VkPhysicalDeviceCopyMemoryIndirectPropertiesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkQueueFlags supportedQueues;\n} VkPhysicalDeviceCopyMemoryIndirectPropertiesKHR;\n\n\ntypedef void (VKAPI_PTR *PFN_vkCmdCopyMemoryIndirectKHR)(VkCommandBuffer commandBuffer, const VkCopyMemoryIndirectInfoKHR* pCopyMemoryIndirectInfo);\ntypedef void (VKAPI_PTR *PFN_vkCmdCopyMemoryToImageIndirectKHR)(VkCommandBuffer commandBuffer, const VkCopyMemoryToImageIndirectInfoKHR* pCopyMemoryToImageIndirectInfo);\n\n\n#define VK_NV_copy_memory_indirect 1\n#define VK_NV_COPY_MEMORY_INDIRECT_SPEC_VERSION 1\n#define VK_NV_COPY_MEMORY_INDIRECT_EXTENSION_NAME \"VK_NV_copy_memory_indirect\"\n\ntypedef VkCopyMemoryIndirectCommandKHR VkCopyMemoryIndirectCommandNV;\n\ntypedef VkCopyMemoryToImageIndirectCommandKHR VkCopyMemoryToImageIndirectCommandNV;\n\ntypedef struct VkPhysicalDeviceCopyMemoryIndirectFeaturesNV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 indirectCopy;\n} VkPhysicalDeviceCopyMemoryIndirectFeaturesNV;\n\ntypedef VkPhysicalDeviceCopyMemoryIndirectPropertiesKHR VkPhysicalDeviceCopyMemoryIndirectPropertiesNV;\n\n\ntypedef void (VKAPI_PTR *PFN_vkCmdCopyMemoryIndirectNV)(VkCommandBuffer commandBuffer, VkDeviceAddress copyBufferAddress, uint32_t copyCount, uint32_t stride);\ntypedef void (VKAPI_PTR *PFN_vkCmdCopyMemoryToImageIndirectNV)(VkCommandBuffer commandBuffer, VkDeviceAddress copyBufferAddress, uint32_t copyCount, uint32_t stride, VkImage dstImage, VkImageLayout dstImageLayout, const VkImageSubresourceLayers* pImageSubresources);\n\n\n#define VK_EXT_memory_decompression 1\n#define VK_EXT_MEMORY_DECOMPRESSION_SPEC_VERSION 1\n#define VK_EXT_MEMORY_DECOMPRESSION_EXTENSION_NAME \"VK_EXT_memory_decompression\"\n\n\ntypedef VkFlags64 VkMemoryDecompressionMethodFlagBitsEXT;\nstatic const VkMemoryDecompressionMethodFlagBitsEXT VK_MEMORY_DECOMPRESSION_METHOD_GDEFLATE_1_0_BIT_EXT = 0x00000001;\nstatic const VkMemoryDecompressionMethodFlagBitsEXT VK_MEMORY_DECOMPRESSION_METHOD_GDEFLATE_1_0_BIT_NV = 0x00000001;\ntypedef VkFlags64 VkMemoryDecompressionMethodFlagsEXT;\n\ntypedef struct VkDecompressMemoryRegionEXT\n{\n    VkDeviceAddress srcAddress;\n    VkDeviceAddress dstAddress;\n    VkDeviceSize compressedSize;\n    VkDeviceSize decompressedSize;\n} VkDecompressMemoryRegionEXT;\n\ntypedef struct VkDecompressMemoryInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkMemoryDecompressionMethodFlagsEXT decompressionMethod;\n    uint32_t regionCount;\n    const VkDecompressMemoryRegionEXT* pRegions;\n} VkDecompressMemoryInfoEXT;\n\ntypedef struct VkPhysicalDeviceMemoryDecompressionFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 memoryDecompression;\n} VkPhysicalDeviceMemoryDecompressionFeaturesEXT;\n\ntypedef struct VkPhysicalDeviceMemoryDecompressionPropertiesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkMemoryDecompressionMethodFlagsEXT decompressionMethods;\n    uint64_t maxDecompressionIndirectCount;\n} VkPhysicalDeviceMemoryDecompressionPropertiesEXT;\n\n\ntypedef void (VKAPI_PTR *PFN_vkCmdDecompressMemoryEXT)(VkCommandBuffer commandBuffer, const VkDecompressMemoryInfoEXT* pDecompressMemoryInfoEXT);\ntypedef void (VKAPI_PTR *PFN_vkCmdDecompressMemoryIndirectCountEXT)(VkCommandBuffer commandBuffer, VkMemoryDecompressionMethodFlagsEXT decompressionMethod, VkDeviceAddress indirectCommandsAddress, VkDeviceAddress indirectCommandsCountAddress, uint32_t maxDecompressionCount, uint32_t stride);\n\n\n#define VK_NV_memory_decompression 1\n#define VK_NV_MEMORY_DECOMPRESSION_SPEC_VERSION 1\n#define VK_NV_MEMORY_DECOMPRESSION_EXTENSION_NAME \"VK_NV_memory_decompression\"\n\ntypedef VkMemoryDecompressionMethodFlagBitsEXT VkMemoryDecompressionMethodFlagBitsNV;\ntypedef VkMemoryDecompressionMethodFlagsEXT VkMemoryDecompressionMethodFlagsNV;\ntypedef struct VkDecompressMemoryRegionNV\n{\n    VkDeviceAddress srcAddress;\n    VkDeviceAddress dstAddress;\n    VkDeviceSize compressedSize;\n    VkDeviceSize decompressedSize;\n    VkMemoryDecompressionMethodFlagsNV decompressionMethod;\n} VkDecompressMemoryRegionNV;\n\ntypedef VkPhysicalDeviceMemoryDecompressionFeaturesEXT VkPhysicalDeviceMemoryDecompressionFeaturesNV;\n\ntypedef VkPhysicalDeviceMemoryDecompressionPropertiesEXT VkPhysicalDeviceMemoryDecompressionPropertiesNV;\n\n\ntypedef void (VKAPI_PTR *PFN_vkCmdDecompressMemoryNV)(VkCommandBuffer commandBuffer, uint32_t decompressRegionCount, const VkDecompressMemoryRegionNV* pDecompressMemoryRegions);\ntypedef void (VKAPI_PTR *PFN_vkCmdDecompressMemoryIndirectCountNV)(VkCommandBuffer commandBuffer, VkDeviceAddress indirectCommandsAddress, VkDeviceAddress indirectCommandsCountAddress, uint32_t stride);\n\n\n#define VK_NV_display_stereo 1\n#define VK_NV_DISPLAY_STEREO_SPEC_VERSION 1\n#define VK_NV_DISPLAY_STEREO_EXTENSION_NAME \"VK_NV_display_stereo\"\n\ntypedef enum\n{\n    VK_DISPLAY_SURFACE_STEREO_TYPE_NONE_NV = 0,\n    VK_DISPLAY_SURFACE_STEREO_TYPE_ONBOARD_DIN_NV = 1,\n    VK_DISPLAY_SURFACE_STEREO_TYPE_HDMI_3D_NV = 2,\n    VK_DISPLAY_SURFACE_STEREO_TYPE_INBAND_DISPLAYPORT_NV = 3,\n    VK_DISPLAY_SURFACE_STEREO_TYPE_MAX_ENUM_NV = 0x7FFFFFFF\n} VkDisplaySurfaceStereoTypeNV;\n\n\ntypedef struct VkDisplaySurfaceStereoCreateInfoNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkDisplaySurfaceStereoTypeNV stereoType;\n} VkDisplaySurfaceStereoCreateInfoNV;\n\ntypedef struct VkDisplayModeStereoPropertiesNV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 hdmi3DSupported;\n} VkDisplayModeStereoPropertiesNV;\n\n\n#define VK_KHR_video_encode_intra_refresh 1\n#define VK_KHR_VIDEO_ENCODE_INTRA_REFRESH_SPEC_VERSION 1\n#define VK_KHR_VIDEO_ENCODE_INTRA_REFRESH_EXTENSION_NAME \"VK_KHR_video_encode_intra_refresh\"\n\n\ntypedef enum\n{\n    VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_NONE_KHR = 0,\n    VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_PER_PICTURE_PARTITION_BIT_KHR = 0x00000001,\n    VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_BLOCK_BASED_BIT_KHR = 0x00000002,\n    VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_BLOCK_ROW_BASED_BIT_KHR = 0x00000004,\n    VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_BLOCK_COLUMN_BASED_BIT_KHR = 0x00000008,\n    VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkVideoEncodeIntraRefreshModeFlagBitsKHR;\ntypedef VkFlags VkVideoEncodeIntraRefreshModeFlagsKHR;\n\ntypedef struct VkVideoEncodeIntraRefreshCapabilitiesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkVideoEncodeIntraRefreshModeFlagsKHR intraRefreshModes;\n    uint32_t maxIntraRefreshCycleDuration;\n    uint32_t maxIntraRefreshActiveReferencePictures;\n    VkBool32 partitionIndependentIntraRefreshRegions;\n    VkBool32 nonRectangularIntraRefreshRegions;\n} VkVideoEncodeIntraRefreshCapabilitiesKHR;\n\ntypedef struct VkVideoEncodeSessionIntraRefreshCreateInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkVideoEncodeIntraRefreshModeFlagBitsKHR intraRefreshMode;\n} VkVideoEncodeSessionIntraRefreshCreateInfoKHR;\n\ntypedef struct VkVideoEncodeIntraRefreshInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t intraRefreshCycleDuration;\n    uint32_t intraRefreshIndex;\n} VkVideoEncodeIntraRefreshInfoKHR;\n\ntypedef struct VkVideoReferenceIntraRefreshInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t dirtyIntraRefreshRegions;\n} VkVideoReferenceIntraRefreshInfoKHR;\n\ntypedef struct VkPhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 videoEncodeIntraRefresh;\n} VkPhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR;\n\n\n#define VK_KHR_video_encode_quantization_map 1\n#define VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_SPEC_VERSION 2\n#define VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_EXTENSION_NAME \"VK_KHR_video_encode_quantization_map\"\n\ntypedef struct VkVideoEncodeQuantizationMapCapabilitiesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkExtent2D maxQuantizationMapExtent;\n} VkVideoEncodeQuantizationMapCapabilitiesKHR;\n\ntypedef struct VkVideoFormatQuantizationMapPropertiesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkExtent2D quantizationMapTexelSize;\n} VkVideoFormatQuantizationMapPropertiesKHR;\n\ntypedef struct VkVideoEncodeQuantizationMapInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkImageView quantizationMap;\n    VkExtent2D quantizationMapExtent;\n} VkVideoEncodeQuantizationMapInfoKHR;\n\ntypedef struct VkVideoEncodeQuantizationMapSessionParametersCreateInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkExtent2D quantizationMapTexelSize;\n} VkVideoEncodeQuantizationMapSessionParametersCreateInfoKHR;\n\ntypedef struct VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 videoEncodeQuantizationMap;\n} VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR;\n\ntypedef struct VkVideoEncodeH264QuantizationMapCapabilitiesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    int32_t minQpDelta;\n    int32_t maxQpDelta;\n} VkVideoEncodeH264QuantizationMapCapabilitiesKHR;\n\ntypedef struct VkVideoEncodeH265QuantizationMapCapabilitiesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    int32_t minQpDelta;\n    int32_t maxQpDelta;\n} VkVideoEncodeH265QuantizationMapCapabilitiesKHR;\n\ntypedef struct VkVideoFormatH265QuantizationMapPropertiesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkVideoEncodeH265CtbSizeFlagsKHR compatibleCtbSizes;\n} VkVideoFormatH265QuantizationMapPropertiesKHR;\n\ntypedef struct VkVideoEncodeAV1QuantizationMapCapabilitiesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    int32_t minQIndexDelta;\n    int32_t maxQIndexDelta;\n} VkVideoEncodeAV1QuantizationMapCapabilitiesKHR;\n\ntypedef struct VkVideoFormatAV1QuantizationMapPropertiesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkVideoEncodeAV1SuperblockSizeFlagsKHR compatibleSuperblockSizes;\n} VkVideoFormatAV1QuantizationMapPropertiesKHR;\n\n\n#define VK_NV_raw_access_chains 1\n#define VK_NV_RAW_ACCESS_CHAINS_SPEC_VERSION 1\n#define VK_NV_RAW_ACCESS_CHAINS_EXTENSION_NAME \"VK_NV_raw_access_chains\"\n\ntypedef struct VkPhysicalDeviceRawAccessChainsFeaturesNV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 shaderRawAccessChains;\n} VkPhysicalDeviceRawAccessChainsFeaturesNV;\n\n\n#define VK_NV_external_compute_queue 1\n#define VK_NV_EXTERNAL_COMPUTE_QUEUE_SPEC_VERSION 1\n#define VK_NV_EXTERNAL_COMPUTE_QUEUE_EXTENSION_NAME \"VK_NV_external_compute_queue\"\n\nVK_DEFINE_HANDLE(VkExternalComputeQueueNV)\n\ntypedef struct VkExternalComputeQueueDeviceCreateInfoNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t reservedExternalQueues;\n} VkExternalComputeQueueDeviceCreateInfoNV;\n\ntypedef struct VkExternalComputeQueueCreateInfoNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkQueue preferredQueue;\n} VkExternalComputeQueueCreateInfoNV;\n\ntypedef struct VkExternalComputeQueueDataParamsNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t deviceIndex;\n} VkExternalComputeQueueDataParamsNV;\n\ntypedef struct VkPhysicalDeviceExternalComputeQueuePropertiesNV\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t externalDataSize;\n    uint32_t maxExternalQueues;\n} VkPhysicalDeviceExternalComputeQueuePropertiesNV;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateExternalComputeQueueNV)(VkDevice device, const VkExternalComputeQueueCreateInfoNV* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkExternalComputeQueueNV* pExternalQueue);\ntypedef void (VKAPI_PTR *PFN_vkDestroyExternalComputeQueueNV)(VkDevice device, VkExternalComputeQueueNV externalQueue, const VkAllocationCallbacks* pAllocator);\ntypedef void (VKAPI_PTR *PFN_vkGetExternalComputeQueueDataNV)(VkExternalComputeQueueNV externalQueue, VkExternalComputeQueueDataParamsNV* params, void* pData);\n\n\n#define VK_KHR_shader_relaxed_extended_instruction 1\n#define VK_KHR_SHADER_RELAXED_EXTENDED_INSTRUCTION_SPEC_VERSION 1\n#define VK_KHR_SHADER_RELAXED_EXTENDED_INSTRUCTION_EXTENSION_NAME \"VK_KHR_shader_relaxed_extended_instruction\"\n\ntypedef struct VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 shaderRelaxedExtendedInstruction;\n} VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR;\n\n\n#define VK_NV_command_buffer_inheritance 1\n#define VK_NV_COMMAND_BUFFER_INHERITANCE_SPEC_VERSION 1\n#define VK_NV_COMMAND_BUFFER_INHERITANCE_EXTENSION_NAME \"VK_NV_command_buffer_inheritance\"\n\ntypedef struct VkPhysicalDeviceCommandBufferInheritanceFeaturesNV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 commandBufferInheritance;\n} VkPhysicalDeviceCommandBufferInheritanceFeaturesNV;\n\n\n#define VK_KHR_maintenance7 1\n#define VK_KHR_MAINTENANCE_7_SPEC_VERSION 1\n#define VK_KHR_MAINTENANCE_7_EXTENSION_NAME \"VK_KHR_maintenance7\"\n\ntypedef enum\n{\n    VK_PHYSICAL_DEVICE_LAYERED_API_VULKAN_KHR = 0,\n    VK_PHYSICAL_DEVICE_LAYERED_API_D3D12_KHR = 1,\n    VK_PHYSICAL_DEVICE_LAYERED_API_METAL_KHR = 2,\n    VK_PHYSICAL_DEVICE_LAYERED_API_OPENGL_KHR = 3,\n    VK_PHYSICAL_DEVICE_LAYERED_API_OPENGLES_KHR = 4,\n    VK_PHYSICAL_DEVICE_LAYERED_API_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkPhysicalDeviceLayeredApiKHR;\n\n\ntypedef struct VkPhysicalDeviceMaintenance7FeaturesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 maintenance7;\n} VkPhysicalDeviceMaintenance7FeaturesKHR;\n\ntypedef struct VkPhysicalDeviceMaintenance7PropertiesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 robustFragmentShadingRateAttachmentAccess;\n    VkBool32 separateDepthStencilAttachmentAccess;\n    uint32_t maxDescriptorSetTotalUniformBuffersDynamic;\n    uint32_t maxDescriptorSetTotalStorageBuffersDynamic;\n    uint32_t maxDescriptorSetTotalBuffersDynamic;\n    uint32_t maxDescriptorSetUpdateAfterBindTotalUniformBuffersDynamic;\n    uint32_t maxDescriptorSetUpdateAfterBindTotalStorageBuffersDynamic;\n    uint32_t maxDescriptorSetUpdateAfterBindTotalBuffersDynamic;\n} VkPhysicalDeviceMaintenance7PropertiesKHR;\n\ntypedef struct VkPhysicalDeviceLayeredApiPropertiesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t vendorID;\n    uint32_t deviceID;\n    VkPhysicalDeviceLayeredApiKHR layeredAPI;\n    char deviceName[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE];\n} VkPhysicalDeviceLayeredApiPropertiesKHR;\n\ntypedef struct VkPhysicalDeviceLayeredApiPropertiesListKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t layeredApiCount;\n    VkPhysicalDeviceLayeredApiPropertiesKHR* pLayeredApis;\n} VkPhysicalDeviceLayeredApiPropertiesListKHR;\n\ntypedef struct VkPhysicalDeviceLayeredApiVulkanPropertiesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkPhysicalDeviceProperties2 properties;\n} VkPhysicalDeviceLayeredApiVulkanPropertiesKHR;\n\n\n#define VK_NV_shader_atomic_float16_vector 1\n#define VK_NV_SHADER_ATOMIC_FLOAT16_VECTOR_SPEC_VERSION 1\n#define VK_NV_SHADER_ATOMIC_FLOAT16_VECTOR_EXTENSION_NAME \"VK_NV_shader_atomic_float16_vector\"\n\ntypedef struct VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 shaderFloat16VectorAtomics;\n} VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV;\n\n\n#define VK_EXT_shader_replicated_composites 1\n#define VK_EXT_SHADER_REPLICATED_COMPOSITES_SPEC_VERSION 1\n#define VK_EXT_SHADER_REPLICATED_COMPOSITES_EXTENSION_NAME \"VK_EXT_shader_replicated_composites\"\n\ntypedef struct VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 shaderReplicatedComposites;\n} VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT;\n\n\n#define VK_EXT_shader_float8 1\n#define VK_EXT_SHADER_FLOAT8_SPEC_VERSION 1\n#define VK_EXT_SHADER_FLOAT8_EXTENSION_NAME \"VK_EXT_shader_float8\"\n\ntypedef struct VkPhysicalDeviceShaderFloat8FeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 shaderFloat8;\n    VkBool32 shaderFloat8CooperativeMatrix;\n} VkPhysicalDeviceShaderFloat8FeaturesEXT;\n\n\n#define VK_NV_ray_tracing_validation 1\n#define VK_NV_RAY_TRACING_VALIDATION_SPEC_VERSION 1\n#define VK_NV_RAY_TRACING_VALIDATION_EXTENSION_NAME \"VK_NV_ray_tracing_validation\"\n\ntypedef struct VkPhysicalDeviceRayTracingValidationFeaturesNV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 rayTracingValidation;\n} VkPhysicalDeviceRayTracingValidationFeaturesNV;\n\n\n#define VK_NV_cluster_acceleration_structure 1\n#define VK_NV_CLUSTER_ACCELERATION_STRUCTURE_SPEC_VERSION 4\n#define VK_NV_CLUSTER_ACCELERATION_STRUCTURE_EXTENSION_NAME \"VK_NV_cluster_acceleration_structure\"\n\ntypedef enum\n{\n    VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_CLUSTERS_BOTTOM_LEVEL_NV = 0,\n    VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_TRIANGLE_CLUSTER_NV = 1,\n    VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_TRIANGLE_CLUSTER_TEMPLATE_NV = 2,\n    VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_NV = 0x7FFFFFFF\n} VkClusterAccelerationStructureTypeNV;\n\ntypedef enum\n{\n    VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_MOVE_OBJECTS_NV = 0,\n    VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_BUILD_CLUSTERS_BOTTOM_LEVEL_NV = 1,\n    VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_BUILD_TRIANGLE_CLUSTER_NV = 2,\n    VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_BUILD_TRIANGLE_CLUSTER_TEMPLATE_NV = 3,\n    VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_INSTANTIATE_TRIANGLE_CLUSTER_NV = 4,\n    VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_GET_CLUSTER_TEMPLATE_INDICES_NV = 5,\n    VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_MAX_ENUM_NV = 0x7FFFFFFF\n} VkClusterAccelerationStructureOpTypeNV;\n\ntypedef enum\n{\n    VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_IMPLICIT_DESTINATIONS_NV = 0,\n    VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_EXPLICIT_DESTINATIONS_NV = 1,\n    VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_COMPUTE_SIZES_NV = 2,\n    VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_MAX_ENUM_NV = 0x7FFFFFFF\n} VkClusterAccelerationStructureOpModeNV;\n\n\ntypedef enum\n{\n    VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_NONE_NV = 0,\n    VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_DST_IMPLICIT_DATA_BIT_NV = 0x00000001,\n    VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_SCRATCH_DATA_BIT_NV = 0x00000002,\n    VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_DST_ADDRESS_ARRAY_BIT_NV = 0x00000004,\n    VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_DST_SIZES_ARRAY_BIT_NV = 0x00000008,\n    VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_SRC_INFOS_ARRAY_BIT_NV = 0x00000010,\n    VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_SRC_INFOS_COUNT_BIT_NV = 0x00000020,\n    VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF\n} VkClusterAccelerationStructureAddressResolutionFlagBitsNV;\ntypedef VkFlags VkClusterAccelerationStructureAddressResolutionFlagsNV;\n\ntypedef enum\n{\n    VK_CLUSTER_ACCELERATION_STRUCTURE_CLUSTER_ALLOW_DISABLE_OPACITY_MICROMAPS_NV = 0x00000001,\n    VK_CLUSTER_ACCELERATION_STRUCTURE_CLUSTER_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF\n} VkClusterAccelerationStructureClusterFlagBitsNV;\ntypedef VkFlags VkClusterAccelerationStructureClusterFlagsNV;\n\ntypedef enum\n{\n    VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_CULL_DISABLE_BIT_NV = 0x00000001,\n    VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_NO_DUPLICATE_ANYHIT_INVOCATION_BIT_NV = 0x00000002,\n    VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_OPAQUE_BIT_NV = 0x00000004,\n    VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF\n} VkClusterAccelerationStructureGeometryFlagBitsNV;\ntypedef VkFlags VkClusterAccelerationStructureGeometryFlagsNV;\n\ntypedef enum\n{\n    VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_8BIT_NV = 0x00000001,\n    VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_16BIT_NV = 0x00000002,\n    VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_32BIT_NV = 0x00000004,\n    VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF\n} VkClusterAccelerationStructureIndexFormatFlagBitsNV;\ntypedef VkFlags VkClusterAccelerationStructureIndexFormatFlagsNV;\n\ntypedef struct VkPhysicalDeviceClusterAccelerationStructureFeaturesNV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 clusterAccelerationStructure;\n} VkPhysicalDeviceClusterAccelerationStructureFeaturesNV;\n\ntypedef struct VkPhysicalDeviceClusterAccelerationStructurePropertiesNV\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t maxVerticesPerCluster;\n    uint32_t maxTrianglesPerCluster;\n    uint32_t clusterScratchByteAlignment;\n    uint32_t clusterByteAlignment;\n    uint32_t clusterTemplateByteAlignment;\n    uint32_t clusterBottomLevelByteAlignment;\n    uint32_t clusterTemplateBoundsByteAlignment;\n    uint32_t maxClusterGeometryIndex;\n} VkPhysicalDeviceClusterAccelerationStructurePropertiesNV;\n\ntypedef struct VkClusterAccelerationStructureClustersBottomLevelInputNV\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t maxTotalClusterCount;\n    uint32_t maxClusterCountPerAccelerationStructure;\n} VkClusterAccelerationStructureClustersBottomLevelInputNV;\n\ntypedef struct VkClusterAccelerationStructureTriangleClusterInputNV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkFormat vertexFormat;\n    uint32_t maxGeometryIndexValue;\n    uint32_t maxClusterUniqueGeometryCount;\n    uint32_t maxClusterTriangleCount;\n    uint32_t maxClusterVertexCount;\n    uint32_t maxTotalTriangleCount;\n    uint32_t maxTotalVertexCount;\n    uint32_t minPositionTruncateBitCount;\n} VkClusterAccelerationStructureTriangleClusterInputNV;\n\ntypedef struct VkClusterAccelerationStructureMoveObjectsInputNV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkClusterAccelerationStructureTypeNV type;\n    VkBool32 noMoveOverlap;\n    VkDeviceSize maxMovedBytes;\n} VkClusterAccelerationStructureMoveObjectsInputNV;\n\ntypedef union VkClusterAccelerationStructureOpInputNV\n{\n    VkClusterAccelerationStructureClustersBottomLevelInputNV* pClustersBottomLevel;\n    VkClusterAccelerationStructureTriangleClusterInputNV* pTriangleClusters;\n    VkClusterAccelerationStructureMoveObjectsInputNV* pMoveObjects;\n} VkClusterAccelerationStructureOpInputNV;\n\ntypedef struct VkClusterAccelerationStructureInputInfoNV\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t maxAccelerationStructureCount;\n    VkBuildAccelerationStructureFlagsKHR flags;\n    VkClusterAccelerationStructureOpTypeNV opType;\n    VkClusterAccelerationStructureOpModeNV opMode;\n    VkClusterAccelerationStructureOpInputNV opInput;\n} VkClusterAccelerationStructureInputInfoNV;\n\ntypedef struct VkClusterAccelerationStructureCommandsInfoNV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkClusterAccelerationStructureInputInfoNV input;\n    VkDeviceAddress dstImplicitData;\n    VkDeviceAddress scratchData;\n    VkStridedDeviceAddressRegionKHR dstAddressesArray;\n    VkStridedDeviceAddressRegionKHR dstSizesArray;\n    VkStridedDeviceAddressRegionKHR srcInfosArray;\n    VkDeviceAddress srcInfosCount;\n    VkClusterAccelerationStructureAddressResolutionFlagsNV addressResolutionFlags;\n} VkClusterAccelerationStructureCommandsInfoNV;\n\ntypedef struct VkStridedDeviceAddressNV\n{\n    VkDeviceAddress startAddress;\n    VkDeviceSize strideInBytes;\n} VkStridedDeviceAddressNV;\n\ntypedef struct VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV\n{\n    uint32_t geometryIndex:24;\n    uint32_t reserved:5;\n    uint32_t geometryFlags:3;\n} VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV;\n\ntypedef struct VkClusterAccelerationStructureMoveObjectsInfoNV\n{\n    VkDeviceAddress srcAccelerationStructure;\n} VkClusterAccelerationStructureMoveObjectsInfoNV;\n\ntypedef struct VkClusterAccelerationStructureBuildClustersBottomLevelInfoNV\n{\n    uint32_t clusterReferencesCount;\n    uint32_t clusterReferencesStride;\n    VkDeviceAddress clusterReferences;\n} VkClusterAccelerationStructureBuildClustersBottomLevelInfoNV;\n\ntypedef struct VkClusterAccelerationStructureBuildTriangleClusterInfoNV\n{\n    uint32_t clusterID;\n    VkClusterAccelerationStructureClusterFlagsNV clusterFlags;\n    uint32_t triangleCount:9;\n    uint32_t vertexCount:9;\n    uint32_t positionTruncateBitCount:6;\n    uint32_t indexType:4;\n    uint32_t opacityMicromapIndexType:4;\n    VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV baseGeometryIndexAndGeometryFlags;\n    uint16_t indexBufferStride;\n    uint16_t vertexBufferStride;\n    uint16_t geometryIndexAndFlagsBufferStride;\n    uint16_t opacityMicromapIndexBufferStride;\n    VkDeviceAddress indexBuffer;\n    VkDeviceAddress vertexBuffer;\n    VkDeviceAddress geometryIndexAndFlagsBuffer;\n    VkDeviceAddress opacityMicromapArray;\n    VkDeviceAddress opacityMicromapIndexBuffer;\n} VkClusterAccelerationStructureBuildTriangleClusterInfoNV;\n\ntypedef struct VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV\n{\n    uint32_t clusterID;\n    VkClusterAccelerationStructureClusterFlagsNV clusterFlags;\n    uint32_t triangleCount:9;\n    uint32_t vertexCount:9;\n    uint32_t positionTruncateBitCount:6;\n    uint32_t indexType:4;\n    uint32_t opacityMicromapIndexType:4;\n    VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV baseGeometryIndexAndGeometryFlags;\n    uint16_t indexBufferStride;\n    uint16_t vertexBufferStride;\n    uint16_t geometryIndexAndFlagsBufferStride;\n    uint16_t opacityMicromapIndexBufferStride;\n    VkDeviceAddress indexBuffer;\n    VkDeviceAddress vertexBuffer;\n    VkDeviceAddress geometryIndexAndFlagsBuffer;\n    VkDeviceAddress opacityMicromapArray;\n    VkDeviceAddress opacityMicromapIndexBuffer;\n    VkDeviceAddress instantiationBoundingBoxLimit;\n} VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV;\n\ntypedef struct VkClusterAccelerationStructureInstantiateClusterInfoNV\n{\n    uint32_t clusterIdOffset;\n    uint32_t geometryIndexOffset:24;\n    uint32_t reserved:8;\n    VkDeviceAddress clusterTemplateAddress;\n    VkStridedDeviceAddressNV vertexBuffer;\n} VkClusterAccelerationStructureInstantiateClusterInfoNV;\n\ntypedef struct VkClusterAccelerationStructureGetTemplateIndicesInfoNV\n{\n    VkDeviceAddress clusterTemplateAddress;\n} VkClusterAccelerationStructureGetTemplateIndicesInfoNV;\n\ntypedef struct VkRayTracingPipelineClusterAccelerationStructureCreateInfoNV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 allowClusterAccelerationStructure;\n} VkRayTracingPipelineClusterAccelerationStructureCreateInfoNV;\n\n\ntypedef void (VKAPI_PTR *PFN_vkGetClusterAccelerationStructureBuildSizesNV)(VkDevice device, const VkClusterAccelerationStructureInputInfoNV* pInfo, VkAccelerationStructureBuildSizesInfoKHR* pSizeInfo);\ntypedef void (VKAPI_PTR *PFN_vkCmdBuildClusterAccelerationStructureIndirectNV)(VkCommandBuffer commandBuffer, const VkClusterAccelerationStructureCommandsInfoNV* pCommandInfos);\n\n\n#define VK_NV_partitioned_acceleration_structure 1\n#define VK_NV_PARTITIONED_ACCELERATION_STRUCTURE_SPEC_VERSION 1\n#define VK_NV_PARTITIONED_ACCELERATION_STRUCTURE_EXTENSION_NAME \"VK_NV_partitioned_acceleration_structure\"\n\n#define VK_PARTITIONED_ACCELERATION_STRUCTURE_PARTITION_INDEX_GLOBAL_NV (~0U)\n\ntypedef enum\n{\n    VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_WRITE_INSTANCE_NV = 0,\n    VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_UPDATE_INSTANCE_NV = 1,\n    VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_WRITE_PARTITION_TRANSLATION_NV = 2,\n    VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_MAX_ENUM_NV = 0x7FFFFFFF\n} VkPartitionedAccelerationStructureOpTypeNV;\n\n\ntypedef enum\n{\n    VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_TRIANGLE_FACING_CULL_DISABLE_BIT_NV = 0x00000001,\n    VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_TRIANGLE_FLIP_FACING_BIT_NV = 0x00000002,\n    VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_FORCE_OPAQUE_BIT_NV = 0x00000004,\n    VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_FORCE_NO_OPAQUE_BIT_NV = 0x00000008,\n    VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_ENABLE_EXPLICIT_BOUNDING_BOX_NV = 0x00000010,\n    VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF\n} VkPartitionedAccelerationStructureInstanceFlagBitsNV;\ntypedef VkFlags VkPartitionedAccelerationStructureInstanceFlagsNV;\n\ntypedef struct VkPhysicalDevicePartitionedAccelerationStructureFeaturesNV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 partitionedAccelerationStructure;\n} VkPhysicalDevicePartitionedAccelerationStructureFeaturesNV;\n\ntypedef struct VkPhysicalDevicePartitionedAccelerationStructurePropertiesNV\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t maxPartitionCount;\n} VkPhysicalDevicePartitionedAccelerationStructurePropertiesNV;\n\ntypedef struct VkPartitionedAccelerationStructureFlagsNV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 enablePartitionTranslation;\n} VkPartitionedAccelerationStructureFlagsNV;\n\ntypedef struct VkBuildPartitionedAccelerationStructureIndirectCommandNV\n{\n    VkPartitionedAccelerationStructureOpTypeNV opType;\n    uint32_t argCount;\n    VkStridedDeviceAddressNV argData;\n} VkBuildPartitionedAccelerationStructureIndirectCommandNV;\n\ntypedef struct VkPartitionedAccelerationStructureWriteInstanceDataNV\n{\n    VkTransformMatrixKHR transform;\n    float explicitAABB[6];\n    uint32_t instanceID;\n    uint32_t instanceMask;\n    uint32_t instanceContributionToHitGroupIndex;\n    VkPartitionedAccelerationStructureInstanceFlagsNV instanceFlags;\n    uint32_t instanceIndex;\n    uint32_t partitionIndex;\n    VkDeviceAddress accelerationStructure;\n} VkPartitionedAccelerationStructureWriteInstanceDataNV;\n\ntypedef struct VkPartitionedAccelerationStructureUpdateInstanceDataNV\n{\n    uint32_t instanceIndex;\n    uint32_t instanceContributionToHitGroupIndex;\n    VkDeviceAddress accelerationStructure;\n} VkPartitionedAccelerationStructureUpdateInstanceDataNV;\n\ntypedef struct VkPartitionedAccelerationStructureWritePartitionTranslationDataNV\n{\n    uint32_t partitionIndex;\n    float partitionTranslation[3];\n} VkPartitionedAccelerationStructureWritePartitionTranslationDataNV;\n\ntypedef struct VkWriteDescriptorSetPartitionedAccelerationStructureNV\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t accelerationStructureCount;\n    const VkDeviceAddress* pAccelerationStructures;\n} VkWriteDescriptorSetPartitionedAccelerationStructureNV;\n\ntypedef struct VkPartitionedAccelerationStructureInstancesInputNV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBuildAccelerationStructureFlagsKHR flags;\n    uint32_t instanceCount;\n    uint32_t maxInstancePerPartitionCount;\n    uint32_t partitionCount;\n    uint32_t maxInstanceInGlobalPartitionCount;\n} VkPartitionedAccelerationStructureInstancesInputNV;\n\ntypedef struct VkBuildPartitionedAccelerationStructureInfoNV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkPartitionedAccelerationStructureInstancesInputNV input;\n    VkDeviceAddress srcAccelerationStructureData;\n    VkDeviceAddress dstAccelerationStructureData;\n    VkDeviceAddress scratchData;\n    VkDeviceAddress srcInfos;\n    VkDeviceAddress srcInfosCount;\n} VkBuildPartitionedAccelerationStructureInfoNV;\n\n\ntypedef void (VKAPI_PTR *PFN_vkGetPartitionedAccelerationStructuresBuildSizesNV)(VkDevice device, const VkPartitionedAccelerationStructureInstancesInputNV* pInfo, VkAccelerationStructureBuildSizesInfoKHR* pSizeInfo);\ntypedef void (VKAPI_PTR *PFN_vkCmdBuildPartitionedAccelerationStructuresNV)(VkCommandBuffer commandBuffer, const VkBuildPartitionedAccelerationStructureInfoNV* pBuildInfo);\n\n\n#define VK_EXT_device_generated_commands 1\n#define VK_EXT_DEVICE_GENERATED_COMMANDS_SPEC_VERSION 1\n#define VK_EXT_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME \"VK_EXT_device_generated_commands\"\n\nVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkIndirectExecutionSetEXT)\nVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkIndirectCommandsLayoutEXT)\n\n\ntypedef enum\n{\n    VK_INDIRECT_COMMANDS_INPUT_MODE_VULKAN_INDEX_BUFFER_EXT = 0x00000001,\n    VK_INDIRECT_COMMANDS_INPUT_MODE_DXGI_INDEX_BUFFER_EXT = 0x00000002,\n    VK_INDIRECT_COMMANDS_INPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF\n} VkIndirectCommandsInputModeFlagBitsEXT;\ntypedef VkFlags VkIndirectCommandsInputModeFlagsEXT;\ntypedef enum\n{\n    VK_INDIRECT_EXECUTION_SET_INFO_TYPE_PIPELINES_EXT = 0,\n    VK_INDIRECT_EXECUTION_SET_INFO_TYPE_SHADER_OBJECTS_EXT = 1,\n    VK_INDIRECT_EXECUTION_SET_INFO_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF\n} VkIndirectExecutionSetInfoTypeEXT;\n\n\ntypedef enum\n{\n    VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_EXT = 0x00000001,\n    VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_EXT = 0x00000002,\n    VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF\n} VkIndirectCommandsLayoutUsageFlagBitsEXT;\ntypedef VkFlags VkIndirectCommandsLayoutUsageFlagsEXT;\ntypedef enum\n{\n    VK_INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT = 0,\n    VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT = 1,\n    VK_INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT = 2,\n    VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXT = 3,\n    VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT = 4,\n    VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_EXT = 5,\n    VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_EXT = 6,\n    VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_COUNT_EXT = 7,\n    VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_COUNT_EXT = 8,\n    VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_EXT = 9,\n    VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_EXT = 1000135000,\n    VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_SEQUENCE_INDEX_EXT = 1000135001,\n    VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV_EXT = 1000202002,\n    VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_NV_EXT = 1000202003,\n    VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_EXT = 1000328000,\n    VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_EXT = 1000328001,\n    VK_INDIRECT_COMMANDS_TOKEN_TYPE_TRACE_RAYS2_EXT = 1000386004,\n    VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF\n} VkIndirectCommandsTokenTypeEXT;\n\n\ntypedef struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 deviceGeneratedCommands;\n    VkBool32 dynamicGeneratedPipelineLayout;\n} VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT;\n\ntypedef struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t maxIndirectPipelineCount;\n    uint32_t maxIndirectShaderObjectCount;\n    uint32_t maxIndirectSequenceCount;\n    uint32_t maxIndirectCommandsTokenCount;\n    uint32_t maxIndirectCommandsTokenOffset;\n    uint32_t maxIndirectCommandsIndirectStride;\n    VkIndirectCommandsInputModeFlagsEXT supportedIndirectCommandsInputModes;\n    VkShaderStageFlags supportedIndirectCommandsShaderStages;\n    VkShaderStageFlags supportedIndirectCommandsShaderStagesPipelineBinding;\n    VkShaderStageFlags supportedIndirectCommandsShaderStagesShaderBinding;\n    VkBool32 deviceGeneratedCommandsTransformFeedback;\n    VkBool32 deviceGeneratedCommandsMultiDrawIndirectCount;\n} VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT;\n\ntypedef struct VkGeneratedCommandsMemoryRequirementsInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkIndirectExecutionSetEXT indirectExecutionSet;\n    VkIndirectCommandsLayoutEXT indirectCommandsLayout;\n    uint32_t maxSequenceCount;\n    uint32_t maxDrawCount;\n} VkGeneratedCommandsMemoryRequirementsInfoEXT;\n\ntypedef struct VkIndirectExecutionSetPipelineInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkPipeline initialPipeline;\n    uint32_t maxPipelineCount;\n} VkIndirectExecutionSetPipelineInfoEXT;\n\ntypedef struct VkIndirectExecutionSetShaderLayoutInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t setLayoutCount;\n    const VkDescriptorSetLayout* pSetLayouts;\n} VkIndirectExecutionSetShaderLayoutInfoEXT;\n\ntypedef struct VkIndirectExecutionSetShaderInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t shaderCount;\n    const VkShaderEXT* pInitialShaders;\n    const VkIndirectExecutionSetShaderLayoutInfoEXT* pSetLayoutInfos;\n    uint32_t maxShaderCount;\n    uint32_t pushConstantRangeCount;\n    const VkPushConstantRange* pPushConstantRanges;\n} VkIndirectExecutionSetShaderInfoEXT;\n\ntypedef union VkIndirectExecutionSetInfoEXT\n{\n    const VkIndirectExecutionSetPipelineInfoEXT* pPipelineInfo;\n    const VkIndirectExecutionSetShaderInfoEXT* pShaderInfo;\n} VkIndirectExecutionSetInfoEXT;\n\ntypedef struct VkIndirectExecutionSetCreateInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkIndirectExecutionSetInfoTypeEXT type;\n    VkIndirectExecutionSetInfoEXT info;\n} VkIndirectExecutionSetCreateInfoEXT;\n\ntypedef struct VkGeneratedCommandsInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkShaderStageFlags shaderStages;\n    VkIndirectExecutionSetEXT indirectExecutionSet;\n    VkIndirectCommandsLayoutEXT indirectCommandsLayout;\n    VkDeviceAddress indirectAddress;\n    VkDeviceSize indirectAddressSize;\n    VkDeviceAddress preprocessAddress;\n    VkDeviceSize preprocessSize;\n    uint32_t maxSequenceCount;\n    VkDeviceAddress sequenceCountAddress;\n    uint32_t maxDrawCount;\n} VkGeneratedCommandsInfoEXT;\n\ntypedef struct VkWriteIndirectExecutionSetPipelineEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t index;\n    VkPipeline pipeline;\n} VkWriteIndirectExecutionSetPipelineEXT;\n\ntypedef struct VkIndirectCommandsPushConstantTokenEXT\n{\n    VkPushConstantRange updateRange;\n} VkIndirectCommandsPushConstantTokenEXT;\n\ntypedef struct VkIndirectCommandsVertexBufferTokenEXT\n{\n    uint32_t vertexBindingUnit;\n} VkIndirectCommandsVertexBufferTokenEXT;\n\ntypedef struct VkIndirectCommandsIndexBufferTokenEXT\n{\n    VkIndirectCommandsInputModeFlagBitsEXT mode;\n} VkIndirectCommandsIndexBufferTokenEXT;\n\ntypedef struct VkIndirectCommandsExecutionSetTokenEXT\n{\n    VkIndirectExecutionSetInfoTypeEXT type;\n    VkShaderStageFlags shaderStages;\n} VkIndirectCommandsExecutionSetTokenEXT;\n\ntypedef union VkIndirectCommandsTokenDataEXT\n{\n    const VkIndirectCommandsPushConstantTokenEXT* pPushConstant;\n    const VkIndirectCommandsVertexBufferTokenEXT* pVertexBuffer;\n    const VkIndirectCommandsIndexBufferTokenEXT* pIndexBuffer;\n    const VkIndirectCommandsExecutionSetTokenEXT* pExecutionSet;\n} VkIndirectCommandsTokenDataEXT;\n\ntypedef struct VkIndirectCommandsLayoutTokenEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkIndirectCommandsTokenTypeEXT type;\n    VkIndirectCommandsTokenDataEXT data;\n    uint32_t offset;\n} VkIndirectCommandsLayoutTokenEXT;\n\ntypedef struct VkIndirectCommandsLayoutCreateInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkIndirectCommandsLayoutUsageFlagsEXT flags;\n    VkShaderStageFlags shaderStages;\n    uint32_t indirectStride;\n    VkPipelineLayout pipelineLayout;\n    uint32_t tokenCount;\n    const VkIndirectCommandsLayoutTokenEXT* pTokens;\n} VkIndirectCommandsLayoutCreateInfoEXT;\n\ntypedef struct VkDrawIndirectCountIndirectCommandEXT\n{\n    VkDeviceAddress bufferAddress;\n    uint32_t stride;\n    uint32_t commandCount;\n} VkDrawIndirectCountIndirectCommandEXT;\n\ntypedef struct VkBindVertexBufferIndirectCommandEXT\n{\n    VkDeviceAddress bufferAddress;\n    uint32_t size;\n    uint32_t stride;\n} VkBindVertexBufferIndirectCommandEXT;\n\ntypedef struct VkBindIndexBufferIndirectCommandEXT\n{\n    VkDeviceAddress bufferAddress;\n    uint32_t size;\n    VkIndexType indexType;\n} VkBindIndexBufferIndirectCommandEXT;\n\ntypedef struct VkGeneratedCommandsPipelineInfoEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkPipeline pipeline;\n} VkGeneratedCommandsPipelineInfoEXT;\n\ntypedef struct VkGeneratedCommandsShaderInfoEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t shaderCount;\n    const VkShaderEXT* pShaders;\n} VkGeneratedCommandsShaderInfoEXT;\n\ntypedef struct VkWriteIndirectExecutionSetShaderEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t index;\n    VkShaderEXT shader;\n} VkWriteIndirectExecutionSetShaderEXT;\n\n\ntypedef void (VKAPI_PTR *PFN_vkGetGeneratedCommandsMemoryRequirementsEXT)(VkDevice device, const VkGeneratedCommandsMemoryRequirementsInfoEXT* pInfo, VkMemoryRequirements2* pMemoryRequirements);\ntypedef void (VKAPI_PTR *PFN_vkCmdPreprocessGeneratedCommandsEXT)(VkCommandBuffer commandBuffer, const VkGeneratedCommandsInfoEXT* pGeneratedCommandsInfo, VkCommandBuffer stateCommandBuffer);\ntypedef void (VKAPI_PTR *PFN_vkCmdExecuteGeneratedCommandsEXT)(VkCommandBuffer commandBuffer, VkBool32 isPreprocessed, const VkGeneratedCommandsInfoEXT* pGeneratedCommandsInfo);\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateIndirectCommandsLayoutEXT)(VkDevice device, const VkIndirectCommandsLayoutCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkIndirectCommandsLayoutEXT* pIndirectCommandsLayout);\ntypedef void (VKAPI_PTR *PFN_vkDestroyIndirectCommandsLayoutEXT)(VkDevice device, VkIndirectCommandsLayoutEXT indirectCommandsLayout, const VkAllocationCallbacks* pAllocator);\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateIndirectExecutionSetEXT)(VkDevice device, const VkIndirectExecutionSetCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkIndirectExecutionSetEXT* pIndirectExecutionSet);\ntypedef void (VKAPI_PTR *PFN_vkDestroyIndirectExecutionSetEXT)(VkDevice device, VkIndirectExecutionSetEXT indirectExecutionSet, const VkAllocationCallbacks* pAllocator);\ntypedef void (VKAPI_PTR *PFN_vkUpdateIndirectExecutionSetPipelineEXT)(VkDevice device, VkIndirectExecutionSetEXT indirectExecutionSet, uint32_t executionSetWriteCount, const VkWriteIndirectExecutionSetPipelineEXT* pExecutionSetWrites);\ntypedef void (VKAPI_PTR *PFN_vkUpdateIndirectExecutionSetShaderEXT)(VkDevice device, VkIndirectExecutionSetEXT indirectExecutionSet, uint32_t executionSetWriteCount, const VkWriteIndirectExecutionSetShaderEXT* pExecutionSetWrites);\n\n\n#define VK_KHR_maintenance8 1\n#define VK_KHR_MAINTENANCE_8_SPEC_VERSION 1\n#define VK_KHR_MAINTENANCE_8_EXTENSION_NAME \"VK_KHR_maintenance8\"\n\n\ntypedef VkFlags64 VkAccessFlagBits3KHR;\nstatic const VkAccessFlagBits3KHR VK_ACCESS_3_NONE_KHR = 0;\ntypedef VkFlags64 VkAccessFlags3KHR;\n\ntypedef struct VkMemoryBarrierAccessFlags3KHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkAccessFlags3KHR srcAccessMask3;\n    VkAccessFlags3KHR dstAccessMask3;\n} VkMemoryBarrierAccessFlags3KHR;\n\ntypedef struct VkPhysicalDeviceMaintenance8FeaturesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 maintenance8;\n} VkPhysicalDeviceMaintenance8FeaturesKHR;\n\n\n#define VK_MESA_image_alignment_control 1\n#define VK_MESA_IMAGE_ALIGNMENT_CONTROL_SPEC_VERSION 1\n#define VK_MESA_IMAGE_ALIGNMENT_CONTROL_EXTENSION_NAME \"VK_MESA_image_alignment_control\"\n\ntypedef struct VkPhysicalDeviceImageAlignmentControlFeaturesMESA\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 imageAlignmentControl;\n} VkPhysicalDeviceImageAlignmentControlFeaturesMESA;\n\ntypedef struct VkPhysicalDeviceImageAlignmentControlPropertiesMESA\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t supportedImageAlignmentMask;\n} VkPhysicalDeviceImageAlignmentControlPropertiesMESA;\n\ntypedef struct VkImageAlignmentControlCreateInfoMESA\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t maximumRequestedAlignment;\n} VkImageAlignmentControlCreateInfoMESA;\n\n\n#define VK_KHR_shader_fma 1\n#define VK_KHR_SHADER_FMA_SPEC_VERSION 1\n#define VK_KHR_SHADER_FMA_EXTENSION_NAME \"VK_KHR_shader_fma\"\n\ntypedef struct VkPhysicalDeviceShaderFmaFeaturesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 shaderFmaFloat16;\n    VkBool32 shaderFmaFloat32;\n    VkBool32 shaderFmaFloat64;\n} VkPhysicalDeviceShaderFmaFeaturesKHR;\n\n\n#define VK_NV_push_constant_bank 1\n#define VK_NV_PUSH_CONSTANT_BANK_SPEC_VERSION 1\n#define VK_NV_PUSH_CONSTANT_BANK_EXTENSION_NAME \"VK_NV_push_constant_bank\"\n\ntypedef struct VkPushConstantBankInfoNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t bank;\n} VkPushConstantBankInfoNV;\n\ntypedef struct VkPhysicalDevicePushConstantBankFeaturesNV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 pushConstantBank;\n} VkPhysicalDevicePushConstantBankFeaturesNV;\n\ntypedef struct VkPhysicalDevicePushConstantBankPropertiesNV\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t maxGraphicsPushConstantBanks;\n    uint32_t maxComputePushConstantBanks;\n    uint32_t maxGraphicsPushDataBanks;\n    uint32_t maxComputePushDataBanks;\n} VkPhysicalDevicePushConstantBankPropertiesNV;\n\n\n#define VK_EXT_ray_tracing_invocation_reorder 1\n#define VK_EXT_RAY_TRACING_INVOCATION_REORDER_SPEC_VERSION 1\n#define VK_EXT_RAY_TRACING_INVOCATION_REORDER_EXTENSION_NAME \"VK_EXT_ray_tracing_invocation_reorder\"\n\ntypedef enum\n{\n    VK_RAY_TRACING_INVOCATION_REORDER_MODE_NONE_EXT = 0,\n    VK_RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_EXT = 1,\n    VK_RAY_TRACING_INVOCATION_REORDER_MODE_NONE_NV = VK_RAY_TRACING_INVOCATION_REORDER_MODE_NONE_EXT,\n    VK_RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_NV = VK_RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_EXT,\n    VK_RAY_TRACING_INVOCATION_REORDER_MODE_MAX_ENUM_EXT = 0x7FFFFFFF\n} VkRayTracingInvocationReorderModeEXT;\n\n\ntypedef struct VkPhysicalDeviceRayTracingInvocationReorderPropertiesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkRayTracingInvocationReorderModeEXT rayTracingInvocationReorderReorderingHint;\n    uint32_t maxShaderBindingTableRecordIndex;\n} VkPhysicalDeviceRayTracingInvocationReorderPropertiesEXT;\n\ntypedef struct VkPhysicalDeviceRayTracingInvocationReorderFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 rayTracingInvocationReorder;\n} VkPhysicalDeviceRayTracingInvocationReorderFeaturesEXT;\n\n\n#define VK_NV_ray_tracing_invocation_reorder 1\n#define VK_NV_RAY_TRACING_INVOCATION_REORDER_SPEC_VERSION 1\n#define VK_NV_RAY_TRACING_INVOCATION_REORDER_EXTENSION_NAME \"VK_NV_ray_tracing_invocation_reorder\"\n\ntypedef VkRayTracingInvocationReorderModeEXT VkRayTracingInvocationReorderModeNV;\ntypedef struct VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkRayTracingInvocationReorderModeEXT rayTracingInvocationReorderReorderingHint;\n} VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV;\n\ntypedef struct VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 rayTracingInvocationReorder;\n} VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV;\n\n\n#define VK_EXT_depth_clamp_control 1\n#define VK_EXT_DEPTH_CLAMP_CONTROL_SPEC_VERSION 1\n#define VK_EXT_DEPTH_CLAMP_CONTROL_EXTENSION_NAME \"VK_EXT_depth_clamp_control\"\n\ntypedef struct VkPhysicalDeviceDepthClampControlFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 depthClampControl;\n} VkPhysicalDeviceDepthClampControlFeaturesEXT;\n\ntypedef struct VkPipelineViewportDepthClampControlCreateInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkDepthClampModeEXT depthClampMode;\n    const VkDepthClampRangeEXT* pDepthClampRange;\n} VkPipelineViewportDepthClampControlCreateInfoEXT;\n\n\n#define VK_EXT_vertex_attribute_robustness 1\n#define VK_EXT_VERTEX_ATTRIBUTE_ROBUSTNESS_SPEC_VERSION 1\n#define VK_EXT_VERTEX_ATTRIBUTE_ROBUSTNESS_EXTENSION_NAME \"VK_EXT_vertex_attribute_robustness\"\n\ntypedef struct VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 vertexAttributeRobustness;\n} VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT;\n\n\n#define VK_KHR_maintenance9 1\n#define VK_KHR_MAINTENANCE_9_SPEC_VERSION 1\n#define VK_KHR_MAINTENANCE_9_EXTENSION_NAME \"VK_KHR_maintenance9\"\n\ntypedef enum\n{\n    VK_DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ZERO_KHR = 0,\n    VK_DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ONE_KHR = 1,\n    VK_DEFAULT_VERTEX_ATTRIBUTE_VALUE_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkDefaultVertexAttributeValueKHR;\n\n\ntypedef struct VkPhysicalDeviceMaintenance9FeaturesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 maintenance9;\n} VkPhysicalDeviceMaintenance9FeaturesKHR;\n\ntypedef struct VkPhysicalDeviceMaintenance9PropertiesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 image2DViewOf3DSparse;\n    VkDefaultVertexAttributeValueKHR defaultVertexAttributeValue;\n} VkPhysicalDeviceMaintenance9PropertiesKHR;\n\ntypedef struct VkQueueFamilyOwnershipTransferPropertiesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t optimalImageTransferToQueueFamilies;\n} VkQueueFamilyOwnershipTransferPropertiesKHR;\n\n\n#define VK_KHR_video_maintenance2 1\n#define VK_KHR_VIDEO_MAINTENANCE_2_SPEC_VERSION 1\n#define VK_KHR_VIDEO_MAINTENANCE_2_EXTENSION_NAME \"VK_KHR_video_maintenance2\"\n\ntypedef struct VkPhysicalDeviceVideoMaintenance2FeaturesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 videoMaintenance2;\n} VkPhysicalDeviceVideoMaintenance2FeaturesKHR;\n\ntypedef struct VkVideoDecodeH264InlineSessionParametersInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    const StdVideoH264SequenceParameterSet* pStdSPS;\n    const StdVideoH264PictureParameterSet* pStdPPS;\n} VkVideoDecodeH264InlineSessionParametersInfoKHR;\n\ntypedef struct VkVideoDecodeH265InlineSessionParametersInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    const StdVideoH265VideoParameterSet* pStdVPS;\n    const StdVideoH265SequenceParameterSet* pStdSPS;\n    const StdVideoH265PictureParameterSet* pStdPPS;\n} VkVideoDecodeH265InlineSessionParametersInfoKHR;\n\ntypedef struct VkVideoDecodeAV1InlineSessionParametersInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    const StdVideoAV1SequenceHeader* pStdSequenceHeader;\n} VkVideoDecodeAV1InlineSessionParametersInfoKHR;\n\n\n#define VK_HUAWEI_hdr_vivid 1\n#define VK_HUAWEI_HDR_VIVID_SPEC_VERSION 1\n#define VK_HUAWEI_HDR_VIVID_EXTENSION_NAME \"VK_HUAWEI_hdr_vivid\"\n\ntypedef struct VkPhysicalDeviceHdrVividFeaturesHUAWEI\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 hdrVivid;\n} VkPhysicalDeviceHdrVividFeaturesHUAWEI;\n\ntypedef struct VkHdrVividDynamicMetadataHUAWEI\n{\n    VkStructureType sType;\n    const void* pNext;\n    size_t dynamicMetadataSize;\n    const void* pDynamicMetadata;\n} VkHdrVividDynamicMetadataHUAWEI;\n\n\n#define VK_NV_cooperative_matrix2 1\n#define VK_NV_COOPERATIVE_MATRIX_2_SPEC_VERSION 1\n#define VK_NV_COOPERATIVE_MATRIX_2_EXTENSION_NAME \"VK_NV_cooperative_matrix2\"\n\ntypedef struct VkCooperativeMatrixFlexibleDimensionsPropertiesNV\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t MGranularity;\n    uint32_t NGranularity;\n    uint32_t KGranularity;\n    VkComponentTypeKHR AType;\n    VkComponentTypeKHR BType;\n    VkComponentTypeKHR CType;\n    VkComponentTypeKHR ResultType;\n    VkBool32 saturatingAccumulation;\n    VkScopeKHR scope;\n    uint32_t workgroupInvocations;\n} VkCooperativeMatrixFlexibleDimensionsPropertiesNV;\n\ntypedef struct VkPhysicalDeviceCooperativeMatrix2FeaturesNV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 cooperativeMatrixWorkgroupScope;\n    VkBool32 cooperativeMatrixFlexibleDimensions;\n    VkBool32 cooperativeMatrixReductions;\n    VkBool32 cooperativeMatrixConversions;\n    VkBool32 cooperativeMatrixPerElementOperations;\n    VkBool32 cooperativeMatrixTensorAddressing;\n    VkBool32 cooperativeMatrixBlockLoads;\n} VkPhysicalDeviceCooperativeMatrix2FeaturesNV;\n\ntypedef struct VkPhysicalDeviceCooperativeMatrix2PropertiesNV\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t cooperativeMatrixWorkgroupScopeMaxWorkgroupSize;\n    uint32_t cooperativeMatrixFlexibleDimensionsMaxDimension;\n    uint32_t cooperativeMatrixWorkgroupScopeReservedSharedMemory;\n} VkPhysicalDeviceCooperativeMatrix2PropertiesNV;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkCooperativeMatrixFlexibleDimensionsPropertiesNV* pProperties);\n\n\n#define VK_ARM_pipeline_opacity_micromap 1\n#define VK_ARM_PIPELINE_OPACITY_MICROMAP_SPEC_VERSION 1\n#define VK_ARM_PIPELINE_OPACITY_MICROMAP_EXTENSION_NAME \"VK_ARM_pipeline_opacity_micromap\"\n\ntypedef struct VkPhysicalDevicePipelineOpacityMicromapFeaturesARM\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 pipelineOpacityMicromap;\n} VkPhysicalDevicePipelineOpacityMicromapFeaturesARM;\n\n\n#define VK_KHR_depth_clamp_zero_one 1\n#define VK_KHR_DEPTH_CLAMP_ZERO_ONE_SPEC_VERSION 1\n#define VK_KHR_DEPTH_CLAMP_ZERO_ONE_EXTENSION_NAME \"VK_KHR_depth_clamp_zero_one\"\n\ntypedef struct VkPhysicalDeviceDepthClampZeroOneFeaturesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 depthClampZeroOne;\n} VkPhysicalDeviceDepthClampZeroOneFeaturesKHR;\n\n\n#define VK_EXT_depth_clamp_zero_one 1\n#define VK_EXT_DEPTH_CLAMP_ZERO_ONE_SPEC_VERSION 1\n#define VK_EXT_DEPTH_CLAMP_ZERO_ONE_EXTENSION_NAME \"VK_EXT_depth_clamp_zero_one\"\n\ntypedef VkPhysicalDeviceDepthClampZeroOneFeaturesKHR VkPhysicalDeviceDepthClampZeroOneFeaturesEXT;\n\n\n#define VK_ARM_performance_counters_by_region 1\n#define VK_ARM_PERFORMANCE_COUNTERS_BY_REGION_SPEC_VERSION 1\n#define VK_ARM_PERFORMANCE_COUNTERS_BY_REGION_EXTENSION_NAME \"VK_ARM_performance_counters_by_region\"\n\ntypedef VkFlags VkPerformanceCounterDescriptionFlagsARM;\ntypedef struct VkPhysicalDevicePerformanceCountersByRegionFeaturesARM\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 performanceCountersByRegion;\n} VkPhysicalDevicePerformanceCountersByRegionFeaturesARM;\n\ntypedef struct VkPhysicalDevicePerformanceCountersByRegionPropertiesARM\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t maxPerRegionPerformanceCounters;\n    VkExtent2D performanceCounterRegionSize;\n    uint32_t rowStrideAlignment;\n    uint32_t regionAlignment;\n    VkBool32 identityTransformOrder;\n} VkPhysicalDevicePerformanceCountersByRegionPropertiesARM;\n\ntypedef struct VkPerformanceCounterARM\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t counterID;\n} VkPerformanceCounterARM;\n\ntypedef struct VkPerformanceCounterDescriptionARM\n{\n    VkStructureType sType;\n    void* pNext;\n    VkPerformanceCounterDescriptionFlagsARM flags;\n    char name[VK_MAX_DESCRIPTION_SIZE];\n} VkPerformanceCounterDescriptionARM;\n\ntypedef struct VkRenderPassPerformanceCountersByRegionBeginInfoARM\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t counterAddressCount;\n    const VkDeviceAddress* pCounterAddresses;\n    VkBool32 serializeRegions;\n    uint32_t counterIndexCount;\n    uint32_t* pCounterIndices;\n} VkRenderPassPerformanceCountersByRegionBeginInfoARM;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, uint32_t* pCounterCount, VkPerformanceCounterARM* pCounters, VkPerformanceCounterDescriptionARM* pCounterDescriptions);\n\n\n#define VK_ARM_shader_instrumentation 1\n#define VK_ARM_SHADER_INSTRUMENTATION_SPEC_VERSION 1\n#define VK_ARM_SHADER_INSTRUMENTATION_EXTENSION_NAME \"VK_ARM_shader_instrumentation\"\n\nVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkShaderInstrumentationARM)\n\ntypedef VkFlags VkShaderInstrumentationValuesFlagsARM;\ntypedef struct VkPhysicalDeviceShaderInstrumentationFeaturesARM\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 shaderInstrumentation;\n} VkPhysicalDeviceShaderInstrumentationFeaturesARM;\n\ntypedef struct VkPhysicalDeviceShaderInstrumentationPropertiesARM\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t numMetrics;\n    VkBool32 perBasicBlockGranularity;\n} VkPhysicalDeviceShaderInstrumentationPropertiesARM;\n\ntypedef struct VkShaderInstrumentationCreateInfoARM\n{\n    VkStructureType sType;\n    void* pNext;\n} VkShaderInstrumentationCreateInfoARM;\n\ntypedef struct VkShaderInstrumentationMetricDescriptionARM\n{\n    VkStructureType sType;\n    void* pNext;\n    char name[VK_MAX_DESCRIPTION_SIZE];\n    char description[VK_MAX_DESCRIPTION_SIZE];\n} VkShaderInstrumentationMetricDescriptionARM;\n\ntypedef struct VkShaderInstrumentationMetricDataHeaderARM\n{\n    uint32_t resultIndex;\n    uint32_t resultSubIndex;\n    VkShaderStageFlags stages;\n    uint32_t basicBlockIndex;\n} VkShaderInstrumentationMetricDataHeaderARM;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM)(VkPhysicalDevice physicalDevice, uint32_t* pDescriptionCount, VkShaderInstrumentationMetricDescriptionARM* pDescriptions);\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateShaderInstrumentationARM)(VkDevice device, const VkShaderInstrumentationCreateInfoARM* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkShaderInstrumentationARM* pInstrumentation);\ntypedef void (VKAPI_PTR *PFN_vkDestroyShaderInstrumentationARM)(VkDevice device, VkShaderInstrumentationARM instrumentation, const VkAllocationCallbacks* pAllocator);\ntypedef void (VKAPI_PTR *PFN_vkCmdBeginShaderInstrumentationARM)(VkCommandBuffer commandBuffer, VkShaderInstrumentationARM instrumentation);\ntypedef void (VKAPI_PTR *PFN_vkCmdEndShaderInstrumentationARM)(VkCommandBuffer commandBuffer);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetShaderInstrumentationValuesARM)(VkDevice device, VkShaderInstrumentationARM instrumentation, uint32_t* pMetricBlockCount, void* pMetricValues, VkShaderInstrumentationValuesFlagsARM flags);\ntypedef void (VKAPI_PTR *PFN_vkClearShaderInstrumentationMetricsARM)(VkDevice device, VkShaderInstrumentationARM instrumentation);\n\n\n#define VK_ARM_format_pack 1\n#define VK_ARM_FORMAT_PACK_SPEC_VERSION 1\n#define VK_ARM_FORMAT_PACK_EXTENSION_NAME \"VK_ARM_format_pack\"\n\ntypedef struct VkPhysicalDeviceFormatPackFeaturesARM\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 formatPack;\n} VkPhysicalDeviceFormatPackFeaturesARM;\n\n\n#define VK_VALVE_fragment_density_map_layered 1\n#define VK_VALVE_FRAGMENT_DENSITY_MAP_LAYERED_SPEC_VERSION 1\n#define VK_VALVE_FRAGMENT_DENSITY_MAP_LAYERED_EXTENSION_NAME \"VK_VALVE_fragment_density_map_layered\"\n\ntypedef struct VkPhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 fragmentDensityMapLayered;\n} VkPhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE;\n\ntypedef struct VkPhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t maxFragmentDensityMapLayers;\n} VkPhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE;\n\ntypedef struct VkPipelineFragmentDensityMapLayeredCreateInfoVALVE\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t maxFragmentDensityMapLayers;\n} VkPipelineFragmentDensityMapLayeredCreateInfoVALVE;\n\n\n#define VK_KHR_robustness2 1\n#define VK_KHR_ROBUSTNESS_2_SPEC_VERSION 1\n#define VK_KHR_ROBUSTNESS_2_EXTENSION_NAME \"VK_KHR_robustness2\"\n\ntypedef struct VkPhysicalDeviceRobustness2FeaturesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 robustBufferAccess2;\n    VkBool32 robustImageAccess2;\n    VkBool32 nullDescriptor;\n} VkPhysicalDeviceRobustness2FeaturesKHR;\n\ntypedef struct VkPhysicalDeviceRobustness2PropertiesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkDeviceSize robustStorageBufferAccessSizeAlignment;\n    VkDeviceSize robustUniformBufferAccessSizeAlignment;\n} VkPhysicalDeviceRobustness2PropertiesKHR;\n\n\n#define VK_EXT_robustness2 1\n#define VK_EXT_ROBUSTNESS_2_SPEC_VERSION 1\n#define VK_EXT_ROBUSTNESS_2_EXTENSION_NAME \"VK_EXT_robustness2\"\n\ntypedef VkPhysicalDeviceRobustness2FeaturesKHR VkPhysicalDeviceRobustness2FeaturesEXT;\n\ntypedef VkPhysicalDeviceRobustness2PropertiesKHR VkPhysicalDeviceRobustness2PropertiesEXT;\n\n\n#define VK_NV_present_metering 1\n#define VK_NV_PRESENT_METERING_SPEC_VERSION 1\n#define VK_NV_PRESENT_METERING_EXTENSION_NAME \"VK_NV_present_metering\"\n\ntypedef struct VkSetPresentConfigNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t numFramesPerBatch;\n    uint32_t presentConfigFeedback;\n} VkSetPresentConfigNV;\n\ntypedef struct VkPhysicalDevicePresentMeteringFeaturesNV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 presentMetering;\n} VkPhysicalDevicePresentMeteringFeaturesNV;\n\n\n#define VK_EXT_fragment_density_map_offset 1\n#define VK_EXT_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION 1\n#define VK_EXT_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME \"VK_EXT_fragment_density_map_offset\"\n\ntypedef struct VkRenderingEndInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n} VkRenderingEndInfoKHR;\n\ntypedef VkRenderingEndInfoKHR VkRenderingEndInfoEXT;\n\ntypedef struct VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 fragmentDensityMapOffset;\n} VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT;\n\ntypedef struct VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkExtent2D fragmentDensityOffsetGranularity;\n} VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT;\n\ntypedef struct VkRenderPassFragmentDensityMapOffsetEndInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t fragmentDensityOffsetCount;\n    const VkOffset2D* pFragmentDensityOffsets;\n} VkRenderPassFragmentDensityMapOffsetEndInfoEXT;\n\n\ntypedef void (VKAPI_PTR *PFN_vkCmdEndRendering2EXT)(VkCommandBuffer commandBuffer, const VkRenderingEndInfoKHR* pRenderingEndInfo);\n\n\n#define VK_QCOM_fragment_density_map_offset 1\n#define VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION 3\n#define VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME \"VK_QCOM_fragment_density_map_offset\"\n\ntypedef VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM;\n\ntypedef VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM;\n\ntypedef VkRenderPassFragmentDensityMapOffsetEndInfoEXT VkSubpassFragmentDensityMapOffsetEndInfoQCOM;\n\n\n#define VK_EXT_zero_initialize_device_memory 1\n#define VK_EXT_ZERO_INITIALIZE_DEVICE_MEMORY_SPEC_VERSION 1\n#define VK_EXT_ZERO_INITIALIZE_DEVICE_MEMORY_EXTENSION_NAME \"VK_EXT_zero_initialize_device_memory\"\n\ntypedef struct VkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 zeroInitializeDeviceMemory;\n} VkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT;\n\n\n#define VK_KHR_present_mode_fifo_latest_ready 1\n#define VK_KHR_PRESENT_MODE_FIFO_LATEST_READY_SPEC_VERSION 1\n#define VK_KHR_PRESENT_MODE_FIFO_LATEST_READY_EXTENSION_NAME \"VK_KHR_present_mode_fifo_latest_ready\"\n\ntypedef struct VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 presentModeFifoLatestReady;\n} VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR;\n\n\n#define VK_EXT_present_mode_fifo_latest_ready 1\n#define VK_EXT_PRESENT_MODE_FIFO_LATEST_READY_SPEC_VERSION 1\n#define VK_EXT_PRESENT_MODE_FIFO_LATEST_READY_EXTENSION_NAME \"VK_EXT_present_mode_fifo_latest_ready\"\n\ntypedef VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR VkPhysicalDevicePresentModeFifoLatestReadyFeaturesEXT;\n\n\n#define VK_EXT_shader_64bit_indexing 1\n#define VK_EXT_SHADER_64BIT_INDEXING_SPEC_VERSION 1\n#define VK_EXT_SHADER_64BIT_INDEXING_EXTENSION_NAME \"VK_EXT_shader_64bit_indexing\"\n\ntypedef struct VkPhysicalDeviceShader64BitIndexingFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 shader64BitIndexing;\n} VkPhysicalDeviceShader64BitIndexingFeaturesEXT;\n\n\n#define VK_EXT_custom_resolve 1\n#define VK_EXT_CUSTOM_RESOLVE_SPEC_VERSION 1\n#define VK_EXT_CUSTOM_RESOLVE_EXTENSION_NAME \"VK_EXT_custom_resolve\"\n\ntypedef struct VkPhysicalDeviceCustomResolveFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 customResolve;\n} VkPhysicalDeviceCustomResolveFeaturesEXT;\n\ntypedef struct VkBeginCustomResolveInfoEXT\n{\n    VkStructureType sType;\n    void* pNext;\n} VkBeginCustomResolveInfoEXT;\n\ntypedef struct VkCustomResolveCreateInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkBool32 customResolve;\n    uint32_t colorAttachmentCount;\n    const VkFormat* pColorAttachmentFormats;\n    VkFormat depthAttachmentFormat;\n    VkFormat stencilAttachmentFormat;\n} VkCustomResolveCreateInfoEXT;\n\n\ntypedef void (VKAPI_PTR *PFN_vkCmdBeginCustomResolveEXT)(VkCommandBuffer commandBuffer, const VkBeginCustomResolveInfoEXT* pBeginCustomResolveInfo);\n\n\n#define VK_QCOM_render_pass_shader_resolve 1\n#define VK_QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION 4\n#define VK_QCOM_RENDER_PASS_SHADER_RESOLVE_EXTENSION_NAME \"VK_QCOM_render_pass_shader_resolve\"\n\n\n#define VK_QCOM_data_graph_model 1\n#define VK_QCOM_DATA_GRAPH_MODEL_SPEC_VERSION 1\n#define VK_QCOM_DATA_GRAPH_MODEL_EXTENSION_NAME \"VK_QCOM_data_graph_model\"\n\n#define VK_DATA_GRAPH_MODEL_TOOLCHAIN_VERSION_LENGTH_QCOM 3\n\ntypedef enum\n{\n    VK_DATA_GRAPH_MODEL_CACHE_TYPE_GENERIC_BINARY_QCOM = 0,\n    VK_DATA_GRAPH_MODEL_CACHE_TYPE_MAX_ENUM_QCOM = 0x7FFFFFFF\n} VkDataGraphModelCacheTypeQCOM;\n\n\ntypedef struct VkPipelineCacheHeaderVersionDataGraphQCOM\n{\n    uint32_t headerSize;\n    VkPipelineCacheHeaderVersion headerVersion;\n    VkDataGraphModelCacheTypeQCOM cacheType;\n    uint32_t cacheVersion;\n    uint32_t toolchainVersion[VK_DATA_GRAPH_MODEL_TOOLCHAIN_VERSION_LENGTH_QCOM];\n} VkPipelineCacheHeaderVersionDataGraphQCOM;\n\ntypedef struct VkDataGraphPipelineBuiltinModelCreateInfoQCOM\n{\n    VkStructureType sType;\n    const void* pNext;\n    const VkPhysicalDeviceDataGraphOperationSupportARM* pOperation;\n} VkDataGraphPipelineBuiltinModelCreateInfoQCOM;\n\ntypedef struct VkPhysicalDeviceDataGraphModelFeaturesQCOM\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 dataGraphModel;\n} VkPhysicalDeviceDataGraphModelFeaturesQCOM;\n\n\n#define VK_KHR_maintenance10 1\n#define VK_KHR_MAINTENANCE_10_SPEC_VERSION 1\n#define VK_KHR_MAINTENANCE_10_EXTENSION_NAME \"VK_KHR_maintenance10\"\n\n\ntypedef enum\n{\n    VK_RENDERING_ATTACHMENT_INPUT_ATTACHMENT_FEEDBACK_BIT_KHR = 0x00000001,\n    VK_RENDERING_ATTACHMENT_RESOLVE_SKIP_TRANSFER_FUNCTION_BIT_KHR = 0x00000002,\n    VK_RENDERING_ATTACHMENT_RESOLVE_ENABLE_TRANSFER_FUNCTION_BIT_KHR = 0x00000004,\n    VK_RENDERING_ATTACHMENT_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkRenderingAttachmentFlagBitsKHR;\ntypedef VkFlags VkRenderingAttachmentFlagsKHR;\n\ntypedef enum\n{\n    VK_RESOLVE_IMAGE_SKIP_TRANSFER_FUNCTION_BIT_KHR = 0x00000001,\n    VK_RESOLVE_IMAGE_ENABLE_TRANSFER_FUNCTION_BIT_KHR = 0x00000002,\n    VK_RESOLVE_IMAGE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF\n} VkResolveImageFlagBitsKHR;\ntypedef VkFlags VkResolveImageFlagsKHR;\n\ntypedef struct VkPhysicalDeviceMaintenance10FeaturesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 maintenance10;\n} VkPhysicalDeviceMaintenance10FeaturesKHR;\n\ntypedef struct VkPhysicalDeviceMaintenance10PropertiesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 rgba4OpaqueBlackSwizzled;\n    VkBool32 resolveSrgbFormatAppliesTransferFunction;\n    VkBool32 resolveSrgbFormatSupportsTransferFunctionControl;\n} VkPhysicalDeviceMaintenance10PropertiesKHR;\n\ntypedef struct VkRenderingAttachmentFlagsInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkRenderingAttachmentFlagsKHR flags;\n} VkRenderingAttachmentFlagsInfoKHR;\n\ntypedef struct VkResolveImageModeInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkResolveImageFlagsKHR flags;\n    VkResolveModeFlagBits resolveMode;\n    VkResolveModeFlagBits stencilResolveMode;\n} VkResolveImageModeInfoKHR;\n\n\ntypedef void (VKAPI_PTR *PFN_vkCmdEndRendering2KHR)(VkCommandBuffer commandBuffer, const VkRenderingEndInfoKHR* pRenderingEndInfo);\n\n\n#define VK_EXT_shader_long_vector 1\n#define VK_EXT_SHADER_LONG_VECTOR_SPEC_VERSION 1\n#define VK_EXT_SHADER_LONG_VECTOR_EXTENSION_NAME \"VK_EXT_shader_long_vector\"\n\ntypedef struct VkPhysicalDeviceShaderLongVectorFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 longVector;\n} VkPhysicalDeviceShaderLongVectorFeaturesEXT;\n\ntypedef struct VkPhysicalDeviceShaderLongVectorPropertiesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t maxVectorComponents;\n} VkPhysicalDeviceShaderLongVectorPropertiesEXT;\n\n\n#define VK_SEC_pipeline_cache_incremental_mode 1\n#define VK_SEC_PIPELINE_CACHE_INCREMENTAL_MODE_SPEC_VERSION 1\n#define VK_SEC_PIPELINE_CACHE_INCREMENTAL_MODE_EXTENSION_NAME \"VK_SEC_pipeline_cache_incremental_mode\"\n\ntypedef struct VkPhysicalDevicePipelineCacheIncrementalModeFeaturesSEC\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 pipelineCacheIncrementalMode;\n} VkPhysicalDevicePipelineCacheIncrementalModeFeaturesSEC;\n\n\n#define VK_EXT_shader_uniform_buffer_unsized_array 1\n#define VK_EXT_SHADER_UNIFORM_BUFFER_UNSIZED_ARRAY_SPEC_VERSION 1\n#define VK_EXT_SHADER_UNIFORM_BUFFER_UNSIZED_ARRAY_EXTENSION_NAME \"VK_EXT_shader_uniform_buffer_unsized_array\"\n\ntypedef struct VkPhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 shaderUniformBufferUnsizedArray;\n} VkPhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT;\n\n\n#define VK_NV_compute_occupancy_priority 1\n#define VK_NV_COMPUTE_OCCUPANCY_PRIORITY_SPEC_VERSION 1\n#define VK_NV_COMPUTE_OCCUPANCY_PRIORITY_EXTENSION_NAME \"VK_NV_compute_occupancy_priority\"\n\n#define VK_COMPUTE_OCCUPANCY_PRIORITY_LOW_NV 0.25f\n#define VK_COMPUTE_OCCUPANCY_PRIORITY_NORMAL_NV 0.50f\n#define VK_COMPUTE_OCCUPANCY_PRIORITY_HIGH_NV 0.75f\n\ntypedef struct VkComputeOccupancyPriorityParametersNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    float occupancyPriority;\n    float occupancyThrottling;\n} VkComputeOccupancyPriorityParametersNV;\n\ntypedef struct VkPhysicalDeviceComputeOccupancyPriorityFeaturesNV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 computeOccupancyPriority;\n} VkPhysicalDeviceComputeOccupancyPriorityFeaturesNV;\n\n\ntypedef void (VKAPI_PTR *PFN_vkCmdSetComputeOccupancyPriorityNV)(VkCommandBuffer commandBuffer, const VkComputeOccupancyPriorityParametersNV* pParameters);\n\n\n#define VK_EXT_shader_subgroup_partitioned 1\n#define VK_EXT_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION 1\n#define VK_EXT_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME \"VK_EXT_shader_subgroup_partitioned\"\n\ntypedef struct VkPhysicalDeviceShaderSubgroupPartitionedFeaturesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 shaderSubgroupPartitioned;\n} VkPhysicalDeviceShaderSubgroupPartitionedFeaturesEXT;\n\n\n#define VK_NV_shader_subgroup_partitioned 1\n#define VK_NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION 1\n#define VK_NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME \"VK_NV_shader_subgroup_partitioned\"\n\n\n#define VK_VALVE_shader_mixed_float_dot_product 1\n#define VK_VALVE_SHADER_MIXED_FLOAT_DOT_PRODUCT_SPEC_VERSION 1\n#define VK_VALVE_SHADER_MIXED_FLOAT_DOT_PRODUCT_EXTENSION_NAME \"VK_VALVE_shader_mixed_float_dot_product\"\n\ntypedef struct VkPhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 shaderMixedFloatDotProductFloat16AccFloat32;\n    VkBool32 shaderMixedFloatDotProductFloat16AccFloat16;\n    VkBool32 shaderMixedFloatDotProductBFloat16Acc;\n    VkBool32 shaderMixedFloatDotProductFloat8AccFloat32;\n} VkPhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE;\n\n#ifdef VK_USE_PLATFORM_XLIB_KHR\n\n#define VK_KHR_xlib_surface 1\n#define VK_KHR_XLIB_SURFACE_SPEC_VERSION 6\n#define VK_KHR_XLIB_SURFACE_EXTENSION_NAME \"VK_KHR_xlib_surface\"\n\ntypedef VkFlags VkXlibSurfaceCreateFlagsKHR;\ntypedef struct VkXlibSurfaceCreateInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkXlibSurfaceCreateFlagsKHR flags;\n    vkbind_Display* dpy;\n    vkbind_Window window;\n} VkXlibSurfaceCreateInfoKHR;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateXlibSurfaceKHR)(VkInstance instance, const VkXlibSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);\ntypedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, vkbind_Display* dpy, vkbind_VisualID visualID);\n\n#endif /*VK_USE_PLATFORM_XLIB_KHR*/\n\n#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT\n\n#define VK_EXT_acquire_xlib_display 1\n#define VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION 1\n#define VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME \"VK_EXT_acquire_xlib_display\"\n\ntypedef VkResult (VKAPI_PTR *PFN_vkAcquireXlibDisplayEXT)(VkPhysicalDevice physicalDevice, vkbind_Display* dpy, VkDisplayKHR display);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetRandROutputDisplayEXT)(VkPhysicalDevice physicalDevice, vkbind_Display* dpy, RROutput rrOutput, VkDisplayKHR* pDisplay);\n\n#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/\n\n#ifdef VK_USE_PLATFORM_XCB_KHR\n#include <xcb/xcb.h>\n\n#define VK_KHR_xcb_surface 1\n#define VK_KHR_XCB_SURFACE_SPEC_VERSION 6\n#define VK_KHR_XCB_SURFACE_EXTENSION_NAME \"VK_KHR_xcb_surface\"\n\ntypedef VkFlags VkXcbSurfaceCreateFlagsKHR;\ntypedef struct VkXcbSurfaceCreateInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkXcbSurfaceCreateFlagsKHR flags;\n    xcb_connection_t* connection;\n    xcb_window_t window;\n} VkXcbSurfaceCreateInfoKHR;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateXcbSurfaceKHR)(VkInstance instance, const VkXcbSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);\ntypedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, xcb_connection_t* connection, xcb_visualid_t visual_id);\n\n#endif /*VK_USE_PLATFORM_XCB_KHR*/\n\n#ifdef VK_USE_PLATFORM_WAYLAND_KHR\n#include <wayland-client.h>\n\n#define VK_KHR_wayland_surface 1\n#define VK_KHR_WAYLAND_SURFACE_SPEC_VERSION 6\n#define VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME \"VK_KHR_wayland_surface\"\n\ntypedef VkFlags VkWaylandSurfaceCreateFlagsKHR;\ntypedef struct VkWaylandSurfaceCreateInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkWaylandSurfaceCreateFlagsKHR flags;\n    struct wl_display* display;\n    struct wl_surface* surface;\n} VkWaylandSurfaceCreateInfoKHR;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateWaylandSurfaceKHR)(VkInstance instance, const VkWaylandSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);\ntypedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, struct wl_display* display);\n\n#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/\n\n#ifdef VK_USE_PLATFORM_UBM_SEC\n#include <ubm.h>\n\n#define VK_SEC_ubm_surface 1\n#define VK_SEC_UBM_SURFACE_SPEC_VERSION 1\n#define VK_SEC_UBM_SURFACE_EXTENSION_NAME \"VK_SEC_ubm_surface\"\n\ntypedef VkFlags VkUbmSurfaceCreateFlagsSEC;\ntypedef struct VkUbmSurfaceCreateInfoSEC\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkUbmSurfaceCreateFlagsSEC flags;\n    struct ubm_device* device;\n    struct ubm_surface* surface;\n} VkUbmSurfaceCreateInfoSEC;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateUbmSurfaceSEC)(VkInstance instance, const VkUbmSurfaceCreateInfoSEC* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);\ntypedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceUbmPresentationSupportSEC)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, struct ubm_device* device);\n\n#endif /*VK_USE_PLATFORM_UBM_SEC*/\n\n#ifdef VK_USE_PLATFORM_DIRECTFB_EXT\n#include <directfb.h>\n\n#define VK_EXT_directfb_surface 1\n#define VK_EXT_DIRECTFB_SURFACE_SPEC_VERSION 1\n#define VK_EXT_DIRECTFB_SURFACE_EXTENSION_NAME \"VK_EXT_directfb_surface\"\n\ntypedef VkFlags VkDirectFBSurfaceCreateFlagsEXT;\ntypedef struct VkDirectFBSurfaceCreateInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkDirectFBSurfaceCreateFlagsEXT flags;\n    IDirectFB* dfb;\n    IDirectFBSurface* surface;\n} VkDirectFBSurfaceCreateInfoEXT;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateDirectFBSurfaceEXT)(VkInstance instance, const VkDirectFBSurfaceCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);\ntypedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceDirectFBPresentationSupportEXT)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, IDirectFB* dfb);\n\n#endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/\n\n#ifdef VK_USE_PLATFORM_ANDROID_KHR\n\n#define VK_KHR_android_surface 1\n#define VK_KHR_ANDROID_SURFACE_SPEC_VERSION 6\n#define VK_KHR_ANDROID_SURFACE_EXTENSION_NAME \"VK_KHR_android_surface\"\n\nstruct ANativeWindow;\n\ntypedef VkFlags VkAndroidSurfaceCreateFlagsKHR;\ntypedef struct VkAndroidSurfaceCreateInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkAndroidSurfaceCreateFlagsKHR flags;\n    struct ANativeWindow* window;\n} VkAndroidSurfaceCreateInfoKHR;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateAndroidSurfaceKHR)(VkInstance instance, const VkAndroidSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);\n\n\n#define VK_ANDROID_external_memory_android_hardware_buffer 1\n#define VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION 5\n#define VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME \"VK_ANDROID_external_memory_android_hardware_buffer\"\n\nstruct AHardwareBuffer;\n\ntypedef struct VkAndroidHardwareBufferUsageANDROID\n{\n    VkStructureType sType;\n    void* pNext;\n    uint64_t androidHardwareBufferUsage;\n} VkAndroidHardwareBufferUsageANDROID;\n\ntypedef struct VkAndroidHardwareBufferPropertiesANDROID\n{\n    VkStructureType sType;\n    void* pNext;\n    VkDeviceSize allocationSize;\n    uint32_t memoryTypeBits;\n} VkAndroidHardwareBufferPropertiesANDROID;\n\ntypedef struct VkAndroidHardwareBufferFormatPropertiesANDROID\n{\n    VkStructureType sType;\n    void* pNext;\n    VkFormat format;\n    uint64_t externalFormat;\n    VkFormatFeatureFlags formatFeatures;\n    VkComponentMapping samplerYcbcrConversionComponents;\n    VkSamplerYcbcrModelConversion suggestedYcbcrModel;\n    VkSamplerYcbcrRange suggestedYcbcrRange;\n    VkChromaLocation suggestedXChromaOffset;\n    VkChromaLocation suggestedYChromaOffset;\n} VkAndroidHardwareBufferFormatPropertiesANDROID;\n\ntypedef struct VkImportAndroidHardwareBufferInfoANDROID\n{\n    VkStructureType sType;\n    const void* pNext;\n    struct AHardwareBuffer* buffer;\n} VkImportAndroidHardwareBufferInfoANDROID;\n\ntypedef struct VkMemoryGetAndroidHardwareBufferInfoANDROID\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkDeviceMemory memory;\n} VkMemoryGetAndroidHardwareBufferInfoANDROID;\n\ntypedef struct VkExternalFormatANDROID\n{\n    VkStructureType sType;\n    void* pNext;\n    uint64_t externalFormat;\n} VkExternalFormatANDROID;\n\ntypedef struct VkAndroidHardwareBufferFormatProperties2ANDROID\n{\n    VkStructureType sType;\n    void* pNext;\n    VkFormat format;\n    uint64_t externalFormat;\n    VkFormatFeatureFlags2 formatFeatures;\n    VkComponentMapping samplerYcbcrConversionComponents;\n    VkSamplerYcbcrModelConversion suggestedYcbcrModel;\n    VkSamplerYcbcrRange suggestedYcbcrRange;\n    VkChromaLocation suggestedXChromaOffset;\n    VkChromaLocation suggestedYChromaOffset;\n} VkAndroidHardwareBufferFormatProperties2ANDROID;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkGetAndroidHardwareBufferPropertiesANDROID)(VkDevice device, const struct AHardwareBuffer* buffer, VkAndroidHardwareBufferPropertiesANDROID* pProperties);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetMemoryAndroidHardwareBufferANDROID)(VkDevice device, const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo, struct AHardwareBuffer** pBuffer);\n\n\n#define VK_ANDROID_external_format_resolve 1\n#define VK_ANDROID_EXTERNAL_FORMAT_RESOLVE_SPEC_VERSION 1\n#define VK_ANDROID_EXTERNAL_FORMAT_RESOLVE_EXTENSION_NAME \"VK_ANDROID_external_format_resolve\"\n\ntypedef struct VkPhysicalDeviceExternalFormatResolveFeaturesANDROID\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 externalFormatResolve;\n} VkPhysicalDeviceExternalFormatResolveFeaturesANDROID;\n\ntypedef struct VkPhysicalDeviceExternalFormatResolvePropertiesANDROID\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 nullColorAttachmentWithExternalFormatResolve;\n    VkChromaLocation externalFormatResolveChromaOffsetX;\n    VkChromaLocation externalFormatResolveChromaOffsetY;\n} VkPhysicalDeviceExternalFormatResolvePropertiesANDROID;\n\ntypedef struct VkAndroidHardwareBufferFormatResolvePropertiesANDROID\n{\n    VkStructureType sType;\n    void* pNext;\n    VkFormat colorAttachmentFormat;\n} VkAndroidHardwareBufferFormatResolvePropertiesANDROID;\n\n#endif /*VK_USE_PLATFORM_ANDROID_KHR*/\n\n#ifdef VK_USE_PLATFORM_WIN32_KHR\n\n#define VK_KHR_win32_surface 1\n#define VK_KHR_WIN32_SURFACE_SPEC_VERSION 6\n#define VK_KHR_WIN32_SURFACE_EXTENSION_NAME \"VK_KHR_win32_surface\"\n\ntypedef VkFlags VkWin32SurfaceCreateFlagsKHR;\ntypedef struct VkWin32SurfaceCreateInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkWin32SurfaceCreateFlagsKHR flags;\n    HINSTANCE hinstance;\n    HWND hwnd;\n} VkWin32SurfaceCreateInfoKHR;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateWin32SurfaceKHR)(VkInstance instance, const VkWin32SurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);\ntypedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex);\n\n\n#define VK_KHR_external_memory_win32 1\n#define VK_KHR_EXTERNAL_MEMORY_WIN32_SPEC_VERSION 1\n#define VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME \"VK_KHR_external_memory_win32\"\n\ntypedef struct VkImportMemoryWin32HandleInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkExternalMemoryHandleTypeFlagBits handleType;\n    HANDLE handle;\n    LPCWSTR name;\n} VkImportMemoryWin32HandleInfoKHR;\n\ntypedef struct VkExportMemoryWin32HandleInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    const SECURITY_ATTRIBUTES* pAttributes;\n    DWORD dwAccess;\n    LPCWSTR name;\n} VkExportMemoryWin32HandleInfoKHR;\n\ntypedef struct VkMemoryWin32HandlePropertiesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t memoryTypeBits;\n} VkMemoryWin32HandlePropertiesKHR;\n\ntypedef struct VkMemoryGetWin32HandleInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkDeviceMemory memory;\n    VkExternalMemoryHandleTypeFlagBits handleType;\n} VkMemoryGetWin32HandleInfoKHR;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkGetMemoryWin32HandleKHR)(VkDevice device, const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetMemoryWin32HandlePropertiesKHR)(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, HANDLE handle, VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties);\n\n\n#define VK_NV_external_memory_win32 1\n#define VK_NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION 1\n#define VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME \"VK_NV_external_memory_win32\"\n\ntypedef struct VkImportMemoryWin32HandleInfoNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkExternalMemoryHandleTypeFlagsNV handleType;\n    HANDLE handle;\n} VkImportMemoryWin32HandleInfoNV;\n\ntypedef struct VkExportMemoryWin32HandleInfoNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    const SECURITY_ATTRIBUTES* pAttributes;\n    DWORD dwAccess;\n} VkExportMemoryWin32HandleInfoNV;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkGetMemoryWin32HandleNV)(VkDevice device, VkDeviceMemory memory, VkExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle);\n\n\n#define VK_KHR_win32_keyed_mutex 1\n#define VK_KHR_WIN32_KEYED_MUTEX_SPEC_VERSION 1\n#define VK_KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME \"VK_KHR_win32_keyed_mutex\"\n\ntypedef struct VkWin32KeyedMutexAcquireReleaseInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t acquireCount;\n    const VkDeviceMemory* pAcquireSyncs;\n    const uint64_t* pAcquireKeys;\n    const uint32_t* pAcquireTimeouts;\n    uint32_t releaseCount;\n    const VkDeviceMemory* pReleaseSyncs;\n    const uint64_t* pReleaseKeys;\n} VkWin32KeyedMutexAcquireReleaseInfoKHR;\n\n\n#define VK_NV_win32_keyed_mutex 1\n#define VK_NV_WIN32_KEYED_MUTEX_SPEC_VERSION 2\n#define VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME \"VK_NV_win32_keyed_mutex\"\n\ntypedef struct VkWin32KeyedMutexAcquireReleaseInfoNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t acquireCount;\n    const VkDeviceMemory* pAcquireSyncs;\n    const uint64_t* pAcquireKeys;\n    const uint32_t* pAcquireTimeoutMilliseconds;\n    uint32_t releaseCount;\n    const VkDeviceMemory* pReleaseSyncs;\n    const uint64_t* pReleaseKeys;\n} VkWin32KeyedMutexAcquireReleaseInfoNV;\n\n\n#define VK_KHR_external_semaphore_win32 1\n#define VK_KHR_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION 1\n#define VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME \"VK_KHR_external_semaphore_win32\"\n\ntypedef struct VkImportSemaphoreWin32HandleInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkSemaphore semaphore;\n    VkSemaphoreImportFlags flags;\n    VkExternalSemaphoreHandleTypeFlagBits handleType;\n    HANDLE handle;\n    LPCWSTR name;\n} VkImportSemaphoreWin32HandleInfoKHR;\n\ntypedef struct VkExportSemaphoreWin32HandleInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    const SECURITY_ATTRIBUTES* pAttributes;\n    DWORD dwAccess;\n    LPCWSTR name;\n} VkExportSemaphoreWin32HandleInfoKHR;\n\ntypedef struct VkD3D12FenceSubmitInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t waitSemaphoreValuesCount;\n    const uint64_t* pWaitSemaphoreValues;\n    uint32_t signalSemaphoreValuesCount;\n    const uint64_t* pSignalSemaphoreValues;\n} VkD3D12FenceSubmitInfoKHR;\n\ntypedef struct VkSemaphoreGetWin32HandleInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkSemaphore semaphore;\n    VkExternalSemaphoreHandleTypeFlagBits handleType;\n} VkSemaphoreGetWin32HandleInfoKHR;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkImportSemaphoreWin32HandleKHR)(VkDevice device, const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreWin32HandleKHR)(VkDevice device, const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle);\n\n\n#define VK_KHR_external_fence_win32 1\n#define VK_KHR_EXTERNAL_FENCE_WIN32_SPEC_VERSION 1\n#define VK_KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME \"VK_KHR_external_fence_win32\"\n\ntypedef struct VkImportFenceWin32HandleInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkFence fence;\n    VkFenceImportFlags flags;\n    VkExternalFenceHandleTypeFlagBits handleType;\n    HANDLE handle;\n    LPCWSTR name;\n} VkImportFenceWin32HandleInfoKHR;\n\ntypedef struct VkExportFenceWin32HandleInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    const SECURITY_ATTRIBUTES* pAttributes;\n    DWORD dwAccess;\n    LPCWSTR name;\n} VkExportFenceWin32HandleInfoKHR;\n\ntypedef struct VkFenceGetWin32HandleInfoKHR\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkFence fence;\n    VkExternalFenceHandleTypeFlagBits handleType;\n} VkFenceGetWin32HandleInfoKHR;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkImportFenceWin32HandleKHR)(VkDevice device, const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetFenceWin32HandleKHR)(VkDevice device, const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle);\n\n\n#define VK_EXT_full_screen_exclusive 1\n#define VK_EXT_FULL_SCREEN_EXCLUSIVE_SPEC_VERSION 4\n#define VK_EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME \"VK_EXT_full_screen_exclusive\"\n\ntypedef enum\n{\n    VK_FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT = 0,\n    VK_FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT = 1,\n    VK_FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT = 2,\n    VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT = 3,\n    VK_FULL_SCREEN_EXCLUSIVE_MAX_ENUM_EXT = 0x7FFFFFFF\n} VkFullScreenExclusiveEXT;\n\n\ntypedef struct VkSurfaceFullScreenExclusiveInfoEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkFullScreenExclusiveEXT fullScreenExclusive;\n} VkSurfaceFullScreenExclusiveInfoEXT;\n\ntypedef struct VkSurfaceCapabilitiesFullScreenExclusiveEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 fullScreenExclusiveSupported;\n} VkSurfaceCapabilitiesFullScreenExclusiveEXT;\n\ntypedef struct VkSurfaceFullScreenExclusiveWin32InfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    HMONITOR hmonitor;\n} VkSurfaceFullScreenExclusiveWin32InfoEXT;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pPresentModeCount, VkPresentModeKHR* pPresentModes);\ntypedef VkResult (VKAPI_PTR *PFN_vkAcquireFullScreenExclusiveModeEXT)(VkDevice device, VkSwapchainKHR swapchain);\ntypedef VkResult (VKAPI_PTR *PFN_vkReleaseFullScreenExclusiveModeEXT)(VkDevice device, VkSwapchainKHR swapchain);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetDeviceGroupSurfacePresentModes2EXT)(VkDevice device, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkDeviceGroupPresentModeFlagsKHR* pModes);\n\n\n#define VK_NV_acquire_winrt_display 1\n#define VK_NV_ACQUIRE_WINRT_DISPLAY_SPEC_VERSION 1\n#define VK_NV_ACQUIRE_WINRT_DISPLAY_EXTENSION_NAME \"VK_NV_acquire_winrt_display\"\n\ntypedef VkResult (VKAPI_PTR *PFN_vkAcquireWinrtDisplayNV)(VkPhysicalDevice physicalDevice, VkDisplayKHR display);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetWinrtDisplayNV)(VkPhysicalDevice physicalDevice, uint32_t deviceRelativeId, VkDisplayKHR* pDisplay);\n\n#endif /*VK_USE_PLATFORM_WIN32_KHR*/\n\n#ifdef VK_USE_PLATFORM_VI_NN\n\n#define VK_NN_vi_surface 1\n#define VK_NN_VI_SURFACE_SPEC_VERSION 1\n#define VK_NN_VI_SURFACE_EXTENSION_NAME \"VK_NN_vi_surface\"\n\ntypedef VkFlags VkViSurfaceCreateFlagsNN;\ntypedef struct VkViSurfaceCreateInfoNN\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkViSurfaceCreateFlagsNN flags;\n    void* window;\n} VkViSurfaceCreateInfoNN;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateViSurfaceNN)(VkInstance instance, const VkViSurfaceCreateInfoNN* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);\n\n#endif /*VK_USE_PLATFORM_VI_NN*/\n\n#ifdef VK_USE_PLATFORM_IOS_MVK\n\n#define VK_MVK_ios_surface 1\n#define VK_MVK_IOS_SURFACE_SPEC_VERSION 3\n#define VK_MVK_IOS_SURFACE_EXTENSION_NAME \"VK_MVK_ios_surface\"\n\ntypedef VkFlags VkIOSSurfaceCreateFlagsMVK;\ntypedef struct VkIOSSurfaceCreateInfoMVK\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkIOSSurfaceCreateFlagsMVK flags;\n    const void* pView;\n} VkIOSSurfaceCreateInfoMVK;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateIOSSurfaceMVK)(VkInstance instance, const VkIOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);\n\n#endif /*VK_USE_PLATFORM_IOS_MVK*/\n\n#ifdef VK_USE_PLATFORM_MACOS_MVK\n\n#define VK_MVK_macos_surface 1\n#define VK_MVK_MACOS_SURFACE_SPEC_VERSION 3\n#define VK_MVK_MACOS_SURFACE_EXTENSION_NAME \"VK_MVK_macos_surface\"\n\ntypedef VkFlags VkMacOSSurfaceCreateFlagsMVK;\ntypedef struct VkMacOSSurfaceCreateInfoMVK\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkMacOSSurfaceCreateFlagsMVK flags;\n    const void* pView;\n} VkMacOSSurfaceCreateInfoMVK;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateMacOSSurfaceMVK)(VkInstance instance, const VkMacOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);\n\n#endif /*VK_USE_PLATFORM_MACOS_MVK*/\n\n#ifdef VK_USE_PLATFORM_METAL_EXT\n\n#define VK_EXT_metal_surface 1\n#define VK_EXT_METAL_SURFACE_SPEC_VERSION 1\n#define VK_EXT_METAL_SURFACE_EXTENSION_NAME \"VK_EXT_metal_surface\"\n\n#ifdef __OBJC__\n@class CAMetalLayer;\n#else\ntypedef void CAMetalLayer;\n#endif\n\ntypedef VkFlags VkMetalSurfaceCreateFlagsEXT;\ntypedef struct VkMetalSurfaceCreateInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkMetalSurfaceCreateFlagsEXT flags;\n    const CAMetalLayer* pLayer;\n} VkMetalSurfaceCreateInfoEXT;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateMetalSurfaceEXT)(VkInstance instance, const VkMetalSurfaceCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);\n\n\n#define VK_EXT_metal_objects 1\n#define VK_EXT_METAL_OBJECTS_SPEC_VERSION 2\n#define VK_EXT_METAL_OBJECTS_EXTENSION_NAME \"VK_EXT_metal_objects\"\n\n#ifdef __OBJC__\n@protocol MTLDevice;\ntypedef __unsafe_unretained id<MTLDevice> MTLDevice_id;\n#else\ntypedef void* MTLDevice_id;\n#endif\n#ifdef __OBJC__\n@protocol MTLCommandQueue;\ntypedef __unsafe_unretained id<MTLCommandQueue> MTLCommandQueue_id;\n#else\ntypedef void* MTLCommandQueue_id;\n#endif\n#ifdef __OBJC__\n@protocol MTLBuffer;\ntypedef __unsafe_unretained id<MTLBuffer> MTLBuffer_id;\n#else\ntypedef void* MTLBuffer_id;\n#endif\n#ifdef __OBJC__\n@protocol MTLTexture;\ntypedef __unsafe_unretained id<MTLTexture> MTLTexture_id;\n#else\ntypedef void* MTLTexture_id;\n#endif\ntypedef struct __IOSurface* IOSurfaceRef;\n#ifdef __OBJC__\n@protocol MTLSharedEvent;\ntypedef __unsafe_unretained id<MTLSharedEvent> MTLSharedEvent_id;\n#else\ntypedef void* MTLSharedEvent_id;\n#endif\n\n\ntypedef enum\n{\n    VK_EXPORT_METAL_OBJECT_TYPE_METAL_DEVICE_BIT_EXT = 0x00000001,\n    VK_EXPORT_METAL_OBJECT_TYPE_METAL_COMMAND_QUEUE_BIT_EXT = 0x00000002,\n    VK_EXPORT_METAL_OBJECT_TYPE_METAL_BUFFER_BIT_EXT = 0x00000004,\n    VK_EXPORT_METAL_OBJECT_TYPE_METAL_TEXTURE_BIT_EXT = 0x00000008,\n    VK_EXPORT_METAL_OBJECT_TYPE_METAL_IOSURFACE_BIT_EXT = 0x00000010,\n    VK_EXPORT_METAL_OBJECT_TYPE_METAL_SHARED_EVENT_BIT_EXT = 0x00000020,\n    VK_EXPORT_METAL_OBJECT_TYPE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF\n} VkExportMetalObjectTypeFlagBitsEXT;\ntypedef VkFlags VkExportMetalObjectTypeFlagsEXT;\n\ntypedef struct VkExportMetalObjectCreateInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkExportMetalObjectTypeFlagBitsEXT exportObjectType;\n} VkExportMetalObjectCreateInfoEXT;\n\ntypedef struct VkExportMetalObjectsInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n} VkExportMetalObjectsInfoEXT;\n\ntypedef struct VkExportMetalDeviceInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    MTLDevice_id mtlDevice;\n} VkExportMetalDeviceInfoEXT;\n\ntypedef struct VkExportMetalCommandQueueInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkQueue queue;\n    MTLCommandQueue_id mtlCommandQueue;\n} VkExportMetalCommandQueueInfoEXT;\n\ntypedef struct VkExportMetalBufferInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkDeviceMemory memory;\n    MTLBuffer_id mtlBuffer;\n} VkExportMetalBufferInfoEXT;\n\ntypedef struct VkImportMetalBufferInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    MTLBuffer_id mtlBuffer;\n} VkImportMetalBufferInfoEXT;\n\ntypedef struct VkExportMetalTextureInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkImage image;\n    VkImageView imageView;\n    VkBufferView bufferView;\n    VkImageAspectFlagBits plane;\n    MTLTexture_id mtlTexture;\n} VkExportMetalTextureInfoEXT;\n\ntypedef struct VkImportMetalTextureInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkImageAspectFlagBits plane;\n    MTLTexture_id mtlTexture;\n} VkImportMetalTextureInfoEXT;\n\ntypedef struct VkExportMetalIOSurfaceInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkImage image;\n    IOSurfaceRef ioSurface;\n} VkExportMetalIOSurfaceInfoEXT;\n\ntypedef struct VkImportMetalIOSurfaceInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    IOSurfaceRef ioSurface;\n} VkImportMetalIOSurfaceInfoEXT;\n\ntypedef struct VkExportMetalSharedEventInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkSemaphore semaphore;\n    VkEvent event;\n    MTLSharedEvent_id mtlSharedEvent;\n} VkExportMetalSharedEventInfoEXT;\n\ntypedef struct VkImportMetalSharedEventInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    MTLSharedEvent_id mtlSharedEvent;\n} VkImportMetalSharedEventInfoEXT;\n\n\ntypedef void (VKAPI_PTR *PFN_vkExportMetalObjectsEXT)(VkDevice device, VkExportMetalObjectsInfoEXT* pMetalObjectsInfo);\n\n\n#define VK_EXT_external_memory_metal 1\n#define VK_EXT_EXTERNAL_MEMORY_METAL_SPEC_VERSION 1\n#define VK_EXT_EXTERNAL_MEMORY_METAL_EXTENSION_NAME \"VK_EXT_external_memory_metal\"\n\ntypedef struct VkImportMemoryMetalHandleInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkExternalMemoryHandleTypeFlagBits handleType;\n    void* handle;\n} VkImportMemoryMetalHandleInfoEXT;\n\ntypedef struct VkMemoryMetalHandlePropertiesEXT\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t memoryTypeBits;\n} VkMemoryMetalHandlePropertiesEXT;\n\ntypedef struct VkMemoryGetMetalHandleInfoEXT\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkDeviceMemory memory;\n    VkExternalMemoryHandleTypeFlagBits handleType;\n} VkMemoryGetMetalHandleInfoEXT;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkGetMemoryMetalHandleEXT)(VkDevice device, const VkMemoryGetMetalHandleInfoEXT* pGetMetalHandleInfo, void** pHandle);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetMemoryMetalHandlePropertiesEXT)(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, const void* pHandle, VkMemoryMetalHandlePropertiesEXT* pMemoryMetalHandleProperties);\n\n#endif /*VK_USE_PLATFORM_METAL_EXT*/\n\n#ifdef VK_USE_PLATFORM_FUCHSIA\n#include <zircon/types.h>\n\n#define VK_FUCHSIA_imagepipe_surface 1\n#define VK_FUCHSIA_IMAGEPIPE_SURFACE_SPEC_VERSION 1\n#define VK_FUCHSIA_IMAGEPIPE_SURFACE_EXTENSION_NAME \"VK_FUCHSIA_imagepipe_surface\"\n\ntypedef VkFlags VkImagePipeSurfaceCreateFlagsFUCHSIA;\ntypedef struct VkImagePipeSurfaceCreateInfoFUCHSIA\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkImagePipeSurfaceCreateFlagsFUCHSIA flags;\n    zx_handle_t imagePipeHandle;\n} VkImagePipeSurfaceCreateInfoFUCHSIA;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateImagePipeSurfaceFUCHSIA)(VkInstance instance, const VkImagePipeSurfaceCreateInfoFUCHSIA* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);\n\n\n#define VK_FUCHSIA_external_memory 1\n#define VK_FUCHSIA_EXTERNAL_MEMORY_SPEC_VERSION 1\n#define VK_FUCHSIA_EXTERNAL_MEMORY_EXTENSION_NAME \"VK_FUCHSIA_external_memory\"\n\ntypedef struct VkImportMemoryZirconHandleInfoFUCHSIA\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkExternalMemoryHandleTypeFlagBits handleType;\n    zx_handle_t handle;\n} VkImportMemoryZirconHandleInfoFUCHSIA;\n\ntypedef struct VkMemoryZirconHandlePropertiesFUCHSIA\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t memoryTypeBits;\n} VkMemoryZirconHandlePropertiesFUCHSIA;\n\ntypedef struct VkMemoryGetZirconHandleInfoFUCHSIA\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkDeviceMemory memory;\n    VkExternalMemoryHandleTypeFlagBits handleType;\n} VkMemoryGetZirconHandleInfoFUCHSIA;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkGetMemoryZirconHandleFUCHSIA)(VkDevice device, const VkMemoryGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo, zx_handle_t* pZirconHandle);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetMemoryZirconHandlePropertiesFUCHSIA)(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, zx_handle_t zirconHandle, VkMemoryZirconHandlePropertiesFUCHSIA* pMemoryZirconHandleProperties);\n\n\n#define VK_FUCHSIA_external_semaphore 1\n#define VK_FUCHSIA_EXTERNAL_SEMAPHORE_SPEC_VERSION 1\n#define VK_FUCHSIA_EXTERNAL_SEMAPHORE_EXTENSION_NAME \"VK_FUCHSIA_external_semaphore\"\n\ntypedef struct VkImportSemaphoreZirconHandleInfoFUCHSIA\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkSemaphore semaphore;\n    VkSemaphoreImportFlags flags;\n    VkExternalSemaphoreHandleTypeFlagBits handleType;\n    zx_handle_t zirconHandle;\n} VkImportSemaphoreZirconHandleInfoFUCHSIA;\n\ntypedef struct VkSemaphoreGetZirconHandleInfoFUCHSIA\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkSemaphore semaphore;\n    VkExternalSemaphoreHandleTypeFlagBits handleType;\n} VkSemaphoreGetZirconHandleInfoFUCHSIA;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkImportSemaphoreZirconHandleFUCHSIA)(VkDevice device, const VkImportSemaphoreZirconHandleInfoFUCHSIA* pImportSemaphoreZirconHandleInfo);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreZirconHandleFUCHSIA)(VkDevice device, const VkSemaphoreGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo, zx_handle_t* pZirconHandle);\n\n\n#define VK_FUCHSIA_buffer_collection 1\n#define VK_FUCHSIA_BUFFER_COLLECTION_SPEC_VERSION 2\n#define VK_FUCHSIA_BUFFER_COLLECTION_EXTENSION_NAME \"VK_FUCHSIA_buffer_collection\"\n\nVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBufferCollectionFUCHSIA)\n\ntypedef VkFlags VkImageFormatConstraintsFlagsFUCHSIA;\n\ntypedef enum\n{\n    VK_IMAGE_CONSTRAINTS_INFO_CPU_READ_RARELY_FUCHSIA = 0x00000001,\n    VK_IMAGE_CONSTRAINTS_INFO_CPU_READ_OFTEN_FUCHSIA = 0x00000002,\n    VK_IMAGE_CONSTRAINTS_INFO_CPU_WRITE_RARELY_FUCHSIA = 0x00000004,\n    VK_IMAGE_CONSTRAINTS_INFO_CPU_WRITE_OFTEN_FUCHSIA = 0x00000008,\n    VK_IMAGE_CONSTRAINTS_INFO_PROTECTED_OPTIONAL_FUCHSIA = 0x00000010,\n    VK_IMAGE_CONSTRAINTS_INFO_FLAG_BITS_MAX_ENUM_FUCHSIA = 0x7FFFFFFF\n} VkImageConstraintsInfoFlagBitsFUCHSIA;\ntypedef VkFlags VkImageConstraintsInfoFlagsFUCHSIA;\n\ntypedef struct VkBufferCollectionCreateInfoFUCHSIA\n{\n    VkStructureType sType;\n    const void* pNext;\n    zx_handle_t collectionToken;\n} VkBufferCollectionCreateInfoFUCHSIA;\n\ntypedef struct VkImportMemoryBufferCollectionFUCHSIA\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkBufferCollectionFUCHSIA collection;\n    uint32_t index;\n} VkImportMemoryBufferCollectionFUCHSIA;\n\ntypedef struct VkBufferCollectionImageCreateInfoFUCHSIA\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkBufferCollectionFUCHSIA collection;\n    uint32_t index;\n} VkBufferCollectionImageCreateInfoFUCHSIA;\n\ntypedef struct VkBufferCollectionConstraintsInfoFUCHSIA\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t minBufferCount;\n    uint32_t maxBufferCount;\n    uint32_t minBufferCountForCamping;\n    uint32_t minBufferCountForDedicatedSlack;\n    uint32_t minBufferCountForSharedSlack;\n} VkBufferCollectionConstraintsInfoFUCHSIA;\n\ntypedef struct VkBufferConstraintsInfoFUCHSIA\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkBufferCreateInfo createInfo;\n    VkFormatFeatureFlags requiredFormatFeatures;\n    VkBufferCollectionConstraintsInfoFUCHSIA bufferCollectionConstraints;\n} VkBufferConstraintsInfoFUCHSIA;\n\ntypedef struct VkBufferCollectionBufferCreateInfoFUCHSIA\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkBufferCollectionFUCHSIA collection;\n    uint32_t index;\n} VkBufferCollectionBufferCreateInfoFUCHSIA;\n\ntypedef struct VkSysmemColorSpaceFUCHSIA\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t colorSpace;\n} VkSysmemColorSpaceFUCHSIA;\n\ntypedef struct VkBufferCollectionPropertiesFUCHSIA\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t memoryTypeBits;\n    uint32_t bufferCount;\n    uint32_t createInfoIndex;\n    uint64_t sysmemPixelFormat;\n    VkFormatFeatureFlags formatFeatures;\n    VkSysmemColorSpaceFUCHSIA sysmemColorSpaceIndex;\n    VkComponentMapping samplerYcbcrConversionComponents;\n    VkSamplerYcbcrModelConversion suggestedYcbcrModel;\n    VkSamplerYcbcrRange suggestedYcbcrRange;\n    VkChromaLocation suggestedXChromaOffset;\n    VkChromaLocation suggestedYChromaOffset;\n} VkBufferCollectionPropertiesFUCHSIA;\n\ntypedef struct VkImageFormatConstraintsInfoFUCHSIA\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkImageCreateInfo imageCreateInfo;\n    VkFormatFeatureFlags requiredFormatFeatures;\n    VkImageFormatConstraintsFlagsFUCHSIA flags;\n    uint64_t sysmemPixelFormat;\n    uint32_t colorSpaceCount;\n    const VkSysmemColorSpaceFUCHSIA* pColorSpaces;\n} VkImageFormatConstraintsInfoFUCHSIA;\n\ntypedef struct VkImageConstraintsInfoFUCHSIA\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t formatConstraintsCount;\n    const VkImageFormatConstraintsInfoFUCHSIA* pFormatConstraints;\n    VkBufferCollectionConstraintsInfoFUCHSIA bufferCollectionConstraints;\n    VkImageConstraintsInfoFlagsFUCHSIA flags;\n} VkImageConstraintsInfoFUCHSIA;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateBufferCollectionFUCHSIA)(VkDevice device, const VkBufferCollectionCreateInfoFUCHSIA* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferCollectionFUCHSIA* pCollection);\ntypedef VkResult (VKAPI_PTR *PFN_vkSetBufferCollectionImageConstraintsFUCHSIA)(VkDevice device, VkBufferCollectionFUCHSIA collection, const VkImageConstraintsInfoFUCHSIA* pImageConstraintsInfo);\ntypedef VkResult (VKAPI_PTR *PFN_vkSetBufferCollectionBufferConstraintsFUCHSIA)(VkDevice device, VkBufferCollectionFUCHSIA collection, const VkBufferConstraintsInfoFUCHSIA* pBufferConstraintsInfo);\ntypedef void (VKAPI_PTR *PFN_vkDestroyBufferCollectionFUCHSIA)(VkDevice device, VkBufferCollectionFUCHSIA collection, const VkAllocationCallbacks* pAllocator);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetBufferCollectionPropertiesFUCHSIA)(VkDevice device, VkBufferCollectionFUCHSIA collection, VkBufferCollectionPropertiesFUCHSIA* pProperties);\n\n#endif /*VK_USE_PLATFORM_FUCHSIA*/\n\n#ifdef VK_USE_PLATFORM_GGP\n#include <ggp_c/vulkan_types.h>\n\n#define VK_GGP_stream_descriptor_surface 1\n#define VK_GGP_STREAM_DESCRIPTOR_SURFACE_SPEC_VERSION 1\n#define VK_GGP_STREAM_DESCRIPTOR_SURFACE_EXTENSION_NAME \"VK_GGP_stream_descriptor_surface\"\n\ntypedef VkFlags VkStreamDescriptorSurfaceCreateFlagsGGP;\ntypedef struct VkStreamDescriptorSurfaceCreateInfoGGP\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkStreamDescriptorSurfaceCreateFlagsGGP flags;\n    GgpStreamDescriptor streamDescriptor;\n} VkStreamDescriptorSurfaceCreateInfoGGP;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateStreamDescriptorSurfaceGGP)(VkInstance instance, const VkStreamDescriptorSurfaceCreateInfoGGP* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);\n\n\n#define VK_GGP_frame_token 1\n#define VK_GGP_FRAME_TOKEN_SPEC_VERSION 1\n#define VK_GGP_FRAME_TOKEN_EXTENSION_NAME \"VK_GGP_frame_token\"\n\ntypedef struct VkPresentFrameTokenGGP\n{\n    VkStructureType sType;\n    const void* pNext;\n    GgpFrameToken frameToken;\n} VkPresentFrameTokenGGP;\n\n#endif /*VK_USE_PLATFORM_GGP*/\n\n#ifdef VK_USE_PLATFORM_SCI\n#include <nvscibuf.h>\n#include <nvscisync.h>\n\n#define VK_NV_external_memory_sci_buf 1\n#define VK_NV_EXTERNAL_MEMORY_SCI_BUF_SPEC_VERSION 2\n#define VK_NV_EXTERNAL_MEMORY_SCI_BUF_EXTENSION_NAME \"VK_NV_external_memory_sci_buf\"\n\ntypedef struct VkExportMemorySciBufInfoNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    NvSciBufAttrList pAttributes;\n} VkExportMemorySciBufInfoNV;\n\ntypedef struct VkImportMemorySciBufInfoNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkExternalMemoryHandleTypeFlagBits handleType;\n    NvSciBufObj handle;\n} VkImportMemorySciBufInfoNV;\n\ntypedef struct VkMemoryGetSciBufInfoNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkDeviceMemory memory;\n    VkExternalMemoryHandleTypeFlagBits handleType;\n} VkMemoryGetSciBufInfoNV;\n\ntypedef struct VkMemorySciBufPropertiesNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t memoryTypeBits;\n} VkMemorySciBufPropertiesNV;\n\ntypedef struct VkPhysicalDeviceExternalMemorySciBufFeaturesNV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 sciBufImport;\n    VkBool32 sciBufExport;\n} VkPhysicalDeviceExternalMemorySciBufFeaturesNV;\n\ntypedef VkPhysicalDeviceExternalMemorySciBufFeaturesNV VkPhysicalDeviceExternalSciBufFeaturesNV;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkGetMemorySciBufNV)(VkDevice device, const VkMemoryGetSciBufInfoNV* pGetSciBufInfo, NvSciBufObj* pHandle);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalMemorySciBufPropertiesNV)(VkPhysicalDevice physicalDevice, VkExternalMemoryHandleTypeFlagBits handleType, NvSciBufObj handle, VkMemorySciBufPropertiesNV* pMemorySciBufProperties);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSciBufAttributesNV)(VkPhysicalDevice physicalDevice, NvSciBufAttrList pAttributes);\n\n\n#define VK_NV_external_sci_sync2 1\n#define VK_NV_EXTERNAL_SCI_SYNC_2_SPEC_VERSION 1\n#define VK_NV_EXTERNAL_SCI_SYNC_2_EXTENSION_NAME \"VK_NV_external_sci_sync2\"\n\nVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSemaphoreSciSyncPoolNV)\n\ntypedef enum\n{\n    VK_SCI_SYNC_CLIENT_TYPE_SIGNALER_NV = 0,\n    VK_SCI_SYNC_CLIENT_TYPE_WAITER_NV = 1,\n    VK_SCI_SYNC_CLIENT_TYPE_SIGNALER_WAITER_NV = 2,\n    VK_SCI_SYNC_CLIENT_TYPE_MAX_ENUM_NV = 0x7FFFFFFF\n} VkSciSyncClientTypeNV;\n\ntypedef enum\n{\n    VK_SCI_SYNC_PRIMITIVE_TYPE_FENCE_NV = 0,\n    VK_SCI_SYNC_PRIMITIVE_TYPE_SEMAPHORE_NV = 1,\n    VK_SCI_SYNC_PRIMITIVE_TYPE_MAX_ENUM_NV = 0x7FFFFFFF\n} VkSciSyncPrimitiveTypeNV;\n\n\ntypedef struct VkPhysicalDeviceExternalSciSync2FeaturesNV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 sciSyncFence;\n    VkBool32 sciSyncSemaphore2;\n    VkBool32 sciSyncImport;\n    VkBool32 sciSyncExport;\n} VkPhysicalDeviceExternalSciSync2FeaturesNV;\n\ntypedef struct VkSemaphoreSciSyncPoolCreateInfoNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    NvSciSyncObj handle;\n} VkSemaphoreSciSyncPoolCreateInfoNV;\n\ntypedef struct VkSemaphoreSciSyncCreateInfoNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkSemaphoreSciSyncPoolNV semaphorePool;\n    const NvSciSyncFence* pFence;\n} VkSemaphoreSciSyncCreateInfoNV;\n\ntypedef struct VkExportFenceSciSyncInfoNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    NvSciSyncAttrList pAttributes;\n} VkExportFenceSciSyncInfoNV;\n\ntypedef struct VkImportFenceSciSyncInfoNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkFence fence;\n    VkExternalFenceHandleTypeFlagBits handleType;\n    void* handle;\n} VkImportFenceSciSyncInfoNV;\n\ntypedef struct VkFenceGetSciSyncInfoNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkFence fence;\n    VkExternalFenceHandleTypeFlagBits handleType;\n} VkFenceGetSciSyncInfoNV;\n\ntypedef struct VkSciSyncAttributesInfoNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkSciSyncClientTypeNV clientType;\n    VkSciSyncPrimitiveTypeNV primitiveType;\n} VkSciSyncAttributesInfoNV;\n\ntypedef struct VkDeviceSemaphoreSciSyncPoolReservationCreateInfoNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    uint32_t semaphoreSciSyncPoolRequestCount;\n} VkDeviceSemaphoreSciSyncPoolReservationCreateInfoNV;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateSemaphoreSciSyncPoolNV)(VkDevice device, const VkSemaphoreSciSyncPoolCreateInfoNV* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphoreSciSyncPoolNV* pSemaphorePool);\ntypedef void (VKAPI_PTR *PFN_vkDestroySemaphoreSciSyncPoolNV)(VkDevice device, VkSemaphoreSciSyncPoolNV semaphorePool, const VkAllocationCallbacks* pAllocator);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetFenceSciSyncFenceNV)(VkDevice device, const VkFenceGetSciSyncInfoNV* pGetSciSyncHandleInfo, void* pHandle);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetFenceSciSyncObjNV)(VkDevice device, const VkFenceGetSciSyncInfoNV* pGetSciSyncHandleInfo, void* pHandle);\ntypedef VkResult (VKAPI_PTR *PFN_vkImportFenceSciSyncFenceNV)(VkDevice device, const VkImportFenceSciSyncInfoNV* pImportFenceSciSyncInfo);\ntypedef VkResult (VKAPI_PTR *PFN_vkImportFenceSciSyncObjNV)(VkDevice device, const VkImportFenceSciSyncInfoNV* pImportFenceSciSyncInfo);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSciSyncAttributesNV)(VkPhysicalDevice physicalDevice, const VkSciSyncAttributesInfoNV* pSciSyncAttributesInfo, NvSciSyncAttrList pAttributes);\n\n\n#define VK_NV_external_sci_sync 1\n#define VK_NV_EXTERNAL_SCI_SYNC_SPEC_VERSION 2\n#define VK_NV_EXTERNAL_SCI_SYNC_EXTENSION_NAME \"VK_NV_external_sci_sync\"\n\ntypedef struct VkExportSemaphoreSciSyncInfoNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    NvSciSyncAttrList pAttributes;\n} VkExportSemaphoreSciSyncInfoNV;\n\ntypedef struct VkImportSemaphoreSciSyncInfoNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkSemaphore semaphore;\n    VkExternalSemaphoreHandleTypeFlagBits handleType;\n    void* handle;\n} VkImportSemaphoreSciSyncInfoNV;\n\ntypedef struct VkSemaphoreGetSciSyncInfoNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkSemaphore semaphore;\n    VkExternalSemaphoreHandleTypeFlagBits handleType;\n} VkSemaphoreGetSciSyncInfoNV;\n\ntypedef struct VkPhysicalDeviceExternalSciSyncFeaturesNV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 sciSyncFence;\n    VkBool32 sciSyncSemaphore;\n    VkBool32 sciSyncImport;\n    VkBool32 sciSyncExport;\n} VkPhysicalDeviceExternalSciSyncFeaturesNV;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreSciSyncObjNV)(VkDevice device, const VkSemaphoreGetSciSyncInfoNV* pGetSciSyncInfo, void* pHandle);\ntypedef VkResult (VKAPI_PTR *PFN_vkImportSemaphoreSciSyncObjNV)(VkDevice device, const VkImportSemaphoreSciSyncInfoNV* pImportSemaphoreSciSyncInfo);\n\n#endif /*VK_USE_PLATFORM_SCI*/\n\n#ifdef VK_ENABLE_BETA_EXTENSIONS\n\n#define VK_AMDX_shader_enqueue 1\n#define VK_AMDX_SHADER_ENQUEUE_SPEC_VERSION 2\n#define VK_AMDX_SHADER_ENQUEUE_EXTENSION_NAME \"VK_AMDX_shader_enqueue\"\n\n#define VK_SHADER_INDEX_UNUSED_AMDX (~0U)\n\ntypedef struct VkPhysicalDeviceShaderEnqueueFeaturesAMDX\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 shaderEnqueue;\n    VkBool32 shaderMeshEnqueue;\n} VkPhysicalDeviceShaderEnqueueFeaturesAMDX;\n\ntypedef struct VkPhysicalDeviceShaderEnqueuePropertiesAMDX\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t maxExecutionGraphDepth;\n    uint32_t maxExecutionGraphShaderOutputNodes;\n    uint32_t maxExecutionGraphShaderPayloadSize;\n    uint32_t maxExecutionGraphShaderPayloadCount;\n    uint32_t executionGraphDispatchAddressAlignment;\n    uint32_t maxExecutionGraphWorkgroupCount[3];\n    uint32_t maxExecutionGraphWorkgroups;\n} VkPhysicalDeviceShaderEnqueuePropertiesAMDX;\n\ntypedef struct VkExecutionGraphPipelineScratchSizeAMDX\n{\n    VkStructureType sType;\n    void* pNext;\n    VkDeviceSize minSize;\n    VkDeviceSize maxSize;\n    VkDeviceSize sizeGranularity;\n} VkExecutionGraphPipelineScratchSizeAMDX;\n\ntypedef struct VkExecutionGraphPipelineCreateInfoAMDX\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkPipelineCreateFlags flags;\n    uint32_t stageCount;\n    const VkPipelineShaderStageCreateInfo* pStages;\n    const VkPipelineLibraryCreateInfoKHR* pLibraryInfo;\n    VkPipelineLayout layout;\n    VkPipeline basePipelineHandle;\n    int32_t basePipelineIndex;\n} VkExecutionGraphPipelineCreateInfoAMDX;\n\ntypedef union VkDeviceOrHostAddressConstAMDX\n{\n    VkDeviceAddress deviceAddress;\n    const void* hostAddress;\n} VkDeviceOrHostAddressConstAMDX;\n\ntypedef struct VkDispatchGraphInfoAMDX\n{\n    uint32_t nodeIndex;\n    uint32_t payloadCount;\n    VkDeviceOrHostAddressConstAMDX payloads;\n    uint64_t payloadStride;\n} VkDispatchGraphInfoAMDX;\n\ntypedef struct VkDispatchGraphCountInfoAMDX\n{\n    uint32_t count;\n    VkDeviceOrHostAddressConstAMDX infos;\n    uint64_t stride;\n} VkDispatchGraphCountInfoAMDX;\n\ntypedef struct VkPipelineShaderStageNodeCreateInfoAMDX\n{\n    VkStructureType sType;\n    const void* pNext;\n    const char* pName;\n    uint32_t index;\n} VkPipelineShaderStageNodeCreateInfoAMDX;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateExecutionGraphPipelinesAMDX)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkExecutionGraphPipelineCreateInfoAMDX* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetExecutionGraphPipelineScratchSizeAMDX)(VkDevice device, VkPipeline executionGraph, VkExecutionGraphPipelineScratchSizeAMDX* pSizeInfo);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetExecutionGraphPipelineNodeIndexAMDX)(VkDevice device, VkPipeline executionGraph, const VkPipelineShaderStageNodeCreateInfoAMDX* pNodeInfo, uint32_t* pNodeIndex);\ntypedef void (VKAPI_PTR *PFN_vkCmdInitializeGraphScratchMemoryAMDX)(VkCommandBuffer commandBuffer, VkPipeline executionGraph, VkDeviceAddress scratch, VkDeviceSize scratchSize);\ntypedef void (VKAPI_PTR *PFN_vkCmdDispatchGraphAMDX)(VkCommandBuffer commandBuffer, VkDeviceAddress scratch, VkDeviceSize scratchSize, const VkDispatchGraphCountInfoAMDX* pCountInfo);\ntypedef void (VKAPI_PTR *PFN_vkCmdDispatchGraphIndirectAMDX)(VkCommandBuffer commandBuffer, VkDeviceAddress scratch, VkDeviceSize scratchSize, const VkDispatchGraphCountInfoAMDX* pCountInfo);\ntypedef void (VKAPI_PTR *PFN_vkCmdDispatchGraphIndirectCountAMDX)(VkCommandBuffer commandBuffer, VkDeviceAddress scratch, VkDeviceSize scratchSize, VkDeviceAddress countInfo);\n\n\n#define VK_KHR_portability_subset 1\n#define VK_KHR_PORTABILITY_SUBSET_SPEC_VERSION 1\n#define VK_KHR_PORTABILITY_SUBSET_EXTENSION_NAME \"VK_KHR_portability_subset\"\n\ntypedef struct VkPhysicalDevicePortabilitySubsetFeaturesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 constantAlphaColorBlendFactors;\n    VkBool32 events;\n    VkBool32 imageViewFormatReinterpretation;\n    VkBool32 imageViewFormatSwizzle;\n    VkBool32 imageView2DOn3DImage;\n    VkBool32 multisampleArrayImage;\n    VkBool32 mutableComparisonSamplers;\n    VkBool32 pointPolygons;\n    VkBool32 samplerMipLodBias;\n    VkBool32 separateStencilMaskRef;\n    VkBool32 shaderSampleRateInterpolationFunctions;\n    VkBool32 tessellationIsolines;\n    VkBool32 tessellationPointMode;\n    VkBool32 triangleFans;\n    VkBool32 vertexAttributeAccessBeyondStride;\n} VkPhysicalDevicePortabilitySubsetFeaturesKHR;\n\ntypedef struct VkPhysicalDevicePortabilitySubsetPropertiesKHR\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t minVertexInputBindingStrideAlignment;\n} VkPhysicalDevicePortabilitySubsetPropertiesKHR;\n\n\n#define VK_NV_cuda_kernel_launch 1\n#define VK_NV_CUDA_KERNEL_LAUNCH_SPEC_VERSION 2\n#define VK_NV_CUDA_KERNEL_LAUNCH_EXTENSION_NAME \"VK_NV_cuda_kernel_launch\"\n\nVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkCudaModuleNV)\nVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkCudaFunctionNV)\n\ntypedef struct VkCudaModuleCreateInfoNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    size_t dataSize;\n    const void* pData;\n} VkCudaModuleCreateInfoNV;\n\ntypedef struct VkCudaFunctionCreateInfoNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkCudaModuleNV module;\n    const char* pName;\n} VkCudaFunctionCreateInfoNV;\n\ntypedef struct VkCudaLaunchInfoNV\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkCudaFunctionNV function;\n    uint32_t gridDimX;\n    uint32_t gridDimY;\n    uint32_t gridDimZ;\n    uint32_t blockDimX;\n    uint32_t blockDimY;\n    uint32_t blockDimZ;\n    uint32_t sharedMemBytes;\n    size_t paramCount;\n    const void* const * pParams;\n    size_t extraCount;\n    const void* const * pExtras;\n} VkCudaLaunchInfoNV;\n\ntypedef struct VkPhysicalDeviceCudaKernelLaunchFeaturesNV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 cudaKernelLaunchFeatures;\n} VkPhysicalDeviceCudaKernelLaunchFeaturesNV;\n\ntypedef struct VkPhysicalDeviceCudaKernelLaunchPropertiesNV\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t computeCapabilityMinor;\n    uint32_t computeCapabilityMajor;\n} VkPhysicalDeviceCudaKernelLaunchPropertiesNV;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateCudaModuleNV)(VkDevice device, const VkCudaModuleCreateInfoNV* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCudaModuleNV* pModule);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetCudaModuleCacheNV)(VkDevice device, VkCudaModuleNV module, size_t* pCacheSize, void* pCacheData);\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateCudaFunctionNV)(VkDevice device, const VkCudaFunctionCreateInfoNV* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCudaFunctionNV* pFunction);\ntypedef void (VKAPI_PTR *PFN_vkDestroyCudaModuleNV)(VkDevice device, VkCudaModuleNV module, const VkAllocationCallbacks* pAllocator);\ntypedef void (VKAPI_PTR *PFN_vkDestroyCudaFunctionNV)(VkDevice device, VkCudaFunctionNV function, const VkAllocationCallbacks* pAllocator);\ntypedef void (VKAPI_PTR *PFN_vkCmdCudaLaunchKernelNV)(VkCommandBuffer commandBuffer, const VkCudaLaunchInfoNV* pLaunchInfo);\n\n\n#define VK_AMDX_dense_geometry_format 1\n#define VK_AMDX_DENSE_GEOMETRY_FORMAT_SPEC_VERSION 1\n#define VK_AMDX_DENSE_GEOMETRY_FORMAT_EXTENSION_NAME \"VK_AMDX_dense_geometry_format\"\n\n#define VK_COMPRESSED_TRIANGLE_FORMAT_DGF1_BYTE_ALIGNMENT_AMDX 128\n#define VK_COMPRESSED_TRIANGLE_FORMAT_DGF1_BYTE_STRIDE_AMDX 128\n\ntypedef enum\n{\n    VK_COMPRESSED_TRIANGLE_FORMAT_DGF1_AMDX = 0,\n    VK_COMPRESSED_TRIANGLE_FORMAT_MAX_ENUM_AMDX = 0x7FFFFFFF\n} VkCompressedTriangleFormatAMDX;\n\n\ntypedef struct VkPhysicalDeviceDenseGeometryFormatFeaturesAMDX\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 denseGeometryFormat;\n} VkPhysicalDeviceDenseGeometryFormatFeaturesAMDX;\n\ntypedef struct VkAccelerationStructureDenseGeometryFormatTrianglesDataAMDX\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkDeviceOrHostAddressConstKHR compressedData;\n    VkDeviceSize dataSize;\n    uint32_t numTriangles;\n    uint32_t numVertices;\n    uint32_t maxPrimitiveIndex;\n    uint32_t maxGeometryIndex;\n    VkCompressedTriangleFormatAMDX format;\n} VkAccelerationStructureDenseGeometryFormatTrianglesDataAMDX;\n\n\n#define VK_NV_displacement_micromap 1\n#define VK_NV_DISPLACEMENT_MICROMAP_SPEC_VERSION 2\n#define VK_NV_DISPLACEMENT_MICROMAP_EXTENSION_NAME \"VK_NV_displacement_micromap\"\n\ntypedef enum\n{\n    VK_DISPLACEMENT_MICROMAP_FORMAT_64_TRIANGLES_64_BYTES_NV = 1,\n    VK_DISPLACEMENT_MICROMAP_FORMAT_256_TRIANGLES_128_BYTES_NV = 2,\n    VK_DISPLACEMENT_MICROMAP_FORMAT_1024_TRIANGLES_128_BYTES_NV = 3,\n    VK_DISPLACEMENT_MICROMAP_FORMAT_MAX_ENUM_NV = 0x7FFFFFFF\n} VkDisplacementMicromapFormatNV;\n\n\ntypedef struct VkPhysicalDeviceDisplacementMicromapFeaturesNV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 displacementMicromap;\n} VkPhysicalDeviceDisplacementMicromapFeaturesNV;\n\ntypedef struct VkPhysicalDeviceDisplacementMicromapPropertiesNV\n{\n    VkStructureType sType;\n    void* pNext;\n    uint32_t maxDisplacementMicromapSubdivisionLevel;\n} VkPhysicalDeviceDisplacementMicromapPropertiesNV;\n\ntypedef struct VkAccelerationStructureTrianglesDisplacementMicromapNV\n{\n    VkStructureType sType;\n    void* pNext;\n    VkFormat displacementBiasAndScaleFormat;\n    VkFormat displacementVectorFormat;\n    VkDeviceOrHostAddressConstKHR displacementBiasAndScaleBuffer;\n    VkDeviceSize displacementBiasAndScaleStride;\n    VkDeviceOrHostAddressConstKHR displacementVectorBuffer;\n    VkDeviceSize displacementVectorStride;\n    VkDeviceOrHostAddressConstKHR displacedMicromapPrimitiveFlags;\n    VkDeviceSize displacedMicromapPrimitiveFlagsStride;\n    VkIndexType indexType;\n    VkDeviceOrHostAddressConstKHR indexBuffer;\n    VkDeviceSize indexStride;\n    uint32_t baseTriangle;\n    uint32_t usageCountsCount;\n    const VkMicromapUsageEXT* pUsageCounts;\n    const VkMicromapUsageEXT* const* ppUsageCounts;\n    VkMicromapEXT micromap;\n} VkAccelerationStructureTrianglesDisplacementMicromapNV;\n\n#endif /*VK_ENABLE_BETA_EXTENSIONS*/\n\n#ifdef VK_USE_PLATFORM_SCREEN_QNX\n#include <screen/screen.h>\n\n#define VK_QNX_screen_surface 1\n#define VK_QNX_SCREEN_SURFACE_SPEC_VERSION 1\n#define VK_QNX_SCREEN_SURFACE_EXTENSION_NAME \"VK_QNX_screen_surface\"\n\ntypedef VkFlags VkScreenSurfaceCreateFlagsQNX;\ntypedef struct VkScreenSurfaceCreateInfoQNX\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkScreenSurfaceCreateFlagsQNX flags;\n    struct _screen_context* context;\n    struct _screen_window* window;\n} VkScreenSurfaceCreateInfoQNX;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateScreenSurfaceQNX)(VkInstance instance, const VkScreenSurfaceCreateInfoQNX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);\ntypedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceScreenPresentationSupportQNX)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, struct _screen_window* window);\n\n\n#define VK_QNX_external_memory_screen_buffer 1\n#define VK_QNX_EXTERNAL_MEMORY_SCREEN_BUFFER_SPEC_VERSION 1\n#define VK_QNX_EXTERNAL_MEMORY_SCREEN_BUFFER_EXTENSION_NAME \"VK_QNX_external_memory_screen_buffer\"\n\ntypedef struct VkScreenBufferPropertiesQNX\n{\n    VkStructureType sType;\n    void* pNext;\n    VkDeviceSize allocationSize;\n    uint32_t memoryTypeBits;\n} VkScreenBufferPropertiesQNX;\n\ntypedef struct VkScreenBufferFormatPropertiesQNX\n{\n    VkStructureType sType;\n    void* pNext;\n    VkFormat format;\n    uint64_t externalFormat;\n    uint64_t screenUsage;\n    VkFormatFeatureFlags formatFeatures;\n    VkComponentMapping samplerYcbcrConversionComponents;\n    VkSamplerYcbcrModelConversion suggestedYcbcrModel;\n    VkSamplerYcbcrRange suggestedYcbcrRange;\n    VkChromaLocation suggestedXChromaOffset;\n    VkChromaLocation suggestedYChromaOffset;\n} VkScreenBufferFormatPropertiesQNX;\n\ntypedef struct VkImportScreenBufferInfoQNX\n{\n    VkStructureType sType;\n    const void* pNext;\n    struct _screen_buffer* buffer;\n} VkImportScreenBufferInfoQNX;\n\ntypedef struct VkExternalFormatQNX\n{\n    VkStructureType sType;\n    void* pNext;\n    uint64_t externalFormat;\n} VkExternalFormatQNX;\n\ntypedef struct VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX\n{\n    VkStructureType sType;\n    void* pNext;\n    VkBool32 screenBufferImport;\n} VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkGetScreenBufferPropertiesQNX)(VkDevice device, const struct _screen_buffer* buffer, VkScreenBufferPropertiesQNX* pProperties);\n\n#endif /*VK_USE_PLATFORM_SCREEN_QNX*/\n\n#ifdef VK_USE_PLATFORM_OHOS\n\n#define VK_OHOS_external_memory 1\n#define VK_OHOS_EXTERNAL_MEMORY_SPEC_VERSION 1\n#define VK_OHOS_EXTERNAL_MEMORY_EXTENSION_NAME \"VK_OHOS_external_memory\"\n\nstruct OH_NativeBuffer;\n\ntypedef struct VkNativeBufferUsageOHOS\n{\n    VkStructureType sType;\n    void* pNext;\n    uint64_t OHOSNativeBufferUsage;\n} VkNativeBufferUsageOHOS;\n\ntypedef struct VkNativeBufferPropertiesOHOS\n{\n    VkStructureType sType;\n    void* pNext;\n    VkDeviceSize allocationSize;\n    uint32_t memoryTypeBits;\n} VkNativeBufferPropertiesOHOS;\n\ntypedef struct VkNativeBufferFormatPropertiesOHOS\n{\n    VkStructureType sType;\n    void* pNext;\n    VkFormat format;\n    uint64_t externalFormat;\n    VkFormatFeatureFlags formatFeatures;\n    VkComponentMapping samplerYcbcrConversionComponents;\n    VkSamplerYcbcrModelConversion suggestedYcbcrModel;\n    VkSamplerYcbcrRange suggestedYcbcrRange;\n    VkChromaLocation suggestedXChromaOffset;\n    VkChromaLocation suggestedYChromaOffset;\n} VkNativeBufferFormatPropertiesOHOS;\n\ntypedef struct VkImportNativeBufferInfoOHOS\n{\n    VkStructureType sType;\n    const void* pNext;\n    struct OH_NativeBuffer* buffer;\n} VkImportNativeBufferInfoOHOS;\n\ntypedef struct VkMemoryGetNativeBufferInfoOHOS\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkDeviceMemory memory;\n} VkMemoryGetNativeBufferInfoOHOS;\n\ntypedef struct VkExternalFormatOHOS\n{\n    VkStructureType sType;\n    void* pNext;\n    uint64_t externalFormat;\n} VkExternalFormatOHOS;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkGetNativeBufferPropertiesOHOS)(VkDevice device, const struct OH_NativeBuffer* buffer, VkNativeBufferPropertiesOHOS* pProperties);\ntypedef VkResult (VKAPI_PTR *PFN_vkGetMemoryNativeBufferOHOS)(VkDevice device, const VkMemoryGetNativeBufferInfoOHOS* pInfo, struct OH_NativeBuffer** pBuffer);\n\n\n#define VK_OHOS_surface 1\n#define VK_OHOS_SURFACE_SPEC_VERSION 1\n#define VK_OHOS_SURFACE_EXTENSION_NAME \"VK_OHOS_surface\"\n\ntypedef struct NativeWindow OHNativeWindow;\n\ntypedef VkFlags VkSurfaceCreateFlagsOHOS;\ntypedef struct VkSurfaceCreateInfoOHOS\n{\n    VkStructureType sType;\n    const void* pNext;\n    VkSurfaceCreateFlagsOHOS flags;\n    OHNativeWindow* window;\n} VkSurfaceCreateInfoOHOS;\n\n\ntypedef VkResult (VKAPI_PTR *PFN_vkCreateSurfaceOHOS)(VkInstance instance, const VkSurfaceCreateInfoOHOS* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);\n\n#endif /*VK_USE_PLATFORM_OHOS*/\n\n\n\n/* vkbind Struct Initializer Helpers */\n/* These functions initialize structs with sType set correctly and all other fields zeroed. */\n\nstatic VKBIND_INLINE VkApplicationInfo VkApplicationInfoInit(void)\n{\n    VkApplicationInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkInstanceCreateInfo VkInstanceCreateInfoInit(void)\n{\n    VkInstanceCreateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDeviceQueueCreateInfo VkDeviceQueueCreateInfoInit(void)\n{\n    VkDeviceQueueCreateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDeviceCreateInfo VkDeviceCreateInfoInit(void)\n{\n    VkDeviceCreateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSubmitInfo VkSubmitInfoInit(void)\n{\n    VkSubmitInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkMappedMemoryRange VkMappedMemoryRangeInit(void)\n{\n    VkMappedMemoryRange result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE;\n    return result;\n}\n\nstatic VKBIND_INLINE VkMemoryAllocateInfo VkMemoryAllocateInfoInit(void)\n{\n    VkMemoryAllocateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkBindSparseInfo VkBindSparseInfoInit(void)\n{\n    VkBindSparseInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_BIND_SPARSE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkFenceCreateInfo VkFenceCreateInfoInit(void)\n{\n    VkFenceCreateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_FENCE_CREATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSemaphoreCreateInfo VkSemaphoreCreateInfoInit(void)\n{\n    VkSemaphoreCreateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkQueryPoolCreateInfo VkQueryPoolCreateInfoInit(void)\n{\n    VkQueryPoolCreateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkBufferCreateInfo VkBufferCreateInfoInit(void)\n{\n    VkBufferCreateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkImageCreateInfo VkImageCreateInfoInit(void)\n{\n    VkImageCreateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkImageViewCreateInfo VkImageViewCreateInfoInit(void)\n{\n    VkImageViewCreateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkCommandPoolCreateInfo VkCommandPoolCreateInfoInit(void)\n{\n    VkCommandPoolCreateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkCommandBufferAllocateInfo VkCommandBufferAllocateInfoInit(void)\n{\n    VkCommandBufferAllocateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkCommandBufferInheritanceInfo VkCommandBufferInheritanceInfoInit(void)\n{\n    VkCommandBufferInheritanceInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkCommandBufferBeginInfo VkCommandBufferBeginInfoInit(void)\n{\n    VkCommandBufferBeginInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkBufferMemoryBarrier VkBufferMemoryBarrierInit(void)\n{\n    VkBufferMemoryBarrier result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER;\n    return result;\n}\n\nstatic VKBIND_INLINE VkImageMemoryBarrier VkImageMemoryBarrierInit(void)\n{\n    VkImageMemoryBarrier result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER;\n    return result;\n}\n\nstatic VKBIND_INLINE VkMemoryBarrier VkMemoryBarrierInit(void)\n{\n    VkMemoryBarrier result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_MEMORY_BARRIER;\n    return result;\n}\n\nstatic VKBIND_INLINE VkEventCreateInfo VkEventCreateInfoInit(void)\n{\n    VkEventCreateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_EVENT_CREATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkBufferViewCreateInfo VkBufferViewCreateInfoInit(void)\n{\n    VkBufferViewCreateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkShaderModuleCreateInfo VkShaderModuleCreateInfoInit(void)\n{\n    VkShaderModuleCreateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPipelineCacheCreateInfo VkPipelineCacheCreateInfoInit(void)\n{\n    VkPipelineCacheCreateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPipelineShaderStageCreateInfo VkPipelineShaderStageCreateInfoInit(void)\n{\n    VkPipelineShaderStageCreateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkComputePipelineCreateInfo VkComputePipelineCreateInfoInit(void)\n{\n    VkComputePipelineCreateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPipelineLayoutCreateInfo VkPipelineLayoutCreateInfoInit(void)\n{\n    VkPipelineLayoutCreateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSamplerCreateInfo VkSamplerCreateInfoInit(void)\n{\n    VkSamplerCreateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkCopyDescriptorSet VkCopyDescriptorSetInit(void)\n{\n    VkCopyDescriptorSet result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDescriptorPoolCreateInfo VkDescriptorPoolCreateInfoInit(void)\n{\n    VkDescriptorPoolCreateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDescriptorSetAllocateInfo VkDescriptorSetAllocateInfoInit(void)\n{\n    VkDescriptorSetAllocateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDescriptorSetLayoutCreateInfo VkDescriptorSetLayoutCreateInfoInit(void)\n{\n    VkDescriptorSetLayoutCreateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkWriteDescriptorSet VkWriteDescriptorSetInit(void)\n{\n    VkWriteDescriptorSet result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPipelineColorBlendStateCreateInfo VkPipelineColorBlendStateCreateInfoInit(void)\n{\n    VkPipelineColorBlendStateCreateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPipelineDepthStencilStateCreateInfo VkPipelineDepthStencilStateCreateInfoInit(void)\n{\n    VkPipelineDepthStencilStateCreateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPipelineDynamicStateCreateInfo VkPipelineDynamicStateCreateInfoInit(void)\n{\n    VkPipelineDynamicStateCreateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPipelineInputAssemblyStateCreateInfo VkPipelineInputAssemblyStateCreateInfoInit(void)\n{\n    VkPipelineInputAssemblyStateCreateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPipelineMultisampleStateCreateInfo VkPipelineMultisampleStateCreateInfoInit(void)\n{\n    VkPipelineMultisampleStateCreateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPipelineRasterizationStateCreateInfo VkPipelineRasterizationStateCreateInfoInit(void)\n{\n    VkPipelineRasterizationStateCreateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPipelineTessellationStateCreateInfo VkPipelineTessellationStateCreateInfoInit(void)\n{\n    VkPipelineTessellationStateCreateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPipelineVertexInputStateCreateInfo VkPipelineVertexInputStateCreateInfoInit(void)\n{\n    VkPipelineVertexInputStateCreateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPipelineViewportStateCreateInfo VkPipelineViewportStateCreateInfoInit(void)\n{\n    VkPipelineViewportStateCreateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkGraphicsPipelineCreateInfo VkGraphicsPipelineCreateInfoInit(void)\n{\n    VkGraphicsPipelineCreateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkFramebufferCreateInfo VkFramebufferCreateInfoInit(void)\n{\n    VkFramebufferCreateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkRenderPassCreateInfo VkRenderPassCreateInfoInit(void)\n{\n    VkRenderPassCreateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkRenderPassBeginInfo VkRenderPassBeginInfoInit(void)\n{\n    VkRenderPassBeginInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkBindBufferMemoryInfo VkBindBufferMemoryInfoInit(void)\n{\n    VkBindBufferMemoryInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkBindImageMemoryInfo VkBindImageMemoryInfoInit(void)\n{\n    VkBindImageMemoryInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkMemoryDedicatedRequirements VkMemoryDedicatedRequirementsInit(void)\n{\n    VkMemoryDedicatedRequirements result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS;\n    return result;\n}\n\nstatic VKBIND_INLINE VkMemoryDedicatedAllocateInfo VkMemoryDedicatedAllocateInfoInit(void)\n{\n    VkMemoryDedicatedAllocateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkMemoryAllocateFlagsInfo VkMemoryAllocateFlagsInfoInit(void)\n{\n    VkMemoryAllocateFlagsInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDeviceGroupCommandBufferBeginInfo VkDeviceGroupCommandBufferBeginInfoInit(void)\n{\n    VkDeviceGroupCommandBufferBeginInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDeviceGroupSubmitInfo VkDeviceGroupSubmitInfoInit(void)\n{\n    VkDeviceGroupSubmitInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDeviceGroupBindSparseInfo VkDeviceGroupBindSparseInfoInit(void)\n{\n    VkDeviceGroupBindSparseInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkBindBufferMemoryDeviceGroupInfo VkBindBufferMemoryDeviceGroupInfoInit(void)\n{\n    VkBindBufferMemoryDeviceGroupInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkBindImageMemoryDeviceGroupInfo VkBindImageMemoryDeviceGroupInfoInit(void)\n{\n    VkBindImageMemoryDeviceGroupInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceGroupProperties VkPhysicalDeviceGroupPropertiesInit(void)\n{\n    VkPhysicalDeviceGroupProperties result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDeviceGroupDeviceCreateInfo VkDeviceGroupDeviceCreateInfoInit(void)\n{\n    VkDeviceGroupDeviceCreateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkBufferMemoryRequirementsInfo2 VkBufferMemoryRequirementsInfo2Init(void)\n{\n    VkBufferMemoryRequirementsInfo2 result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2;\n    return result;\n}\n\nstatic VKBIND_INLINE VkImageMemoryRequirementsInfo2 VkImageMemoryRequirementsInfo2Init(void)\n{\n    VkImageMemoryRequirementsInfo2 result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2;\n    return result;\n}\n\nstatic VKBIND_INLINE VkImageSparseMemoryRequirementsInfo2 VkImageSparseMemoryRequirementsInfo2Init(void)\n{\n    VkImageSparseMemoryRequirementsInfo2 result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2;\n    return result;\n}\n\nstatic VKBIND_INLINE VkMemoryRequirements2 VkMemoryRequirements2Init(void)\n{\n    VkMemoryRequirements2 result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSparseImageMemoryRequirements2 VkSparseImageMemoryRequirements2Init(void)\n{\n    VkSparseImageMemoryRequirements2 result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceFeatures2 VkPhysicalDeviceFeatures2Init(void)\n{\n    VkPhysicalDeviceFeatures2 result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceProperties2 VkPhysicalDeviceProperties2Init(void)\n{\n    VkPhysicalDeviceProperties2 result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2;\n    return result;\n}\n\nstatic VKBIND_INLINE VkFormatProperties2 VkFormatProperties2Init(void)\n{\n    VkFormatProperties2 result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2;\n    return result;\n}\n\nstatic VKBIND_INLINE VkImageFormatProperties2 VkImageFormatProperties2Init(void)\n{\n    VkImageFormatProperties2 result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceImageFormatInfo2 VkPhysicalDeviceImageFormatInfo2Init(void)\n{\n    VkPhysicalDeviceImageFormatInfo2 result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2;\n    return result;\n}\n\nstatic VKBIND_INLINE VkQueueFamilyProperties2 VkQueueFamilyProperties2Init(void)\n{\n    VkQueueFamilyProperties2 result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceMemoryProperties2 VkPhysicalDeviceMemoryProperties2Init(void)\n{\n    VkPhysicalDeviceMemoryProperties2 result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSparseImageFormatProperties2 VkSparseImageFormatProperties2Init(void)\n{\n    VkSparseImageFormatProperties2 result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceSparseImageFormatInfo2 VkPhysicalDeviceSparseImageFormatInfo2Init(void)\n{\n    VkPhysicalDeviceSparseImageFormatInfo2 result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2;\n    return result;\n}\n\nstatic VKBIND_INLINE VkImageViewUsageCreateInfo VkImageViewUsageCreateInfoInit(void)\n{\n    VkImageViewUsageCreateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceProtectedMemoryFeatures VkPhysicalDeviceProtectedMemoryFeaturesInit(void)\n{\n    VkPhysicalDeviceProtectedMemoryFeatures result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceProtectedMemoryProperties VkPhysicalDeviceProtectedMemoryPropertiesInit(void)\n{\n    VkPhysicalDeviceProtectedMemoryProperties result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDeviceQueueInfo2 VkDeviceQueueInfo2Init(void)\n{\n    VkDeviceQueueInfo2 result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2;\n    return result;\n}\n\nstatic VKBIND_INLINE VkProtectedSubmitInfo VkProtectedSubmitInfoInit(void)\n{\n    VkProtectedSubmitInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkBindImagePlaneMemoryInfo VkBindImagePlaneMemoryInfoInit(void)\n{\n    VkBindImagePlaneMemoryInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkImagePlaneMemoryRequirementsInfo VkImagePlaneMemoryRequirementsInfoInit(void)\n{\n    VkImagePlaneMemoryRequirementsInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceExternalImageFormatInfo VkPhysicalDeviceExternalImageFormatInfoInit(void)\n{\n    VkPhysicalDeviceExternalImageFormatInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkExternalImageFormatProperties VkExternalImageFormatPropertiesInit(void)\n{\n    VkExternalImageFormatProperties result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceExternalBufferInfo VkPhysicalDeviceExternalBufferInfoInit(void)\n{\n    VkPhysicalDeviceExternalBufferInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkExternalBufferProperties VkExternalBufferPropertiesInit(void)\n{\n    VkExternalBufferProperties result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceIDProperties VkPhysicalDeviceIDPropertiesInit(void)\n{\n    VkPhysicalDeviceIDProperties result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkExternalMemoryImageCreateInfo VkExternalMemoryImageCreateInfoInit(void)\n{\n    VkExternalMemoryImageCreateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkExternalMemoryBufferCreateInfo VkExternalMemoryBufferCreateInfoInit(void)\n{\n    VkExternalMemoryBufferCreateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkExportMemoryAllocateInfo VkExportMemoryAllocateInfoInit(void)\n{\n    VkExportMemoryAllocateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceExternalFenceInfo VkPhysicalDeviceExternalFenceInfoInit(void)\n{\n    VkPhysicalDeviceExternalFenceInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkExternalFenceProperties VkExternalFencePropertiesInit(void)\n{\n    VkExternalFenceProperties result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkExportFenceCreateInfo VkExportFenceCreateInfoInit(void)\n{\n    VkExportFenceCreateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkExportSemaphoreCreateInfo VkExportSemaphoreCreateInfoInit(void)\n{\n    VkExportSemaphoreCreateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceExternalSemaphoreInfo VkPhysicalDeviceExternalSemaphoreInfoInit(void)\n{\n    VkPhysicalDeviceExternalSemaphoreInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkExternalSemaphoreProperties VkExternalSemaphorePropertiesInit(void)\n{\n    VkExternalSemaphoreProperties result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceSubgroupProperties VkPhysicalDeviceSubgroupPropertiesInit(void)\n{\n    VkPhysicalDeviceSubgroupProperties result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDevice16BitStorageFeatures VkPhysicalDevice16BitStorageFeaturesInit(void)\n{\n    VkPhysicalDevice16BitStorageFeatures result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceVariablePointersFeatures VkPhysicalDeviceVariablePointersFeaturesInit(void)\n{\n    VkPhysicalDeviceVariablePointersFeatures result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDescriptorUpdateTemplateCreateInfo VkDescriptorUpdateTemplateCreateInfoInit(void)\n{\n    VkDescriptorUpdateTemplateCreateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceMaintenance3Properties VkPhysicalDeviceMaintenance3PropertiesInit(void)\n{\n    VkPhysicalDeviceMaintenance3Properties result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDescriptorSetLayoutSupport VkDescriptorSetLayoutSupportInit(void)\n{\n    VkDescriptorSetLayoutSupport result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSamplerYcbcrConversionCreateInfo VkSamplerYcbcrConversionCreateInfoInit(void)\n{\n    VkSamplerYcbcrConversionCreateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSamplerYcbcrConversionInfo VkSamplerYcbcrConversionInfoInit(void)\n{\n    VkSamplerYcbcrConversionInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceSamplerYcbcrConversionFeatures VkPhysicalDeviceSamplerYcbcrConversionFeaturesInit(void)\n{\n    VkPhysicalDeviceSamplerYcbcrConversionFeatures result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSamplerYcbcrConversionImageFormatProperties VkSamplerYcbcrConversionImageFormatPropertiesInit(void)\n{\n    VkSamplerYcbcrConversionImageFormatProperties result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDeviceGroupRenderPassBeginInfo VkDeviceGroupRenderPassBeginInfoInit(void)\n{\n    VkDeviceGroupRenderPassBeginInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDevicePointClippingProperties VkPhysicalDevicePointClippingPropertiesInit(void)\n{\n    VkPhysicalDevicePointClippingProperties result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkRenderPassInputAttachmentAspectCreateInfo VkRenderPassInputAttachmentAspectCreateInfoInit(void)\n{\n    VkRenderPassInputAttachmentAspectCreateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPipelineTessellationDomainOriginStateCreateInfo VkPipelineTessellationDomainOriginStateCreateInfoInit(void)\n{\n    VkPipelineTessellationDomainOriginStateCreateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkRenderPassMultiviewCreateInfo VkRenderPassMultiviewCreateInfoInit(void)\n{\n    VkRenderPassMultiviewCreateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceMultiviewFeatures VkPhysicalDeviceMultiviewFeaturesInit(void)\n{\n    VkPhysicalDeviceMultiviewFeatures result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceMultiviewProperties VkPhysicalDeviceMultiviewPropertiesInit(void)\n{\n    VkPhysicalDeviceMultiviewProperties result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceShaderDrawParametersFeatures VkPhysicalDeviceShaderDrawParametersFeaturesInit(void)\n{\n    VkPhysicalDeviceShaderDrawParametersFeatures result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceDriverProperties VkPhysicalDeviceDriverPropertiesInit(void)\n{\n    VkPhysicalDeviceDriverProperties result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceVulkan11Features VkPhysicalDeviceVulkan11FeaturesInit(void)\n{\n    VkPhysicalDeviceVulkan11Features result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceVulkan11Properties VkPhysicalDeviceVulkan11PropertiesInit(void)\n{\n    VkPhysicalDeviceVulkan11Properties result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceVulkan12Features VkPhysicalDeviceVulkan12FeaturesInit(void)\n{\n    VkPhysicalDeviceVulkan12Features result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceVulkan12Properties VkPhysicalDeviceVulkan12PropertiesInit(void)\n{\n    VkPhysicalDeviceVulkan12Properties result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkImageFormatListCreateInfo VkImageFormatListCreateInfoInit(void)\n{\n    VkImageFormatListCreateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceVulkanMemoryModelFeatures VkPhysicalDeviceVulkanMemoryModelFeaturesInit(void)\n{\n    VkPhysicalDeviceVulkanMemoryModelFeatures result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceHostQueryResetFeatures VkPhysicalDeviceHostQueryResetFeaturesInit(void)\n{\n    VkPhysicalDeviceHostQueryResetFeatures result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceTimelineSemaphoreFeatures VkPhysicalDeviceTimelineSemaphoreFeaturesInit(void)\n{\n    VkPhysicalDeviceTimelineSemaphoreFeatures result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceTimelineSemaphoreProperties VkPhysicalDeviceTimelineSemaphorePropertiesInit(void)\n{\n    VkPhysicalDeviceTimelineSemaphoreProperties result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSemaphoreTypeCreateInfo VkSemaphoreTypeCreateInfoInit(void)\n{\n    VkSemaphoreTypeCreateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkTimelineSemaphoreSubmitInfo VkTimelineSemaphoreSubmitInfoInit(void)\n{\n    VkTimelineSemaphoreSubmitInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSemaphoreWaitInfo VkSemaphoreWaitInfoInit(void)\n{\n    VkSemaphoreWaitInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSemaphoreSignalInfo VkSemaphoreSignalInfoInit(void)\n{\n    VkSemaphoreSignalInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceBufferDeviceAddressFeatures VkPhysicalDeviceBufferDeviceAddressFeaturesInit(void)\n{\n    VkPhysicalDeviceBufferDeviceAddressFeatures result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkBufferDeviceAddressInfo VkBufferDeviceAddressInfoInit(void)\n{\n    VkBufferDeviceAddressInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkBufferOpaqueCaptureAddressCreateInfo VkBufferOpaqueCaptureAddressCreateInfoInit(void)\n{\n    VkBufferOpaqueCaptureAddressCreateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkMemoryOpaqueCaptureAddressAllocateInfo VkMemoryOpaqueCaptureAddressAllocateInfoInit(void)\n{\n    VkMemoryOpaqueCaptureAddressAllocateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDeviceMemoryOpaqueCaptureAddressInfo VkDeviceMemoryOpaqueCaptureAddressInfoInit(void)\n{\n    VkDeviceMemoryOpaqueCaptureAddressInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDevice8BitStorageFeatures VkPhysicalDevice8BitStorageFeaturesInit(void)\n{\n    VkPhysicalDevice8BitStorageFeatures result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceShaderAtomicInt64Features VkPhysicalDeviceShaderAtomicInt64FeaturesInit(void)\n{\n    VkPhysicalDeviceShaderAtomicInt64Features result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceShaderFloat16Int8Features VkPhysicalDeviceShaderFloat16Int8FeaturesInit(void)\n{\n    VkPhysicalDeviceShaderFloat16Int8Features result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceFloatControlsProperties VkPhysicalDeviceFloatControlsPropertiesInit(void)\n{\n    VkPhysicalDeviceFloatControlsProperties result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDescriptorSetLayoutBindingFlagsCreateInfo VkDescriptorSetLayoutBindingFlagsCreateInfoInit(void)\n{\n    VkDescriptorSetLayoutBindingFlagsCreateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceDescriptorIndexingFeatures VkPhysicalDeviceDescriptorIndexingFeaturesInit(void)\n{\n    VkPhysicalDeviceDescriptorIndexingFeatures result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceDescriptorIndexingProperties VkPhysicalDeviceDescriptorIndexingPropertiesInit(void)\n{\n    VkPhysicalDeviceDescriptorIndexingProperties result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDescriptorSetVariableDescriptorCountAllocateInfo VkDescriptorSetVariableDescriptorCountAllocateInfoInit(void)\n{\n    VkDescriptorSetVariableDescriptorCountAllocateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDescriptorSetVariableDescriptorCountLayoutSupport VkDescriptorSetVariableDescriptorCountLayoutSupportInit(void)\n{\n    VkDescriptorSetVariableDescriptorCountLayoutSupport result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceScalarBlockLayoutFeatures VkPhysicalDeviceScalarBlockLayoutFeaturesInit(void)\n{\n    VkPhysicalDeviceScalarBlockLayoutFeatures result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSamplerReductionModeCreateInfo VkSamplerReductionModeCreateInfoInit(void)\n{\n    VkSamplerReductionModeCreateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceSamplerFilterMinmaxProperties VkPhysicalDeviceSamplerFilterMinmaxPropertiesInit(void)\n{\n    VkPhysicalDeviceSamplerFilterMinmaxProperties result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceUniformBufferStandardLayoutFeatures VkPhysicalDeviceUniformBufferStandardLayoutFeaturesInit(void)\n{\n    VkPhysicalDeviceUniformBufferStandardLayoutFeatures result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesInit(void)\n{\n    VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkAttachmentDescription2 VkAttachmentDescription2Init(void)\n{\n    VkAttachmentDescription2 result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2;\n    return result;\n}\n\nstatic VKBIND_INLINE VkAttachmentReference2 VkAttachmentReference2Init(void)\n{\n    VkAttachmentReference2 result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSubpassDescription2 VkSubpassDescription2Init(void)\n{\n    VkSubpassDescription2 result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSubpassDependency2 VkSubpassDependency2Init(void)\n{\n    VkSubpassDependency2 result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSubpassBeginInfo VkSubpassBeginInfoInit(void)\n{\n    VkSubpassBeginInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSubpassEndInfo VkSubpassEndInfoInit(void)\n{\n    VkSubpassEndInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SUBPASS_END_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkRenderPassCreateInfo2 VkRenderPassCreateInfo2Init(void)\n{\n    VkRenderPassCreateInfo2 result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSubpassDescriptionDepthStencilResolve VkSubpassDescriptionDepthStencilResolveInit(void)\n{\n    VkSubpassDescriptionDepthStencilResolve result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceDepthStencilResolveProperties VkPhysicalDeviceDepthStencilResolvePropertiesInit(void)\n{\n    VkPhysicalDeviceDepthStencilResolveProperties result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkImageStencilUsageCreateInfo VkImageStencilUsageCreateInfoInit(void)\n{\n    VkImageStencilUsageCreateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceImagelessFramebufferFeatures VkPhysicalDeviceImagelessFramebufferFeaturesInit(void)\n{\n    VkPhysicalDeviceImagelessFramebufferFeatures result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkFramebufferAttachmentImageInfo VkFramebufferAttachmentImageInfoInit(void)\n{\n    VkFramebufferAttachmentImageInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkRenderPassAttachmentBeginInfo VkRenderPassAttachmentBeginInfoInit(void)\n{\n    VkRenderPassAttachmentBeginInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkFramebufferAttachmentsCreateInfo VkFramebufferAttachmentsCreateInfoInit(void)\n{\n    VkFramebufferAttachmentsCreateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesInit(void)\n{\n    VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkAttachmentReferenceStencilLayout VkAttachmentReferenceStencilLayoutInit(void)\n{\n    VkAttachmentReferenceStencilLayout result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkAttachmentDescriptionStencilLayout VkAttachmentDescriptionStencilLayoutInit(void)\n{\n    VkAttachmentDescriptionStencilLayout result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceVulkan13Features VkPhysicalDeviceVulkan13FeaturesInit(void)\n{\n    VkPhysicalDeviceVulkan13Features result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceVulkan13Properties VkPhysicalDeviceVulkan13PropertiesInit(void)\n{\n    VkPhysicalDeviceVulkan13Properties result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceToolProperties VkPhysicalDeviceToolPropertiesInit(void)\n{\n    VkPhysicalDeviceToolProperties result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDevicePrivateDataFeatures VkPhysicalDevicePrivateDataFeaturesInit(void)\n{\n    VkPhysicalDevicePrivateDataFeatures result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDevicePrivateDataCreateInfo VkDevicePrivateDataCreateInfoInit(void)\n{\n    VkDevicePrivateDataCreateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPrivateDataSlotCreateInfo VkPrivateDataSlotCreateInfoInit(void)\n{\n    VkPrivateDataSlotCreateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkMemoryBarrier2 VkMemoryBarrier2Init(void)\n{\n    VkMemoryBarrier2 result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_MEMORY_BARRIER_2;\n    return result;\n}\n\nstatic VKBIND_INLINE VkBufferMemoryBarrier2 VkBufferMemoryBarrier2Init(void)\n{\n    VkBufferMemoryBarrier2 result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2;\n    return result;\n}\n\nstatic VKBIND_INLINE VkImageMemoryBarrier2 VkImageMemoryBarrier2Init(void)\n{\n    VkImageMemoryBarrier2 result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDependencyInfo VkDependencyInfoInit(void)\n{\n    VkDependencyInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DEPENDENCY_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSemaphoreSubmitInfo VkSemaphoreSubmitInfoInit(void)\n{\n    VkSemaphoreSubmitInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkCommandBufferSubmitInfo VkCommandBufferSubmitInfoInit(void)\n{\n    VkCommandBufferSubmitInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSubmitInfo2 VkSubmitInfo2Init(void)\n{\n    VkSubmitInfo2 result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO_2;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceSynchronization2Features VkPhysicalDeviceSynchronization2FeaturesInit(void)\n{\n    VkPhysicalDeviceSynchronization2Features result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkBufferCopy2 VkBufferCopy2Init(void)\n{\n    VkBufferCopy2 result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_BUFFER_COPY_2;\n    return result;\n}\n\nstatic VKBIND_INLINE VkCopyBufferInfo2 VkCopyBufferInfo2Init(void)\n{\n    VkCopyBufferInfo2 result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2;\n    return result;\n}\n\nstatic VKBIND_INLINE VkImageCopy2 VkImageCopy2Init(void)\n{\n    VkImageCopy2 result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_IMAGE_COPY_2;\n    return result;\n}\n\nstatic VKBIND_INLINE VkCopyImageInfo2 VkCopyImageInfo2Init(void)\n{\n    VkCopyImageInfo2 result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2;\n    return result;\n}\n\nstatic VKBIND_INLINE VkBufferImageCopy2 VkBufferImageCopy2Init(void)\n{\n    VkBufferImageCopy2 result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2;\n    return result;\n}\n\nstatic VKBIND_INLINE VkCopyBufferToImageInfo2 VkCopyBufferToImageInfo2Init(void)\n{\n    VkCopyBufferToImageInfo2 result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2;\n    return result;\n}\n\nstatic VKBIND_INLINE VkCopyImageToBufferInfo2 VkCopyImageToBufferInfo2Init(void)\n{\n    VkCopyImageToBufferInfo2 result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceTextureCompressionASTCHDRFeatures VkPhysicalDeviceTextureCompressionASTCHDRFeaturesInit(void)\n{\n    VkPhysicalDeviceTextureCompressionASTCHDRFeatures result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkFormatProperties3 VkFormatProperties3Init(void)\n{\n    VkFormatProperties3 result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceMaintenance4Features VkPhysicalDeviceMaintenance4FeaturesInit(void)\n{\n    VkPhysicalDeviceMaintenance4Features result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceMaintenance4Properties VkPhysicalDeviceMaintenance4PropertiesInit(void)\n{\n    VkPhysicalDeviceMaintenance4Properties result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDeviceBufferMemoryRequirements VkDeviceBufferMemoryRequirementsInit(void)\n{\n    VkDeviceBufferMemoryRequirements result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDeviceImageMemoryRequirements VkDeviceImageMemoryRequirementsInit(void)\n{\n    VkDeviceImageMemoryRequirements result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPipelineCreationFeedbackCreateInfo VkPipelineCreationFeedbackCreateInfoInit(void)\n{\n    VkPipelineCreationFeedbackCreateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceShaderTerminateInvocationFeatures VkPhysicalDeviceShaderTerminateInvocationFeaturesInit(void)\n{\n    VkPhysicalDeviceShaderTerminateInvocationFeatures result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesInit(void)\n{\n    VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDevicePipelineCreationCacheControlFeatures VkPhysicalDevicePipelineCreationCacheControlFeaturesInit(void)\n{\n    VkPhysicalDevicePipelineCreationCacheControlFeatures result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesInit(void)\n{\n    VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceImageRobustnessFeatures VkPhysicalDeviceImageRobustnessFeaturesInit(void)\n{\n    VkPhysicalDeviceImageRobustnessFeatures result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceSubgroupSizeControlFeatures VkPhysicalDeviceSubgroupSizeControlFeaturesInit(void)\n{\n    VkPhysicalDeviceSubgroupSizeControlFeatures result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceSubgroupSizeControlProperties VkPhysicalDeviceSubgroupSizeControlPropertiesInit(void)\n{\n    VkPhysicalDeviceSubgroupSizeControlProperties result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPipelineShaderStageRequiredSubgroupSizeCreateInfo VkPipelineShaderStageRequiredSubgroupSizeCreateInfoInit(void)\n{\n    VkPipelineShaderStageRequiredSubgroupSizeCreateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceInlineUniformBlockFeatures VkPhysicalDeviceInlineUniformBlockFeaturesInit(void)\n{\n    VkPhysicalDeviceInlineUniformBlockFeatures result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceInlineUniformBlockProperties VkPhysicalDeviceInlineUniformBlockPropertiesInit(void)\n{\n    VkPhysicalDeviceInlineUniformBlockProperties result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkWriteDescriptorSetInlineUniformBlock VkWriteDescriptorSetInlineUniformBlockInit(void)\n{\n    VkWriteDescriptorSetInlineUniformBlock result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDescriptorPoolInlineUniformBlockCreateInfo VkDescriptorPoolInlineUniformBlockCreateInfoInit(void)\n{\n    VkDescriptorPoolInlineUniformBlockCreateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceShaderIntegerDotProductFeatures VkPhysicalDeviceShaderIntegerDotProductFeaturesInit(void)\n{\n    VkPhysicalDeviceShaderIntegerDotProductFeatures result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceShaderIntegerDotProductProperties VkPhysicalDeviceShaderIntegerDotProductPropertiesInit(void)\n{\n    VkPhysicalDeviceShaderIntegerDotProductProperties result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceTexelBufferAlignmentProperties VkPhysicalDeviceTexelBufferAlignmentPropertiesInit(void)\n{\n    VkPhysicalDeviceTexelBufferAlignmentProperties result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkImageBlit2 VkImageBlit2Init(void)\n{\n    VkImageBlit2 result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_IMAGE_BLIT_2;\n    return result;\n}\n\nstatic VKBIND_INLINE VkBlitImageInfo2 VkBlitImageInfo2Init(void)\n{\n    VkBlitImageInfo2 result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2;\n    return result;\n}\n\nstatic VKBIND_INLINE VkImageResolve2 VkImageResolve2Init(void)\n{\n    VkImageResolve2 result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2;\n    return result;\n}\n\nstatic VKBIND_INLINE VkResolveImageInfo2 VkResolveImageInfo2Init(void)\n{\n    VkResolveImageInfo2 result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2;\n    return result;\n}\n\nstatic VKBIND_INLINE VkRenderingAttachmentInfo VkRenderingAttachmentInfoInit(void)\n{\n    VkRenderingAttachmentInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkRenderingInfo VkRenderingInfoInit(void)\n{\n    VkRenderingInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_RENDERING_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPipelineRenderingCreateInfo VkPipelineRenderingCreateInfoInit(void)\n{\n    VkPipelineRenderingCreateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceDynamicRenderingFeatures VkPhysicalDeviceDynamicRenderingFeaturesInit(void)\n{\n    VkPhysicalDeviceDynamicRenderingFeatures result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkCommandBufferInheritanceRenderingInfo VkCommandBufferInheritanceRenderingInfoInit(void)\n{\n    VkCommandBufferInheritanceRenderingInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceVulkan14Features VkPhysicalDeviceVulkan14FeaturesInit(void)\n{\n    VkPhysicalDeviceVulkan14Features result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_FEATURES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceVulkan14Properties VkPhysicalDeviceVulkan14PropertiesInit(void)\n{\n    VkPhysicalDeviceVulkan14Properties result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_PROPERTIES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDeviceQueueGlobalPriorityCreateInfo VkDeviceQueueGlobalPriorityCreateInfoInit(void)\n{\n    VkDeviceQueueGlobalPriorityCreateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceGlobalPriorityQueryFeatures VkPhysicalDeviceGlobalPriorityQueryFeaturesInit(void)\n{\n    VkPhysicalDeviceGlobalPriorityQueryFeatures result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkQueueFamilyGlobalPriorityProperties VkQueueFamilyGlobalPriorityPropertiesInit(void)\n{\n    VkQueueFamilyGlobalPriorityProperties result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceIndexTypeUint8Features VkPhysicalDeviceIndexTypeUint8FeaturesInit(void)\n{\n    VkPhysicalDeviceIndexTypeUint8Features result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkMemoryMapInfo VkMemoryMapInfoInit(void)\n{\n    VkMemoryMapInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_MEMORY_MAP_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkMemoryUnmapInfo VkMemoryUnmapInfoInit(void)\n{\n    VkMemoryUnmapInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_MEMORY_UNMAP_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceMaintenance5Features VkPhysicalDeviceMaintenance5FeaturesInit(void)\n{\n    VkPhysicalDeviceMaintenance5Features result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceMaintenance5Properties VkPhysicalDeviceMaintenance5PropertiesInit(void)\n{\n    VkPhysicalDeviceMaintenance5Properties result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSubresourceLayout2 VkSubresourceLayout2Init(void)\n{\n    VkSubresourceLayout2 result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2;\n    return result;\n}\n\nstatic VKBIND_INLINE VkImageSubresource2 VkImageSubresource2Init(void)\n{\n    VkImageSubresource2 result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDeviceImageSubresourceInfo VkDeviceImageSubresourceInfoInit(void)\n{\n    VkDeviceImageSubresourceInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkBufferUsageFlags2CreateInfo VkBufferUsageFlags2CreateInfoInit(void)\n{\n    VkBufferUsageFlags2CreateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceMaintenance6Features VkPhysicalDeviceMaintenance6FeaturesInit(void)\n{\n    VkPhysicalDeviceMaintenance6Features result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceMaintenance6Properties VkPhysicalDeviceMaintenance6PropertiesInit(void)\n{\n    VkPhysicalDeviceMaintenance6Properties result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkBindMemoryStatus VkBindMemoryStatusInit(void)\n{\n    VkBindMemoryStatus result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_BIND_MEMORY_STATUS;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceHostImageCopyFeatures VkPhysicalDeviceHostImageCopyFeaturesInit(void)\n{\n    VkPhysicalDeviceHostImageCopyFeatures result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceHostImageCopyProperties VkPhysicalDeviceHostImageCopyPropertiesInit(void)\n{\n    VkPhysicalDeviceHostImageCopyProperties result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkMemoryToImageCopy VkMemoryToImageCopyInit(void)\n{\n    VkMemoryToImageCopy result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY;\n    return result;\n}\n\nstatic VKBIND_INLINE VkImageToMemoryCopy VkImageToMemoryCopyInit(void)\n{\n    VkImageToMemoryCopy result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY;\n    return result;\n}\n\nstatic VKBIND_INLINE VkCopyMemoryToImageInfo VkCopyMemoryToImageInfoInit(void)\n{\n    VkCopyMemoryToImageInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkCopyImageToMemoryInfo VkCopyImageToMemoryInfoInit(void)\n{\n    VkCopyImageToMemoryInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkCopyImageToImageInfo VkCopyImageToImageInfoInit(void)\n{\n    VkCopyImageToImageInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkHostImageLayoutTransitionInfo VkHostImageLayoutTransitionInfoInit(void)\n{\n    VkHostImageLayoutTransitionInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSubresourceHostMemcpySize VkSubresourceHostMemcpySizeInit(void)\n{\n    VkSubresourceHostMemcpySize result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE;\n    return result;\n}\n\nstatic VKBIND_INLINE VkHostImageCopyDevicePerformanceQuery VkHostImageCopyDevicePerformanceQueryInit(void)\n{\n    VkHostImageCopyDevicePerformanceQuery result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceShaderSubgroupRotateFeatures VkPhysicalDeviceShaderSubgroupRotateFeaturesInit(void)\n{\n    VkPhysicalDeviceShaderSubgroupRotateFeatures result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceShaderFloatControls2Features VkPhysicalDeviceShaderFloatControls2FeaturesInit(void)\n{\n    VkPhysicalDeviceShaderFloatControls2Features result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceShaderExpectAssumeFeatures VkPhysicalDeviceShaderExpectAssumeFeaturesInit(void)\n{\n    VkPhysicalDeviceShaderExpectAssumeFeatures result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPipelineCreateFlags2CreateInfo VkPipelineCreateFlags2CreateInfoInit(void)\n{\n    VkPipelineCreateFlags2CreateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDevicePushDescriptorProperties VkPhysicalDevicePushDescriptorPropertiesInit(void)\n{\n    VkPhysicalDevicePushDescriptorProperties result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkBindDescriptorSetsInfo VkBindDescriptorSetsInfoInit(void)\n{\n    VkBindDescriptorSetsInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPushConstantsInfo VkPushConstantsInfoInit(void)\n{\n    VkPushConstantsInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PUSH_CONSTANTS_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPushDescriptorSetInfo VkPushDescriptorSetInfoInit(void)\n{\n    VkPushDescriptorSetInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPushDescriptorSetWithTemplateInfo VkPushDescriptorSetWithTemplateInfoInit(void)\n{\n    VkPushDescriptorSetWithTemplateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDevicePipelineProtectedAccessFeatures VkPhysicalDevicePipelineProtectedAccessFeaturesInit(void)\n{\n    VkPhysicalDevicePipelineProtectedAccessFeatures result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDevicePipelineRobustnessFeatures VkPhysicalDevicePipelineRobustnessFeaturesInit(void)\n{\n    VkPhysicalDevicePipelineRobustnessFeatures result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDevicePipelineRobustnessProperties VkPhysicalDevicePipelineRobustnessPropertiesInit(void)\n{\n    VkPhysicalDevicePipelineRobustnessProperties result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPipelineRobustnessCreateInfo VkPipelineRobustnessCreateInfoInit(void)\n{\n    VkPipelineRobustnessCreateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceLineRasterizationFeatures VkPhysicalDeviceLineRasterizationFeaturesInit(void)\n{\n    VkPhysicalDeviceLineRasterizationFeatures result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceLineRasterizationProperties VkPhysicalDeviceLineRasterizationPropertiesInit(void)\n{\n    VkPhysicalDeviceLineRasterizationProperties result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPipelineRasterizationLineStateCreateInfo VkPipelineRasterizationLineStateCreateInfoInit(void)\n{\n    VkPipelineRasterizationLineStateCreateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceVertexAttributeDivisorProperties VkPhysicalDeviceVertexAttributeDivisorPropertiesInit(void)\n{\n    VkPhysicalDeviceVertexAttributeDivisorProperties result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPipelineVertexInputDivisorStateCreateInfo VkPipelineVertexInputDivisorStateCreateInfoInit(void)\n{\n    VkPipelineVertexInputDivisorStateCreateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceVertexAttributeDivisorFeatures VkPhysicalDeviceVertexAttributeDivisorFeaturesInit(void)\n{\n    VkPhysicalDeviceVertexAttributeDivisorFeatures result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkRenderingAreaInfo VkRenderingAreaInfoInit(void)\n{\n    VkRenderingAreaInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_RENDERING_AREA_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceDynamicRenderingLocalReadFeatures VkPhysicalDeviceDynamicRenderingLocalReadFeaturesInit(void)\n{\n    VkPhysicalDeviceDynamicRenderingLocalReadFeatures result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkRenderingAttachmentLocationInfo VkRenderingAttachmentLocationInfoInit(void)\n{\n    VkRenderingAttachmentLocationInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkRenderingInputAttachmentIndexInfo VkRenderingInputAttachmentIndexInfoInit(void)\n{\n    VkRenderingInputAttachmentIndexInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceVulkanSC10Features VkPhysicalDeviceVulkanSC10FeaturesInit(void)\n{\n    VkPhysicalDeviceVulkanSC10Features result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_FEATURES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceVulkanSC10Properties VkPhysicalDeviceVulkanSC10PropertiesInit(void)\n{\n    VkPhysicalDeviceVulkanSC10Properties result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_PROPERTIES;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPipelinePoolSize VkPipelinePoolSizeInit(void)\n{\n    VkPipelinePoolSize result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PIPELINE_POOL_SIZE;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDeviceObjectReservationCreateInfo VkDeviceObjectReservationCreateInfoInit(void)\n{\n    VkDeviceObjectReservationCreateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DEVICE_OBJECT_RESERVATION_CREATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkCommandPoolMemoryReservationCreateInfo VkCommandPoolMemoryReservationCreateInfoInit(void)\n{\n    VkCommandPoolMemoryReservationCreateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_COMMAND_POOL_MEMORY_RESERVATION_CREATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkCommandPoolMemoryConsumption VkCommandPoolMemoryConsumptionInit(void)\n{\n    VkCommandPoolMemoryConsumption result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_COMMAND_POOL_MEMORY_CONSUMPTION;\n    return result;\n}\n\nstatic VKBIND_INLINE VkFaultData VkFaultDataInit(void)\n{\n    VkFaultData result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_FAULT_DATA;\n    return result;\n}\n\nstatic VKBIND_INLINE VkFaultCallbackInfo VkFaultCallbackInfoInit(void)\n{\n    VkFaultCallbackInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_FAULT_CALLBACK_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPipelineOfflineCreateInfo VkPipelineOfflineCreateInfoInit(void)\n{\n    VkPipelineOfflineCreateInfo result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PIPELINE_OFFLINE_CREATE_INFO;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSwapchainCreateInfoKHR VkSwapchainCreateInfoKHRInit(void)\n{\n    VkSwapchainCreateInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPresentInfoKHR VkPresentInfoKHRInit(void)\n{\n    VkPresentInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PRESENT_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkImageSwapchainCreateInfoKHR VkImageSwapchainCreateInfoKHRInit(void)\n{\n    VkImageSwapchainCreateInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkBindImageMemorySwapchainInfoKHR VkBindImageMemorySwapchainInfoKHRInit(void)\n{\n    VkBindImageMemorySwapchainInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkAcquireNextImageInfoKHR VkAcquireNextImageInfoKHRInit(void)\n{\n    VkAcquireNextImageInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDeviceGroupPresentCapabilitiesKHR VkDeviceGroupPresentCapabilitiesKHRInit(void)\n{\n    VkDeviceGroupPresentCapabilitiesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDeviceGroupPresentInfoKHR VkDeviceGroupPresentInfoKHRInit(void)\n{\n    VkDeviceGroupPresentInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDeviceGroupSwapchainCreateInfoKHR VkDeviceGroupSwapchainCreateInfoKHRInit(void)\n{\n    VkDeviceGroupSwapchainCreateInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDisplayModeCreateInfoKHR VkDisplayModeCreateInfoKHRInit(void)\n{\n    VkDisplayModeCreateInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDisplaySurfaceCreateInfoKHR VkDisplaySurfaceCreateInfoKHRInit(void)\n{\n    VkDisplaySurfaceCreateInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDisplayPresentInfoKHR VkDisplayPresentInfoKHRInit(void)\n{\n    VkDisplayPresentInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPipelineRasterizationStateRasterizationOrderAMD VkPipelineRasterizationStateRasterizationOrderAMDInit(void)\n{\n    VkPipelineRasterizationStateRasterizationOrderAMD result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD;\n    return result;\n}\n\nstatic VKBIND_INLINE VkQueueFamilyQueryResultStatusPropertiesKHR VkQueueFamilyQueryResultStatusPropertiesKHRInit(void)\n{\n    VkQueueFamilyQueryResultStatusPropertiesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_QUEUE_FAMILY_QUERY_RESULT_STATUS_PROPERTIES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkQueueFamilyVideoPropertiesKHR VkQueueFamilyVideoPropertiesKHRInit(void)\n{\n    VkQueueFamilyVideoPropertiesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_QUEUE_FAMILY_VIDEO_PROPERTIES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoProfileInfoKHR VkVideoProfileInfoKHRInit(void)\n{\n    VkVideoProfileInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_PROFILE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoProfileListInfoKHR VkVideoProfileListInfoKHRInit(void)\n{\n    VkVideoProfileListInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_PROFILE_LIST_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoCapabilitiesKHR VkVideoCapabilitiesKHRInit(void)\n{\n    VkVideoCapabilitiesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_CAPABILITIES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceVideoFormatInfoKHR VkPhysicalDeviceVideoFormatInfoKHRInit(void)\n{\n    VkPhysicalDeviceVideoFormatInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_FORMAT_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoFormatPropertiesKHR VkVideoFormatPropertiesKHRInit(void)\n{\n    VkVideoFormatPropertiesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_FORMAT_PROPERTIES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoPictureResourceInfoKHR VkVideoPictureResourceInfoKHRInit(void)\n{\n    VkVideoPictureResourceInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_PICTURE_RESOURCE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoReferenceSlotInfoKHR VkVideoReferenceSlotInfoKHRInit(void)\n{\n    VkVideoReferenceSlotInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_REFERENCE_SLOT_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoSessionMemoryRequirementsKHR VkVideoSessionMemoryRequirementsKHRInit(void)\n{\n    VkVideoSessionMemoryRequirementsKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_SESSION_MEMORY_REQUIREMENTS_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkBindVideoSessionMemoryInfoKHR VkBindVideoSessionMemoryInfoKHRInit(void)\n{\n    VkBindVideoSessionMemoryInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_BIND_VIDEO_SESSION_MEMORY_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoSessionCreateInfoKHR VkVideoSessionCreateInfoKHRInit(void)\n{\n    VkVideoSessionCreateInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_SESSION_CREATE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoSessionParametersCreateInfoKHR VkVideoSessionParametersCreateInfoKHRInit(void)\n{\n    VkVideoSessionParametersCreateInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoSessionParametersUpdateInfoKHR VkVideoSessionParametersUpdateInfoKHRInit(void)\n{\n    VkVideoSessionParametersUpdateInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_UPDATE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoBeginCodingInfoKHR VkVideoBeginCodingInfoKHRInit(void)\n{\n    VkVideoBeginCodingInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_BEGIN_CODING_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoEndCodingInfoKHR VkVideoEndCodingInfoKHRInit(void)\n{\n    VkVideoEndCodingInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_END_CODING_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoCodingControlInfoKHR VkVideoCodingControlInfoKHRInit(void)\n{\n    VkVideoCodingControlInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_CODING_CONTROL_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoDecodeCapabilitiesKHR VkVideoDecodeCapabilitiesKHRInit(void)\n{\n    VkVideoDecodeCapabilitiesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_CAPABILITIES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoDecodeUsageInfoKHR VkVideoDecodeUsageInfoKHRInit(void)\n{\n    VkVideoDecodeUsageInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_USAGE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoDecodeInfoKHR VkVideoDecodeInfoKHRInit(void)\n{\n    VkVideoDecodeInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceTransformFeedbackFeaturesEXT VkPhysicalDeviceTransformFeedbackFeaturesEXTInit(void)\n{\n    VkPhysicalDeviceTransformFeedbackFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceTransformFeedbackPropertiesEXT VkPhysicalDeviceTransformFeedbackPropertiesEXTInit(void)\n{\n    VkPhysicalDeviceTransformFeedbackPropertiesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPipelineRasterizationStateStreamCreateInfoEXT VkPipelineRasterizationStateStreamCreateInfoEXTInit(void)\n{\n    VkPipelineRasterizationStateStreamCreateInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkCuModuleCreateInfoNVX VkCuModuleCreateInfoNVXInit(void)\n{\n    VkCuModuleCreateInfoNVX result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX;\n    return result;\n}\n\nstatic VKBIND_INLINE VkCuModuleTexturingModeCreateInfoNVX VkCuModuleTexturingModeCreateInfoNVXInit(void)\n{\n    VkCuModuleTexturingModeCreateInfoNVX result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_CU_MODULE_TEXTURING_MODE_CREATE_INFO_NVX;\n    return result;\n}\n\nstatic VKBIND_INLINE VkCuFunctionCreateInfoNVX VkCuFunctionCreateInfoNVXInit(void)\n{\n    VkCuFunctionCreateInfoNVX result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX;\n    return result;\n}\n\nstatic VKBIND_INLINE VkCuLaunchInfoNVX VkCuLaunchInfoNVXInit(void)\n{\n    VkCuLaunchInfoNVX result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX;\n    return result;\n}\n\nstatic VKBIND_INLINE VkImageViewHandleInfoNVX VkImageViewHandleInfoNVXInit(void)\n{\n    VkImageViewHandleInfoNVX result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX;\n    return result;\n}\n\nstatic VKBIND_INLINE VkImageViewAddressPropertiesNVX VkImageViewAddressPropertiesNVXInit(void)\n{\n    VkImageViewAddressPropertiesNVX result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoEncodeH264CapabilitiesKHR VkVideoEncodeH264CapabilitiesKHRInit(void)\n{\n    VkVideoEncodeH264CapabilitiesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_CAPABILITIES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoEncodeH264QualityLevelPropertiesKHR VkVideoEncodeH264QualityLevelPropertiesKHRInit(void)\n{\n    VkVideoEncodeH264QualityLevelPropertiesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_QUALITY_LEVEL_PROPERTIES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoEncodeH264SessionCreateInfoKHR VkVideoEncodeH264SessionCreateInfoKHRInit(void)\n{\n    VkVideoEncodeH264SessionCreateInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_CREATE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoEncodeH264SessionParametersAddInfoKHR VkVideoEncodeH264SessionParametersAddInfoKHRInit(void)\n{\n    VkVideoEncodeH264SessionParametersAddInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoEncodeH264SessionParametersCreateInfoKHR VkVideoEncodeH264SessionParametersCreateInfoKHRInit(void)\n{\n    VkVideoEncodeH264SessionParametersCreateInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoEncodeH264SessionParametersGetInfoKHR VkVideoEncodeH264SessionParametersGetInfoKHRInit(void)\n{\n    VkVideoEncodeH264SessionParametersGetInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_GET_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoEncodeH264SessionParametersFeedbackInfoKHR VkVideoEncodeH264SessionParametersFeedbackInfoKHRInit(void)\n{\n    VkVideoEncodeH264SessionParametersFeedbackInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_FEEDBACK_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoEncodeH264NaluSliceInfoKHR VkVideoEncodeH264NaluSliceInfoKHRInit(void)\n{\n    VkVideoEncodeH264NaluSliceInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_NALU_SLICE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoEncodeH264PictureInfoKHR VkVideoEncodeH264PictureInfoKHRInit(void)\n{\n    VkVideoEncodeH264PictureInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PICTURE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoEncodeH264DpbSlotInfoKHR VkVideoEncodeH264DpbSlotInfoKHRInit(void)\n{\n    VkVideoEncodeH264DpbSlotInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_DPB_SLOT_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoEncodeH264ProfileInfoKHR VkVideoEncodeH264ProfileInfoKHRInit(void)\n{\n    VkVideoEncodeH264ProfileInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PROFILE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoEncodeH264RateControlInfoKHR VkVideoEncodeH264RateControlInfoKHRInit(void)\n{\n    VkVideoEncodeH264RateControlInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoEncodeH264RateControlLayerInfoKHR VkVideoEncodeH264RateControlLayerInfoKHRInit(void)\n{\n    VkVideoEncodeH264RateControlLayerInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_LAYER_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoEncodeH264GopRemainingFrameInfoKHR VkVideoEncodeH264GopRemainingFrameInfoKHRInit(void)\n{\n    VkVideoEncodeH264GopRemainingFrameInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_GOP_REMAINING_FRAME_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoEncodeH265CapabilitiesKHR VkVideoEncodeH265CapabilitiesKHRInit(void)\n{\n    VkVideoEncodeH265CapabilitiesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_CAPABILITIES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoEncodeH265SessionCreateInfoKHR VkVideoEncodeH265SessionCreateInfoKHRInit(void)\n{\n    VkVideoEncodeH265SessionCreateInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_CREATE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoEncodeH265QualityLevelPropertiesKHR VkVideoEncodeH265QualityLevelPropertiesKHRInit(void)\n{\n    VkVideoEncodeH265QualityLevelPropertiesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_QUALITY_LEVEL_PROPERTIES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoEncodeH265SessionParametersAddInfoKHR VkVideoEncodeH265SessionParametersAddInfoKHRInit(void)\n{\n    VkVideoEncodeH265SessionParametersAddInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoEncodeH265SessionParametersCreateInfoKHR VkVideoEncodeH265SessionParametersCreateInfoKHRInit(void)\n{\n    VkVideoEncodeH265SessionParametersCreateInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoEncodeH265SessionParametersGetInfoKHR VkVideoEncodeH265SessionParametersGetInfoKHRInit(void)\n{\n    VkVideoEncodeH265SessionParametersGetInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_GET_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoEncodeH265SessionParametersFeedbackInfoKHR VkVideoEncodeH265SessionParametersFeedbackInfoKHRInit(void)\n{\n    VkVideoEncodeH265SessionParametersFeedbackInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_FEEDBACK_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoEncodeH265NaluSliceSegmentInfoKHR VkVideoEncodeH265NaluSliceSegmentInfoKHRInit(void)\n{\n    VkVideoEncodeH265NaluSliceSegmentInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_NALU_SLICE_SEGMENT_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoEncodeH265PictureInfoKHR VkVideoEncodeH265PictureInfoKHRInit(void)\n{\n    VkVideoEncodeH265PictureInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PICTURE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoEncodeH265DpbSlotInfoKHR VkVideoEncodeH265DpbSlotInfoKHRInit(void)\n{\n    VkVideoEncodeH265DpbSlotInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_DPB_SLOT_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoEncodeH265ProfileInfoKHR VkVideoEncodeH265ProfileInfoKHRInit(void)\n{\n    VkVideoEncodeH265ProfileInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PROFILE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoEncodeH265RateControlInfoKHR VkVideoEncodeH265RateControlInfoKHRInit(void)\n{\n    VkVideoEncodeH265RateControlInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoEncodeH265RateControlLayerInfoKHR VkVideoEncodeH265RateControlLayerInfoKHRInit(void)\n{\n    VkVideoEncodeH265RateControlLayerInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_LAYER_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoEncodeH265GopRemainingFrameInfoKHR VkVideoEncodeH265GopRemainingFrameInfoKHRInit(void)\n{\n    VkVideoEncodeH265GopRemainingFrameInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_GOP_REMAINING_FRAME_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoDecodeH264ProfileInfoKHR VkVideoDecodeH264ProfileInfoKHRInit(void)\n{\n    VkVideoDecodeH264ProfileInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoDecodeH264CapabilitiesKHR VkVideoDecodeH264CapabilitiesKHRInit(void)\n{\n    VkVideoDecodeH264CapabilitiesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoDecodeH264SessionParametersAddInfoKHR VkVideoDecodeH264SessionParametersAddInfoKHRInit(void)\n{\n    VkVideoDecodeH264SessionParametersAddInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoDecodeH264SessionParametersCreateInfoKHR VkVideoDecodeH264SessionParametersCreateInfoKHRInit(void)\n{\n    VkVideoDecodeH264SessionParametersCreateInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoDecodeH264PictureInfoKHR VkVideoDecodeH264PictureInfoKHRInit(void)\n{\n    VkVideoDecodeH264PictureInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoDecodeH264DpbSlotInfoKHR VkVideoDecodeH264DpbSlotInfoKHRInit(void)\n{\n    VkVideoDecodeH264DpbSlotInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkTextureLODGatherFormatPropertiesAMD VkTextureLODGatherFormatPropertiesAMDInit(void)\n{\n    VkTextureLODGatherFormatPropertiesAMD result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceCornerSampledImageFeaturesNV VkPhysicalDeviceCornerSampledImageFeaturesNVInit(void)\n{\n    VkPhysicalDeviceCornerSampledImageFeaturesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkImageViewASTCDecodeModeEXT VkImageViewASTCDecodeModeEXTInit(void)\n{\n    VkImageViewASTCDecodeModeEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceASTCDecodeFeaturesEXT VkPhysicalDeviceASTCDecodeFeaturesEXTInit(void)\n{\n    VkPhysicalDeviceASTCDecodeFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkExternalMemoryImageCreateInfoNV VkExternalMemoryImageCreateInfoNVInit(void)\n{\n    VkExternalMemoryImageCreateInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkExportMemoryAllocateInfoNV VkExportMemoryAllocateInfoNVInit(void)\n{\n    VkExportMemoryAllocateInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkImportMemoryFdInfoKHR VkImportMemoryFdInfoKHRInit(void)\n{\n    VkImportMemoryFdInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkMemoryFdPropertiesKHR VkMemoryFdPropertiesKHRInit(void)\n{\n    VkMemoryFdPropertiesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkMemoryGetFdInfoKHR VkMemoryGetFdInfoKHRInit(void)\n{\n    VkMemoryGetFdInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkImportSemaphoreFdInfoKHR VkImportSemaphoreFdInfoKHRInit(void)\n{\n    VkImportSemaphoreFdInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSemaphoreGetFdInfoKHR VkSemaphoreGetFdInfoKHRInit(void)\n{\n    VkSemaphoreGetFdInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkConditionalRenderingBeginInfoEXT VkConditionalRenderingBeginInfoEXTInit(void)\n{\n    VkConditionalRenderingBeginInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceConditionalRenderingFeaturesEXT VkPhysicalDeviceConditionalRenderingFeaturesEXTInit(void)\n{\n    VkPhysicalDeviceConditionalRenderingFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkCommandBufferInheritanceConditionalRenderingInfoEXT VkCommandBufferInheritanceConditionalRenderingInfoEXTInit(void)\n{\n    VkCommandBufferInheritanceConditionalRenderingInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPresentRegionsKHR VkPresentRegionsKHRInit(void)\n{\n    VkPresentRegionsKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPipelineViewportWScalingStateCreateInfoNV VkPipelineViewportWScalingStateCreateInfoNVInit(void)\n{\n    VkPipelineViewportWScalingStateCreateInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSurfaceCapabilities2EXT VkSurfaceCapabilities2EXTInit(void)\n{\n    VkSurfaceCapabilities2EXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDisplayPowerInfoEXT VkDisplayPowerInfoEXTInit(void)\n{\n    VkDisplayPowerInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDeviceEventInfoEXT VkDeviceEventInfoEXTInit(void)\n{\n    VkDeviceEventInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDisplayEventInfoEXT VkDisplayEventInfoEXTInit(void)\n{\n    VkDisplayEventInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSwapchainCounterCreateInfoEXT VkSwapchainCounterCreateInfoEXTInit(void)\n{\n    VkSwapchainCounterCreateInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPresentTimesInfoGOOGLE VkPresentTimesInfoGOOGLEInit(void)\n{\n    VkPresentTimesInfoGOOGLE result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVXInit(void)\n{\n    VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX;\n    return result;\n}\n\nstatic VKBIND_INLINE VkMultiviewPerViewAttributesInfoNVX VkMultiviewPerViewAttributesInfoNVXInit(void)\n{\n    VkMultiviewPerViewAttributesInfoNVX result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPipelineViewportSwizzleStateCreateInfoNV VkPipelineViewportSwizzleStateCreateInfoNVInit(void)\n{\n    VkPipelineViewportSwizzleStateCreateInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceDiscardRectanglePropertiesEXT VkPhysicalDeviceDiscardRectanglePropertiesEXTInit(void)\n{\n    VkPhysicalDeviceDiscardRectanglePropertiesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPipelineDiscardRectangleStateCreateInfoEXT VkPipelineDiscardRectangleStateCreateInfoEXTInit(void)\n{\n    VkPipelineDiscardRectangleStateCreateInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceConservativeRasterizationPropertiesEXT VkPhysicalDeviceConservativeRasterizationPropertiesEXTInit(void)\n{\n    VkPhysicalDeviceConservativeRasterizationPropertiesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPipelineRasterizationConservativeStateCreateInfoEXT VkPipelineRasterizationConservativeStateCreateInfoEXTInit(void)\n{\n    VkPipelineRasterizationConservativeStateCreateInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceDepthClipEnableFeaturesEXT VkPhysicalDeviceDepthClipEnableFeaturesEXTInit(void)\n{\n    VkPhysicalDeviceDepthClipEnableFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPipelineRasterizationDepthClipStateCreateInfoEXT VkPipelineRasterizationDepthClipStateCreateInfoEXTInit(void)\n{\n    VkPipelineRasterizationDepthClipStateCreateInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkHdrMetadataEXT VkHdrMetadataEXTInit(void)\n{\n    VkHdrMetadataEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_HDR_METADATA_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMGInit(void)\n{\n    VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RELAXED_LINE_RASTERIZATION_FEATURES_IMG;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSharedPresentSurfaceCapabilitiesKHR VkSharedPresentSurfaceCapabilitiesKHRInit(void)\n{\n    VkSharedPresentSurfaceCapabilitiesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkImportFenceFdInfoKHR VkImportFenceFdInfoKHRInit(void)\n{\n    VkImportFenceFdInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkFenceGetFdInfoKHR VkFenceGetFdInfoKHRInit(void)\n{\n    VkFenceGetFdInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDevicePerformanceQueryFeaturesKHR VkPhysicalDevicePerformanceQueryFeaturesKHRInit(void)\n{\n    VkPhysicalDevicePerformanceQueryFeaturesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDevicePerformanceQueryPropertiesKHR VkPhysicalDevicePerformanceQueryPropertiesKHRInit(void)\n{\n    VkPhysicalDevicePerformanceQueryPropertiesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPerformanceCounterKHR VkPerformanceCounterKHRInit(void)\n{\n    VkPerformanceCounterKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPerformanceCounterDescriptionKHR VkPerformanceCounterDescriptionKHRInit(void)\n{\n    VkPerformanceCounterDescriptionKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkQueryPoolPerformanceCreateInfoKHR VkQueryPoolPerformanceCreateInfoKHRInit(void)\n{\n    VkQueryPoolPerformanceCreateInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkAcquireProfilingLockInfoKHR VkAcquireProfilingLockInfoKHRInit(void)\n{\n    VkAcquireProfilingLockInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPerformanceQuerySubmitInfoKHR VkPerformanceQuerySubmitInfoKHRInit(void)\n{\n    VkPerformanceQuerySubmitInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPerformanceQueryReservationInfoKHR VkPerformanceQueryReservationInfoKHRInit(void)\n{\n    VkPerformanceQueryReservationInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_RESERVATION_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceSurfaceInfo2KHR VkPhysicalDeviceSurfaceInfo2KHRInit(void)\n{\n    VkPhysicalDeviceSurfaceInfo2KHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSurfaceCapabilities2KHR VkSurfaceCapabilities2KHRInit(void)\n{\n    VkSurfaceCapabilities2KHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSurfaceFormat2KHR VkSurfaceFormat2KHRInit(void)\n{\n    VkSurfaceFormat2KHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDisplayProperties2KHR VkDisplayProperties2KHRInit(void)\n{\n    VkDisplayProperties2KHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDisplayPlaneProperties2KHR VkDisplayPlaneProperties2KHRInit(void)\n{\n    VkDisplayPlaneProperties2KHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDisplayModeProperties2KHR VkDisplayModeProperties2KHRInit(void)\n{\n    VkDisplayModeProperties2KHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDisplayPlaneInfo2KHR VkDisplayPlaneInfo2KHRInit(void)\n{\n    VkDisplayPlaneInfo2KHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDisplayPlaneCapabilities2KHR VkDisplayPlaneCapabilities2KHRInit(void)\n{\n    VkDisplayPlaneCapabilities2KHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDedicatedAllocationImageCreateInfoNV VkDedicatedAllocationImageCreateInfoNVInit(void)\n{\n    VkDedicatedAllocationImageCreateInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDedicatedAllocationBufferCreateInfoNV VkDedicatedAllocationBufferCreateInfoNVInit(void)\n{\n    VkDedicatedAllocationBufferCreateInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDedicatedAllocationMemoryAllocateInfoNV VkDedicatedAllocationMemoryAllocateInfoNVInit(void)\n{\n    VkDedicatedAllocationMemoryAllocateInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDebugUtilsLabelEXT VkDebugUtilsLabelEXTInit(void)\n{\n    VkDebugUtilsLabelEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDebugUtilsObjectNameInfoEXT VkDebugUtilsObjectNameInfoEXTInit(void)\n{\n    VkDebugUtilsObjectNameInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDebugUtilsMessengerCallbackDataEXT VkDebugUtilsMessengerCallbackDataEXTInit(void)\n{\n    VkDebugUtilsMessengerCallbackDataEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDebugUtilsMessengerCreateInfoEXT VkDebugUtilsMessengerCreateInfoEXTInit(void)\n{\n    VkDebugUtilsMessengerCreateInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDebugUtilsObjectTagInfoEXT VkDebugUtilsObjectTagInfoEXTInit(void)\n{\n    VkDebugUtilsObjectTagInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDebugMarkerObjectNameInfoEXT VkDebugMarkerObjectNameInfoEXTInit(void)\n{\n    VkDebugMarkerObjectNameInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDebugMarkerObjectTagInfoEXT VkDebugMarkerObjectTagInfoEXTInit(void)\n{\n    VkDebugMarkerObjectTagInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDebugMarkerMarkerInfoEXT VkDebugMarkerMarkerInfoEXTInit(void)\n{\n    VkDebugMarkerMarkerInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDebugReportCallbackCreateInfoEXT VkDebugReportCallbackCreateInfoEXTInit(void)\n{\n    VkDebugReportCallbackCreateInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkTexelBufferDescriptorInfoEXT VkTexelBufferDescriptorInfoEXTInit(void)\n{\n    VkTexelBufferDescriptorInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_TEXEL_BUFFER_DESCRIPTOR_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkImageDescriptorInfoEXT VkImageDescriptorInfoEXTInit(void)\n{\n    VkImageDescriptorInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_IMAGE_DESCRIPTOR_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkTensorViewCreateInfoARM VkTensorViewCreateInfoARMInit(void)\n{\n    VkTensorViewCreateInfoARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_TENSOR_VIEW_CREATE_INFO_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkResourceDescriptorInfoEXT VkResourceDescriptorInfoEXTInit(void)\n{\n    VkResourceDescriptorInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_RESOURCE_DESCRIPTOR_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkBindHeapInfoEXT VkBindHeapInfoEXTInit(void)\n{\n    VkBindHeapInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_BIND_HEAP_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPushDataInfoEXT VkPushDataInfoEXTInit(void)\n{\n    VkPushDataInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PUSH_DATA_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDescriptorSetAndBindingMappingEXT VkDescriptorSetAndBindingMappingEXTInit(void)\n{\n    VkDescriptorSetAndBindingMappingEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_AND_BINDING_MAPPING_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkShaderDescriptorSetAndBindingMappingInfoEXT VkShaderDescriptorSetAndBindingMappingInfoEXTInit(void)\n{\n    VkShaderDescriptorSetAndBindingMappingInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SHADER_DESCRIPTOR_SET_AND_BINDING_MAPPING_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkOpaqueCaptureDataCreateInfoEXT VkOpaqueCaptureDataCreateInfoEXTInit(void)\n{\n    VkOpaqueCaptureDataCreateInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_OPAQUE_CAPTURE_DATA_CREATE_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceDescriptorHeapFeaturesEXT VkPhysicalDeviceDescriptorHeapFeaturesEXTInit(void)\n{\n    VkPhysicalDeviceDescriptorHeapFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_HEAP_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceDescriptorHeapPropertiesEXT VkPhysicalDeviceDescriptorHeapPropertiesEXTInit(void)\n{\n    VkPhysicalDeviceDescriptorHeapPropertiesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_HEAP_PROPERTIES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkCommandBufferInheritanceDescriptorHeapInfoEXT VkCommandBufferInheritanceDescriptorHeapInfoEXTInit(void)\n{\n    VkCommandBufferInheritanceDescriptorHeapInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_DESCRIPTOR_HEAP_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSamplerCustomBorderColorIndexCreateInfoEXT VkSamplerCustomBorderColorIndexCreateInfoEXTInit(void)\n{\n    VkSamplerCustomBorderColorIndexCreateInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_INDEX_CREATE_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSamplerCustomBorderColorCreateInfoEXT VkSamplerCustomBorderColorCreateInfoEXTInit(void)\n{\n    VkSamplerCustomBorderColorCreateInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkIndirectCommandsLayoutPushDataTokenNV VkIndirectCommandsLayoutPushDataTokenNVInit(void)\n{\n    VkIndirectCommandsLayoutPushDataTokenNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_PUSH_DATA_TOKEN_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSubsampledImageFormatPropertiesEXT VkSubsampledImageFormatPropertiesEXTInit(void)\n{\n    VkSubsampledImageFormatPropertiesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SUBSAMPLED_IMAGE_FORMAT_PROPERTIES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceDescriptorHeapTensorPropertiesARM VkPhysicalDeviceDescriptorHeapTensorPropertiesARMInit(void)\n{\n    VkPhysicalDeviceDescriptorHeapTensorPropertiesARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_HEAP_TENSOR_PROPERTIES_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkAttachmentSampleCountInfoAMD VkAttachmentSampleCountInfoAMDInit(void)\n{\n    VkAttachmentSampleCountInfoAMD result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceShaderBfloat16FeaturesKHR VkPhysicalDeviceShaderBfloat16FeaturesKHRInit(void)\n{\n    VkPhysicalDeviceShaderBfloat16FeaturesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_BFLOAT16_FEATURES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSampleLocationsInfoEXT VkSampleLocationsInfoEXTInit(void)\n{\n    VkSampleLocationsInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkRenderPassSampleLocationsBeginInfoEXT VkRenderPassSampleLocationsBeginInfoEXTInit(void)\n{\n    VkRenderPassSampleLocationsBeginInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPipelineSampleLocationsStateCreateInfoEXT VkPipelineSampleLocationsStateCreateInfoEXTInit(void)\n{\n    VkPipelineSampleLocationsStateCreateInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceSampleLocationsPropertiesEXT VkPhysicalDeviceSampleLocationsPropertiesEXTInit(void)\n{\n    VkPhysicalDeviceSampleLocationsPropertiesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkMultisamplePropertiesEXT VkMultisamplePropertiesEXTInit(void)\n{\n    VkMultisamplePropertiesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT VkPhysicalDeviceBlendOperationAdvancedFeaturesEXTInit(void)\n{\n    VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT VkPhysicalDeviceBlendOperationAdvancedPropertiesEXTInit(void)\n{\n    VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPipelineColorBlendAdvancedStateCreateInfoEXT VkPipelineColorBlendAdvancedStateCreateInfoEXTInit(void)\n{\n    VkPipelineColorBlendAdvancedStateCreateInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPipelineCoverageToColorStateCreateInfoNV VkPipelineCoverageToColorStateCreateInfoNVInit(void)\n{\n    VkPipelineCoverageToColorStateCreateInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkAccelerationStructureGeometryTrianglesDataKHR VkAccelerationStructureGeometryTrianglesDataKHRInit(void)\n{\n    VkAccelerationStructureGeometryTrianglesDataKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkAccelerationStructureGeometryAabbsDataKHR VkAccelerationStructureGeometryAabbsDataKHRInit(void)\n{\n    VkAccelerationStructureGeometryAabbsDataKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkAccelerationStructureGeometryInstancesDataKHR VkAccelerationStructureGeometryInstancesDataKHRInit(void)\n{\n    VkAccelerationStructureGeometryInstancesDataKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkAccelerationStructureGeometryKHR VkAccelerationStructureGeometryKHRInit(void)\n{\n    VkAccelerationStructureGeometryKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkAccelerationStructureBuildGeometryInfoKHR VkAccelerationStructureBuildGeometryInfoKHRInit(void)\n{\n    VkAccelerationStructureBuildGeometryInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkAccelerationStructureCreateInfoKHR VkAccelerationStructureCreateInfoKHRInit(void)\n{\n    VkAccelerationStructureCreateInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkWriteDescriptorSetAccelerationStructureKHR VkWriteDescriptorSetAccelerationStructureKHRInit(void)\n{\n    VkWriteDescriptorSetAccelerationStructureKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceAccelerationStructureFeaturesKHR VkPhysicalDeviceAccelerationStructureFeaturesKHRInit(void)\n{\n    VkPhysicalDeviceAccelerationStructureFeaturesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceAccelerationStructurePropertiesKHR VkPhysicalDeviceAccelerationStructurePropertiesKHRInit(void)\n{\n    VkPhysicalDeviceAccelerationStructurePropertiesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkAccelerationStructureDeviceAddressInfoKHR VkAccelerationStructureDeviceAddressInfoKHRInit(void)\n{\n    VkAccelerationStructureDeviceAddressInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkAccelerationStructureVersionInfoKHR VkAccelerationStructureVersionInfoKHRInit(void)\n{\n    VkAccelerationStructureVersionInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkCopyAccelerationStructureToMemoryInfoKHR VkCopyAccelerationStructureToMemoryInfoKHRInit(void)\n{\n    VkCopyAccelerationStructureToMemoryInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkCopyMemoryToAccelerationStructureInfoKHR VkCopyMemoryToAccelerationStructureInfoKHRInit(void)\n{\n    VkCopyMemoryToAccelerationStructureInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkCopyAccelerationStructureInfoKHR VkCopyAccelerationStructureInfoKHRInit(void)\n{\n    VkCopyAccelerationStructureInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkAccelerationStructureBuildSizesInfoKHR VkAccelerationStructureBuildSizesInfoKHRInit(void)\n{\n    VkAccelerationStructureBuildSizesInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkRayTracingShaderGroupCreateInfoKHR VkRayTracingShaderGroupCreateInfoKHRInit(void)\n{\n    VkRayTracingShaderGroupCreateInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPipelineLibraryCreateInfoKHR VkPipelineLibraryCreateInfoKHRInit(void)\n{\n    VkPipelineLibraryCreateInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkRayTracingPipelineInterfaceCreateInfoKHR VkRayTracingPipelineInterfaceCreateInfoKHRInit(void)\n{\n    VkRayTracingPipelineInterfaceCreateInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkRayTracingPipelineCreateInfoKHR VkRayTracingPipelineCreateInfoKHRInit(void)\n{\n    VkRayTracingPipelineCreateInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceRayTracingPipelineFeaturesKHR VkPhysicalDeviceRayTracingPipelineFeaturesKHRInit(void)\n{\n    VkPhysicalDeviceRayTracingPipelineFeaturesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceRayTracingPipelinePropertiesKHR VkPhysicalDeviceRayTracingPipelinePropertiesKHRInit(void)\n{\n    VkPhysicalDeviceRayTracingPipelinePropertiesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceRayQueryFeaturesKHR VkPhysicalDeviceRayQueryFeaturesKHRInit(void)\n{\n    VkPhysicalDeviceRayQueryFeaturesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPipelineCoverageModulationStateCreateInfoNV VkPipelineCoverageModulationStateCreateInfoNVInit(void)\n{\n    VkPipelineCoverageModulationStateCreateInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceShaderSMBuiltinsPropertiesNV VkPhysicalDeviceShaderSMBuiltinsPropertiesNVInit(void)\n{\n    VkPhysicalDeviceShaderSMBuiltinsPropertiesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceShaderSMBuiltinsFeaturesNV VkPhysicalDeviceShaderSMBuiltinsFeaturesNVInit(void)\n{\n    VkPhysicalDeviceShaderSMBuiltinsFeaturesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDrmFormatModifierPropertiesListEXT VkDrmFormatModifierPropertiesListEXTInit(void)\n{\n    VkDrmFormatModifierPropertiesListEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceImageDrmFormatModifierInfoEXT VkPhysicalDeviceImageDrmFormatModifierInfoEXTInit(void)\n{\n    VkPhysicalDeviceImageDrmFormatModifierInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkImageDrmFormatModifierListCreateInfoEXT VkImageDrmFormatModifierListCreateInfoEXTInit(void)\n{\n    VkImageDrmFormatModifierListCreateInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkImageDrmFormatModifierExplicitCreateInfoEXT VkImageDrmFormatModifierExplicitCreateInfoEXTInit(void)\n{\n    VkImageDrmFormatModifierExplicitCreateInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkImageDrmFormatModifierPropertiesEXT VkImageDrmFormatModifierPropertiesEXTInit(void)\n{\n    VkImageDrmFormatModifierPropertiesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDrmFormatModifierPropertiesList2EXT VkDrmFormatModifierPropertiesList2EXTInit(void)\n{\n    VkDrmFormatModifierPropertiesList2EXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkValidationCacheCreateInfoEXT VkValidationCacheCreateInfoEXTInit(void)\n{\n    VkValidationCacheCreateInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkShaderModuleValidationCacheCreateInfoEXT VkShaderModuleValidationCacheCreateInfoEXTInit(void)\n{\n    VkShaderModuleValidationCacheCreateInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPipelineViewportShadingRateImageStateCreateInfoNV VkPipelineViewportShadingRateImageStateCreateInfoNVInit(void)\n{\n    VkPipelineViewportShadingRateImageStateCreateInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceShadingRateImageFeaturesNV VkPhysicalDeviceShadingRateImageFeaturesNVInit(void)\n{\n    VkPhysicalDeviceShadingRateImageFeaturesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceShadingRateImagePropertiesNV VkPhysicalDeviceShadingRateImagePropertiesNVInit(void)\n{\n    VkPhysicalDeviceShadingRateImagePropertiesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPipelineViewportCoarseSampleOrderStateCreateInfoNV VkPipelineViewportCoarseSampleOrderStateCreateInfoNVInit(void)\n{\n    VkPipelineViewportCoarseSampleOrderStateCreateInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkRayTracingShaderGroupCreateInfoNV VkRayTracingShaderGroupCreateInfoNVInit(void)\n{\n    VkRayTracingShaderGroupCreateInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkRayTracingPipelineCreateInfoNV VkRayTracingPipelineCreateInfoNVInit(void)\n{\n    VkRayTracingPipelineCreateInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkGeometryTrianglesNV VkGeometryTrianglesNVInit(void)\n{\n    VkGeometryTrianglesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkGeometryAABBNV VkGeometryAABBNVInit(void)\n{\n    VkGeometryAABBNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkGeometryNV VkGeometryNVInit(void)\n{\n    VkGeometryNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_GEOMETRY_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkAccelerationStructureInfoNV VkAccelerationStructureInfoNVInit(void)\n{\n    VkAccelerationStructureInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkAccelerationStructureCreateInfoNV VkAccelerationStructureCreateInfoNVInit(void)\n{\n    VkAccelerationStructureCreateInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkBindAccelerationStructureMemoryInfoNV VkBindAccelerationStructureMemoryInfoNVInit(void)\n{\n    VkBindAccelerationStructureMemoryInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkWriteDescriptorSetAccelerationStructureNV VkWriteDescriptorSetAccelerationStructureNVInit(void)\n{\n    VkWriteDescriptorSetAccelerationStructureNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkAccelerationStructureMemoryRequirementsInfoNV VkAccelerationStructureMemoryRequirementsInfoNVInit(void)\n{\n    VkAccelerationStructureMemoryRequirementsInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceRayTracingPropertiesNV VkPhysicalDeviceRayTracingPropertiesNVInit(void)\n{\n    VkPhysicalDeviceRayTracingPropertiesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV VkPhysicalDeviceRepresentativeFragmentTestFeaturesNVInit(void)\n{\n    VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPipelineRepresentativeFragmentTestStateCreateInfoNV VkPipelineRepresentativeFragmentTestStateCreateInfoNVInit(void)\n{\n    VkPipelineRepresentativeFragmentTestStateCreateInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceImageViewImageFormatInfoEXT VkPhysicalDeviceImageViewImageFormatInfoEXTInit(void)\n{\n    VkPhysicalDeviceImageViewImageFormatInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkFilterCubicImageViewImageFormatPropertiesEXT VkFilterCubicImageViewImageFormatPropertiesEXTInit(void)\n{\n    VkFilterCubicImageViewImageFormatPropertiesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceCooperativeMatrixConversionFeaturesQCOM VkPhysicalDeviceCooperativeMatrixConversionFeaturesQCOMInit(void)\n{\n    VkPhysicalDeviceCooperativeMatrixConversionFeaturesQCOM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_CONVERSION_FEATURES_QCOM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkImportMemoryHostPointerInfoEXT VkImportMemoryHostPointerInfoEXTInit(void)\n{\n    VkImportMemoryHostPointerInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkMemoryHostPointerPropertiesEXT VkMemoryHostPointerPropertiesEXTInit(void)\n{\n    VkMemoryHostPointerPropertiesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceExternalMemoryHostPropertiesEXT VkPhysicalDeviceExternalMemoryHostPropertiesEXTInit(void)\n{\n    VkPhysicalDeviceExternalMemoryHostPropertiesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceShaderClockFeaturesKHR VkPhysicalDeviceShaderClockFeaturesKHRInit(void)\n{\n    VkPhysicalDeviceShaderClockFeaturesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPipelineCompilerControlCreateInfoAMD VkPipelineCompilerControlCreateInfoAMDInit(void)\n{\n    VkPipelineCompilerControlCreateInfoAMD result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceShaderCorePropertiesAMD VkPhysicalDeviceShaderCorePropertiesAMDInit(void)\n{\n    VkPhysicalDeviceShaderCorePropertiesAMD result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoDecodeH265ProfileInfoKHR VkVideoDecodeH265ProfileInfoKHRInit(void)\n{\n    VkVideoDecodeH265ProfileInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoDecodeH265CapabilitiesKHR VkVideoDecodeH265CapabilitiesKHRInit(void)\n{\n    VkVideoDecodeH265CapabilitiesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoDecodeH265SessionParametersAddInfoKHR VkVideoDecodeH265SessionParametersAddInfoKHRInit(void)\n{\n    VkVideoDecodeH265SessionParametersAddInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoDecodeH265SessionParametersCreateInfoKHR VkVideoDecodeH265SessionParametersCreateInfoKHRInit(void)\n{\n    VkVideoDecodeH265SessionParametersCreateInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoDecodeH265PictureInfoKHR VkVideoDecodeH265PictureInfoKHRInit(void)\n{\n    VkVideoDecodeH265PictureInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoDecodeH265DpbSlotInfoKHR VkVideoDecodeH265DpbSlotInfoKHRInit(void)\n{\n    VkVideoDecodeH265DpbSlotInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDeviceMemoryOverallocationCreateInfoAMD VkDeviceMemoryOverallocationCreateInfoAMDInit(void)\n{\n    VkDeviceMemoryOverallocationCreateInfoAMD result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceMeshShaderFeaturesNV VkPhysicalDeviceMeshShaderFeaturesNVInit(void)\n{\n    VkPhysicalDeviceMeshShaderFeaturesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceMeshShaderPropertiesNV VkPhysicalDeviceMeshShaderPropertiesNVInit(void)\n{\n    VkPhysicalDeviceMeshShaderPropertiesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceShaderImageFootprintFeaturesNV VkPhysicalDeviceShaderImageFootprintFeaturesNVInit(void)\n{\n    VkPhysicalDeviceShaderImageFootprintFeaturesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPipelineViewportExclusiveScissorStateCreateInfoNV VkPipelineViewportExclusiveScissorStateCreateInfoNVInit(void)\n{\n    VkPipelineViewportExclusiveScissorStateCreateInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceExclusiveScissorFeaturesNV VkPhysicalDeviceExclusiveScissorFeaturesNVInit(void)\n{\n    VkPhysicalDeviceExclusiveScissorFeaturesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkQueueFamilyCheckpointPropertiesNV VkQueueFamilyCheckpointPropertiesNVInit(void)\n{\n    VkQueueFamilyCheckpointPropertiesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkCheckpointDataNV VkCheckpointDataNVInit(void)\n{\n    VkCheckpointDataNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkQueueFamilyCheckpointProperties2NV VkQueueFamilyCheckpointProperties2NVInit(void)\n{\n    VkQueueFamilyCheckpointProperties2NV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkCheckpointData2NV VkCheckpointData2NVInit(void)\n{\n    VkCheckpointData2NV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDevicePresentTimingFeaturesEXT VkPhysicalDevicePresentTimingFeaturesEXTInit(void)\n{\n    VkPhysicalDevicePresentTimingFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_TIMING_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPresentTimingSurfaceCapabilitiesEXT VkPresentTimingSurfaceCapabilitiesEXTInit(void)\n{\n    VkPresentTimingSurfaceCapabilitiesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PRESENT_TIMING_SURFACE_CAPABILITIES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSwapchainCalibratedTimestampInfoEXT VkSwapchainCalibratedTimestampInfoEXTInit(void)\n{\n    VkSwapchainCalibratedTimestampInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SWAPCHAIN_CALIBRATED_TIMESTAMP_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSwapchainTimingPropertiesEXT VkSwapchainTimingPropertiesEXTInit(void)\n{\n    VkSwapchainTimingPropertiesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SWAPCHAIN_TIMING_PROPERTIES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSwapchainTimeDomainPropertiesEXT VkSwapchainTimeDomainPropertiesEXTInit(void)\n{\n    VkSwapchainTimeDomainPropertiesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SWAPCHAIN_TIME_DOMAIN_PROPERTIES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPastPresentationTimingInfoEXT VkPastPresentationTimingInfoEXTInit(void)\n{\n    VkPastPresentationTimingInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PAST_PRESENTATION_TIMING_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPastPresentationTimingEXT VkPastPresentationTimingEXTInit(void)\n{\n    VkPastPresentationTimingEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PAST_PRESENTATION_TIMING_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPastPresentationTimingPropertiesEXT VkPastPresentationTimingPropertiesEXTInit(void)\n{\n    VkPastPresentationTimingPropertiesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PAST_PRESENTATION_TIMING_PROPERTIES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPresentTimingInfoEXT VkPresentTimingInfoEXTInit(void)\n{\n    VkPresentTimingInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PRESENT_TIMING_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPresentTimingsInfoEXT VkPresentTimingsInfoEXTInit(void)\n{\n    VkPresentTimingsInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PRESENT_TIMINGS_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTELInit(void)\n{\n    VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL;\n    return result;\n}\n\nstatic VKBIND_INLINE VkInitializePerformanceApiInfoINTEL VkInitializePerformanceApiInfoINTELInit(void)\n{\n    VkInitializePerformanceApiInfoINTEL result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL;\n    return result;\n}\n\nstatic VKBIND_INLINE VkQueryPoolPerformanceQueryCreateInfoINTEL VkQueryPoolPerformanceQueryCreateInfoINTELInit(void)\n{\n    VkQueryPoolPerformanceQueryCreateInfoINTEL result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPerformanceMarkerInfoINTEL VkPerformanceMarkerInfoINTELInit(void)\n{\n    VkPerformanceMarkerInfoINTEL result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPerformanceStreamMarkerInfoINTEL VkPerformanceStreamMarkerInfoINTELInit(void)\n{\n    VkPerformanceStreamMarkerInfoINTEL result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPerformanceOverrideInfoINTEL VkPerformanceOverrideInfoINTELInit(void)\n{\n    VkPerformanceOverrideInfoINTEL result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPerformanceConfigurationAcquireInfoINTEL VkPerformanceConfigurationAcquireInfoINTELInit(void)\n{\n    VkPerformanceConfigurationAcquireInfoINTEL result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDevicePCIBusInfoPropertiesEXT VkPhysicalDevicePCIBusInfoPropertiesEXTInit(void)\n{\n    VkPhysicalDevicePCIBusInfoPropertiesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDisplayNativeHdrSurfaceCapabilitiesAMD VkDisplayNativeHdrSurfaceCapabilitiesAMDInit(void)\n{\n    VkDisplayNativeHdrSurfaceCapabilitiesAMD result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSwapchainDisplayNativeHdrCreateInfoAMD VkSwapchainDisplayNativeHdrCreateInfoAMDInit(void)\n{\n    VkSwapchainDisplayNativeHdrCreateInfoAMD result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceFragmentDensityMapFeaturesEXT VkPhysicalDeviceFragmentDensityMapFeaturesEXTInit(void)\n{\n    VkPhysicalDeviceFragmentDensityMapFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceFragmentDensityMapPropertiesEXT VkPhysicalDeviceFragmentDensityMapPropertiesEXTInit(void)\n{\n    VkPhysicalDeviceFragmentDensityMapPropertiesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkRenderPassFragmentDensityMapCreateInfoEXT VkRenderPassFragmentDensityMapCreateInfoEXTInit(void)\n{\n    VkRenderPassFragmentDensityMapCreateInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkRenderingFragmentDensityMapAttachmentInfoEXT VkRenderingFragmentDensityMapAttachmentInfoEXTInit(void)\n{\n    VkRenderingFragmentDensityMapAttachmentInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkFragmentShadingRateAttachmentInfoKHR VkFragmentShadingRateAttachmentInfoKHRInit(void)\n{\n    VkFragmentShadingRateAttachmentInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPipelineFragmentShadingRateStateCreateInfoKHR VkPipelineFragmentShadingRateStateCreateInfoKHRInit(void)\n{\n    VkPipelineFragmentShadingRateStateCreateInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceFragmentShadingRateFeaturesKHR VkPhysicalDeviceFragmentShadingRateFeaturesKHRInit(void)\n{\n    VkPhysicalDeviceFragmentShadingRateFeaturesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceFragmentShadingRatePropertiesKHR VkPhysicalDeviceFragmentShadingRatePropertiesKHRInit(void)\n{\n    VkPhysicalDeviceFragmentShadingRatePropertiesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceFragmentShadingRateKHR VkPhysicalDeviceFragmentShadingRateKHRInit(void)\n{\n    VkPhysicalDeviceFragmentShadingRateKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkRenderingFragmentShadingRateAttachmentInfoKHR VkRenderingFragmentShadingRateAttachmentInfoKHRInit(void)\n{\n    VkRenderingFragmentShadingRateAttachmentInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceShaderCoreProperties2AMD VkPhysicalDeviceShaderCoreProperties2AMDInit(void)\n{\n    VkPhysicalDeviceShaderCoreProperties2AMD result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceCoherentMemoryFeaturesAMD VkPhysicalDeviceCoherentMemoryFeaturesAMDInit(void)\n{\n    VkPhysicalDeviceCoherentMemoryFeaturesAMD result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXTInit(void)\n{\n    VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceShaderQuadControlFeaturesKHR VkPhysicalDeviceShaderQuadControlFeaturesKHRInit(void)\n{\n    VkPhysicalDeviceShaderQuadControlFeaturesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_QUAD_CONTROL_FEATURES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceMemoryBudgetPropertiesEXT VkPhysicalDeviceMemoryBudgetPropertiesEXTInit(void)\n{\n    VkPhysicalDeviceMemoryBudgetPropertiesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceMemoryPriorityFeaturesEXT VkPhysicalDeviceMemoryPriorityFeaturesEXTInit(void)\n{\n    VkPhysicalDeviceMemoryPriorityFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkMemoryPriorityAllocateInfoEXT VkMemoryPriorityAllocateInfoEXTInit(void)\n{\n    VkMemoryPriorityAllocateInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSurfaceProtectedCapabilitiesKHR VkSurfaceProtectedCapabilitiesKHRInit(void)\n{\n    VkSurfaceProtectedCapabilitiesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNVInit(void)\n{\n    VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkValidationFeaturesEXT VkValidationFeaturesEXTInit(void)\n{\n    VkValidationFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDevicePresentWaitFeaturesKHR VkPhysicalDevicePresentWaitFeaturesKHRInit(void)\n{\n    VkPhysicalDevicePresentWaitFeaturesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkCooperativeMatrixPropertiesNV VkCooperativeMatrixPropertiesNVInit(void)\n{\n    VkCooperativeMatrixPropertiesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceCooperativeMatrixFeaturesNV VkPhysicalDeviceCooperativeMatrixFeaturesNVInit(void)\n{\n    VkPhysicalDeviceCooperativeMatrixFeaturesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceCooperativeMatrixPropertiesNV VkPhysicalDeviceCooperativeMatrixPropertiesNVInit(void)\n{\n    VkPhysicalDeviceCooperativeMatrixPropertiesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceCoverageReductionModeFeaturesNV VkPhysicalDeviceCoverageReductionModeFeaturesNVInit(void)\n{\n    VkPhysicalDeviceCoverageReductionModeFeaturesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPipelineCoverageReductionStateCreateInfoNV VkPipelineCoverageReductionStateCreateInfoNVInit(void)\n{\n    VkPipelineCoverageReductionStateCreateInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkFramebufferMixedSamplesCombinationNV VkFramebufferMixedSamplesCombinationNVInit(void)\n{\n    VkFramebufferMixedSamplesCombinationNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT VkPhysicalDeviceFragmentShaderInterlockFeaturesEXTInit(void)\n{\n    VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceYcbcrImageArraysFeaturesEXT VkPhysicalDeviceYcbcrImageArraysFeaturesEXTInit(void)\n{\n    VkPhysicalDeviceYcbcrImageArraysFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceProvokingVertexFeaturesEXT VkPhysicalDeviceProvokingVertexFeaturesEXTInit(void)\n{\n    VkPhysicalDeviceProvokingVertexFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceProvokingVertexPropertiesEXT VkPhysicalDeviceProvokingVertexPropertiesEXTInit(void)\n{\n    VkPhysicalDeviceProvokingVertexPropertiesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPipelineRasterizationProvokingVertexStateCreateInfoEXT VkPipelineRasterizationProvokingVertexStateCreateInfoEXTInit(void)\n{\n    VkPipelineRasterizationProvokingVertexStateCreateInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkHeadlessSurfaceCreateInfoEXT VkHeadlessSurfaceCreateInfoEXTInit(void)\n{\n    VkHeadlessSurfaceCreateInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceBufferDeviceAddressFeaturesEXT VkPhysicalDeviceBufferDeviceAddressFeaturesEXTInit(void)\n{\n    VkPhysicalDeviceBufferDeviceAddressFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkBufferDeviceAddressCreateInfoEXT VkBufferDeviceAddressCreateInfoEXTInit(void)\n{\n    VkBufferDeviceAddressCreateInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceShaderAtomicFloatFeaturesEXT VkPhysicalDeviceShaderAtomicFloatFeaturesEXTInit(void)\n{\n    VkPhysicalDeviceShaderAtomicFloatFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceExtendedDynamicStateFeaturesEXT VkPhysicalDeviceExtendedDynamicStateFeaturesEXTInit(void)\n{\n    VkPhysicalDeviceExtendedDynamicStateFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHRInit(void)\n{\n    VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPipelineInfoKHR VkPipelineInfoKHRInit(void)\n{\n    VkPipelineInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPipelineExecutablePropertiesKHR VkPipelineExecutablePropertiesKHRInit(void)\n{\n    VkPipelineExecutablePropertiesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPipelineExecutableInfoKHR VkPipelineExecutableInfoKHRInit(void)\n{\n    VkPipelineExecutableInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPipelineExecutableStatisticKHR VkPipelineExecutableStatisticKHRInit(void)\n{\n    VkPipelineExecutableStatisticKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPipelineExecutableInternalRepresentationKHR VkPipelineExecutableInternalRepresentationKHRInit(void)\n{\n    VkPipelineExecutableInternalRepresentationKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceMapMemoryPlacedFeaturesEXT VkPhysicalDeviceMapMemoryPlacedFeaturesEXTInit(void)\n{\n    VkPhysicalDeviceMapMemoryPlacedFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceMapMemoryPlacedPropertiesEXT VkPhysicalDeviceMapMemoryPlacedPropertiesEXTInit(void)\n{\n    VkPhysicalDeviceMapMemoryPlacedPropertiesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_PROPERTIES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkMemoryMapPlacedInfoEXT VkMemoryMapPlacedInfoEXTInit(void)\n{\n    VkMemoryMapPlacedInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_MEMORY_MAP_PLACED_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT VkPhysicalDeviceShaderAtomicFloat2FeaturesEXTInit(void)\n{\n    VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNVInit(void)\n{\n    VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNVInit(void)\n{\n    VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkGraphicsShaderGroupCreateInfoNV VkGraphicsShaderGroupCreateInfoNVInit(void)\n{\n    VkGraphicsShaderGroupCreateInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkGraphicsPipelineShaderGroupsCreateInfoNV VkGraphicsPipelineShaderGroupsCreateInfoNVInit(void)\n{\n    VkGraphicsPipelineShaderGroupsCreateInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkIndirectCommandsLayoutTokenNV VkIndirectCommandsLayoutTokenNVInit(void)\n{\n    VkIndirectCommandsLayoutTokenNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkIndirectCommandsLayoutCreateInfoNV VkIndirectCommandsLayoutCreateInfoNVInit(void)\n{\n    VkIndirectCommandsLayoutCreateInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkGeneratedCommandsInfoNV VkGeneratedCommandsInfoNVInit(void)\n{\n    VkGeneratedCommandsInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkGeneratedCommandsMemoryRequirementsInfoNV VkGeneratedCommandsMemoryRequirementsInfoNVInit(void)\n{\n    VkGeneratedCommandsMemoryRequirementsInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceInheritedViewportScissorFeaturesNV VkPhysicalDeviceInheritedViewportScissorFeaturesNVInit(void)\n{\n    VkPhysicalDeviceInheritedViewportScissorFeaturesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkCommandBufferInheritanceViewportScissorInfoNV VkCommandBufferInheritanceViewportScissorInfoNVInit(void)\n{\n    VkCommandBufferInheritanceViewportScissorInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT VkPhysicalDeviceTexelBufferAlignmentFeaturesEXTInit(void)\n{\n    VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkRenderPassTransformBeginInfoQCOM VkRenderPassTransformBeginInfoQCOMInit(void)\n{\n    VkRenderPassTransformBeginInfoQCOM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkCommandBufferInheritanceRenderPassTransformInfoQCOM VkCommandBufferInheritanceRenderPassTransformInfoQCOMInit(void)\n{\n    VkCommandBufferInheritanceRenderPassTransformInfoQCOM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceDepthBiasControlFeaturesEXT VkPhysicalDeviceDepthBiasControlFeaturesEXTInit(void)\n{\n    VkPhysicalDeviceDepthBiasControlFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_BIAS_CONTROL_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDepthBiasInfoEXT VkDepthBiasInfoEXTInit(void)\n{\n    VkDepthBiasInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DEPTH_BIAS_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDepthBiasRepresentationInfoEXT VkDepthBiasRepresentationInfoEXTInit(void)\n{\n    VkDepthBiasRepresentationInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DEPTH_BIAS_REPRESENTATION_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceDeviceMemoryReportFeaturesEXT VkPhysicalDeviceDeviceMemoryReportFeaturesEXTInit(void)\n{\n    VkPhysicalDeviceDeviceMemoryReportFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDeviceMemoryReportCallbackDataEXT VkDeviceMemoryReportCallbackDataEXTInit(void)\n{\n    VkDeviceMemoryReportCallbackDataEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDeviceDeviceMemoryReportCreateInfoEXT VkDeviceDeviceMemoryReportCreateInfoEXTInit(void)\n{\n    VkDeviceDeviceMemoryReportCreateInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceCustomBorderColorPropertiesEXT VkPhysicalDeviceCustomBorderColorPropertiesEXTInit(void)\n{\n    VkPhysicalDeviceCustomBorderColorPropertiesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceCustomBorderColorFeaturesEXT VkPhysicalDeviceCustomBorderColorFeaturesEXTInit(void)\n{\n    VkPhysicalDeviceCustomBorderColorFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceTextureCompressionASTC3DFeaturesEXT VkPhysicalDeviceTextureCompressionASTC3DFeaturesEXTInit(void)\n{\n    VkPhysicalDeviceTextureCompressionASTC3DFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_3D_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDevicePresentBarrierFeaturesNV VkPhysicalDevicePresentBarrierFeaturesNVInit(void)\n{\n    VkPhysicalDevicePresentBarrierFeaturesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_BARRIER_FEATURES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSurfaceCapabilitiesPresentBarrierNV VkSurfaceCapabilitiesPresentBarrierNVInit(void)\n{\n    VkSurfaceCapabilitiesPresentBarrierNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_BARRIER_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSwapchainPresentBarrierCreateInfoNV VkSwapchainPresentBarrierCreateInfoNVInit(void)\n{\n    VkSwapchainPresentBarrierCreateInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_BARRIER_CREATE_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPresentIdKHR VkPresentIdKHRInit(void)\n{\n    VkPresentIdKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PRESENT_ID_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDevicePresentIdFeaturesKHR VkPhysicalDevicePresentIdFeaturesKHRInit(void)\n{\n    VkPhysicalDevicePresentIdFeaturesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoEncodeInfoKHR VkVideoEncodeInfoKHRInit(void)\n{\n    VkVideoEncodeInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoEncodeCapabilitiesKHR VkVideoEncodeCapabilitiesKHRInit(void)\n{\n    VkVideoEncodeCapabilitiesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_CAPABILITIES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkQueryPoolVideoEncodeFeedbackCreateInfoKHR VkQueryPoolVideoEncodeFeedbackCreateInfoKHRInit(void)\n{\n    VkQueryPoolVideoEncodeFeedbackCreateInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_QUERY_POOL_VIDEO_ENCODE_FEEDBACK_CREATE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoEncodeUsageInfoKHR VkVideoEncodeUsageInfoKHRInit(void)\n{\n    VkVideoEncodeUsageInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_USAGE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoEncodeRateControlLayerInfoKHR VkVideoEncodeRateControlLayerInfoKHRInit(void)\n{\n    VkVideoEncodeRateControlLayerInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_LAYER_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoEncodeRateControlInfoKHR VkVideoEncodeRateControlInfoKHRInit(void)\n{\n    VkVideoEncodeRateControlInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR VkPhysicalDeviceVideoEncodeQualityLevelInfoKHRInit(void)\n{\n    VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoEncodeQualityLevelPropertiesKHR VkVideoEncodeQualityLevelPropertiesKHRInit(void)\n{\n    VkVideoEncodeQualityLevelPropertiesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUALITY_LEVEL_PROPERTIES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoEncodeQualityLevelInfoKHR VkVideoEncodeQualityLevelInfoKHRInit(void)\n{\n    VkVideoEncodeQualityLevelInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoEncodeSessionParametersGetInfoKHR VkVideoEncodeSessionParametersGetInfoKHRInit(void)\n{\n    VkVideoEncodeSessionParametersGetInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_PARAMETERS_GET_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoEncodeSessionParametersFeedbackInfoKHR VkVideoEncodeSessionParametersFeedbackInfoKHRInit(void)\n{\n    VkVideoEncodeSessionParametersFeedbackInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_PARAMETERS_FEEDBACK_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceDiagnosticsConfigFeaturesNV VkPhysicalDeviceDiagnosticsConfigFeaturesNVInit(void)\n{\n    VkPhysicalDeviceDiagnosticsConfigFeaturesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDeviceDiagnosticsConfigCreateInfoNV VkDeviceDiagnosticsConfigCreateInfoNVInit(void)\n{\n    VkDeviceDiagnosticsConfigCreateInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkRefreshObjectListKHR VkRefreshObjectListKHRInit(void)\n{\n    VkRefreshObjectListKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_REFRESH_OBJECT_LIST_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceTileShadingFeaturesQCOM VkPhysicalDeviceTileShadingFeaturesQCOMInit(void)\n{\n    VkPhysicalDeviceTileShadingFeaturesQCOM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_SHADING_FEATURES_QCOM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceTileShadingPropertiesQCOM VkPhysicalDeviceTileShadingPropertiesQCOMInit(void)\n{\n    VkPhysicalDeviceTileShadingPropertiesQCOM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_SHADING_PROPERTIES_QCOM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkRenderPassTileShadingCreateInfoQCOM VkRenderPassTileShadingCreateInfoQCOMInit(void)\n{\n    VkRenderPassTileShadingCreateInfoQCOM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_RENDER_PASS_TILE_SHADING_CREATE_INFO_QCOM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPerTileBeginInfoQCOM VkPerTileBeginInfoQCOMInit(void)\n{\n    VkPerTileBeginInfoQCOM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PER_TILE_BEGIN_INFO_QCOM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPerTileEndInfoQCOM VkPerTileEndInfoQCOMInit(void)\n{\n    VkPerTileEndInfoQCOM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PER_TILE_END_INFO_QCOM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDispatchTileInfoQCOM VkDispatchTileInfoQCOMInit(void)\n{\n    VkDispatchTileInfoQCOM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DISPATCH_TILE_INFO_QCOM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkQueryLowLatencySupportNV VkQueryLowLatencySupportNVInit(void)\n{\n    VkQueryLowLatencySupportNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_QUERY_LOW_LATENCY_SUPPORT_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceDescriptorBufferPropertiesEXT VkPhysicalDeviceDescriptorBufferPropertiesEXTInit(void)\n{\n    VkPhysicalDeviceDescriptorBufferPropertiesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXTInit(void)\n{\n    VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceDescriptorBufferFeaturesEXT VkPhysicalDeviceDescriptorBufferFeaturesEXTInit(void)\n{\n    VkPhysicalDeviceDescriptorBufferFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDescriptorAddressInfoEXT VkDescriptorAddressInfoEXTInit(void)\n{\n    VkDescriptorAddressInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_ADDRESS_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDescriptorBufferBindingInfoEXT VkDescriptorBufferBindingInfoEXTInit(void)\n{\n    VkDescriptorBufferBindingInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDescriptorBufferBindingPushDescriptorBufferHandleEXT VkDescriptorBufferBindingPushDescriptorBufferHandleEXTInit(void)\n{\n    VkDescriptorBufferBindingPushDescriptorBufferHandleEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_PUSH_DESCRIPTOR_BUFFER_HANDLE_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDescriptorGetInfoEXT VkDescriptorGetInfoEXTInit(void)\n{\n    VkDescriptorGetInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_GET_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkBufferCaptureDescriptorDataInfoEXT VkBufferCaptureDescriptorDataInfoEXTInit(void)\n{\n    VkBufferCaptureDescriptorDataInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_BUFFER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkImageCaptureDescriptorDataInfoEXT VkImageCaptureDescriptorDataInfoEXTInit(void)\n{\n    VkImageCaptureDescriptorDataInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_IMAGE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkImageViewCaptureDescriptorDataInfoEXT VkImageViewCaptureDescriptorDataInfoEXTInit(void)\n{\n    VkImageViewCaptureDescriptorDataInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSamplerCaptureDescriptorDataInfoEXT VkSamplerCaptureDescriptorDataInfoEXTInit(void)\n{\n    VkSamplerCaptureDescriptorDataInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SAMPLER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkOpaqueCaptureDescriptorDataCreateInfoEXT VkOpaqueCaptureDescriptorDataCreateInfoEXTInit(void)\n{\n    VkOpaqueCaptureDescriptorDataCreateInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkAccelerationStructureCaptureDescriptorDataInfoEXT VkAccelerationStructureCaptureDescriptorDataInfoEXTInit(void)\n{\n    VkAccelerationStructureCaptureDescriptorDataInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXTInit(void)\n{\n    VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXTInit(void)\n{\n    VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkGraphicsPipelineLibraryCreateInfoEXT VkGraphicsPipelineLibraryCreateInfoEXTInit(void)\n{\n    VkGraphicsPipelineLibraryCreateInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMDInit(void)\n{\n    VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_FEATURES_AMD;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHRInit(void)\n{\n    VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHRInit(void)\n{\n    VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_PROPERTIES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHRInit(void)\n{\n    VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNVInit(void)\n{\n    VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNVInit(void)\n{\n    VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPipelineFragmentShadingRateEnumStateCreateInfoNV VkPipelineFragmentShadingRateEnumStateCreateInfoNVInit(void)\n{\n    VkPipelineFragmentShadingRateEnumStateCreateInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkAccelerationStructureGeometryMotionTrianglesDataNV VkAccelerationStructureGeometryMotionTrianglesDataNVInit(void)\n{\n    VkAccelerationStructureGeometryMotionTrianglesDataNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkAccelerationStructureMotionInfoNV VkAccelerationStructureMotionInfoNVInit(void)\n{\n    VkAccelerationStructureMotionInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MOTION_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceRayTracingMotionBlurFeaturesNV VkPhysicalDeviceRayTracingMotionBlurFeaturesNVInit(void)\n{\n    VkPhysicalDeviceRayTracingMotionBlurFeaturesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceMeshShaderFeaturesEXT VkPhysicalDeviceMeshShaderFeaturesEXTInit(void)\n{\n    VkPhysicalDeviceMeshShaderFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceMeshShaderPropertiesEXT VkPhysicalDeviceMeshShaderPropertiesEXTInit(void)\n{\n    VkPhysicalDeviceMeshShaderPropertiesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXTInit(void)\n{\n    VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceFragmentDensityMap2FeaturesEXT VkPhysicalDeviceFragmentDensityMap2FeaturesEXTInit(void)\n{\n    VkPhysicalDeviceFragmentDensityMap2FeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceFragmentDensityMap2PropertiesEXT VkPhysicalDeviceFragmentDensityMap2PropertiesEXTInit(void)\n{\n    VkPhysicalDeviceFragmentDensityMap2PropertiesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkCopyCommandTransformInfoQCOM VkCopyCommandTransformInfoQCOMInit(void)\n{\n    VkCopyCommandTransformInfoQCOM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHRInit(void)\n{\n    VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceImageCompressionControlFeaturesEXT VkPhysicalDeviceImageCompressionControlFeaturesEXTInit(void)\n{\n    VkPhysicalDeviceImageCompressionControlFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkImageCompressionControlEXT VkImageCompressionControlEXTInit(void)\n{\n    VkImageCompressionControlEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkImageCompressionPropertiesEXT VkImageCompressionPropertiesEXTInit(void)\n{\n    VkImageCompressionPropertiesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXTInit(void)\n{\n    VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDevice4444FormatsFeaturesEXT VkPhysicalDevice4444FormatsFeaturesEXTInit(void)\n{\n    VkPhysicalDevice4444FormatsFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceFaultFeaturesEXT VkPhysicalDeviceFaultFeaturesEXTInit(void)\n{\n    VkPhysicalDeviceFaultFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDeviceFaultCountsEXT VkDeviceFaultCountsEXTInit(void)\n{\n    VkDeviceFaultCountsEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DEVICE_FAULT_COUNTS_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDeviceFaultInfoEXT VkDeviceFaultInfoEXTInit(void)\n{\n    VkDeviceFaultInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DEVICE_FAULT_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT VkPhysicalDeviceRGBA10X6FormatsFeaturesEXTInit(void)\n{\n    VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT VkPhysicalDeviceVertexInputDynamicStateFeaturesEXTInit(void)\n{\n    VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVertexInputBindingDescription2EXT VkVertexInputBindingDescription2EXTInit(void)\n{\n    VkVertexInputBindingDescription2EXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVertexInputAttributeDescription2EXT VkVertexInputAttributeDescription2EXTInit(void)\n{\n    VkVertexInputAttributeDescription2EXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceDrmPropertiesEXT VkPhysicalDeviceDrmPropertiesEXTInit(void)\n{\n    VkPhysicalDeviceDrmPropertiesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceAddressBindingReportFeaturesEXT VkPhysicalDeviceAddressBindingReportFeaturesEXTInit(void)\n{\n    VkPhysicalDeviceAddressBindingReportFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ADDRESS_BINDING_REPORT_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDeviceAddressBindingCallbackDataEXT VkDeviceAddressBindingCallbackDataEXTInit(void)\n{\n    VkDeviceAddressBindingCallbackDataEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DEVICE_ADDRESS_BINDING_CALLBACK_DATA_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceDepthClipControlFeaturesEXT VkPhysicalDeviceDepthClipControlFeaturesEXTInit(void)\n{\n    VkPhysicalDeviceDepthClipControlFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPipelineViewportDepthClipControlCreateInfoEXT VkPipelineViewportDepthClipControlCreateInfoEXTInit(void)\n{\n    VkPipelineViewportDepthClipControlCreateInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXTInit(void)\n{\n    VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSubpassShadingPipelineCreateInfoHUAWEI VkSubpassShadingPipelineCreateInfoHUAWEIInit(void)\n{\n    VkSubpassShadingPipelineCreateInfoHUAWEI result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceSubpassShadingFeaturesHUAWEI VkPhysicalDeviceSubpassShadingFeaturesHUAWEIInit(void)\n{\n    VkPhysicalDeviceSubpassShadingFeaturesHUAWEI result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceSubpassShadingPropertiesHUAWEI VkPhysicalDeviceSubpassShadingPropertiesHUAWEIInit(void)\n{\n    VkPhysicalDeviceSubpassShadingPropertiesHUAWEI result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceInvocationMaskFeaturesHUAWEI VkPhysicalDeviceInvocationMaskFeaturesHUAWEIInit(void)\n{\n    VkPhysicalDeviceInvocationMaskFeaturesHUAWEI result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI;\n    return result;\n}\n\nstatic VKBIND_INLINE VkMemoryGetRemoteAddressInfoNV VkMemoryGetRemoteAddressInfoNVInit(void)\n{\n    VkMemoryGetRemoteAddressInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_MEMORY_GET_REMOTE_ADDRESS_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceExternalMemoryRDMAFeaturesNV VkPhysicalDeviceExternalMemoryRDMAFeaturesNVInit(void)\n{\n    VkPhysicalDeviceExternalMemoryRDMAFeaturesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPipelinePropertiesIdentifierEXT VkPipelinePropertiesIdentifierEXTInit(void)\n{\n    VkPipelinePropertiesIdentifierEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PIPELINE_PROPERTIES_IDENTIFIER_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDevicePipelinePropertiesFeaturesEXT VkPhysicalDevicePipelinePropertiesFeaturesEXTInit(void)\n{\n    VkPhysicalDevicePipelinePropertiesFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceFrameBoundaryFeaturesEXT VkPhysicalDeviceFrameBoundaryFeaturesEXTInit(void)\n{\n    VkPhysicalDeviceFrameBoundaryFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAME_BOUNDARY_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkFrameBoundaryEXT VkFrameBoundaryEXTInit(void)\n{\n    VkFrameBoundaryEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_FRAME_BOUNDARY_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXTInit(void)\n{\n    VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSubpassResolvePerformanceQueryEXT VkSubpassResolvePerformanceQueryEXTInit(void)\n{\n    VkSubpassResolvePerformanceQueryEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkMultisampledRenderToSingleSampledInfoEXT VkMultisampledRenderToSingleSampledInfoEXTInit(void)\n{\n    VkMultisampledRenderToSingleSampledInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceExtendedDynamicState2FeaturesEXT VkPhysicalDeviceExtendedDynamicState2FeaturesEXTInit(void)\n{\n    VkPhysicalDeviceExtendedDynamicState2FeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceColorWriteEnableFeaturesEXT VkPhysicalDeviceColorWriteEnableFeaturesEXTInit(void)\n{\n    VkPhysicalDeviceColorWriteEnableFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPipelineColorWriteCreateInfoEXT VkPipelineColorWriteCreateInfoEXTInit(void)\n{\n    VkPipelineColorWriteCreateInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXTInit(void)\n{\n    VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR VkPhysicalDeviceRayTracingMaintenance1FeaturesKHRInit(void)\n{\n    VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceShaderUntypedPointersFeaturesKHR VkPhysicalDeviceShaderUntypedPointersFeaturesKHRInit(void)\n{\n    VkPhysicalDeviceShaderUntypedPointersFeaturesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_UNTYPED_POINTERS_FEATURES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE VkPhysicalDeviceVideoEncodeRgbConversionFeaturesVALVEInit(void)\n{\n    VkPhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_RGB_CONVERSION_FEATURES_VALVE;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoEncodeRgbConversionCapabilitiesVALVE VkVideoEncodeRgbConversionCapabilitiesVALVEInit(void)\n{\n    VkVideoEncodeRgbConversionCapabilitiesVALVE result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_RGB_CONVERSION_CAPABILITIES_VALVE;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoEncodeProfileRgbConversionInfoVALVE VkVideoEncodeProfileRgbConversionInfoVALVEInit(void)\n{\n    VkVideoEncodeProfileRgbConversionInfoVALVE result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_PROFILE_RGB_CONVERSION_INFO_VALVE;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoEncodeSessionRgbConversionCreateInfoVALVE VkVideoEncodeSessionRgbConversionCreateInfoVALVEInit(void)\n{\n    VkVideoEncodeSessionRgbConversionCreateInfoVALVE result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_RGB_CONVERSION_CREATE_INFO_VALVE;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceImageViewMinLodFeaturesEXT VkPhysicalDeviceImageViewMinLodFeaturesEXTInit(void)\n{\n    VkPhysicalDeviceImageViewMinLodFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkImageViewMinLodCreateInfoEXT VkImageViewMinLodCreateInfoEXTInit(void)\n{\n    VkImageViewMinLodCreateInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceMultiDrawFeaturesEXT VkPhysicalDeviceMultiDrawFeaturesEXTInit(void)\n{\n    VkPhysicalDeviceMultiDrawFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceMultiDrawPropertiesEXT VkPhysicalDeviceMultiDrawPropertiesEXTInit(void)\n{\n    VkPhysicalDeviceMultiDrawPropertiesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceImage2DViewOf3DFeaturesEXT VkPhysicalDeviceImage2DViewOf3DFeaturesEXTInit(void)\n{\n    VkPhysicalDeviceImage2DViewOf3DFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceShaderTileImageFeaturesEXT VkPhysicalDeviceShaderTileImageFeaturesEXTInit(void)\n{\n    VkPhysicalDeviceShaderTileImageFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceShaderTileImagePropertiesEXT VkPhysicalDeviceShaderTileImagePropertiesEXTInit(void)\n{\n    VkPhysicalDeviceShaderTileImagePropertiesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_PROPERTIES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkMicromapBuildInfoEXT VkMicromapBuildInfoEXTInit(void)\n{\n    VkMicromapBuildInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_MICROMAP_BUILD_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkMicromapCreateInfoEXT VkMicromapCreateInfoEXTInit(void)\n{\n    VkMicromapCreateInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_MICROMAP_CREATE_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceOpacityMicromapFeaturesEXT VkPhysicalDeviceOpacityMicromapFeaturesEXTInit(void)\n{\n    VkPhysicalDeviceOpacityMicromapFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceOpacityMicromapPropertiesEXT VkPhysicalDeviceOpacityMicromapPropertiesEXTInit(void)\n{\n    VkPhysicalDeviceOpacityMicromapPropertiesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkMicromapVersionInfoEXT VkMicromapVersionInfoEXTInit(void)\n{\n    VkMicromapVersionInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_MICROMAP_VERSION_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkCopyMicromapToMemoryInfoEXT VkCopyMicromapToMemoryInfoEXTInit(void)\n{\n    VkCopyMicromapToMemoryInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_COPY_MICROMAP_TO_MEMORY_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkCopyMemoryToMicromapInfoEXT VkCopyMemoryToMicromapInfoEXTInit(void)\n{\n    VkCopyMemoryToMicromapInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_COPY_MEMORY_TO_MICROMAP_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkCopyMicromapInfoEXT VkCopyMicromapInfoEXTInit(void)\n{\n    VkCopyMicromapInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_COPY_MICROMAP_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkMicromapBuildSizesInfoEXT VkMicromapBuildSizesInfoEXTInit(void)\n{\n    VkMicromapBuildSizesInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_MICROMAP_BUILD_SIZES_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkAccelerationStructureTrianglesOpacityMicromapEXT VkAccelerationStructureTrianglesOpacityMicromapEXTInit(void)\n{\n    VkAccelerationStructureTrianglesOpacityMicromapEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEIInit(void)\n{\n    VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEIInit(void)\n{\n    VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEIInit(void)\n{\n    VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_VRS_FEATURES_HUAWEI;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceBorderColorSwizzleFeaturesEXT VkPhysicalDeviceBorderColorSwizzleFeaturesEXTInit(void)\n{\n    VkPhysicalDeviceBorderColorSwizzleFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSamplerBorderColorComponentMappingCreateInfoEXT VkSamplerBorderColorComponentMappingCreateInfoEXTInit(void)\n{\n    VkSamplerBorderColorComponentMappingCreateInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXTInit(void)\n{\n    VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceShaderCorePropertiesARM VkPhysicalDeviceShaderCorePropertiesARMInit(void)\n{\n    VkPhysicalDeviceShaderCorePropertiesARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDeviceQueueShaderCoreControlCreateInfoARM VkDeviceQueueShaderCoreControlCreateInfoARMInit(void)\n{\n    VkDeviceQueueShaderCoreControlCreateInfoARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DEVICE_QUEUE_SHADER_CORE_CONTROL_CREATE_INFO_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceSchedulingControlsFeaturesARM VkPhysicalDeviceSchedulingControlsFeaturesARMInit(void)\n{\n    VkPhysicalDeviceSchedulingControlsFeaturesARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_FEATURES_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceSchedulingControlsPropertiesARM VkPhysicalDeviceSchedulingControlsPropertiesARMInit(void)\n{\n    VkPhysicalDeviceSchedulingControlsPropertiesARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_PROPERTIES_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXTInit(void)\n{\n    VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkImageViewSlicedCreateInfoEXT VkImageViewSlicedCreateInfoEXTInit(void)\n{\n    VkImageViewSlicedCreateInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_SLICED_CREATE_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVEInit(void)\n{\n    VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDescriptorSetBindingReferenceVALVE VkDescriptorSetBindingReferenceVALVEInit(void)\n{\n    VkDescriptorSetBindingReferenceVALVE result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_BINDING_REFERENCE_VALVE;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDescriptorSetLayoutHostMappingInfoVALVE VkDescriptorSetLayoutHostMappingInfoVALVEInit(void)\n{\n    VkDescriptorSetLayoutHostMappingInfoVALVE result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXTInit(void)\n{\n    VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceRenderPassStripedFeaturesARM VkPhysicalDeviceRenderPassStripedFeaturesARMInit(void)\n{\n    VkPhysicalDeviceRenderPassStripedFeaturesARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_FEATURES_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceRenderPassStripedPropertiesARM VkPhysicalDeviceRenderPassStripedPropertiesARMInit(void)\n{\n    VkPhysicalDeviceRenderPassStripedPropertiesARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_PROPERTIES_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkRenderPassStripeInfoARM VkRenderPassStripeInfoARMInit(void)\n{\n    VkRenderPassStripeInfoARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_INFO_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkRenderPassStripeBeginInfoARM VkRenderPassStripeBeginInfoARMInit(void)\n{\n    VkRenderPassStripeBeginInfoARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_BEGIN_INFO_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkRenderPassStripeSubmitInfoARM VkRenderPassStripeSubmitInfoARMInit(void)\n{\n    VkRenderPassStripeSubmitInfoARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_SUBMIT_INFO_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNVInit(void)\n{\n    VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_COMPUTE_FEATURES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkComputePipelineIndirectBufferInfoNV VkComputePipelineIndirectBufferInfoNVInit(void)\n{\n    VkComputePipelineIndirectBufferInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_INDIRECT_BUFFER_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPipelineIndirectDeviceAddressInfoNV VkPipelineIndirectDeviceAddressInfoNVInit(void)\n{\n    VkPipelineIndirectDeviceAddressInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PIPELINE_INDIRECT_DEVICE_ADDRESS_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV VkPhysicalDeviceRayTracingLinearSweptSpheresFeaturesNVInit(void)\n{\n    VkPhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_LINEAR_SWEPT_SPHERES_FEATURES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkAccelerationStructureGeometryLinearSweptSpheresDataNV VkAccelerationStructureGeometryLinearSweptSpheresDataNVInit(void)\n{\n    VkAccelerationStructureGeometryLinearSweptSpheresDataNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_LINEAR_SWEPT_SPHERES_DATA_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkAccelerationStructureGeometrySpheresDataNV VkAccelerationStructureGeometrySpheresDataNVInit(void)\n{\n    VkAccelerationStructureGeometrySpheresDataNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_SPHERES_DATA_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceLinearColorAttachmentFeaturesNV VkPhysicalDeviceLinearColorAttachmentFeaturesNVInit(void)\n{\n    VkPhysicalDeviceLinearColorAttachmentFeaturesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHRInit(void)\n{\n    VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MAXIMAL_RECONVERGENCE_FEATURES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkApplicationParametersEXT VkApplicationParametersEXTInit(void)\n{\n    VkApplicationParametersEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_APPLICATION_PARAMETERS_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXTInit(void)\n{\n    VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkImageViewSampleWeightCreateInfoQCOM VkImageViewSampleWeightCreateInfoQCOMInit(void)\n{\n    VkImageViewSampleWeightCreateInfoQCOM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_SAMPLE_WEIGHT_CREATE_INFO_QCOM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceImageProcessingFeaturesQCOM VkPhysicalDeviceImageProcessingFeaturesQCOMInit(void)\n{\n    VkPhysicalDeviceImageProcessingFeaturesQCOM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceImageProcessingPropertiesQCOM VkPhysicalDeviceImageProcessingPropertiesQCOMInit(void)\n{\n    VkPhysicalDeviceImageProcessingPropertiesQCOM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceNestedCommandBufferFeaturesEXT VkPhysicalDeviceNestedCommandBufferFeaturesEXTInit(void)\n{\n    VkPhysicalDeviceNestedCommandBufferFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceNestedCommandBufferPropertiesEXT VkPhysicalDeviceNestedCommandBufferPropertiesEXTInit(void)\n{\n    VkPhysicalDeviceNestedCommandBufferPropertiesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_PROPERTIES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkExternalMemoryAcquireUnmodifiedEXT VkExternalMemoryAcquireUnmodifiedEXTInit(void)\n{\n    VkExternalMemoryAcquireUnmodifiedEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceExtendedDynamicState3FeaturesEXT VkPhysicalDeviceExtendedDynamicState3FeaturesEXTInit(void)\n{\n    VkPhysicalDeviceExtendedDynamicState3FeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceExtendedDynamicState3PropertiesEXT VkPhysicalDeviceExtendedDynamicState3PropertiesEXTInit(void)\n{\n    VkPhysicalDeviceExtendedDynamicState3PropertiesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXTInit(void)\n{\n    VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkRenderPassCreationControlEXT VkRenderPassCreationControlEXTInit(void)\n{\n    VkRenderPassCreationControlEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_CONTROL_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkRenderPassCreationFeedbackCreateInfoEXT VkRenderPassCreationFeedbackCreateInfoEXTInit(void)\n{\n    VkRenderPassCreationFeedbackCreateInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_FEEDBACK_CREATE_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkRenderPassSubpassFeedbackCreateInfoEXT VkRenderPassSubpassFeedbackCreateInfoEXTInit(void)\n{\n    VkRenderPassSubpassFeedbackCreateInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_RENDER_PASS_SUBPASS_FEEDBACK_CREATE_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDirectDriverLoadingInfoLUNARG VkDirectDriverLoadingInfoLUNARGInit(void)\n{\n    VkDirectDriverLoadingInfoLUNARG result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_INFO_LUNARG;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDirectDriverLoadingListLUNARG VkDirectDriverLoadingListLUNARGInit(void)\n{\n    VkDirectDriverLoadingListLUNARG result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_LIST_LUNARG;\n    return result;\n}\n\nstatic VKBIND_INLINE VkTensorDescriptionARM VkTensorDescriptionARMInit(void)\n{\n    VkTensorDescriptionARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_TENSOR_DESCRIPTION_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkTensorCreateInfoARM VkTensorCreateInfoARMInit(void)\n{\n    VkTensorCreateInfoARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_TENSOR_CREATE_INFO_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkTensorMemoryRequirementsInfoARM VkTensorMemoryRequirementsInfoARMInit(void)\n{\n    VkTensorMemoryRequirementsInfoARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_TENSOR_MEMORY_REQUIREMENTS_INFO_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkBindTensorMemoryInfoARM VkBindTensorMemoryInfoARMInit(void)\n{\n    VkBindTensorMemoryInfoARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_BIND_TENSOR_MEMORY_INFO_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkWriteDescriptorSetTensorARM VkWriteDescriptorSetTensorARMInit(void)\n{\n    VkWriteDescriptorSetTensorARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_TENSOR_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkTensorFormatPropertiesARM VkTensorFormatPropertiesARMInit(void)\n{\n    VkTensorFormatPropertiesARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_TENSOR_FORMAT_PROPERTIES_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceTensorPropertiesARM VkPhysicalDeviceTensorPropertiesARMInit(void)\n{\n    VkPhysicalDeviceTensorPropertiesARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_PROPERTIES_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkTensorMemoryBarrierARM VkTensorMemoryBarrierARMInit(void)\n{\n    VkTensorMemoryBarrierARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_TENSOR_MEMORY_BARRIER_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkTensorDependencyInfoARM VkTensorDependencyInfoARMInit(void)\n{\n    VkTensorDependencyInfoARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_TENSOR_DEPENDENCY_INFO_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceTensorFeaturesARM VkPhysicalDeviceTensorFeaturesARMInit(void)\n{\n    VkPhysicalDeviceTensorFeaturesARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_FEATURES_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDeviceTensorMemoryRequirementsARM VkDeviceTensorMemoryRequirementsARMInit(void)\n{\n    VkDeviceTensorMemoryRequirementsARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DEVICE_TENSOR_MEMORY_REQUIREMENTS_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkTensorCopyARM VkTensorCopyARMInit(void)\n{\n    VkTensorCopyARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_TENSOR_COPY_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkCopyTensorInfoARM VkCopyTensorInfoARMInit(void)\n{\n    VkCopyTensorInfoARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_COPY_TENSOR_INFO_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkMemoryDedicatedAllocateInfoTensorARM VkMemoryDedicatedAllocateInfoTensorARMInit(void)\n{\n    VkMemoryDedicatedAllocateInfoTensorARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_TENSOR_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceExternalTensorInfoARM VkPhysicalDeviceExternalTensorInfoARMInit(void)\n{\n    VkPhysicalDeviceExternalTensorInfoARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_TENSOR_INFO_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkExternalTensorPropertiesARM VkExternalTensorPropertiesARMInit(void)\n{\n    VkExternalTensorPropertiesARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_EXTERNAL_TENSOR_PROPERTIES_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkExternalMemoryTensorCreateInfoARM VkExternalMemoryTensorCreateInfoARMInit(void)\n{\n    VkExternalMemoryTensorCreateInfoARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_TENSOR_CREATE_INFO_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceDescriptorBufferTensorFeaturesARM VkPhysicalDeviceDescriptorBufferTensorFeaturesARMInit(void)\n{\n    VkPhysicalDeviceDescriptorBufferTensorFeaturesARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_FEATURES_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceDescriptorBufferTensorPropertiesARM VkPhysicalDeviceDescriptorBufferTensorPropertiesARMInit(void)\n{\n    VkPhysicalDeviceDescriptorBufferTensorPropertiesARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_PROPERTIES_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDescriptorGetTensorInfoARM VkDescriptorGetTensorInfoARMInit(void)\n{\n    VkDescriptorGetTensorInfoARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_GET_TENSOR_INFO_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkTensorCaptureDescriptorDataInfoARM VkTensorCaptureDescriptorDataInfoARMInit(void)\n{\n    VkTensorCaptureDescriptorDataInfoARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_TENSOR_CAPTURE_DESCRIPTOR_DATA_INFO_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkTensorViewCaptureDescriptorDataInfoARM VkTensorViewCaptureDescriptorDataInfoARMInit(void)\n{\n    VkTensorViewCaptureDescriptorDataInfoARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_TENSOR_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkFrameBoundaryTensorsARM VkFrameBoundaryTensorsARMInit(void)\n{\n    VkFrameBoundaryTensorsARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_FRAME_BOUNDARY_TENSORS_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT VkPhysicalDeviceShaderModuleIdentifierFeaturesEXTInit(void)\n{\n    VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT VkPhysicalDeviceShaderModuleIdentifierPropertiesEXTInit(void)\n{\n    VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPipelineShaderStageModuleIdentifierCreateInfoEXT VkPipelineShaderStageModuleIdentifierCreateInfoEXTInit(void)\n{\n    VkPipelineShaderStageModuleIdentifierCreateInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_MODULE_IDENTIFIER_CREATE_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkShaderModuleIdentifierEXT VkShaderModuleIdentifierEXTInit(void)\n{\n    VkShaderModuleIdentifierEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SHADER_MODULE_IDENTIFIER_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXTInit(void)\n{\n    VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceOpticalFlowFeaturesNV VkPhysicalDeviceOpticalFlowFeaturesNVInit(void)\n{\n    VkPhysicalDeviceOpticalFlowFeaturesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_FEATURES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceOpticalFlowPropertiesNV VkPhysicalDeviceOpticalFlowPropertiesNVInit(void)\n{\n    VkPhysicalDeviceOpticalFlowPropertiesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_PROPERTIES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkOpticalFlowImageFormatInfoNV VkOpticalFlowImageFormatInfoNVInit(void)\n{\n    VkOpticalFlowImageFormatInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_OPTICAL_FLOW_IMAGE_FORMAT_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkOpticalFlowImageFormatPropertiesNV VkOpticalFlowImageFormatPropertiesNVInit(void)\n{\n    VkOpticalFlowImageFormatPropertiesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_OPTICAL_FLOW_IMAGE_FORMAT_PROPERTIES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkOpticalFlowSessionCreateInfoNV VkOpticalFlowSessionCreateInfoNVInit(void)\n{\n    VkOpticalFlowSessionCreateInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkOpticalFlowSessionCreatePrivateDataInfoNV VkOpticalFlowSessionCreatePrivateDataInfoNVInit(void)\n{\n    VkOpticalFlowSessionCreatePrivateDataInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_PRIVATE_DATA_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkOpticalFlowExecuteInfoNV VkOpticalFlowExecuteInfoNVInit(void)\n{\n    VkOpticalFlowExecuteInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_OPTICAL_FLOW_EXECUTE_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceLegacyDitheringFeaturesEXT VkPhysicalDeviceLegacyDitheringFeaturesEXTInit(void)\n{\n    VkPhysicalDeviceLegacyDitheringFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceAntiLagFeaturesAMD VkPhysicalDeviceAntiLagFeaturesAMDInit(void)\n{\n    VkPhysicalDeviceAntiLagFeaturesAMD result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ANTI_LAG_FEATURES_AMD;\n    return result;\n}\n\nstatic VKBIND_INLINE VkAntiLagPresentationInfoAMD VkAntiLagPresentationInfoAMDInit(void)\n{\n    VkAntiLagPresentationInfoAMD result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_ANTI_LAG_PRESENTATION_INFO_AMD;\n    return result;\n}\n\nstatic VKBIND_INLINE VkAntiLagDataAMD VkAntiLagDataAMDInit(void)\n{\n    VkAntiLagDataAMD result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_ANTI_LAG_DATA_AMD;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSurfaceCapabilitiesPresentId2KHR VkSurfaceCapabilitiesPresentId2KHRInit(void)\n{\n    VkSurfaceCapabilitiesPresentId2KHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_ID_2_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPresentId2KHR VkPresentId2KHRInit(void)\n{\n    VkPresentId2KHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PRESENT_ID_2_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDevicePresentId2FeaturesKHR VkPhysicalDevicePresentId2FeaturesKHRInit(void)\n{\n    VkPhysicalDevicePresentId2FeaturesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_2_FEATURES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSurfaceCapabilitiesPresentWait2KHR VkSurfaceCapabilitiesPresentWait2KHRInit(void)\n{\n    VkSurfaceCapabilitiesPresentWait2KHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_WAIT_2_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDevicePresentWait2FeaturesKHR VkPhysicalDevicePresentWait2FeaturesKHRInit(void)\n{\n    VkPhysicalDevicePresentWait2FeaturesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_2_FEATURES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPresentWait2InfoKHR VkPresentWait2InfoKHRInit(void)\n{\n    VkPresentWait2InfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PRESENT_WAIT_2_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR VkPhysicalDeviceRayTracingPositionFetchFeaturesKHRInit(void)\n{\n    VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceShaderObjectFeaturesEXT VkPhysicalDeviceShaderObjectFeaturesEXTInit(void)\n{\n    VkPhysicalDeviceShaderObjectFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceShaderObjectPropertiesEXT VkPhysicalDeviceShaderObjectPropertiesEXTInit(void)\n{\n    VkPhysicalDeviceShaderObjectPropertiesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkShaderCreateInfoEXT VkShaderCreateInfoEXTInit(void)\n{\n    VkShaderCreateInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SHADER_CREATE_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDevicePipelineBinaryFeaturesKHR VkPhysicalDevicePipelineBinaryFeaturesKHRInit(void)\n{\n    VkPhysicalDevicePipelineBinaryFeaturesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_FEATURES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDevicePipelineBinaryPropertiesKHR VkPhysicalDevicePipelineBinaryPropertiesKHRInit(void)\n{\n    VkPhysicalDevicePipelineBinaryPropertiesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_PROPERTIES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDevicePipelineBinaryInternalCacheControlKHR VkDevicePipelineBinaryInternalCacheControlKHRInit(void)\n{\n    VkDevicePipelineBinaryInternalCacheControlKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DEVICE_PIPELINE_BINARY_INTERNAL_CACHE_CONTROL_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPipelineBinaryKeyKHR VkPipelineBinaryKeyKHRInit(void)\n{\n    VkPipelineBinaryKeyKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PIPELINE_BINARY_KEY_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPipelineCreateInfoKHR VkPipelineCreateInfoKHRInit(void)\n{\n    VkPipelineCreateInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PIPELINE_CREATE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPipelineBinaryCreateInfoKHR VkPipelineBinaryCreateInfoKHRInit(void)\n{\n    VkPipelineBinaryCreateInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PIPELINE_BINARY_CREATE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPipelineBinaryInfoKHR VkPipelineBinaryInfoKHRInit(void)\n{\n    VkPipelineBinaryInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PIPELINE_BINARY_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkReleaseCapturedPipelineDataInfoKHR VkReleaseCapturedPipelineDataInfoKHRInit(void)\n{\n    VkReleaseCapturedPipelineDataInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_RELEASE_CAPTURED_PIPELINE_DATA_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPipelineBinaryDataInfoKHR VkPipelineBinaryDataInfoKHRInit(void)\n{\n    VkPipelineBinaryDataInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PIPELINE_BINARY_DATA_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPipelineBinaryHandlesInfoKHR VkPipelineBinaryHandlesInfoKHRInit(void)\n{\n    VkPipelineBinaryHandlesInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PIPELINE_BINARY_HANDLES_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceTilePropertiesFeaturesQCOM VkPhysicalDeviceTilePropertiesFeaturesQCOMInit(void)\n{\n    VkPhysicalDeviceTilePropertiesFeaturesQCOM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkTilePropertiesQCOM VkTilePropertiesQCOMInit(void)\n{\n    VkTilePropertiesQCOM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_TILE_PROPERTIES_QCOM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceAmigoProfilingFeaturesSEC VkPhysicalDeviceAmigoProfilingFeaturesSECInit(void)\n{\n    VkPhysicalDeviceAmigoProfilingFeaturesSEC result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_AMIGO_PROFILING_FEATURES_SEC;\n    return result;\n}\n\nstatic VKBIND_INLINE VkAmigoProfilingSubmitInfoSEC VkAmigoProfilingSubmitInfoSECInit(void)\n{\n    VkAmigoProfilingSubmitInfoSEC result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_AMIGO_PROFILING_SUBMIT_INFO_SEC;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSurfacePresentModeKHR VkSurfacePresentModeKHRInit(void)\n{\n    VkSurfacePresentModeKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSurfacePresentScalingCapabilitiesKHR VkSurfacePresentScalingCapabilitiesKHRInit(void)\n{\n    VkSurfacePresentScalingCapabilitiesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSurfacePresentModeCompatibilityKHR VkSurfacePresentModeCompatibilityKHRInit(void)\n{\n    VkSurfacePresentModeCompatibilityKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR VkPhysicalDeviceSwapchainMaintenance1FeaturesKHRInit(void)\n{\n    VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSwapchainPresentFenceInfoKHR VkSwapchainPresentFenceInfoKHRInit(void)\n{\n    VkSwapchainPresentFenceInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSwapchainPresentModesCreateInfoKHR VkSwapchainPresentModesCreateInfoKHRInit(void)\n{\n    VkSwapchainPresentModesCreateInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSwapchainPresentModeInfoKHR VkSwapchainPresentModeInfoKHRInit(void)\n{\n    VkSwapchainPresentModeInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSwapchainPresentScalingCreateInfoKHR VkSwapchainPresentScalingCreateInfoKHRInit(void)\n{\n    VkSwapchainPresentScalingCreateInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkReleaseSwapchainImagesInfoKHR VkReleaseSwapchainImagesInfoKHRInit(void)\n{\n    VkReleaseSwapchainImagesInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOMInit(void)\n{\n    VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceCooperativeVectorPropertiesNV VkPhysicalDeviceCooperativeVectorPropertiesNVInit(void)\n{\n    VkPhysicalDeviceCooperativeVectorPropertiesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_VECTOR_PROPERTIES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceCooperativeVectorFeaturesNV VkPhysicalDeviceCooperativeVectorFeaturesNVInit(void)\n{\n    VkPhysicalDeviceCooperativeVectorFeaturesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_VECTOR_FEATURES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkCooperativeVectorPropertiesNV VkCooperativeVectorPropertiesNVInit(void)\n{\n    VkCooperativeVectorPropertiesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_COOPERATIVE_VECTOR_PROPERTIES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkConvertCooperativeVectorMatrixInfoNV VkConvertCooperativeVectorMatrixInfoNVInit(void)\n{\n    VkConvertCooperativeVectorMatrixInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_CONVERT_COOPERATIVE_VECTOR_MATRIX_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNVInit(void)\n{\n    VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_FEATURES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNVInit(void)\n{\n    VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_PROPERTIES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT VkPhysicalDeviceMutableDescriptorTypeFeaturesEXTInit(void)\n{\n    VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkMutableDescriptorTypeCreateInfoEXT VkMutableDescriptorTypeCreateInfoEXTInit(void)\n{\n    VkMutableDescriptorTypeCreateInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT VkPhysicalDeviceLegacyVertexAttributesFeaturesEXTInit(void)\n{\n    VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT VkPhysicalDeviceLegacyVertexAttributesPropertiesEXTInit(void)\n{\n    VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_PROPERTIES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkLayerSettingsCreateInfoEXT VkLayerSettingsCreateInfoEXTInit(void)\n{\n    VkLayerSettingsCreateInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_LAYER_SETTINGS_CREATE_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkValidationFlagsEXT VkValidationFlagsEXTInit(void)\n{\n    VkValidationFlagsEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM VkPhysicalDeviceShaderCoreBuiltinsFeaturesARMInit(void)\n{\n    VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM VkPhysicalDeviceShaderCoreBuiltinsPropertiesARMInit(void)\n{\n    VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXTInit(void)\n{\n    VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXTInit(void)\n{\n    VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceInternallySynchronizedQueuesFeaturesKHR VkPhysicalDeviceInternallySynchronizedQueuesFeaturesKHRInit(void)\n{\n    VkPhysicalDeviceInternallySynchronizedQueuesFeaturesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INTERNALLY_SYNCHRONIZED_QUEUES_FEATURES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkLatencySleepModeInfoNV VkLatencySleepModeInfoNVInit(void)\n{\n    VkLatencySleepModeInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_LATENCY_SLEEP_MODE_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkLatencySleepInfoNV VkLatencySleepInfoNVInit(void)\n{\n    VkLatencySleepInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_LATENCY_SLEEP_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSetLatencyMarkerInfoNV VkSetLatencyMarkerInfoNVInit(void)\n{\n    VkSetLatencyMarkerInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SET_LATENCY_MARKER_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkLatencyTimingsFrameReportNV VkLatencyTimingsFrameReportNVInit(void)\n{\n    VkLatencyTimingsFrameReportNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_LATENCY_TIMINGS_FRAME_REPORT_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkGetLatencyMarkerInfoNV VkGetLatencyMarkerInfoNVInit(void)\n{\n    VkGetLatencyMarkerInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_GET_LATENCY_MARKER_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkLatencySubmissionPresentIdNV VkLatencySubmissionPresentIdNVInit(void)\n{\n    VkLatencySubmissionPresentIdNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_LATENCY_SUBMISSION_PRESENT_ID_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSwapchainLatencyCreateInfoNV VkSwapchainLatencyCreateInfoNVInit(void)\n{\n    VkSwapchainLatencyCreateInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SWAPCHAIN_LATENCY_CREATE_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkOutOfBandQueueTypeInfoNV VkOutOfBandQueueTypeInfoNVInit(void)\n{\n    VkOutOfBandQueueTypeInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_OUT_OF_BAND_QUEUE_TYPE_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkLatencySurfaceCapabilitiesNV VkLatencySurfaceCapabilitiesNVInit(void)\n{\n    VkLatencySurfaceCapabilitiesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_LATENCY_SURFACE_CAPABILITIES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkCooperativeMatrixPropertiesKHR VkCooperativeMatrixPropertiesKHRInit(void)\n{\n    VkCooperativeMatrixPropertiesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceCooperativeMatrixFeaturesKHR VkPhysicalDeviceCooperativeMatrixFeaturesKHRInit(void)\n{\n    VkPhysicalDeviceCooperativeMatrixFeaturesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceCooperativeMatrixPropertiesKHR VkPhysicalDeviceCooperativeMatrixPropertiesKHRInit(void)\n{\n    VkPhysicalDeviceCooperativeMatrixPropertiesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceDataGraphFeaturesARM VkPhysicalDeviceDataGraphFeaturesARMInit(void)\n{\n    VkPhysicalDeviceDataGraphFeaturesARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_FEATURES_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDataGraphPipelineConstantARM VkDataGraphPipelineConstantARMInit(void)\n{\n    VkDataGraphPipelineConstantARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CONSTANT_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDataGraphPipelineResourceInfoARM VkDataGraphPipelineResourceInfoARMInit(void)\n{\n    VkDataGraphPipelineResourceInfoARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_RESOURCE_INFO_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDataGraphPipelineCompilerControlCreateInfoARM VkDataGraphPipelineCompilerControlCreateInfoARMInit(void)\n{\n    VkDataGraphPipelineCompilerControlCreateInfoARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_COMPILER_CONTROL_CREATE_INFO_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDataGraphPipelineCreateInfoARM VkDataGraphPipelineCreateInfoARMInit(void)\n{\n    VkDataGraphPipelineCreateInfoARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CREATE_INFO_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDataGraphPipelineShaderModuleCreateInfoARM VkDataGraphPipelineShaderModuleCreateInfoARMInit(void)\n{\n    VkDataGraphPipelineShaderModuleCreateInfoARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SHADER_MODULE_CREATE_INFO_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDataGraphPipelineSessionCreateInfoARM VkDataGraphPipelineSessionCreateInfoARMInit(void)\n{\n    VkDataGraphPipelineSessionCreateInfoARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_CREATE_INFO_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDataGraphPipelineSessionBindPointRequirementsInfoARM VkDataGraphPipelineSessionBindPointRequirementsInfoARMInit(void)\n{\n    VkDataGraphPipelineSessionBindPointRequirementsInfoARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENTS_INFO_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDataGraphPipelineSessionBindPointRequirementARM VkDataGraphPipelineSessionBindPointRequirementARMInit(void)\n{\n    VkDataGraphPipelineSessionBindPointRequirementARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENT_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDataGraphPipelineSessionMemoryRequirementsInfoARM VkDataGraphPipelineSessionMemoryRequirementsInfoARMInit(void)\n{\n    VkDataGraphPipelineSessionMemoryRequirementsInfoARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_MEMORY_REQUIREMENTS_INFO_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkBindDataGraphPipelineSessionMemoryInfoARM VkBindDataGraphPipelineSessionMemoryInfoARMInit(void)\n{\n    VkBindDataGraphPipelineSessionMemoryInfoARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_BIND_DATA_GRAPH_PIPELINE_SESSION_MEMORY_INFO_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDataGraphPipelineInfoARM VkDataGraphPipelineInfoARMInit(void)\n{\n    VkDataGraphPipelineInfoARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_INFO_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDataGraphPipelinePropertyQueryResultARM VkDataGraphPipelinePropertyQueryResultARMInit(void)\n{\n    VkDataGraphPipelinePropertyQueryResultARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_PROPERTY_QUERY_RESULT_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDataGraphPipelineIdentifierCreateInfoARM VkDataGraphPipelineIdentifierCreateInfoARMInit(void)\n{\n    VkDataGraphPipelineIdentifierCreateInfoARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_IDENTIFIER_CREATE_INFO_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDataGraphPipelineDispatchInfoARM VkDataGraphPipelineDispatchInfoARMInit(void)\n{\n    VkDataGraphPipelineDispatchInfoARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_DISPATCH_INFO_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkQueueFamilyDataGraphPropertiesARM VkQueueFamilyDataGraphPropertiesARMInit(void)\n{\n    VkQueueFamilyDataGraphPropertiesARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_PROPERTIES_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDataGraphProcessingEngineCreateInfoARM VkDataGraphProcessingEngineCreateInfoARMInit(void)\n{\n    VkDataGraphProcessingEngineCreateInfoARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DATA_GRAPH_PROCESSING_ENGINE_CREATE_INFO_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARMInit(void)\n{\n    VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_INFO_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkQueueFamilyDataGraphProcessingEnginePropertiesARM VkQueueFamilyDataGraphProcessingEnginePropertiesARMInit(void)\n{\n    VkQueueFamilyDataGraphProcessingEnginePropertiesARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_PROPERTIES_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM VkDataGraphPipelineConstantTensorSemiStructuredSparsityInfoARMInit(void)\n{\n    VkDataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CONSTANT_TENSOR_SEMI_STRUCTURED_SPARSITY_INFO_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOMInit(void)\n{\n    VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOMInit(void)\n{\n    VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_RENDER_AREAS_RENDER_PASS_BEGIN_INFO_QCOM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR VkPhysicalDeviceComputeShaderDerivativesFeaturesKHRInit(void)\n{\n    VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR VkPhysicalDeviceComputeShaderDerivativesPropertiesKHRInit(void)\n{\n    VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_PROPERTIES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoDecodeAV1ProfileInfoKHR VkVideoDecodeAV1ProfileInfoKHRInit(void)\n{\n    VkVideoDecodeAV1ProfileInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PROFILE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoDecodeAV1CapabilitiesKHR VkVideoDecodeAV1CapabilitiesKHRInit(void)\n{\n    VkVideoDecodeAV1CapabilitiesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_CAPABILITIES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoDecodeAV1SessionParametersCreateInfoKHR VkVideoDecodeAV1SessionParametersCreateInfoKHRInit(void)\n{\n    VkVideoDecodeAV1SessionParametersCreateInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoDecodeAV1PictureInfoKHR VkVideoDecodeAV1PictureInfoKHRInit(void)\n{\n    VkVideoDecodeAV1PictureInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PICTURE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoDecodeAV1DpbSlotInfoKHR VkVideoDecodeAV1DpbSlotInfoKHRInit(void)\n{\n    VkVideoDecodeAV1DpbSlotInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_DPB_SLOT_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceVideoEncodeAV1FeaturesKHR VkPhysicalDeviceVideoEncodeAV1FeaturesKHRInit(void)\n{\n    VkPhysicalDeviceVideoEncodeAV1FeaturesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_AV1_FEATURES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoEncodeAV1CapabilitiesKHR VkVideoEncodeAV1CapabilitiesKHRInit(void)\n{\n    VkVideoEncodeAV1CapabilitiesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_CAPABILITIES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoEncodeAV1QualityLevelPropertiesKHR VkVideoEncodeAV1QualityLevelPropertiesKHRInit(void)\n{\n    VkVideoEncodeAV1QualityLevelPropertiesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_QUALITY_LEVEL_PROPERTIES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoEncodeAV1SessionCreateInfoKHR VkVideoEncodeAV1SessionCreateInfoKHRInit(void)\n{\n    VkVideoEncodeAV1SessionCreateInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_SESSION_CREATE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoEncodeAV1SessionParametersCreateInfoKHR VkVideoEncodeAV1SessionParametersCreateInfoKHRInit(void)\n{\n    VkVideoEncodeAV1SessionParametersCreateInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoEncodeAV1PictureInfoKHR VkVideoEncodeAV1PictureInfoKHRInit(void)\n{\n    VkVideoEncodeAV1PictureInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_PICTURE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoEncodeAV1DpbSlotInfoKHR VkVideoEncodeAV1DpbSlotInfoKHRInit(void)\n{\n    VkVideoEncodeAV1DpbSlotInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_DPB_SLOT_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoEncodeAV1ProfileInfoKHR VkVideoEncodeAV1ProfileInfoKHRInit(void)\n{\n    VkVideoEncodeAV1ProfileInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_PROFILE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoEncodeAV1GopRemainingFrameInfoKHR VkVideoEncodeAV1GopRemainingFrameInfoKHRInit(void)\n{\n    VkVideoEncodeAV1GopRemainingFrameInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_GOP_REMAINING_FRAME_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoEncodeAV1RateControlInfoKHR VkVideoEncodeAV1RateControlInfoKHRInit(void)\n{\n    VkVideoEncodeAV1RateControlInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_RATE_CONTROL_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoEncodeAV1RateControlLayerInfoKHR VkVideoEncodeAV1RateControlLayerInfoKHRInit(void)\n{\n    VkVideoEncodeAV1RateControlLayerInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_RATE_CONTROL_LAYER_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceVideoDecodeVP9FeaturesKHR VkPhysicalDeviceVideoDecodeVP9FeaturesKHRInit(void)\n{\n    VkPhysicalDeviceVideoDecodeVP9FeaturesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_DECODE_VP9_FEATURES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoDecodeVP9ProfileInfoKHR VkVideoDecodeVP9ProfileInfoKHRInit(void)\n{\n    VkVideoDecodeVP9ProfileInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_VP9_PROFILE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoDecodeVP9CapabilitiesKHR VkVideoDecodeVP9CapabilitiesKHRInit(void)\n{\n    VkVideoDecodeVP9CapabilitiesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_VP9_CAPABILITIES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoDecodeVP9PictureInfoKHR VkVideoDecodeVP9PictureInfoKHRInit(void)\n{\n    VkVideoDecodeVP9PictureInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_VP9_PICTURE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceVideoMaintenance1FeaturesKHR VkPhysicalDeviceVideoMaintenance1FeaturesKHRInit(void)\n{\n    VkPhysicalDeviceVideoMaintenance1FeaturesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_MAINTENANCE_1_FEATURES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoInlineQueryInfoKHR VkVideoInlineQueryInfoKHRInit(void)\n{\n    VkVideoInlineQueryInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_INLINE_QUERY_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDevicePerStageDescriptorSetFeaturesNV VkPhysicalDevicePerStageDescriptorSetFeaturesNVInit(void)\n{\n    VkPhysicalDevicePerStageDescriptorSetFeaturesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PER_STAGE_DESCRIPTOR_SET_FEATURES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceImageProcessing2FeaturesQCOM VkPhysicalDeviceImageProcessing2FeaturesQCOMInit(void)\n{\n    VkPhysicalDeviceImageProcessing2FeaturesQCOM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_FEATURES_QCOM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceImageProcessing2PropertiesQCOM VkPhysicalDeviceImageProcessing2PropertiesQCOMInit(void)\n{\n    VkPhysicalDeviceImageProcessing2PropertiesQCOM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_PROPERTIES_QCOM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSamplerBlockMatchWindowCreateInfoQCOM VkSamplerBlockMatchWindowCreateInfoQCOMInit(void)\n{\n    VkSamplerBlockMatchWindowCreateInfoQCOM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SAMPLER_BLOCK_MATCH_WINDOW_CREATE_INFO_QCOM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceCubicWeightsFeaturesQCOM VkPhysicalDeviceCubicWeightsFeaturesQCOMInit(void)\n{\n    VkPhysicalDeviceCubicWeightsFeaturesQCOM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_WEIGHTS_FEATURES_QCOM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSamplerCubicWeightsCreateInfoQCOM VkSamplerCubicWeightsCreateInfoQCOMInit(void)\n{\n    VkSamplerCubicWeightsCreateInfoQCOM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SAMPLER_CUBIC_WEIGHTS_CREATE_INFO_QCOM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkBlitImageCubicWeightsInfoQCOM VkBlitImageCubicWeightsInfoQCOMInit(void)\n{\n    VkBlitImageCubicWeightsInfoQCOM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_BLIT_IMAGE_CUBIC_WEIGHTS_INFO_QCOM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceYcbcrDegammaFeaturesQCOM VkPhysicalDeviceYcbcrDegammaFeaturesQCOMInit(void)\n{\n    VkPhysicalDeviceYcbcrDegammaFeaturesQCOM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_DEGAMMA_FEATURES_QCOM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOMInit(void)\n{\n    VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_YCBCR_DEGAMMA_CREATE_INFO_QCOM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceCubicClampFeaturesQCOM VkPhysicalDeviceCubicClampFeaturesQCOMInit(void)\n{\n    VkPhysicalDeviceCubicClampFeaturesQCOM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_CLAMP_FEATURES_QCOM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXTInit(void)\n{\n    VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT VkPhysicalDeviceVertexAttributeDivisorPropertiesEXTInit(void)\n{\n    VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceUnifiedImageLayoutsFeaturesKHR VkPhysicalDeviceUnifiedImageLayoutsFeaturesKHRInit(void)\n{\n    VkPhysicalDeviceUnifiedImageLayoutsFeaturesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFIED_IMAGE_LAYOUTS_FEATURES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkAttachmentFeedbackLoopInfoEXT VkAttachmentFeedbackLoopInfoEXTInit(void)\n{\n    VkAttachmentFeedbackLoopInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_ATTACHMENT_FEEDBACK_LOOP_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceLayeredDriverPropertiesMSFT VkPhysicalDeviceLayeredDriverPropertiesMSFTInit(void)\n{\n    VkPhysicalDeviceLayeredDriverPropertiesMSFT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_DRIVER_PROPERTIES_MSFT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkCalibratedTimestampInfoKHR VkCalibratedTimestampInfoKHRInit(void)\n{\n    VkCalibratedTimestampInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSetDescriptorBufferOffsetsInfoEXT VkSetDescriptorBufferOffsetsInfoEXTInit(void)\n{\n    VkSetDescriptorBufferOffsetsInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SET_DESCRIPTOR_BUFFER_OFFSETS_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkBindDescriptorBufferEmbeddedSamplersInfoEXT VkBindDescriptorBufferEmbeddedSamplersInfoEXTInit(void)\n{\n    VkBindDescriptorBufferEmbeddedSamplersInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_BUFFER_EMBEDDED_SAMPLERS_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNVInit(void)\n{\n    VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_POOL_OVERALLOCATION_FEATURES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceTileMemoryHeapFeaturesQCOM VkPhysicalDeviceTileMemoryHeapFeaturesQCOMInit(void)\n{\n    VkPhysicalDeviceTileMemoryHeapFeaturesQCOM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_FEATURES_QCOM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceTileMemoryHeapPropertiesQCOM VkPhysicalDeviceTileMemoryHeapPropertiesQCOMInit(void)\n{\n    VkPhysicalDeviceTileMemoryHeapPropertiesQCOM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_PROPERTIES_QCOM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkTileMemoryRequirementsQCOM VkTileMemoryRequirementsQCOMInit(void)\n{\n    VkTileMemoryRequirementsQCOM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_TILE_MEMORY_REQUIREMENTS_QCOM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkTileMemoryBindInfoQCOM VkTileMemoryBindInfoQCOMInit(void)\n{\n    VkTileMemoryBindInfoQCOM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_TILE_MEMORY_BIND_INFO_QCOM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkTileMemorySizeInfoQCOM VkTileMemorySizeInfoQCOMInit(void)\n{\n    VkTileMemorySizeInfoQCOM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_TILE_MEMORY_SIZE_INFO_QCOM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkCopyMemoryIndirectInfoKHR VkCopyMemoryIndirectInfoKHRInit(void)\n{\n    VkCopyMemoryIndirectInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_COPY_MEMORY_INDIRECT_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkCopyMemoryToImageIndirectInfoKHR VkCopyMemoryToImageIndirectInfoKHRInit(void)\n{\n    VkCopyMemoryToImageIndirectInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INDIRECT_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceCopyMemoryIndirectFeaturesKHR VkPhysicalDeviceCopyMemoryIndirectFeaturesKHRInit(void)\n{\n    VkPhysicalDeviceCopyMemoryIndirectFeaturesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceCopyMemoryIndirectPropertiesKHR VkPhysicalDeviceCopyMemoryIndirectPropertiesKHRInit(void)\n{\n    VkPhysicalDeviceCopyMemoryIndirectPropertiesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceCopyMemoryIndirectFeaturesNV VkPhysicalDeviceCopyMemoryIndirectFeaturesNVInit(void)\n{\n    VkPhysicalDeviceCopyMemoryIndirectFeaturesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDecompressMemoryInfoEXT VkDecompressMemoryInfoEXTInit(void)\n{\n    VkDecompressMemoryInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DECOMPRESS_MEMORY_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceMemoryDecompressionFeaturesEXT VkPhysicalDeviceMemoryDecompressionFeaturesEXTInit(void)\n{\n    VkPhysicalDeviceMemoryDecompressionFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceMemoryDecompressionPropertiesEXT VkPhysicalDeviceMemoryDecompressionPropertiesEXTInit(void)\n{\n    VkPhysicalDeviceMemoryDecompressionPropertiesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDisplaySurfaceStereoCreateInfoNV VkDisplaySurfaceStereoCreateInfoNVInit(void)\n{\n    VkDisplaySurfaceStereoCreateInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DISPLAY_SURFACE_STEREO_CREATE_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDisplayModeStereoPropertiesNV VkDisplayModeStereoPropertiesNVInit(void)\n{\n    VkDisplayModeStereoPropertiesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DISPLAY_MODE_STEREO_PROPERTIES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoEncodeIntraRefreshCapabilitiesKHR VkVideoEncodeIntraRefreshCapabilitiesKHRInit(void)\n{\n    VkVideoEncodeIntraRefreshCapabilitiesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_INTRA_REFRESH_CAPABILITIES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoEncodeSessionIntraRefreshCreateInfoKHR VkVideoEncodeSessionIntraRefreshCreateInfoKHRInit(void)\n{\n    VkVideoEncodeSessionIntraRefreshCreateInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_INTRA_REFRESH_CREATE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoEncodeIntraRefreshInfoKHR VkVideoEncodeIntraRefreshInfoKHRInit(void)\n{\n    VkVideoEncodeIntraRefreshInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_INTRA_REFRESH_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoReferenceIntraRefreshInfoKHR VkVideoReferenceIntraRefreshInfoKHRInit(void)\n{\n    VkVideoReferenceIntraRefreshInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_REFERENCE_INTRA_REFRESH_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR VkPhysicalDeviceVideoEncodeIntraRefreshFeaturesKHRInit(void)\n{\n    VkPhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_INTRA_REFRESH_FEATURES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoEncodeQuantizationMapCapabilitiesKHR VkVideoEncodeQuantizationMapCapabilitiesKHRInit(void)\n{\n    VkVideoEncodeQuantizationMapCapabilitiesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUANTIZATION_MAP_CAPABILITIES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoFormatQuantizationMapPropertiesKHR VkVideoFormatQuantizationMapPropertiesKHRInit(void)\n{\n    VkVideoFormatQuantizationMapPropertiesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_FORMAT_QUANTIZATION_MAP_PROPERTIES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoEncodeQuantizationMapInfoKHR VkVideoEncodeQuantizationMapInfoKHRInit(void)\n{\n    VkVideoEncodeQuantizationMapInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUANTIZATION_MAP_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoEncodeQuantizationMapSessionParametersCreateInfoKHR VkVideoEncodeQuantizationMapSessionParametersCreateInfoKHRInit(void)\n{\n    VkVideoEncodeQuantizationMapSessionParametersCreateInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUANTIZATION_MAP_SESSION_PARAMETERS_CREATE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHRInit(void)\n{\n    VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_QUANTIZATION_MAP_FEATURES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoEncodeH264QuantizationMapCapabilitiesKHR VkVideoEncodeH264QuantizationMapCapabilitiesKHRInit(void)\n{\n    VkVideoEncodeH264QuantizationMapCapabilitiesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_QUANTIZATION_MAP_CAPABILITIES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoEncodeH265QuantizationMapCapabilitiesKHR VkVideoEncodeH265QuantizationMapCapabilitiesKHRInit(void)\n{\n    VkVideoEncodeH265QuantizationMapCapabilitiesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_QUANTIZATION_MAP_CAPABILITIES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoFormatH265QuantizationMapPropertiesKHR VkVideoFormatH265QuantizationMapPropertiesKHRInit(void)\n{\n    VkVideoFormatH265QuantizationMapPropertiesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_FORMAT_H265_QUANTIZATION_MAP_PROPERTIES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoEncodeAV1QuantizationMapCapabilitiesKHR VkVideoEncodeAV1QuantizationMapCapabilitiesKHRInit(void)\n{\n    VkVideoEncodeAV1QuantizationMapCapabilitiesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_QUANTIZATION_MAP_CAPABILITIES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoFormatAV1QuantizationMapPropertiesKHR VkVideoFormatAV1QuantizationMapPropertiesKHRInit(void)\n{\n    VkVideoFormatAV1QuantizationMapPropertiesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_FORMAT_AV1_QUANTIZATION_MAP_PROPERTIES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceRawAccessChainsFeaturesNV VkPhysicalDeviceRawAccessChainsFeaturesNVInit(void)\n{\n    VkPhysicalDeviceRawAccessChainsFeaturesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAW_ACCESS_CHAINS_FEATURES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkExternalComputeQueueDeviceCreateInfoNV VkExternalComputeQueueDeviceCreateInfoNVInit(void)\n{\n    VkExternalComputeQueueDeviceCreateInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_DEVICE_CREATE_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkExternalComputeQueueCreateInfoNV VkExternalComputeQueueCreateInfoNVInit(void)\n{\n    VkExternalComputeQueueCreateInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_CREATE_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkExternalComputeQueueDataParamsNV VkExternalComputeQueueDataParamsNVInit(void)\n{\n    VkExternalComputeQueueDataParamsNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_DATA_PARAMS_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceExternalComputeQueuePropertiesNV VkPhysicalDeviceExternalComputeQueuePropertiesNVInit(void)\n{\n    VkPhysicalDeviceExternalComputeQueuePropertiesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_COMPUTE_QUEUE_PROPERTIES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHRInit(void)\n{\n    VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_RELAXED_EXTENDED_INSTRUCTION_FEATURES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceCommandBufferInheritanceFeaturesNV VkPhysicalDeviceCommandBufferInheritanceFeaturesNVInit(void)\n{\n    VkPhysicalDeviceCommandBufferInheritanceFeaturesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMMAND_BUFFER_INHERITANCE_FEATURES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceMaintenance7FeaturesKHR VkPhysicalDeviceMaintenance7FeaturesKHRInit(void)\n{\n    VkPhysicalDeviceMaintenance7FeaturesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_FEATURES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceMaintenance7PropertiesKHR VkPhysicalDeviceMaintenance7PropertiesKHRInit(void)\n{\n    VkPhysicalDeviceMaintenance7PropertiesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_PROPERTIES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceLayeredApiPropertiesKHR VkPhysicalDeviceLayeredApiPropertiesKHRInit(void)\n{\n    VkPhysicalDeviceLayeredApiPropertiesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceLayeredApiPropertiesListKHR VkPhysicalDeviceLayeredApiPropertiesListKHRInit(void)\n{\n    VkPhysicalDeviceLayeredApiPropertiesListKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_LIST_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceLayeredApiVulkanPropertiesKHR VkPhysicalDeviceLayeredApiVulkanPropertiesKHRInit(void)\n{\n    VkPhysicalDeviceLayeredApiVulkanPropertiesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_VULKAN_PROPERTIES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNVInit(void)\n{\n    VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT16_VECTOR_FEATURES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXTInit(void)\n{\n    VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_REPLICATED_COMPOSITES_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceShaderFloat8FeaturesEXT VkPhysicalDeviceShaderFloat8FeaturesEXTInit(void)\n{\n    VkPhysicalDeviceShaderFloat8FeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT8_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceRayTracingValidationFeaturesNV VkPhysicalDeviceRayTracingValidationFeaturesNVInit(void)\n{\n    VkPhysicalDeviceRayTracingValidationFeaturesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_VALIDATION_FEATURES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceClusterAccelerationStructureFeaturesNV VkPhysicalDeviceClusterAccelerationStructureFeaturesNVInit(void)\n{\n    VkPhysicalDeviceClusterAccelerationStructureFeaturesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_ACCELERATION_STRUCTURE_FEATURES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceClusterAccelerationStructurePropertiesNV VkPhysicalDeviceClusterAccelerationStructurePropertiesNVInit(void)\n{\n    VkPhysicalDeviceClusterAccelerationStructurePropertiesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_ACCELERATION_STRUCTURE_PROPERTIES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkClusterAccelerationStructureClustersBottomLevelInputNV VkClusterAccelerationStructureClustersBottomLevelInputNVInit(void)\n{\n    VkClusterAccelerationStructureClustersBottomLevelInputNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_CLUSTERS_BOTTOM_LEVEL_INPUT_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkClusterAccelerationStructureTriangleClusterInputNV VkClusterAccelerationStructureTriangleClusterInputNVInit(void)\n{\n    VkClusterAccelerationStructureTriangleClusterInputNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_TRIANGLE_CLUSTER_INPUT_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkClusterAccelerationStructureMoveObjectsInputNV VkClusterAccelerationStructureMoveObjectsInputNVInit(void)\n{\n    VkClusterAccelerationStructureMoveObjectsInputNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_MOVE_OBJECTS_INPUT_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkClusterAccelerationStructureInputInfoNV VkClusterAccelerationStructureInputInfoNVInit(void)\n{\n    VkClusterAccelerationStructureInputInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_INPUT_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkClusterAccelerationStructureCommandsInfoNV VkClusterAccelerationStructureCommandsInfoNVInit(void)\n{\n    VkClusterAccelerationStructureCommandsInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_COMMANDS_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkRayTracingPipelineClusterAccelerationStructureCreateInfoNV VkRayTracingPipelineClusterAccelerationStructureCreateInfoNVInit(void)\n{\n    VkRayTracingPipelineClusterAccelerationStructureCreateInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CLUSTER_ACCELERATION_STRUCTURE_CREATE_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDevicePartitionedAccelerationStructureFeaturesNV VkPhysicalDevicePartitionedAccelerationStructureFeaturesNVInit(void)\n{\n    VkPhysicalDevicePartitionedAccelerationStructureFeaturesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PARTITIONED_ACCELERATION_STRUCTURE_FEATURES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDevicePartitionedAccelerationStructurePropertiesNV VkPhysicalDevicePartitionedAccelerationStructurePropertiesNVInit(void)\n{\n    VkPhysicalDevicePartitionedAccelerationStructurePropertiesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PARTITIONED_ACCELERATION_STRUCTURE_PROPERTIES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPartitionedAccelerationStructureFlagsNV VkPartitionedAccelerationStructureFlagsNVInit(void)\n{\n    VkPartitionedAccelerationStructureFlagsNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_FLAGS_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkWriteDescriptorSetPartitionedAccelerationStructureNV VkWriteDescriptorSetPartitionedAccelerationStructureNVInit(void)\n{\n    VkWriteDescriptorSetPartitionedAccelerationStructureNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_PARTITIONED_ACCELERATION_STRUCTURE_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPartitionedAccelerationStructureInstancesInputNV VkPartitionedAccelerationStructureInstancesInputNVInit(void)\n{\n    VkPartitionedAccelerationStructureInstancesInputNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCES_INPUT_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkBuildPartitionedAccelerationStructureInfoNV VkBuildPartitionedAccelerationStructureInfoNVInit(void)\n{\n    VkBuildPartitionedAccelerationStructureInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_BUILD_PARTITIONED_ACCELERATION_STRUCTURE_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXTInit(void)\n{\n    VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXTInit(void)\n{\n    VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkGeneratedCommandsMemoryRequirementsInfoEXT VkGeneratedCommandsMemoryRequirementsInfoEXTInit(void)\n{\n    VkGeneratedCommandsMemoryRequirementsInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkIndirectExecutionSetPipelineInfoEXT VkIndirectExecutionSetPipelineInfoEXTInit(void)\n{\n    VkIndirectExecutionSetPipelineInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkIndirectExecutionSetShaderLayoutInfoEXT VkIndirectExecutionSetShaderLayoutInfoEXTInit(void)\n{\n    VkIndirectExecutionSetShaderLayoutInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkIndirectExecutionSetShaderInfoEXT VkIndirectExecutionSetShaderInfoEXTInit(void)\n{\n    VkIndirectExecutionSetShaderInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkIndirectExecutionSetCreateInfoEXT VkIndirectExecutionSetCreateInfoEXTInit(void)\n{\n    VkIndirectExecutionSetCreateInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_CREATE_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkGeneratedCommandsInfoEXT VkGeneratedCommandsInfoEXTInit(void)\n{\n    VkGeneratedCommandsInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkWriteIndirectExecutionSetPipelineEXT VkWriteIndirectExecutionSetPipelineEXTInit(void)\n{\n    VkWriteIndirectExecutionSetPipelineEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkIndirectCommandsLayoutTokenEXT VkIndirectCommandsLayoutTokenEXTInit(void)\n{\n    VkIndirectCommandsLayoutTokenEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkIndirectCommandsLayoutCreateInfoEXT VkIndirectCommandsLayoutCreateInfoEXTInit(void)\n{\n    VkIndirectCommandsLayoutCreateInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkGeneratedCommandsPipelineInfoEXT VkGeneratedCommandsPipelineInfoEXTInit(void)\n{\n    VkGeneratedCommandsPipelineInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_GENERATED_COMMANDS_PIPELINE_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkGeneratedCommandsShaderInfoEXT VkGeneratedCommandsShaderInfoEXTInit(void)\n{\n    VkGeneratedCommandsShaderInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkWriteIndirectExecutionSetShaderEXT VkWriteIndirectExecutionSetShaderEXTInit(void)\n{\n    VkWriteIndirectExecutionSetShaderEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_SHADER_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkMemoryBarrierAccessFlags3KHR VkMemoryBarrierAccessFlags3KHRInit(void)\n{\n    VkMemoryBarrierAccessFlags3KHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_MEMORY_BARRIER_ACCESS_FLAGS_3_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceMaintenance8FeaturesKHR VkPhysicalDeviceMaintenance8FeaturesKHRInit(void)\n{\n    VkPhysicalDeviceMaintenance8FeaturesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_8_FEATURES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceImageAlignmentControlFeaturesMESA VkPhysicalDeviceImageAlignmentControlFeaturesMESAInit(void)\n{\n    VkPhysicalDeviceImageAlignmentControlFeaturesMESA result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_FEATURES_MESA;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceImageAlignmentControlPropertiesMESA VkPhysicalDeviceImageAlignmentControlPropertiesMESAInit(void)\n{\n    VkPhysicalDeviceImageAlignmentControlPropertiesMESA result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_PROPERTIES_MESA;\n    return result;\n}\n\nstatic VKBIND_INLINE VkImageAlignmentControlCreateInfoMESA VkImageAlignmentControlCreateInfoMESAInit(void)\n{\n    VkImageAlignmentControlCreateInfoMESA result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_IMAGE_ALIGNMENT_CONTROL_CREATE_INFO_MESA;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceShaderFmaFeaturesKHR VkPhysicalDeviceShaderFmaFeaturesKHRInit(void)\n{\n    VkPhysicalDeviceShaderFmaFeaturesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FMA_FEATURES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPushConstantBankInfoNV VkPushConstantBankInfoNVInit(void)\n{\n    VkPushConstantBankInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PUSH_CONSTANT_BANK_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDevicePushConstantBankFeaturesNV VkPhysicalDevicePushConstantBankFeaturesNVInit(void)\n{\n    VkPhysicalDevicePushConstantBankFeaturesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_CONSTANT_BANK_FEATURES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDevicePushConstantBankPropertiesNV VkPhysicalDevicePushConstantBankPropertiesNVInit(void)\n{\n    VkPhysicalDevicePushConstantBankPropertiesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_CONSTANT_BANK_PROPERTIES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceRayTracingInvocationReorderPropertiesEXT VkPhysicalDeviceRayTracingInvocationReorderPropertiesEXTInit(void)\n{\n    VkPhysicalDeviceRayTracingInvocationReorderPropertiesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceRayTracingInvocationReorderFeaturesEXT VkPhysicalDeviceRayTracingInvocationReorderFeaturesEXTInit(void)\n{\n    VkPhysicalDeviceRayTracingInvocationReorderFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV VkPhysicalDeviceRayTracingInvocationReorderPropertiesNVInit(void)\n{\n    VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV VkPhysicalDeviceRayTracingInvocationReorderFeaturesNVInit(void)\n{\n    VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceDepthClampControlFeaturesEXT VkPhysicalDeviceDepthClampControlFeaturesEXTInit(void)\n{\n    VkPhysicalDeviceDepthClampControlFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_CONTROL_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPipelineViewportDepthClampControlCreateInfoEXT VkPipelineViewportDepthClampControlCreateInfoEXTInit(void)\n{\n    VkPipelineViewportDepthClampControlCreateInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLAMP_CONTROL_CREATE_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXTInit(void)\n{\n    VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_ROBUSTNESS_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceMaintenance9FeaturesKHR VkPhysicalDeviceMaintenance9FeaturesKHRInit(void)\n{\n    VkPhysicalDeviceMaintenance9FeaturesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_FEATURES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceMaintenance9PropertiesKHR VkPhysicalDeviceMaintenance9PropertiesKHRInit(void)\n{\n    VkPhysicalDeviceMaintenance9PropertiesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_PROPERTIES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkQueueFamilyOwnershipTransferPropertiesKHR VkQueueFamilyOwnershipTransferPropertiesKHRInit(void)\n{\n    VkQueueFamilyOwnershipTransferPropertiesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_QUEUE_FAMILY_OWNERSHIP_TRANSFER_PROPERTIES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceVideoMaintenance2FeaturesKHR VkPhysicalDeviceVideoMaintenance2FeaturesKHRInit(void)\n{\n    VkPhysicalDeviceVideoMaintenance2FeaturesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_MAINTENANCE_2_FEATURES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoDecodeH264InlineSessionParametersInfoKHR VkVideoDecodeH264InlineSessionParametersInfoKHRInit(void)\n{\n    VkVideoDecodeH264InlineSessionParametersInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_INLINE_SESSION_PARAMETERS_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoDecodeH265InlineSessionParametersInfoKHR VkVideoDecodeH265InlineSessionParametersInfoKHRInit(void)\n{\n    VkVideoDecodeH265InlineSessionParametersInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_INLINE_SESSION_PARAMETERS_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkVideoDecodeAV1InlineSessionParametersInfoKHR VkVideoDecodeAV1InlineSessionParametersInfoKHRInit(void)\n{\n    VkVideoDecodeAV1InlineSessionParametersInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_INLINE_SESSION_PARAMETERS_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceHdrVividFeaturesHUAWEI VkPhysicalDeviceHdrVividFeaturesHUAWEIInit(void)\n{\n    VkPhysicalDeviceHdrVividFeaturesHUAWEI result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HDR_VIVID_FEATURES_HUAWEI;\n    return result;\n}\n\nstatic VKBIND_INLINE VkHdrVividDynamicMetadataHUAWEI VkHdrVividDynamicMetadataHUAWEIInit(void)\n{\n    VkHdrVividDynamicMetadataHUAWEI result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_HDR_VIVID_DYNAMIC_METADATA_HUAWEI;\n    return result;\n}\n\nstatic VKBIND_INLINE VkCooperativeMatrixFlexibleDimensionsPropertiesNV VkCooperativeMatrixFlexibleDimensionsPropertiesNVInit(void)\n{\n    VkCooperativeMatrixFlexibleDimensionsPropertiesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_FLEXIBLE_DIMENSIONS_PROPERTIES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceCooperativeMatrix2FeaturesNV VkPhysicalDeviceCooperativeMatrix2FeaturesNVInit(void)\n{\n    VkPhysicalDeviceCooperativeMatrix2FeaturesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_FEATURES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceCooperativeMatrix2PropertiesNV VkPhysicalDeviceCooperativeMatrix2PropertiesNVInit(void)\n{\n    VkPhysicalDeviceCooperativeMatrix2PropertiesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_PROPERTIES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDevicePipelineOpacityMicromapFeaturesARM VkPhysicalDevicePipelineOpacityMicromapFeaturesARMInit(void)\n{\n    VkPhysicalDevicePipelineOpacityMicromapFeaturesARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_OPACITY_MICROMAP_FEATURES_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceDepthClampZeroOneFeaturesKHR VkPhysicalDeviceDepthClampZeroOneFeaturesKHRInit(void)\n{\n    VkPhysicalDeviceDepthClampZeroOneFeaturesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDevicePerformanceCountersByRegionFeaturesARM VkPhysicalDevicePerformanceCountersByRegionFeaturesARMInit(void)\n{\n    VkPhysicalDevicePerformanceCountersByRegionFeaturesARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_COUNTERS_BY_REGION_FEATURES_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDevicePerformanceCountersByRegionPropertiesARM VkPhysicalDevicePerformanceCountersByRegionPropertiesARMInit(void)\n{\n    VkPhysicalDevicePerformanceCountersByRegionPropertiesARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_COUNTERS_BY_REGION_PROPERTIES_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPerformanceCounterARM VkPerformanceCounterARMInit(void)\n{\n    VkPerformanceCounterARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPerformanceCounterDescriptionARM VkPerformanceCounterDescriptionARMInit(void)\n{\n    VkPerformanceCounterDescriptionARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkRenderPassPerformanceCountersByRegionBeginInfoARM VkRenderPassPerformanceCountersByRegionBeginInfoARMInit(void)\n{\n    VkRenderPassPerformanceCountersByRegionBeginInfoARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_RENDER_PASS_PERFORMANCE_COUNTERS_BY_REGION_BEGIN_INFO_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceShaderInstrumentationFeaturesARM VkPhysicalDeviceShaderInstrumentationFeaturesARMInit(void)\n{\n    VkPhysicalDeviceShaderInstrumentationFeaturesARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INSTRUMENTATION_FEATURES_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceShaderInstrumentationPropertiesARM VkPhysicalDeviceShaderInstrumentationPropertiesARMInit(void)\n{\n    VkPhysicalDeviceShaderInstrumentationPropertiesARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INSTRUMENTATION_PROPERTIES_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkShaderInstrumentationCreateInfoARM VkShaderInstrumentationCreateInfoARMInit(void)\n{\n    VkShaderInstrumentationCreateInfoARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SHADER_INSTRUMENTATION_CREATE_INFO_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkShaderInstrumentationMetricDescriptionARM VkShaderInstrumentationMetricDescriptionARMInit(void)\n{\n    VkShaderInstrumentationMetricDescriptionARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SHADER_INSTRUMENTATION_METRIC_DESCRIPTION_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceFormatPackFeaturesARM VkPhysicalDeviceFormatPackFeaturesARMInit(void)\n{\n    VkPhysicalDeviceFormatPackFeaturesARM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FORMAT_PACK_FEATURES_ARM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE VkPhysicalDeviceFragmentDensityMapLayeredFeaturesVALVEInit(void)\n{\n    VkPhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_FEATURES_VALVE;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE VkPhysicalDeviceFragmentDensityMapLayeredPropertiesVALVEInit(void)\n{\n    VkPhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_PROPERTIES_VALVE;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPipelineFragmentDensityMapLayeredCreateInfoVALVE VkPipelineFragmentDensityMapLayeredCreateInfoVALVEInit(void)\n{\n    VkPipelineFragmentDensityMapLayeredCreateInfoVALVE result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_DENSITY_MAP_LAYERED_CREATE_INFO_VALVE;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceRobustness2FeaturesKHR VkPhysicalDeviceRobustness2FeaturesKHRInit(void)\n{\n    VkPhysicalDeviceRobustness2FeaturesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceRobustness2PropertiesKHR VkPhysicalDeviceRobustness2PropertiesKHRInit(void)\n{\n    VkPhysicalDeviceRobustness2PropertiesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSetPresentConfigNV VkSetPresentConfigNVInit(void)\n{\n    VkSetPresentConfigNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SET_PRESENT_CONFIG_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDevicePresentMeteringFeaturesNV VkPhysicalDevicePresentMeteringFeaturesNVInit(void)\n{\n    VkPhysicalDevicePresentMeteringFeaturesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_METERING_FEATURES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkRenderingEndInfoKHR VkRenderingEndInfoKHRInit(void)\n{\n    VkRenderingEndInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_RENDERING_END_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXTInit(void)\n{\n    VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXTInit(void)\n{\n    VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkRenderPassFragmentDensityMapOffsetEndInfoEXT VkRenderPassFragmentDensityMapOffsetEndInfoEXTInit(void)\n{\n    VkRenderPassFragmentDensityMapOffsetEndInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT VkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXTInit(void)\n{\n    VkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_DEVICE_MEMORY_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHRInit(void)\n{\n    VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceShader64BitIndexingFeaturesEXT VkPhysicalDeviceShader64BitIndexingFeaturesEXTInit(void)\n{\n    VkPhysicalDeviceShader64BitIndexingFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_64_BIT_INDEXING_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceCustomResolveFeaturesEXT VkPhysicalDeviceCustomResolveFeaturesEXTInit(void)\n{\n    VkPhysicalDeviceCustomResolveFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_RESOLVE_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkBeginCustomResolveInfoEXT VkBeginCustomResolveInfoEXTInit(void)\n{\n    VkBeginCustomResolveInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_BEGIN_CUSTOM_RESOLVE_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkCustomResolveCreateInfoEXT VkCustomResolveCreateInfoEXTInit(void)\n{\n    VkCustomResolveCreateInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_CUSTOM_RESOLVE_CREATE_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDataGraphPipelineBuiltinModelCreateInfoQCOM VkDataGraphPipelineBuiltinModelCreateInfoQCOMInit(void)\n{\n    VkDataGraphPipelineBuiltinModelCreateInfoQCOM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_BUILTIN_MODEL_CREATE_INFO_QCOM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceDataGraphModelFeaturesQCOM VkPhysicalDeviceDataGraphModelFeaturesQCOMInit(void)\n{\n    VkPhysicalDeviceDataGraphModelFeaturesQCOM result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_MODEL_FEATURES_QCOM;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceMaintenance10FeaturesKHR VkPhysicalDeviceMaintenance10FeaturesKHRInit(void)\n{\n    VkPhysicalDeviceMaintenance10FeaturesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_10_FEATURES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceMaintenance10PropertiesKHR VkPhysicalDeviceMaintenance10PropertiesKHRInit(void)\n{\n    VkPhysicalDeviceMaintenance10PropertiesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_10_PROPERTIES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkRenderingAttachmentFlagsInfoKHR VkRenderingAttachmentFlagsInfoKHRInit(void)\n{\n    VkRenderingAttachmentFlagsInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_FLAGS_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkResolveImageModeInfoKHR VkResolveImageModeInfoKHRInit(void)\n{\n    VkResolveImageModeInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_RESOLVE_IMAGE_MODE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceShaderLongVectorFeaturesEXT VkPhysicalDeviceShaderLongVectorFeaturesEXTInit(void)\n{\n    VkPhysicalDeviceShaderLongVectorFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_LONG_VECTOR_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceShaderLongVectorPropertiesEXT VkPhysicalDeviceShaderLongVectorPropertiesEXTInit(void)\n{\n    VkPhysicalDeviceShaderLongVectorPropertiesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_LONG_VECTOR_PROPERTIES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDevicePipelineCacheIncrementalModeFeaturesSEC VkPhysicalDevicePipelineCacheIncrementalModeFeaturesSECInit(void)\n{\n    VkPhysicalDevicePipelineCacheIncrementalModeFeaturesSEC result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CACHE_INCREMENTAL_MODE_FEATURES_SEC;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT VkPhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXTInit(void)\n{\n    VkPhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_UNIFORM_BUFFER_UNSIZED_ARRAY_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkComputeOccupancyPriorityParametersNV VkComputeOccupancyPriorityParametersNVInit(void)\n{\n    VkComputeOccupancyPriorityParametersNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_COMPUTE_OCCUPANCY_PRIORITY_PARAMETERS_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceComputeOccupancyPriorityFeaturesNV VkPhysicalDeviceComputeOccupancyPriorityFeaturesNVInit(void)\n{\n    VkPhysicalDeviceComputeOccupancyPriorityFeaturesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_OCCUPANCY_PRIORITY_FEATURES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceShaderSubgroupPartitionedFeaturesEXT VkPhysicalDeviceShaderSubgroupPartitionedFeaturesEXTInit(void)\n{\n    VkPhysicalDeviceShaderSubgroupPartitionedFeaturesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_PARTITIONED_FEATURES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE VkPhysicalDeviceShaderMixedFloatDotProductFeaturesVALVEInit(void)\n{\n    VkPhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MIXED_FLOAT_DOT_PRODUCT_FEATURES_VALVE;\n    return result;\n}\n\n#ifdef VK_USE_PLATFORM_XLIB_KHR\nstatic VKBIND_INLINE VkXlibSurfaceCreateInfoKHR VkXlibSurfaceCreateInfoKHRInit(void)\n{\n    VkXlibSurfaceCreateInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR;\n    return result;\n}\n\n#endif /*VK_USE_PLATFORM_XLIB_KHR*/\n\n#ifdef VK_USE_PLATFORM_XCB_KHR\nstatic VKBIND_INLINE VkXcbSurfaceCreateInfoKHR VkXcbSurfaceCreateInfoKHRInit(void)\n{\n    VkXcbSurfaceCreateInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR;\n    return result;\n}\n\n#endif /*VK_USE_PLATFORM_XCB_KHR*/\n\n#ifdef VK_USE_PLATFORM_WAYLAND_KHR\nstatic VKBIND_INLINE VkWaylandSurfaceCreateInfoKHR VkWaylandSurfaceCreateInfoKHRInit(void)\n{\n    VkWaylandSurfaceCreateInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR;\n    return result;\n}\n\n#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/\n\n#ifdef VK_USE_PLATFORM_UBM_SEC\nstatic VKBIND_INLINE VkUbmSurfaceCreateInfoSEC VkUbmSurfaceCreateInfoSECInit(void)\n{\n    VkUbmSurfaceCreateInfoSEC result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_UBM_SURFACE_CREATE_INFO_SEC;\n    return result;\n}\n\n#endif /*VK_USE_PLATFORM_UBM_SEC*/\n\n#ifdef VK_USE_PLATFORM_DIRECTFB_EXT\nstatic VKBIND_INLINE VkDirectFBSurfaceCreateInfoEXT VkDirectFBSurfaceCreateInfoEXTInit(void)\n{\n    VkDirectFBSurfaceCreateInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT;\n    return result;\n}\n\n#endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/\n\n#ifdef VK_USE_PLATFORM_ANDROID_KHR\nstatic VKBIND_INLINE VkAndroidSurfaceCreateInfoKHR VkAndroidSurfaceCreateInfoKHRInit(void)\n{\n    VkAndroidSurfaceCreateInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkAndroidHardwareBufferUsageANDROID VkAndroidHardwareBufferUsageANDROIDInit(void)\n{\n    VkAndroidHardwareBufferUsageANDROID result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID;\n    return result;\n}\n\nstatic VKBIND_INLINE VkAndroidHardwareBufferPropertiesANDROID VkAndroidHardwareBufferPropertiesANDROIDInit(void)\n{\n    VkAndroidHardwareBufferPropertiesANDROID result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID;\n    return result;\n}\n\nstatic VKBIND_INLINE VkAndroidHardwareBufferFormatPropertiesANDROID VkAndroidHardwareBufferFormatPropertiesANDROIDInit(void)\n{\n    VkAndroidHardwareBufferFormatPropertiesANDROID result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID;\n    return result;\n}\n\nstatic VKBIND_INLINE VkImportAndroidHardwareBufferInfoANDROID VkImportAndroidHardwareBufferInfoANDROIDInit(void)\n{\n    VkImportAndroidHardwareBufferInfoANDROID result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID;\n    return result;\n}\n\nstatic VKBIND_INLINE VkMemoryGetAndroidHardwareBufferInfoANDROID VkMemoryGetAndroidHardwareBufferInfoANDROIDInit(void)\n{\n    VkMemoryGetAndroidHardwareBufferInfoANDROID result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID;\n    return result;\n}\n\nstatic VKBIND_INLINE VkExternalFormatANDROID VkExternalFormatANDROIDInit(void)\n{\n    VkExternalFormatANDROID result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID;\n    return result;\n}\n\nstatic VKBIND_INLINE VkAndroidHardwareBufferFormatProperties2ANDROID VkAndroidHardwareBufferFormatProperties2ANDROIDInit(void)\n{\n    VkAndroidHardwareBufferFormatProperties2ANDROID result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceExternalFormatResolveFeaturesANDROID VkPhysicalDeviceExternalFormatResolveFeaturesANDROIDInit(void)\n{\n    VkPhysicalDeviceExternalFormatResolveFeaturesANDROID result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_FEATURES_ANDROID;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceExternalFormatResolvePropertiesANDROID VkPhysicalDeviceExternalFormatResolvePropertiesANDROIDInit(void)\n{\n    VkPhysicalDeviceExternalFormatResolvePropertiesANDROID result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_PROPERTIES_ANDROID;\n    return result;\n}\n\nstatic VKBIND_INLINE VkAndroidHardwareBufferFormatResolvePropertiesANDROID VkAndroidHardwareBufferFormatResolvePropertiesANDROIDInit(void)\n{\n    VkAndroidHardwareBufferFormatResolvePropertiesANDROID result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_RESOLVE_PROPERTIES_ANDROID;\n    return result;\n}\n\n#endif /*VK_USE_PLATFORM_ANDROID_KHR*/\n\n#ifdef VK_USE_PLATFORM_WIN32_KHR\nstatic VKBIND_INLINE VkWin32SurfaceCreateInfoKHR VkWin32SurfaceCreateInfoKHRInit(void)\n{\n    VkWin32SurfaceCreateInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkImportMemoryWin32HandleInfoKHR VkImportMemoryWin32HandleInfoKHRInit(void)\n{\n    VkImportMemoryWin32HandleInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkExportMemoryWin32HandleInfoKHR VkExportMemoryWin32HandleInfoKHRInit(void)\n{\n    VkExportMemoryWin32HandleInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkMemoryWin32HandlePropertiesKHR VkMemoryWin32HandlePropertiesKHRInit(void)\n{\n    VkMemoryWin32HandlePropertiesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkMemoryGetWin32HandleInfoKHR VkMemoryGetWin32HandleInfoKHRInit(void)\n{\n    VkMemoryGetWin32HandleInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkImportMemoryWin32HandleInfoNV VkImportMemoryWin32HandleInfoNVInit(void)\n{\n    VkImportMemoryWin32HandleInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkExportMemoryWin32HandleInfoNV VkExportMemoryWin32HandleInfoNVInit(void)\n{\n    VkExportMemoryWin32HandleInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkWin32KeyedMutexAcquireReleaseInfoKHR VkWin32KeyedMutexAcquireReleaseInfoKHRInit(void)\n{\n    VkWin32KeyedMutexAcquireReleaseInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkWin32KeyedMutexAcquireReleaseInfoNV VkWin32KeyedMutexAcquireReleaseInfoNVInit(void)\n{\n    VkWin32KeyedMutexAcquireReleaseInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkImportSemaphoreWin32HandleInfoKHR VkImportSemaphoreWin32HandleInfoKHRInit(void)\n{\n    VkImportSemaphoreWin32HandleInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkExportSemaphoreWin32HandleInfoKHR VkExportSemaphoreWin32HandleInfoKHRInit(void)\n{\n    VkExportSemaphoreWin32HandleInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkD3D12FenceSubmitInfoKHR VkD3D12FenceSubmitInfoKHRInit(void)\n{\n    VkD3D12FenceSubmitInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSemaphoreGetWin32HandleInfoKHR VkSemaphoreGetWin32HandleInfoKHRInit(void)\n{\n    VkSemaphoreGetWin32HandleInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkImportFenceWin32HandleInfoKHR VkImportFenceWin32HandleInfoKHRInit(void)\n{\n    VkImportFenceWin32HandleInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkExportFenceWin32HandleInfoKHR VkExportFenceWin32HandleInfoKHRInit(void)\n{\n    VkExportFenceWin32HandleInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkFenceGetWin32HandleInfoKHR VkFenceGetWin32HandleInfoKHRInit(void)\n{\n    VkFenceGetWin32HandleInfoKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSurfaceFullScreenExclusiveInfoEXT VkSurfaceFullScreenExclusiveInfoEXTInit(void)\n{\n    VkSurfaceFullScreenExclusiveInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSurfaceCapabilitiesFullScreenExclusiveEXT VkSurfaceCapabilitiesFullScreenExclusiveEXTInit(void)\n{\n    VkSurfaceCapabilitiesFullScreenExclusiveEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSurfaceFullScreenExclusiveWin32InfoEXT VkSurfaceFullScreenExclusiveWin32InfoEXTInit(void)\n{\n    VkSurfaceFullScreenExclusiveWin32InfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT;\n    return result;\n}\n\n#endif /*VK_USE_PLATFORM_WIN32_KHR*/\n\n#ifdef VK_USE_PLATFORM_VI_NN\nstatic VKBIND_INLINE VkViSurfaceCreateInfoNN VkViSurfaceCreateInfoNNInit(void)\n{\n    VkViSurfaceCreateInfoNN result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN;\n    return result;\n}\n\n#endif /*VK_USE_PLATFORM_VI_NN*/\n\n#ifdef VK_USE_PLATFORM_IOS_MVK\nstatic VKBIND_INLINE VkIOSSurfaceCreateInfoMVK VkIOSSurfaceCreateInfoMVKInit(void)\n{\n    VkIOSSurfaceCreateInfoMVK result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK;\n    return result;\n}\n\n#endif /*VK_USE_PLATFORM_IOS_MVK*/\n\n#ifdef VK_USE_PLATFORM_MACOS_MVK\nstatic VKBIND_INLINE VkMacOSSurfaceCreateInfoMVK VkMacOSSurfaceCreateInfoMVKInit(void)\n{\n    VkMacOSSurfaceCreateInfoMVK result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK;\n    return result;\n}\n\n#endif /*VK_USE_PLATFORM_MACOS_MVK*/\n\n#ifdef VK_USE_PLATFORM_METAL_EXT\nstatic VKBIND_INLINE VkMetalSurfaceCreateInfoEXT VkMetalSurfaceCreateInfoEXTInit(void)\n{\n    VkMetalSurfaceCreateInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkExportMetalObjectCreateInfoEXT VkExportMetalObjectCreateInfoEXTInit(void)\n{\n    VkExportMetalObjectCreateInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECT_CREATE_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkExportMetalObjectsInfoEXT VkExportMetalObjectsInfoEXTInit(void)\n{\n    VkExportMetalObjectsInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECTS_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkExportMetalDeviceInfoEXT VkExportMetalDeviceInfoEXTInit(void)\n{\n    VkExportMetalDeviceInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_EXPORT_METAL_DEVICE_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkExportMetalCommandQueueInfoEXT VkExportMetalCommandQueueInfoEXTInit(void)\n{\n    VkExportMetalCommandQueueInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_EXPORT_METAL_COMMAND_QUEUE_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkExportMetalBufferInfoEXT VkExportMetalBufferInfoEXTInit(void)\n{\n    VkExportMetalBufferInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_EXPORT_METAL_BUFFER_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkImportMetalBufferInfoEXT VkImportMetalBufferInfoEXTInit(void)\n{\n    VkImportMetalBufferInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_IMPORT_METAL_BUFFER_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkExportMetalTextureInfoEXT VkExportMetalTextureInfoEXTInit(void)\n{\n    VkExportMetalTextureInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_EXPORT_METAL_TEXTURE_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkImportMetalTextureInfoEXT VkImportMetalTextureInfoEXTInit(void)\n{\n    VkImportMetalTextureInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_IMPORT_METAL_TEXTURE_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkExportMetalIOSurfaceInfoEXT VkExportMetalIOSurfaceInfoEXTInit(void)\n{\n    VkExportMetalIOSurfaceInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_EXPORT_METAL_IO_SURFACE_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkImportMetalIOSurfaceInfoEXT VkImportMetalIOSurfaceInfoEXTInit(void)\n{\n    VkImportMetalIOSurfaceInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_IMPORT_METAL_IO_SURFACE_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkExportMetalSharedEventInfoEXT VkExportMetalSharedEventInfoEXTInit(void)\n{\n    VkExportMetalSharedEventInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_EXPORT_METAL_SHARED_EVENT_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkImportMetalSharedEventInfoEXT VkImportMetalSharedEventInfoEXTInit(void)\n{\n    VkImportMetalSharedEventInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_IMPORT_METAL_SHARED_EVENT_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkImportMemoryMetalHandleInfoEXT VkImportMemoryMetalHandleInfoEXTInit(void)\n{\n    VkImportMemoryMetalHandleInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_IMPORT_MEMORY_METAL_HANDLE_INFO_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkMemoryMetalHandlePropertiesEXT VkMemoryMetalHandlePropertiesEXTInit(void)\n{\n    VkMemoryMetalHandlePropertiesEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_MEMORY_METAL_HANDLE_PROPERTIES_EXT;\n    return result;\n}\n\nstatic VKBIND_INLINE VkMemoryGetMetalHandleInfoEXT VkMemoryGetMetalHandleInfoEXTInit(void)\n{\n    VkMemoryGetMetalHandleInfoEXT result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_MEMORY_GET_METAL_HANDLE_INFO_EXT;\n    return result;\n}\n\n#endif /*VK_USE_PLATFORM_METAL_EXT*/\n\n#ifdef VK_USE_PLATFORM_FUCHSIA\nstatic VKBIND_INLINE VkImagePipeSurfaceCreateInfoFUCHSIA VkImagePipeSurfaceCreateInfoFUCHSIAInit(void)\n{\n    VkImagePipeSurfaceCreateInfoFUCHSIA result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA;\n    return result;\n}\n\nstatic VKBIND_INLINE VkImportMemoryZirconHandleInfoFUCHSIA VkImportMemoryZirconHandleInfoFUCHSIAInit(void)\n{\n    VkImportMemoryZirconHandleInfoFUCHSIA result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA;\n    return result;\n}\n\nstatic VKBIND_INLINE VkMemoryZirconHandlePropertiesFUCHSIA VkMemoryZirconHandlePropertiesFUCHSIAInit(void)\n{\n    VkMemoryZirconHandlePropertiesFUCHSIA result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA;\n    return result;\n}\n\nstatic VKBIND_INLINE VkMemoryGetZirconHandleInfoFUCHSIA VkMemoryGetZirconHandleInfoFUCHSIAInit(void)\n{\n    VkMemoryGetZirconHandleInfoFUCHSIA result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA;\n    return result;\n}\n\nstatic VKBIND_INLINE VkImportSemaphoreZirconHandleInfoFUCHSIA VkImportSemaphoreZirconHandleInfoFUCHSIAInit(void)\n{\n    VkImportSemaphoreZirconHandleInfoFUCHSIA result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSemaphoreGetZirconHandleInfoFUCHSIA VkSemaphoreGetZirconHandleInfoFUCHSIAInit(void)\n{\n    VkSemaphoreGetZirconHandleInfoFUCHSIA result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA;\n    return result;\n}\n\nstatic VKBIND_INLINE VkBufferCollectionCreateInfoFUCHSIA VkBufferCollectionCreateInfoFUCHSIAInit(void)\n{\n    VkBufferCollectionCreateInfoFUCHSIA result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_BUFFER_COLLECTION_CREATE_INFO_FUCHSIA;\n    return result;\n}\n\nstatic VKBIND_INLINE VkImportMemoryBufferCollectionFUCHSIA VkImportMemoryBufferCollectionFUCHSIAInit(void)\n{\n    VkImportMemoryBufferCollectionFUCHSIA result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_IMPORT_MEMORY_BUFFER_COLLECTION_FUCHSIA;\n    return result;\n}\n\nstatic VKBIND_INLINE VkBufferCollectionImageCreateInfoFUCHSIA VkBufferCollectionImageCreateInfoFUCHSIAInit(void)\n{\n    VkBufferCollectionImageCreateInfoFUCHSIA result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_BUFFER_COLLECTION_IMAGE_CREATE_INFO_FUCHSIA;\n    return result;\n}\n\nstatic VKBIND_INLINE VkBufferCollectionConstraintsInfoFUCHSIA VkBufferCollectionConstraintsInfoFUCHSIAInit(void)\n{\n    VkBufferCollectionConstraintsInfoFUCHSIA result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_BUFFER_COLLECTION_CONSTRAINTS_INFO_FUCHSIA;\n    return result;\n}\n\nstatic VKBIND_INLINE VkBufferConstraintsInfoFUCHSIA VkBufferConstraintsInfoFUCHSIAInit(void)\n{\n    VkBufferConstraintsInfoFUCHSIA result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_BUFFER_CONSTRAINTS_INFO_FUCHSIA;\n    return result;\n}\n\nstatic VKBIND_INLINE VkBufferCollectionBufferCreateInfoFUCHSIA VkBufferCollectionBufferCreateInfoFUCHSIAInit(void)\n{\n    VkBufferCollectionBufferCreateInfoFUCHSIA result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_BUFFER_COLLECTION_BUFFER_CREATE_INFO_FUCHSIA;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSysmemColorSpaceFUCHSIA VkSysmemColorSpaceFUCHSIAInit(void)\n{\n    VkSysmemColorSpaceFUCHSIA result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SYSMEM_COLOR_SPACE_FUCHSIA;\n    return result;\n}\n\nstatic VKBIND_INLINE VkBufferCollectionPropertiesFUCHSIA VkBufferCollectionPropertiesFUCHSIAInit(void)\n{\n    VkBufferCollectionPropertiesFUCHSIA result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_BUFFER_COLLECTION_PROPERTIES_FUCHSIA;\n    return result;\n}\n\nstatic VKBIND_INLINE VkImageFormatConstraintsInfoFUCHSIA VkImageFormatConstraintsInfoFUCHSIAInit(void)\n{\n    VkImageFormatConstraintsInfoFUCHSIA result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_IMAGE_FORMAT_CONSTRAINTS_INFO_FUCHSIA;\n    return result;\n}\n\nstatic VKBIND_INLINE VkImageConstraintsInfoFUCHSIA VkImageConstraintsInfoFUCHSIAInit(void)\n{\n    VkImageConstraintsInfoFUCHSIA result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_IMAGE_CONSTRAINTS_INFO_FUCHSIA;\n    return result;\n}\n\n#endif /*VK_USE_PLATFORM_FUCHSIA*/\n\n#ifdef VK_USE_PLATFORM_GGP\nstatic VKBIND_INLINE VkStreamDescriptorSurfaceCreateInfoGGP VkStreamDescriptorSurfaceCreateInfoGGPInit(void)\n{\n    VkStreamDescriptorSurfaceCreateInfoGGP result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPresentFrameTokenGGP VkPresentFrameTokenGGPInit(void)\n{\n    VkPresentFrameTokenGGP result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP;\n    return result;\n}\n\n#endif /*VK_USE_PLATFORM_GGP*/\n\n#ifdef VK_USE_PLATFORM_SCI\nstatic VKBIND_INLINE VkExportMemorySciBufInfoNV VkExportMemorySciBufInfoNVInit(void)\n{\n    VkExportMemorySciBufInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_EXPORT_MEMORY_SCI_BUF_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkImportMemorySciBufInfoNV VkImportMemorySciBufInfoNVInit(void)\n{\n    VkImportMemorySciBufInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_IMPORT_MEMORY_SCI_BUF_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkMemoryGetSciBufInfoNV VkMemoryGetSciBufInfoNVInit(void)\n{\n    VkMemoryGetSciBufInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_MEMORY_GET_SCI_BUF_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkMemorySciBufPropertiesNV VkMemorySciBufPropertiesNVInit(void)\n{\n    VkMemorySciBufPropertiesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_MEMORY_SCI_BUF_PROPERTIES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceExternalMemorySciBufFeaturesNV VkPhysicalDeviceExternalMemorySciBufFeaturesNVInit(void)\n{\n    VkPhysicalDeviceExternalMemorySciBufFeaturesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCI_BUF_FEATURES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceExternalSciSync2FeaturesNV VkPhysicalDeviceExternalSciSync2FeaturesNVInit(void)\n{\n    VkPhysicalDeviceExternalSciSync2FeaturesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SCI_SYNC_2_FEATURES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSemaphoreSciSyncPoolCreateInfoNV VkSemaphoreSciSyncPoolCreateInfoNVInit(void)\n{\n    VkSemaphoreSciSyncPoolCreateInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SEMAPHORE_SCI_SYNC_POOL_CREATE_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSemaphoreSciSyncCreateInfoNV VkSemaphoreSciSyncCreateInfoNVInit(void)\n{\n    VkSemaphoreSciSyncCreateInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SEMAPHORE_SCI_SYNC_CREATE_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkExportFenceSciSyncInfoNV VkExportFenceSciSyncInfoNVInit(void)\n{\n    VkExportFenceSciSyncInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_EXPORT_FENCE_SCI_SYNC_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkImportFenceSciSyncInfoNV VkImportFenceSciSyncInfoNVInit(void)\n{\n    VkImportFenceSciSyncInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_IMPORT_FENCE_SCI_SYNC_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkFenceGetSciSyncInfoNV VkFenceGetSciSyncInfoNVInit(void)\n{\n    VkFenceGetSciSyncInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_FENCE_GET_SCI_SYNC_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSciSyncAttributesInfoNV VkSciSyncAttributesInfoNVInit(void)\n{\n    VkSciSyncAttributesInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SCI_SYNC_ATTRIBUTES_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkDeviceSemaphoreSciSyncPoolReservationCreateInfoNV VkDeviceSemaphoreSciSyncPoolReservationCreateInfoNVInit(void)\n{\n    VkDeviceSemaphoreSciSyncPoolReservationCreateInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_DEVICE_SEMAPHORE_SCI_SYNC_POOL_RESERVATION_CREATE_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkExportSemaphoreSciSyncInfoNV VkExportSemaphoreSciSyncInfoNVInit(void)\n{\n    VkExportSemaphoreSciSyncInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_SCI_SYNC_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkImportSemaphoreSciSyncInfoNV VkImportSemaphoreSciSyncInfoNVInit(void)\n{\n    VkImportSemaphoreSciSyncInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_SCI_SYNC_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSemaphoreGetSciSyncInfoNV VkSemaphoreGetSciSyncInfoNVInit(void)\n{\n    VkSemaphoreGetSciSyncInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SEMAPHORE_GET_SCI_SYNC_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceExternalSciSyncFeaturesNV VkPhysicalDeviceExternalSciSyncFeaturesNVInit(void)\n{\n    VkPhysicalDeviceExternalSciSyncFeaturesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SCI_SYNC_FEATURES_NV;\n    return result;\n}\n\n#endif /*VK_USE_PLATFORM_SCI*/\n\n#ifdef VK_ENABLE_BETA_EXTENSIONS\nstatic VKBIND_INLINE VkPhysicalDeviceShaderEnqueueFeaturesAMDX VkPhysicalDeviceShaderEnqueueFeaturesAMDXInit(void)\n{\n    VkPhysicalDeviceShaderEnqueueFeaturesAMDX result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_FEATURES_AMDX;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceShaderEnqueuePropertiesAMDX VkPhysicalDeviceShaderEnqueuePropertiesAMDXInit(void)\n{\n    VkPhysicalDeviceShaderEnqueuePropertiesAMDX result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_PROPERTIES_AMDX;\n    return result;\n}\n\nstatic VKBIND_INLINE VkExecutionGraphPipelineScratchSizeAMDX VkExecutionGraphPipelineScratchSizeAMDXInit(void)\n{\n    VkExecutionGraphPipelineScratchSizeAMDX result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_SCRATCH_SIZE_AMDX;\n    return result;\n}\n\nstatic VKBIND_INLINE VkExecutionGraphPipelineCreateInfoAMDX VkExecutionGraphPipelineCreateInfoAMDXInit(void)\n{\n    VkExecutionGraphPipelineCreateInfoAMDX result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_CREATE_INFO_AMDX;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPipelineShaderStageNodeCreateInfoAMDX VkPipelineShaderStageNodeCreateInfoAMDXInit(void)\n{\n    VkPipelineShaderStageNodeCreateInfoAMDX result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_NODE_CREATE_INFO_AMDX;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDevicePortabilitySubsetFeaturesKHR VkPhysicalDevicePortabilitySubsetFeaturesKHRInit(void)\n{\n    VkPhysicalDevicePortabilitySubsetFeaturesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDevicePortabilitySubsetPropertiesKHR VkPhysicalDevicePortabilitySubsetPropertiesKHRInit(void)\n{\n    VkPhysicalDevicePortabilitySubsetPropertiesKHR result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR;\n    return result;\n}\n\nstatic VKBIND_INLINE VkCudaModuleCreateInfoNV VkCudaModuleCreateInfoNVInit(void)\n{\n    VkCudaModuleCreateInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_CUDA_MODULE_CREATE_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkCudaFunctionCreateInfoNV VkCudaFunctionCreateInfoNVInit(void)\n{\n    VkCudaFunctionCreateInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_CUDA_FUNCTION_CREATE_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkCudaLaunchInfoNV VkCudaLaunchInfoNVInit(void)\n{\n    VkCudaLaunchInfoNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_CUDA_LAUNCH_INFO_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceCudaKernelLaunchFeaturesNV VkPhysicalDeviceCudaKernelLaunchFeaturesNVInit(void)\n{\n    VkPhysicalDeviceCudaKernelLaunchFeaturesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_FEATURES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceCudaKernelLaunchPropertiesNV VkPhysicalDeviceCudaKernelLaunchPropertiesNVInit(void)\n{\n    VkPhysicalDeviceCudaKernelLaunchPropertiesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_PROPERTIES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceDenseGeometryFormatFeaturesAMDX VkPhysicalDeviceDenseGeometryFormatFeaturesAMDXInit(void)\n{\n    VkPhysicalDeviceDenseGeometryFormatFeaturesAMDX result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DENSE_GEOMETRY_FORMAT_FEATURES_AMDX;\n    return result;\n}\n\nstatic VKBIND_INLINE VkAccelerationStructureDenseGeometryFormatTrianglesDataAMDX VkAccelerationStructureDenseGeometryFormatTrianglesDataAMDXInit(void)\n{\n    VkAccelerationStructureDenseGeometryFormatTrianglesDataAMDX result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DENSE_GEOMETRY_FORMAT_TRIANGLES_DATA_AMDX;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceDisplacementMicromapFeaturesNV VkPhysicalDeviceDisplacementMicromapFeaturesNVInit(void)\n{\n    VkPhysicalDeviceDisplacementMicromapFeaturesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_FEATURES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceDisplacementMicromapPropertiesNV VkPhysicalDeviceDisplacementMicromapPropertiesNVInit(void)\n{\n    VkPhysicalDeviceDisplacementMicromapPropertiesNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_PROPERTIES_NV;\n    return result;\n}\n\nstatic VKBIND_INLINE VkAccelerationStructureTrianglesDisplacementMicromapNV VkAccelerationStructureTrianglesDisplacementMicromapNVInit(void)\n{\n    VkAccelerationStructureTrianglesDisplacementMicromapNV result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_DISPLACEMENT_MICROMAP_NV;\n    return result;\n}\n\n#endif /*VK_ENABLE_BETA_EXTENSIONS*/\n\n#ifdef VK_USE_PLATFORM_SCREEN_QNX\nstatic VKBIND_INLINE VkScreenSurfaceCreateInfoQNX VkScreenSurfaceCreateInfoQNXInit(void)\n{\n    VkScreenSurfaceCreateInfoQNX result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX;\n    return result;\n}\n\nstatic VKBIND_INLINE VkScreenBufferPropertiesQNX VkScreenBufferPropertiesQNXInit(void)\n{\n    VkScreenBufferPropertiesQNX result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SCREEN_BUFFER_PROPERTIES_QNX;\n    return result;\n}\n\nstatic VKBIND_INLINE VkScreenBufferFormatPropertiesQNX VkScreenBufferFormatPropertiesQNXInit(void)\n{\n    VkScreenBufferFormatPropertiesQNX result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SCREEN_BUFFER_FORMAT_PROPERTIES_QNX;\n    return result;\n}\n\nstatic VKBIND_INLINE VkImportScreenBufferInfoQNX VkImportScreenBufferInfoQNXInit(void)\n{\n    VkImportScreenBufferInfoQNX result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_IMPORT_SCREEN_BUFFER_INFO_QNX;\n    return result;\n}\n\nstatic VKBIND_INLINE VkExternalFormatQNX VkExternalFormatQNXInit(void)\n{\n    VkExternalFormatQNX result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_QNX;\n    return result;\n}\n\nstatic VKBIND_INLINE VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNXInit(void)\n{\n    VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCREEN_BUFFER_FEATURES_QNX;\n    return result;\n}\n\n#endif /*VK_USE_PLATFORM_SCREEN_QNX*/\n\n#ifdef VK_USE_PLATFORM_OHOS\nstatic VKBIND_INLINE VkNativeBufferUsageOHOS VkNativeBufferUsageOHOSInit(void)\n{\n    VkNativeBufferUsageOHOS result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_NATIVE_BUFFER_USAGE_OHOS;\n    return result;\n}\n\nstatic VKBIND_INLINE VkNativeBufferPropertiesOHOS VkNativeBufferPropertiesOHOSInit(void)\n{\n    VkNativeBufferPropertiesOHOS result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_NATIVE_BUFFER_PROPERTIES_OHOS;\n    return result;\n}\n\nstatic VKBIND_INLINE VkNativeBufferFormatPropertiesOHOS VkNativeBufferFormatPropertiesOHOSInit(void)\n{\n    VkNativeBufferFormatPropertiesOHOS result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_NATIVE_BUFFER_FORMAT_PROPERTIES_OHOS;\n    return result;\n}\n\nstatic VKBIND_INLINE VkImportNativeBufferInfoOHOS VkImportNativeBufferInfoOHOSInit(void)\n{\n    VkImportNativeBufferInfoOHOS result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_IMPORT_NATIVE_BUFFER_INFO_OHOS;\n    return result;\n}\n\nstatic VKBIND_INLINE VkMemoryGetNativeBufferInfoOHOS VkMemoryGetNativeBufferInfoOHOSInit(void)\n{\n    VkMemoryGetNativeBufferInfoOHOS result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_MEMORY_GET_NATIVE_BUFFER_INFO_OHOS;\n    return result;\n}\n\nstatic VKBIND_INLINE VkExternalFormatOHOS VkExternalFormatOHOSInit(void)\n{\n    VkExternalFormatOHOS result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_OHOS;\n    return result;\n}\n\nstatic VKBIND_INLINE VkSurfaceCreateInfoOHOS VkSurfaceCreateInfoOHOSInit(void)\n{\n    VkSurfaceCreateInfoOHOS result;\n    VKBIND_ZERO_MEMORY(&result, sizeof(result));\n    result.sType = VK_STRUCTURE_TYPE_SURFACE_CREATE_INFO_OHOS;\n    return result;\n}\n\n#endif /*VK_USE_PLATFORM_OHOS*/\n\n\n\n#ifndef VKBIND_NO_GLOBAL_API\nextern PFN_vkCreateInstance vkCreateInstance;\nextern PFN_vkDestroyInstance vkDestroyInstance;\nextern PFN_vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices;\nextern PFN_vkGetPhysicalDeviceFeatures vkGetPhysicalDeviceFeatures;\nextern PFN_vkGetPhysicalDeviceFormatProperties vkGetPhysicalDeviceFormatProperties;\nextern PFN_vkGetPhysicalDeviceImageFormatProperties vkGetPhysicalDeviceImageFormatProperties;\nextern PFN_vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties;\nextern PFN_vkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties;\nextern PFN_vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties;\nextern PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr;\nextern PFN_vkGetDeviceProcAddr vkGetDeviceProcAddr;\nextern PFN_vkCreateDevice vkCreateDevice;\nextern PFN_vkDestroyDevice vkDestroyDevice;\nextern PFN_vkEnumerateInstanceExtensionProperties vkEnumerateInstanceExtensionProperties;\nextern PFN_vkEnumerateDeviceExtensionProperties vkEnumerateDeviceExtensionProperties;\nextern PFN_vkEnumerateInstanceLayerProperties vkEnumerateInstanceLayerProperties;\nextern PFN_vkEnumerateDeviceLayerProperties vkEnumerateDeviceLayerProperties;\nextern PFN_vkGetDeviceQueue vkGetDeviceQueue;\nextern PFN_vkQueueSubmit vkQueueSubmit;\nextern PFN_vkQueueWaitIdle vkQueueWaitIdle;\nextern PFN_vkDeviceWaitIdle vkDeviceWaitIdle;\nextern PFN_vkAllocateMemory vkAllocateMemory;\nextern PFN_vkFreeMemory vkFreeMemory;\nextern PFN_vkMapMemory vkMapMemory;\nextern PFN_vkUnmapMemory vkUnmapMemory;\nextern PFN_vkFlushMappedMemoryRanges vkFlushMappedMemoryRanges;\nextern PFN_vkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRanges;\nextern PFN_vkGetDeviceMemoryCommitment vkGetDeviceMemoryCommitment;\nextern PFN_vkBindBufferMemory vkBindBufferMemory;\nextern PFN_vkBindImageMemory vkBindImageMemory;\nextern PFN_vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements;\nextern PFN_vkGetImageMemoryRequirements vkGetImageMemoryRequirements;\nextern PFN_vkGetImageSparseMemoryRequirements vkGetImageSparseMemoryRequirements;\nextern PFN_vkGetPhysicalDeviceSparseImageFormatProperties vkGetPhysicalDeviceSparseImageFormatProperties;\nextern PFN_vkQueueBindSparse vkQueueBindSparse;\nextern PFN_vkCreateFence vkCreateFence;\nextern PFN_vkDestroyFence vkDestroyFence;\nextern PFN_vkResetFences vkResetFences;\nextern PFN_vkGetFenceStatus vkGetFenceStatus;\nextern PFN_vkWaitForFences vkWaitForFences;\nextern PFN_vkCreateSemaphore vkCreateSemaphore;\nextern PFN_vkDestroySemaphore vkDestroySemaphore;\nextern PFN_vkCreateQueryPool vkCreateQueryPool;\nextern PFN_vkDestroyQueryPool vkDestroyQueryPool;\nextern PFN_vkGetQueryPoolResults vkGetQueryPoolResults;\nextern PFN_vkCreateBuffer vkCreateBuffer;\nextern PFN_vkDestroyBuffer vkDestroyBuffer;\nextern PFN_vkCreateImage vkCreateImage;\nextern PFN_vkDestroyImage vkDestroyImage;\nextern PFN_vkGetImageSubresourceLayout vkGetImageSubresourceLayout;\nextern PFN_vkCreateImageView vkCreateImageView;\nextern PFN_vkDestroyImageView vkDestroyImageView;\nextern PFN_vkCreateCommandPool vkCreateCommandPool;\nextern PFN_vkDestroyCommandPool vkDestroyCommandPool;\nextern PFN_vkResetCommandPool vkResetCommandPool;\nextern PFN_vkAllocateCommandBuffers vkAllocateCommandBuffers;\nextern PFN_vkFreeCommandBuffers vkFreeCommandBuffers;\nextern PFN_vkBeginCommandBuffer vkBeginCommandBuffer;\nextern PFN_vkEndCommandBuffer vkEndCommandBuffer;\nextern PFN_vkResetCommandBuffer vkResetCommandBuffer;\nextern PFN_vkCmdCopyBuffer vkCmdCopyBuffer;\nextern PFN_vkCmdCopyImage vkCmdCopyImage;\nextern PFN_vkCmdCopyBufferToImage vkCmdCopyBufferToImage;\nextern PFN_vkCmdCopyImageToBuffer vkCmdCopyImageToBuffer;\nextern PFN_vkCmdUpdateBuffer vkCmdUpdateBuffer;\nextern PFN_vkCmdFillBuffer vkCmdFillBuffer;\nextern PFN_vkCmdPipelineBarrier vkCmdPipelineBarrier;\nextern PFN_vkCmdBeginQuery vkCmdBeginQuery;\nextern PFN_vkCmdEndQuery vkCmdEndQuery;\nextern PFN_vkCmdResetQueryPool vkCmdResetQueryPool;\nextern PFN_vkCmdWriteTimestamp vkCmdWriteTimestamp;\nextern PFN_vkCmdCopyQueryPoolResults vkCmdCopyQueryPoolResults;\nextern PFN_vkCmdExecuteCommands vkCmdExecuteCommands;\nextern PFN_vkCreateEvent vkCreateEvent;\nextern PFN_vkDestroyEvent vkDestroyEvent;\nextern PFN_vkGetEventStatus vkGetEventStatus;\nextern PFN_vkSetEvent vkSetEvent;\nextern PFN_vkResetEvent vkResetEvent;\nextern PFN_vkCreateBufferView vkCreateBufferView;\nextern PFN_vkDestroyBufferView vkDestroyBufferView;\nextern PFN_vkCreateShaderModule vkCreateShaderModule;\nextern PFN_vkDestroyShaderModule vkDestroyShaderModule;\nextern PFN_vkCreatePipelineCache vkCreatePipelineCache;\nextern PFN_vkDestroyPipelineCache vkDestroyPipelineCache;\nextern PFN_vkGetPipelineCacheData vkGetPipelineCacheData;\nextern PFN_vkMergePipelineCaches vkMergePipelineCaches;\nextern PFN_vkCreateComputePipelines vkCreateComputePipelines;\nextern PFN_vkDestroyPipeline vkDestroyPipeline;\nextern PFN_vkCreatePipelineLayout vkCreatePipelineLayout;\nextern PFN_vkDestroyPipelineLayout vkDestroyPipelineLayout;\nextern PFN_vkCreateSampler vkCreateSampler;\nextern PFN_vkDestroySampler vkDestroySampler;\nextern PFN_vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout;\nextern PFN_vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout;\nextern PFN_vkCreateDescriptorPool vkCreateDescriptorPool;\nextern PFN_vkDestroyDescriptorPool vkDestroyDescriptorPool;\nextern PFN_vkResetDescriptorPool vkResetDescriptorPool;\nextern PFN_vkAllocateDescriptorSets vkAllocateDescriptorSets;\nextern PFN_vkFreeDescriptorSets vkFreeDescriptorSets;\nextern PFN_vkUpdateDescriptorSets vkUpdateDescriptorSets;\nextern PFN_vkCmdBindPipeline vkCmdBindPipeline;\nextern PFN_vkCmdBindDescriptorSets vkCmdBindDescriptorSets;\nextern PFN_vkCmdClearColorImage vkCmdClearColorImage;\nextern PFN_vkCmdDispatch vkCmdDispatch;\nextern PFN_vkCmdDispatchIndirect vkCmdDispatchIndirect;\nextern PFN_vkCmdSetEvent vkCmdSetEvent;\nextern PFN_vkCmdResetEvent vkCmdResetEvent;\nextern PFN_vkCmdWaitEvents vkCmdWaitEvents;\nextern PFN_vkCmdPushConstants vkCmdPushConstants;\nextern PFN_vkCreateGraphicsPipelines vkCreateGraphicsPipelines;\nextern PFN_vkCreateFramebuffer vkCreateFramebuffer;\nextern PFN_vkDestroyFramebuffer vkDestroyFramebuffer;\nextern PFN_vkCreateRenderPass vkCreateRenderPass;\nextern PFN_vkDestroyRenderPass vkDestroyRenderPass;\nextern PFN_vkGetRenderAreaGranularity vkGetRenderAreaGranularity;\nextern PFN_vkCmdSetViewport vkCmdSetViewport;\nextern PFN_vkCmdSetScissor vkCmdSetScissor;\nextern PFN_vkCmdSetLineWidth vkCmdSetLineWidth;\nextern PFN_vkCmdSetDepthBias vkCmdSetDepthBias;\nextern PFN_vkCmdSetBlendConstants vkCmdSetBlendConstants;\nextern PFN_vkCmdSetDepthBounds vkCmdSetDepthBounds;\nextern PFN_vkCmdSetStencilCompareMask vkCmdSetStencilCompareMask;\nextern PFN_vkCmdSetStencilWriteMask vkCmdSetStencilWriteMask;\nextern PFN_vkCmdSetStencilReference vkCmdSetStencilReference;\nextern PFN_vkCmdBindIndexBuffer vkCmdBindIndexBuffer;\nextern PFN_vkCmdBindVertexBuffers vkCmdBindVertexBuffers;\nextern PFN_vkCmdDraw vkCmdDraw;\nextern PFN_vkCmdDrawIndexed vkCmdDrawIndexed;\nextern PFN_vkCmdDrawIndirect vkCmdDrawIndirect;\nextern PFN_vkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirect;\nextern PFN_vkCmdBlitImage vkCmdBlitImage;\nextern PFN_vkCmdClearDepthStencilImage vkCmdClearDepthStencilImage;\nextern PFN_vkCmdClearAttachments vkCmdClearAttachments;\nextern PFN_vkCmdResolveImage vkCmdResolveImage;\nextern PFN_vkCmdBeginRenderPass vkCmdBeginRenderPass;\nextern PFN_vkCmdNextSubpass vkCmdNextSubpass;\nextern PFN_vkCmdEndRenderPass vkCmdEndRenderPass;\nextern PFN_vkEnumerateInstanceVersion vkEnumerateInstanceVersion;\nextern PFN_vkBindBufferMemory2 vkBindBufferMemory2;\nextern PFN_vkBindImageMemory2 vkBindImageMemory2;\nextern PFN_vkGetDeviceGroupPeerMemoryFeatures vkGetDeviceGroupPeerMemoryFeatures;\nextern PFN_vkCmdSetDeviceMask vkCmdSetDeviceMask;\nextern PFN_vkEnumeratePhysicalDeviceGroups vkEnumeratePhysicalDeviceGroups;\nextern PFN_vkGetImageMemoryRequirements2 vkGetImageMemoryRequirements2;\nextern PFN_vkGetBufferMemoryRequirements2 vkGetBufferMemoryRequirements2;\nextern PFN_vkGetImageSparseMemoryRequirements2 vkGetImageSparseMemoryRequirements2;\nextern PFN_vkGetPhysicalDeviceFeatures2 vkGetPhysicalDeviceFeatures2;\nextern PFN_vkGetPhysicalDeviceProperties2 vkGetPhysicalDeviceProperties2;\nextern PFN_vkGetPhysicalDeviceFormatProperties2 vkGetPhysicalDeviceFormatProperties2;\nextern PFN_vkGetPhysicalDeviceImageFormatProperties2 vkGetPhysicalDeviceImageFormatProperties2;\nextern PFN_vkGetPhysicalDeviceQueueFamilyProperties2 vkGetPhysicalDeviceQueueFamilyProperties2;\nextern PFN_vkGetPhysicalDeviceMemoryProperties2 vkGetPhysicalDeviceMemoryProperties2;\nextern PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 vkGetPhysicalDeviceSparseImageFormatProperties2;\nextern PFN_vkTrimCommandPool vkTrimCommandPool;\nextern PFN_vkGetDeviceQueue2 vkGetDeviceQueue2;\nextern PFN_vkGetPhysicalDeviceExternalBufferProperties vkGetPhysicalDeviceExternalBufferProperties;\nextern PFN_vkGetPhysicalDeviceExternalFenceProperties vkGetPhysicalDeviceExternalFenceProperties;\nextern PFN_vkGetPhysicalDeviceExternalSemaphoreProperties vkGetPhysicalDeviceExternalSemaphoreProperties;\nextern PFN_vkCmdDispatchBase vkCmdDispatchBase;\nextern PFN_vkCreateDescriptorUpdateTemplate vkCreateDescriptorUpdateTemplate;\nextern PFN_vkDestroyDescriptorUpdateTemplate vkDestroyDescriptorUpdateTemplate;\nextern PFN_vkUpdateDescriptorSetWithTemplate vkUpdateDescriptorSetWithTemplate;\nextern PFN_vkGetDescriptorSetLayoutSupport vkGetDescriptorSetLayoutSupport;\nextern PFN_vkCreateSamplerYcbcrConversion vkCreateSamplerYcbcrConversion;\nextern PFN_vkDestroySamplerYcbcrConversion vkDestroySamplerYcbcrConversion;\nextern PFN_vkResetQueryPool vkResetQueryPool;\nextern PFN_vkGetSemaphoreCounterValue vkGetSemaphoreCounterValue;\nextern PFN_vkWaitSemaphores vkWaitSemaphores;\nextern PFN_vkSignalSemaphore vkSignalSemaphore;\nextern PFN_vkGetBufferDeviceAddress vkGetBufferDeviceAddress;\nextern PFN_vkGetBufferOpaqueCaptureAddress vkGetBufferOpaqueCaptureAddress;\nextern PFN_vkGetDeviceMemoryOpaqueCaptureAddress vkGetDeviceMemoryOpaqueCaptureAddress;\nextern PFN_vkCmdDrawIndirectCount vkCmdDrawIndirectCount;\nextern PFN_vkCmdDrawIndexedIndirectCount vkCmdDrawIndexedIndirectCount;\nextern PFN_vkCreateRenderPass2 vkCreateRenderPass2;\nextern PFN_vkCmdBeginRenderPass2 vkCmdBeginRenderPass2;\nextern PFN_vkCmdNextSubpass2 vkCmdNextSubpass2;\nextern PFN_vkCmdEndRenderPass2 vkCmdEndRenderPass2;\nextern PFN_vkGetPhysicalDeviceToolProperties vkGetPhysicalDeviceToolProperties;\nextern PFN_vkCreatePrivateDataSlot vkCreatePrivateDataSlot;\nextern PFN_vkDestroyPrivateDataSlot vkDestroyPrivateDataSlot;\nextern PFN_vkSetPrivateData vkSetPrivateData;\nextern PFN_vkGetPrivateData vkGetPrivateData;\nextern PFN_vkCmdPipelineBarrier2 vkCmdPipelineBarrier2;\nextern PFN_vkCmdWriteTimestamp2 vkCmdWriteTimestamp2;\nextern PFN_vkQueueSubmit2 vkQueueSubmit2;\nextern PFN_vkCmdCopyBuffer2 vkCmdCopyBuffer2;\nextern PFN_vkCmdCopyImage2 vkCmdCopyImage2;\nextern PFN_vkCmdCopyBufferToImage2 vkCmdCopyBufferToImage2;\nextern PFN_vkCmdCopyImageToBuffer2 vkCmdCopyImageToBuffer2;\nextern PFN_vkGetDeviceBufferMemoryRequirements vkGetDeviceBufferMemoryRequirements;\nextern PFN_vkGetDeviceImageMemoryRequirements vkGetDeviceImageMemoryRequirements;\nextern PFN_vkGetDeviceImageSparseMemoryRequirements vkGetDeviceImageSparseMemoryRequirements;\nextern PFN_vkCmdSetEvent2 vkCmdSetEvent2;\nextern PFN_vkCmdResetEvent2 vkCmdResetEvent2;\nextern PFN_vkCmdWaitEvents2 vkCmdWaitEvents2;\nextern PFN_vkCmdBlitImage2 vkCmdBlitImage2;\nextern PFN_vkCmdResolveImage2 vkCmdResolveImage2;\nextern PFN_vkCmdBeginRendering vkCmdBeginRendering;\nextern PFN_vkCmdEndRendering vkCmdEndRendering;\nextern PFN_vkCmdSetCullMode vkCmdSetCullMode;\nextern PFN_vkCmdSetFrontFace vkCmdSetFrontFace;\nextern PFN_vkCmdSetPrimitiveTopology vkCmdSetPrimitiveTopology;\nextern PFN_vkCmdSetViewportWithCount vkCmdSetViewportWithCount;\nextern PFN_vkCmdSetScissorWithCount vkCmdSetScissorWithCount;\nextern PFN_vkCmdBindVertexBuffers2 vkCmdBindVertexBuffers2;\nextern PFN_vkCmdSetDepthTestEnable vkCmdSetDepthTestEnable;\nextern PFN_vkCmdSetDepthWriteEnable vkCmdSetDepthWriteEnable;\nextern PFN_vkCmdSetDepthCompareOp vkCmdSetDepthCompareOp;\nextern PFN_vkCmdSetDepthBoundsTestEnable vkCmdSetDepthBoundsTestEnable;\nextern PFN_vkCmdSetStencilTestEnable vkCmdSetStencilTestEnable;\nextern PFN_vkCmdSetStencilOp vkCmdSetStencilOp;\nextern PFN_vkCmdSetRasterizerDiscardEnable vkCmdSetRasterizerDiscardEnable;\nextern PFN_vkCmdSetDepthBiasEnable vkCmdSetDepthBiasEnable;\nextern PFN_vkCmdSetPrimitiveRestartEnable vkCmdSetPrimitiveRestartEnable;\nextern PFN_vkMapMemory2 vkMapMemory2;\nextern PFN_vkUnmapMemory2 vkUnmapMemory2;\nextern PFN_vkGetDeviceImageSubresourceLayout vkGetDeviceImageSubresourceLayout;\nextern PFN_vkGetImageSubresourceLayout2 vkGetImageSubresourceLayout2;\nextern PFN_vkCopyMemoryToImage vkCopyMemoryToImage;\nextern PFN_vkCopyImageToMemory vkCopyImageToMemory;\nextern PFN_vkCopyImageToImage vkCopyImageToImage;\nextern PFN_vkTransitionImageLayout vkTransitionImageLayout;\nextern PFN_vkCmdPushDescriptorSet vkCmdPushDescriptorSet;\nextern PFN_vkCmdPushDescriptorSetWithTemplate vkCmdPushDescriptorSetWithTemplate;\nextern PFN_vkCmdBindDescriptorSets2 vkCmdBindDescriptorSets2;\nextern PFN_vkCmdPushConstants2 vkCmdPushConstants2;\nextern PFN_vkCmdPushDescriptorSet2 vkCmdPushDescriptorSet2;\nextern PFN_vkCmdPushDescriptorSetWithTemplate2 vkCmdPushDescriptorSetWithTemplate2;\nextern PFN_vkCmdSetLineStipple vkCmdSetLineStipple;\nextern PFN_vkCmdBindIndexBuffer2 vkCmdBindIndexBuffer2;\nextern PFN_vkGetRenderingAreaGranularity vkGetRenderingAreaGranularity;\nextern PFN_vkCmdSetRenderingAttachmentLocations vkCmdSetRenderingAttachmentLocations;\nextern PFN_vkCmdSetRenderingInputAttachmentIndices vkCmdSetRenderingInputAttachmentIndices;\nextern PFN_vkGetCommandPoolMemoryConsumption vkGetCommandPoolMemoryConsumption;\nextern PFN_vkGetFaultData vkGetFaultData;\nextern PFN_vkDestroySurfaceKHR vkDestroySurfaceKHR;\nextern PFN_vkGetPhysicalDeviceSurfaceSupportKHR vkGetPhysicalDeviceSurfaceSupportKHR;\nextern PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR vkGetPhysicalDeviceSurfaceCapabilitiesKHR;\nextern PFN_vkGetPhysicalDeviceSurfaceFormatsKHR vkGetPhysicalDeviceSurfaceFormatsKHR;\nextern PFN_vkGetPhysicalDeviceSurfacePresentModesKHR vkGetPhysicalDeviceSurfacePresentModesKHR;\nextern PFN_vkCreateSwapchainKHR vkCreateSwapchainKHR;\nextern PFN_vkDestroySwapchainKHR vkDestroySwapchainKHR;\nextern PFN_vkGetSwapchainImagesKHR vkGetSwapchainImagesKHR;\nextern PFN_vkAcquireNextImageKHR vkAcquireNextImageKHR;\nextern PFN_vkQueuePresentKHR vkQueuePresentKHR;\nextern PFN_vkGetDeviceGroupPresentCapabilitiesKHR vkGetDeviceGroupPresentCapabilitiesKHR;\nextern PFN_vkGetDeviceGroupSurfacePresentModesKHR vkGetDeviceGroupSurfacePresentModesKHR;\nextern PFN_vkGetPhysicalDevicePresentRectanglesKHR vkGetPhysicalDevicePresentRectanglesKHR;\nextern PFN_vkAcquireNextImage2KHR vkAcquireNextImage2KHR;\nextern PFN_vkGetPhysicalDeviceDisplayPropertiesKHR vkGetPhysicalDeviceDisplayPropertiesKHR;\nextern PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR vkGetPhysicalDeviceDisplayPlanePropertiesKHR;\nextern PFN_vkGetDisplayPlaneSupportedDisplaysKHR vkGetDisplayPlaneSupportedDisplaysKHR;\nextern PFN_vkGetDisplayModePropertiesKHR vkGetDisplayModePropertiesKHR;\nextern PFN_vkCreateDisplayModeKHR vkCreateDisplayModeKHR;\nextern PFN_vkGetDisplayPlaneCapabilitiesKHR vkGetDisplayPlaneCapabilitiesKHR;\nextern PFN_vkCreateDisplayPlaneSurfaceKHR vkCreateDisplayPlaneSurfaceKHR;\nextern PFN_vkCreateSharedSwapchainsKHR vkCreateSharedSwapchainsKHR;\nextern PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR vkGetPhysicalDeviceVideoCapabilitiesKHR;\nextern PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR vkGetPhysicalDeviceVideoFormatPropertiesKHR;\nextern PFN_vkCreateVideoSessionKHR vkCreateVideoSessionKHR;\nextern PFN_vkDestroyVideoSessionKHR vkDestroyVideoSessionKHR;\nextern PFN_vkGetVideoSessionMemoryRequirementsKHR vkGetVideoSessionMemoryRequirementsKHR;\nextern PFN_vkBindVideoSessionMemoryKHR vkBindVideoSessionMemoryKHR;\nextern PFN_vkCreateVideoSessionParametersKHR vkCreateVideoSessionParametersKHR;\nextern PFN_vkUpdateVideoSessionParametersKHR vkUpdateVideoSessionParametersKHR;\nextern PFN_vkDestroyVideoSessionParametersKHR vkDestroyVideoSessionParametersKHR;\nextern PFN_vkCmdBeginVideoCodingKHR vkCmdBeginVideoCodingKHR;\nextern PFN_vkCmdEndVideoCodingKHR vkCmdEndVideoCodingKHR;\nextern PFN_vkCmdControlVideoCodingKHR vkCmdControlVideoCodingKHR;\nextern PFN_vkCmdDecodeVideoKHR vkCmdDecodeVideoKHR;\nextern PFN_vkCmdBindTransformFeedbackBuffersEXT vkCmdBindTransformFeedbackBuffersEXT;\nextern PFN_vkCmdBeginTransformFeedbackEXT vkCmdBeginTransformFeedbackEXT;\nextern PFN_vkCmdEndTransformFeedbackEXT vkCmdEndTransformFeedbackEXT;\nextern PFN_vkCmdBeginQueryIndexedEXT vkCmdBeginQueryIndexedEXT;\nextern PFN_vkCmdEndQueryIndexedEXT vkCmdEndQueryIndexedEXT;\nextern PFN_vkCmdDrawIndirectByteCountEXT vkCmdDrawIndirectByteCountEXT;\nextern PFN_vkCreateCuModuleNVX vkCreateCuModuleNVX;\nextern PFN_vkCreateCuFunctionNVX vkCreateCuFunctionNVX;\nextern PFN_vkDestroyCuModuleNVX vkDestroyCuModuleNVX;\nextern PFN_vkDestroyCuFunctionNVX vkDestroyCuFunctionNVX;\nextern PFN_vkCmdCuLaunchKernelNVX vkCmdCuLaunchKernelNVX;\nextern PFN_vkGetImageViewHandleNVX vkGetImageViewHandleNVX;\nextern PFN_vkGetImageViewHandle64NVX vkGetImageViewHandle64NVX;\nextern PFN_vkGetImageViewAddressNVX vkGetImageViewAddressNVX;\nextern PFN_vkGetDeviceCombinedImageSamplerIndexNVX vkGetDeviceCombinedImageSamplerIndexNVX;\nextern PFN_vkGetShaderInfoAMD vkGetShaderInfoAMD;\nextern PFN_vkCmdBeginRenderingKHR vkCmdBeginRenderingKHR;\nextern PFN_vkCmdEndRenderingKHR vkCmdEndRenderingKHR;\nextern PFN_vkGetPhysicalDeviceFeatures2KHR vkGetPhysicalDeviceFeatures2KHR;\nextern PFN_vkGetPhysicalDeviceProperties2KHR vkGetPhysicalDeviceProperties2KHR;\nextern PFN_vkGetPhysicalDeviceFormatProperties2KHR vkGetPhysicalDeviceFormatProperties2KHR;\nextern PFN_vkGetPhysicalDeviceImageFormatProperties2KHR vkGetPhysicalDeviceImageFormatProperties2KHR;\nextern PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR vkGetPhysicalDeviceQueueFamilyProperties2KHR;\nextern PFN_vkGetPhysicalDeviceMemoryProperties2KHR vkGetPhysicalDeviceMemoryProperties2KHR;\nextern PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR vkGetPhysicalDeviceSparseImageFormatProperties2KHR;\nextern PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR vkGetDeviceGroupPeerMemoryFeaturesKHR;\nextern PFN_vkCmdSetDeviceMaskKHR vkCmdSetDeviceMaskKHR;\nextern PFN_vkCmdDispatchBaseKHR vkCmdDispatchBaseKHR;\nextern PFN_vkTrimCommandPoolKHR vkTrimCommandPoolKHR;\nextern PFN_vkEnumeratePhysicalDeviceGroupsKHR vkEnumeratePhysicalDeviceGroupsKHR;\nextern PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR vkGetPhysicalDeviceExternalBufferPropertiesKHR;\nextern PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV vkGetPhysicalDeviceExternalImageFormatPropertiesNV;\nextern PFN_vkGetMemoryFdKHR vkGetMemoryFdKHR;\nextern PFN_vkGetMemoryFdPropertiesKHR vkGetMemoryFdPropertiesKHR;\nextern PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR vkGetPhysicalDeviceExternalSemaphorePropertiesKHR;\nextern PFN_vkImportSemaphoreFdKHR vkImportSemaphoreFdKHR;\nextern PFN_vkGetSemaphoreFdKHR vkGetSemaphoreFdKHR;\nextern PFN_vkCmdPushDescriptorSetKHR vkCmdPushDescriptorSetKHR;\nextern PFN_vkCmdPushDescriptorSetWithTemplateKHR vkCmdPushDescriptorSetWithTemplateKHR;\nextern PFN_vkCmdBeginConditionalRenderingEXT vkCmdBeginConditionalRenderingEXT;\nextern PFN_vkCmdEndConditionalRenderingEXT vkCmdEndConditionalRenderingEXT;\nextern PFN_vkCreateDescriptorUpdateTemplateKHR vkCreateDescriptorUpdateTemplateKHR;\nextern PFN_vkDestroyDescriptorUpdateTemplateKHR vkDestroyDescriptorUpdateTemplateKHR;\nextern PFN_vkUpdateDescriptorSetWithTemplateKHR vkUpdateDescriptorSetWithTemplateKHR;\nextern PFN_vkCmdSetViewportWScalingNV vkCmdSetViewportWScalingNV;\nextern PFN_vkReleaseDisplayEXT vkReleaseDisplayEXT;\nextern PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT vkGetPhysicalDeviceSurfaceCapabilities2EXT;\nextern PFN_vkDisplayPowerControlEXT vkDisplayPowerControlEXT;\nextern PFN_vkRegisterDeviceEventEXT vkRegisterDeviceEventEXT;\nextern PFN_vkRegisterDisplayEventEXT vkRegisterDisplayEventEXT;\nextern PFN_vkGetSwapchainCounterEXT vkGetSwapchainCounterEXT;\nextern PFN_vkGetRefreshCycleDurationGOOGLE vkGetRefreshCycleDurationGOOGLE;\nextern PFN_vkGetPastPresentationTimingGOOGLE vkGetPastPresentationTimingGOOGLE;\nextern PFN_vkCmdSetDiscardRectangleEXT vkCmdSetDiscardRectangleEXT;\nextern PFN_vkCmdSetDiscardRectangleEnableEXT vkCmdSetDiscardRectangleEnableEXT;\nextern PFN_vkCmdSetDiscardRectangleModeEXT vkCmdSetDiscardRectangleModeEXT;\nextern PFN_vkSetHdrMetadataEXT vkSetHdrMetadataEXT;\nextern PFN_vkCreateRenderPass2KHR vkCreateRenderPass2KHR;\nextern PFN_vkCmdBeginRenderPass2KHR vkCmdBeginRenderPass2KHR;\nextern PFN_vkCmdNextSubpass2KHR vkCmdNextSubpass2KHR;\nextern PFN_vkCmdEndRenderPass2KHR vkCmdEndRenderPass2KHR;\nextern PFN_vkGetSwapchainStatusKHR vkGetSwapchainStatusKHR;\nextern PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR vkGetPhysicalDeviceExternalFencePropertiesKHR;\nextern PFN_vkImportFenceFdKHR vkImportFenceFdKHR;\nextern PFN_vkGetFenceFdKHR vkGetFenceFdKHR;\nextern PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR;\nextern PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR;\nextern PFN_vkAcquireProfilingLockKHR vkAcquireProfilingLockKHR;\nextern PFN_vkReleaseProfilingLockKHR vkReleaseProfilingLockKHR;\nextern PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR vkGetPhysicalDeviceSurfaceCapabilities2KHR;\nextern PFN_vkGetPhysicalDeviceSurfaceFormats2KHR vkGetPhysicalDeviceSurfaceFormats2KHR;\nextern PFN_vkGetPhysicalDeviceDisplayProperties2KHR vkGetPhysicalDeviceDisplayProperties2KHR;\nextern PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR vkGetPhysicalDeviceDisplayPlaneProperties2KHR;\nextern PFN_vkGetDisplayModeProperties2KHR vkGetDisplayModeProperties2KHR;\nextern PFN_vkGetDisplayPlaneCapabilities2KHR vkGetDisplayPlaneCapabilities2KHR;\nextern PFN_vkSetDebugUtilsObjectNameEXT vkSetDebugUtilsObjectNameEXT;\nextern PFN_vkSetDebugUtilsObjectTagEXT vkSetDebugUtilsObjectTagEXT;\nextern PFN_vkQueueBeginDebugUtilsLabelEXT vkQueueBeginDebugUtilsLabelEXT;\nextern PFN_vkQueueEndDebugUtilsLabelEXT vkQueueEndDebugUtilsLabelEXT;\nextern PFN_vkQueueInsertDebugUtilsLabelEXT vkQueueInsertDebugUtilsLabelEXT;\nextern PFN_vkCmdBeginDebugUtilsLabelEXT vkCmdBeginDebugUtilsLabelEXT;\nextern PFN_vkCmdEndDebugUtilsLabelEXT vkCmdEndDebugUtilsLabelEXT;\nextern PFN_vkCmdInsertDebugUtilsLabelEXT vkCmdInsertDebugUtilsLabelEXT;\nextern PFN_vkCreateDebugUtilsMessengerEXT vkCreateDebugUtilsMessengerEXT;\nextern PFN_vkDestroyDebugUtilsMessengerEXT vkDestroyDebugUtilsMessengerEXT;\nextern PFN_vkSubmitDebugUtilsMessageEXT vkSubmitDebugUtilsMessageEXT;\nextern PFN_vkDebugMarkerSetObjectTagEXT vkDebugMarkerSetObjectTagEXT;\nextern PFN_vkDebugMarkerSetObjectNameEXT vkDebugMarkerSetObjectNameEXT;\nextern PFN_vkCmdDebugMarkerBeginEXT vkCmdDebugMarkerBeginEXT;\nextern PFN_vkCmdDebugMarkerEndEXT vkCmdDebugMarkerEndEXT;\nextern PFN_vkCmdDebugMarkerInsertEXT vkCmdDebugMarkerInsertEXT;\nextern PFN_vkCreateDebugReportCallbackEXT vkCreateDebugReportCallbackEXT;\nextern PFN_vkDestroyDebugReportCallbackEXT vkDestroyDebugReportCallbackEXT;\nextern PFN_vkDebugReportMessageEXT vkDebugReportMessageEXT;\nextern PFN_vkWriteSamplerDescriptorsEXT vkWriteSamplerDescriptorsEXT;\nextern PFN_vkWriteResourceDescriptorsEXT vkWriteResourceDescriptorsEXT;\nextern PFN_vkCmdBindSamplerHeapEXT vkCmdBindSamplerHeapEXT;\nextern PFN_vkCmdBindResourceHeapEXT vkCmdBindResourceHeapEXT;\nextern PFN_vkCmdPushDataEXT vkCmdPushDataEXT;\nextern PFN_vkGetImageOpaqueCaptureDataEXT vkGetImageOpaqueCaptureDataEXT;\nextern PFN_vkGetPhysicalDeviceDescriptorSizeEXT vkGetPhysicalDeviceDescriptorSizeEXT;\nextern PFN_vkRegisterCustomBorderColorEXT vkRegisterCustomBorderColorEXT;\nextern PFN_vkUnregisterCustomBorderColorEXT vkUnregisterCustomBorderColorEXT;\nextern PFN_vkGetTensorOpaqueCaptureDataARM vkGetTensorOpaqueCaptureDataARM;\nextern PFN_vkCmdSetSampleLocationsEXT vkCmdSetSampleLocationsEXT;\nextern PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT vkGetPhysicalDeviceMultisamplePropertiesEXT;\nextern PFN_vkGetImageMemoryRequirements2KHR vkGetImageMemoryRequirements2KHR;\nextern PFN_vkGetBufferMemoryRequirements2KHR vkGetBufferMemoryRequirements2KHR;\nextern PFN_vkGetImageSparseMemoryRequirements2KHR vkGetImageSparseMemoryRequirements2KHR;\nextern PFN_vkCreateAccelerationStructureKHR vkCreateAccelerationStructureKHR;\nextern PFN_vkDestroyAccelerationStructureKHR vkDestroyAccelerationStructureKHR;\nextern PFN_vkCmdBuildAccelerationStructuresKHR vkCmdBuildAccelerationStructuresKHR;\nextern PFN_vkCmdBuildAccelerationStructuresIndirectKHR vkCmdBuildAccelerationStructuresIndirectKHR;\nextern PFN_vkBuildAccelerationStructuresKHR vkBuildAccelerationStructuresKHR;\nextern PFN_vkCopyAccelerationStructureKHR vkCopyAccelerationStructureKHR;\nextern PFN_vkCopyAccelerationStructureToMemoryKHR vkCopyAccelerationStructureToMemoryKHR;\nextern PFN_vkCopyMemoryToAccelerationStructureKHR vkCopyMemoryToAccelerationStructureKHR;\nextern PFN_vkWriteAccelerationStructuresPropertiesKHR vkWriteAccelerationStructuresPropertiesKHR;\nextern PFN_vkCmdCopyAccelerationStructureKHR vkCmdCopyAccelerationStructureKHR;\nextern PFN_vkCmdCopyAccelerationStructureToMemoryKHR vkCmdCopyAccelerationStructureToMemoryKHR;\nextern PFN_vkCmdCopyMemoryToAccelerationStructureKHR vkCmdCopyMemoryToAccelerationStructureKHR;\nextern PFN_vkGetAccelerationStructureDeviceAddressKHR vkGetAccelerationStructureDeviceAddressKHR;\nextern PFN_vkCmdWriteAccelerationStructuresPropertiesKHR vkCmdWriteAccelerationStructuresPropertiesKHR;\nextern PFN_vkGetDeviceAccelerationStructureCompatibilityKHR vkGetDeviceAccelerationStructureCompatibilityKHR;\nextern PFN_vkGetAccelerationStructureBuildSizesKHR vkGetAccelerationStructureBuildSizesKHR;\nextern PFN_vkCmdTraceRaysKHR vkCmdTraceRaysKHR;\nextern PFN_vkCreateRayTracingPipelinesKHR vkCreateRayTracingPipelinesKHR;\nextern PFN_vkGetRayTracingShaderGroupHandlesKHR vkGetRayTracingShaderGroupHandlesKHR;\nextern PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR vkGetRayTracingCaptureReplayShaderGroupHandlesKHR;\nextern PFN_vkCmdTraceRaysIndirectKHR vkCmdTraceRaysIndirectKHR;\nextern PFN_vkGetRayTracingShaderGroupStackSizeKHR vkGetRayTracingShaderGroupStackSizeKHR;\nextern PFN_vkCmdSetRayTracingPipelineStackSizeKHR vkCmdSetRayTracingPipelineStackSizeKHR;\nextern PFN_vkCreateSamplerYcbcrConversionKHR vkCreateSamplerYcbcrConversionKHR;\nextern PFN_vkDestroySamplerYcbcrConversionKHR vkDestroySamplerYcbcrConversionKHR;\nextern PFN_vkBindBufferMemory2KHR vkBindBufferMemory2KHR;\nextern PFN_vkBindImageMemory2KHR vkBindImageMemory2KHR;\nextern PFN_vkGetImageDrmFormatModifierPropertiesEXT vkGetImageDrmFormatModifierPropertiesEXT;\nextern PFN_vkCreateValidationCacheEXT vkCreateValidationCacheEXT;\nextern PFN_vkDestroyValidationCacheEXT vkDestroyValidationCacheEXT;\nextern PFN_vkMergeValidationCachesEXT vkMergeValidationCachesEXT;\nextern PFN_vkGetValidationCacheDataEXT vkGetValidationCacheDataEXT;\nextern PFN_vkCmdBindShadingRateImageNV vkCmdBindShadingRateImageNV;\nextern PFN_vkCmdSetViewportShadingRatePaletteNV vkCmdSetViewportShadingRatePaletteNV;\nextern PFN_vkCmdSetCoarseSampleOrderNV vkCmdSetCoarseSampleOrderNV;\nextern PFN_vkCreateAccelerationStructureNV vkCreateAccelerationStructureNV;\nextern PFN_vkDestroyAccelerationStructureNV vkDestroyAccelerationStructureNV;\nextern PFN_vkGetAccelerationStructureMemoryRequirementsNV vkGetAccelerationStructureMemoryRequirementsNV;\nextern PFN_vkBindAccelerationStructureMemoryNV vkBindAccelerationStructureMemoryNV;\nextern PFN_vkCmdBuildAccelerationStructureNV vkCmdBuildAccelerationStructureNV;\nextern PFN_vkCmdCopyAccelerationStructureNV vkCmdCopyAccelerationStructureNV;\nextern PFN_vkCmdTraceRaysNV vkCmdTraceRaysNV;\nextern PFN_vkCreateRayTracingPipelinesNV vkCreateRayTracingPipelinesNV;\nextern PFN_vkGetRayTracingShaderGroupHandlesNV vkGetRayTracingShaderGroupHandlesNV;\nextern PFN_vkGetAccelerationStructureHandleNV vkGetAccelerationStructureHandleNV;\nextern PFN_vkCmdWriteAccelerationStructuresPropertiesNV vkCmdWriteAccelerationStructuresPropertiesNV;\nextern PFN_vkCompileDeferredNV vkCompileDeferredNV;\nextern PFN_vkGetDescriptorSetLayoutSupportKHR vkGetDescriptorSetLayoutSupportKHR;\nextern PFN_vkCmdDrawIndirectCountKHR vkCmdDrawIndirectCountKHR;\nextern PFN_vkCmdDrawIndexedIndirectCountKHR vkCmdDrawIndexedIndirectCountKHR;\nextern PFN_vkCmdDrawIndirectCountAMD vkCmdDrawIndirectCountAMD;\nextern PFN_vkCmdDrawIndexedIndirectCountAMD vkCmdDrawIndexedIndirectCountAMD;\nextern PFN_vkGetMemoryHostPointerPropertiesEXT vkGetMemoryHostPointerPropertiesEXT;\nextern PFN_vkCmdWriteBufferMarkerAMD vkCmdWriteBufferMarkerAMD;\nextern PFN_vkCmdWriteBufferMarker2AMD vkCmdWriteBufferMarker2AMD;\nextern PFN_vkCmdDrawMeshTasksNV vkCmdDrawMeshTasksNV;\nextern PFN_vkCmdDrawMeshTasksIndirectNV vkCmdDrawMeshTasksIndirectNV;\nextern PFN_vkCmdDrawMeshTasksIndirectCountNV vkCmdDrawMeshTasksIndirectCountNV;\nextern PFN_vkCmdSetExclusiveScissorEnableNV vkCmdSetExclusiveScissorEnableNV;\nextern PFN_vkCmdSetExclusiveScissorNV vkCmdSetExclusiveScissorNV;\nextern PFN_vkCmdSetCheckpointNV vkCmdSetCheckpointNV;\nextern PFN_vkGetQueueCheckpointDataNV vkGetQueueCheckpointDataNV;\nextern PFN_vkGetQueueCheckpointData2NV vkGetQueueCheckpointData2NV;\nextern PFN_vkGetSemaphoreCounterValueKHR vkGetSemaphoreCounterValueKHR;\nextern PFN_vkWaitSemaphoresKHR vkWaitSemaphoresKHR;\nextern PFN_vkSignalSemaphoreKHR vkSignalSemaphoreKHR;\nextern PFN_vkSetSwapchainPresentTimingQueueSizeEXT vkSetSwapchainPresentTimingQueueSizeEXT;\nextern PFN_vkGetSwapchainTimingPropertiesEXT vkGetSwapchainTimingPropertiesEXT;\nextern PFN_vkGetSwapchainTimeDomainPropertiesEXT vkGetSwapchainTimeDomainPropertiesEXT;\nextern PFN_vkGetPastPresentationTimingEXT vkGetPastPresentationTimingEXT;\nextern PFN_vkInitializePerformanceApiINTEL vkInitializePerformanceApiINTEL;\nextern PFN_vkUninitializePerformanceApiINTEL vkUninitializePerformanceApiINTEL;\nextern PFN_vkCmdSetPerformanceMarkerINTEL vkCmdSetPerformanceMarkerINTEL;\nextern PFN_vkCmdSetPerformanceStreamMarkerINTEL vkCmdSetPerformanceStreamMarkerINTEL;\nextern PFN_vkCmdSetPerformanceOverrideINTEL vkCmdSetPerformanceOverrideINTEL;\nextern PFN_vkAcquirePerformanceConfigurationINTEL vkAcquirePerformanceConfigurationINTEL;\nextern PFN_vkReleasePerformanceConfigurationINTEL vkReleasePerformanceConfigurationINTEL;\nextern PFN_vkQueueSetPerformanceConfigurationINTEL vkQueueSetPerformanceConfigurationINTEL;\nextern PFN_vkGetPerformanceParameterINTEL vkGetPerformanceParameterINTEL;\nextern PFN_vkSetLocalDimmingAMD vkSetLocalDimmingAMD;\nextern PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR vkGetPhysicalDeviceFragmentShadingRatesKHR;\nextern PFN_vkCmdSetFragmentShadingRateKHR vkCmdSetFragmentShadingRateKHR;\nextern PFN_vkCmdSetRenderingAttachmentLocationsKHR vkCmdSetRenderingAttachmentLocationsKHR;\nextern PFN_vkCmdSetRenderingInputAttachmentIndicesKHR vkCmdSetRenderingInputAttachmentIndicesKHR;\nextern PFN_vkGetPhysicalDeviceToolPropertiesEXT vkGetPhysicalDeviceToolPropertiesEXT;\nextern PFN_vkWaitForPresentKHR vkWaitForPresentKHR;\nextern PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV vkGetPhysicalDeviceCooperativeMatrixPropertiesNV;\nextern PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV;\nextern PFN_vkCreateHeadlessSurfaceEXT vkCreateHeadlessSurfaceEXT;\nextern PFN_vkGetBufferDeviceAddressKHR vkGetBufferDeviceAddressKHR;\nextern PFN_vkGetBufferOpaqueCaptureAddressKHR vkGetBufferOpaqueCaptureAddressKHR;\nextern PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR vkGetDeviceMemoryOpaqueCaptureAddressKHR;\nextern PFN_vkGetBufferDeviceAddressEXT vkGetBufferDeviceAddressEXT;\nextern PFN_vkResetQueryPoolEXT vkResetQueryPoolEXT;\nextern PFN_vkCmdSetCullModeEXT vkCmdSetCullModeEXT;\nextern PFN_vkCmdSetFrontFaceEXT vkCmdSetFrontFaceEXT;\nextern PFN_vkCmdSetPrimitiveTopologyEXT vkCmdSetPrimitiveTopologyEXT;\nextern PFN_vkCmdSetViewportWithCountEXT vkCmdSetViewportWithCountEXT;\nextern PFN_vkCmdSetScissorWithCountEXT vkCmdSetScissorWithCountEXT;\nextern PFN_vkCmdBindVertexBuffers2EXT vkCmdBindVertexBuffers2EXT;\nextern PFN_vkCmdSetDepthTestEnableEXT vkCmdSetDepthTestEnableEXT;\nextern PFN_vkCmdSetDepthWriteEnableEXT vkCmdSetDepthWriteEnableEXT;\nextern PFN_vkCmdSetDepthCompareOpEXT vkCmdSetDepthCompareOpEXT;\nextern PFN_vkCmdSetDepthBoundsTestEnableEXT vkCmdSetDepthBoundsTestEnableEXT;\nextern PFN_vkCmdSetStencilTestEnableEXT vkCmdSetStencilTestEnableEXT;\nextern PFN_vkCmdSetStencilOpEXT vkCmdSetStencilOpEXT;\nextern PFN_vkCreateDeferredOperationKHR vkCreateDeferredOperationKHR;\nextern PFN_vkDestroyDeferredOperationKHR vkDestroyDeferredOperationKHR;\nextern PFN_vkGetDeferredOperationMaxConcurrencyKHR vkGetDeferredOperationMaxConcurrencyKHR;\nextern PFN_vkGetDeferredOperationResultKHR vkGetDeferredOperationResultKHR;\nextern PFN_vkDeferredOperationJoinKHR vkDeferredOperationJoinKHR;\nextern PFN_vkGetPipelineExecutablePropertiesKHR vkGetPipelineExecutablePropertiesKHR;\nextern PFN_vkGetPipelineExecutableStatisticsKHR vkGetPipelineExecutableStatisticsKHR;\nextern PFN_vkGetPipelineExecutableInternalRepresentationsKHR vkGetPipelineExecutableInternalRepresentationsKHR;\nextern PFN_vkCopyMemoryToImageEXT vkCopyMemoryToImageEXT;\nextern PFN_vkCopyImageToMemoryEXT vkCopyImageToMemoryEXT;\nextern PFN_vkCopyImageToImageEXT vkCopyImageToImageEXT;\nextern PFN_vkTransitionImageLayoutEXT vkTransitionImageLayoutEXT;\nextern PFN_vkGetImageSubresourceLayout2EXT vkGetImageSubresourceLayout2EXT;\nextern PFN_vkMapMemory2KHR vkMapMemory2KHR;\nextern PFN_vkUnmapMemory2KHR vkUnmapMemory2KHR;\nextern PFN_vkGetGeneratedCommandsMemoryRequirementsNV vkGetGeneratedCommandsMemoryRequirementsNV;\nextern PFN_vkCmdPreprocessGeneratedCommandsNV vkCmdPreprocessGeneratedCommandsNV;\nextern PFN_vkCmdExecuteGeneratedCommandsNV vkCmdExecuteGeneratedCommandsNV;\nextern PFN_vkCmdBindPipelineShaderGroupNV vkCmdBindPipelineShaderGroupNV;\nextern PFN_vkCreateIndirectCommandsLayoutNV vkCreateIndirectCommandsLayoutNV;\nextern PFN_vkDestroyIndirectCommandsLayoutNV vkDestroyIndirectCommandsLayoutNV;\nextern PFN_vkCmdSetDepthBias2EXT vkCmdSetDepthBias2EXT;\nextern PFN_vkAcquireDrmDisplayEXT vkAcquireDrmDisplayEXT;\nextern PFN_vkGetDrmDisplayEXT vkGetDrmDisplayEXT;\nextern PFN_vkCreatePrivateDataSlotEXT vkCreatePrivateDataSlotEXT;\nextern PFN_vkDestroyPrivateDataSlotEXT vkDestroyPrivateDataSlotEXT;\nextern PFN_vkSetPrivateDataEXT vkSetPrivateDataEXT;\nextern PFN_vkGetPrivateDataEXT vkGetPrivateDataEXT;\nextern PFN_vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR;\nextern PFN_vkGetEncodedVideoSessionParametersKHR vkGetEncodedVideoSessionParametersKHR;\nextern PFN_vkCmdEncodeVideoKHR vkCmdEncodeVideoKHR;\nextern PFN_vkCmdRefreshObjectsKHR vkCmdRefreshObjectsKHR;\nextern PFN_vkGetPhysicalDeviceRefreshableObjectTypesKHR vkGetPhysicalDeviceRefreshableObjectTypesKHR;\nextern PFN_vkCmdDispatchTileQCOM vkCmdDispatchTileQCOM;\nextern PFN_vkCmdBeginPerTileExecutionQCOM vkCmdBeginPerTileExecutionQCOM;\nextern PFN_vkCmdEndPerTileExecutionQCOM vkCmdEndPerTileExecutionQCOM;\nextern PFN_vkCmdSetEvent2KHR vkCmdSetEvent2KHR;\nextern PFN_vkCmdResetEvent2KHR vkCmdResetEvent2KHR;\nextern PFN_vkCmdWaitEvents2KHR vkCmdWaitEvents2KHR;\nextern PFN_vkCmdPipelineBarrier2KHR vkCmdPipelineBarrier2KHR;\nextern PFN_vkCmdWriteTimestamp2KHR vkCmdWriteTimestamp2KHR;\nextern PFN_vkQueueSubmit2KHR vkQueueSubmit2KHR;\nextern PFN_vkGetDescriptorSetLayoutSizeEXT vkGetDescriptorSetLayoutSizeEXT;\nextern PFN_vkGetDescriptorSetLayoutBindingOffsetEXT vkGetDescriptorSetLayoutBindingOffsetEXT;\nextern PFN_vkGetDescriptorEXT vkGetDescriptorEXT;\nextern PFN_vkCmdBindDescriptorBuffersEXT vkCmdBindDescriptorBuffersEXT;\nextern PFN_vkCmdSetDescriptorBufferOffsetsEXT vkCmdSetDescriptorBufferOffsetsEXT;\nextern PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT vkCmdBindDescriptorBufferEmbeddedSamplersEXT;\nextern PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT vkGetBufferOpaqueCaptureDescriptorDataEXT;\nextern PFN_vkGetImageOpaqueCaptureDescriptorDataEXT vkGetImageOpaqueCaptureDescriptorDataEXT;\nextern PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT vkGetImageViewOpaqueCaptureDescriptorDataEXT;\nextern PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT vkGetSamplerOpaqueCaptureDescriptorDataEXT;\nextern PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT;\nextern PFN_vkCmdSetFragmentShadingRateEnumNV vkCmdSetFragmentShadingRateEnumNV;\nextern PFN_vkCmdDrawMeshTasksEXT vkCmdDrawMeshTasksEXT;\nextern PFN_vkCmdDrawMeshTasksIndirectEXT vkCmdDrawMeshTasksIndirectEXT;\nextern PFN_vkCmdDrawMeshTasksIndirectCountEXT vkCmdDrawMeshTasksIndirectCountEXT;\nextern PFN_vkCmdCopyBuffer2KHR vkCmdCopyBuffer2KHR;\nextern PFN_vkCmdCopyImage2KHR vkCmdCopyImage2KHR;\nextern PFN_vkCmdCopyBufferToImage2KHR vkCmdCopyBufferToImage2KHR;\nextern PFN_vkCmdCopyImageToBuffer2KHR vkCmdCopyImageToBuffer2KHR;\nextern PFN_vkCmdBlitImage2KHR vkCmdBlitImage2KHR;\nextern PFN_vkCmdResolveImage2KHR vkCmdResolveImage2KHR;\nextern PFN_vkGetDeviceFaultInfoEXT vkGetDeviceFaultInfoEXT;\nextern PFN_vkCmdSetVertexInputEXT vkCmdSetVertexInputEXT;\nextern PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI;\nextern PFN_vkCmdSubpassShadingHUAWEI vkCmdSubpassShadingHUAWEI;\nextern PFN_vkCmdBindInvocationMaskHUAWEI vkCmdBindInvocationMaskHUAWEI;\nextern PFN_vkGetMemoryRemoteAddressNV vkGetMemoryRemoteAddressNV;\nextern PFN_vkGetPipelinePropertiesEXT vkGetPipelinePropertiesEXT;\nextern PFN_vkCmdSetPatchControlPointsEXT vkCmdSetPatchControlPointsEXT;\nextern PFN_vkCmdSetRasterizerDiscardEnableEXT vkCmdSetRasterizerDiscardEnableEXT;\nextern PFN_vkCmdSetDepthBiasEnableEXT vkCmdSetDepthBiasEnableEXT;\nextern PFN_vkCmdSetLogicOpEXT vkCmdSetLogicOpEXT;\nextern PFN_vkCmdSetPrimitiveRestartEnableEXT vkCmdSetPrimitiveRestartEnableEXT;\nextern PFN_vkCmdSetColorWriteEnableEXT vkCmdSetColorWriteEnableEXT;\nextern PFN_vkCmdTraceRaysIndirect2KHR vkCmdTraceRaysIndirect2KHR;\nextern PFN_vkCmdDrawMultiEXT vkCmdDrawMultiEXT;\nextern PFN_vkCmdDrawMultiIndexedEXT vkCmdDrawMultiIndexedEXT;\nextern PFN_vkCreateMicromapEXT vkCreateMicromapEXT;\nextern PFN_vkDestroyMicromapEXT vkDestroyMicromapEXT;\nextern PFN_vkCmdBuildMicromapsEXT vkCmdBuildMicromapsEXT;\nextern PFN_vkBuildMicromapsEXT vkBuildMicromapsEXT;\nextern PFN_vkCopyMicromapEXT vkCopyMicromapEXT;\nextern PFN_vkCopyMicromapToMemoryEXT vkCopyMicromapToMemoryEXT;\nextern PFN_vkCopyMemoryToMicromapEXT vkCopyMemoryToMicromapEXT;\nextern PFN_vkWriteMicromapsPropertiesEXT vkWriteMicromapsPropertiesEXT;\nextern PFN_vkCmdCopyMicromapEXT vkCmdCopyMicromapEXT;\nextern PFN_vkCmdCopyMicromapToMemoryEXT vkCmdCopyMicromapToMemoryEXT;\nextern PFN_vkCmdCopyMemoryToMicromapEXT vkCmdCopyMemoryToMicromapEXT;\nextern PFN_vkCmdWriteMicromapsPropertiesEXT vkCmdWriteMicromapsPropertiesEXT;\nextern PFN_vkGetDeviceMicromapCompatibilityEXT vkGetDeviceMicromapCompatibilityEXT;\nextern PFN_vkGetMicromapBuildSizesEXT vkGetMicromapBuildSizesEXT;\nextern PFN_vkCmdDrawClusterHUAWEI vkCmdDrawClusterHUAWEI;\nextern PFN_vkCmdDrawClusterIndirectHUAWEI vkCmdDrawClusterIndirectHUAWEI;\nextern PFN_vkSetDeviceMemoryPriorityEXT vkSetDeviceMemoryPriorityEXT;\nextern PFN_vkGetDeviceBufferMemoryRequirementsKHR vkGetDeviceBufferMemoryRequirementsKHR;\nextern PFN_vkGetDeviceImageMemoryRequirementsKHR vkGetDeviceImageMemoryRequirementsKHR;\nextern PFN_vkGetDeviceImageSparseMemoryRequirementsKHR vkGetDeviceImageSparseMemoryRequirementsKHR;\nextern PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE vkGetDescriptorSetLayoutHostMappingInfoVALVE;\nextern PFN_vkGetDescriptorSetHostMappingVALVE vkGetDescriptorSetHostMappingVALVE;\nextern PFN_vkGetPipelineIndirectMemoryRequirementsNV vkGetPipelineIndirectMemoryRequirementsNV;\nextern PFN_vkCmdUpdatePipelineIndirectBufferNV vkCmdUpdatePipelineIndirectBufferNV;\nextern PFN_vkGetPipelineIndirectDeviceAddressNV vkGetPipelineIndirectDeviceAddressNV;\nextern PFN_vkCmdSetDepthClampEnableEXT vkCmdSetDepthClampEnableEXT;\nextern PFN_vkCmdSetPolygonModeEXT vkCmdSetPolygonModeEXT;\nextern PFN_vkCmdSetRasterizationSamplesEXT vkCmdSetRasterizationSamplesEXT;\nextern PFN_vkCmdSetSampleMaskEXT vkCmdSetSampleMaskEXT;\nextern PFN_vkCmdSetAlphaToCoverageEnableEXT vkCmdSetAlphaToCoverageEnableEXT;\nextern PFN_vkCmdSetAlphaToOneEnableEXT vkCmdSetAlphaToOneEnableEXT;\nextern PFN_vkCmdSetLogicOpEnableEXT vkCmdSetLogicOpEnableEXT;\nextern PFN_vkCmdSetColorBlendEnableEXT vkCmdSetColorBlendEnableEXT;\nextern PFN_vkCmdSetColorBlendEquationEXT vkCmdSetColorBlendEquationEXT;\nextern PFN_vkCmdSetColorWriteMaskEXT vkCmdSetColorWriteMaskEXT;\nextern PFN_vkCmdSetTessellationDomainOriginEXT vkCmdSetTessellationDomainOriginEXT;\nextern PFN_vkCmdSetRasterizationStreamEXT vkCmdSetRasterizationStreamEXT;\nextern PFN_vkCmdSetConservativeRasterizationModeEXT vkCmdSetConservativeRasterizationModeEXT;\nextern PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT vkCmdSetExtraPrimitiveOverestimationSizeEXT;\nextern PFN_vkCmdSetDepthClipEnableEXT vkCmdSetDepthClipEnableEXT;\nextern PFN_vkCmdSetSampleLocationsEnableEXT vkCmdSetSampleLocationsEnableEXT;\nextern PFN_vkCmdSetColorBlendAdvancedEXT vkCmdSetColorBlendAdvancedEXT;\nextern PFN_vkCmdSetProvokingVertexModeEXT vkCmdSetProvokingVertexModeEXT;\nextern PFN_vkCmdSetLineRasterizationModeEXT vkCmdSetLineRasterizationModeEXT;\nextern PFN_vkCmdSetLineStippleEnableEXT vkCmdSetLineStippleEnableEXT;\nextern PFN_vkCmdSetDepthClipNegativeOneToOneEXT vkCmdSetDepthClipNegativeOneToOneEXT;\nextern PFN_vkCmdSetViewportWScalingEnableNV vkCmdSetViewportWScalingEnableNV;\nextern PFN_vkCmdSetViewportSwizzleNV vkCmdSetViewportSwizzleNV;\nextern PFN_vkCmdSetCoverageToColorEnableNV vkCmdSetCoverageToColorEnableNV;\nextern PFN_vkCmdSetCoverageToColorLocationNV vkCmdSetCoverageToColorLocationNV;\nextern PFN_vkCmdSetCoverageModulationModeNV vkCmdSetCoverageModulationModeNV;\nextern PFN_vkCmdSetCoverageModulationTableEnableNV vkCmdSetCoverageModulationTableEnableNV;\nextern PFN_vkCmdSetCoverageModulationTableNV vkCmdSetCoverageModulationTableNV;\nextern PFN_vkCmdSetShadingRateImageEnableNV vkCmdSetShadingRateImageEnableNV;\nextern PFN_vkCmdSetRepresentativeFragmentTestEnableNV vkCmdSetRepresentativeFragmentTestEnableNV;\nextern PFN_vkCmdSetCoverageReductionModeNV vkCmdSetCoverageReductionModeNV;\nextern PFN_vkCreateTensorARM vkCreateTensorARM;\nextern PFN_vkDestroyTensorARM vkDestroyTensorARM;\nextern PFN_vkCreateTensorViewARM vkCreateTensorViewARM;\nextern PFN_vkDestroyTensorViewARM vkDestroyTensorViewARM;\nextern PFN_vkGetTensorMemoryRequirementsARM vkGetTensorMemoryRequirementsARM;\nextern PFN_vkBindTensorMemoryARM vkBindTensorMemoryARM;\nextern PFN_vkGetDeviceTensorMemoryRequirementsARM vkGetDeviceTensorMemoryRequirementsARM;\nextern PFN_vkCmdCopyTensorARM vkCmdCopyTensorARM;\nextern PFN_vkGetPhysicalDeviceExternalTensorPropertiesARM vkGetPhysicalDeviceExternalTensorPropertiesARM;\nextern PFN_vkGetTensorOpaqueCaptureDescriptorDataARM vkGetTensorOpaqueCaptureDescriptorDataARM;\nextern PFN_vkGetTensorViewOpaqueCaptureDescriptorDataARM vkGetTensorViewOpaqueCaptureDescriptorDataARM;\nextern PFN_vkGetShaderModuleIdentifierEXT vkGetShaderModuleIdentifierEXT;\nextern PFN_vkGetShaderModuleCreateInfoIdentifierEXT vkGetShaderModuleCreateInfoIdentifierEXT;\nextern PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV vkGetPhysicalDeviceOpticalFlowImageFormatsNV;\nextern PFN_vkCreateOpticalFlowSessionNV vkCreateOpticalFlowSessionNV;\nextern PFN_vkDestroyOpticalFlowSessionNV vkDestroyOpticalFlowSessionNV;\nextern PFN_vkBindOpticalFlowSessionImageNV vkBindOpticalFlowSessionImageNV;\nextern PFN_vkCmdOpticalFlowExecuteNV vkCmdOpticalFlowExecuteNV;\nextern PFN_vkCmdBindIndexBuffer2KHR vkCmdBindIndexBuffer2KHR;\nextern PFN_vkGetRenderingAreaGranularityKHR vkGetRenderingAreaGranularityKHR;\nextern PFN_vkGetDeviceImageSubresourceLayoutKHR vkGetDeviceImageSubresourceLayoutKHR;\nextern PFN_vkGetImageSubresourceLayout2KHR vkGetImageSubresourceLayout2KHR;\nextern PFN_vkAntiLagUpdateAMD vkAntiLagUpdateAMD;\nextern PFN_vkWaitForPresent2KHR vkWaitForPresent2KHR;\nextern PFN_vkCreateShadersEXT vkCreateShadersEXT;\nextern PFN_vkDestroyShaderEXT vkDestroyShaderEXT;\nextern PFN_vkGetShaderBinaryDataEXT vkGetShaderBinaryDataEXT;\nextern PFN_vkCmdBindShadersEXT vkCmdBindShadersEXT;\nextern PFN_vkCmdSetDepthClampRangeEXT vkCmdSetDepthClampRangeEXT;\nextern PFN_vkCreatePipelineBinariesKHR vkCreatePipelineBinariesKHR;\nextern PFN_vkDestroyPipelineBinaryKHR vkDestroyPipelineBinaryKHR;\nextern PFN_vkGetPipelineKeyKHR vkGetPipelineKeyKHR;\nextern PFN_vkGetPipelineBinaryDataKHR vkGetPipelineBinaryDataKHR;\nextern PFN_vkReleaseCapturedPipelineDataKHR vkReleaseCapturedPipelineDataKHR;\nextern PFN_vkGetFramebufferTilePropertiesQCOM vkGetFramebufferTilePropertiesQCOM;\nextern PFN_vkGetDynamicRenderingTilePropertiesQCOM vkGetDynamicRenderingTilePropertiesQCOM;\nextern PFN_vkReleaseSwapchainImagesKHR vkReleaseSwapchainImagesKHR;\nextern PFN_vkReleaseSwapchainImagesEXT vkReleaseSwapchainImagesEXT;\nextern PFN_vkGetPhysicalDeviceCooperativeVectorPropertiesNV vkGetPhysicalDeviceCooperativeVectorPropertiesNV;\nextern PFN_vkConvertCooperativeVectorMatrixNV vkConvertCooperativeVectorMatrixNV;\nextern PFN_vkCmdConvertCooperativeVectorMatrixNV vkCmdConvertCooperativeVectorMatrixNV;\nextern PFN_vkSetLatencySleepModeNV vkSetLatencySleepModeNV;\nextern PFN_vkLatencySleepNV vkLatencySleepNV;\nextern PFN_vkSetLatencyMarkerNV vkSetLatencyMarkerNV;\nextern PFN_vkGetLatencyTimingsNV vkGetLatencyTimingsNV;\nextern PFN_vkQueueNotifyOutOfBandNV vkQueueNotifyOutOfBandNV;\nextern PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR;\nextern PFN_vkCreateDataGraphPipelinesARM vkCreateDataGraphPipelinesARM;\nextern PFN_vkCreateDataGraphPipelineSessionARM vkCreateDataGraphPipelineSessionARM;\nextern PFN_vkGetDataGraphPipelineSessionBindPointRequirementsARM vkGetDataGraphPipelineSessionBindPointRequirementsARM;\nextern PFN_vkGetDataGraphPipelineSessionMemoryRequirementsARM vkGetDataGraphPipelineSessionMemoryRequirementsARM;\nextern PFN_vkBindDataGraphPipelineSessionMemoryARM vkBindDataGraphPipelineSessionMemoryARM;\nextern PFN_vkDestroyDataGraphPipelineSessionARM vkDestroyDataGraphPipelineSessionARM;\nextern PFN_vkCmdDispatchDataGraphARM vkCmdDispatchDataGraphARM;\nextern PFN_vkGetDataGraphPipelineAvailablePropertiesARM vkGetDataGraphPipelineAvailablePropertiesARM;\nextern PFN_vkGetDataGraphPipelinePropertiesARM vkGetDataGraphPipelinePropertiesARM;\nextern PFN_vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM;\nextern PFN_vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM;\nextern PFN_vkCmdSetAttachmentFeedbackLoopEnableEXT vkCmdSetAttachmentFeedbackLoopEnableEXT;\nextern PFN_vkCmdSetLineStippleKHR vkCmdSetLineStippleKHR;\nextern PFN_vkCmdSetLineStippleEXT vkCmdSetLineStippleEXT;\nextern PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsKHR vkGetPhysicalDeviceCalibrateableTimeDomainsKHR;\nextern PFN_vkGetCalibratedTimestampsKHR vkGetCalibratedTimestampsKHR;\nextern PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT vkGetPhysicalDeviceCalibrateableTimeDomainsEXT;\nextern PFN_vkGetCalibratedTimestampsEXT vkGetCalibratedTimestampsEXT;\nextern PFN_vkCmdBindDescriptorSets2KHR vkCmdBindDescriptorSets2KHR;\nextern PFN_vkCmdPushConstants2KHR vkCmdPushConstants2KHR;\nextern PFN_vkCmdPushDescriptorSet2KHR vkCmdPushDescriptorSet2KHR;\nextern PFN_vkCmdPushDescriptorSetWithTemplate2KHR vkCmdPushDescriptorSetWithTemplate2KHR;\nextern PFN_vkCmdSetDescriptorBufferOffsets2EXT vkCmdSetDescriptorBufferOffsets2EXT;\nextern PFN_vkCmdBindDescriptorBufferEmbeddedSamplers2EXT vkCmdBindDescriptorBufferEmbeddedSamplers2EXT;\nextern PFN_vkCmdBindTileMemoryQCOM vkCmdBindTileMemoryQCOM;\nextern PFN_vkCmdCopyMemoryIndirectKHR vkCmdCopyMemoryIndirectKHR;\nextern PFN_vkCmdCopyMemoryToImageIndirectKHR vkCmdCopyMemoryToImageIndirectKHR;\nextern PFN_vkCmdCopyMemoryIndirectNV vkCmdCopyMemoryIndirectNV;\nextern PFN_vkCmdCopyMemoryToImageIndirectNV vkCmdCopyMemoryToImageIndirectNV;\nextern PFN_vkCmdDecompressMemoryEXT vkCmdDecompressMemoryEXT;\nextern PFN_vkCmdDecompressMemoryIndirectCountEXT vkCmdDecompressMemoryIndirectCountEXT;\nextern PFN_vkCmdDecompressMemoryNV vkCmdDecompressMemoryNV;\nextern PFN_vkCmdDecompressMemoryIndirectCountNV vkCmdDecompressMemoryIndirectCountNV;\nextern PFN_vkCreateExternalComputeQueueNV vkCreateExternalComputeQueueNV;\nextern PFN_vkDestroyExternalComputeQueueNV vkDestroyExternalComputeQueueNV;\nextern PFN_vkGetExternalComputeQueueDataNV vkGetExternalComputeQueueDataNV;\nextern PFN_vkGetClusterAccelerationStructureBuildSizesNV vkGetClusterAccelerationStructureBuildSizesNV;\nextern PFN_vkCmdBuildClusterAccelerationStructureIndirectNV vkCmdBuildClusterAccelerationStructureIndirectNV;\nextern PFN_vkGetPartitionedAccelerationStructuresBuildSizesNV vkGetPartitionedAccelerationStructuresBuildSizesNV;\nextern PFN_vkCmdBuildPartitionedAccelerationStructuresNV vkCmdBuildPartitionedAccelerationStructuresNV;\nextern PFN_vkGetGeneratedCommandsMemoryRequirementsEXT vkGetGeneratedCommandsMemoryRequirementsEXT;\nextern PFN_vkCmdPreprocessGeneratedCommandsEXT vkCmdPreprocessGeneratedCommandsEXT;\nextern PFN_vkCmdExecuteGeneratedCommandsEXT vkCmdExecuteGeneratedCommandsEXT;\nextern PFN_vkCreateIndirectCommandsLayoutEXT vkCreateIndirectCommandsLayoutEXT;\nextern PFN_vkDestroyIndirectCommandsLayoutEXT vkDestroyIndirectCommandsLayoutEXT;\nextern PFN_vkCreateIndirectExecutionSetEXT vkCreateIndirectExecutionSetEXT;\nextern PFN_vkDestroyIndirectExecutionSetEXT vkDestroyIndirectExecutionSetEXT;\nextern PFN_vkUpdateIndirectExecutionSetPipelineEXT vkUpdateIndirectExecutionSetPipelineEXT;\nextern PFN_vkUpdateIndirectExecutionSetShaderEXT vkUpdateIndirectExecutionSetShaderEXT;\nextern PFN_vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV;\nextern PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM;\nextern PFN_vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM;\nextern PFN_vkCreateShaderInstrumentationARM vkCreateShaderInstrumentationARM;\nextern PFN_vkDestroyShaderInstrumentationARM vkDestroyShaderInstrumentationARM;\nextern PFN_vkCmdBeginShaderInstrumentationARM vkCmdBeginShaderInstrumentationARM;\nextern PFN_vkCmdEndShaderInstrumentationARM vkCmdEndShaderInstrumentationARM;\nextern PFN_vkGetShaderInstrumentationValuesARM vkGetShaderInstrumentationValuesARM;\nextern PFN_vkClearShaderInstrumentationMetricsARM vkClearShaderInstrumentationMetricsARM;\nextern PFN_vkCmdEndRendering2EXT vkCmdEndRendering2EXT;\nextern PFN_vkCmdBeginCustomResolveEXT vkCmdBeginCustomResolveEXT;\nextern PFN_vkCmdEndRendering2KHR vkCmdEndRendering2KHR;\nextern PFN_vkCmdSetComputeOccupancyPriorityNV vkCmdSetComputeOccupancyPriorityNV;\n#ifdef VK_USE_PLATFORM_XLIB_KHR\nextern PFN_vkCreateXlibSurfaceKHR vkCreateXlibSurfaceKHR;\nextern PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR vkGetPhysicalDeviceXlibPresentationSupportKHR;\n#endif /*VK_USE_PLATFORM_XLIB_KHR*/\n#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT\nextern PFN_vkAcquireXlibDisplayEXT vkAcquireXlibDisplayEXT;\nextern PFN_vkGetRandROutputDisplayEXT vkGetRandROutputDisplayEXT;\n#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/\n#ifdef VK_USE_PLATFORM_XCB_KHR\nextern PFN_vkCreateXcbSurfaceKHR vkCreateXcbSurfaceKHR;\nextern PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR vkGetPhysicalDeviceXcbPresentationSupportKHR;\n#endif /*VK_USE_PLATFORM_XCB_KHR*/\n#ifdef VK_USE_PLATFORM_WAYLAND_KHR\nextern PFN_vkCreateWaylandSurfaceKHR vkCreateWaylandSurfaceKHR;\nextern PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR vkGetPhysicalDeviceWaylandPresentationSupportKHR;\n#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/\n#ifdef VK_USE_PLATFORM_UBM_SEC\nextern PFN_vkCreateUbmSurfaceSEC vkCreateUbmSurfaceSEC;\nextern PFN_vkGetPhysicalDeviceUbmPresentationSupportSEC vkGetPhysicalDeviceUbmPresentationSupportSEC;\n#endif /*VK_USE_PLATFORM_UBM_SEC*/\n#ifdef VK_USE_PLATFORM_DIRECTFB_EXT\nextern PFN_vkCreateDirectFBSurfaceEXT vkCreateDirectFBSurfaceEXT;\nextern PFN_vkGetPhysicalDeviceDirectFBPresentationSupportEXT vkGetPhysicalDeviceDirectFBPresentationSupportEXT;\n#endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/\n#ifdef VK_USE_PLATFORM_ANDROID_KHR\nextern PFN_vkCreateAndroidSurfaceKHR vkCreateAndroidSurfaceKHR;\nextern PFN_vkGetAndroidHardwareBufferPropertiesANDROID vkGetAndroidHardwareBufferPropertiesANDROID;\nextern PFN_vkGetMemoryAndroidHardwareBufferANDROID vkGetMemoryAndroidHardwareBufferANDROID;\n#endif /*VK_USE_PLATFORM_ANDROID_KHR*/\n#ifdef VK_USE_PLATFORM_WIN32_KHR\nextern PFN_vkCreateWin32SurfaceKHR vkCreateWin32SurfaceKHR;\nextern PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR vkGetPhysicalDeviceWin32PresentationSupportKHR;\nextern PFN_vkGetMemoryWin32HandleKHR vkGetMemoryWin32HandleKHR;\nextern PFN_vkGetMemoryWin32HandlePropertiesKHR vkGetMemoryWin32HandlePropertiesKHR;\nextern PFN_vkGetMemoryWin32HandleNV vkGetMemoryWin32HandleNV;\nextern PFN_vkImportSemaphoreWin32HandleKHR vkImportSemaphoreWin32HandleKHR;\nextern PFN_vkGetSemaphoreWin32HandleKHR vkGetSemaphoreWin32HandleKHR;\nextern PFN_vkImportFenceWin32HandleKHR vkImportFenceWin32HandleKHR;\nextern PFN_vkGetFenceWin32HandleKHR vkGetFenceWin32HandleKHR;\nextern PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT vkGetPhysicalDeviceSurfacePresentModes2EXT;\nextern PFN_vkAcquireFullScreenExclusiveModeEXT vkAcquireFullScreenExclusiveModeEXT;\nextern PFN_vkReleaseFullScreenExclusiveModeEXT vkReleaseFullScreenExclusiveModeEXT;\nextern PFN_vkGetDeviceGroupSurfacePresentModes2EXT vkGetDeviceGroupSurfacePresentModes2EXT;\nextern PFN_vkAcquireWinrtDisplayNV vkAcquireWinrtDisplayNV;\nextern PFN_vkGetWinrtDisplayNV vkGetWinrtDisplayNV;\n#endif /*VK_USE_PLATFORM_WIN32_KHR*/\n#ifdef VK_USE_PLATFORM_VI_NN\nextern PFN_vkCreateViSurfaceNN vkCreateViSurfaceNN;\n#endif /*VK_USE_PLATFORM_VI_NN*/\n#ifdef VK_USE_PLATFORM_IOS_MVK\nextern PFN_vkCreateIOSSurfaceMVK vkCreateIOSSurfaceMVK;\n#endif /*VK_USE_PLATFORM_IOS_MVK*/\n#ifdef VK_USE_PLATFORM_MACOS_MVK\nextern PFN_vkCreateMacOSSurfaceMVK vkCreateMacOSSurfaceMVK;\n#endif /*VK_USE_PLATFORM_MACOS_MVK*/\n#ifdef VK_USE_PLATFORM_METAL_EXT\nextern PFN_vkCreateMetalSurfaceEXT vkCreateMetalSurfaceEXT;\nextern PFN_vkExportMetalObjectsEXT vkExportMetalObjectsEXT;\nextern PFN_vkGetMemoryMetalHandleEXT vkGetMemoryMetalHandleEXT;\nextern PFN_vkGetMemoryMetalHandlePropertiesEXT vkGetMemoryMetalHandlePropertiesEXT;\n#endif /*VK_USE_PLATFORM_METAL_EXT*/\n#ifdef VK_USE_PLATFORM_FUCHSIA\nextern PFN_vkCreateImagePipeSurfaceFUCHSIA vkCreateImagePipeSurfaceFUCHSIA;\nextern PFN_vkGetMemoryZirconHandleFUCHSIA vkGetMemoryZirconHandleFUCHSIA;\nextern PFN_vkGetMemoryZirconHandlePropertiesFUCHSIA vkGetMemoryZirconHandlePropertiesFUCHSIA;\nextern PFN_vkImportSemaphoreZirconHandleFUCHSIA vkImportSemaphoreZirconHandleFUCHSIA;\nextern PFN_vkGetSemaphoreZirconHandleFUCHSIA vkGetSemaphoreZirconHandleFUCHSIA;\nextern PFN_vkCreateBufferCollectionFUCHSIA vkCreateBufferCollectionFUCHSIA;\nextern PFN_vkSetBufferCollectionImageConstraintsFUCHSIA vkSetBufferCollectionImageConstraintsFUCHSIA;\nextern PFN_vkSetBufferCollectionBufferConstraintsFUCHSIA vkSetBufferCollectionBufferConstraintsFUCHSIA;\nextern PFN_vkDestroyBufferCollectionFUCHSIA vkDestroyBufferCollectionFUCHSIA;\nextern PFN_vkGetBufferCollectionPropertiesFUCHSIA vkGetBufferCollectionPropertiesFUCHSIA;\n#endif /*VK_USE_PLATFORM_FUCHSIA*/\n#ifdef VK_USE_PLATFORM_GGP\nextern PFN_vkCreateStreamDescriptorSurfaceGGP vkCreateStreamDescriptorSurfaceGGP;\n#endif /*VK_USE_PLATFORM_GGP*/\n#ifdef VK_USE_PLATFORM_SCI\nextern PFN_vkGetMemorySciBufNV vkGetMemorySciBufNV;\nextern PFN_vkGetPhysicalDeviceExternalMemorySciBufPropertiesNV vkGetPhysicalDeviceExternalMemorySciBufPropertiesNV;\nextern PFN_vkGetPhysicalDeviceSciBufAttributesNV vkGetPhysicalDeviceSciBufAttributesNV;\nextern PFN_vkCreateSemaphoreSciSyncPoolNV vkCreateSemaphoreSciSyncPoolNV;\nextern PFN_vkDestroySemaphoreSciSyncPoolNV vkDestroySemaphoreSciSyncPoolNV;\nextern PFN_vkGetFenceSciSyncFenceNV vkGetFenceSciSyncFenceNV;\nextern PFN_vkGetFenceSciSyncObjNV vkGetFenceSciSyncObjNV;\nextern PFN_vkImportFenceSciSyncFenceNV vkImportFenceSciSyncFenceNV;\nextern PFN_vkImportFenceSciSyncObjNV vkImportFenceSciSyncObjNV;\nextern PFN_vkGetPhysicalDeviceSciSyncAttributesNV vkGetPhysicalDeviceSciSyncAttributesNV;\nextern PFN_vkGetSemaphoreSciSyncObjNV vkGetSemaphoreSciSyncObjNV;\nextern PFN_vkImportSemaphoreSciSyncObjNV vkImportSemaphoreSciSyncObjNV;\n#endif /*VK_USE_PLATFORM_SCI*/\n#ifdef VK_ENABLE_BETA_EXTENSIONS\nextern PFN_vkCreateExecutionGraphPipelinesAMDX vkCreateExecutionGraphPipelinesAMDX;\nextern PFN_vkGetExecutionGraphPipelineScratchSizeAMDX vkGetExecutionGraphPipelineScratchSizeAMDX;\nextern PFN_vkGetExecutionGraphPipelineNodeIndexAMDX vkGetExecutionGraphPipelineNodeIndexAMDX;\nextern PFN_vkCmdInitializeGraphScratchMemoryAMDX vkCmdInitializeGraphScratchMemoryAMDX;\nextern PFN_vkCmdDispatchGraphAMDX vkCmdDispatchGraphAMDX;\nextern PFN_vkCmdDispatchGraphIndirectAMDX vkCmdDispatchGraphIndirectAMDX;\nextern PFN_vkCmdDispatchGraphIndirectCountAMDX vkCmdDispatchGraphIndirectCountAMDX;\nextern PFN_vkCreateCudaModuleNV vkCreateCudaModuleNV;\nextern PFN_vkGetCudaModuleCacheNV vkGetCudaModuleCacheNV;\nextern PFN_vkCreateCudaFunctionNV vkCreateCudaFunctionNV;\nextern PFN_vkDestroyCudaModuleNV vkDestroyCudaModuleNV;\nextern PFN_vkDestroyCudaFunctionNV vkDestroyCudaFunctionNV;\nextern PFN_vkCmdCudaLaunchKernelNV vkCmdCudaLaunchKernelNV;\n#endif /*VK_ENABLE_BETA_EXTENSIONS*/\n#ifdef VK_USE_PLATFORM_SCREEN_QNX\nextern PFN_vkCreateScreenSurfaceQNX vkCreateScreenSurfaceQNX;\nextern PFN_vkGetPhysicalDeviceScreenPresentationSupportQNX vkGetPhysicalDeviceScreenPresentationSupportQNX;\nextern PFN_vkGetScreenBufferPropertiesQNX vkGetScreenBufferPropertiesQNX;\n#endif /*VK_USE_PLATFORM_SCREEN_QNX*/\n#ifdef VK_USE_PLATFORM_OHOS\nextern PFN_vkGetNativeBufferPropertiesOHOS vkGetNativeBufferPropertiesOHOS;\nextern PFN_vkGetMemoryNativeBufferOHOS vkGetMemoryNativeBufferOHOS;\nextern PFN_vkCreateSurfaceOHOS vkCreateSurfaceOHOS;\n#endif /*VK_USE_PLATFORM_OHOS*/\n#endif /*VKBIND_NO_GLOBAL_API*/\n\ntypedef struct\n{\n    PFN_vkCreateInstance vkCreateInstance;\n    PFN_vkDestroyInstance vkDestroyInstance;\n    PFN_vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices;\n    PFN_vkGetPhysicalDeviceFeatures vkGetPhysicalDeviceFeatures;\n    PFN_vkGetPhysicalDeviceFormatProperties vkGetPhysicalDeviceFormatProperties;\n    PFN_vkGetPhysicalDeviceImageFormatProperties vkGetPhysicalDeviceImageFormatProperties;\n    PFN_vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties;\n    PFN_vkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties;\n    PFN_vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties;\n    PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr;\n    PFN_vkGetDeviceProcAddr vkGetDeviceProcAddr;\n    PFN_vkCreateDevice vkCreateDevice;\n    PFN_vkDestroyDevice vkDestroyDevice;\n    PFN_vkEnumerateInstanceExtensionProperties vkEnumerateInstanceExtensionProperties;\n    PFN_vkEnumerateDeviceExtensionProperties vkEnumerateDeviceExtensionProperties;\n    PFN_vkEnumerateInstanceLayerProperties vkEnumerateInstanceLayerProperties;\n    PFN_vkEnumerateDeviceLayerProperties vkEnumerateDeviceLayerProperties;\n    PFN_vkGetDeviceQueue vkGetDeviceQueue;\n    PFN_vkQueueSubmit vkQueueSubmit;\n    PFN_vkQueueWaitIdle vkQueueWaitIdle;\n    PFN_vkDeviceWaitIdle vkDeviceWaitIdle;\n    PFN_vkAllocateMemory vkAllocateMemory;\n    PFN_vkFreeMemory vkFreeMemory;\n    PFN_vkMapMemory vkMapMemory;\n    PFN_vkUnmapMemory vkUnmapMemory;\n    PFN_vkFlushMappedMemoryRanges vkFlushMappedMemoryRanges;\n    PFN_vkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRanges;\n    PFN_vkGetDeviceMemoryCommitment vkGetDeviceMemoryCommitment;\n    PFN_vkBindBufferMemory vkBindBufferMemory;\n    PFN_vkBindImageMemory vkBindImageMemory;\n    PFN_vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements;\n    PFN_vkGetImageMemoryRequirements vkGetImageMemoryRequirements;\n    PFN_vkGetImageSparseMemoryRequirements vkGetImageSparseMemoryRequirements;\n    PFN_vkGetPhysicalDeviceSparseImageFormatProperties vkGetPhysicalDeviceSparseImageFormatProperties;\n    PFN_vkQueueBindSparse vkQueueBindSparse;\n    PFN_vkCreateFence vkCreateFence;\n    PFN_vkDestroyFence vkDestroyFence;\n    PFN_vkResetFences vkResetFences;\n    PFN_vkGetFenceStatus vkGetFenceStatus;\n    PFN_vkWaitForFences vkWaitForFences;\n    PFN_vkCreateSemaphore vkCreateSemaphore;\n    PFN_vkDestroySemaphore vkDestroySemaphore;\n    PFN_vkCreateQueryPool vkCreateQueryPool;\n    PFN_vkDestroyQueryPool vkDestroyQueryPool;\n    PFN_vkGetQueryPoolResults vkGetQueryPoolResults;\n    PFN_vkCreateBuffer vkCreateBuffer;\n    PFN_vkDestroyBuffer vkDestroyBuffer;\n    PFN_vkCreateImage vkCreateImage;\n    PFN_vkDestroyImage vkDestroyImage;\n    PFN_vkGetImageSubresourceLayout vkGetImageSubresourceLayout;\n    PFN_vkCreateImageView vkCreateImageView;\n    PFN_vkDestroyImageView vkDestroyImageView;\n    PFN_vkCreateCommandPool vkCreateCommandPool;\n    PFN_vkDestroyCommandPool vkDestroyCommandPool;\n    PFN_vkResetCommandPool vkResetCommandPool;\n    PFN_vkAllocateCommandBuffers vkAllocateCommandBuffers;\n    PFN_vkFreeCommandBuffers vkFreeCommandBuffers;\n    PFN_vkBeginCommandBuffer vkBeginCommandBuffer;\n    PFN_vkEndCommandBuffer vkEndCommandBuffer;\n    PFN_vkResetCommandBuffer vkResetCommandBuffer;\n    PFN_vkCmdCopyBuffer vkCmdCopyBuffer;\n    PFN_vkCmdCopyImage vkCmdCopyImage;\n    PFN_vkCmdCopyBufferToImage vkCmdCopyBufferToImage;\n    PFN_vkCmdCopyImageToBuffer vkCmdCopyImageToBuffer;\n    PFN_vkCmdUpdateBuffer vkCmdUpdateBuffer;\n    PFN_vkCmdFillBuffer vkCmdFillBuffer;\n    PFN_vkCmdPipelineBarrier vkCmdPipelineBarrier;\n    PFN_vkCmdBeginQuery vkCmdBeginQuery;\n    PFN_vkCmdEndQuery vkCmdEndQuery;\n    PFN_vkCmdResetQueryPool vkCmdResetQueryPool;\n    PFN_vkCmdWriteTimestamp vkCmdWriteTimestamp;\n    PFN_vkCmdCopyQueryPoolResults vkCmdCopyQueryPoolResults;\n    PFN_vkCmdExecuteCommands vkCmdExecuteCommands;\n    PFN_vkCreateEvent vkCreateEvent;\n    PFN_vkDestroyEvent vkDestroyEvent;\n    PFN_vkGetEventStatus vkGetEventStatus;\n    PFN_vkSetEvent vkSetEvent;\n    PFN_vkResetEvent vkResetEvent;\n    PFN_vkCreateBufferView vkCreateBufferView;\n    PFN_vkDestroyBufferView vkDestroyBufferView;\n    PFN_vkCreateShaderModule vkCreateShaderModule;\n    PFN_vkDestroyShaderModule vkDestroyShaderModule;\n    PFN_vkCreatePipelineCache vkCreatePipelineCache;\n    PFN_vkDestroyPipelineCache vkDestroyPipelineCache;\n    PFN_vkGetPipelineCacheData vkGetPipelineCacheData;\n    PFN_vkMergePipelineCaches vkMergePipelineCaches;\n    PFN_vkCreateComputePipelines vkCreateComputePipelines;\n    PFN_vkDestroyPipeline vkDestroyPipeline;\n    PFN_vkCreatePipelineLayout vkCreatePipelineLayout;\n    PFN_vkDestroyPipelineLayout vkDestroyPipelineLayout;\n    PFN_vkCreateSampler vkCreateSampler;\n    PFN_vkDestroySampler vkDestroySampler;\n    PFN_vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout;\n    PFN_vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout;\n    PFN_vkCreateDescriptorPool vkCreateDescriptorPool;\n    PFN_vkDestroyDescriptorPool vkDestroyDescriptorPool;\n    PFN_vkResetDescriptorPool vkResetDescriptorPool;\n    PFN_vkAllocateDescriptorSets vkAllocateDescriptorSets;\n    PFN_vkFreeDescriptorSets vkFreeDescriptorSets;\n    PFN_vkUpdateDescriptorSets vkUpdateDescriptorSets;\n    PFN_vkCmdBindPipeline vkCmdBindPipeline;\n    PFN_vkCmdBindDescriptorSets vkCmdBindDescriptorSets;\n    PFN_vkCmdClearColorImage vkCmdClearColorImage;\n    PFN_vkCmdDispatch vkCmdDispatch;\n    PFN_vkCmdDispatchIndirect vkCmdDispatchIndirect;\n    PFN_vkCmdSetEvent vkCmdSetEvent;\n    PFN_vkCmdResetEvent vkCmdResetEvent;\n    PFN_vkCmdWaitEvents vkCmdWaitEvents;\n    PFN_vkCmdPushConstants vkCmdPushConstants;\n    PFN_vkCreateGraphicsPipelines vkCreateGraphicsPipelines;\n    PFN_vkCreateFramebuffer vkCreateFramebuffer;\n    PFN_vkDestroyFramebuffer vkDestroyFramebuffer;\n    PFN_vkCreateRenderPass vkCreateRenderPass;\n    PFN_vkDestroyRenderPass vkDestroyRenderPass;\n    PFN_vkGetRenderAreaGranularity vkGetRenderAreaGranularity;\n    PFN_vkCmdSetViewport vkCmdSetViewport;\n    PFN_vkCmdSetScissor vkCmdSetScissor;\n    PFN_vkCmdSetLineWidth vkCmdSetLineWidth;\n    PFN_vkCmdSetDepthBias vkCmdSetDepthBias;\n    PFN_vkCmdSetBlendConstants vkCmdSetBlendConstants;\n    PFN_vkCmdSetDepthBounds vkCmdSetDepthBounds;\n    PFN_vkCmdSetStencilCompareMask vkCmdSetStencilCompareMask;\n    PFN_vkCmdSetStencilWriteMask vkCmdSetStencilWriteMask;\n    PFN_vkCmdSetStencilReference vkCmdSetStencilReference;\n    PFN_vkCmdBindIndexBuffer vkCmdBindIndexBuffer;\n    PFN_vkCmdBindVertexBuffers vkCmdBindVertexBuffers;\n    PFN_vkCmdDraw vkCmdDraw;\n    PFN_vkCmdDrawIndexed vkCmdDrawIndexed;\n    PFN_vkCmdDrawIndirect vkCmdDrawIndirect;\n    PFN_vkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirect;\n    PFN_vkCmdBlitImage vkCmdBlitImage;\n    PFN_vkCmdClearDepthStencilImage vkCmdClearDepthStencilImage;\n    PFN_vkCmdClearAttachments vkCmdClearAttachments;\n    PFN_vkCmdResolveImage vkCmdResolveImage;\n    PFN_vkCmdBeginRenderPass vkCmdBeginRenderPass;\n    PFN_vkCmdNextSubpass vkCmdNextSubpass;\n    PFN_vkCmdEndRenderPass vkCmdEndRenderPass;\n    PFN_vkEnumerateInstanceVersion vkEnumerateInstanceVersion;\n    PFN_vkBindBufferMemory2 vkBindBufferMemory2;\n    PFN_vkBindImageMemory2 vkBindImageMemory2;\n    PFN_vkGetDeviceGroupPeerMemoryFeatures vkGetDeviceGroupPeerMemoryFeatures;\n    PFN_vkCmdSetDeviceMask vkCmdSetDeviceMask;\n    PFN_vkEnumeratePhysicalDeviceGroups vkEnumeratePhysicalDeviceGroups;\n    PFN_vkGetImageMemoryRequirements2 vkGetImageMemoryRequirements2;\n    PFN_vkGetBufferMemoryRequirements2 vkGetBufferMemoryRequirements2;\n    PFN_vkGetImageSparseMemoryRequirements2 vkGetImageSparseMemoryRequirements2;\n    PFN_vkGetPhysicalDeviceFeatures2 vkGetPhysicalDeviceFeatures2;\n    PFN_vkGetPhysicalDeviceProperties2 vkGetPhysicalDeviceProperties2;\n    PFN_vkGetPhysicalDeviceFormatProperties2 vkGetPhysicalDeviceFormatProperties2;\n    PFN_vkGetPhysicalDeviceImageFormatProperties2 vkGetPhysicalDeviceImageFormatProperties2;\n    PFN_vkGetPhysicalDeviceQueueFamilyProperties2 vkGetPhysicalDeviceQueueFamilyProperties2;\n    PFN_vkGetPhysicalDeviceMemoryProperties2 vkGetPhysicalDeviceMemoryProperties2;\n    PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 vkGetPhysicalDeviceSparseImageFormatProperties2;\n    PFN_vkTrimCommandPool vkTrimCommandPool;\n    PFN_vkGetDeviceQueue2 vkGetDeviceQueue2;\n    PFN_vkGetPhysicalDeviceExternalBufferProperties vkGetPhysicalDeviceExternalBufferProperties;\n    PFN_vkGetPhysicalDeviceExternalFenceProperties vkGetPhysicalDeviceExternalFenceProperties;\n    PFN_vkGetPhysicalDeviceExternalSemaphoreProperties vkGetPhysicalDeviceExternalSemaphoreProperties;\n    PFN_vkCmdDispatchBase vkCmdDispatchBase;\n    PFN_vkCreateDescriptorUpdateTemplate vkCreateDescriptorUpdateTemplate;\n    PFN_vkDestroyDescriptorUpdateTemplate vkDestroyDescriptorUpdateTemplate;\n    PFN_vkUpdateDescriptorSetWithTemplate vkUpdateDescriptorSetWithTemplate;\n    PFN_vkGetDescriptorSetLayoutSupport vkGetDescriptorSetLayoutSupport;\n    PFN_vkCreateSamplerYcbcrConversion vkCreateSamplerYcbcrConversion;\n    PFN_vkDestroySamplerYcbcrConversion vkDestroySamplerYcbcrConversion;\n    PFN_vkResetQueryPool vkResetQueryPool;\n    PFN_vkGetSemaphoreCounterValue vkGetSemaphoreCounterValue;\n    PFN_vkWaitSemaphores vkWaitSemaphores;\n    PFN_vkSignalSemaphore vkSignalSemaphore;\n    PFN_vkGetBufferDeviceAddress vkGetBufferDeviceAddress;\n    PFN_vkGetBufferOpaqueCaptureAddress vkGetBufferOpaqueCaptureAddress;\n    PFN_vkGetDeviceMemoryOpaqueCaptureAddress vkGetDeviceMemoryOpaqueCaptureAddress;\n    PFN_vkCmdDrawIndirectCount vkCmdDrawIndirectCount;\n    PFN_vkCmdDrawIndexedIndirectCount vkCmdDrawIndexedIndirectCount;\n    PFN_vkCreateRenderPass2 vkCreateRenderPass2;\n    PFN_vkCmdBeginRenderPass2 vkCmdBeginRenderPass2;\n    PFN_vkCmdNextSubpass2 vkCmdNextSubpass2;\n    PFN_vkCmdEndRenderPass2 vkCmdEndRenderPass2;\n    PFN_vkGetPhysicalDeviceToolProperties vkGetPhysicalDeviceToolProperties;\n    PFN_vkCreatePrivateDataSlot vkCreatePrivateDataSlot;\n    PFN_vkDestroyPrivateDataSlot vkDestroyPrivateDataSlot;\n    PFN_vkSetPrivateData vkSetPrivateData;\n    PFN_vkGetPrivateData vkGetPrivateData;\n    PFN_vkCmdPipelineBarrier2 vkCmdPipelineBarrier2;\n    PFN_vkCmdWriteTimestamp2 vkCmdWriteTimestamp2;\n    PFN_vkQueueSubmit2 vkQueueSubmit2;\n    PFN_vkCmdCopyBuffer2 vkCmdCopyBuffer2;\n    PFN_vkCmdCopyImage2 vkCmdCopyImage2;\n    PFN_vkCmdCopyBufferToImage2 vkCmdCopyBufferToImage2;\n    PFN_vkCmdCopyImageToBuffer2 vkCmdCopyImageToBuffer2;\n    PFN_vkGetDeviceBufferMemoryRequirements vkGetDeviceBufferMemoryRequirements;\n    PFN_vkGetDeviceImageMemoryRequirements vkGetDeviceImageMemoryRequirements;\n    PFN_vkGetDeviceImageSparseMemoryRequirements vkGetDeviceImageSparseMemoryRequirements;\n    PFN_vkCmdSetEvent2 vkCmdSetEvent2;\n    PFN_vkCmdResetEvent2 vkCmdResetEvent2;\n    PFN_vkCmdWaitEvents2 vkCmdWaitEvents2;\n    PFN_vkCmdBlitImage2 vkCmdBlitImage2;\n    PFN_vkCmdResolveImage2 vkCmdResolveImage2;\n    PFN_vkCmdBeginRendering vkCmdBeginRendering;\n    PFN_vkCmdEndRendering vkCmdEndRendering;\n    PFN_vkCmdSetCullMode vkCmdSetCullMode;\n    PFN_vkCmdSetFrontFace vkCmdSetFrontFace;\n    PFN_vkCmdSetPrimitiveTopology vkCmdSetPrimitiveTopology;\n    PFN_vkCmdSetViewportWithCount vkCmdSetViewportWithCount;\n    PFN_vkCmdSetScissorWithCount vkCmdSetScissorWithCount;\n    PFN_vkCmdBindVertexBuffers2 vkCmdBindVertexBuffers2;\n    PFN_vkCmdSetDepthTestEnable vkCmdSetDepthTestEnable;\n    PFN_vkCmdSetDepthWriteEnable vkCmdSetDepthWriteEnable;\n    PFN_vkCmdSetDepthCompareOp vkCmdSetDepthCompareOp;\n    PFN_vkCmdSetDepthBoundsTestEnable vkCmdSetDepthBoundsTestEnable;\n    PFN_vkCmdSetStencilTestEnable vkCmdSetStencilTestEnable;\n    PFN_vkCmdSetStencilOp vkCmdSetStencilOp;\n    PFN_vkCmdSetRasterizerDiscardEnable vkCmdSetRasterizerDiscardEnable;\n    PFN_vkCmdSetDepthBiasEnable vkCmdSetDepthBiasEnable;\n    PFN_vkCmdSetPrimitiveRestartEnable vkCmdSetPrimitiveRestartEnable;\n    PFN_vkMapMemory2 vkMapMemory2;\n    PFN_vkUnmapMemory2 vkUnmapMemory2;\n    PFN_vkGetDeviceImageSubresourceLayout vkGetDeviceImageSubresourceLayout;\n    PFN_vkGetImageSubresourceLayout2 vkGetImageSubresourceLayout2;\n    PFN_vkCopyMemoryToImage vkCopyMemoryToImage;\n    PFN_vkCopyImageToMemory vkCopyImageToMemory;\n    PFN_vkCopyImageToImage vkCopyImageToImage;\n    PFN_vkTransitionImageLayout vkTransitionImageLayout;\n    PFN_vkCmdPushDescriptorSet vkCmdPushDescriptorSet;\n    PFN_vkCmdPushDescriptorSetWithTemplate vkCmdPushDescriptorSetWithTemplate;\n    PFN_vkCmdBindDescriptorSets2 vkCmdBindDescriptorSets2;\n    PFN_vkCmdPushConstants2 vkCmdPushConstants2;\n    PFN_vkCmdPushDescriptorSet2 vkCmdPushDescriptorSet2;\n    PFN_vkCmdPushDescriptorSetWithTemplate2 vkCmdPushDescriptorSetWithTemplate2;\n    PFN_vkCmdSetLineStipple vkCmdSetLineStipple;\n    PFN_vkCmdBindIndexBuffer2 vkCmdBindIndexBuffer2;\n    PFN_vkGetRenderingAreaGranularity vkGetRenderingAreaGranularity;\n    PFN_vkCmdSetRenderingAttachmentLocations vkCmdSetRenderingAttachmentLocations;\n    PFN_vkCmdSetRenderingInputAttachmentIndices vkCmdSetRenderingInputAttachmentIndices;\n    PFN_vkGetCommandPoolMemoryConsumption vkGetCommandPoolMemoryConsumption;\n    PFN_vkGetFaultData vkGetFaultData;\n    PFN_vkDestroySurfaceKHR vkDestroySurfaceKHR;\n    PFN_vkGetPhysicalDeviceSurfaceSupportKHR vkGetPhysicalDeviceSurfaceSupportKHR;\n    PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR vkGetPhysicalDeviceSurfaceCapabilitiesKHR;\n    PFN_vkGetPhysicalDeviceSurfaceFormatsKHR vkGetPhysicalDeviceSurfaceFormatsKHR;\n    PFN_vkGetPhysicalDeviceSurfacePresentModesKHR vkGetPhysicalDeviceSurfacePresentModesKHR;\n    PFN_vkCreateSwapchainKHR vkCreateSwapchainKHR;\n    PFN_vkDestroySwapchainKHR vkDestroySwapchainKHR;\n    PFN_vkGetSwapchainImagesKHR vkGetSwapchainImagesKHR;\n    PFN_vkAcquireNextImageKHR vkAcquireNextImageKHR;\n    PFN_vkQueuePresentKHR vkQueuePresentKHR;\n    PFN_vkGetDeviceGroupPresentCapabilitiesKHR vkGetDeviceGroupPresentCapabilitiesKHR;\n    PFN_vkGetDeviceGroupSurfacePresentModesKHR vkGetDeviceGroupSurfacePresentModesKHR;\n    PFN_vkGetPhysicalDevicePresentRectanglesKHR vkGetPhysicalDevicePresentRectanglesKHR;\n    PFN_vkAcquireNextImage2KHR vkAcquireNextImage2KHR;\n    PFN_vkGetPhysicalDeviceDisplayPropertiesKHR vkGetPhysicalDeviceDisplayPropertiesKHR;\n    PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR vkGetPhysicalDeviceDisplayPlanePropertiesKHR;\n    PFN_vkGetDisplayPlaneSupportedDisplaysKHR vkGetDisplayPlaneSupportedDisplaysKHR;\n    PFN_vkGetDisplayModePropertiesKHR vkGetDisplayModePropertiesKHR;\n    PFN_vkCreateDisplayModeKHR vkCreateDisplayModeKHR;\n    PFN_vkGetDisplayPlaneCapabilitiesKHR vkGetDisplayPlaneCapabilitiesKHR;\n    PFN_vkCreateDisplayPlaneSurfaceKHR vkCreateDisplayPlaneSurfaceKHR;\n    PFN_vkCreateSharedSwapchainsKHR vkCreateSharedSwapchainsKHR;\n    PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR vkGetPhysicalDeviceVideoCapabilitiesKHR;\n    PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR vkGetPhysicalDeviceVideoFormatPropertiesKHR;\n    PFN_vkCreateVideoSessionKHR vkCreateVideoSessionKHR;\n    PFN_vkDestroyVideoSessionKHR vkDestroyVideoSessionKHR;\n    PFN_vkGetVideoSessionMemoryRequirementsKHR vkGetVideoSessionMemoryRequirementsKHR;\n    PFN_vkBindVideoSessionMemoryKHR vkBindVideoSessionMemoryKHR;\n    PFN_vkCreateVideoSessionParametersKHR vkCreateVideoSessionParametersKHR;\n    PFN_vkUpdateVideoSessionParametersKHR vkUpdateVideoSessionParametersKHR;\n    PFN_vkDestroyVideoSessionParametersKHR vkDestroyVideoSessionParametersKHR;\n    PFN_vkCmdBeginVideoCodingKHR vkCmdBeginVideoCodingKHR;\n    PFN_vkCmdEndVideoCodingKHR vkCmdEndVideoCodingKHR;\n    PFN_vkCmdControlVideoCodingKHR vkCmdControlVideoCodingKHR;\n    PFN_vkCmdDecodeVideoKHR vkCmdDecodeVideoKHR;\n    PFN_vkCmdBindTransformFeedbackBuffersEXT vkCmdBindTransformFeedbackBuffersEXT;\n    PFN_vkCmdBeginTransformFeedbackEXT vkCmdBeginTransformFeedbackEXT;\n    PFN_vkCmdEndTransformFeedbackEXT vkCmdEndTransformFeedbackEXT;\n    PFN_vkCmdBeginQueryIndexedEXT vkCmdBeginQueryIndexedEXT;\n    PFN_vkCmdEndQueryIndexedEXT vkCmdEndQueryIndexedEXT;\n    PFN_vkCmdDrawIndirectByteCountEXT vkCmdDrawIndirectByteCountEXT;\n    PFN_vkCreateCuModuleNVX vkCreateCuModuleNVX;\n    PFN_vkCreateCuFunctionNVX vkCreateCuFunctionNVX;\n    PFN_vkDestroyCuModuleNVX vkDestroyCuModuleNVX;\n    PFN_vkDestroyCuFunctionNVX vkDestroyCuFunctionNVX;\n    PFN_vkCmdCuLaunchKernelNVX vkCmdCuLaunchKernelNVX;\n    PFN_vkGetImageViewHandleNVX vkGetImageViewHandleNVX;\n    PFN_vkGetImageViewHandle64NVX vkGetImageViewHandle64NVX;\n    PFN_vkGetImageViewAddressNVX vkGetImageViewAddressNVX;\n    PFN_vkGetDeviceCombinedImageSamplerIndexNVX vkGetDeviceCombinedImageSamplerIndexNVX;\n    PFN_vkGetShaderInfoAMD vkGetShaderInfoAMD;\n    PFN_vkCmdBeginRenderingKHR vkCmdBeginRenderingKHR;\n    PFN_vkCmdEndRenderingKHR vkCmdEndRenderingKHR;\n    PFN_vkGetPhysicalDeviceFeatures2KHR vkGetPhysicalDeviceFeatures2KHR;\n    PFN_vkGetPhysicalDeviceProperties2KHR vkGetPhysicalDeviceProperties2KHR;\n    PFN_vkGetPhysicalDeviceFormatProperties2KHR vkGetPhysicalDeviceFormatProperties2KHR;\n    PFN_vkGetPhysicalDeviceImageFormatProperties2KHR vkGetPhysicalDeviceImageFormatProperties2KHR;\n    PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR vkGetPhysicalDeviceQueueFamilyProperties2KHR;\n    PFN_vkGetPhysicalDeviceMemoryProperties2KHR vkGetPhysicalDeviceMemoryProperties2KHR;\n    PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR vkGetPhysicalDeviceSparseImageFormatProperties2KHR;\n    PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR vkGetDeviceGroupPeerMemoryFeaturesKHR;\n    PFN_vkCmdSetDeviceMaskKHR vkCmdSetDeviceMaskKHR;\n    PFN_vkCmdDispatchBaseKHR vkCmdDispatchBaseKHR;\n    PFN_vkTrimCommandPoolKHR vkTrimCommandPoolKHR;\n    PFN_vkEnumeratePhysicalDeviceGroupsKHR vkEnumeratePhysicalDeviceGroupsKHR;\n    PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR vkGetPhysicalDeviceExternalBufferPropertiesKHR;\n    PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV vkGetPhysicalDeviceExternalImageFormatPropertiesNV;\n    PFN_vkGetMemoryFdKHR vkGetMemoryFdKHR;\n    PFN_vkGetMemoryFdPropertiesKHR vkGetMemoryFdPropertiesKHR;\n    PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR vkGetPhysicalDeviceExternalSemaphorePropertiesKHR;\n    PFN_vkImportSemaphoreFdKHR vkImportSemaphoreFdKHR;\n    PFN_vkGetSemaphoreFdKHR vkGetSemaphoreFdKHR;\n    PFN_vkCmdPushDescriptorSetKHR vkCmdPushDescriptorSetKHR;\n    PFN_vkCmdPushDescriptorSetWithTemplateKHR vkCmdPushDescriptorSetWithTemplateKHR;\n    PFN_vkCmdBeginConditionalRenderingEXT vkCmdBeginConditionalRenderingEXT;\n    PFN_vkCmdEndConditionalRenderingEXT vkCmdEndConditionalRenderingEXT;\n    PFN_vkCreateDescriptorUpdateTemplateKHR vkCreateDescriptorUpdateTemplateKHR;\n    PFN_vkDestroyDescriptorUpdateTemplateKHR vkDestroyDescriptorUpdateTemplateKHR;\n    PFN_vkUpdateDescriptorSetWithTemplateKHR vkUpdateDescriptorSetWithTemplateKHR;\n    PFN_vkCmdSetViewportWScalingNV vkCmdSetViewportWScalingNV;\n    PFN_vkReleaseDisplayEXT vkReleaseDisplayEXT;\n    PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT vkGetPhysicalDeviceSurfaceCapabilities2EXT;\n    PFN_vkDisplayPowerControlEXT vkDisplayPowerControlEXT;\n    PFN_vkRegisterDeviceEventEXT vkRegisterDeviceEventEXT;\n    PFN_vkRegisterDisplayEventEXT vkRegisterDisplayEventEXT;\n    PFN_vkGetSwapchainCounterEXT vkGetSwapchainCounterEXT;\n    PFN_vkGetRefreshCycleDurationGOOGLE vkGetRefreshCycleDurationGOOGLE;\n    PFN_vkGetPastPresentationTimingGOOGLE vkGetPastPresentationTimingGOOGLE;\n    PFN_vkCmdSetDiscardRectangleEXT vkCmdSetDiscardRectangleEXT;\n    PFN_vkCmdSetDiscardRectangleEnableEXT vkCmdSetDiscardRectangleEnableEXT;\n    PFN_vkCmdSetDiscardRectangleModeEXT vkCmdSetDiscardRectangleModeEXT;\n    PFN_vkSetHdrMetadataEXT vkSetHdrMetadataEXT;\n    PFN_vkCreateRenderPass2KHR vkCreateRenderPass2KHR;\n    PFN_vkCmdBeginRenderPass2KHR vkCmdBeginRenderPass2KHR;\n    PFN_vkCmdNextSubpass2KHR vkCmdNextSubpass2KHR;\n    PFN_vkCmdEndRenderPass2KHR vkCmdEndRenderPass2KHR;\n    PFN_vkGetSwapchainStatusKHR vkGetSwapchainStatusKHR;\n    PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR vkGetPhysicalDeviceExternalFencePropertiesKHR;\n    PFN_vkImportFenceFdKHR vkImportFenceFdKHR;\n    PFN_vkGetFenceFdKHR vkGetFenceFdKHR;\n    PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR;\n    PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR;\n    PFN_vkAcquireProfilingLockKHR vkAcquireProfilingLockKHR;\n    PFN_vkReleaseProfilingLockKHR vkReleaseProfilingLockKHR;\n    PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR vkGetPhysicalDeviceSurfaceCapabilities2KHR;\n    PFN_vkGetPhysicalDeviceSurfaceFormats2KHR vkGetPhysicalDeviceSurfaceFormats2KHR;\n    PFN_vkGetPhysicalDeviceDisplayProperties2KHR vkGetPhysicalDeviceDisplayProperties2KHR;\n    PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR vkGetPhysicalDeviceDisplayPlaneProperties2KHR;\n    PFN_vkGetDisplayModeProperties2KHR vkGetDisplayModeProperties2KHR;\n    PFN_vkGetDisplayPlaneCapabilities2KHR vkGetDisplayPlaneCapabilities2KHR;\n    PFN_vkSetDebugUtilsObjectNameEXT vkSetDebugUtilsObjectNameEXT;\n    PFN_vkSetDebugUtilsObjectTagEXT vkSetDebugUtilsObjectTagEXT;\n    PFN_vkQueueBeginDebugUtilsLabelEXT vkQueueBeginDebugUtilsLabelEXT;\n    PFN_vkQueueEndDebugUtilsLabelEXT vkQueueEndDebugUtilsLabelEXT;\n    PFN_vkQueueInsertDebugUtilsLabelEXT vkQueueInsertDebugUtilsLabelEXT;\n    PFN_vkCmdBeginDebugUtilsLabelEXT vkCmdBeginDebugUtilsLabelEXT;\n    PFN_vkCmdEndDebugUtilsLabelEXT vkCmdEndDebugUtilsLabelEXT;\n    PFN_vkCmdInsertDebugUtilsLabelEXT vkCmdInsertDebugUtilsLabelEXT;\n    PFN_vkCreateDebugUtilsMessengerEXT vkCreateDebugUtilsMessengerEXT;\n    PFN_vkDestroyDebugUtilsMessengerEXT vkDestroyDebugUtilsMessengerEXT;\n    PFN_vkSubmitDebugUtilsMessageEXT vkSubmitDebugUtilsMessageEXT;\n    PFN_vkDebugMarkerSetObjectTagEXT vkDebugMarkerSetObjectTagEXT;\n    PFN_vkDebugMarkerSetObjectNameEXT vkDebugMarkerSetObjectNameEXT;\n    PFN_vkCmdDebugMarkerBeginEXT vkCmdDebugMarkerBeginEXT;\n    PFN_vkCmdDebugMarkerEndEXT vkCmdDebugMarkerEndEXT;\n    PFN_vkCmdDebugMarkerInsertEXT vkCmdDebugMarkerInsertEXT;\n    PFN_vkCreateDebugReportCallbackEXT vkCreateDebugReportCallbackEXT;\n    PFN_vkDestroyDebugReportCallbackEXT vkDestroyDebugReportCallbackEXT;\n    PFN_vkDebugReportMessageEXT vkDebugReportMessageEXT;\n    PFN_vkWriteSamplerDescriptorsEXT vkWriteSamplerDescriptorsEXT;\n    PFN_vkWriteResourceDescriptorsEXT vkWriteResourceDescriptorsEXT;\n    PFN_vkCmdBindSamplerHeapEXT vkCmdBindSamplerHeapEXT;\n    PFN_vkCmdBindResourceHeapEXT vkCmdBindResourceHeapEXT;\n    PFN_vkCmdPushDataEXT vkCmdPushDataEXT;\n    PFN_vkGetImageOpaqueCaptureDataEXT vkGetImageOpaqueCaptureDataEXT;\n    PFN_vkGetPhysicalDeviceDescriptorSizeEXT vkGetPhysicalDeviceDescriptorSizeEXT;\n    PFN_vkRegisterCustomBorderColorEXT vkRegisterCustomBorderColorEXT;\n    PFN_vkUnregisterCustomBorderColorEXT vkUnregisterCustomBorderColorEXT;\n    PFN_vkGetTensorOpaqueCaptureDataARM vkGetTensorOpaqueCaptureDataARM;\n    PFN_vkCmdSetSampleLocationsEXT vkCmdSetSampleLocationsEXT;\n    PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT vkGetPhysicalDeviceMultisamplePropertiesEXT;\n    PFN_vkGetImageMemoryRequirements2KHR vkGetImageMemoryRequirements2KHR;\n    PFN_vkGetBufferMemoryRequirements2KHR vkGetBufferMemoryRequirements2KHR;\n    PFN_vkGetImageSparseMemoryRequirements2KHR vkGetImageSparseMemoryRequirements2KHR;\n    PFN_vkCreateAccelerationStructureKHR vkCreateAccelerationStructureKHR;\n    PFN_vkDestroyAccelerationStructureKHR vkDestroyAccelerationStructureKHR;\n    PFN_vkCmdBuildAccelerationStructuresKHR vkCmdBuildAccelerationStructuresKHR;\n    PFN_vkCmdBuildAccelerationStructuresIndirectKHR vkCmdBuildAccelerationStructuresIndirectKHR;\n    PFN_vkBuildAccelerationStructuresKHR vkBuildAccelerationStructuresKHR;\n    PFN_vkCopyAccelerationStructureKHR vkCopyAccelerationStructureKHR;\n    PFN_vkCopyAccelerationStructureToMemoryKHR vkCopyAccelerationStructureToMemoryKHR;\n    PFN_vkCopyMemoryToAccelerationStructureKHR vkCopyMemoryToAccelerationStructureKHR;\n    PFN_vkWriteAccelerationStructuresPropertiesKHR vkWriteAccelerationStructuresPropertiesKHR;\n    PFN_vkCmdCopyAccelerationStructureKHR vkCmdCopyAccelerationStructureKHR;\n    PFN_vkCmdCopyAccelerationStructureToMemoryKHR vkCmdCopyAccelerationStructureToMemoryKHR;\n    PFN_vkCmdCopyMemoryToAccelerationStructureKHR vkCmdCopyMemoryToAccelerationStructureKHR;\n    PFN_vkGetAccelerationStructureDeviceAddressKHR vkGetAccelerationStructureDeviceAddressKHR;\n    PFN_vkCmdWriteAccelerationStructuresPropertiesKHR vkCmdWriteAccelerationStructuresPropertiesKHR;\n    PFN_vkGetDeviceAccelerationStructureCompatibilityKHR vkGetDeviceAccelerationStructureCompatibilityKHR;\n    PFN_vkGetAccelerationStructureBuildSizesKHR vkGetAccelerationStructureBuildSizesKHR;\n    PFN_vkCmdTraceRaysKHR vkCmdTraceRaysKHR;\n    PFN_vkCreateRayTracingPipelinesKHR vkCreateRayTracingPipelinesKHR;\n    PFN_vkGetRayTracingShaderGroupHandlesKHR vkGetRayTracingShaderGroupHandlesKHR;\n    PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR vkGetRayTracingCaptureReplayShaderGroupHandlesKHR;\n    PFN_vkCmdTraceRaysIndirectKHR vkCmdTraceRaysIndirectKHR;\n    PFN_vkGetRayTracingShaderGroupStackSizeKHR vkGetRayTracingShaderGroupStackSizeKHR;\n    PFN_vkCmdSetRayTracingPipelineStackSizeKHR vkCmdSetRayTracingPipelineStackSizeKHR;\n    PFN_vkCreateSamplerYcbcrConversionKHR vkCreateSamplerYcbcrConversionKHR;\n    PFN_vkDestroySamplerYcbcrConversionKHR vkDestroySamplerYcbcrConversionKHR;\n    PFN_vkBindBufferMemory2KHR vkBindBufferMemory2KHR;\n    PFN_vkBindImageMemory2KHR vkBindImageMemory2KHR;\n    PFN_vkGetImageDrmFormatModifierPropertiesEXT vkGetImageDrmFormatModifierPropertiesEXT;\n    PFN_vkCreateValidationCacheEXT vkCreateValidationCacheEXT;\n    PFN_vkDestroyValidationCacheEXT vkDestroyValidationCacheEXT;\n    PFN_vkMergeValidationCachesEXT vkMergeValidationCachesEXT;\n    PFN_vkGetValidationCacheDataEXT vkGetValidationCacheDataEXT;\n    PFN_vkCmdBindShadingRateImageNV vkCmdBindShadingRateImageNV;\n    PFN_vkCmdSetViewportShadingRatePaletteNV vkCmdSetViewportShadingRatePaletteNV;\n    PFN_vkCmdSetCoarseSampleOrderNV vkCmdSetCoarseSampleOrderNV;\n    PFN_vkCreateAccelerationStructureNV vkCreateAccelerationStructureNV;\n    PFN_vkDestroyAccelerationStructureNV vkDestroyAccelerationStructureNV;\n    PFN_vkGetAccelerationStructureMemoryRequirementsNV vkGetAccelerationStructureMemoryRequirementsNV;\n    PFN_vkBindAccelerationStructureMemoryNV vkBindAccelerationStructureMemoryNV;\n    PFN_vkCmdBuildAccelerationStructureNV vkCmdBuildAccelerationStructureNV;\n    PFN_vkCmdCopyAccelerationStructureNV vkCmdCopyAccelerationStructureNV;\n    PFN_vkCmdTraceRaysNV vkCmdTraceRaysNV;\n    PFN_vkCreateRayTracingPipelinesNV vkCreateRayTracingPipelinesNV;\n    PFN_vkGetRayTracingShaderGroupHandlesNV vkGetRayTracingShaderGroupHandlesNV;\n    PFN_vkGetAccelerationStructureHandleNV vkGetAccelerationStructureHandleNV;\n    PFN_vkCmdWriteAccelerationStructuresPropertiesNV vkCmdWriteAccelerationStructuresPropertiesNV;\n    PFN_vkCompileDeferredNV vkCompileDeferredNV;\n    PFN_vkGetDescriptorSetLayoutSupportKHR vkGetDescriptorSetLayoutSupportKHR;\n    PFN_vkCmdDrawIndirectCountKHR vkCmdDrawIndirectCountKHR;\n    PFN_vkCmdDrawIndexedIndirectCountKHR vkCmdDrawIndexedIndirectCountKHR;\n    PFN_vkCmdDrawIndirectCountAMD vkCmdDrawIndirectCountAMD;\n    PFN_vkCmdDrawIndexedIndirectCountAMD vkCmdDrawIndexedIndirectCountAMD;\n    PFN_vkGetMemoryHostPointerPropertiesEXT vkGetMemoryHostPointerPropertiesEXT;\n    PFN_vkCmdWriteBufferMarkerAMD vkCmdWriteBufferMarkerAMD;\n    PFN_vkCmdWriteBufferMarker2AMD vkCmdWriteBufferMarker2AMD;\n    PFN_vkCmdDrawMeshTasksNV vkCmdDrawMeshTasksNV;\n    PFN_vkCmdDrawMeshTasksIndirectNV vkCmdDrawMeshTasksIndirectNV;\n    PFN_vkCmdDrawMeshTasksIndirectCountNV vkCmdDrawMeshTasksIndirectCountNV;\n    PFN_vkCmdSetExclusiveScissorEnableNV vkCmdSetExclusiveScissorEnableNV;\n    PFN_vkCmdSetExclusiveScissorNV vkCmdSetExclusiveScissorNV;\n    PFN_vkCmdSetCheckpointNV vkCmdSetCheckpointNV;\n    PFN_vkGetQueueCheckpointDataNV vkGetQueueCheckpointDataNV;\n    PFN_vkGetQueueCheckpointData2NV vkGetQueueCheckpointData2NV;\n    PFN_vkGetSemaphoreCounterValueKHR vkGetSemaphoreCounterValueKHR;\n    PFN_vkWaitSemaphoresKHR vkWaitSemaphoresKHR;\n    PFN_vkSignalSemaphoreKHR vkSignalSemaphoreKHR;\n    PFN_vkSetSwapchainPresentTimingQueueSizeEXT vkSetSwapchainPresentTimingQueueSizeEXT;\n    PFN_vkGetSwapchainTimingPropertiesEXT vkGetSwapchainTimingPropertiesEXT;\n    PFN_vkGetSwapchainTimeDomainPropertiesEXT vkGetSwapchainTimeDomainPropertiesEXT;\n    PFN_vkGetPastPresentationTimingEXT vkGetPastPresentationTimingEXT;\n    PFN_vkInitializePerformanceApiINTEL vkInitializePerformanceApiINTEL;\n    PFN_vkUninitializePerformanceApiINTEL vkUninitializePerformanceApiINTEL;\n    PFN_vkCmdSetPerformanceMarkerINTEL vkCmdSetPerformanceMarkerINTEL;\n    PFN_vkCmdSetPerformanceStreamMarkerINTEL vkCmdSetPerformanceStreamMarkerINTEL;\n    PFN_vkCmdSetPerformanceOverrideINTEL vkCmdSetPerformanceOverrideINTEL;\n    PFN_vkAcquirePerformanceConfigurationINTEL vkAcquirePerformanceConfigurationINTEL;\n    PFN_vkReleasePerformanceConfigurationINTEL vkReleasePerformanceConfigurationINTEL;\n    PFN_vkQueueSetPerformanceConfigurationINTEL vkQueueSetPerformanceConfigurationINTEL;\n    PFN_vkGetPerformanceParameterINTEL vkGetPerformanceParameterINTEL;\n    PFN_vkSetLocalDimmingAMD vkSetLocalDimmingAMD;\n    PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR vkGetPhysicalDeviceFragmentShadingRatesKHR;\n    PFN_vkCmdSetFragmentShadingRateKHR vkCmdSetFragmentShadingRateKHR;\n    PFN_vkCmdSetRenderingAttachmentLocationsKHR vkCmdSetRenderingAttachmentLocationsKHR;\n    PFN_vkCmdSetRenderingInputAttachmentIndicesKHR vkCmdSetRenderingInputAttachmentIndicesKHR;\n    PFN_vkGetPhysicalDeviceToolPropertiesEXT vkGetPhysicalDeviceToolPropertiesEXT;\n    PFN_vkWaitForPresentKHR vkWaitForPresentKHR;\n    PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV vkGetPhysicalDeviceCooperativeMatrixPropertiesNV;\n    PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV;\n    PFN_vkCreateHeadlessSurfaceEXT vkCreateHeadlessSurfaceEXT;\n    PFN_vkGetBufferDeviceAddressKHR vkGetBufferDeviceAddressKHR;\n    PFN_vkGetBufferOpaqueCaptureAddressKHR vkGetBufferOpaqueCaptureAddressKHR;\n    PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR vkGetDeviceMemoryOpaqueCaptureAddressKHR;\n    PFN_vkGetBufferDeviceAddressEXT vkGetBufferDeviceAddressEXT;\n    PFN_vkResetQueryPoolEXT vkResetQueryPoolEXT;\n    PFN_vkCmdSetCullModeEXT vkCmdSetCullModeEXT;\n    PFN_vkCmdSetFrontFaceEXT vkCmdSetFrontFaceEXT;\n    PFN_vkCmdSetPrimitiveTopologyEXT vkCmdSetPrimitiveTopologyEXT;\n    PFN_vkCmdSetViewportWithCountEXT vkCmdSetViewportWithCountEXT;\n    PFN_vkCmdSetScissorWithCountEXT vkCmdSetScissorWithCountEXT;\n    PFN_vkCmdBindVertexBuffers2EXT vkCmdBindVertexBuffers2EXT;\n    PFN_vkCmdSetDepthTestEnableEXT vkCmdSetDepthTestEnableEXT;\n    PFN_vkCmdSetDepthWriteEnableEXT vkCmdSetDepthWriteEnableEXT;\n    PFN_vkCmdSetDepthCompareOpEXT vkCmdSetDepthCompareOpEXT;\n    PFN_vkCmdSetDepthBoundsTestEnableEXT vkCmdSetDepthBoundsTestEnableEXT;\n    PFN_vkCmdSetStencilTestEnableEXT vkCmdSetStencilTestEnableEXT;\n    PFN_vkCmdSetStencilOpEXT vkCmdSetStencilOpEXT;\n    PFN_vkCreateDeferredOperationKHR vkCreateDeferredOperationKHR;\n    PFN_vkDestroyDeferredOperationKHR vkDestroyDeferredOperationKHR;\n    PFN_vkGetDeferredOperationMaxConcurrencyKHR vkGetDeferredOperationMaxConcurrencyKHR;\n    PFN_vkGetDeferredOperationResultKHR vkGetDeferredOperationResultKHR;\n    PFN_vkDeferredOperationJoinKHR vkDeferredOperationJoinKHR;\n    PFN_vkGetPipelineExecutablePropertiesKHR vkGetPipelineExecutablePropertiesKHR;\n    PFN_vkGetPipelineExecutableStatisticsKHR vkGetPipelineExecutableStatisticsKHR;\n    PFN_vkGetPipelineExecutableInternalRepresentationsKHR vkGetPipelineExecutableInternalRepresentationsKHR;\n    PFN_vkCopyMemoryToImageEXT vkCopyMemoryToImageEXT;\n    PFN_vkCopyImageToMemoryEXT vkCopyImageToMemoryEXT;\n    PFN_vkCopyImageToImageEXT vkCopyImageToImageEXT;\n    PFN_vkTransitionImageLayoutEXT vkTransitionImageLayoutEXT;\n    PFN_vkGetImageSubresourceLayout2EXT vkGetImageSubresourceLayout2EXT;\n    PFN_vkMapMemory2KHR vkMapMemory2KHR;\n    PFN_vkUnmapMemory2KHR vkUnmapMemory2KHR;\n    PFN_vkGetGeneratedCommandsMemoryRequirementsNV vkGetGeneratedCommandsMemoryRequirementsNV;\n    PFN_vkCmdPreprocessGeneratedCommandsNV vkCmdPreprocessGeneratedCommandsNV;\n    PFN_vkCmdExecuteGeneratedCommandsNV vkCmdExecuteGeneratedCommandsNV;\n    PFN_vkCmdBindPipelineShaderGroupNV vkCmdBindPipelineShaderGroupNV;\n    PFN_vkCreateIndirectCommandsLayoutNV vkCreateIndirectCommandsLayoutNV;\n    PFN_vkDestroyIndirectCommandsLayoutNV vkDestroyIndirectCommandsLayoutNV;\n    PFN_vkCmdSetDepthBias2EXT vkCmdSetDepthBias2EXT;\n    PFN_vkAcquireDrmDisplayEXT vkAcquireDrmDisplayEXT;\n    PFN_vkGetDrmDisplayEXT vkGetDrmDisplayEXT;\n    PFN_vkCreatePrivateDataSlotEXT vkCreatePrivateDataSlotEXT;\n    PFN_vkDestroyPrivateDataSlotEXT vkDestroyPrivateDataSlotEXT;\n    PFN_vkSetPrivateDataEXT vkSetPrivateDataEXT;\n    PFN_vkGetPrivateDataEXT vkGetPrivateDataEXT;\n    PFN_vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR;\n    PFN_vkGetEncodedVideoSessionParametersKHR vkGetEncodedVideoSessionParametersKHR;\n    PFN_vkCmdEncodeVideoKHR vkCmdEncodeVideoKHR;\n    PFN_vkCmdRefreshObjectsKHR vkCmdRefreshObjectsKHR;\n    PFN_vkGetPhysicalDeviceRefreshableObjectTypesKHR vkGetPhysicalDeviceRefreshableObjectTypesKHR;\n    PFN_vkCmdDispatchTileQCOM vkCmdDispatchTileQCOM;\n    PFN_vkCmdBeginPerTileExecutionQCOM vkCmdBeginPerTileExecutionQCOM;\n    PFN_vkCmdEndPerTileExecutionQCOM vkCmdEndPerTileExecutionQCOM;\n    PFN_vkCmdSetEvent2KHR vkCmdSetEvent2KHR;\n    PFN_vkCmdResetEvent2KHR vkCmdResetEvent2KHR;\n    PFN_vkCmdWaitEvents2KHR vkCmdWaitEvents2KHR;\n    PFN_vkCmdPipelineBarrier2KHR vkCmdPipelineBarrier2KHR;\n    PFN_vkCmdWriteTimestamp2KHR vkCmdWriteTimestamp2KHR;\n    PFN_vkQueueSubmit2KHR vkQueueSubmit2KHR;\n    PFN_vkGetDescriptorSetLayoutSizeEXT vkGetDescriptorSetLayoutSizeEXT;\n    PFN_vkGetDescriptorSetLayoutBindingOffsetEXT vkGetDescriptorSetLayoutBindingOffsetEXT;\n    PFN_vkGetDescriptorEXT vkGetDescriptorEXT;\n    PFN_vkCmdBindDescriptorBuffersEXT vkCmdBindDescriptorBuffersEXT;\n    PFN_vkCmdSetDescriptorBufferOffsetsEXT vkCmdSetDescriptorBufferOffsetsEXT;\n    PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT vkCmdBindDescriptorBufferEmbeddedSamplersEXT;\n    PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT vkGetBufferOpaqueCaptureDescriptorDataEXT;\n    PFN_vkGetImageOpaqueCaptureDescriptorDataEXT vkGetImageOpaqueCaptureDescriptorDataEXT;\n    PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT vkGetImageViewOpaqueCaptureDescriptorDataEXT;\n    PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT vkGetSamplerOpaqueCaptureDescriptorDataEXT;\n    PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT;\n    PFN_vkCmdSetFragmentShadingRateEnumNV vkCmdSetFragmentShadingRateEnumNV;\n    PFN_vkCmdDrawMeshTasksEXT vkCmdDrawMeshTasksEXT;\n    PFN_vkCmdDrawMeshTasksIndirectEXT vkCmdDrawMeshTasksIndirectEXT;\n    PFN_vkCmdDrawMeshTasksIndirectCountEXT vkCmdDrawMeshTasksIndirectCountEXT;\n    PFN_vkCmdCopyBuffer2KHR vkCmdCopyBuffer2KHR;\n    PFN_vkCmdCopyImage2KHR vkCmdCopyImage2KHR;\n    PFN_vkCmdCopyBufferToImage2KHR vkCmdCopyBufferToImage2KHR;\n    PFN_vkCmdCopyImageToBuffer2KHR vkCmdCopyImageToBuffer2KHR;\n    PFN_vkCmdBlitImage2KHR vkCmdBlitImage2KHR;\n    PFN_vkCmdResolveImage2KHR vkCmdResolveImage2KHR;\n    PFN_vkGetDeviceFaultInfoEXT vkGetDeviceFaultInfoEXT;\n    PFN_vkCmdSetVertexInputEXT vkCmdSetVertexInputEXT;\n    PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI;\n    PFN_vkCmdSubpassShadingHUAWEI vkCmdSubpassShadingHUAWEI;\n    PFN_vkCmdBindInvocationMaskHUAWEI vkCmdBindInvocationMaskHUAWEI;\n    PFN_vkGetMemoryRemoteAddressNV vkGetMemoryRemoteAddressNV;\n    PFN_vkGetPipelinePropertiesEXT vkGetPipelinePropertiesEXT;\n    PFN_vkCmdSetPatchControlPointsEXT vkCmdSetPatchControlPointsEXT;\n    PFN_vkCmdSetRasterizerDiscardEnableEXT vkCmdSetRasterizerDiscardEnableEXT;\n    PFN_vkCmdSetDepthBiasEnableEXT vkCmdSetDepthBiasEnableEXT;\n    PFN_vkCmdSetLogicOpEXT vkCmdSetLogicOpEXT;\n    PFN_vkCmdSetPrimitiveRestartEnableEXT vkCmdSetPrimitiveRestartEnableEXT;\n    PFN_vkCmdSetColorWriteEnableEXT vkCmdSetColorWriteEnableEXT;\n    PFN_vkCmdTraceRaysIndirect2KHR vkCmdTraceRaysIndirect2KHR;\n    PFN_vkCmdDrawMultiEXT vkCmdDrawMultiEXT;\n    PFN_vkCmdDrawMultiIndexedEXT vkCmdDrawMultiIndexedEXT;\n    PFN_vkCreateMicromapEXT vkCreateMicromapEXT;\n    PFN_vkDestroyMicromapEXT vkDestroyMicromapEXT;\n    PFN_vkCmdBuildMicromapsEXT vkCmdBuildMicromapsEXT;\n    PFN_vkBuildMicromapsEXT vkBuildMicromapsEXT;\n    PFN_vkCopyMicromapEXT vkCopyMicromapEXT;\n    PFN_vkCopyMicromapToMemoryEXT vkCopyMicromapToMemoryEXT;\n    PFN_vkCopyMemoryToMicromapEXT vkCopyMemoryToMicromapEXT;\n    PFN_vkWriteMicromapsPropertiesEXT vkWriteMicromapsPropertiesEXT;\n    PFN_vkCmdCopyMicromapEXT vkCmdCopyMicromapEXT;\n    PFN_vkCmdCopyMicromapToMemoryEXT vkCmdCopyMicromapToMemoryEXT;\n    PFN_vkCmdCopyMemoryToMicromapEXT vkCmdCopyMemoryToMicromapEXT;\n    PFN_vkCmdWriteMicromapsPropertiesEXT vkCmdWriteMicromapsPropertiesEXT;\n    PFN_vkGetDeviceMicromapCompatibilityEXT vkGetDeviceMicromapCompatibilityEXT;\n    PFN_vkGetMicromapBuildSizesEXT vkGetMicromapBuildSizesEXT;\n    PFN_vkCmdDrawClusterHUAWEI vkCmdDrawClusterHUAWEI;\n    PFN_vkCmdDrawClusterIndirectHUAWEI vkCmdDrawClusterIndirectHUAWEI;\n    PFN_vkSetDeviceMemoryPriorityEXT vkSetDeviceMemoryPriorityEXT;\n    PFN_vkGetDeviceBufferMemoryRequirementsKHR vkGetDeviceBufferMemoryRequirementsKHR;\n    PFN_vkGetDeviceImageMemoryRequirementsKHR vkGetDeviceImageMemoryRequirementsKHR;\n    PFN_vkGetDeviceImageSparseMemoryRequirementsKHR vkGetDeviceImageSparseMemoryRequirementsKHR;\n    PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE vkGetDescriptorSetLayoutHostMappingInfoVALVE;\n    PFN_vkGetDescriptorSetHostMappingVALVE vkGetDescriptorSetHostMappingVALVE;\n    PFN_vkGetPipelineIndirectMemoryRequirementsNV vkGetPipelineIndirectMemoryRequirementsNV;\n    PFN_vkCmdUpdatePipelineIndirectBufferNV vkCmdUpdatePipelineIndirectBufferNV;\n    PFN_vkGetPipelineIndirectDeviceAddressNV vkGetPipelineIndirectDeviceAddressNV;\n    PFN_vkCmdSetDepthClampEnableEXT vkCmdSetDepthClampEnableEXT;\n    PFN_vkCmdSetPolygonModeEXT vkCmdSetPolygonModeEXT;\n    PFN_vkCmdSetRasterizationSamplesEXT vkCmdSetRasterizationSamplesEXT;\n    PFN_vkCmdSetSampleMaskEXT vkCmdSetSampleMaskEXT;\n    PFN_vkCmdSetAlphaToCoverageEnableEXT vkCmdSetAlphaToCoverageEnableEXT;\n    PFN_vkCmdSetAlphaToOneEnableEXT vkCmdSetAlphaToOneEnableEXT;\n    PFN_vkCmdSetLogicOpEnableEXT vkCmdSetLogicOpEnableEXT;\n    PFN_vkCmdSetColorBlendEnableEXT vkCmdSetColorBlendEnableEXT;\n    PFN_vkCmdSetColorBlendEquationEXT vkCmdSetColorBlendEquationEXT;\n    PFN_vkCmdSetColorWriteMaskEXT vkCmdSetColorWriteMaskEXT;\n    PFN_vkCmdSetTessellationDomainOriginEXT vkCmdSetTessellationDomainOriginEXT;\n    PFN_vkCmdSetRasterizationStreamEXT vkCmdSetRasterizationStreamEXT;\n    PFN_vkCmdSetConservativeRasterizationModeEXT vkCmdSetConservativeRasterizationModeEXT;\n    PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT vkCmdSetExtraPrimitiveOverestimationSizeEXT;\n    PFN_vkCmdSetDepthClipEnableEXT vkCmdSetDepthClipEnableEXT;\n    PFN_vkCmdSetSampleLocationsEnableEXT vkCmdSetSampleLocationsEnableEXT;\n    PFN_vkCmdSetColorBlendAdvancedEXT vkCmdSetColorBlendAdvancedEXT;\n    PFN_vkCmdSetProvokingVertexModeEXT vkCmdSetProvokingVertexModeEXT;\n    PFN_vkCmdSetLineRasterizationModeEXT vkCmdSetLineRasterizationModeEXT;\n    PFN_vkCmdSetLineStippleEnableEXT vkCmdSetLineStippleEnableEXT;\n    PFN_vkCmdSetDepthClipNegativeOneToOneEXT vkCmdSetDepthClipNegativeOneToOneEXT;\n    PFN_vkCmdSetViewportWScalingEnableNV vkCmdSetViewportWScalingEnableNV;\n    PFN_vkCmdSetViewportSwizzleNV vkCmdSetViewportSwizzleNV;\n    PFN_vkCmdSetCoverageToColorEnableNV vkCmdSetCoverageToColorEnableNV;\n    PFN_vkCmdSetCoverageToColorLocationNV vkCmdSetCoverageToColorLocationNV;\n    PFN_vkCmdSetCoverageModulationModeNV vkCmdSetCoverageModulationModeNV;\n    PFN_vkCmdSetCoverageModulationTableEnableNV vkCmdSetCoverageModulationTableEnableNV;\n    PFN_vkCmdSetCoverageModulationTableNV vkCmdSetCoverageModulationTableNV;\n    PFN_vkCmdSetShadingRateImageEnableNV vkCmdSetShadingRateImageEnableNV;\n    PFN_vkCmdSetRepresentativeFragmentTestEnableNV vkCmdSetRepresentativeFragmentTestEnableNV;\n    PFN_vkCmdSetCoverageReductionModeNV vkCmdSetCoverageReductionModeNV;\n    PFN_vkCreateTensorARM vkCreateTensorARM;\n    PFN_vkDestroyTensorARM vkDestroyTensorARM;\n    PFN_vkCreateTensorViewARM vkCreateTensorViewARM;\n    PFN_vkDestroyTensorViewARM vkDestroyTensorViewARM;\n    PFN_vkGetTensorMemoryRequirementsARM vkGetTensorMemoryRequirementsARM;\n    PFN_vkBindTensorMemoryARM vkBindTensorMemoryARM;\n    PFN_vkGetDeviceTensorMemoryRequirementsARM vkGetDeviceTensorMemoryRequirementsARM;\n    PFN_vkCmdCopyTensorARM vkCmdCopyTensorARM;\n    PFN_vkGetPhysicalDeviceExternalTensorPropertiesARM vkGetPhysicalDeviceExternalTensorPropertiesARM;\n    PFN_vkGetTensorOpaqueCaptureDescriptorDataARM vkGetTensorOpaqueCaptureDescriptorDataARM;\n    PFN_vkGetTensorViewOpaqueCaptureDescriptorDataARM vkGetTensorViewOpaqueCaptureDescriptorDataARM;\n    PFN_vkGetShaderModuleIdentifierEXT vkGetShaderModuleIdentifierEXT;\n    PFN_vkGetShaderModuleCreateInfoIdentifierEXT vkGetShaderModuleCreateInfoIdentifierEXT;\n    PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV vkGetPhysicalDeviceOpticalFlowImageFormatsNV;\n    PFN_vkCreateOpticalFlowSessionNV vkCreateOpticalFlowSessionNV;\n    PFN_vkDestroyOpticalFlowSessionNV vkDestroyOpticalFlowSessionNV;\n    PFN_vkBindOpticalFlowSessionImageNV vkBindOpticalFlowSessionImageNV;\n    PFN_vkCmdOpticalFlowExecuteNV vkCmdOpticalFlowExecuteNV;\n    PFN_vkCmdBindIndexBuffer2KHR vkCmdBindIndexBuffer2KHR;\n    PFN_vkGetRenderingAreaGranularityKHR vkGetRenderingAreaGranularityKHR;\n    PFN_vkGetDeviceImageSubresourceLayoutKHR vkGetDeviceImageSubresourceLayoutKHR;\n    PFN_vkGetImageSubresourceLayout2KHR vkGetImageSubresourceLayout2KHR;\n    PFN_vkAntiLagUpdateAMD vkAntiLagUpdateAMD;\n    PFN_vkWaitForPresent2KHR vkWaitForPresent2KHR;\n    PFN_vkCreateShadersEXT vkCreateShadersEXT;\n    PFN_vkDestroyShaderEXT vkDestroyShaderEXT;\n    PFN_vkGetShaderBinaryDataEXT vkGetShaderBinaryDataEXT;\n    PFN_vkCmdBindShadersEXT vkCmdBindShadersEXT;\n    PFN_vkCmdSetDepthClampRangeEXT vkCmdSetDepthClampRangeEXT;\n    PFN_vkCreatePipelineBinariesKHR vkCreatePipelineBinariesKHR;\n    PFN_vkDestroyPipelineBinaryKHR vkDestroyPipelineBinaryKHR;\n    PFN_vkGetPipelineKeyKHR vkGetPipelineKeyKHR;\n    PFN_vkGetPipelineBinaryDataKHR vkGetPipelineBinaryDataKHR;\n    PFN_vkReleaseCapturedPipelineDataKHR vkReleaseCapturedPipelineDataKHR;\n    PFN_vkGetFramebufferTilePropertiesQCOM vkGetFramebufferTilePropertiesQCOM;\n    PFN_vkGetDynamicRenderingTilePropertiesQCOM vkGetDynamicRenderingTilePropertiesQCOM;\n    PFN_vkReleaseSwapchainImagesKHR vkReleaseSwapchainImagesKHR;\n    PFN_vkReleaseSwapchainImagesEXT vkReleaseSwapchainImagesEXT;\n    PFN_vkGetPhysicalDeviceCooperativeVectorPropertiesNV vkGetPhysicalDeviceCooperativeVectorPropertiesNV;\n    PFN_vkConvertCooperativeVectorMatrixNV vkConvertCooperativeVectorMatrixNV;\n    PFN_vkCmdConvertCooperativeVectorMatrixNV vkCmdConvertCooperativeVectorMatrixNV;\n    PFN_vkSetLatencySleepModeNV vkSetLatencySleepModeNV;\n    PFN_vkLatencySleepNV vkLatencySleepNV;\n    PFN_vkSetLatencyMarkerNV vkSetLatencyMarkerNV;\n    PFN_vkGetLatencyTimingsNV vkGetLatencyTimingsNV;\n    PFN_vkQueueNotifyOutOfBandNV vkQueueNotifyOutOfBandNV;\n    PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR;\n    PFN_vkCreateDataGraphPipelinesARM vkCreateDataGraphPipelinesARM;\n    PFN_vkCreateDataGraphPipelineSessionARM vkCreateDataGraphPipelineSessionARM;\n    PFN_vkGetDataGraphPipelineSessionBindPointRequirementsARM vkGetDataGraphPipelineSessionBindPointRequirementsARM;\n    PFN_vkGetDataGraphPipelineSessionMemoryRequirementsARM vkGetDataGraphPipelineSessionMemoryRequirementsARM;\n    PFN_vkBindDataGraphPipelineSessionMemoryARM vkBindDataGraphPipelineSessionMemoryARM;\n    PFN_vkDestroyDataGraphPipelineSessionARM vkDestroyDataGraphPipelineSessionARM;\n    PFN_vkCmdDispatchDataGraphARM vkCmdDispatchDataGraphARM;\n    PFN_vkGetDataGraphPipelineAvailablePropertiesARM vkGetDataGraphPipelineAvailablePropertiesARM;\n    PFN_vkGetDataGraphPipelinePropertiesARM vkGetDataGraphPipelinePropertiesARM;\n    PFN_vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM;\n    PFN_vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM;\n    PFN_vkCmdSetAttachmentFeedbackLoopEnableEXT vkCmdSetAttachmentFeedbackLoopEnableEXT;\n    PFN_vkCmdSetLineStippleKHR vkCmdSetLineStippleKHR;\n    PFN_vkCmdSetLineStippleEXT vkCmdSetLineStippleEXT;\n    PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsKHR vkGetPhysicalDeviceCalibrateableTimeDomainsKHR;\n    PFN_vkGetCalibratedTimestampsKHR vkGetCalibratedTimestampsKHR;\n    PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT vkGetPhysicalDeviceCalibrateableTimeDomainsEXT;\n    PFN_vkGetCalibratedTimestampsEXT vkGetCalibratedTimestampsEXT;\n    PFN_vkCmdBindDescriptorSets2KHR vkCmdBindDescriptorSets2KHR;\n    PFN_vkCmdPushConstants2KHR vkCmdPushConstants2KHR;\n    PFN_vkCmdPushDescriptorSet2KHR vkCmdPushDescriptorSet2KHR;\n    PFN_vkCmdPushDescriptorSetWithTemplate2KHR vkCmdPushDescriptorSetWithTemplate2KHR;\n    PFN_vkCmdSetDescriptorBufferOffsets2EXT vkCmdSetDescriptorBufferOffsets2EXT;\n    PFN_vkCmdBindDescriptorBufferEmbeddedSamplers2EXT vkCmdBindDescriptorBufferEmbeddedSamplers2EXT;\n    PFN_vkCmdBindTileMemoryQCOM vkCmdBindTileMemoryQCOM;\n    PFN_vkCmdCopyMemoryIndirectKHR vkCmdCopyMemoryIndirectKHR;\n    PFN_vkCmdCopyMemoryToImageIndirectKHR vkCmdCopyMemoryToImageIndirectKHR;\n    PFN_vkCmdCopyMemoryIndirectNV vkCmdCopyMemoryIndirectNV;\n    PFN_vkCmdCopyMemoryToImageIndirectNV vkCmdCopyMemoryToImageIndirectNV;\n    PFN_vkCmdDecompressMemoryEXT vkCmdDecompressMemoryEXT;\n    PFN_vkCmdDecompressMemoryIndirectCountEXT vkCmdDecompressMemoryIndirectCountEXT;\n    PFN_vkCmdDecompressMemoryNV vkCmdDecompressMemoryNV;\n    PFN_vkCmdDecompressMemoryIndirectCountNV vkCmdDecompressMemoryIndirectCountNV;\n    PFN_vkCreateExternalComputeQueueNV vkCreateExternalComputeQueueNV;\n    PFN_vkDestroyExternalComputeQueueNV vkDestroyExternalComputeQueueNV;\n    PFN_vkGetExternalComputeQueueDataNV vkGetExternalComputeQueueDataNV;\n    PFN_vkGetClusterAccelerationStructureBuildSizesNV vkGetClusterAccelerationStructureBuildSizesNV;\n    PFN_vkCmdBuildClusterAccelerationStructureIndirectNV vkCmdBuildClusterAccelerationStructureIndirectNV;\n    PFN_vkGetPartitionedAccelerationStructuresBuildSizesNV vkGetPartitionedAccelerationStructuresBuildSizesNV;\n    PFN_vkCmdBuildPartitionedAccelerationStructuresNV vkCmdBuildPartitionedAccelerationStructuresNV;\n    PFN_vkGetGeneratedCommandsMemoryRequirementsEXT vkGetGeneratedCommandsMemoryRequirementsEXT;\n    PFN_vkCmdPreprocessGeneratedCommandsEXT vkCmdPreprocessGeneratedCommandsEXT;\n    PFN_vkCmdExecuteGeneratedCommandsEXT vkCmdExecuteGeneratedCommandsEXT;\n    PFN_vkCreateIndirectCommandsLayoutEXT vkCreateIndirectCommandsLayoutEXT;\n    PFN_vkDestroyIndirectCommandsLayoutEXT vkDestroyIndirectCommandsLayoutEXT;\n    PFN_vkCreateIndirectExecutionSetEXT vkCreateIndirectExecutionSetEXT;\n    PFN_vkDestroyIndirectExecutionSetEXT vkDestroyIndirectExecutionSetEXT;\n    PFN_vkUpdateIndirectExecutionSetPipelineEXT vkUpdateIndirectExecutionSetPipelineEXT;\n    PFN_vkUpdateIndirectExecutionSetShaderEXT vkUpdateIndirectExecutionSetShaderEXT;\n    PFN_vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV;\n    PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM;\n    PFN_vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM;\n    PFN_vkCreateShaderInstrumentationARM vkCreateShaderInstrumentationARM;\n    PFN_vkDestroyShaderInstrumentationARM vkDestroyShaderInstrumentationARM;\n    PFN_vkCmdBeginShaderInstrumentationARM vkCmdBeginShaderInstrumentationARM;\n    PFN_vkCmdEndShaderInstrumentationARM vkCmdEndShaderInstrumentationARM;\n    PFN_vkGetShaderInstrumentationValuesARM vkGetShaderInstrumentationValuesARM;\n    PFN_vkClearShaderInstrumentationMetricsARM vkClearShaderInstrumentationMetricsARM;\n    PFN_vkCmdEndRendering2EXT vkCmdEndRendering2EXT;\n    PFN_vkCmdBeginCustomResolveEXT vkCmdBeginCustomResolveEXT;\n    PFN_vkCmdEndRendering2KHR vkCmdEndRendering2KHR;\n    PFN_vkCmdSetComputeOccupancyPriorityNV vkCmdSetComputeOccupancyPriorityNV;\n#ifdef VK_USE_PLATFORM_XLIB_KHR\n    PFN_vkCreateXlibSurfaceKHR vkCreateXlibSurfaceKHR;\n    PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR vkGetPhysicalDeviceXlibPresentationSupportKHR;\n#endif /*VK_USE_PLATFORM_XLIB_KHR*/\n#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT\n    PFN_vkAcquireXlibDisplayEXT vkAcquireXlibDisplayEXT;\n    PFN_vkGetRandROutputDisplayEXT vkGetRandROutputDisplayEXT;\n#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/\n#ifdef VK_USE_PLATFORM_XCB_KHR\n    PFN_vkCreateXcbSurfaceKHR vkCreateXcbSurfaceKHR;\n    PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR vkGetPhysicalDeviceXcbPresentationSupportKHR;\n#endif /*VK_USE_PLATFORM_XCB_KHR*/\n#ifdef VK_USE_PLATFORM_WAYLAND_KHR\n    PFN_vkCreateWaylandSurfaceKHR vkCreateWaylandSurfaceKHR;\n    PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR vkGetPhysicalDeviceWaylandPresentationSupportKHR;\n#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/\n#ifdef VK_USE_PLATFORM_UBM_SEC\n    PFN_vkCreateUbmSurfaceSEC vkCreateUbmSurfaceSEC;\n    PFN_vkGetPhysicalDeviceUbmPresentationSupportSEC vkGetPhysicalDeviceUbmPresentationSupportSEC;\n#endif /*VK_USE_PLATFORM_UBM_SEC*/\n#ifdef VK_USE_PLATFORM_DIRECTFB_EXT\n    PFN_vkCreateDirectFBSurfaceEXT vkCreateDirectFBSurfaceEXT;\n    PFN_vkGetPhysicalDeviceDirectFBPresentationSupportEXT vkGetPhysicalDeviceDirectFBPresentationSupportEXT;\n#endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/\n#ifdef VK_USE_PLATFORM_ANDROID_KHR\n    PFN_vkCreateAndroidSurfaceKHR vkCreateAndroidSurfaceKHR;\n    PFN_vkGetAndroidHardwareBufferPropertiesANDROID vkGetAndroidHardwareBufferPropertiesANDROID;\n    PFN_vkGetMemoryAndroidHardwareBufferANDROID vkGetMemoryAndroidHardwareBufferANDROID;\n#endif /*VK_USE_PLATFORM_ANDROID_KHR*/\n#ifdef VK_USE_PLATFORM_WIN32_KHR\n    PFN_vkCreateWin32SurfaceKHR vkCreateWin32SurfaceKHR;\n    PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR vkGetPhysicalDeviceWin32PresentationSupportKHR;\n    PFN_vkGetMemoryWin32HandleKHR vkGetMemoryWin32HandleKHR;\n    PFN_vkGetMemoryWin32HandlePropertiesKHR vkGetMemoryWin32HandlePropertiesKHR;\n    PFN_vkGetMemoryWin32HandleNV vkGetMemoryWin32HandleNV;\n    PFN_vkImportSemaphoreWin32HandleKHR vkImportSemaphoreWin32HandleKHR;\n    PFN_vkGetSemaphoreWin32HandleKHR vkGetSemaphoreWin32HandleKHR;\n    PFN_vkImportFenceWin32HandleKHR vkImportFenceWin32HandleKHR;\n    PFN_vkGetFenceWin32HandleKHR vkGetFenceWin32HandleKHR;\n    PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT vkGetPhysicalDeviceSurfacePresentModes2EXT;\n    PFN_vkAcquireFullScreenExclusiveModeEXT vkAcquireFullScreenExclusiveModeEXT;\n    PFN_vkReleaseFullScreenExclusiveModeEXT vkReleaseFullScreenExclusiveModeEXT;\n    PFN_vkGetDeviceGroupSurfacePresentModes2EXT vkGetDeviceGroupSurfacePresentModes2EXT;\n    PFN_vkAcquireWinrtDisplayNV vkAcquireWinrtDisplayNV;\n    PFN_vkGetWinrtDisplayNV vkGetWinrtDisplayNV;\n#endif /*VK_USE_PLATFORM_WIN32_KHR*/\n#ifdef VK_USE_PLATFORM_VI_NN\n    PFN_vkCreateViSurfaceNN vkCreateViSurfaceNN;\n#endif /*VK_USE_PLATFORM_VI_NN*/\n#ifdef VK_USE_PLATFORM_IOS_MVK\n    PFN_vkCreateIOSSurfaceMVK vkCreateIOSSurfaceMVK;\n#endif /*VK_USE_PLATFORM_IOS_MVK*/\n#ifdef VK_USE_PLATFORM_MACOS_MVK\n    PFN_vkCreateMacOSSurfaceMVK vkCreateMacOSSurfaceMVK;\n#endif /*VK_USE_PLATFORM_MACOS_MVK*/\n#ifdef VK_USE_PLATFORM_METAL_EXT\n    PFN_vkCreateMetalSurfaceEXT vkCreateMetalSurfaceEXT;\n    PFN_vkExportMetalObjectsEXT vkExportMetalObjectsEXT;\n    PFN_vkGetMemoryMetalHandleEXT vkGetMemoryMetalHandleEXT;\n    PFN_vkGetMemoryMetalHandlePropertiesEXT vkGetMemoryMetalHandlePropertiesEXT;\n#endif /*VK_USE_PLATFORM_METAL_EXT*/\n#ifdef VK_USE_PLATFORM_FUCHSIA\n    PFN_vkCreateImagePipeSurfaceFUCHSIA vkCreateImagePipeSurfaceFUCHSIA;\n    PFN_vkGetMemoryZirconHandleFUCHSIA vkGetMemoryZirconHandleFUCHSIA;\n    PFN_vkGetMemoryZirconHandlePropertiesFUCHSIA vkGetMemoryZirconHandlePropertiesFUCHSIA;\n    PFN_vkImportSemaphoreZirconHandleFUCHSIA vkImportSemaphoreZirconHandleFUCHSIA;\n    PFN_vkGetSemaphoreZirconHandleFUCHSIA vkGetSemaphoreZirconHandleFUCHSIA;\n    PFN_vkCreateBufferCollectionFUCHSIA vkCreateBufferCollectionFUCHSIA;\n    PFN_vkSetBufferCollectionImageConstraintsFUCHSIA vkSetBufferCollectionImageConstraintsFUCHSIA;\n    PFN_vkSetBufferCollectionBufferConstraintsFUCHSIA vkSetBufferCollectionBufferConstraintsFUCHSIA;\n    PFN_vkDestroyBufferCollectionFUCHSIA vkDestroyBufferCollectionFUCHSIA;\n    PFN_vkGetBufferCollectionPropertiesFUCHSIA vkGetBufferCollectionPropertiesFUCHSIA;\n#endif /*VK_USE_PLATFORM_FUCHSIA*/\n#ifdef VK_USE_PLATFORM_GGP\n    PFN_vkCreateStreamDescriptorSurfaceGGP vkCreateStreamDescriptorSurfaceGGP;\n#endif /*VK_USE_PLATFORM_GGP*/\n#ifdef VK_USE_PLATFORM_SCI\n    PFN_vkGetMemorySciBufNV vkGetMemorySciBufNV;\n    PFN_vkGetPhysicalDeviceExternalMemorySciBufPropertiesNV vkGetPhysicalDeviceExternalMemorySciBufPropertiesNV;\n    PFN_vkGetPhysicalDeviceSciBufAttributesNV vkGetPhysicalDeviceSciBufAttributesNV;\n    PFN_vkCreateSemaphoreSciSyncPoolNV vkCreateSemaphoreSciSyncPoolNV;\n    PFN_vkDestroySemaphoreSciSyncPoolNV vkDestroySemaphoreSciSyncPoolNV;\n    PFN_vkGetFenceSciSyncFenceNV vkGetFenceSciSyncFenceNV;\n    PFN_vkGetFenceSciSyncObjNV vkGetFenceSciSyncObjNV;\n    PFN_vkImportFenceSciSyncFenceNV vkImportFenceSciSyncFenceNV;\n    PFN_vkImportFenceSciSyncObjNV vkImportFenceSciSyncObjNV;\n    PFN_vkGetPhysicalDeviceSciSyncAttributesNV vkGetPhysicalDeviceSciSyncAttributesNV;\n    PFN_vkGetSemaphoreSciSyncObjNV vkGetSemaphoreSciSyncObjNV;\n    PFN_vkImportSemaphoreSciSyncObjNV vkImportSemaphoreSciSyncObjNV;\n#endif /*VK_USE_PLATFORM_SCI*/\n#ifdef VK_ENABLE_BETA_EXTENSIONS\n    PFN_vkCreateExecutionGraphPipelinesAMDX vkCreateExecutionGraphPipelinesAMDX;\n    PFN_vkGetExecutionGraphPipelineScratchSizeAMDX vkGetExecutionGraphPipelineScratchSizeAMDX;\n    PFN_vkGetExecutionGraphPipelineNodeIndexAMDX vkGetExecutionGraphPipelineNodeIndexAMDX;\n    PFN_vkCmdInitializeGraphScratchMemoryAMDX vkCmdInitializeGraphScratchMemoryAMDX;\n    PFN_vkCmdDispatchGraphAMDX vkCmdDispatchGraphAMDX;\n    PFN_vkCmdDispatchGraphIndirectAMDX vkCmdDispatchGraphIndirectAMDX;\n    PFN_vkCmdDispatchGraphIndirectCountAMDX vkCmdDispatchGraphIndirectCountAMDX;\n    PFN_vkCreateCudaModuleNV vkCreateCudaModuleNV;\n    PFN_vkGetCudaModuleCacheNV vkGetCudaModuleCacheNV;\n    PFN_vkCreateCudaFunctionNV vkCreateCudaFunctionNV;\n    PFN_vkDestroyCudaModuleNV vkDestroyCudaModuleNV;\n    PFN_vkDestroyCudaFunctionNV vkDestroyCudaFunctionNV;\n    PFN_vkCmdCudaLaunchKernelNV vkCmdCudaLaunchKernelNV;\n#endif /*VK_ENABLE_BETA_EXTENSIONS*/\n#ifdef VK_USE_PLATFORM_SCREEN_QNX\n    PFN_vkCreateScreenSurfaceQNX vkCreateScreenSurfaceQNX;\n    PFN_vkGetPhysicalDeviceScreenPresentationSupportQNX vkGetPhysicalDeviceScreenPresentationSupportQNX;\n    PFN_vkGetScreenBufferPropertiesQNX vkGetScreenBufferPropertiesQNX;\n#endif /*VK_USE_PLATFORM_SCREEN_QNX*/\n#ifdef VK_USE_PLATFORM_OHOS\n    PFN_vkGetNativeBufferPropertiesOHOS vkGetNativeBufferPropertiesOHOS;\n    PFN_vkGetMemoryNativeBufferOHOS vkGetMemoryNativeBufferOHOS;\n    PFN_vkCreateSurfaceOHOS vkCreateSurfaceOHOS;\n#endif /*VK_USE_PLATFORM_OHOS*/\n} VkbAPI;\n\n\n/*\nInitializes vkbind and attempts to load APIs statically.\n\nNote that it should be expected that APIs are not necessarilly statically implemented on every platform. This function\nwill reliably load the following APIs (assuming platform support for the relevant version of Vulkan):\n\nVulkan 1.0\n    vkGetInstanceProcAddr\n    vkCreateInstance\n    vkEnumerateInstanceExtensionProperties\n    vkEnumerateInstanceLayerProperties\nVulkan 1.0\n    vkGetInstanceProcAddr\nVulkan 1.0\n    vkGetInstanceProcAddr\nVulkan 1.0\n    vkGetInstanceProcAddr\nVulkan 1.1\n    vkEnumerateInstanceVersion\nVulkan 1.1\n\nVulkan 1.1\n\nVulkan 1.1\n\nVulkan 1.2\n\nVulkan 1.2\n\nVulkan 1.2\n\nVulkan 1.2\n\nVulkan 1.3\n\nVulkan 1.3\n\nVulkan 1.3\n\nVulkan 1.3\n\nVulkan 1.4\n\nVulkan 1.4\n\nVulkan 1.4\n\nVulkan 1.4\n\nVulkan 1.0\n    vkGetInstanceProcAddr\n\nvkbInit() will attempt to load every API statically, but for robustness you should not assume this will be successful.\nYou should instead use vkCreateInstance() to create a Vulkan instance, then parse that to vkbInitInstanceAPI() and use\nvkbBindInstanceAPI() if you want to bind the instance API to global scope.\n\npAPI is optional. On output it will contain pointers to all Vulkan APIs found by the loader.\n*/\nVkResult vkbInit(VkbAPI* pAPI);\n\n/*\nUninitializes vkbind.\n\nEach call to vkbInit() must be matched up with a call to vkbUninit().\n*/\nvoid vkbUninit(void);\n\n/*\nLoads per-instance function pointers into the specified API object.\n\nThis does not bind the function pointers to global scope. Use vkbBindAPI() for this.\n*/\nVkResult vkbInitInstanceAPI(VkInstance instance, VkbAPI* pAPI);\n\n/*\nLoads per-device function pointers into the specified API object.\n\nThis does not bind the function pointers to global scope. Use vkbBindAPI() for this.\n\nThis function only sets device-specific function pointers. The proper way to use this function is to first call\nvkbInitInstanceAPI() first, then call vkbInitDeviceAPI() using the same VkbAPI object, like the following.\n\n    VkbAPI api;\n    vkbInitInstanceAPI(instance, &api);\n    vkbInitDeviceAPI(device, &api);\n    vkbBindAPI(&api);   // <-- Optional. Can also call function pointers directly from the \"api\" object.\n    \nUse of this function is optional. It is provided only for optimization purposes to avoid the cost of internal dispatching.\n*/\nVkResult vkbInitDeviceAPI(VkDevice device, VkbAPI* pAPI);\n\n/*\nBinds the function pointers in pAPI to global scope.\n*/\nVkResult vkbBindAPI(const VkbAPI* pAPI);\n\n#ifdef __cplusplus\n}\n#endif\n#endif  /* VKBIND_H */\n\n\n\n/******************************************************************************\n ******************************************************************************\n\n IMPLEMENTATION\n\n ******************************************************************************\n ******************************************************************************/\n#ifdef VKBIND_IMPLEMENTATION\n#ifdef _WIN32\n#include <windows.h>\n#else\n#include <unistd.h>\n#include <dlfcn.h>\n#endif\n\n#ifndef VKBIND_NO_GLOBAL_API\nPFN_vkCreateInstance vkCreateInstance;\nPFN_vkDestroyInstance vkDestroyInstance;\nPFN_vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices;\nPFN_vkGetPhysicalDeviceFeatures vkGetPhysicalDeviceFeatures;\nPFN_vkGetPhysicalDeviceFormatProperties vkGetPhysicalDeviceFormatProperties;\nPFN_vkGetPhysicalDeviceImageFormatProperties vkGetPhysicalDeviceImageFormatProperties;\nPFN_vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties;\nPFN_vkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties;\nPFN_vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties;\nPFN_vkGetInstanceProcAddr vkGetInstanceProcAddr;\nPFN_vkGetDeviceProcAddr vkGetDeviceProcAddr;\nPFN_vkCreateDevice vkCreateDevice;\nPFN_vkDestroyDevice vkDestroyDevice;\nPFN_vkEnumerateInstanceExtensionProperties vkEnumerateInstanceExtensionProperties;\nPFN_vkEnumerateDeviceExtensionProperties vkEnumerateDeviceExtensionProperties;\nPFN_vkEnumerateInstanceLayerProperties vkEnumerateInstanceLayerProperties;\nPFN_vkEnumerateDeviceLayerProperties vkEnumerateDeviceLayerProperties;\nPFN_vkGetDeviceQueue vkGetDeviceQueue;\nPFN_vkQueueSubmit vkQueueSubmit;\nPFN_vkQueueWaitIdle vkQueueWaitIdle;\nPFN_vkDeviceWaitIdle vkDeviceWaitIdle;\nPFN_vkAllocateMemory vkAllocateMemory;\nPFN_vkFreeMemory vkFreeMemory;\nPFN_vkMapMemory vkMapMemory;\nPFN_vkUnmapMemory vkUnmapMemory;\nPFN_vkFlushMappedMemoryRanges vkFlushMappedMemoryRanges;\nPFN_vkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRanges;\nPFN_vkGetDeviceMemoryCommitment vkGetDeviceMemoryCommitment;\nPFN_vkBindBufferMemory vkBindBufferMemory;\nPFN_vkBindImageMemory vkBindImageMemory;\nPFN_vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements;\nPFN_vkGetImageMemoryRequirements vkGetImageMemoryRequirements;\nPFN_vkGetImageSparseMemoryRequirements vkGetImageSparseMemoryRequirements;\nPFN_vkGetPhysicalDeviceSparseImageFormatProperties vkGetPhysicalDeviceSparseImageFormatProperties;\nPFN_vkQueueBindSparse vkQueueBindSparse;\nPFN_vkCreateFence vkCreateFence;\nPFN_vkDestroyFence vkDestroyFence;\nPFN_vkResetFences vkResetFences;\nPFN_vkGetFenceStatus vkGetFenceStatus;\nPFN_vkWaitForFences vkWaitForFences;\nPFN_vkCreateSemaphore vkCreateSemaphore;\nPFN_vkDestroySemaphore vkDestroySemaphore;\nPFN_vkCreateQueryPool vkCreateQueryPool;\nPFN_vkDestroyQueryPool vkDestroyQueryPool;\nPFN_vkGetQueryPoolResults vkGetQueryPoolResults;\nPFN_vkCreateBuffer vkCreateBuffer;\nPFN_vkDestroyBuffer vkDestroyBuffer;\nPFN_vkCreateImage vkCreateImage;\nPFN_vkDestroyImage vkDestroyImage;\nPFN_vkGetImageSubresourceLayout vkGetImageSubresourceLayout;\nPFN_vkCreateImageView vkCreateImageView;\nPFN_vkDestroyImageView vkDestroyImageView;\nPFN_vkCreateCommandPool vkCreateCommandPool;\nPFN_vkDestroyCommandPool vkDestroyCommandPool;\nPFN_vkResetCommandPool vkResetCommandPool;\nPFN_vkAllocateCommandBuffers vkAllocateCommandBuffers;\nPFN_vkFreeCommandBuffers vkFreeCommandBuffers;\nPFN_vkBeginCommandBuffer vkBeginCommandBuffer;\nPFN_vkEndCommandBuffer vkEndCommandBuffer;\nPFN_vkResetCommandBuffer vkResetCommandBuffer;\nPFN_vkCmdCopyBuffer vkCmdCopyBuffer;\nPFN_vkCmdCopyImage vkCmdCopyImage;\nPFN_vkCmdCopyBufferToImage vkCmdCopyBufferToImage;\nPFN_vkCmdCopyImageToBuffer vkCmdCopyImageToBuffer;\nPFN_vkCmdUpdateBuffer vkCmdUpdateBuffer;\nPFN_vkCmdFillBuffer vkCmdFillBuffer;\nPFN_vkCmdPipelineBarrier vkCmdPipelineBarrier;\nPFN_vkCmdBeginQuery vkCmdBeginQuery;\nPFN_vkCmdEndQuery vkCmdEndQuery;\nPFN_vkCmdResetQueryPool vkCmdResetQueryPool;\nPFN_vkCmdWriteTimestamp vkCmdWriteTimestamp;\nPFN_vkCmdCopyQueryPoolResults vkCmdCopyQueryPoolResults;\nPFN_vkCmdExecuteCommands vkCmdExecuteCommands;\nPFN_vkCreateEvent vkCreateEvent;\nPFN_vkDestroyEvent vkDestroyEvent;\nPFN_vkGetEventStatus vkGetEventStatus;\nPFN_vkSetEvent vkSetEvent;\nPFN_vkResetEvent vkResetEvent;\nPFN_vkCreateBufferView vkCreateBufferView;\nPFN_vkDestroyBufferView vkDestroyBufferView;\nPFN_vkCreateShaderModule vkCreateShaderModule;\nPFN_vkDestroyShaderModule vkDestroyShaderModule;\nPFN_vkCreatePipelineCache vkCreatePipelineCache;\nPFN_vkDestroyPipelineCache vkDestroyPipelineCache;\nPFN_vkGetPipelineCacheData vkGetPipelineCacheData;\nPFN_vkMergePipelineCaches vkMergePipelineCaches;\nPFN_vkCreateComputePipelines vkCreateComputePipelines;\nPFN_vkDestroyPipeline vkDestroyPipeline;\nPFN_vkCreatePipelineLayout vkCreatePipelineLayout;\nPFN_vkDestroyPipelineLayout vkDestroyPipelineLayout;\nPFN_vkCreateSampler vkCreateSampler;\nPFN_vkDestroySampler vkDestroySampler;\nPFN_vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout;\nPFN_vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout;\nPFN_vkCreateDescriptorPool vkCreateDescriptorPool;\nPFN_vkDestroyDescriptorPool vkDestroyDescriptorPool;\nPFN_vkResetDescriptorPool vkResetDescriptorPool;\nPFN_vkAllocateDescriptorSets vkAllocateDescriptorSets;\nPFN_vkFreeDescriptorSets vkFreeDescriptorSets;\nPFN_vkUpdateDescriptorSets vkUpdateDescriptorSets;\nPFN_vkCmdBindPipeline vkCmdBindPipeline;\nPFN_vkCmdBindDescriptorSets vkCmdBindDescriptorSets;\nPFN_vkCmdClearColorImage vkCmdClearColorImage;\nPFN_vkCmdDispatch vkCmdDispatch;\nPFN_vkCmdDispatchIndirect vkCmdDispatchIndirect;\nPFN_vkCmdSetEvent vkCmdSetEvent;\nPFN_vkCmdResetEvent vkCmdResetEvent;\nPFN_vkCmdWaitEvents vkCmdWaitEvents;\nPFN_vkCmdPushConstants vkCmdPushConstants;\nPFN_vkCreateGraphicsPipelines vkCreateGraphicsPipelines;\nPFN_vkCreateFramebuffer vkCreateFramebuffer;\nPFN_vkDestroyFramebuffer vkDestroyFramebuffer;\nPFN_vkCreateRenderPass vkCreateRenderPass;\nPFN_vkDestroyRenderPass vkDestroyRenderPass;\nPFN_vkGetRenderAreaGranularity vkGetRenderAreaGranularity;\nPFN_vkCmdSetViewport vkCmdSetViewport;\nPFN_vkCmdSetScissor vkCmdSetScissor;\nPFN_vkCmdSetLineWidth vkCmdSetLineWidth;\nPFN_vkCmdSetDepthBias vkCmdSetDepthBias;\nPFN_vkCmdSetBlendConstants vkCmdSetBlendConstants;\nPFN_vkCmdSetDepthBounds vkCmdSetDepthBounds;\nPFN_vkCmdSetStencilCompareMask vkCmdSetStencilCompareMask;\nPFN_vkCmdSetStencilWriteMask vkCmdSetStencilWriteMask;\nPFN_vkCmdSetStencilReference vkCmdSetStencilReference;\nPFN_vkCmdBindIndexBuffer vkCmdBindIndexBuffer;\nPFN_vkCmdBindVertexBuffers vkCmdBindVertexBuffers;\nPFN_vkCmdDraw vkCmdDraw;\nPFN_vkCmdDrawIndexed vkCmdDrawIndexed;\nPFN_vkCmdDrawIndirect vkCmdDrawIndirect;\nPFN_vkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirect;\nPFN_vkCmdBlitImage vkCmdBlitImage;\nPFN_vkCmdClearDepthStencilImage vkCmdClearDepthStencilImage;\nPFN_vkCmdClearAttachments vkCmdClearAttachments;\nPFN_vkCmdResolveImage vkCmdResolveImage;\nPFN_vkCmdBeginRenderPass vkCmdBeginRenderPass;\nPFN_vkCmdNextSubpass vkCmdNextSubpass;\nPFN_vkCmdEndRenderPass vkCmdEndRenderPass;\nPFN_vkEnumerateInstanceVersion vkEnumerateInstanceVersion;\nPFN_vkBindBufferMemory2 vkBindBufferMemory2;\nPFN_vkBindImageMemory2 vkBindImageMemory2;\nPFN_vkGetDeviceGroupPeerMemoryFeatures vkGetDeviceGroupPeerMemoryFeatures;\nPFN_vkCmdSetDeviceMask vkCmdSetDeviceMask;\nPFN_vkEnumeratePhysicalDeviceGroups vkEnumeratePhysicalDeviceGroups;\nPFN_vkGetImageMemoryRequirements2 vkGetImageMemoryRequirements2;\nPFN_vkGetBufferMemoryRequirements2 vkGetBufferMemoryRequirements2;\nPFN_vkGetImageSparseMemoryRequirements2 vkGetImageSparseMemoryRequirements2;\nPFN_vkGetPhysicalDeviceFeatures2 vkGetPhysicalDeviceFeatures2;\nPFN_vkGetPhysicalDeviceProperties2 vkGetPhysicalDeviceProperties2;\nPFN_vkGetPhysicalDeviceFormatProperties2 vkGetPhysicalDeviceFormatProperties2;\nPFN_vkGetPhysicalDeviceImageFormatProperties2 vkGetPhysicalDeviceImageFormatProperties2;\nPFN_vkGetPhysicalDeviceQueueFamilyProperties2 vkGetPhysicalDeviceQueueFamilyProperties2;\nPFN_vkGetPhysicalDeviceMemoryProperties2 vkGetPhysicalDeviceMemoryProperties2;\nPFN_vkGetPhysicalDeviceSparseImageFormatProperties2 vkGetPhysicalDeviceSparseImageFormatProperties2;\nPFN_vkTrimCommandPool vkTrimCommandPool;\nPFN_vkGetDeviceQueue2 vkGetDeviceQueue2;\nPFN_vkGetPhysicalDeviceExternalBufferProperties vkGetPhysicalDeviceExternalBufferProperties;\nPFN_vkGetPhysicalDeviceExternalFenceProperties vkGetPhysicalDeviceExternalFenceProperties;\nPFN_vkGetPhysicalDeviceExternalSemaphoreProperties vkGetPhysicalDeviceExternalSemaphoreProperties;\nPFN_vkCmdDispatchBase vkCmdDispatchBase;\nPFN_vkCreateDescriptorUpdateTemplate vkCreateDescriptorUpdateTemplate;\nPFN_vkDestroyDescriptorUpdateTemplate vkDestroyDescriptorUpdateTemplate;\nPFN_vkUpdateDescriptorSetWithTemplate vkUpdateDescriptorSetWithTemplate;\nPFN_vkGetDescriptorSetLayoutSupport vkGetDescriptorSetLayoutSupport;\nPFN_vkCreateSamplerYcbcrConversion vkCreateSamplerYcbcrConversion;\nPFN_vkDestroySamplerYcbcrConversion vkDestroySamplerYcbcrConversion;\nPFN_vkResetQueryPool vkResetQueryPool;\nPFN_vkGetSemaphoreCounterValue vkGetSemaphoreCounterValue;\nPFN_vkWaitSemaphores vkWaitSemaphores;\nPFN_vkSignalSemaphore vkSignalSemaphore;\nPFN_vkGetBufferDeviceAddress vkGetBufferDeviceAddress;\nPFN_vkGetBufferOpaqueCaptureAddress vkGetBufferOpaqueCaptureAddress;\nPFN_vkGetDeviceMemoryOpaqueCaptureAddress vkGetDeviceMemoryOpaqueCaptureAddress;\nPFN_vkCmdDrawIndirectCount vkCmdDrawIndirectCount;\nPFN_vkCmdDrawIndexedIndirectCount vkCmdDrawIndexedIndirectCount;\nPFN_vkCreateRenderPass2 vkCreateRenderPass2;\nPFN_vkCmdBeginRenderPass2 vkCmdBeginRenderPass2;\nPFN_vkCmdNextSubpass2 vkCmdNextSubpass2;\nPFN_vkCmdEndRenderPass2 vkCmdEndRenderPass2;\nPFN_vkGetPhysicalDeviceToolProperties vkGetPhysicalDeviceToolProperties;\nPFN_vkCreatePrivateDataSlot vkCreatePrivateDataSlot;\nPFN_vkDestroyPrivateDataSlot vkDestroyPrivateDataSlot;\nPFN_vkSetPrivateData vkSetPrivateData;\nPFN_vkGetPrivateData vkGetPrivateData;\nPFN_vkCmdPipelineBarrier2 vkCmdPipelineBarrier2;\nPFN_vkCmdWriteTimestamp2 vkCmdWriteTimestamp2;\nPFN_vkQueueSubmit2 vkQueueSubmit2;\nPFN_vkCmdCopyBuffer2 vkCmdCopyBuffer2;\nPFN_vkCmdCopyImage2 vkCmdCopyImage2;\nPFN_vkCmdCopyBufferToImage2 vkCmdCopyBufferToImage2;\nPFN_vkCmdCopyImageToBuffer2 vkCmdCopyImageToBuffer2;\nPFN_vkGetDeviceBufferMemoryRequirements vkGetDeviceBufferMemoryRequirements;\nPFN_vkGetDeviceImageMemoryRequirements vkGetDeviceImageMemoryRequirements;\nPFN_vkGetDeviceImageSparseMemoryRequirements vkGetDeviceImageSparseMemoryRequirements;\nPFN_vkCmdSetEvent2 vkCmdSetEvent2;\nPFN_vkCmdResetEvent2 vkCmdResetEvent2;\nPFN_vkCmdWaitEvents2 vkCmdWaitEvents2;\nPFN_vkCmdBlitImage2 vkCmdBlitImage2;\nPFN_vkCmdResolveImage2 vkCmdResolveImage2;\nPFN_vkCmdBeginRendering vkCmdBeginRendering;\nPFN_vkCmdEndRendering vkCmdEndRendering;\nPFN_vkCmdSetCullMode vkCmdSetCullMode;\nPFN_vkCmdSetFrontFace vkCmdSetFrontFace;\nPFN_vkCmdSetPrimitiveTopology vkCmdSetPrimitiveTopology;\nPFN_vkCmdSetViewportWithCount vkCmdSetViewportWithCount;\nPFN_vkCmdSetScissorWithCount vkCmdSetScissorWithCount;\nPFN_vkCmdBindVertexBuffers2 vkCmdBindVertexBuffers2;\nPFN_vkCmdSetDepthTestEnable vkCmdSetDepthTestEnable;\nPFN_vkCmdSetDepthWriteEnable vkCmdSetDepthWriteEnable;\nPFN_vkCmdSetDepthCompareOp vkCmdSetDepthCompareOp;\nPFN_vkCmdSetDepthBoundsTestEnable vkCmdSetDepthBoundsTestEnable;\nPFN_vkCmdSetStencilTestEnable vkCmdSetStencilTestEnable;\nPFN_vkCmdSetStencilOp vkCmdSetStencilOp;\nPFN_vkCmdSetRasterizerDiscardEnable vkCmdSetRasterizerDiscardEnable;\nPFN_vkCmdSetDepthBiasEnable vkCmdSetDepthBiasEnable;\nPFN_vkCmdSetPrimitiveRestartEnable vkCmdSetPrimitiveRestartEnable;\nPFN_vkMapMemory2 vkMapMemory2;\nPFN_vkUnmapMemory2 vkUnmapMemory2;\nPFN_vkGetDeviceImageSubresourceLayout vkGetDeviceImageSubresourceLayout;\nPFN_vkGetImageSubresourceLayout2 vkGetImageSubresourceLayout2;\nPFN_vkCopyMemoryToImage vkCopyMemoryToImage;\nPFN_vkCopyImageToMemory vkCopyImageToMemory;\nPFN_vkCopyImageToImage vkCopyImageToImage;\nPFN_vkTransitionImageLayout vkTransitionImageLayout;\nPFN_vkCmdPushDescriptorSet vkCmdPushDescriptorSet;\nPFN_vkCmdPushDescriptorSetWithTemplate vkCmdPushDescriptorSetWithTemplate;\nPFN_vkCmdBindDescriptorSets2 vkCmdBindDescriptorSets2;\nPFN_vkCmdPushConstants2 vkCmdPushConstants2;\nPFN_vkCmdPushDescriptorSet2 vkCmdPushDescriptorSet2;\nPFN_vkCmdPushDescriptorSetWithTemplate2 vkCmdPushDescriptorSetWithTemplate2;\nPFN_vkCmdSetLineStipple vkCmdSetLineStipple;\nPFN_vkCmdBindIndexBuffer2 vkCmdBindIndexBuffer2;\nPFN_vkGetRenderingAreaGranularity vkGetRenderingAreaGranularity;\nPFN_vkCmdSetRenderingAttachmentLocations vkCmdSetRenderingAttachmentLocations;\nPFN_vkCmdSetRenderingInputAttachmentIndices vkCmdSetRenderingInputAttachmentIndices;\nPFN_vkGetCommandPoolMemoryConsumption vkGetCommandPoolMemoryConsumption;\nPFN_vkGetFaultData vkGetFaultData;\nPFN_vkDestroySurfaceKHR vkDestroySurfaceKHR;\nPFN_vkGetPhysicalDeviceSurfaceSupportKHR vkGetPhysicalDeviceSurfaceSupportKHR;\nPFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR vkGetPhysicalDeviceSurfaceCapabilitiesKHR;\nPFN_vkGetPhysicalDeviceSurfaceFormatsKHR vkGetPhysicalDeviceSurfaceFormatsKHR;\nPFN_vkGetPhysicalDeviceSurfacePresentModesKHR vkGetPhysicalDeviceSurfacePresentModesKHR;\nPFN_vkCreateSwapchainKHR vkCreateSwapchainKHR;\nPFN_vkDestroySwapchainKHR vkDestroySwapchainKHR;\nPFN_vkGetSwapchainImagesKHR vkGetSwapchainImagesKHR;\nPFN_vkAcquireNextImageKHR vkAcquireNextImageKHR;\nPFN_vkQueuePresentKHR vkQueuePresentKHR;\nPFN_vkGetDeviceGroupPresentCapabilitiesKHR vkGetDeviceGroupPresentCapabilitiesKHR;\nPFN_vkGetDeviceGroupSurfacePresentModesKHR vkGetDeviceGroupSurfacePresentModesKHR;\nPFN_vkGetPhysicalDevicePresentRectanglesKHR vkGetPhysicalDevicePresentRectanglesKHR;\nPFN_vkAcquireNextImage2KHR vkAcquireNextImage2KHR;\nPFN_vkGetPhysicalDeviceDisplayPropertiesKHR vkGetPhysicalDeviceDisplayPropertiesKHR;\nPFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR vkGetPhysicalDeviceDisplayPlanePropertiesKHR;\nPFN_vkGetDisplayPlaneSupportedDisplaysKHR vkGetDisplayPlaneSupportedDisplaysKHR;\nPFN_vkGetDisplayModePropertiesKHR vkGetDisplayModePropertiesKHR;\nPFN_vkCreateDisplayModeKHR vkCreateDisplayModeKHR;\nPFN_vkGetDisplayPlaneCapabilitiesKHR vkGetDisplayPlaneCapabilitiesKHR;\nPFN_vkCreateDisplayPlaneSurfaceKHR vkCreateDisplayPlaneSurfaceKHR;\nPFN_vkCreateSharedSwapchainsKHR vkCreateSharedSwapchainsKHR;\nPFN_vkGetPhysicalDeviceVideoCapabilitiesKHR vkGetPhysicalDeviceVideoCapabilitiesKHR;\nPFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR vkGetPhysicalDeviceVideoFormatPropertiesKHR;\nPFN_vkCreateVideoSessionKHR vkCreateVideoSessionKHR;\nPFN_vkDestroyVideoSessionKHR vkDestroyVideoSessionKHR;\nPFN_vkGetVideoSessionMemoryRequirementsKHR vkGetVideoSessionMemoryRequirementsKHR;\nPFN_vkBindVideoSessionMemoryKHR vkBindVideoSessionMemoryKHR;\nPFN_vkCreateVideoSessionParametersKHR vkCreateVideoSessionParametersKHR;\nPFN_vkUpdateVideoSessionParametersKHR vkUpdateVideoSessionParametersKHR;\nPFN_vkDestroyVideoSessionParametersKHR vkDestroyVideoSessionParametersKHR;\nPFN_vkCmdBeginVideoCodingKHR vkCmdBeginVideoCodingKHR;\nPFN_vkCmdEndVideoCodingKHR vkCmdEndVideoCodingKHR;\nPFN_vkCmdControlVideoCodingKHR vkCmdControlVideoCodingKHR;\nPFN_vkCmdDecodeVideoKHR vkCmdDecodeVideoKHR;\nPFN_vkCmdBindTransformFeedbackBuffersEXT vkCmdBindTransformFeedbackBuffersEXT;\nPFN_vkCmdBeginTransformFeedbackEXT vkCmdBeginTransformFeedbackEXT;\nPFN_vkCmdEndTransformFeedbackEXT vkCmdEndTransformFeedbackEXT;\nPFN_vkCmdBeginQueryIndexedEXT vkCmdBeginQueryIndexedEXT;\nPFN_vkCmdEndQueryIndexedEXT vkCmdEndQueryIndexedEXT;\nPFN_vkCmdDrawIndirectByteCountEXT vkCmdDrawIndirectByteCountEXT;\nPFN_vkCreateCuModuleNVX vkCreateCuModuleNVX;\nPFN_vkCreateCuFunctionNVX vkCreateCuFunctionNVX;\nPFN_vkDestroyCuModuleNVX vkDestroyCuModuleNVX;\nPFN_vkDestroyCuFunctionNVX vkDestroyCuFunctionNVX;\nPFN_vkCmdCuLaunchKernelNVX vkCmdCuLaunchKernelNVX;\nPFN_vkGetImageViewHandleNVX vkGetImageViewHandleNVX;\nPFN_vkGetImageViewHandle64NVX vkGetImageViewHandle64NVX;\nPFN_vkGetImageViewAddressNVX vkGetImageViewAddressNVX;\nPFN_vkGetDeviceCombinedImageSamplerIndexNVX vkGetDeviceCombinedImageSamplerIndexNVX;\nPFN_vkGetShaderInfoAMD vkGetShaderInfoAMD;\nPFN_vkCmdBeginRenderingKHR vkCmdBeginRenderingKHR;\nPFN_vkCmdEndRenderingKHR vkCmdEndRenderingKHR;\nPFN_vkGetPhysicalDeviceFeatures2KHR vkGetPhysicalDeviceFeatures2KHR;\nPFN_vkGetPhysicalDeviceProperties2KHR vkGetPhysicalDeviceProperties2KHR;\nPFN_vkGetPhysicalDeviceFormatProperties2KHR vkGetPhysicalDeviceFormatProperties2KHR;\nPFN_vkGetPhysicalDeviceImageFormatProperties2KHR vkGetPhysicalDeviceImageFormatProperties2KHR;\nPFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR vkGetPhysicalDeviceQueueFamilyProperties2KHR;\nPFN_vkGetPhysicalDeviceMemoryProperties2KHR vkGetPhysicalDeviceMemoryProperties2KHR;\nPFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR vkGetPhysicalDeviceSparseImageFormatProperties2KHR;\nPFN_vkGetDeviceGroupPeerMemoryFeaturesKHR vkGetDeviceGroupPeerMemoryFeaturesKHR;\nPFN_vkCmdSetDeviceMaskKHR vkCmdSetDeviceMaskKHR;\nPFN_vkCmdDispatchBaseKHR vkCmdDispatchBaseKHR;\nPFN_vkTrimCommandPoolKHR vkTrimCommandPoolKHR;\nPFN_vkEnumeratePhysicalDeviceGroupsKHR vkEnumeratePhysicalDeviceGroupsKHR;\nPFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR vkGetPhysicalDeviceExternalBufferPropertiesKHR;\nPFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV vkGetPhysicalDeviceExternalImageFormatPropertiesNV;\nPFN_vkGetMemoryFdKHR vkGetMemoryFdKHR;\nPFN_vkGetMemoryFdPropertiesKHR vkGetMemoryFdPropertiesKHR;\nPFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR vkGetPhysicalDeviceExternalSemaphorePropertiesKHR;\nPFN_vkImportSemaphoreFdKHR vkImportSemaphoreFdKHR;\nPFN_vkGetSemaphoreFdKHR vkGetSemaphoreFdKHR;\nPFN_vkCmdPushDescriptorSetKHR vkCmdPushDescriptorSetKHR;\nPFN_vkCmdPushDescriptorSetWithTemplateKHR vkCmdPushDescriptorSetWithTemplateKHR;\nPFN_vkCmdBeginConditionalRenderingEXT vkCmdBeginConditionalRenderingEXT;\nPFN_vkCmdEndConditionalRenderingEXT vkCmdEndConditionalRenderingEXT;\nPFN_vkCreateDescriptorUpdateTemplateKHR vkCreateDescriptorUpdateTemplateKHR;\nPFN_vkDestroyDescriptorUpdateTemplateKHR vkDestroyDescriptorUpdateTemplateKHR;\nPFN_vkUpdateDescriptorSetWithTemplateKHR vkUpdateDescriptorSetWithTemplateKHR;\nPFN_vkCmdSetViewportWScalingNV vkCmdSetViewportWScalingNV;\nPFN_vkReleaseDisplayEXT vkReleaseDisplayEXT;\nPFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT vkGetPhysicalDeviceSurfaceCapabilities2EXT;\nPFN_vkDisplayPowerControlEXT vkDisplayPowerControlEXT;\nPFN_vkRegisterDeviceEventEXT vkRegisterDeviceEventEXT;\nPFN_vkRegisterDisplayEventEXT vkRegisterDisplayEventEXT;\nPFN_vkGetSwapchainCounterEXT vkGetSwapchainCounterEXT;\nPFN_vkGetRefreshCycleDurationGOOGLE vkGetRefreshCycleDurationGOOGLE;\nPFN_vkGetPastPresentationTimingGOOGLE vkGetPastPresentationTimingGOOGLE;\nPFN_vkCmdSetDiscardRectangleEXT vkCmdSetDiscardRectangleEXT;\nPFN_vkCmdSetDiscardRectangleEnableEXT vkCmdSetDiscardRectangleEnableEXT;\nPFN_vkCmdSetDiscardRectangleModeEXT vkCmdSetDiscardRectangleModeEXT;\nPFN_vkSetHdrMetadataEXT vkSetHdrMetadataEXT;\nPFN_vkCreateRenderPass2KHR vkCreateRenderPass2KHR;\nPFN_vkCmdBeginRenderPass2KHR vkCmdBeginRenderPass2KHR;\nPFN_vkCmdNextSubpass2KHR vkCmdNextSubpass2KHR;\nPFN_vkCmdEndRenderPass2KHR vkCmdEndRenderPass2KHR;\nPFN_vkGetSwapchainStatusKHR vkGetSwapchainStatusKHR;\nPFN_vkGetPhysicalDeviceExternalFencePropertiesKHR vkGetPhysicalDeviceExternalFencePropertiesKHR;\nPFN_vkImportFenceFdKHR vkImportFenceFdKHR;\nPFN_vkGetFenceFdKHR vkGetFenceFdKHR;\nPFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR;\nPFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR;\nPFN_vkAcquireProfilingLockKHR vkAcquireProfilingLockKHR;\nPFN_vkReleaseProfilingLockKHR vkReleaseProfilingLockKHR;\nPFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR vkGetPhysicalDeviceSurfaceCapabilities2KHR;\nPFN_vkGetPhysicalDeviceSurfaceFormats2KHR vkGetPhysicalDeviceSurfaceFormats2KHR;\nPFN_vkGetPhysicalDeviceDisplayProperties2KHR vkGetPhysicalDeviceDisplayProperties2KHR;\nPFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR vkGetPhysicalDeviceDisplayPlaneProperties2KHR;\nPFN_vkGetDisplayModeProperties2KHR vkGetDisplayModeProperties2KHR;\nPFN_vkGetDisplayPlaneCapabilities2KHR vkGetDisplayPlaneCapabilities2KHR;\nPFN_vkSetDebugUtilsObjectNameEXT vkSetDebugUtilsObjectNameEXT;\nPFN_vkSetDebugUtilsObjectTagEXT vkSetDebugUtilsObjectTagEXT;\nPFN_vkQueueBeginDebugUtilsLabelEXT vkQueueBeginDebugUtilsLabelEXT;\nPFN_vkQueueEndDebugUtilsLabelEXT vkQueueEndDebugUtilsLabelEXT;\nPFN_vkQueueInsertDebugUtilsLabelEXT vkQueueInsertDebugUtilsLabelEXT;\nPFN_vkCmdBeginDebugUtilsLabelEXT vkCmdBeginDebugUtilsLabelEXT;\nPFN_vkCmdEndDebugUtilsLabelEXT vkCmdEndDebugUtilsLabelEXT;\nPFN_vkCmdInsertDebugUtilsLabelEXT vkCmdInsertDebugUtilsLabelEXT;\nPFN_vkCreateDebugUtilsMessengerEXT vkCreateDebugUtilsMessengerEXT;\nPFN_vkDestroyDebugUtilsMessengerEXT vkDestroyDebugUtilsMessengerEXT;\nPFN_vkSubmitDebugUtilsMessageEXT vkSubmitDebugUtilsMessageEXT;\nPFN_vkDebugMarkerSetObjectTagEXT vkDebugMarkerSetObjectTagEXT;\nPFN_vkDebugMarkerSetObjectNameEXT vkDebugMarkerSetObjectNameEXT;\nPFN_vkCmdDebugMarkerBeginEXT vkCmdDebugMarkerBeginEXT;\nPFN_vkCmdDebugMarkerEndEXT vkCmdDebugMarkerEndEXT;\nPFN_vkCmdDebugMarkerInsertEXT vkCmdDebugMarkerInsertEXT;\nPFN_vkCreateDebugReportCallbackEXT vkCreateDebugReportCallbackEXT;\nPFN_vkDestroyDebugReportCallbackEXT vkDestroyDebugReportCallbackEXT;\nPFN_vkDebugReportMessageEXT vkDebugReportMessageEXT;\nPFN_vkWriteSamplerDescriptorsEXT vkWriteSamplerDescriptorsEXT;\nPFN_vkWriteResourceDescriptorsEXT vkWriteResourceDescriptorsEXT;\nPFN_vkCmdBindSamplerHeapEXT vkCmdBindSamplerHeapEXT;\nPFN_vkCmdBindResourceHeapEXT vkCmdBindResourceHeapEXT;\nPFN_vkCmdPushDataEXT vkCmdPushDataEXT;\nPFN_vkGetImageOpaqueCaptureDataEXT vkGetImageOpaqueCaptureDataEXT;\nPFN_vkGetPhysicalDeviceDescriptorSizeEXT vkGetPhysicalDeviceDescriptorSizeEXT;\nPFN_vkRegisterCustomBorderColorEXT vkRegisterCustomBorderColorEXT;\nPFN_vkUnregisterCustomBorderColorEXT vkUnregisterCustomBorderColorEXT;\nPFN_vkGetTensorOpaqueCaptureDataARM vkGetTensorOpaqueCaptureDataARM;\nPFN_vkCmdSetSampleLocationsEXT vkCmdSetSampleLocationsEXT;\nPFN_vkGetPhysicalDeviceMultisamplePropertiesEXT vkGetPhysicalDeviceMultisamplePropertiesEXT;\nPFN_vkGetImageMemoryRequirements2KHR vkGetImageMemoryRequirements2KHR;\nPFN_vkGetBufferMemoryRequirements2KHR vkGetBufferMemoryRequirements2KHR;\nPFN_vkGetImageSparseMemoryRequirements2KHR vkGetImageSparseMemoryRequirements2KHR;\nPFN_vkCreateAccelerationStructureKHR vkCreateAccelerationStructureKHR;\nPFN_vkDestroyAccelerationStructureKHR vkDestroyAccelerationStructureKHR;\nPFN_vkCmdBuildAccelerationStructuresKHR vkCmdBuildAccelerationStructuresKHR;\nPFN_vkCmdBuildAccelerationStructuresIndirectKHR vkCmdBuildAccelerationStructuresIndirectKHR;\nPFN_vkBuildAccelerationStructuresKHR vkBuildAccelerationStructuresKHR;\nPFN_vkCopyAccelerationStructureKHR vkCopyAccelerationStructureKHR;\nPFN_vkCopyAccelerationStructureToMemoryKHR vkCopyAccelerationStructureToMemoryKHR;\nPFN_vkCopyMemoryToAccelerationStructureKHR vkCopyMemoryToAccelerationStructureKHR;\nPFN_vkWriteAccelerationStructuresPropertiesKHR vkWriteAccelerationStructuresPropertiesKHR;\nPFN_vkCmdCopyAccelerationStructureKHR vkCmdCopyAccelerationStructureKHR;\nPFN_vkCmdCopyAccelerationStructureToMemoryKHR vkCmdCopyAccelerationStructureToMemoryKHR;\nPFN_vkCmdCopyMemoryToAccelerationStructureKHR vkCmdCopyMemoryToAccelerationStructureKHR;\nPFN_vkGetAccelerationStructureDeviceAddressKHR vkGetAccelerationStructureDeviceAddressKHR;\nPFN_vkCmdWriteAccelerationStructuresPropertiesKHR vkCmdWriteAccelerationStructuresPropertiesKHR;\nPFN_vkGetDeviceAccelerationStructureCompatibilityKHR vkGetDeviceAccelerationStructureCompatibilityKHR;\nPFN_vkGetAccelerationStructureBuildSizesKHR vkGetAccelerationStructureBuildSizesKHR;\nPFN_vkCmdTraceRaysKHR vkCmdTraceRaysKHR;\nPFN_vkCreateRayTracingPipelinesKHR vkCreateRayTracingPipelinesKHR;\nPFN_vkGetRayTracingShaderGroupHandlesKHR vkGetRayTracingShaderGroupHandlesKHR;\nPFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR vkGetRayTracingCaptureReplayShaderGroupHandlesKHR;\nPFN_vkCmdTraceRaysIndirectKHR vkCmdTraceRaysIndirectKHR;\nPFN_vkGetRayTracingShaderGroupStackSizeKHR vkGetRayTracingShaderGroupStackSizeKHR;\nPFN_vkCmdSetRayTracingPipelineStackSizeKHR vkCmdSetRayTracingPipelineStackSizeKHR;\nPFN_vkCreateSamplerYcbcrConversionKHR vkCreateSamplerYcbcrConversionKHR;\nPFN_vkDestroySamplerYcbcrConversionKHR vkDestroySamplerYcbcrConversionKHR;\nPFN_vkBindBufferMemory2KHR vkBindBufferMemory2KHR;\nPFN_vkBindImageMemory2KHR vkBindImageMemory2KHR;\nPFN_vkGetImageDrmFormatModifierPropertiesEXT vkGetImageDrmFormatModifierPropertiesEXT;\nPFN_vkCreateValidationCacheEXT vkCreateValidationCacheEXT;\nPFN_vkDestroyValidationCacheEXT vkDestroyValidationCacheEXT;\nPFN_vkMergeValidationCachesEXT vkMergeValidationCachesEXT;\nPFN_vkGetValidationCacheDataEXT vkGetValidationCacheDataEXT;\nPFN_vkCmdBindShadingRateImageNV vkCmdBindShadingRateImageNV;\nPFN_vkCmdSetViewportShadingRatePaletteNV vkCmdSetViewportShadingRatePaletteNV;\nPFN_vkCmdSetCoarseSampleOrderNV vkCmdSetCoarseSampleOrderNV;\nPFN_vkCreateAccelerationStructureNV vkCreateAccelerationStructureNV;\nPFN_vkDestroyAccelerationStructureNV vkDestroyAccelerationStructureNV;\nPFN_vkGetAccelerationStructureMemoryRequirementsNV vkGetAccelerationStructureMemoryRequirementsNV;\nPFN_vkBindAccelerationStructureMemoryNV vkBindAccelerationStructureMemoryNV;\nPFN_vkCmdBuildAccelerationStructureNV vkCmdBuildAccelerationStructureNV;\nPFN_vkCmdCopyAccelerationStructureNV vkCmdCopyAccelerationStructureNV;\nPFN_vkCmdTraceRaysNV vkCmdTraceRaysNV;\nPFN_vkCreateRayTracingPipelinesNV vkCreateRayTracingPipelinesNV;\nPFN_vkGetRayTracingShaderGroupHandlesNV vkGetRayTracingShaderGroupHandlesNV;\nPFN_vkGetAccelerationStructureHandleNV vkGetAccelerationStructureHandleNV;\nPFN_vkCmdWriteAccelerationStructuresPropertiesNV vkCmdWriteAccelerationStructuresPropertiesNV;\nPFN_vkCompileDeferredNV vkCompileDeferredNV;\nPFN_vkGetDescriptorSetLayoutSupportKHR vkGetDescriptorSetLayoutSupportKHR;\nPFN_vkCmdDrawIndirectCountKHR vkCmdDrawIndirectCountKHR;\nPFN_vkCmdDrawIndexedIndirectCountKHR vkCmdDrawIndexedIndirectCountKHR;\nPFN_vkCmdDrawIndirectCountAMD vkCmdDrawIndirectCountAMD;\nPFN_vkCmdDrawIndexedIndirectCountAMD vkCmdDrawIndexedIndirectCountAMD;\nPFN_vkGetMemoryHostPointerPropertiesEXT vkGetMemoryHostPointerPropertiesEXT;\nPFN_vkCmdWriteBufferMarkerAMD vkCmdWriteBufferMarkerAMD;\nPFN_vkCmdWriteBufferMarker2AMD vkCmdWriteBufferMarker2AMD;\nPFN_vkCmdDrawMeshTasksNV vkCmdDrawMeshTasksNV;\nPFN_vkCmdDrawMeshTasksIndirectNV vkCmdDrawMeshTasksIndirectNV;\nPFN_vkCmdDrawMeshTasksIndirectCountNV vkCmdDrawMeshTasksIndirectCountNV;\nPFN_vkCmdSetExclusiveScissorEnableNV vkCmdSetExclusiveScissorEnableNV;\nPFN_vkCmdSetExclusiveScissorNV vkCmdSetExclusiveScissorNV;\nPFN_vkCmdSetCheckpointNV vkCmdSetCheckpointNV;\nPFN_vkGetQueueCheckpointDataNV vkGetQueueCheckpointDataNV;\nPFN_vkGetQueueCheckpointData2NV vkGetQueueCheckpointData2NV;\nPFN_vkGetSemaphoreCounterValueKHR vkGetSemaphoreCounterValueKHR;\nPFN_vkWaitSemaphoresKHR vkWaitSemaphoresKHR;\nPFN_vkSignalSemaphoreKHR vkSignalSemaphoreKHR;\nPFN_vkSetSwapchainPresentTimingQueueSizeEXT vkSetSwapchainPresentTimingQueueSizeEXT;\nPFN_vkGetSwapchainTimingPropertiesEXT vkGetSwapchainTimingPropertiesEXT;\nPFN_vkGetSwapchainTimeDomainPropertiesEXT vkGetSwapchainTimeDomainPropertiesEXT;\nPFN_vkGetPastPresentationTimingEXT vkGetPastPresentationTimingEXT;\nPFN_vkInitializePerformanceApiINTEL vkInitializePerformanceApiINTEL;\nPFN_vkUninitializePerformanceApiINTEL vkUninitializePerformanceApiINTEL;\nPFN_vkCmdSetPerformanceMarkerINTEL vkCmdSetPerformanceMarkerINTEL;\nPFN_vkCmdSetPerformanceStreamMarkerINTEL vkCmdSetPerformanceStreamMarkerINTEL;\nPFN_vkCmdSetPerformanceOverrideINTEL vkCmdSetPerformanceOverrideINTEL;\nPFN_vkAcquirePerformanceConfigurationINTEL vkAcquirePerformanceConfigurationINTEL;\nPFN_vkReleasePerformanceConfigurationINTEL vkReleasePerformanceConfigurationINTEL;\nPFN_vkQueueSetPerformanceConfigurationINTEL vkQueueSetPerformanceConfigurationINTEL;\nPFN_vkGetPerformanceParameterINTEL vkGetPerformanceParameterINTEL;\nPFN_vkSetLocalDimmingAMD vkSetLocalDimmingAMD;\nPFN_vkGetPhysicalDeviceFragmentShadingRatesKHR vkGetPhysicalDeviceFragmentShadingRatesKHR;\nPFN_vkCmdSetFragmentShadingRateKHR vkCmdSetFragmentShadingRateKHR;\nPFN_vkCmdSetRenderingAttachmentLocationsKHR vkCmdSetRenderingAttachmentLocationsKHR;\nPFN_vkCmdSetRenderingInputAttachmentIndicesKHR vkCmdSetRenderingInputAttachmentIndicesKHR;\nPFN_vkGetPhysicalDeviceToolPropertiesEXT vkGetPhysicalDeviceToolPropertiesEXT;\nPFN_vkWaitForPresentKHR vkWaitForPresentKHR;\nPFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV vkGetPhysicalDeviceCooperativeMatrixPropertiesNV;\nPFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV;\nPFN_vkCreateHeadlessSurfaceEXT vkCreateHeadlessSurfaceEXT;\nPFN_vkGetBufferDeviceAddressKHR vkGetBufferDeviceAddressKHR;\nPFN_vkGetBufferOpaqueCaptureAddressKHR vkGetBufferOpaqueCaptureAddressKHR;\nPFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR vkGetDeviceMemoryOpaqueCaptureAddressKHR;\nPFN_vkGetBufferDeviceAddressEXT vkGetBufferDeviceAddressEXT;\nPFN_vkResetQueryPoolEXT vkResetQueryPoolEXT;\nPFN_vkCmdSetCullModeEXT vkCmdSetCullModeEXT;\nPFN_vkCmdSetFrontFaceEXT vkCmdSetFrontFaceEXT;\nPFN_vkCmdSetPrimitiveTopologyEXT vkCmdSetPrimitiveTopologyEXT;\nPFN_vkCmdSetViewportWithCountEXT vkCmdSetViewportWithCountEXT;\nPFN_vkCmdSetScissorWithCountEXT vkCmdSetScissorWithCountEXT;\nPFN_vkCmdBindVertexBuffers2EXT vkCmdBindVertexBuffers2EXT;\nPFN_vkCmdSetDepthTestEnableEXT vkCmdSetDepthTestEnableEXT;\nPFN_vkCmdSetDepthWriteEnableEXT vkCmdSetDepthWriteEnableEXT;\nPFN_vkCmdSetDepthCompareOpEXT vkCmdSetDepthCompareOpEXT;\nPFN_vkCmdSetDepthBoundsTestEnableEXT vkCmdSetDepthBoundsTestEnableEXT;\nPFN_vkCmdSetStencilTestEnableEXT vkCmdSetStencilTestEnableEXT;\nPFN_vkCmdSetStencilOpEXT vkCmdSetStencilOpEXT;\nPFN_vkCreateDeferredOperationKHR vkCreateDeferredOperationKHR;\nPFN_vkDestroyDeferredOperationKHR vkDestroyDeferredOperationKHR;\nPFN_vkGetDeferredOperationMaxConcurrencyKHR vkGetDeferredOperationMaxConcurrencyKHR;\nPFN_vkGetDeferredOperationResultKHR vkGetDeferredOperationResultKHR;\nPFN_vkDeferredOperationJoinKHR vkDeferredOperationJoinKHR;\nPFN_vkGetPipelineExecutablePropertiesKHR vkGetPipelineExecutablePropertiesKHR;\nPFN_vkGetPipelineExecutableStatisticsKHR vkGetPipelineExecutableStatisticsKHR;\nPFN_vkGetPipelineExecutableInternalRepresentationsKHR vkGetPipelineExecutableInternalRepresentationsKHR;\nPFN_vkCopyMemoryToImageEXT vkCopyMemoryToImageEXT;\nPFN_vkCopyImageToMemoryEXT vkCopyImageToMemoryEXT;\nPFN_vkCopyImageToImageEXT vkCopyImageToImageEXT;\nPFN_vkTransitionImageLayoutEXT vkTransitionImageLayoutEXT;\nPFN_vkGetImageSubresourceLayout2EXT vkGetImageSubresourceLayout2EXT;\nPFN_vkMapMemory2KHR vkMapMemory2KHR;\nPFN_vkUnmapMemory2KHR vkUnmapMemory2KHR;\nPFN_vkGetGeneratedCommandsMemoryRequirementsNV vkGetGeneratedCommandsMemoryRequirementsNV;\nPFN_vkCmdPreprocessGeneratedCommandsNV vkCmdPreprocessGeneratedCommandsNV;\nPFN_vkCmdExecuteGeneratedCommandsNV vkCmdExecuteGeneratedCommandsNV;\nPFN_vkCmdBindPipelineShaderGroupNV vkCmdBindPipelineShaderGroupNV;\nPFN_vkCreateIndirectCommandsLayoutNV vkCreateIndirectCommandsLayoutNV;\nPFN_vkDestroyIndirectCommandsLayoutNV vkDestroyIndirectCommandsLayoutNV;\nPFN_vkCmdSetDepthBias2EXT vkCmdSetDepthBias2EXT;\nPFN_vkAcquireDrmDisplayEXT vkAcquireDrmDisplayEXT;\nPFN_vkGetDrmDisplayEXT vkGetDrmDisplayEXT;\nPFN_vkCreatePrivateDataSlotEXT vkCreatePrivateDataSlotEXT;\nPFN_vkDestroyPrivateDataSlotEXT vkDestroyPrivateDataSlotEXT;\nPFN_vkSetPrivateDataEXT vkSetPrivateDataEXT;\nPFN_vkGetPrivateDataEXT vkGetPrivateDataEXT;\nPFN_vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR;\nPFN_vkGetEncodedVideoSessionParametersKHR vkGetEncodedVideoSessionParametersKHR;\nPFN_vkCmdEncodeVideoKHR vkCmdEncodeVideoKHR;\nPFN_vkCmdRefreshObjectsKHR vkCmdRefreshObjectsKHR;\nPFN_vkGetPhysicalDeviceRefreshableObjectTypesKHR vkGetPhysicalDeviceRefreshableObjectTypesKHR;\nPFN_vkCmdDispatchTileQCOM vkCmdDispatchTileQCOM;\nPFN_vkCmdBeginPerTileExecutionQCOM vkCmdBeginPerTileExecutionQCOM;\nPFN_vkCmdEndPerTileExecutionQCOM vkCmdEndPerTileExecutionQCOM;\nPFN_vkCmdSetEvent2KHR vkCmdSetEvent2KHR;\nPFN_vkCmdResetEvent2KHR vkCmdResetEvent2KHR;\nPFN_vkCmdWaitEvents2KHR vkCmdWaitEvents2KHR;\nPFN_vkCmdPipelineBarrier2KHR vkCmdPipelineBarrier2KHR;\nPFN_vkCmdWriteTimestamp2KHR vkCmdWriteTimestamp2KHR;\nPFN_vkQueueSubmit2KHR vkQueueSubmit2KHR;\nPFN_vkGetDescriptorSetLayoutSizeEXT vkGetDescriptorSetLayoutSizeEXT;\nPFN_vkGetDescriptorSetLayoutBindingOffsetEXT vkGetDescriptorSetLayoutBindingOffsetEXT;\nPFN_vkGetDescriptorEXT vkGetDescriptorEXT;\nPFN_vkCmdBindDescriptorBuffersEXT vkCmdBindDescriptorBuffersEXT;\nPFN_vkCmdSetDescriptorBufferOffsetsEXT vkCmdSetDescriptorBufferOffsetsEXT;\nPFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT vkCmdBindDescriptorBufferEmbeddedSamplersEXT;\nPFN_vkGetBufferOpaqueCaptureDescriptorDataEXT vkGetBufferOpaqueCaptureDescriptorDataEXT;\nPFN_vkGetImageOpaqueCaptureDescriptorDataEXT vkGetImageOpaqueCaptureDescriptorDataEXT;\nPFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT vkGetImageViewOpaqueCaptureDescriptorDataEXT;\nPFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT vkGetSamplerOpaqueCaptureDescriptorDataEXT;\nPFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT;\nPFN_vkCmdSetFragmentShadingRateEnumNV vkCmdSetFragmentShadingRateEnumNV;\nPFN_vkCmdDrawMeshTasksEXT vkCmdDrawMeshTasksEXT;\nPFN_vkCmdDrawMeshTasksIndirectEXT vkCmdDrawMeshTasksIndirectEXT;\nPFN_vkCmdDrawMeshTasksIndirectCountEXT vkCmdDrawMeshTasksIndirectCountEXT;\nPFN_vkCmdCopyBuffer2KHR vkCmdCopyBuffer2KHR;\nPFN_vkCmdCopyImage2KHR vkCmdCopyImage2KHR;\nPFN_vkCmdCopyBufferToImage2KHR vkCmdCopyBufferToImage2KHR;\nPFN_vkCmdCopyImageToBuffer2KHR vkCmdCopyImageToBuffer2KHR;\nPFN_vkCmdBlitImage2KHR vkCmdBlitImage2KHR;\nPFN_vkCmdResolveImage2KHR vkCmdResolveImage2KHR;\nPFN_vkGetDeviceFaultInfoEXT vkGetDeviceFaultInfoEXT;\nPFN_vkCmdSetVertexInputEXT vkCmdSetVertexInputEXT;\nPFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI;\nPFN_vkCmdSubpassShadingHUAWEI vkCmdSubpassShadingHUAWEI;\nPFN_vkCmdBindInvocationMaskHUAWEI vkCmdBindInvocationMaskHUAWEI;\nPFN_vkGetMemoryRemoteAddressNV vkGetMemoryRemoteAddressNV;\nPFN_vkGetPipelinePropertiesEXT vkGetPipelinePropertiesEXT;\nPFN_vkCmdSetPatchControlPointsEXT vkCmdSetPatchControlPointsEXT;\nPFN_vkCmdSetRasterizerDiscardEnableEXT vkCmdSetRasterizerDiscardEnableEXT;\nPFN_vkCmdSetDepthBiasEnableEXT vkCmdSetDepthBiasEnableEXT;\nPFN_vkCmdSetLogicOpEXT vkCmdSetLogicOpEXT;\nPFN_vkCmdSetPrimitiveRestartEnableEXT vkCmdSetPrimitiveRestartEnableEXT;\nPFN_vkCmdSetColorWriteEnableEXT vkCmdSetColorWriteEnableEXT;\nPFN_vkCmdTraceRaysIndirect2KHR vkCmdTraceRaysIndirect2KHR;\nPFN_vkCmdDrawMultiEXT vkCmdDrawMultiEXT;\nPFN_vkCmdDrawMultiIndexedEXT vkCmdDrawMultiIndexedEXT;\nPFN_vkCreateMicromapEXT vkCreateMicromapEXT;\nPFN_vkDestroyMicromapEXT vkDestroyMicromapEXT;\nPFN_vkCmdBuildMicromapsEXT vkCmdBuildMicromapsEXT;\nPFN_vkBuildMicromapsEXT vkBuildMicromapsEXT;\nPFN_vkCopyMicromapEXT vkCopyMicromapEXT;\nPFN_vkCopyMicromapToMemoryEXT vkCopyMicromapToMemoryEXT;\nPFN_vkCopyMemoryToMicromapEXT vkCopyMemoryToMicromapEXT;\nPFN_vkWriteMicromapsPropertiesEXT vkWriteMicromapsPropertiesEXT;\nPFN_vkCmdCopyMicromapEXT vkCmdCopyMicromapEXT;\nPFN_vkCmdCopyMicromapToMemoryEXT vkCmdCopyMicromapToMemoryEXT;\nPFN_vkCmdCopyMemoryToMicromapEXT vkCmdCopyMemoryToMicromapEXT;\nPFN_vkCmdWriteMicromapsPropertiesEXT vkCmdWriteMicromapsPropertiesEXT;\nPFN_vkGetDeviceMicromapCompatibilityEXT vkGetDeviceMicromapCompatibilityEXT;\nPFN_vkGetMicromapBuildSizesEXT vkGetMicromapBuildSizesEXT;\nPFN_vkCmdDrawClusterHUAWEI vkCmdDrawClusterHUAWEI;\nPFN_vkCmdDrawClusterIndirectHUAWEI vkCmdDrawClusterIndirectHUAWEI;\nPFN_vkSetDeviceMemoryPriorityEXT vkSetDeviceMemoryPriorityEXT;\nPFN_vkGetDeviceBufferMemoryRequirementsKHR vkGetDeviceBufferMemoryRequirementsKHR;\nPFN_vkGetDeviceImageMemoryRequirementsKHR vkGetDeviceImageMemoryRequirementsKHR;\nPFN_vkGetDeviceImageSparseMemoryRequirementsKHR vkGetDeviceImageSparseMemoryRequirementsKHR;\nPFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE vkGetDescriptorSetLayoutHostMappingInfoVALVE;\nPFN_vkGetDescriptorSetHostMappingVALVE vkGetDescriptorSetHostMappingVALVE;\nPFN_vkGetPipelineIndirectMemoryRequirementsNV vkGetPipelineIndirectMemoryRequirementsNV;\nPFN_vkCmdUpdatePipelineIndirectBufferNV vkCmdUpdatePipelineIndirectBufferNV;\nPFN_vkGetPipelineIndirectDeviceAddressNV vkGetPipelineIndirectDeviceAddressNV;\nPFN_vkCmdSetDepthClampEnableEXT vkCmdSetDepthClampEnableEXT;\nPFN_vkCmdSetPolygonModeEXT vkCmdSetPolygonModeEXT;\nPFN_vkCmdSetRasterizationSamplesEXT vkCmdSetRasterizationSamplesEXT;\nPFN_vkCmdSetSampleMaskEXT vkCmdSetSampleMaskEXT;\nPFN_vkCmdSetAlphaToCoverageEnableEXT vkCmdSetAlphaToCoverageEnableEXT;\nPFN_vkCmdSetAlphaToOneEnableEXT vkCmdSetAlphaToOneEnableEXT;\nPFN_vkCmdSetLogicOpEnableEXT vkCmdSetLogicOpEnableEXT;\nPFN_vkCmdSetColorBlendEnableEXT vkCmdSetColorBlendEnableEXT;\nPFN_vkCmdSetColorBlendEquationEXT vkCmdSetColorBlendEquationEXT;\nPFN_vkCmdSetColorWriteMaskEXT vkCmdSetColorWriteMaskEXT;\nPFN_vkCmdSetTessellationDomainOriginEXT vkCmdSetTessellationDomainOriginEXT;\nPFN_vkCmdSetRasterizationStreamEXT vkCmdSetRasterizationStreamEXT;\nPFN_vkCmdSetConservativeRasterizationModeEXT vkCmdSetConservativeRasterizationModeEXT;\nPFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT vkCmdSetExtraPrimitiveOverestimationSizeEXT;\nPFN_vkCmdSetDepthClipEnableEXT vkCmdSetDepthClipEnableEXT;\nPFN_vkCmdSetSampleLocationsEnableEXT vkCmdSetSampleLocationsEnableEXT;\nPFN_vkCmdSetColorBlendAdvancedEXT vkCmdSetColorBlendAdvancedEXT;\nPFN_vkCmdSetProvokingVertexModeEXT vkCmdSetProvokingVertexModeEXT;\nPFN_vkCmdSetLineRasterizationModeEXT vkCmdSetLineRasterizationModeEXT;\nPFN_vkCmdSetLineStippleEnableEXT vkCmdSetLineStippleEnableEXT;\nPFN_vkCmdSetDepthClipNegativeOneToOneEXT vkCmdSetDepthClipNegativeOneToOneEXT;\nPFN_vkCmdSetViewportWScalingEnableNV vkCmdSetViewportWScalingEnableNV;\nPFN_vkCmdSetViewportSwizzleNV vkCmdSetViewportSwizzleNV;\nPFN_vkCmdSetCoverageToColorEnableNV vkCmdSetCoverageToColorEnableNV;\nPFN_vkCmdSetCoverageToColorLocationNV vkCmdSetCoverageToColorLocationNV;\nPFN_vkCmdSetCoverageModulationModeNV vkCmdSetCoverageModulationModeNV;\nPFN_vkCmdSetCoverageModulationTableEnableNV vkCmdSetCoverageModulationTableEnableNV;\nPFN_vkCmdSetCoverageModulationTableNV vkCmdSetCoverageModulationTableNV;\nPFN_vkCmdSetShadingRateImageEnableNV vkCmdSetShadingRateImageEnableNV;\nPFN_vkCmdSetRepresentativeFragmentTestEnableNV vkCmdSetRepresentativeFragmentTestEnableNV;\nPFN_vkCmdSetCoverageReductionModeNV vkCmdSetCoverageReductionModeNV;\nPFN_vkCreateTensorARM vkCreateTensorARM;\nPFN_vkDestroyTensorARM vkDestroyTensorARM;\nPFN_vkCreateTensorViewARM vkCreateTensorViewARM;\nPFN_vkDestroyTensorViewARM vkDestroyTensorViewARM;\nPFN_vkGetTensorMemoryRequirementsARM vkGetTensorMemoryRequirementsARM;\nPFN_vkBindTensorMemoryARM vkBindTensorMemoryARM;\nPFN_vkGetDeviceTensorMemoryRequirementsARM vkGetDeviceTensorMemoryRequirementsARM;\nPFN_vkCmdCopyTensorARM vkCmdCopyTensorARM;\nPFN_vkGetPhysicalDeviceExternalTensorPropertiesARM vkGetPhysicalDeviceExternalTensorPropertiesARM;\nPFN_vkGetTensorOpaqueCaptureDescriptorDataARM vkGetTensorOpaqueCaptureDescriptorDataARM;\nPFN_vkGetTensorViewOpaqueCaptureDescriptorDataARM vkGetTensorViewOpaqueCaptureDescriptorDataARM;\nPFN_vkGetShaderModuleIdentifierEXT vkGetShaderModuleIdentifierEXT;\nPFN_vkGetShaderModuleCreateInfoIdentifierEXT vkGetShaderModuleCreateInfoIdentifierEXT;\nPFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV vkGetPhysicalDeviceOpticalFlowImageFormatsNV;\nPFN_vkCreateOpticalFlowSessionNV vkCreateOpticalFlowSessionNV;\nPFN_vkDestroyOpticalFlowSessionNV vkDestroyOpticalFlowSessionNV;\nPFN_vkBindOpticalFlowSessionImageNV vkBindOpticalFlowSessionImageNV;\nPFN_vkCmdOpticalFlowExecuteNV vkCmdOpticalFlowExecuteNV;\nPFN_vkCmdBindIndexBuffer2KHR vkCmdBindIndexBuffer2KHR;\nPFN_vkGetRenderingAreaGranularityKHR vkGetRenderingAreaGranularityKHR;\nPFN_vkGetDeviceImageSubresourceLayoutKHR vkGetDeviceImageSubresourceLayoutKHR;\nPFN_vkGetImageSubresourceLayout2KHR vkGetImageSubresourceLayout2KHR;\nPFN_vkAntiLagUpdateAMD vkAntiLagUpdateAMD;\nPFN_vkWaitForPresent2KHR vkWaitForPresent2KHR;\nPFN_vkCreateShadersEXT vkCreateShadersEXT;\nPFN_vkDestroyShaderEXT vkDestroyShaderEXT;\nPFN_vkGetShaderBinaryDataEXT vkGetShaderBinaryDataEXT;\nPFN_vkCmdBindShadersEXT vkCmdBindShadersEXT;\nPFN_vkCmdSetDepthClampRangeEXT vkCmdSetDepthClampRangeEXT;\nPFN_vkCreatePipelineBinariesKHR vkCreatePipelineBinariesKHR;\nPFN_vkDestroyPipelineBinaryKHR vkDestroyPipelineBinaryKHR;\nPFN_vkGetPipelineKeyKHR vkGetPipelineKeyKHR;\nPFN_vkGetPipelineBinaryDataKHR vkGetPipelineBinaryDataKHR;\nPFN_vkReleaseCapturedPipelineDataKHR vkReleaseCapturedPipelineDataKHR;\nPFN_vkGetFramebufferTilePropertiesQCOM vkGetFramebufferTilePropertiesQCOM;\nPFN_vkGetDynamicRenderingTilePropertiesQCOM vkGetDynamicRenderingTilePropertiesQCOM;\nPFN_vkReleaseSwapchainImagesKHR vkReleaseSwapchainImagesKHR;\nPFN_vkReleaseSwapchainImagesEXT vkReleaseSwapchainImagesEXT;\nPFN_vkGetPhysicalDeviceCooperativeVectorPropertiesNV vkGetPhysicalDeviceCooperativeVectorPropertiesNV;\nPFN_vkConvertCooperativeVectorMatrixNV vkConvertCooperativeVectorMatrixNV;\nPFN_vkCmdConvertCooperativeVectorMatrixNV vkCmdConvertCooperativeVectorMatrixNV;\nPFN_vkSetLatencySleepModeNV vkSetLatencySleepModeNV;\nPFN_vkLatencySleepNV vkLatencySleepNV;\nPFN_vkSetLatencyMarkerNV vkSetLatencyMarkerNV;\nPFN_vkGetLatencyTimingsNV vkGetLatencyTimingsNV;\nPFN_vkQueueNotifyOutOfBandNV vkQueueNotifyOutOfBandNV;\nPFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR;\nPFN_vkCreateDataGraphPipelinesARM vkCreateDataGraphPipelinesARM;\nPFN_vkCreateDataGraphPipelineSessionARM vkCreateDataGraphPipelineSessionARM;\nPFN_vkGetDataGraphPipelineSessionBindPointRequirementsARM vkGetDataGraphPipelineSessionBindPointRequirementsARM;\nPFN_vkGetDataGraphPipelineSessionMemoryRequirementsARM vkGetDataGraphPipelineSessionMemoryRequirementsARM;\nPFN_vkBindDataGraphPipelineSessionMemoryARM vkBindDataGraphPipelineSessionMemoryARM;\nPFN_vkDestroyDataGraphPipelineSessionARM vkDestroyDataGraphPipelineSessionARM;\nPFN_vkCmdDispatchDataGraphARM vkCmdDispatchDataGraphARM;\nPFN_vkGetDataGraphPipelineAvailablePropertiesARM vkGetDataGraphPipelineAvailablePropertiesARM;\nPFN_vkGetDataGraphPipelinePropertiesARM vkGetDataGraphPipelinePropertiesARM;\nPFN_vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM;\nPFN_vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM;\nPFN_vkCmdSetAttachmentFeedbackLoopEnableEXT vkCmdSetAttachmentFeedbackLoopEnableEXT;\nPFN_vkCmdSetLineStippleKHR vkCmdSetLineStippleKHR;\nPFN_vkCmdSetLineStippleEXT vkCmdSetLineStippleEXT;\nPFN_vkGetPhysicalDeviceCalibrateableTimeDomainsKHR vkGetPhysicalDeviceCalibrateableTimeDomainsKHR;\nPFN_vkGetCalibratedTimestampsKHR vkGetCalibratedTimestampsKHR;\nPFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT vkGetPhysicalDeviceCalibrateableTimeDomainsEXT;\nPFN_vkGetCalibratedTimestampsEXT vkGetCalibratedTimestampsEXT;\nPFN_vkCmdBindDescriptorSets2KHR vkCmdBindDescriptorSets2KHR;\nPFN_vkCmdPushConstants2KHR vkCmdPushConstants2KHR;\nPFN_vkCmdPushDescriptorSet2KHR vkCmdPushDescriptorSet2KHR;\nPFN_vkCmdPushDescriptorSetWithTemplate2KHR vkCmdPushDescriptorSetWithTemplate2KHR;\nPFN_vkCmdSetDescriptorBufferOffsets2EXT vkCmdSetDescriptorBufferOffsets2EXT;\nPFN_vkCmdBindDescriptorBufferEmbeddedSamplers2EXT vkCmdBindDescriptorBufferEmbeddedSamplers2EXT;\nPFN_vkCmdBindTileMemoryQCOM vkCmdBindTileMemoryQCOM;\nPFN_vkCmdCopyMemoryIndirectKHR vkCmdCopyMemoryIndirectKHR;\nPFN_vkCmdCopyMemoryToImageIndirectKHR vkCmdCopyMemoryToImageIndirectKHR;\nPFN_vkCmdCopyMemoryIndirectNV vkCmdCopyMemoryIndirectNV;\nPFN_vkCmdCopyMemoryToImageIndirectNV vkCmdCopyMemoryToImageIndirectNV;\nPFN_vkCmdDecompressMemoryEXT vkCmdDecompressMemoryEXT;\nPFN_vkCmdDecompressMemoryIndirectCountEXT vkCmdDecompressMemoryIndirectCountEXT;\nPFN_vkCmdDecompressMemoryNV vkCmdDecompressMemoryNV;\nPFN_vkCmdDecompressMemoryIndirectCountNV vkCmdDecompressMemoryIndirectCountNV;\nPFN_vkCreateExternalComputeQueueNV vkCreateExternalComputeQueueNV;\nPFN_vkDestroyExternalComputeQueueNV vkDestroyExternalComputeQueueNV;\nPFN_vkGetExternalComputeQueueDataNV vkGetExternalComputeQueueDataNV;\nPFN_vkGetClusterAccelerationStructureBuildSizesNV vkGetClusterAccelerationStructureBuildSizesNV;\nPFN_vkCmdBuildClusterAccelerationStructureIndirectNV vkCmdBuildClusterAccelerationStructureIndirectNV;\nPFN_vkGetPartitionedAccelerationStructuresBuildSizesNV vkGetPartitionedAccelerationStructuresBuildSizesNV;\nPFN_vkCmdBuildPartitionedAccelerationStructuresNV vkCmdBuildPartitionedAccelerationStructuresNV;\nPFN_vkGetGeneratedCommandsMemoryRequirementsEXT vkGetGeneratedCommandsMemoryRequirementsEXT;\nPFN_vkCmdPreprocessGeneratedCommandsEXT vkCmdPreprocessGeneratedCommandsEXT;\nPFN_vkCmdExecuteGeneratedCommandsEXT vkCmdExecuteGeneratedCommandsEXT;\nPFN_vkCreateIndirectCommandsLayoutEXT vkCreateIndirectCommandsLayoutEXT;\nPFN_vkDestroyIndirectCommandsLayoutEXT vkDestroyIndirectCommandsLayoutEXT;\nPFN_vkCreateIndirectExecutionSetEXT vkCreateIndirectExecutionSetEXT;\nPFN_vkDestroyIndirectExecutionSetEXT vkDestroyIndirectExecutionSetEXT;\nPFN_vkUpdateIndirectExecutionSetPipelineEXT vkUpdateIndirectExecutionSetPipelineEXT;\nPFN_vkUpdateIndirectExecutionSetShaderEXT vkUpdateIndirectExecutionSetShaderEXT;\nPFN_vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV;\nPFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM;\nPFN_vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM;\nPFN_vkCreateShaderInstrumentationARM vkCreateShaderInstrumentationARM;\nPFN_vkDestroyShaderInstrumentationARM vkDestroyShaderInstrumentationARM;\nPFN_vkCmdBeginShaderInstrumentationARM vkCmdBeginShaderInstrumentationARM;\nPFN_vkCmdEndShaderInstrumentationARM vkCmdEndShaderInstrumentationARM;\nPFN_vkGetShaderInstrumentationValuesARM vkGetShaderInstrumentationValuesARM;\nPFN_vkClearShaderInstrumentationMetricsARM vkClearShaderInstrumentationMetricsARM;\nPFN_vkCmdEndRendering2EXT vkCmdEndRendering2EXT;\nPFN_vkCmdBeginCustomResolveEXT vkCmdBeginCustomResolveEXT;\nPFN_vkCmdEndRendering2KHR vkCmdEndRendering2KHR;\nPFN_vkCmdSetComputeOccupancyPriorityNV vkCmdSetComputeOccupancyPriorityNV;\n#ifdef VK_USE_PLATFORM_XLIB_KHR\nPFN_vkCreateXlibSurfaceKHR vkCreateXlibSurfaceKHR;\nPFN_vkGetPhysicalDeviceXlibPresentationSupportKHR vkGetPhysicalDeviceXlibPresentationSupportKHR;\n#endif /*VK_USE_PLATFORM_XLIB_KHR*/\n#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT\nPFN_vkAcquireXlibDisplayEXT vkAcquireXlibDisplayEXT;\nPFN_vkGetRandROutputDisplayEXT vkGetRandROutputDisplayEXT;\n#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/\n#ifdef VK_USE_PLATFORM_XCB_KHR\nPFN_vkCreateXcbSurfaceKHR vkCreateXcbSurfaceKHR;\nPFN_vkGetPhysicalDeviceXcbPresentationSupportKHR vkGetPhysicalDeviceXcbPresentationSupportKHR;\n#endif /*VK_USE_PLATFORM_XCB_KHR*/\n#ifdef VK_USE_PLATFORM_WAYLAND_KHR\nPFN_vkCreateWaylandSurfaceKHR vkCreateWaylandSurfaceKHR;\nPFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR vkGetPhysicalDeviceWaylandPresentationSupportKHR;\n#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/\n#ifdef VK_USE_PLATFORM_UBM_SEC\nPFN_vkCreateUbmSurfaceSEC vkCreateUbmSurfaceSEC;\nPFN_vkGetPhysicalDeviceUbmPresentationSupportSEC vkGetPhysicalDeviceUbmPresentationSupportSEC;\n#endif /*VK_USE_PLATFORM_UBM_SEC*/\n#ifdef VK_USE_PLATFORM_DIRECTFB_EXT\nPFN_vkCreateDirectFBSurfaceEXT vkCreateDirectFBSurfaceEXT;\nPFN_vkGetPhysicalDeviceDirectFBPresentationSupportEXT vkGetPhysicalDeviceDirectFBPresentationSupportEXT;\n#endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/\n#ifdef VK_USE_PLATFORM_ANDROID_KHR\nPFN_vkCreateAndroidSurfaceKHR vkCreateAndroidSurfaceKHR;\nPFN_vkGetAndroidHardwareBufferPropertiesANDROID vkGetAndroidHardwareBufferPropertiesANDROID;\nPFN_vkGetMemoryAndroidHardwareBufferANDROID vkGetMemoryAndroidHardwareBufferANDROID;\n#endif /*VK_USE_PLATFORM_ANDROID_KHR*/\n#ifdef VK_USE_PLATFORM_WIN32_KHR\nPFN_vkCreateWin32SurfaceKHR vkCreateWin32SurfaceKHR;\nPFN_vkGetPhysicalDeviceWin32PresentationSupportKHR vkGetPhysicalDeviceWin32PresentationSupportKHR;\nPFN_vkGetMemoryWin32HandleKHR vkGetMemoryWin32HandleKHR;\nPFN_vkGetMemoryWin32HandlePropertiesKHR vkGetMemoryWin32HandlePropertiesKHR;\nPFN_vkGetMemoryWin32HandleNV vkGetMemoryWin32HandleNV;\nPFN_vkImportSemaphoreWin32HandleKHR vkImportSemaphoreWin32HandleKHR;\nPFN_vkGetSemaphoreWin32HandleKHR vkGetSemaphoreWin32HandleKHR;\nPFN_vkImportFenceWin32HandleKHR vkImportFenceWin32HandleKHR;\nPFN_vkGetFenceWin32HandleKHR vkGetFenceWin32HandleKHR;\nPFN_vkGetPhysicalDeviceSurfacePresentModes2EXT vkGetPhysicalDeviceSurfacePresentModes2EXT;\nPFN_vkAcquireFullScreenExclusiveModeEXT vkAcquireFullScreenExclusiveModeEXT;\nPFN_vkReleaseFullScreenExclusiveModeEXT vkReleaseFullScreenExclusiveModeEXT;\nPFN_vkGetDeviceGroupSurfacePresentModes2EXT vkGetDeviceGroupSurfacePresentModes2EXT;\nPFN_vkAcquireWinrtDisplayNV vkAcquireWinrtDisplayNV;\nPFN_vkGetWinrtDisplayNV vkGetWinrtDisplayNV;\n#endif /*VK_USE_PLATFORM_WIN32_KHR*/\n#ifdef VK_USE_PLATFORM_VI_NN\nPFN_vkCreateViSurfaceNN vkCreateViSurfaceNN;\n#endif /*VK_USE_PLATFORM_VI_NN*/\n#ifdef VK_USE_PLATFORM_IOS_MVK\nPFN_vkCreateIOSSurfaceMVK vkCreateIOSSurfaceMVK;\n#endif /*VK_USE_PLATFORM_IOS_MVK*/\n#ifdef VK_USE_PLATFORM_MACOS_MVK\nPFN_vkCreateMacOSSurfaceMVK vkCreateMacOSSurfaceMVK;\n#endif /*VK_USE_PLATFORM_MACOS_MVK*/\n#ifdef VK_USE_PLATFORM_METAL_EXT\nPFN_vkCreateMetalSurfaceEXT vkCreateMetalSurfaceEXT;\nPFN_vkExportMetalObjectsEXT vkExportMetalObjectsEXT;\nPFN_vkGetMemoryMetalHandleEXT vkGetMemoryMetalHandleEXT;\nPFN_vkGetMemoryMetalHandlePropertiesEXT vkGetMemoryMetalHandlePropertiesEXT;\n#endif /*VK_USE_PLATFORM_METAL_EXT*/\n#ifdef VK_USE_PLATFORM_FUCHSIA\nPFN_vkCreateImagePipeSurfaceFUCHSIA vkCreateImagePipeSurfaceFUCHSIA;\nPFN_vkGetMemoryZirconHandleFUCHSIA vkGetMemoryZirconHandleFUCHSIA;\nPFN_vkGetMemoryZirconHandlePropertiesFUCHSIA vkGetMemoryZirconHandlePropertiesFUCHSIA;\nPFN_vkImportSemaphoreZirconHandleFUCHSIA vkImportSemaphoreZirconHandleFUCHSIA;\nPFN_vkGetSemaphoreZirconHandleFUCHSIA vkGetSemaphoreZirconHandleFUCHSIA;\nPFN_vkCreateBufferCollectionFUCHSIA vkCreateBufferCollectionFUCHSIA;\nPFN_vkSetBufferCollectionImageConstraintsFUCHSIA vkSetBufferCollectionImageConstraintsFUCHSIA;\nPFN_vkSetBufferCollectionBufferConstraintsFUCHSIA vkSetBufferCollectionBufferConstraintsFUCHSIA;\nPFN_vkDestroyBufferCollectionFUCHSIA vkDestroyBufferCollectionFUCHSIA;\nPFN_vkGetBufferCollectionPropertiesFUCHSIA vkGetBufferCollectionPropertiesFUCHSIA;\n#endif /*VK_USE_PLATFORM_FUCHSIA*/\n#ifdef VK_USE_PLATFORM_GGP\nPFN_vkCreateStreamDescriptorSurfaceGGP vkCreateStreamDescriptorSurfaceGGP;\n#endif /*VK_USE_PLATFORM_GGP*/\n#ifdef VK_USE_PLATFORM_SCI\nPFN_vkGetMemorySciBufNV vkGetMemorySciBufNV;\nPFN_vkGetPhysicalDeviceExternalMemorySciBufPropertiesNV vkGetPhysicalDeviceExternalMemorySciBufPropertiesNV;\nPFN_vkGetPhysicalDeviceSciBufAttributesNV vkGetPhysicalDeviceSciBufAttributesNV;\nPFN_vkCreateSemaphoreSciSyncPoolNV vkCreateSemaphoreSciSyncPoolNV;\nPFN_vkDestroySemaphoreSciSyncPoolNV vkDestroySemaphoreSciSyncPoolNV;\nPFN_vkGetFenceSciSyncFenceNV vkGetFenceSciSyncFenceNV;\nPFN_vkGetFenceSciSyncObjNV vkGetFenceSciSyncObjNV;\nPFN_vkImportFenceSciSyncFenceNV vkImportFenceSciSyncFenceNV;\nPFN_vkImportFenceSciSyncObjNV vkImportFenceSciSyncObjNV;\nPFN_vkGetPhysicalDeviceSciSyncAttributesNV vkGetPhysicalDeviceSciSyncAttributesNV;\nPFN_vkGetSemaphoreSciSyncObjNV vkGetSemaphoreSciSyncObjNV;\nPFN_vkImportSemaphoreSciSyncObjNV vkImportSemaphoreSciSyncObjNV;\n#endif /*VK_USE_PLATFORM_SCI*/\n#ifdef VK_ENABLE_BETA_EXTENSIONS\nPFN_vkCreateExecutionGraphPipelinesAMDX vkCreateExecutionGraphPipelinesAMDX;\nPFN_vkGetExecutionGraphPipelineScratchSizeAMDX vkGetExecutionGraphPipelineScratchSizeAMDX;\nPFN_vkGetExecutionGraphPipelineNodeIndexAMDX vkGetExecutionGraphPipelineNodeIndexAMDX;\nPFN_vkCmdInitializeGraphScratchMemoryAMDX vkCmdInitializeGraphScratchMemoryAMDX;\nPFN_vkCmdDispatchGraphAMDX vkCmdDispatchGraphAMDX;\nPFN_vkCmdDispatchGraphIndirectAMDX vkCmdDispatchGraphIndirectAMDX;\nPFN_vkCmdDispatchGraphIndirectCountAMDX vkCmdDispatchGraphIndirectCountAMDX;\nPFN_vkCreateCudaModuleNV vkCreateCudaModuleNV;\nPFN_vkGetCudaModuleCacheNV vkGetCudaModuleCacheNV;\nPFN_vkCreateCudaFunctionNV vkCreateCudaFunctionNV;\nPFN_vkDestroyCudaModuleNV vkDestroyCudaModuleNV;\nPFN_vkDestroyCudaFunctionNV vkDestroyCudaFunctionNV;\nPFN_vkCmdCudaLaunchKernelNV vkCmdCudaLaunchKernelNV;\n#endif /*VK_ENABLE_BETA_EXTENSIONS*/\n#ifdef VK_USE_PLATFORM_SCREEN_QNX\nPFN_vkCreateScreenSurfaceQNX vkCreateScreenSurfaceQNX;\nPFN_vkGetPhysicalDeviceScreenPresentationSupportQNX vkGetPhysicalDeviceScreenPresentationSupportQNX;\nPFN_vkGetScreenBufferPropertiesQNX vkGetScreenBufferPropertiesQNX;\n#endif /*VK_USE_PLATFORM_SCREEN_QNX*/\n#ifdef VK_USE_PLATFORM_OHOS\nPFN_vkGetNativeBufferPropertiesOHOS vkGetNativeBufferPropertiesOHOS;\nPFN_vkGetMemoryNativeBufferOHOS vkGetMemoryNativeBufferOHOS;\nPFN_vkCreateSurfaceOHOS vkCreateSurfaceOHOS;\n#endif /*VK_USE_PLATFORM_OHOS*/\n#endif /*VKBIND_NO_GLOBAL_API*/\n\ntypedef void* VkbHandle;\ntypedef void (* VkbProc)(void);\n\nstatic VkbHandle vkb_dlopen(const char* filename)\n{\n#ifdef _WIN32\n    return (VkbHandle)LoadLibraryA(filename);\n#else\n    return (VkbHandle)dlopen(filename, RTLD_NOW);\n#endif\n}\n\nstatic void vkb_dlclose(VkbHandle handle)\n{\n#ifdef _WIN32\n    FreeLibrary((HMODULE)handle);\n#else\n    dlclose((void*)handle);\n#endif\n}\n\nstatic VkbProc vkb_dlsym(VkbHandle handle, const char* symbol)\n{\n#ifdef _WIN32\n    return (VkbProc)GetProcAddress((HMODULE)handle, symbol);\n#else\n#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))\n    #pragma GCC diagnostic push\n    #pragma GCC diagnostic ignored \"-Wpedantic\"\n#endif\n    return (VkbProc)dlsym((void*)handle, symbol);\n#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))\n    #pragma GCC diagnostic pop\n#endif\n#endif\n}\n\n\nstatic unsigned int g_vkbInitCount = 0;\nstatic VkbHandle g_vkbVulkanSO = NULL;\n\nstatic VkResult vkbLoadVulkanSO(void)\n{\n    size_t i;\n\n    const char* vulkanSONames[] = {\n    #if defined(VKBIND_VULKAN_SO)\n        VKBIND_VULKAN_SO,\n    #endif\n    #if defined(_WIN32)\n        \"vulkan-1.dll\"\n    #elif defined(__APPLE__)\n        /*\n        The idea here is that since MoltenVK seems to be the de facto standard for Vulkan on Apple platforms at the moment we'll try\n        that first. If Apple ever decides to officially support Vulkan we can perhaps consider dropping it to the bottom of the priority\n        list. Not sure if this reasoning is sound, but it makes sense in my head!\n        */\n        \"libMoltenVK.dylib\",\n        \"libvulkan.dylib.1\",\n        \"libvulkan.dylib\"\n    #else\n        \"libvulkan.so.1\",\n        \"libvulkan.so\"\n    #endif\n    };\n\n    for (i = 0; i < sizeof(vulkanSONames)/sizeof(vulkanSONames[0]); ++i) {\n        VkbHandle handle = vkb_dlopen(vulkanSONames[i]);\n        if (handle != NULL) {\n            g_vkbVulkanSO = handle;\n            return VK_SUCCESS;\n        }\n    }\n\n    return VK_ERROR_INCOMPATIBLE_DRIVER;\n}\n\nstatic VkResult vkbLoadVulkanSymbols(VkbAPI* pAPI)\n{\n    pAPI->vkCreateInstance = (PFN_vkCreateInstance)vkb_dlsym(g_vkbVulkanSO, \"vkCreateInstance\");\n    pAPI->vkDestroyInstance = (PFN_vkDestroyInstance)vkb_dlsym(g_vkbVulkanSO, \"vkDestroyInstance\");\n    pAPI->vkEnumeratePhysicalDevices = (PFN_vkEnumeratePhysicalDevices)vkb_dlsym(g_vkbVulkanSO, \"vkEnumeratePhysicalDevices\");\n    pAPI->vkGetPhysicalDeviceFeatures = (PFN_vkGetPhysicalDeviceFeatures)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceFeatures\");\n    pAPI->vkGetPhysicalDeviceFormatProperties = (PFN_vkGetPhysicalDeviceFormatProperties)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceFormatProperties\");\n    pAPI->vkGetPhysicalDeviceImageFormatProperties = (PFN_vkGetPhysicalDeviceImageFormatProperties)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceImageFormatProperties\");\n    pAPI->vkGetPhysicalDeviceProperties = (PFN_vkGetPhysicalDeviceProperties)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceProperties\");\n    pAPI->vkGetPhysicalDeviceQueueFamilyProperties = (PFN_vkGetPhysicalDeviceQueueFamilyProperties)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceQueueFamilyProperties\");\n    pAPI->vkGetPhysicalDeviceMemoryProperties = (PFN_vkGetPhysicalDeviceMemoryProperties)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceMemoryProperties\");\n    pAPI->vkGetInstanceProcAddr = (PFN_vkGetInstanceProcAddr)vkb_dlsym(g_vkbVulkanSO, \"vkGetInstanceProcAddr\");\n    pAPI->vkGetDeviceProcAddr = (PFN_vkGetDeviceProcAddr)vkb_dlsym(g_vkbVulkanSO, \"vkGetDeviceProcAddr\");\n    pAPI->vkCreateDevice = (PFN_vkCreateDevice)vkb_dlsym(g_vkbVulkanSO, \"vkCreateDevice\");\n    pAPI->vkDestroyDevice = (PFN_vkDestroyDevice)vkb_dlsym(g_vkbVulkanSO, \"vkDestroyDevice\");\n    pAPI->vkEnumerateInstanceExtensionProperties = (PFN_vkEnumerateInstanceExtensionProperties)vkb_dlsym(g_vkbVulkanSO, \"vkEnumerateInstanceExtensionProperties\");\n    pAPI->vkEnumerateDeviceExtensionProperties = (PFN_vkEnumerateDeviceExtensionProperties)vkb_dlsym(g_vkbVulkanSO, \"vkEnumerateDeviceExtensionProperties\");\n    pAPI->vkEnumerateInstanceLayerProperties = (PFN_vkEnumerateInstanceLayerProperties)vkb_dlsym(g_vkbVulkanSO, \"vkEnumerateInstanceLayerProperties\");\n    pAPI->vkEnumerateDeviceLayerProperties = (PFN_vkEnumerateDeviceLayerProperties)vkb_dlsym(g_vkbVulkanSO, \"vkEnumerateDeviceLayerProperties\");\n    pAPI->vkGetDeviceQueue = (PFN_vkGetDeviceQueue)vkb_dlsym(g_vkbVulkanSO, \"vkGetDeviceQueue\");\n    pAPI->vkQueueSubmit = (PFN_vkQueueSubmit)vkb_dlsym(g_vkbVulkanSO, \"vkQueueSubmit\");\n    pAPI->vkQueueWaitIdle = (PFN_vkQueueWaitIdle)vkb_dlsym(g_vkbVulkanSO, \"vkQueueWaitIdle\");\n    pAPI->vkDeviceWaitIdle = (PFN_vkDeviceWaitIdle)vkb_dlsym(g_vkbVulkanSO, \"vkDeviceWaitIdle\");\n    pAPI->vkAllocateMemory = (PFN_vkAllocateMemory)vkb_dlsym(g_vkbVulkanSO, \"vkAllocateMemory\");\n    pAPI->vkFreeMemory = (PFN_vkFreeMemory)vkb_dlsym(g_vkbVulkanSO, \"vkFreeMemory\");\n    pAPI->vkMapMemory = (PFN_vkMapMemory)vkb_dlsym(g_vkbVulkanSO, \"vkMapMemory\");\n    pAPI->vkUnmapMemory = (PFN_vkUnmapMemory)vkb_dlsym(g_vkbVulkanSO, \"vkUnmapMemory\");\n    pAPI->vkFlushMappedMemoryRanges = (PFN_vkFlushMappedMemoryRanges)vkb_dlsym(g_vkbVulkanSO, \"vkFlushMappedMemoryRanges\");\n    pAPI->vkInvalidateMappedMemoryRanges = (PFN_vkInvalidateMappedMemoryRanges)vkb_dlsym(g_vkbVulkanSO, \"vkInvalidateMappedMemoryRanges\");\n    pAPI->vkGetDeviceMemoryCommitment = (PFN_vkGetDeviceMemoryCommitment)vkb_dlsym(g_vkbVulkanSO, \"vkGetDeviceMemoryCommitment\");\n    pAPI->vkBindBufferMemory = (PFN_vkBindBufferMemory)vkb_dlsym(g_vkbVulkanSO, \"vkBindBufferMemory\");\n    pAPI->vkBindImageMemory = (PFN_vkBindImageMemory)vkb_dlsym(g_vkbVulkanSO, \"vkBindImageMemory\");\n    pAPI->vkGetBufferMemoryRequirements = (PFN_vkGetBufferMemoryRequirements)vkb_dlsym(g_vkbVulkanSO, \"vkGetBufferMemoryRequirements\");\n    pAPI->vkGetImageMemoryRequirements = (PFN_vkGetImageMemoryRequirements)vkb_dlsym(g_vkbVulkanSO, \"vkGetImageMemoryRequirements\");\n    pAPI->vkGetImageSparseMemoryRequirements = (PFN_vkGetImageSparseMemoryRequirements)vkb_dlsym(g_vkbVulkanSO, \"vkGetImageSparseMemoryRequirements\");\n    pAPI->vkGetPhysicalDeviceSparseImageFormatProperties = (PFN_vkGetPhysicalDeviceSparseImageFormatProperties)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceSparseImageFormatProperties\");\n    pAPI->vkQueueBindSparse = (PFN_vkQueueBindSparse)vkb_dlsym(g_vkbVulkanSO, \"vkQueueBindSparse\");\n    pAPI->vkCreateFence = (PFN_vkCreateFence)vkb_dlsym(g_vkbVulkanSO, \"vkCreateFence\");\n    pAPI->vkDestroyFence = (PFN_vkDestroyFence)vkb_dlsym(g_vkbVulkanSO, \"vkDestroyFence\");\n    pAPI->vkResetFences = (PFN_vkResetFences)vkb_dlsym(g_vkbVulkanSO, \"vkResetFences\");\n    pAPI->vkGetFenceStatus = (PFN_vkGetFenceStatus)vkb_dlsym(g_vkbVulkanSO, \"vkGetFenceStatus\");\n    pAPI->vkWaitForFences = (PFN_vkWaitForFences)vkb_dlsym(g_vkbVulkanSO, \"vkWaitForFences\");\n    pAPI->vkCreateSemaphore = (PFN_vkCreateSemaphore)vkb_dlsym(g_vkbVulkanSO, \"vkCreateSemaphore\");\n    pAPI->vkDestroySemaphore = (PFN_vkDestroySemaphore)vkb_dlsym(g_vkbVulkanSO, \"vkDestroySemaphore\");\n    pAPI->vkCreateQueryPool = (PFN_vkCreateQueryPool)vkb_dlsym(g_vkbVulkanSO, \"vkCreateQueryPool\");\n    pAPI->vkDestroyQueryPool = (PFN_vkDestroyQueryPool)vkb_dlsym(g_vkbVulkanSO, \"vkDestroyQueryPool\");\n    pAPI->vkGetQueryPoolResults = (PFN_vkGetQueryPoolResults)vkb_dlsym(g_vkbVulkanSO, \"vkGetQueryPoolResults\");\n    pAPI->vkCreateBuffer = (PFN_vkCreateBuffer)vkb_dlsym(g_vkbVulkanSO, \"vkCreateBuffer\");\n    pAPI->vkDestroyBuffer = (PFN_vkDestroyBuffer)vkb_dlsym(g_vkbVulkanSO, \"vkDestroyBuffer\");\n    pAPI->vkCreateImage = (PFN_vkCreateImage)vkb_dlsym(g_vkbVulkanSO, \"vkCreateImage\");\n    pAPI->vkDestroyImage = (PFN_vkDestroyImage)vkb_dlsym(g_vkbVulkanSO, \"vkDestroyImage\");\n    pAPI->vkGetImageSubresourceLayout = (PFN_vkGetImageSubresourceLayout)vkb_dlsym(g_vkbVulkanSO, \"vkGetImageSubresourceLayout\");\n    pAPI->vkCreateImageView = (PFN_vkCreateImageView)vkb_dlsym(g_vkbVulkanSO, \"vkCreateImageView\");\n    pAPI->vkDestroyImageView = (PFN_vkDestroyImageView)vkb_dlsym(g_vkbVulkanSO, \"vkDestroyImageView\");\n    pAPI->vkCreateCommandPool = (PFN_vkCreateCommandPool)vkb_dlsym(g_vkbVulkanSO, \"vkCreateCommandPool\");\n    pAPI->vkDestroyCommandPool = (PFN_vkDestroyCommandPool)vkb_dlsym(g_vkbVulkanSO, \"vkDestroyCommandPool\");\n    pAPI->vkResetCommandPool = (PFN_vkResetCommandPool)vkb_dlsym(g_vkbVulkanSO, \"vkResetCommandPool\");\n    pAPI->vkAllocateCommandBuffers = (PFN_vkAllocateCommandBuffers)vkb_dlsym(g_vkbVulkanSO, \"vkAllocateCommandBuffers\");\n    pAPI->vkFreeCommandBuffers = (PFN_vkFreeCommandBuffers)vkb_dlsym(g_vkbVulkanSO, \"vkFreeCommandBuffers\");\n    pAPI->vkBeginCommandBuffer = (PFN_vkBeginCommandBuffer)vkb_dlsym(g_vkbVulkanSO, \"vkBeginCommandBuffer\");\n    pAPI->vkEndCommandBuffer = (PFN_vkEndCommandBuffer)vkb_dlsym(g_vkbVulkanSO, \"vkEndCommandBuffer\");\n    pAPI->vkResetCommandBuffer = (PFN_vkResetCommandBuffer)vkb_dlsym(g_vkbVulkanSO, \"vkResetCommandBuffer\");\n    pAPI->vkCmdCopyBuffer = (PFN_vkCmdCopyBuffer)vkb_dlsym(g_vkbVulkanSO, \"vkCmdCopyBuffer\");\n    pAPI->vkCmdCopyImage = (PFN_vkCmdCopyImage)vkb_dlsym(g_vkbVulkanSO, \"vkCmdCopyImage\");\n    pAPI->vkCmdCopyBufferToImage = (PFN_vkCmdCopyBufferToImage)vkb_dlsym(g_vkbVulkanSO, \"vkCmdCopyBufferToImage\");\n    pAPI->vkCmdCopyImageToBuffer = (PFN_vkCmdCopyImageToBuffer)vkb_dlsym(g_vkbVulkanSO, \"vkCmdCopyImageToBuffer\");\n    pAPI->vkCmdUpdateBuffer = (PFN_vkCmdUpdateBuffer)vkb_dlsym(g_vkbVulkanSO, \"vkCmdUpdateBuffer\");\n    pAPI->vkCmdFillBuffer = (PFN_vkCmdFillBuffer)vkb_dlsym(g_vkbVulkanSO, \"vkCmdFillBuffer\");\n    pAPI->vkCmdPipelineBarrier = (PFN_vkCmdPipelineBarrier)vkb_dlsym(g_vkbVulkanSO, \"vkCmdPipelineBarrier\");\n    pAPI->vkCmdBeginQuery = (PFN_vkCmdBeginQuery)vkb_dlsym(g_vkbVulkanSO, \"vkCmdBeginQuery\");\n    pAPI->vkCmdEndQuery = (PFN_vkCmdEndQuery)vkb_dlsym(g_vkbVulkanSO, \"vkCmdEndQuery\");\n    pAPI->vkCmdResetQueryPool = (PFN_vkCmdResetQueryPool)vkb_dlsym(g_vkbVulkanSO, \"vkCmdResetQueryPool\");\n    pAPI->vkCmdWriteTimestamp = (PFN_vkCmdWriteTimestamp)vkb_dlsym(g_vkbVulkanSO, \"vkCmdWriteTimestamp\");\n    pAPI->vkCmdCopyQueryPoolResults = (PFN_vkCmdCopyQueryPoolResults)vkb_dlsym(g_vkbVulkanSO, \"vkCmdCopyQueryPoolResults\");\n    pAPI->vkCmdExecuteCommands = (PFN_vkCmdExecuteCommands)vkb_dlsym(g_vkbVulkanSO, \"vkCmdExecuteCommands\");\n    pAPI->vkCreateEvent = (PFN_vkCreateEvent)vkb_dlsym(g_vkbVulkanSO, \"vkCreateEvent\");\n    pAPI->vkDestroyEvent = (PFN_vkDestroyEvent)vkb_dlsym(g_vkbVulkanSO, \"vkDestroyEvent\");\n    pAPI->vkGetEventStatus = (PFN_vkGetEventStatus)vkb_dlsym(g_vkbVulkanSO, \"vkGetEventStatus\");\n    pAPI->vkSetEvent = (PFN_vkSetEvent)vkb_dlsym(g_vkbVulkanSO, \"vkSetEvent\");\n    pAPI->vkResetEvent = (PFN_vkResetEvent)vkb_dlsym(g_vkbVulkanSO, \"vkResetEvent\");\n    pAPI->vkCreateBufferView = (PFN_vkCreateBufferView)vkb_dlsym(g_vkbVulkanSO, \"vkCreateBufferView\");\n    pAPI->vkDestroyBufferView = (PFN_vkDestroyBufferView)vkb_dlsym(g_vkbVulkanSO, \"vkDestroyBufferView\");\n    pAPI->vkCreateShaderModule = (PFN_vkCreateShaderModule)vkb_dlsym(g_vkbVulkanSO, \"vkCreateShaderModule\");\n    pAPI->vkDestroyShaderModule = (PFN_vkDestroyShaderModule)vkb_dlsym(g_vkbVulkanSO, \"vkDestroyShaderModule\");\n    pAPI->vkCreatePipelineCache = (PFN_vkCreatePipelineCache)vkb_dlsym(g_vkbVulkanSO, \"vkCreatePipelineCache\");\n    pAPI->vkDestroyPipelineCache = (PFN_vkDestroyPipelineCache)vkb_dlsym(g_vkbVulkanSO, \"vkDestroyPipelineCache\");\n    pAPI->vkGetPipelineCacheData = (PFN_vkGetPipelineCacheData)vkb_dlsym(g_vkbVulkanSO, \"vkGetPipelineCacheData\");\n    pAPI->vkMergePipelineCaches = (PFN_vkMergePipelineCaches)vkb_dlsym(g_vkbVulkanSO, \"vkMergePipelineCaches\");\n    pAPI->vkCreateComputePipelines = (PFN_vkCreateComputePipelines)vkb_dlsym(g_vkbVulkanSO, \"vkCreateComputePipelines\");\n    pAPI->vkDestroyPipeline = (PFN_vkDestroyPipeline)vkb_dlsym(g_vkbVulkanSO, \"vkDestroyPipeline\");\n    pAPI->vkCreatePipelineLayout = (PFN_vkCreatePipelineLayout)vkb_dlsym(g_vkbVulkanSO, \"vkCreatePipelineLayout\");\n    pAPI->vkDestroyPipelineLayout = (PFN_vkDestroyPipelineLayout)vkb_dlsym(g_vkbVulkanSO, \"vkDestroyPipelineLayout\");\n    pAPI->vkCreateSampler = (PFN_vkCreateSampler)vkb_dlsym(g_vkbVulkanSO, \"vkCreateSampler\");\n    pAPI->vkDestroySampler = (PFN_vkDestroySampler)vkb_dlsym(g_vkbVulkanSO, \"vkDestroySampler\");\n    pAPI->vkCreateDescriptorSetLayout = (PFN_vkCreateDescriptorSetLayout)vkb_dlsym(g_vkbVulkanSO, \"vkCreateDescriptorSetLayout\");\n    pAPI->vkDestroyDescriptorSetLayout = (PFN_vkDestroyDescriptorSetLayout)vkb_dlsym(g_vkbVulkanSO, \"vkDestroyDescriptorSetLayout\");\n    pAPI->vkCreateDescriptorPool = (PFN_vkCreateDescriptorPool)vkb_dlsym(g_vkbVulkanSO, \"vkCreateDescriptorPool\");\n    pAPI->vkDestroyDescriptorPool = (PFN_vkDestroyDescriptorPool)vkb_dlsym(g_vkbVulkanSO, \"vkDestroyDescriptorPool\");\n    pAPI->vkResetDescriptorPool = (PFN_vkResetDescriptorPool)vkb_dlsym(g_vkbVulkanSO, \"vkResetDescriptorPool\");\n    pAPI->vkAllocateDescriptorSets = (PFN_vkAllocateDescriptorSets)vkb_dlsym(g_vkbVulkanSO, \"vkAllocateDescriptorSets\");\n    pAPI->vkFreeDescriptorSets = (PFN_vkFreeDescriptorSets)vkb_dlsym(g_vkbVulkanSO, \"vkFreeDescriptorSets\");\n    pAPI->vkUpdateDescriptorSets = (PFN_vkUpdateDescriptorSets)vkb_dlsym(g_vkbVulkanSO, \"vkUpdateDescriptorSets\");\n    pAPI->vkCmdBindPipeline = (PFN_vkCmdBindPipeline)vkb_dlsym(g_vkbVulkanSO, \"vkCmdBindPipeline\");\n    pAPI->vkCmdBindDescriptorSets = (PFN_vkCmdBindDescriptorSets)vkb_dlsym(g_vkbVulkanSO, \"vkCmdBindDescriptorSets\");\n    pAPI->vkCmdClearColorImage = (PFN_vkCmdClearColorImage)vkb_dlsym(g_vkbVulkanSO, \"vkCmdClearColorImage\");\n    pAPI->vkCmdDispatch = (PFN_vkCmdDispatch)vkb_dlsym(g_vkbVulkanSO, \"vkCmdDispatch\");\n    pAPI->vkCmdDispatchIndirect = (PFN_vkCmdDispatchIndirect)vkb_dlsym(g_vkbVulkanSO, \"vkCmdDispatchIndirect\");\n    pAPI->vkCmdSetEvent = (PFN_vkCmdSetEvent)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetEvent\");\n    pAPI->vkCmdResetEvent = (PFN_vkCmdResetEvent)vkb_dlsym(g_vkbVulkanSO, \"vkCmdResetEvent\");\n    pAPI->vkCmdWaitEvents = (PFN_vkCmdWaitEvents)vkb_dlsym(g_vkbVulkanSO, \"vkCmdWaitEvents\");\n    pAPI->vkCmdPushConstants = (PFN_vkCmdPushConstants)vkb_dlsym(g_vkbVulkanSO, \"vkCmdPushConstants\");\n    pAPI->vkCreateGraphicsPipelines = (PFN_vkCreateGraphicsPipelines)vkb_dlsym(g_vkbVulkanSO, \"vkCreateGraphicsPipelines\");\n    pAPI->vkCreateFramebuffer = (PFN_vkCreateFramebuffer)vkb_dlsym(g_vkbVulkanSO, \"vkCreateFramebuffer\");\n    pAPI->vkDestroyFramebuffer = (PFN_vkDestroyFramebuffer)vkb_dlsym(g_vkbVulkanSO, \"vkDestroyFramebuffer\");\n    pAPI->vkCreateRenderPass = (PFN_vkCreateRenderPass)vkb_dlsym(g_vkbVulkanSO, \"vkCreateRenderPass\");\n    pAPI->vkDestroyRenderPass = (PFN_vkDestroyRenderPass)vkb_dlsym(g_vkbVulkanSO, \"vkDestroyRenderPass\");\n    pAPI->vkGetRenderAreaGranularity = (PFN_vkGetRenderAreaGranularity)vkb_dlsym(g_vkbVulkanSO, \"vkGetRenderAreaGranularity\");\n    pAPI->vkCmdSetViewport = (PFN_vkCmdSetViewport)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetViewport\");\n    pAPI->vkCmdSetScissor = (PFN_vkCmdSetScissor)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetScissor\");\n    pAPI->vkCmdSetLineWidth = (PFN_vkCmdSetLineWidth)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetLineWidth\");\n    pAPI->vkCmdSetDepthBias = (PFN_vkCmdSetDepthBias)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetDepthBias\");\n    pAPI->vkCmdSetBlendConstants = (PFN_vkCmdSetBlendConstants)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetBlendConstants\");\n    pAPI->vkCmdSetDepthBounds = (PFN_vkCmdSetDepthBounds)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetDepthBounds\");\n    pAPI->vkCmdSetStencilCompareMask = (PFN_vkCmdSetStencilCompareMask)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetStencilCompareMask\");\n    pAPI->vkCmdSetStencilWriteMask = (PFN_vkCmdSetStencilWriteMask)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetStencilWriteMask\");\n    pAPI->vkCmdSetStencilReference = (PFN_vkCmdSetStencilReference)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetStencilReference\");\n    pAPI->vkCmdBindIndexBuffer = (PFN_vkCmdBindIndexBuffer)vkb_dlsym(g_vkbVulkanSO, \"vkCmdBindIndexBuffer\");\n    pAPI->vkCmdBindVertexBuffers = (PFN_vkCmdBindVertexBuffers)vkb_dlsym(g_vkbVulkanSO, \"vkCmdBindVertexBuffers\");\n    pAPI->vkCmdDraw = (PFN_vkCmdDraw)vkb_dlsym(g_vkbVulkanSO, \"vkCmdDraw\");\n    pAPI->vkCmdDrawIndexed = (PFN_vkCmdDrawIndexed)vkb_dlsym(g_vkbVulkanSO, \"vkCmdDrawIndexed\");\n    pAPI->vkCmdDrawIndirect = (PFN_vkCmdDrawIndirect)vkb_dlsym(g_vkbVulkanSO, \"vkCmdDrawIndirect\");\n    pAPI->vkCmdDrawIndexedIndirect = (PFN_vkCmdDrawIndexedIndirect)vkb_dlsym(g_vkbVulkanSO, \"vkCmdDrawIndexedIndirect\");\n    pAPI->vkCmdBlitImage = (PFN_vkCmdBlitImage)vkb_dlsym(g_vkbVulkanSO, \"vkCmdBlitImage\");\n    pAPI->vkCmdClearDepthStencilImage = (PFN_vkCmdClearDepthStencilImage)vkb_dlsym(g_vkbVulkanSO, \"vkCmdClearDepthStencilImage\");\n    pAPI->vkCmdClearAttachments = (PFN_vkCmdClearAttachments)vkb_dlsym(g_vkbVulkanSO, \"vkCmdClearAttachments\");\n    pAPI->vkCmdResolveImage = (PFN_vkCmdResolveImage)vkb_dlsym(g_vkbVulkanSO, \"vkCmdResolveImage\");\n    pAPI->vkCmdBeginRenderPass = (PFN_vkCmdBeginRenderPass)vkb_dlsym(g_vkbVulkanSO, \"vkCmdBeginRenderPass\");\n    pAPI->vkCmdNextSubpass = (PFN_vkCmdNextSubpass)vkb_dlsym(g_vkbVulkanSO, \"vkCmdNextSubpass\");\n    pAPI->vkCmdEndRenderPass = (PFN_vkCmdEndRenderPass)vkb_dlsym(g_vkbVulkanSO, \"vkCmdEndRenderPass\");\n    pAPI->vkEnumerateInstanceVersion = (PFN_vkEnumerateInstanceVersion)vkb_dlsym(g_vkbVulkanSO, \"vkEnumerateInstanceVersion\");\n    pAPI->vkBindBufferMemory2 = (PFN_vkBindBufferMemory2)vkb_dlsym(g_vkbVulkanSO, \"vkBindBufferMemory2\");\n    pAPI->vkBindImageMemory2 = (PFN_vkBindImageMemory2)vkb_dlsym(g_vkbVulkanSO, \"vkBindImageMemory2\");\n    pAPI->vkGetDeviceGroupPeerMemoryFeatures = (PFN_vkGetDeviceGroupPeerMemoryFeatures)vkb_dlsym(g_vkbVulkanSO, \"vkGetDeviceGroupPeerMemoryFeatures\");\n    pAPI->vkCmdSetDeviceMask = (PFN_vkCmdSetDeviceMask)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetDeviceMask\");\n    pAPI->vkEnumeratePhysicalDeviceGroups = (PFN_vkEnumeratePhysicalDeviceGroups)vkb_dlsym(g_vkbVulkanSO, \"vkEnumeratePhysicalDeviceGroups\");\n    pAPI->vkGetImageMemoryRequirements2 = (PFN_vkGetImageMemoryRequirements2)vkb_dlsym(g_vkbVulkanSO, \"vkGetImageMemoryRequirements2\");\n    pAPI->vkGetBufferMemoryRequirements2 = (PFN_vkGetBufferMemoryRequirements2)vkb_dlsym(g_vkbVulkanSO, \"vkGetBufferMemoryRequirements2\");\n    pAPI->vkGetImageSparseMemoryRequirements2 = (PFN_vkGetImageSparseMemoryRequirements2)vkb_dlsym(g_vkbVulkanSO, \"vkGetImageSparseMemoryRequirements2\");\n    pAPI->vkGetPhysicalDeviceFeatures2 = (PFN_vkGetPhysicalDeviceFeatures2)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceFeatures2\");\n    pAPI->vkGetPhysicalDeviceProperties2 = (PFN_vkGetPhysicalDeviceProperties2)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceProperties2\");\n    pAPI->vkGetPhysicalDeviceFormatProperties2 = (PFN_vkGetPhysicalDeviceFormatProperties2)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceFormatProperties2\");\n    pAPI->vkGetPhysicalDeviceImageFormatProperties2 = (PFN_vkGetPhysicalDeviceImageFormatProperties2)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceImageFormatProperties2\");\n    pAPI->vkGetPhysicalDeviceQueueFamilyProperties2 = (PFN_vkGetPhysicalDeviceQueueFamilyProperties2)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceQueueFamilyProperties2\");\n    pAPI->vkGetPhysicalDeviceMemoryProperties2 = (PFN_vkGetPhysicalDeviceMemoryProperties2)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceMemoryProperties2\");\n    pAPI->vkGetPhysicalDeviceSparseImageFormatProperties2 = (PFN_vkGetPhysicalDeviceSparseImageFormatProperties2)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceSparseImageFormatProperties2\");\n    pAPI->vkTrimCommandPool = (PFN_vkTrimCommandPool)vkb_dlsym(g_vkbVulkanSO, \"vkTrimCommandPool\");\n    pAPI->vkGetDeviceQueue2 = (PFN_vkGetDeviceQueue2)vkb_dlsym(g_vkbVulkanSO, \"vkGetDeviceQueue2\");\n    pAPI->vkGetPhysicalDeviceExternalBufferProperties = (PFN_vkGetPhysicalDeviceExternalBufferProperties)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceExternalBufferProperties\");\n    pAPI->vkGetPhysicalDeviceExternalFenceProperties = (PFN_vkGetPhysicalDeviceExternalFenceProperties)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceExternalFenceProperties\");\n    pAPI->vkGetPhysicalDeviceExternalSemaphoreProperties = (PFN_vkGetPhysicalDeviceExternalSemaphoreProperties)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceExternalSemaphoreProperties\");\n    pAPI->vkCmdDispatchBase = (PFN_vkCmdDispatchBase)vkb_dlsym(g_vkbVulkanSO, \"vkCmdDispatchBase\");\n    pAPI->vkCreateDescriptorUpdateTemplate = (PFN_vkCreateDescriptorUpdateTemplate)vkb_dlsym(g_vkbVulkanSO, \"vkCreateDescriptorUpdateTemplate\");\n    pAPI->vkDestroyDescriptorUpdateTemplate = (PFN_vkDestroyDescriptorUpdateTemplate)vkb_dlsym(g_vkbVulkanSO, \"vkDestroyDescriptorUpdateTemplate\");\n    pAPI->vkUpdateDescriptorSetWithTemplate = (PFN_vkUpdateDescriptorSetWithTemplate)vkb_dlsym(g_vkbVulkanSO, \"vkUpdateDescriptorSetWithTemplate\");\n    pAPI->vkGetDescriptorSetLayoutSupport = (PFN_vkGetDescriptorSetLayoutSupport)vkb_dlsym(g_vkbVulkanSO, \"vkGetDescriptorSetLayoutSupport\");\n    pAPI->vkCreateSamplerYcbcrConversion = (PFN_vkCreateSamplerYcbcrConversion)vkb_dlsym(g_vkbVulkanSO, \"vkCreateSamplerYcbcrConversion\");\n    pAPI->vkDestroySamplerYcbcrConversion = (PFN_vkDestroySamplerYcbcrConversion)vkb_dlsym(g_vkbVulkanSO, \"vkDestroySamplerYcbcrConversion\");\n    pAPI->vkResetQueryPool = (PFN_vkResetQueryPool)vkb_dlsym(g_vkbVulkanSO, \"vkResetQueryPool\");\n    pAPI->vkGetSemaphoreCounterValue = (PFN_vkGetSemaphoreCounterValue)vkb_dlsym(g_vkbVulkanSO, \"vkGetSemaphoreCounterValue\");\n    pAPI->vkWaitSemaphores = (PFN_vkWaitSemaphores)vkb_dlsym(g_vkbVulkanSO, \"vkWaitSemaphores\");\n    pAPI->vkSignalSemaphore = (PFN_vkSignalSemaphore)vkb_dlsym(g_vkbVulkanSO, \"vkSignalSemaphore\");\n    pAPI->vkGetBufferDeviceAddress = (PFN_vkGetBufferDeviceAddress)vkb_dlsym(g_vkbVulkanSO, \"vkGetBufferDeviceAddress\");\n    pAPI->vkGetBufferOpaqueCaptureAddress = (PFN_vkGetBufferOpaqueCaptureAddress)vkb_dlsym(g_vkbVulkanSO, \"vkGetBufferOpaqueCaptureAddress\");\n    pAPI->vkGetDeviceMemoryOpaqueCaptureAddress = (PFN_vkGetDeviceMemoryOpaqueCaptureAddress)vkb_dlsym(g_vkbVulkanSO, \"vkGetDeviceMemoryOpaqueCaptureAddress\");\n    pAPI->vkCmdDrawIndirectCount = (PFN_vkCmdDrawIndirectCount)vkb_dlsym(g_vkbVulkanSO, \"vkCmdDrawIndirectCount\");\n    pAPI->vkCmdDrawIndexedIndirectCount = (PFN_vkCmdDrawIndexedIndirectCount)vkb_dlsym(g_vkbVulkanSO, \"vkCmdDrawIndexedIndirectCount\");\n    pAPI->vkCreateRenderPass2 = (PFN_vkCreateRenderPass2)vkb_dlsym(g_vkbVulkanSO, \"vkCreateRenderPass2\");\n    pAPI->vkCmdBeginRenderPass2 = (PFN_vkCmdBeginRenderPass2)vkb_dlsym(g_vkbVulkanSO, \"vkCmdBeginRenderPass2\");\n    pAPI->vkCmdNextSubpass2 = (PFN_vkCmdNextSubpass2)vkb_dlsym(g_vkbVulkanSO, \"vkCmdNextSubpass2\");\n    pAPI->vkCmdEndRenderPass2 = (PFN_vkCmdEndRenderPass2)vkb_dlsym(g_vkbVulkanSO, \"vkCmdEndRenderPass2\");\n    pAPI->vkGetPhysicalDeviceToolProperties = (PFN_vkGetPhysicalDeviceToolProperties)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceToolProperties\");\n    pAPI->vkCreatePrivateDataSlot = (PFN_vkCreatePrivateDataSlot)vkb_dlsym(g_vkbVulkanSO, \"vkCreatePrivateDataSlot\");\n    pAPI->vkDestroyPrivateDataSlot = (PFN_vkDestroyPrivateDataSlot)vkb_dlsym(g_vkbVulkanSO, \"vkDestroyPrivateDataSlot\");\n    pAPI->vkSetPrivateData = (PFN_vkSetPrivateData)vkb_dlsym(g_vkbVulkanSO, \"vkSetPrivateData\");\n    pAPI->vkGetPrivateData = (PFN_vkGetPrivateData)vkb_dlsym(g_vkbVulkanSO, \"vkGetPrivateData\");\n    pAPI->vkCmdPipelineBarrier2 = (PFN_vkCmdPipelineBarrier2)vkb_dlsym(g_vkbVulkanSO, \"vkCmdPipelineBarrier2\");\n    pAPI->vkCmdWriteTimestamp2 = (PFN_vkCmdWriteTimestamp2)vkb_dlsym(g_vkbVulkanSO, \"vkCmdWriteTimestamp2\");\n    pAPI->vkQueueSubmit2 = (PFN_vkQueueSubmit2)vkb_dlsym(g_vkbVulkanSO, \"vkQueueSubmit2\");\n    pAPI->vkCmdCopyBuffer2 = (PFN_vkCmdCopyBuffer2)vkb_dlsym(g_vkbVulkanSO, \"vkCmdCopyBuffer2\");\n    pAPI->vkCmdCopyImage2 = (PFN_vkCmdCopyImage2)vkb_dlsym(g_vkbVulkanSO, \"vkCmdCopyImage2\");\n    pAPI->vkCmdCopyBufferToImage2 = (PFN_vkCmdCopyBufferToImage2)vkb_dlsym(g_vkbVulkanSO, \"vkCmdCopyBufferToImage2\");\n    pAPI->vkCmdCopyImageToBuffer2 = (PFN_vkCmdCopyImageToBuffer2)vkb_dlsym(g_vkbVulkanSO, \"vkCmdCopyImageToBuffer2\");\n    pAPI->vkGetDeviceBufferMemoryRequirements = (PFN_vkGetDeviceBufferMemoryRequirements)vkb_dlsym(g_vkbVulkanSO, \"vkGetDeviceBufferMemoryRequirements\");\n    pAPI->vkGetDeviceImageMemoryRequirements = (PFN_vkGetDeviceImageMemoryRequirements)vkb_dlsym(g_vkbVulkanSO, \"vkGetDeviceImageMemoryRequirements\");\n    pAPI->vkGetDeviceImageSparseMemoryRequirements = (PFN_vkGetDeviceImageSparseMemoryRequirements)vkb_dlsym(g_vkbVulkanSO, \"vkGetDeviceImageSparseMemoryRequirements\");\n    pAPI->vkCmdSetEvent2 = (PFN_vkCmdSetEvent2)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetEvent2\");\n    pAPI->vkCmdResetEvent2 = (PFN_vkCmdResetEvent2)vkb_dlsym(g_vkbVulkanSO, \"vkCmdResetEvent2\");\n    pAPI->vkCmdWaitEvents2 = (PFN_vkCmdWaitEvents2)vkb_dlsym(g_vkbVulkanSO, \"vkCmdWaitEvents2\");\n    pAPI->vkCmdBlitImage2 = (PFN_vkCmdBlitImage2)vkb_dlsym(g_vkbVulkanSO, \"vkCmdBlitImage2\");\n    pAPI->vkCmdResolveImage2 = (PFN_vkCmdResolveImage2)vkb_dlsym(g_vkbVulkanSO, \"vkCmdResolveImage2\");\n    pAPI->vkCmdBeginRendering = (PFN_vkCmdBeginRendering)vkb_dlsym(g_vkbVulkanSO, \"vkCmdBeginRendering\");\n    pAPI->vkCmdEndRendering = (PFN_vkCmdEndRendering)vkb_dlsym(g_vkbVulkanSO, \"vkCmdEndRendering\");\n    pAPI->vkCmdSetCullMode = (PFN_vkCmdSetCullMode)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetCullMode\");\n    pAPI->vkCmdSetFrontFace = (PFN_vkCmdSetFrontFace)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetFrontFace\");\n    pAPI->vkCmdSetPrimitiveTopology = (PFN_vkCmdSetPrimitiveTopology)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetPrimitiveTopology\");\n    pAPI->vkCmdSetViewportWithCount = (PFN_vkCmdSetViewportWithCount)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetViewportWithCount\");\n    pAPI->vkCmdSetScissorWithCount = (PFN_vkCmdSetScissorWithCount)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetScissorWithCount\");\n    pAPI->vkCmdBindVertexBuffers2 = (PFN_vkCmdBindVertexBuffers2)vkb_dlsym(g_vkbVulkanSO, \"vkCmdBindVertexBuffers2\");\n    pAPI->vkCmdSetDepthTestEnable = (PFN_vkCmdSetDepthTestEnable)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetDepthTestEnable\");\n    pAPI->vkCmdSetDepthWriteEnable = (PFN_vkCmdSetDepthWriteEnable)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetDepthWriteEnable\");\n    pAPI->vkCmdSetDepthCompareOp = (PFN_vkCmdSetDepthCompareOp)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetDepthCompareOp\");\n    pAPI->vkCmdSetDepthBoundsTestEnable = (PFN_vkCmdSetDepthBoundsTestEnable)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetDepthBoundsTestEnable\");\n    pAPI->vkCmdSetStencilTestEnable = (PFN_vkCmdSetStencilTestEnable)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetStencilTestEnable\");\n    pAPI->vkCmdSetStencilOp = (PFN_vkCmdSetStencilOp)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetStencilOp\");\n    pAPI->vkCmdSetRasterizerDiscardEnable = (PFN_vkCmdSetRasterizerDiscardEnable)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetRasterizerDiscardEnable\");\n    pAPI->vkCmdSetDepthBiasEnable = (PFN_vkCmdSetDepthBiasEnable)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetDepthBiasEnable\");\n    pAPI->vkCmdSetPrimitiveRestartEnable = (PFN_vkCmdSetPrimitiveRestartEnable)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetPrimitiveRestartEnable\");\n    pAPI->vkMapMemory2 = (PFN_vkMapMemory2)vkb_dlsym(g_vkbVulkanSO, \"vkMapMemory2\");\n    pAPI->vkUnmapMemory2 = (PFN_vkUnmapMemory2)vkb_dlsym(g_vkbVulkanSO, \"vkUnmapMemory2\");\n    pAPI->vkGetDeviceImageSubresourceLayout = (PFN_vkGetDeviceImageSubresourceLayout)vkb_dlsym(g_vkbVulkanSO, \"vkGetDeviceImageSubresourceLayout\");\n    pAPI->vkGetImageSubresourceLayout2 = (PFN_vkGetImageSubresourceLayout2)vkb_dlsym(g_vkbVulkanSO, \"vkGetImageSubresourceLayout2\");\n    pAPI->vkCopyMemoryToImage = (PFN_vkCopyMemoryToImage)vkb_dlsym(g_vkbVulkanSO, \"vkCopyMemoryToImage\");\n    pAPI->vkCopyImageToMemory = (PFN_vkCopyImageToMemory)vkb_dlsym(g_vkbVulkanSO, \"vkCopyImageToMemory\");\n    pAPI->vkCopyImageToImage = (PFN_vkCopyImageToImage)vkb_dlsym(g_vkbVulkanSO, \"vkCopyImageToImage\");\n    pAPI->vkTransitionImageLayout = (PFN_vkTransitionImageLayout)vkb_dlsym(g_vkbVulkanSO, \"vkTransitionImageLayout\");\n    pAPI->vkCmdPushDescriptorSet = (PFN_vkCmdPushDescriptorSet)vkb_dlsym(g_vkbVulkanSO, \"vkCmdPushDescriptorSet\");\n    pAPI->vkCmdPushDescriptorSetWithTemplate = (PFN_vkCmdPushDescriptorSetWithTemplate)vkb_dlsym(g_vkbVulkanSO, \"vkCmdPushDescriptorSetWithTemplate\");\n    pAPI->vkCmdBindDescriptorSets2 = (PFN_vkCmdBindDescriptorSets2)vkb_dlsym(g_vkbVulkanSO, \"vkCmdBindDescriptorSets2\");\n    pAPI->vkCmdPushConstants2 = (PFN_vkCmdPushConstants2)vkb_dlsym(g_vkbVulkanSO, \"vkCmdPushConstants2\");\n    pAPI->vkCmdPushDescriptorSet2 = (PFN_vkCmdPushDescriptorSet2)vkb_dlsym(g_vkbVulkanSO, \"vkCmdPushDescriptorSet2\");\n    pAPI->vkCmdPushDescriptorSetWithTemplate2 = (PFN_vkCmdPushDescriptorSetWithTemplate2)vkb_dlsym(g_vkbVulkanSO, \"vkCmdPushDescriptorSetWithTemplate2\");\n    pAPI->vkCmdSetLineStipple = (PFN_vkCmdSetLineStipple)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetLineStipple\");\n    pAPI->vkCmdBindIndexBuffer2 = (PFN_vkCmdBindIndexBuffer2)vkb_dlsym(g_vkbVulkanSO, \"vkCmdBindIndexBuffer2\");\n    pAPI->vkGetRenderingAreaGranularity = (PFN_vkGetRenderingAreaGranularity)vkb_dlsym(g_vkbVulkanSO, \"vkGetRenderingAreaGranularity\");\n    pAPI->vkCmdSetRenderingAttachmentLocations = (PFN_vkCmdSetRenderingAttachmentLocations)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetRenderingAttachmentLocations\");\n    pAPI->vkCmdSetRenderingInputAttachmentIndices = (PFN_vkCmdSetRenderingInputAttachmentIndices)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetRenderingInputAttachmentIndices\");\n    pAPI->vkGetCommandPoolMemoryConsumption = (PFN_vkGetCommandPoolMemoryConsumption)vkb_dlsym(g_vkbVulkanSO, \"vkGetCommandPoolMemoryConsumption\");\n    pAPI->vkGetFaultData = (PFN_vkGetFaultData)vkb_dlsym(g_vkbVulkanSO, \"vkGetFaultData\");\n    pAPI->vkDestroySurfaceKHR = (PFN_vkDestroySurfaceKHR)vkb_dlsym(g_vkbVulkanSO, \"vkDestroySurfaceKHR\");\n    pAPI->vkGetPhysicalDeviceSurfaceSupportKHR = (PFN_vkGetPhysicalDeviceSurfaceSupportKHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceSurfaceSupportKHR\");\n    pAPI->vkGetPhysicalDeviceSurfaceCapabilitiesKHR = (PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceSurfaceCapabilitiesKHR\");\n    pAPI->vkGetPhysicalDeviceSurfaceFormatsKHR = (PFN_vkGetPhysicalDeviceSurfaceFormatsKHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceSurfaceFormatsKHR\");\n    pAPI->vkGetPhysicalDeviceSurfacePresentModesKHR = (PFN_vkGetPhysicalDeviceSurfacePresentModesKHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceSurfacePresentModesKHR\");\n    pAPI->vkCreateSwapchainKHR = (PFN_vkCreateSwapchainKHR)vkb_dlsym(g_vkbVulkanSO, \"vkCreateSwapchainKHR\");\n    pAPI->vkDestroySwapchainKHR = (PFN_vkDestroySwapchainKHR)vkb_dlsym(g_vkbVulkanSO, \"vkDestroySwapchainKHR\");\n    pAPI->vkGetSwapchainImagesKHR = (PFN_vkGetSwapchainImagesKHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetSwapchainImagesKHR\");\n    pAPI->vkAcquireNextImageKHR = (PFN_vkAcquireNextImageKHR)vkb_dlsym(g_vkbVulkanSO, \"vkAcquireNextImageKHR\");\n    pAPI->vkQueuePresentKHR = (PFN_vkQueuePresentKHR)vkb_dlsym(g_vkbVulkanSO, \"vkQueuePresentKHR\");\n    pAPI->vkGetDeviceGroupPresentCapabilitiesKHR = (PFN_vkGetDeviceGroupPresentCapabilitiesKHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetDeviceGroupPresentCapabilitiesKHR\");\n    pAPI->vkGetDeviceGroupSurfacePresentModesKHR = (PFN_vkGetDeviceGroupSurfacePresentModesKHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetDeviceGroupSurfacePresentModesKHR\");\n    pAPI->vkGetPhysicalDevicePresentRectanglesKHR = (PFN_vkGetPhysicalDevicePresentRectanglesKHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDevicePresentRectanglesKHR\");\n    pAPI->vkAcquireNextImage2KHR = (PFN_vkAcquireNextImage2KHR)vkb_dlsym(g_vkbVulkanSO, \"vkAcquireNextImage2KHR\");\n    pAPI->vkGetPhysicalDeviceDisplayPropertiesKHR = (PFN_vkGetPhysicalDeviceDisplayPropertiesKHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceDisplayPropertiesKHR\");\n    pAPI->vkGetPhysicalDeviceDisplayPlanePropertiesKHR = (PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceDisplayPlanePropertiesKHR\");\n    pAPI->vkGetDisplayPlaneSupportedDisplaysKHR = (PFN_vkGetDisplayPlaneSupportedDisplaysKHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetDisplayPlaneSupportedDisplaysKHR\");\n    pAPI->vkGetDisplayModePropertiesKHR = (PFN_vkGetDisplayModePropertiesKHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetDisplayModePropertiesKHR\");\n    pAPI->vkCreateDisplayModeKHR = (PFN_vkCreateDisplayModeKHR)vkb_dlsym(g_vkbVulkanSO, \"vkCreateDisplayModeKHR\");\n    pAPI->vkGetDisplayPlaneCapabilitiesKHR = (PFN_vkGetDisplayPlaneCapabilitiesKHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetDisplayPlaneCapabilitiesKHR\");\n    pAPI->vkCreateDisplayPlaneSurfaceKHR = (PFN_vkCreateDisplayPlaneSurfaceKHR)vkb_dlsym(g_vkbVulkanSO, \"vkCreateDisplayPlaneSurfaceKHR\");\n    pAPI->vkCreateSharedSwapchainsKHR = (PFN_vkCreateSharedSwapchainsKHR)vkb_dlsym(g_vkbVulkanSO, \"vkCreateSharedSwapchainsKHR\");\n    pAPI->vkGetPhysicalDeviceVideoCapabilitiesKHR = (PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceVideoCapabilitiesKHR\");\n    pAPI->vkGetPhysicalDeviceVideoFormatPropertiesKHR = (PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceVideoFormatPropertiesKHR\");\n    pAPI->vkCreateVideoSessionKHR = (PFN_vkCreateVideoSessionKHR)vkb_dlsym(g_vkbVulkanSO, \"vkCreateVideoSessionKHR\");\n    pAPI->vkDestroyVideoSessionKHR = (PFN_vkDestroyVideoSessionKHR)vkb_dlsym(g_vkbVulkanSO, \"vkDestroyVideoSessionKHR\");\n    pAPI->vkGetVideoSessionMemoryRequirementsKHR = (PFN_vkGetVideoSessionMemoryRequirementsKHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetVideoSessionMemoryRequirementsKHR\");\n    pAPI->vkBindVideoSessionMemoryKHR = (PFN_vkBindVideoSessionMemoryKHR)vkb_dlsym(g_vkbVulkanSO, \"vkBindVideoSessionMemoryKHR\");\n    pAPI->vkCreateVideoSessionParametersKHR = (PFN_vkCreateVideoSessionParametersKHR)vkb_dlsym(g_vkbVulkanSO, \"vkCreateVideoSessionParametersKHR\");\n    pAPI->vkUpdateVideoSessionParametersKHR = (PFN_vkUpdateVideoSessionParametersKHR)vkb_dlsym(g_vkbVulkanSO, \"vkUpdateVideoSessionParametersKHR\");\n    pAPI->vkDestroyVideoSessionParametersKHR = (PFN_vkDestroyVideoSessionParametersKHR)vkb_dlsym(g_vkbVulkanSO, \"vkDestroyVideoSessionParametersKHR\");\n    pAPI->vkCmdBeginVideoCodingKHR = (PFN_vkCmdBeginVideoCodingKHR)vkb_dlsym(g_vkbVulkanSO, \"vkCmdBeginVideoCodingKHR\");\n    pAPI->vkCmdEndVideoCodingKHR = (PFN_vkCmdEndVideoCodingKHR)vkb_dlsym(g_vkbVulkanSO, \"vkCmdEndVideoCodingKHR\");\n    pAPI->vkCmdControlVideoCodingKHR = (PFN_vkCmdControlVideoCodingKHR)vkb_dlsym(g_vkbVulkanSO, \"vkCmdControlVideoCodingKHR\");\n    pAPI->vkCmdDecodeVideoKHR = (PFN_vkCmdDecodeVideoKHR)vkb_dlsym(g_vkbVulkanSO, \"vkCmdDecodeVideoKHR\");\n    pAPI->vkCmdBindTransformFeedbackBuffersEXT = (PFN_vkCmdBindTransformFeedbackBuffersEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdBindTransformFeedbackBuffersEXT\");\n    pAPI->vkCmdBeginTransformFeedbackEXT = (PFN_vkCmdBeginTransformFeedbackEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdBeginTransformFeedbackEXT\");\n    pAPI->vkCmdEndTransformFeedbackEXT = (PFN_vkCmdEndTransformFeedbackEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdEndTransformFeedbackEXT\");\n    pAPI->vkCmdBeginQueryIndexedEXT = (PFN_vkCmdBeginQueryIndexedEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdBeginQueryIndexedEXT\");\n    pAPI->vkCmdEndQueryIndexedEXT = (PFN_vkCmdEndQueryIndexedEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdEndQueryIndexedEXT\");\n    pAPI->vkCmdDrawIndirectByteCountEXT = (PFN_vkCmdDrawIndirectByteCountEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdDrawIndirectByteCountEXT\");\n    pAPI->vkCreateCuModuleNVX = (PFN_vkCreateCuModuleNVX)vkb_dlsym(g_vkbVulkanSO, \"vkCreateCuModuleNVX\");\n    pAPI->vkCreateCuFunctionNVX = (PFN_vkCreateCuFunctionNVX)vkb_dlsym(g_vkbVulkanSO, \"vkCreateCuFunctionNVX\");\n    pAPI->vkDestroyCuModuleNVX = (PFN_vkDestroyCuModuleNVX)vkb_dlsym(g_vkbVulkanSO, \"vkDestroyCuModuleNVX\");\n    pAPI->vkDestroyCuFunctionNVX = (PFN_vkDestroyCuFunctionNVX)vkb_dlsym(g_vkbVulkanSO, \"vkDestroyCuFunctionNVX\");\n    pAPI->vkCmdCuLaunchKernelNVX = (PFN_vkCmdCuLaunchKernelNVX)vkb_dlsym(g_vkbVulkanSO, \"vkCmdCuLaunchKernelNVX\");\n    pAPI->vkGetImageViewHandleNVX = (PFN_vkGetImageViewHandleNVX)vkb_dlsym(g_vkbVulkanSO, \"vkGetImageViewHandleNVX\");\n    pAPI->vkGetImageViewHandle64NVX = (PFN_vkGetImageViewHandle64NVX)vkb_dlsym(g_vkbVulkanSO, \"vkGetImageViewHandle64NVX\");\n    pAPI->vkGetImageViewAddressNVX = (PFN_vkGetImageViewAddressNVX)vkb_dlsym(g_vkbVulkanSO, \"vkGetImageViewAddressNVX\");\n    pAPI->vkGetDeviceCombinedImageSamplerIndexNVX = (PFN_vkGetDeviceCombinedImageSamplerIndexNVX)vkb_dlsym(g_vkbVulkanSO, \"vkGetDeviceCombinedImageSamplerIndexNVX\");\n    pAPI->vkGetShaderInfoAMD = (PFN_vkGetShaderInfoAMD)vkb_dlsym(g_vkbVulkanSO, \"vkGetShaderInfoAMD\");\n    pAPI->vkCmdBeginRenderingKHR = (PFN_vkCmdBeginRenderingKHR)vkb_dlsym(g_vkbVulkanSO, \"vkCmdBeginRenderingKHR\");\n    pAPI->vkCmdEndRenderingKHR = (PFN_vkCmdEndRenderingKHR)vkb_dlsym(g_vkbVulkanSO, \"vkCmdEndRenderingKHR\");\n    pAPI->vkGetPhysicalDeviceFeatures2KHR = (PFN_vkGetPhysicalDeviceFeatures2KHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceFeatures2KHR\");\n    pAPI->vkGetPhysicalDeviceProperties2KHR = (PFN_vkGetPhysicalDeviceProperties2KHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceProperties2KHR\");\n    pAPI->vkGetPhysicalDeviceFormatProperties2KHR = (PFN_vkGetPhysicalDeviceFormatProperties2KHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceFormatProperties2KHR\");\n    pAPI->vkGetPhysicalDeviceImageFormatProperties2KHR = (PFN_vkGetPhysicalDeviceImageFormatProperties2KHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceImageFormatProperties2KHR\");\n    pAPI->vkGetPhysicalDeviceQueueFamilyProperties2KHR = (PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceQueueFamilyProperties2KHR\");\n    pAPI->vkGetPhysicalDeviceMemoryProperties2KHR = (PFN_vkGetPhysicalDeviceMemoryProperties2KHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceMemoryProperties2KHR\");\n    pAPI->vkGetPhysicalDeviceSparseImageFormatProperties2KHR = (PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceSparseImageFormatProperties2KHR\");\n    pAPI->vkGetDeviceGroupPeerMemoryFeaturesKHR = (PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetDeviceGroupPeerMemoryFeaturesKHR\");\n    pAPI->vkCmdSetDeviceMaskKHR = (PFN_vkCmdSetDeviceMaskKHR)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetDeviceMaskKHR\");\n    pAPI->vkCmdDispatchBaseKHR = (PFN_vkCmdDispatchBaseKHR)vkb_dlsym(g_vkbVulkanSO, \"vkCmdDispatchBaseKHR\");\n    pAPI->vkTrimCommandPoolKHR = (PFN_vkTrimCommandPoolKHR)vkb_dlsym(g_vkbVulkanSO, \"vkTrimCommandPoolKHR\");\n    pAPI->vkEnumeratePhysicalDeviceGroupsKHR = (PFN_vkEnumeratePhysicalDeviceGroupsKHR)vkb_dlsym(g_vkbVulkanSO, \"vkEnumeratePhysicalDeviceGroupsKHR\");\n    pAPI->vkGetPhysicalDeviceExternalBufferPropertiesKHR = (PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceExternalBufferPropertiesKHR\");\n    pAPI->vkGetPhysicalDeviceExternalImageFormatPropertiesNV = (PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceExternalImageFormatPropertiesNV\");\n    pAPI->vkGetMemoryFdKHR = (PFN_vkGetMemoryFdKHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetMemoryFdKHR\");\n    pAPI->vkGetMemoryFdPropertiesKHR = (PFN_vkGetMemoryFdPropertiesKHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetMemoryFdPropertiesKHR\");\n    pAPI->vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = (PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceExternalSemaphorePropertiesKHR\");\n    pAPI->vkImportSemaphoreFdKHR = (PFN_vkImportSemaphoreFdKHR)vkb_dlsym(g_vkbVulkanSO, \"vkImportSemaphoreFdKHR\");\n    pAPI->vkGetSemaphoreFdKHR = (PFN_vkGetSemaphoreFdKHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetSemaphoreFdKHR\");\n    pAPI->vkCmdPushDescriptorSetKHR = (PFN_vkCmdPushDescriptorSetKHR)vkb_dlsym(g_vkbVulkanSO, \"vkCmdPushDescriptorSetKHR\");\n    pAPI->vkCmdPushDescriptorSetWithTemplateKHR = (PFN_vkCmdPushDescriptorSetWithTemplateKHR)vkb_dlsym(g_vkbVulkanSO, \"vkCmdPushDescriptorSetWithTemplateKHR\");\n    pAPI->vkCmdBeginConditionalRenderingEXT = (PFN_vkCmdBeginConditionalRenderingEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdBeginConditionalRenderingEXT\");\n    pAPI->vkCmdEndConditionalRenderingEXT = (PFN_vkCmdEndConditionalRenderingEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdEndConditionalRenderingEXT\");\n    pAPI->vkCreateDescriptorUpdateTemplateKHR = (PFN_vkCreateDescriptorUpdateTemplateKHR)vkb_dlsym(g_vkbVulkanSO, \"vkCreateDescriptorUpdateTemplateKHR\");\n    pAPI->vkDestroyDescriptorUpdateTemplateKHR = (PFN_vkDestroyDescriptorUpdateTemplateKHR)vkb_dlsym(g_vkbVulkanSO, \"vkDestroyDescriptorUpdateTemplateKHR\");\n    pAPI->vkUpdateDescriptorSetWithTemplateKHR = (PFN_vkUpdateDescriptorSetWithTemplateKHR)vkb_dlsym(g_vkbVulkanSO, \"vkUpdateDescriptorSetWithTemplateKHR\");\n    pAPI->vkCmdSetViewportWScalingNV = (PFN_vkCmdSetViewportWScalingNV)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetViewportWScalingNV\");\n    pAPI->vkReleaseDisplayEXT = (PFN_vkReleaseDisplayEXT)vkb_dlsym(g_vkbVulkanSO, \"vkReleaseDisplayEXT\");\n    pAPI->vkGetPhysicalDeviceSurfaceCapabilities2EXT = (PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceSurfaceCapabilities2EXT\");\n    pAPI->vkDisplayPowerControlEXT = (PFN_vkDisplayPowerControlEXT)vkb_dlsym(g_vkbVulkanSO, \"vkDisplayPowerControlEXT\");\n    pAPI->vkRegisterDeviceEventEXT = (PFN_vkRegisterDeviceEventEXT)vkb_dlsym(g_vkbVulkanSO, \"vkRegisterDeviceEventEXT\");\n    pAPI->vkRegisterDisplayEventEXT = (PFN_vkRegisterDisplayEventEXT)vkb_dlsym(g_vkbVulkanSO, \"vkRegisterDisplayEventEXT\");\n    pAPI->vkGetSwapchainCounterEXT = (PFN_vkGetSwapchainCounterEXT)vkb_dlsym(g_vkbVulkanSO, \"vkGetSwapchainCounterEXT\");\n    pAPI->vkGetRefreshCycleDurationGOOGLE = (PFN_vkGetRefreshCycleDurationGOOGLE)vkb_dlsym(g_vkbVulkanSO, \"vkGetRefreshCycleDurationGOOGLE\");\n    pAPI->vkGetPastPresentationTimingGOOGLE = (PFN_vkGetPastPresentationTimingGOOGLE)vkb_dlsym(g_vkbVulkanSO, \"vkGetPastPresentationTimingGOOGLE\");\n    pAPI->vkCmdSetDiscardRectangleEXT = (PFN_vkCmdSetDiscardRectangleEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetDiscardRectangleEXT\");\n    pAPI->vkCmdSetDiscardRectangleEnableEXT = (PFN_vkCmdSetDiscardRectangleEnableEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetDiscardRectangleEnableEXT\");\n    pAPI->vkCmdSetDiscardRectangleModeEXT = (PFN_vkCmdSetDiscardRectangleModeEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetDiscardRectangleModeEXT\");\n    pAPI->vkSetHdrMetadataEXT = (PFN_vkSetHdrMetadataEXT)vkb_dlsym(g_vkbVulkanSO, \"vkSetHdrMetadataEXT\");\n    pAPI->vkCreateRenderPass2KHR = (PFN_vkCreateRenderPass2KHR)vkb_dlsym(g_vkbVulkanSO, \"vkCreateRenderPass2KHR\");\n    pAPI->vkCmdBeginRenderPass2KHR = (PFN_vkCmdBeginRenderPass2KHR)vkb_dlsym(g_vkbVulkanSO, \"vkCmdBeginRenderPass2KHR\");\n    pAPI->vkCmdNextSubpass2KHR = (PFN_vkCmdNextSubpass2KHR)vkb_dlsym(g_vkbVulkanSO, \"vkCmdNextSubpass2KHR\");\n    pAPI->vkCmdEndRenderPass2KHR = (PFN_vkCmdEndRenderPass2KHR)vkb_dlsym(g_vkbVulkanSO, \"vkCmdEndRenderPass2KHR\");\n    pAPI->vkGetSwapchainStatusKHR = (PFN_vkGetSwapchainStatusKHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetSwapchainStatusKHR\");\n    pAPI->vkGetPhysicalDeviceExternalFencePropertiesKHR = (PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceExternalFencePropertiesKHR\");\n    pAPI->vkImportFenceFdKHR = (PFN_vkImportFenceFdKHR)vkb_dlsym(g_vkbVulkanSO, \"vkImportFenceFdKHR\");\n    pAPI->vkGetFenceFdKHR = (PFN_vkGetFenceFdKHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetFenceFdKHR\");\n    pAPI->vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = (PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR)vkb_dlsym(g_vkbVulkanSO, \"vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR\");\n    pAPI->vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = (PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR\");\n    pAPI->vkAcquireProfilingLockKHR = (PFN_vkAcquireProfilingLockKHR)vkb_dlsym(g_vkbVulkanSO, \"vkAcquireProfilingLockKHR\");\n    pAPI->vkReleaseProfilingLockKHR = (PFN_vkReleaseProfilingLockKHR)vkb_dlsym(g_vkbVulkanSO, \"vkReleaseProfilingLockKHR\");\n    pAPI->vkGetPhysicalDeviceSurfaceCapabilities2KHR = (PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceSurfaceCapabilities2KHR\");\n    pAPI->vkGetPhysicalDeviceSurfaceFormats2KHR = (PFN_vkGetPhysicalDeviceSurfaceFormats2KHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceSurfaceFormats2KHR\");\n    pAPI->vkGetPhysicalDeviceDisplayProperties2KHR = (PFN_vkGetPhysicalDeviceDisplayProperties2KHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceDisplayProperties2KHR\");\n    pAPI->vkGetPhysicalDeviceDisplayPlaneProperties2KHR = (PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceDisplayPlaneProperties2KHR\");\n    pAPI->vkGetDisplayModeProperties2KHR = (PFN_vkGetDisplayModeProperties2KHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetDisplayModeProperties2KHR\");\n    pAPI->vkGetDisplayPlaneCapabilities2KHR = (PFN_vkGetDisplayPlaneCapabilities2KHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetDisplayPlaneCapabilities2KHR\");\n    pAPI->vkSetDebugUtilsObjectNameEXT = (PFN_vkSetDebugUtilsObjectNameEXT)vkb_dlsym(g_vkbVulkanSO, \"vkSetDebugUtilsObjectNameEXT\");\n    pAPI->vkSetDebugUtilsObjectTagEXT = (PFN_vkSetDebugUtilsObjectTagEXT)vkb_dlsym(g_vkbVulkanSO, \"vkSetDebugUtilsObjectTagEXT\");\n    pAPI->vkQueueBeginDebugUtilsLabelEXT = (PFN_vkQueueBeginDebugUtilsLabelEXT)vkb_dlsym(g_vkbVulkanSO, \"vkQueueBeginDebugUtilsLabelEXT\");\n    pAPI->vkQueueEndDebugUtilsLabelEXT = (PFN_vkQueueEndDebugUtilsLabelEXT)vkb_dlsym(g_vkbVulkanSO, \"vkQueueEndDebugUtilsLabelEXT\");\n    pAPI->vkQueueInsertDebugUtilsLabelEXT = (PFN_vkQueueInsertDebugUtilsLabelEXT)vkb_dlsym(g_vkbVulkanSO, \"vkQueueInsertDebugUtilsLabelEXT\");\n    pAPI->vkCmdBeginDebugUtilsLabelEXT = (PFN_vkCmdBeginDebugUtilsLabelEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdBeginDebugUtilsLabelEXT\");\n    pAPI->vkCmdEndDebugUtilsLabelEXT = (PFN_vkCmdEndDebugUtilsLabelEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdEndDebugUtilsLabelEXT\");\n    pAPI->vkCmdInsertDebugUtilsLabelEXT = (PFN_vkCmdInsertDebugUtilsLabelEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdInsertDebugUtilsLabelEXT\");\n    pAPI->vkCreateDebugUtilsMessengerEXT = (PFN_vkCreateDebugUtilsMessengerEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCreateDebugUtilsMessengerEXT\");\n    pAPI->vkDestroyDebugUtilsMessengerEXT = (PFN_vkDestroyDebugUtilsMessengerEXT)vkb_dlsym(g_vkbVulkanSO, \"vkDestroyDebugUtilsMessengerEXT\");\n    pAPI->vkSubmitDebugUtilsMessageEXT = (PFN_vkSubmitDebugUtilsMessageEXT)vkb_dlsym(g_vkbVulkanSO, \"vkSubmitDebugUtilsMessageEXT\");\n    pAPI->vkDebugMarkerSetObjectTagEXT = (PFN_vkDebugMarkerSetObjectTagEXT)vkb_dlsym(g_vkbVulkanSO, \"vkDebugMarkerSetObjectTagEXT\");\n    pAPI->vkDebugMarkerSetObjectNameEXT = (PFN_vkDebugMarkerSetObjectNameEXT)vkb_dlsym(g_vkbVulkanSO, \"vkDebugMarkerSetObjectNameEXT\");\n    pAPI->vkCmdDebugMarkerBeginEXT = (PFN_vkCmdDebugMarkerBeginEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdDebugMarkerBeginEXT\");\n    pAPI->vkCmdDebugMarkerEndEXT = (PFN_vkCmdDebugMarkerEndEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdDebugMarkerEndEXT\");\n    pAPI->vkCmdDebugMarkerInsertEXT = (PFN_vkCmdDebugMarkerInsertEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdDebugMarkerInsertEXT\");\n    pAPI->vkCreateDebugReportCallbackEXT = (PFN_vkCreateDebugReportCallbackEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCreateDebugReportCallbackEXT\");\n    pAPI->vkDestroyDebugReportCallbackEXT = (PFN_vkDestroyDebugReportCallbackEXT)vkb_dlsym(g_vkbVulkanSO, \"vkDestroyDebugReportCallbackEXT\");\n    pAPI->vkDebugReportMessageEXT = (PFN_vkDebugReportMessageEXT)vkb_dlsym(g_vkbVulkanSO, \"vkDebugReportMessageEXT\");\n    pAPI->vkWriteSamplerDescriptorsEXT = (PFN_vkWriteSamplerDescriptorsEXT)vkb_dlsym(g_vkbVulkanSO, \"vkWriteSamplerDescriptorsEXT\");\n    pAPI->vkWriteResourceDescriptorsEXT = (PFN_vkWriteResourceDescriptorsEXT)vkb_dlsym(g_vkbVulkanSO, \"vkWriteResourceDescriptorsEXT\");\n    pAPI->vkCmdBindSamplerHeapEXT = (PFN_vkCmdBindSamplerHeapEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdBindSamplerHeapEXT\");\n    pAPI->vkCmdBindResourceHeapEXT = (PFN_vkCmdBindResourceHeapEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdBindResourceHeapEXT\");\n    pAPI->vkCmdPushDataEXT = (PFN_vkCmdPushDataEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdPushDataEXT\");\n    pAPI->vkGetImageOpaqueCaptureDataEXT = (PFN_vkGetImageOpaqueCaptureDataEXT)vkb_dlsym(g_vkbVulkanSO, \"vkGetImageOpaqueCaptureDataEXT\");\n    pAPI->vkGetPhysicalDeviceDescriptorSizeEXT = (PFN_vkGetPhysicalDeviceDescriptorSizeEXT)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceDescriptorSizeEXT\");\n    pAPI->vkRegisterCustomBorderColorEXT = (PFN_vkRegisterCustomBorderColorEXT)vkb_dlsym(g_vkbVulkanSO, \"vkRegisterCustomBorderColorEXT\");\n    pAPI->vkUnregisterCustomBorderColorEXT = (PFN_vkUnregisterCustomBorderColorEXT)vkb_dlsym(g_vkbVulkanSO, \"vkUnregisterCustomBorderColorEXT\");\n    pAPI->vkGetTensorOpaqueCaptureDataARM = (PFN_vkGetTensorOpaqueCaptureDataARM)vkb_dlsym(g_vkbVulkanSO, \"vkGetTensorOpaqueCaptureDataARM\");\n    pAPI->vkCmdSetSampleLocationsEXT = (PFN_vkCmdSetSampleLocationsEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetSampleLocationsEXT\");\n    pAPI->vkGetPhysicalDeviceMultisamplePropertiesEXT = (PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceMultisamplePropertiesEXT\");\n    pAPI->vkGetImageMemoryRequirements2KHR = (PFN_vkGetImageMemoryRequirements2KHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetImageMemoryRequirements2KHR\");\n    pAPI->vkGetBufferMemoryRequirements2KHR = (PFN_vkGetBufferMemoryRequirements2KHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetBufferMemoryRequirements2KHR\");\n    pAPI->vkGetImageSparseMemoryRequirements2KHR = (PFN_vkGetImageSparseMemoryRequirements2KHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetImageSparseMemoryRequirements2KHR\");\n    pAPI->vkCreateAccelerationStructureKHR = (PFN_vkCreateAccelerationStructureKHR)vkb_dlsym(g_vkbVulkanSO, \"vkCreateAccelerationStructureKHR\");\n    pAPI->vkDestroyAccelerationStructureKHR = (PFN_vkDestroyAccelerationStructureKHR)vkb_dlsym(g_vkbVulkanSO, \"vkDestroyAccelerationStructureKHR\");\n    pAPI->vkCmdBuildAccelerationStructuresKHR = (PFN_vkCmdBuildAccelerationStructuresKHR)vkb_dlsym(g_vkbVulkanSO, \"vkCmdBuildAccelerationStructuresKHR\");\n    pAPI->vkCmdBuildAccelerationStructuresIndirectKHR = (PFN_vkCmdBuildAccelerationStructuresIndirectKHR)vkb_dlsym(g_vkbVulkanSO, \"vkCmdBuildAccelerationStructuresIndirectKHR\");\n    pAPI->vkBuildAccelerationStructuresKHR = (PFN_vkBuildAccelerationStructuresKHR)vkb_dlsym(g_vkbVulkanSO, \"vkBuildAccelerationStructuresKHR\");\n    pAPI->vkCopyAccelerationStructureKHR = (PFN_vkCopyAccelerationStructureKHR)vkb_dlsym(g_vkbVulkanSO, \"vkCopyAccelerationStructureKHR\");\n    pAPI->vkCopyAccelerationStructureToMemoryKHR = (PFN_vkCopyAccelerationStructureToMemoryKHR)vkb_dlsym(g_vkbVulkanSO, \"vkCopyAccelerationStructureToMemoryKHR\");\n    pAPI->vkCopyMemoryToAccelerationStructureKHR = (PFN_vkCopyMemoryToAccelerationStructureKHR)vkb_dlsym(g_vkbVulkanSO, \"vkCopyMemoryToAccelerationStructureKHR\");\n    pAPI->vkWriteAccelerationStructuresPropertiesKHR = (PFN_vkWriteAccelerationStructuresPropertiesKHR)vkb_dlsym(g_vkbVulkanSO, \"vkWriteAccelerationStructuresPropertiesKHR\");\n    pAPI->vkCmdCopyAccelerationStructureKHR = (PFN_vkCmdCopyAccelerationStructureKHR)vkb_dlsym(g_vkbVulkanSO, \"vkCmdCopyAccelerationStructureKHR\");\n    pAPI->vkCmdCopyAccelerationStructureToMemoryKHR = (PFN_vkCmdCopyAccelerationStructureToMemoryKHR)vkb_dlsym(g_vkbVulkanSO, \"vkCmdCopyAccelerationStructureToMemoryKHR\");\n    pAPI->vkCmdCopyMemoryToAccelerationStructureKHR = (PFN_vkCmdCopyMemoryToAccelerationStructureKHR)vkb_dlsym(g_vkbVulkanSO, \"vkCmdCopyMemoryToAccelerationStructureKHR\");\n    pAPI->vkGetAccelerationStructureDeviceAddressKHR = (PFN_vkGetAccelerationStructureDeviceAddressKHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetAccelerationStructureDeviceAddressKHR\");\n    pAPI->vkCmdWriteAccelerationStructuresPropertiesKHR = (PFN_vkCmdWriteAccelerationStructuresPropertiesKHR)vkb_dlsym(g_vkbVulkanSO, \"vkCmdWriteAccelerationStructuresPropertiesKHR\");\n    pAPI->vkGetDeviceAccelerationStructureCompatibilityKHR = (PFN_vkGetDeviceAccelerationStructureCompatibilityKHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetDeviceAccelerationStructureCompatibilityKHR\");\n    pAPI->vkGetAccelerationStructureBuildSizesKHR = (PFN_vkGetAccelerationStructureBuildSizesKHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetAccelerationStructureBuildSizesKHR\");\n    pAPI->vkCmdTraceRaysKHR = (PFN_vkCmdTraceRaysKHR)vkb_dlsym(g_vkbVulkanSO, \"vkCmdTraceRaysKHR\");\n    pAPI->vkCreateRayTracingPipelinesKHR = (PFN_vkCreateRayTracingPipelinesKHR)vkb_dlsym(g_vkbVulkanSO, \"vkCreateRayTracingPipelinesKHR\");\n    pAPI->vkGetRayTracingShaderGroupHandlesKHR = (PFN_vkGetRayTracingShaderGroupHandlesKHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetRayTracingShaderGroupHandlesKHR\");\n    pAPI->vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = (PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetRayTracingCaptureReplayShaderGroupHandlesKHR\");\n    pAPI->vkCmdTraceRaysIndirectKHR = (PFN_vkCmdTraceRaysIndirectKHR)vkb_dlsym(g_vkbVulkanSO, \"vkCmdTraceRaysIndirectKHR\");\n    pAPI->vkGetRayTracingShaderGroupStackSizeKHR = (PFN_vkGetRayTracingShaderGroupStackSizeKHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetRayTracingShaderGroupStackSizeKHR\");\n    pAPI->vkCmdSetRayTracingPipelineStackSizeKHR = (PFN_vkCmdSetRayTracingPipelineStackSizeKHR)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetRayTracingPipelineStackSizeKHR\");\n    pAPI->vkCreateSamplerYcbcrConversionKHR = (PFN_vkCreateSamplerYcbcrConversionKHR)vkb_dlsym(g_vkbVulkanSO, \"vkCreateSamplerYcbcrConversionKHR\");\n    pAPI->vkDestroySamplerYcbcrConversionKHR = (PFN_vkDestroySamplerYcbcrConversionKHR)vkb_dlsym(g_vkbVulkanSO, \"vkDestroySamplerYcbcrConversionKHR\");\n    pAPI->vkBindBufferMemory2KHR = (PFN_vkBindBufferMemory2KHR)vkb_dlsym(g_vkbVulkanSO, \"vkBindBufferMemory2KHR\");\n    pAPI->vkBindImageMemory2KHR = (PFN_vkBindImageMemory2KHR)vkb_dlsym(g_vkbVulkanSO, \"vkBindImageMemory2KHR\");\n    pAPI->vkGetImageDrmFormatModifierPropertiesEXT = (PFN_vkGetImageDrmFormatModifierPropertiesEXT)vkb_dlsym(g_vkbVulkanSO, \"vkGetImageDrmFormatModifierPropertiesEXT\");\n    pAPI->vkCreateValidationCacheEXT = (PFN_vkCreateValidationCacheEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCreateValidationCacheEXT\");\n    pAPI->vkDestroyValidationCacheEXT = (PFN_vkDestroyValidationCacheEXT)vkb_dlsym(g_vkbVulkanSO, \"vkDestroyValidationCacheEXT\");\n    pAPI->vkMergeValidationCachesEXT = (PFN_vkMergeValidationCachesEXT)vkb_dlsym(g_vkbVulkanSO, \"vkMergeValidationCachesEXT\");\n    pAPI->vkGetValidationCacheDataEXT = (PFN_vkGetValidationCacheDataEXT)vkb_dlsym(g_vkbVulkanSO, \"vkGetValidationCacheDataEXT\");\n    pAPI->vkCmdBindShadingRateImageNV = (PFN_vkCmdBindShadingRateImageNV)vkb_dlsym(g_vkbVulkanSO, \"vkCmdBindShadingRateImageNV\");\n    pAPI->vkCmdSetViewportShadingRatePaletteNV = (PFN_vkCmdSetViewportShadingRatePaletteNV)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetViewportShadingRatePaletteNV\");\n    pAPI->vkCmdSetCoarseSampleOrderNV = (PFN_vkCmdSetCoarseSampleOrderNV)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetCoarseSampleOrderNV\");\n    pAPI->vkCreateAccelerationStructureNV = (PFN_vkCreateAccelerationStructureNV)vkb_dlsym(g_vkbVulkanSO, \"vkCreateAccelerationStructureNV\");\n    pAPI->vkDestroyAccelerationStructureNV = (PFN_vkDestroyAccelerationStructureNV)vkb_dlsym(g_vkbVulkanSO, \"vkDestroyAccelerationStructureNV\");\n    pAPI->vkGetAccelerationStructureMemoryRequirementsNV = (PFN_vkGetAccelerationStructureMemoryRequirementsNV)vkb_dlsym(g_vkbVulkanSO, \"vkGetAccelerationStructureMemoryRequirementsNV\");\n    pAPI->vkBindAccelerationStructureMemoryNV = (PFN_vkBindAccelerationStructureMemoryNV)vkb_dlsym(g_vkbVulkanSO, \"vkBindAccelerationStructureMemoryNV\");\n    pAPI->vkCmdBuildAccelerationStructureNV = (PFN_vkCmdBuildAccelerationStructureNV)vkb_dlsym(g_vkbVulkanSO, \"vkCmdBuildAccelerationStructureNV\");\n    pAPI->vkCmdCopyAccelerationStructureNV = (PFN_vkCmdCopyAccelerationStructureNV)vkb_dlsym(g_vkbVulkanSO, \"vkCmdCopyAccelerationStructureNV\");\n    pAPI->vkCmdTraceRaysNV = (PFN_vkCmdTraceRaysNV)vkb_dlsym(g_vkbVulkanSO, \"vkCmdTraceRaysNV\");\n    pAPI->vkCreateRayTracingPipelinesNV = (PFN_vkCreateRayTracingPipelinesNV)vkb_dlsym(g_vkbVulkanSO, \"vkCreateRayTracingPipelinesNV\");\n    pAPI->vkGetRayTracingShaderGroupHandlesNV = (PFN_vkGetRayTracingShaderGroupHandlesNV)vkb_dlsym(g_vkbVulkanSO, \"vkGetRayTracingShaderGroupHandlesNV\");\n    pAPI->vkGetAccelerationStructureHandleNV = (PFN_vkGetAccelerationStructureHandleNV)vkb_dlsym(g_vkbVulkanSO, \"vkGetAccelerationStructureHandleNV\");\n    pAPI->vkCmdWriteAccelerationStructuresPropertiesNV = (PFN_vkCmdWriteAccelerationStructuresPropertiesNV)vkb_dlsym(g_vkbVulkanSO, \"vkCmdWriteAccelerationStructuresPropertiesNV\");\n    pAPI->vkCompileDeferredNV = (PFN_vkCompileDeferredNV)vkb_dlsym(g_vkbVulkanSO, \"vkCompileDeferredNV\");\n    pAPI->vkGetDescriptorSetLayoutSupportKHR = (PFN_vkGetDescriptorSetLayoutSupportKHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetDescriptorSetLayoutSupportKHR\");\n    pAPI->vkCmdDrawIndirectCountKHR = (PFN_vkCmdDrawIndirectCountKHR)vkb_dlsym(g_vkbVulkanSO, \"vkCmdDrawIndirectCountKHR\");\n    pAPI->vkCmdDrawIndexedIndirectCountKHR = (PFN_vkCmdDrawIndexedIndirectCountKHR)vkb_dlsym(g_vkbVulkanSO, \"vkCmdDrawIndexedIndirectCountKHR\");\n    pAPI->vkCmdDrawIndirectCountAMD = (PFN_vkCmdDrawIndirectCountAMD)vkb_dlsym(g_vkbVulkanSO, \"vkCmdDrawIndirectCountAMD\");\n    pAPI->vkCmdDrawIndexedIndirectCountAMD = (PFN_vkCmdDrawIndexedIndirectCountAMD)vkb_dlsym(g_vkbVulkanSO, \"vkCmdDrawIndexedIndirectCountAMD\");\n    pAPI->vkGetMemoryHostPointerPropertiesEXT = (PFN_vkGetMemoryHostPointerPropertiesEXT)vkb_dlsym(g_vkbVulkanSO, \"vkGetMemoryHostPointerPropertiesEXT\");\n    pAPI->vkCmdWriteBufferMarkerAMD = (PFN_vkCmdWriteBufferMarkerAMD)vkb_dlsym(g_vkbVulkanSO, \"vkCmdWriteBufferMarkerAMD\");\n    pAPI->vkCmdWriteBufferMarker2AMD = (PFN_vkCmdWriteBufferMarker2AMD)vkb_dlsym(g_vkbVulkanSO, \"vkCmdWriteBufferMarker2AMD\");\n    pAPI->vkCmdDrawMeshTasksNV = (PFN_vkCmdDrawMeshTasksNV)vkb_dlsym(g_vkbVulkanSO, \"vkCmdDrawMeshTasksNV\");\n    pAPI->vkCmdDrawMeshTasksIndirectNV = (PFN_vkCmdDrawMeshTasksIndirectNV)vkb_dlsym(g_vkbVulkanSO, \"vkCmdDrawMeshTasksIndirectNV\");\n    pAPI->vkCmdDrawMeshTasksIndirectCountNV = (PFN_vkCmdDrawMeshTasksIndirectCountNV)vkb_dlsym(g_vkbVulkanSO, \"vkCmdDrawMeshTasksIndirectCountNV\");\n    pAPI->vkCmdSetExclusiveScissorEnableNV = (PFN_vkCmdSetExclusiveScissorEnableNV)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetExclusiveScissorEnableNV\");\n    pAPI->vkCmdSetExclusiveScissorNV = (PFN_vkCmdSetExclusiveScissorNV)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetExclusiveScissorNV\");\n    pAPI->vkCmdSetCheckpointNV = (PFN_vkCmdSetCheckpointNV)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetCheckpointNV\");\n    pAPI->vkGetQueueCheckpointDataNV = (PFN_vkGetQueueCheckpointDataNV)vkb_dlsym(g_vkbVulkanSO, \"vkGetQueueCheckpointDataNV\");\n    pAPI->vkGetQueueCheckpointData2NV = (PFN_vkGetQueueCheckpointData2NV)vkb_dlsym(g_vkbVulkanSO, \"vkGetQueueCheckpointData2NV\");\n    pAPI->vkGetSemaphoreCounterValueKHR = (PFN_vkGetSemaphoreCounterValueKHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetSemaphoreCounterValueKHR\");\n    pAPI->vkWaitSemaphoresKHR = (PFN_vkWaitSemaphoresKHR)vkb_dlsym(g_vkbVulkanSO, \"vkWaitSemaphoresKHR\");\n    pAPI->vkSignalSemaphoreKHR = (PFN_vkSignalSemaphoreKHR)vkb_dlsym(g_vkbVulkanSO, \"vkSignalSemaphoreKHR\");\n    pAPI->vkSetSwapchainPresentTimingQueueSizeEXT = (PFN_vkSetSwapchainPresentTimingQueueSizeEXT)vkb_dlsym(g_vkbVulkanSO, \"vkSetSwapchainPresentTimingQueueSizeEXT\");\n    pAPI->vkGetSwapchainTimingPropertiesEXT = (PFN_vkGetSwapchainTimingPropertiesEXT)vkb_dlsym(g_vkbVulkanSO, \"vkGetSwapchainTimingPropertiesEXT\");\n    pAPI->vkGetSwapchainTimeDomainPropertiesEXT = (PFN_vkGetSwapchainTimeDomainPropertiesEXT)vkb_dlsym(g_vkbVulkanSO, \"vkGetSwapchainTimeDomainPropertiesEXT\");\n    pAPI->vkGetPastPresentationTimingEXT = (PFN_vkGetPastPresentationTimingEXT)vkb_dlsym(g_vkbVulkanSO, \"vkGetPastPresentationTimingEXT\");\n    pAPI->vkInitializePerformanceApiINTEL = (PFN_vkInitializePerformanceApiINTEL)vkb_dlsym(g_vkbVulkanSO, \"vkInitializePerformanceApiINTEL\");\n    pAPI->vkUninitializePerformanceApiINTEL = (PFN_vkUninitializePerformanceApiINTEL)vkb_dlsym(g_vkbVulkanSO, \"vkUninitializePerformanceApiINTEL\");\n    pAPI->vkCmdSetPerformanceMarkerINTEL = (PFN_vkCmdSetPerformanceMarkerINTEL)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetPerformanceMarkerINTEL\");\n    pAPI->vkCmdSetPerformanceStreamMarkerINTEL = (PFN_vkCmdSetPerformanceStreamMarkerINTEL)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetPerformanceStreamMarkerINTEL\");\n    pAPI->vkCmdSetPerformanceOverrideINTEL = (PFN_vkCmdSetPerformanceOverrideINTEL)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetPerformanceOverrideINTEL\");\n    pAPI->vkAcquirePerformanceConfigurationINTEL = (PFN_vkAcquirePerformanceConfigurationINTEL)vkb_dlsym(g_vkbVulkanSO, \"vkAcquirePerformanceConfigurationINTEL\");\n    pAPI->vkReleasePerformanceConfigurationINTEL = (PFN_vkReleasePerformanceConfigurationINTEL)vkb_dlsym(g_vkbVulkanSO, \"vkReleasePerformanceConfigurationINTEL\");\n    pAPI->vkQueueSetPerformanceConfigurationINTEL = (PFN_vkQueueSetPerformanceConfigurationINTEL)vkb_dlsym(g_vkbVulkanSO, \"vkQueueSetPerformanceConfigurationINTEL\");\n    pAPI->vkGetPerformanceParameterINTEL = (PFN_vkGetPerformanceParameterINTEL)vkb_dlsym(g_vkbVulkanSO, \"vkGetPerformanceParameterINTEL\");\n    pAPI->vkSetLocalDimmingAMD = (PFN_vkSetLocalDimmingAMD)vkb_dlsym(g_vkbVulkanSO, \"vkSetLocalDimmingAMD\");\n    pAPI->vkGetPhysicalDeviceFragmentShadingRatesKHR = (PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceFragmentShadingRatesKHR\");\n    pAPI->vkCmdSetFragmentShadingRateKHR = (PFN_vkCmdSetFragmentShadingRateKHR)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetFragmentShadingRateKHR\");\n    pAPI->vkCmdSetRenderingAttachmentLocationsKHR = (PFN_vkCmdSetRenderingAttachmentLocationsKHR)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetRenderingAttachmentLocationsKHR\");\n    pAPI->vkCmdSetRenderingInputAttachmentIndicesKHR = (PFN_vkCmdSetRenderingInputAttachmentIndicesKHR)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetRenderingInputAttachmentIndicesKHR\");\n    pAPI->vkGetPhysicalDeviceToolPropertiesEXT = (PFN_vkGetPhysicalDeviceToolPropertiesEXT)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceToolPropertiesEXT\");\n    pAPI->vkWaitForPresentKHR = (PFN_vkWaitForPresentKHR)vkb_dlsym(g_vkbVulkanSO, \"vkWaitForPresentKHR\");\n    pAPI->vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = (PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceCooperativeMatrixPropertiesNV\");\n    pAPI->vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = (PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV\");\n    pAPI->vkCreateHeadlessSurfaceEXT = (PFN_vkCreateHeadlessSurfaceEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCreateHeadlessSurfaceEXT\");\n    pAPI->vkGetBufferDeviceAddressKHR = (PFN_vkGetBufferDeviceAddressKHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetBufferDeviceAddressKHR\");\n    pAPI->vkGetBufferOpaqueCaptureAddressKHR = (PFN_vkGetBufferOpaqueCaptureAddressKHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetBufferOpaqueCaptureAddressKHR\");\n    pAPI->vkGetDeviceMemoryOpaqueCaptureAddressKHR = (PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetDeviceMemoryOpaqueCaptureAddressKHR\");\n    pAPI->vkGetBufferDeviceAddressEXT = (PFN_vkGetBufferDeviceAddressEXT)vkb_dlsym(g_vkbVulkanSO, \"vkGetBufferDeviceAddressEXT\");\n    pAPI->vkResetQueryPoolEXT = (PFN_vkResetQueryPoolEXT)vkb_dlsym(g_vkbVulkanSO, \"vkResetQueryPoolEXT\");\n    pAPI->vkCmdSetCullModeEXT = (PFN_vkCmdSetCullModeEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetCullModeEXT\");\n    pAPI->vkCmdSetFrontFaceEXT = (PFN_vkCmdSetFrontFaceEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetFrontFaceEXT\");\n    pAPI->vkCmdSetPrimitiveTopologyEXT = (PFN_vkCmdSetPrimitiveTopologyEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetPrimitiveTopologyEXT\");\n    pAPI->vkCmdSetViewportWithCountEXT = (PFN_vkCmdSetViewportWithCountEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetViewportWithCountEXT\");\n    pAPI->vkCmdSetScissorWithCountEXT = (PFN_vkCmdSetScissorWithCountEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetScissorWithCountEXT\");\n    pAPI->vkCmdBindVertexBuffers2EXT = (PFN_vkCmdBindVertexBuffers2EXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdBindVertexBuffers2EXT\");\n    pAPI->vkCmdSetDepthTestEnableEXT = (PFN_vkCmdSetDepthTestEnableEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetDepthTestEnableEXT\");\n    pAPI->vkCmdSetDepthWriteEnableEXT = (PFN_vkCmdSetDepthWriteEnableEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetDepthWriteEnableEXT\");\n    pAPI->vkCmdSetDepthCompareOpEXT = (PFN_vkCmdSetDepthCompareOpEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetDepthCompareOpEXT\");\n    pAPI->vkCmdSetDepthBoundsTestEnableEXT = (PFN_vkCmdSetDepthBoundsTestEnableEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetDepthBoundsTestEnableEXT\");\n    pAPI->vkCmdSetStencilTestEnableEXT = (PFN_vkCmdSetStencilTestEnableEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetStencilTestEnableEXT\");\n    pAPI->vkCmdSetStencilOpEXT = (PFN_vkCmdSetStencilOpEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetStencilOpEXT\");\n    pAPI->vkCreateDeferredOperationKHR = (PFN_vkCreateDeferredOperationKHR)vkb_dlsym(g_vkbVulkanSO, \"vkCreateDeferredOperationKHR\");\n    pAPI->vkDestroyDeferredOperationKHR = (PFN_vkDestroyDeferredOperationKHR)vkb_dlsym(g_vkbVulkanSO, \"vkDestroyDeferredOperationKHR\");\n    pAPI->vkGetDeferredOperationMaxConcurrencyKHR = (PFN_vkGetDeferredOperationMaxConcurrencyKHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetDeferredOperationMaxConcurrencyKHR\");\n    pAPI->vkGetDeferredOperationResultKHR = (PFN_vkGetDeferredOperationResultKHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetDeferredOperationResultKHR\");\n    pAPI->vkDeferredOperationJoinKHR = (PFN_vkDeferredOperationJoinKHR)vkb_dlsym(g_vkbVulkanSO, \"vkDeferredOperationJoinKHR\");\n    pAPI->vkGetPipelineExecutablePropertiesKHR = (PFN_vkGetPipelineExecutablePropertiesKHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetPipelineExecutablePropertiesKHR\");\n    pAPI->vkGetPipelineExecutableStatisticsKHR = (PFN_vkGetPipelineExecutableStatisticsKHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetPipelineExecutableStatisticsKHR\");\n    pAPI->vkGetPipelineExecutableInternalRepresentationsKHR = (PFN_vkGetPipelineExecutableInternalRepresentationsKHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetPipelineExecutableInternalRepresentationsKHR\");\n    pAPI->vkCopyMemoryToImageEXT = (PFN_vkCopyMemoryToImageEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCopyMemoryToImageEXT\");\n    pAPI->vkCopyImageToMemoryEXT = (PFN_vkCopyImageToMemoryEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCopyImageToMemoryEXT\");\n    pAPI->vkCopyImageToImageEXT = (PFN_vkCopyImageToImageEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCopyImageToImageEXT\");\n    pAPI->vkTransitionImageLayoutEXT = (PFN_vkTransitionImageLayoutEXT)vkb_dlsym(g_vkbVulkanSO, \"vkTransitionImageLayoutEXT\");\n    pAPI->vkGetImageSubresourceLayout2EXT = (PFN_vkGetImageSubresourceLayout2EXT)vkb_dlsym(g_vkbVulkanSO, \"vkGetImageSubresourceLayout2EXT\");\n    pAPI->vkMapMemory2KHR = (PFN_vkMapMemory2KHR)vkb_dlsym(g_vkbVulkanSO, \"vkMapMemory2KHR\");\n    pAPI->vkUnmapMemory2KHR = (PFN_vkUnmapMemory2KHR)vkb_dlsym(g_vkbVulkanSO, \"vkUnmapMemory2KHR\");\n    pAPI->vkGetGeneratedCommandsMemoryRequirementsNV = (PFN_vkGetGeneratedCommandsMemoryRequirementsNV)vkb_dlsym(g_vkbVulkanSO, \"vkGetGeneratedCommandsMemoryRequirementsNV\");\n    pAPI->vkCmdPreprocessGeneratedCommandsNV = (PFN_vkCmdPreprocessGeneratedCommandsNV)vkb_dlsym(g_vkbVulkanSO, \"vkCmdPreprocessGeneratedCommandsNV\");\n    pAPI->vkCmdExecuteGeneratedCommandsNV = (PFN_vkCmdExecuteGeneratedCommandsNV)vkb_dlsym(g_vkbVulkanSO, \"vkCmdExecuteGeneratedCommandsNV\");\n    pAPI->vkCmdBindPipelineShaderGroupNV = (PFN_vkCmdBindPipelineShaderGroupNV)vkb_dlsym(g_vkbVulkanSO, \"vkCmdBindPipelineShaderGroupNV\");\n    pAPI->vkCreateIndirectCommandsLayoutNV = (PFN_vkCreateIndirectCommandsLayoutNV)vkb_dlsym(g_vkbVulkanSO, \"vkCreateIndirectCommandsLayoutNV\");\n    pAPI->vkDestroyIndirectCommandsLayoutNV = (PFN_vkDestroyIndirectCommandsLayoutNV)vkb_dlsym(g_vkbVulkanSO, \"vkDestroyIndirectCommandsLayoutNV\");\n    pAPI->vkCmdSetDepthBias2EXT = (PFN_vkCmdSetDepthBias2EXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetDepthBias2EXT\");\n    pAPI->vkAcquireDrmDisplayEXT = (PFN_vkAcquireDrmDisplayEXT)vkb_dlsym(g_vkbVulkanSO, \"vkAcquireDrmDisplayEXT\");\n    pAPI->vkGetDrmDisplayEXT = (PFN_vkGetDrmDisplayEXT)vkb_dlsym(g_vkbVulkanSO, \"vkGetDrmDisplayEXT\");\n    pAPI->vkCreatePrivateDataSlotEXT = (PFN_vkCreatePrivateDataSlotEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCreatePrivateDataSlotEXT\");\n    pAPI->vkDestroyPrivateDataSlotEXT = (PFN_vkDestroyPrivateDataSlotEXT)vkb_dlsym(g_vkbVulkanSO, \"vkDestroyPrivateDataSlotEXT\");\n    pAPI->vkSetPrivateDataEXT = (PFN_vkSetPrivateDataEXT)vkb_dlsym(g_vkbVulkanSO, \"vkSetPrivateDataEXT\");\n    pAPI->vkGetPrivateDataEXT = (PFN_vkGetPrivateDataEXT)vkb_dlsym(g_vkbVulkanSO, \"vkGetPrivateDataEXT\");\n    pAPI->vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR = (PFN_vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR\");\n    pAPI->vkGetEncodedVideoSessionParametersKHR = (PFN_vkGetEncodedVideoSessionParametersKHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetEncodedVideoSessionParametersKHR\");\n    pAPI->vkCmdEncodeVideoKHR = (PFN_vkCmdEncodeVideoKHR)vkb_dlsym(g_vkbVulkanSO, \"vkCmdEncodeVideoKHR\");\n    pAPI->vkCmdRefreshObjectsKHR = (PFN_vkCmdRefreshObjectsKHR)vkb_dlsym(g_vkbVulkanSO, \"vkCmdRefreshObjectsKHR\");\n    pAPI->vkGetPhysicalDeviceRefreshableObjectTypesKHR = (PFN_vkGetPhysicalDeviceRefreshableObjectTypesKHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceRefreshableObjectTypesKHR\");\n    pAPI->vkCmdDispatchTileQCOM = (PFN_vkCmdDispatchTileQCOM)vkb_dlsym(g_vkbVulkanSO, \"vkCmdDispatchTileQCOM\");\n    pAPI->vkCmdBeginPerTileExecutionQCOM = (PFN_vkCmdBeginPerTileExecutionQCOM)vkb_dlsym(g_vkbVulkanSO, \"vkCmdBeginPerTileExecutionQCOM\");\n    pAPI->vkCmdEndPerTileExecutionQCOM = (PFN_vkCmdEndPerTileExecutionQCOM)vkb_dlsym(g_vkbVulkanSO, \"vkCmdEndPerTileExecutionQCOM\");\n    pAPI->vkCmdSetEvent2KHR = (PFN_vkCmdSetEvent2KHR)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetEvent2KHR\");\n    pAPI->vkCmdResetEvent2KHR = (PFN_vkCmdResetEvent2KHR)vkb_dlsym(g_vkbVulkanSO, \"vkCmdResetEvent2KHR\");\n    pAPI->vkCmdWaitEvents2KHR = (PFN_vkCmdWaitEvents2KHR)vkb_dlsym(g_vkbVulkanSO, \"vkCmdWaitEvents2KHR\");\n    pAPI->vkCmdPipelineBarrier2KHR = (PFN_vkCmdPipelineBarrier2KHR)vkb_dlsym(g_vkbVulkanSO, \"vkCmdPipelineBarrier2KHR\");\n    pAPI->vkCmdWriteTimestamp2KHR = (PFN_vkCmdWriteTimestamp2KHR)vkb_dlsym(g_vkbVulkanSO, \"vkCmdWriteTimestamp2KHR\");\n    pAPI->vkQueueSubmit2KHR = (PFN_vkQueueSubmit2KHR)vkb_dlsym(g_vkbVulkanSO, \"vkQueueSubmit2KHR\");\n    pAPI->vkGetDescriptorSetLayoutSizeEXT = (PFN_vkGetDescriptorSetLayoutSizeEXT)vkb_dlsym(g_vkbVulkanSO, \"vkGetDescriptorSetLayoutSizeEXT\");\n    pAPI->vkGetDescriptorSetLayoutBindingOffsetEXT = (PFN_vkGetDescriptorSetLayoutBindingOffsetEXT)vkb_dlsym(g_vkbVulkanSO, \"vkGetDescriptorSetLayoutBindingOffsetEXT\");\n    pAPI->vkGetDescriptorEXT = (PFN_vkGetDescriptorEXT)vkb_dlsym(g_vkbVulkanSO, \"vkGetDescriptorEXT\");\n    pAPI->vkCmdBindDescriptorBuffersEXT = (PFN_vkCmdBindDescriptorBuffersEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdBindDescriptorBuffersEXT\");\n    pAPI->vkCmdSetDescriptorBufferOffsetsEXT = (PFN_vkCmdSetDescriptorBufferOffsetsEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetDescriptorBufferOffsetsEXT\");\n    pAPI->vkCmdBindDescriptorBufferEmbeddedSamplersEXT = (PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdBindDescriptorBufferEmbeddedSamplersEXT\");\n    pAPI->vkGetBufferOpaqueCaptureDescriptorDataEXT = (PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT)vkb_dlsym(g_vkbVulkanSO, \"vkGetBufferOpaqueCaptureDescriptorDataEXT\");\n    pAPI->vkGetImageOpaqueCaptureDescriptorDataEXT = (PFN_vkGetImageOpaqueCaptureDescriptorDataEXT)vkb_dlsym(g_vkbVulkanSO, \"vkGetImageOpaqueCaptureDescriptorDataEXT\");\n    pAPI->vkGetImageViewOpaqueCaptureDescriptorDataEXT = (PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT)vkb_dlsym(g_vkbVulkanSO, \"vkGetImageViewOpaqueCaptureDescriptorDataEXT\");\n    pAPI->vkGetSamplerOpaqueCaptureDescriptorDataEXT = (PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT)vkb_dlsym(g_vkbVulkanSO, \"vkGetSamplerOpaqueCaptureDescriptorDataEXT\");\n    pAPI->vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT = (PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT)vkb_dlsym(g_vkbVulkanSO, \"vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT\");\n    pAPI->vkCmdSetFragmentShadingRateEnumNV = (PFN_vkCmdSetFragmentShadingRateEnumNV)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetFragmentShadingRateEnumNV\");\n    pAPI->vkCmdDrawMeshTasksEXT = (PFN_vkCmdDrawMeshTasksEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdDrawMeshTasksEXT\");\n    pAPI->vkCmdDrawMeshTasksIndirectEXT = (PFN_vkCmdDrawMeshTasksIndirectEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdDrawMeshTasksIndirectEXT\");\n    pAPI->vkCmdDrawMeshTasksIndirectCountEXT = (PFN_vkCmdDrawMeshTasksIndirectCountEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdDrawMeshTasksIndirectCountEXT\");\n    pAPI->vkCmdCopyBuffer2KHR = (PFN_vkCmdCopyBuffer2KHR)vkb_dlsym(g_vkbVulkanSO, \"vkCmdCopyBuffer2KHR\");\n    pAPI->vkCmdCopyImage2KHR = (PFN_vkCmdCopyImage2KHR)vkb_dlsym(g_vkbVulkanSO, \"vkCmdCopyImage2KHR\");\n    pAPI->vkCmdCopyBufferToImage2KHR = (PFN_vkCmdCopyBufferToImage2KHR)vkb_dlsym(g_vkbVulkanSO, \"vkCmdCopyBufferToImage2KHR\");\n    pAPI->vkCmdCopyImageToBuffer2KHR = (PFN_vkCmdCopyImageToBuffer2KHR)vkb_dlsym(g_vkbVulkanSO, \"vkCmdCopyImageToBuffer2KHR\");\n    pAPI->vkCmdBlitImage2KHR = (PFN_vkCmdBlitImage2KHR)vkb_dlsym(g_vkbVulkanSO, \"vkCmdBlitImage2KHR\");\n    pAPI->vkCmdResolveImage2KHR = (PFN_vkCmdResolveImage2KHR)vkb_dlsym(g_vkbVulkanSO, \"vkCmdResolveImage2KHR\");\n    pAPI->vkGetDeviceFaultInfoEXT = (PFN_vkGetDeviceFaultInfoEXT)vkb_dlsym(g_vkbVulkanSO, \"vkGetDeviceFaultInfoEXT\");\n    pAPI->vkCmdSetVertexInputEXT = (PFN_vkCmdSetVertexInputEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetVertexInputEXT\");\n    pAPI->vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = (PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI)vkb_dlsym(g_vkbVulkanSO, \"vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI\");\n    pAPI->vkCmdSubpassShadingHUAWEI = (PFN_vkCmdSubpassShadingHUAWEI)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSubpassShadingHUAWEI\");\n    pAPI->vkCmdBindInvocationMaskHUAWEI = (PFN_vkCmdBindInvocationMaskHUAWEI)vkb_dlsym(g_vkbVulkanSO, \"vkCmdBindInvocationMaskHUAWEI\");\n    pAPI->vkGetMemoryRemoteAddressNV = (PFN_vkGetMemoryRemoteAddressNV)vkb_dlsym(g_vkbVulkanSO, \"vkGetMemoryRemoteAddressNV\");\n    pAPI->vkGetPipelinePropertiesEXT = (PFN_vkGetPipelinePropertiesEXT)vkb_dlsym(g_vkbVulkanSO, \"vkGetPipelinePropertiesEXT\");\n    pAPI->vkCmdSetPatchControlPointsEXT = (PFN_vkCmdSetPatchControlPointsEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetPatchControlPointsEXT\");\n    pAPI->vkCmdSetRasterizerDiscardEnableEXT = (PFN_vkCmdSetRasterizerDiscardEnableEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetRasterizerDiscardEnableEXT\");\n    pAPI->vkCmdSetDepthBiasEnableEXT = (PFN_vkCmdSetDepthBiasEnableEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetDepthBiasEnableEXT\");\n    pAPI->vkCmdSetLogicOpEXT = (PFN_vkCmdSetLogicOpEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetLogicOpEXT\");\n    pAPI->vkCmdSetPrimitiveRestartEnableEXT = (PFN_vkCmdSetPrimitiveRestartEnableEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetPrimitiveRestartEnableEXT\");\n    pAPI->vkCmdSetColorWriteEnableEXT = (PFN_vkCmdSetColorWriteEnableEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetColorWriteEnableEXT\");\n    pAPI->vkCmdTraceRaysIndirect2KHR = (PFN_vkCmdTraceRaysIndirect2KHR)vkb_dlsym(g_vkbVulkanSO, \"vkCmdTraceRaysIndirect2KHR\");\n    pAPI->vkCmdDrawMultiEXT = (PFN_vkCmdDrawMultiEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdDrawMultiEXT\");\n    pAPI->vkCmdDrawMultiIndexedEXT = (PFN_vkCmdDrawMultiIndexedEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdDrawMultiIndexedEXT\");\n    pAPI->vkCreateMicromapEXT = (PFN_vkCreateMicromapEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCreateMicromapEXT\");\n    pAPI->vkDestroyMicromapEXT = (PFN_vkDestroyMicromapEXT)vkb_dlsym(g_vkbVulkanSO, \"vkDestroyMicromapEXT\");\n    pAPI->vkCmdBuildMicromapsEXT = (PFN_vkCmdBuildMicromapsEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdBuildMicromapsEXT\");\n    pAPI->vkBuildMicromapsEXT = (PFN_vkBuildMicromapsEXT)vkb_dlsym(g_vkbVulkanSO, \"vkBuildMicromapsEXT\");\n    pAPI->vkCopyMicromapEXT = (PFN_vkCopyMicromapEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCopyMicromapEXT\");\n    pAPI->vkCopyMicromapToMemoryEXT = (PFN_vkCopyMicromapToMemoryEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCopyMicromapToMemoryEXT\");\n    pAPI->vkCopyMemoryToMicromapEXT = (PFN_vkCopyMemoryToMicromapEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCopyMemoryToMicromapEXT\");\n    pAPI->vkWriteMicromapsPropertiesEXT = (PFN_vkWriteMicromapsPropertiesEXT)vkb_dlsym(g_vkbVulkanSO, \"vkWriteMicromapsPropertiesEXT\");\n    pAPI->vkCmdCopyMicromapEXT = (PFN_vkCmdCopyMicromapEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdCopyMicromapEXT\");\n    pAPI->vkCmdCopyMicromapToMemoryEXT = (PFN_vkCmdCopyMicromapToMemoryEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdCopyMicromapToMemoryEXT\");\n    pAPI->vkCmdCopyMemoryToMicromapEXT = (PFN_vkCmdCopyMemoryToMicromapEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdCopyMemoryToMicromapEXT\");\n    pAPI->vkCmdWriteMicromapsPropertiesEXT = (PFN_vkCmdWriteMicromapsPropertiesEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdWriteMicromapsPropertiesEXT\");\n    pAPI->vkGetDeviceMicromapCompatibilityEXT = (PFN_vkGetDeviceMicromapCompatibilityEXT)vkb_dlsym(g_vkbVulkanSO, \"vkGetDeviceMicromapCompatibilityEXT\");\n    pAPI->vkGetMicromapBuildSizesEXT = (PFN_vkGetMicromapBuildSizesEXT)vkb_dlsym(g_vkbVulkanSO, \"vkGetMicromapBuildSizesEXT\");\n    pAPI->vkCmdDrawClusterHUAWEI = (PFN_vkCmdDrawClusterHUAWEI)vkb_dlsym(g_vkbVulkanSO, \"vkCmdDrawClusterHUAWEI\");\n    pAPI->vkCmdDrawClusterIndirectHUAWEI = (PFN_vkCmdDrawClusterIndirectHUAWEI)vkb_dlsym(g_vkbVulkanSO, \"vkCmdDrawClusterIndirectHUAWEI\");\n    pAPI->vkSetDeviceMemoryPriorityEXT = (PFN_vkSetDeviceMemoryPriorityEXT)vkb_dlsym(g_vkbVulkanSO, \"vkSetDeviceMemoryPriorityEXT\");\n    pAPI->vkGetDeviceBufferMemoryRequirementsKHR = (PFN_vkGetDeviceBufferMemoryRequirementsKHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetDeviceBufferMemoryRequirementsKHR\");\n    pAPI->vkGetDeviceImageMemoryRequirementsKHR = (PFN_vkGetDeviceImageMemoryRequirementsKHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetDeviceImageMemoryRequirementsKHR\");\n    pAPI->vkGetDeviceImageSparseMemoryRequirementsKHR = (PFN_vkGetDeviceImageSparseMemoryRequirementsKHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetDeviceImageSparseMemoryRequirementsKHR\");\n    pAPI->vkGetDescriptorSetLayoutHostMappingInfoVALVE = (PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE)vkb_dlsym(g_vkbVulkanSO, \"vkGetDescriptorSetLayoutHostMappingInfoVALVE\");\n    pAPI->vkGetDescriptorSetHostMappingVALVE = (PFN_vkGetDescriptorSetHostMappingVALVE)vkb_dlsym(g_vkbVulkanSO, \"vkGetDescriptorSetHostMappingVALVE\");\n    pAPI->vkGetPipelineIndirectMemoryRequirementsNV = (PFN_vkGetPipelineIndirectMemoryRequirementsNV)vkb_dlsym(g_vkbVulkanSO, \"vkGetPipelineIndirectMemoryRequirementsNV\");\n    pAPI->vkCmdUpdatePipelineIndirectBufferNV = (PFN_vkCmdUpdatePipelineIndirectBufferNV)vkb_dlsym(g_vkbVulkanSO, \"vkCmdUpdatePipelineIndirectBufferNV\");\n    pAPI->vkGetPipelineIndirectDeviceAddressNV = (PFN_vkGetPipelineIndirectDeviceAddressNV)vkb_dlsym(g_vkbVulkanSO, \"vkGetPipelineIndirectDeviceAddressNV\");\n    pAPI->vkCmdSetDepthClampEnableEXT = (PFN_vkCmdSetDepthClampEnableEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetDepthClampEnableEXT\");\n    pAPI->vkCmdSetPolygonModeEXT = (PFN_vkCmdSetPolygonModeEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetPolygonModeEXT\");\n    pAPI->vkCmdSetRasterizationSamplesEXT = (PFN_vkCmdSetRasterizationSamplesEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetRasterizationSamplesEXT\");\n    pAPI->vkCmdSetSampleMaskEXT = (PFN_vkCmdSetSampleMaskEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetSampleMaskEXT\");\n    pAPI->vkCmdSetAlphaToCoverageEnableEXT = (PFN_vkCmdSetAlphaToCoverageEnableEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetAlphaToCoverageEnableEXT\");\n    pAPI->vkCmdSetAlphaToOneEnableEXT = (PFN_vkCmdSetAlphaToOneEnableEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetAlphaToOneEnableEXT\");\n    pAPI->vkCmdSetLogicOpEnableEXT = (PFN_vkCmdSetLogicOpEnableEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetLogicOpEnableEXT\");\n    pAPI->vkCmdSetColorBlendEnableEXT = (PFN_vkCmdSetColorBlendEnableEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetColorBlendEnableEXT\");\n    pAPI->vkCmdSetColorBlendEquationEXT = (PFN_vkCmdSetColorBlendEquationEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetColorBlendEquationEXT\");\n    pAPI->vkCmdSetColorWriteMaskEXT = (PFN_vkCmdSetColorWriteMaskEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetColorWriteMaskEXT\");\n    pAPI->vkCmdSetTessellationDomainOriginEXT = (PFN_vkCmdSetTessellationDomainOriginEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetTessellationDomainOriginEXT\");\n    pAPI->vkCmdSetRasterizationStreamEXT = (PFN_vkCmdSetRasterizationStreamEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetRasterizationStreamEXT\");\n    pAPI->vkCmdSetConservativeRasterizationModeEXT = (PFN_vkCmdSetConservativeRasterizationModeEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetConservativeRasterizationModeEXT\");\n    pAPI->vkCmdSetExtraPrimitiveOverestimationSizeEXT = (PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetExtraPrimitiveOverestimationSizeEXT\");\n    pAPI->vkCmdSetDepthClipEnableEXT = (PFN_vkCmdSetDepthClipEnableEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetDepthClipEnableEXT\");\n    pAPI->vkCmdSetSampleLocationsEnableEXT = (PFN_vkCmdSetSampleLocationsEnableEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetSampleLocationsEnableEXT\");\n    pAPI->vkCmdSetColorBlendAdvancedEXT = (PFN_vkCmdSetColorBlendAdvancedEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetColorBlendAdvancedEXT\");\n    pAPI->vkCmdSetProvokingVertexModeEXT = (PFN_vkCmdSetProvokingVertexModeEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetProvokingVertexModeEXT\");\n    pAPI->vkCmdSetLineRasterizationModeEXT = (PFN_vkCmdSetLineRasterizationModeEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetLineRasterizationModeEXT\");\n    pAPI->vkCmdSetLineStippleEnableEXT = (PFN_vkCmdSetLineStippleEnableEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetLineStippleEnableEXT\");\n    pAPI->vkCmdSetDepthClipNegativeOneToOneEXT = (PFN_vkCmdSetDepthClipNegativeOneToOneEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetDepthClipNegativeOneToOneEXT\");\n    pAPI->vkCmdSetViewportWScalingEnableNV = (PFN_vkCmdSetViewportWScalingEnableNV)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetViewportWScalingEnableNV\");\n    pAPI->vkCmdSetViewportSwizzleNV = (PFN_vkCmdSetViewportSwizzleNV)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetViewportSwizzleNV\");\n    pAPI->vkCmdSetCoverageToColorEnableNV = (PFN_vkCmdSetCoverageToColorEnableNV)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetCoverageToColorEnableNV\");\n    pAPI->vkCmdSetCoverageToColorLocationNV = (PFN_vkCmdSetCoverageToColorLocationNV)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetCoverageToColorLocationNV\");\n    pAPI->vkCmdSetCoverageModulationModeNV = (PFN_vkCmdSetCoverageModulationModeNV)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetCoverageModulationModeNV\");\n    pAPI->vkCmdSetCoverageModulationTableEnableNV = (PFN_vkCmdSetCoverageModulationTableEnableNV)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetCoverageModulationTableEnableNV\");\n    pAPI->vkCmdSetCoverageModulationTableNV = (PFN_vkCmdSetCoverageModulationTableNV)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetCoverageModulationTableNV\");\n    pAPI->vkCmdSetShadingRateImageEnableNV = (PFN_vkCmdSetShadingRateImageEnableNV)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetShadingRateImageEnableNV\");\n    pAPI->vkCmdSetRepresentativeFragmentTestEnableNV = (PFN_vkCmdSetRepresentativeFragmentTestEnableNV)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetRepresentativeFragmentTestEnableNV\");\n    pAPI->vkCmdSetCoverageReductionModeNV = (PFN_vkCmdSetCoverageReductionModeNV)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetCoverageReductionModeNV\");\n    pAPI->vkCreateTensorARM = (PFN_vkCreateTensorARM)vkb_dlsym(g_vkbVulkanSO, \"vkCreateTensorARM\");\n    pAPI->vkDestroyTensorARM = (PFN_vkDestroyTensorARM)vkb_dlsym(g_vkbVulkanSO, \"vkDestroyTensorARM\");\n    pAPI->vkCreateTensorViewARM = (PFN_vkCreateTensorViewARM)vkb_dlsym(g_vkbVulkanSO, \"vkCreateTensorViewARM\");\n    pAPI->vkDestroyTensorViewARM = (PFN_vkDestroyTensorViewARM)vkb_dlsym(g_vkbVulkanSO, \"vkDestroyTensorViewARM\");\n    pAPI->vkGetTensorMemoryRequirementsARM = (PFN_vkGetTensorMemoryRequirementsARM)vkb_dlsym(g_vkbVulkanSO, \"vkGetTensorMemoryRequirementsARM\");\n    pAPI->vkBindTensorMemoryARM = (PFN_vkBindTensorMemoryARM)vkb_dlsym(g_vkbVulkanSO, \"vkBindTensorMemoryARM\");\n    pAPI->vkGetDeviceTensorMemoryRequirementsARM = (PFN_vkGetDeviceTensorMemoryRequirementsARM)vkb_dlsym(g_vkbVulkanSO, \"vkGetDeviceTensorMemoryRequirementsARM\");\n    pAPI->vkCmdCopyTensorARM = (PFN_vkCmdCopyTensorARM)vkb_dlsym(g_vkbVulkanSO, \"vkCmdCopyTensorARM\");\n    pAPI->vkGetPhysicalDeviceExternalTensorPropertiesARM = (PFN_vkGetPhysicalDeviceExternalTensorPropertiesARM)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceExternalTensorPropertiesARM\");\n    pAPI->vkGetTensorOpaqueCaptureDescriptorDataARM = (PFN_vkGetTensorOpaqueCaptureDescriptorDataARM)vkb_dlsym(g_vkbVulkanSO, \"vkGetTensorOpaqueCaptureDescriptorDataARM\");\n    pAPI->vkGetTensorViewOpaqueCaptureDescriptorDataARM = (PFN_vkGetTensorViewOpaqueCaptureDescriptorDataARM)vkb_dlsym(g_vkbVulkanSO, \"vkGetTensorViewOpaqueCaptureDescriptorDataARM\");\n    pAPI->vkGetShaderModuleIdentifierEXT = (PFN_vkGetShaderModuleIdentifierEXT)vkb_dlsym(g_vkbVulkanSO, \"vkGetShaderModuleIdentifierEXT\");\n    pAPI->vkGetShaderModuleCreateInfoIdentifierEXT = (PFN_vkGetShaderModuleCreateInfoIdentifierEXT)vkb_dlsym(g_vkbVulkanSO, \"vkGetShaderModuleCreateInfoIdentifierEXT\");\n    pAPI->vkGetPhysicalDeviceOpticalFlowImageFormatsNV = (PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceOpticalFlowImageFormatsNV\");\n    pAPI->vkCreateOpticalFlowSessionNV = (PFN_vkCreateOpticalFlowSessionNV)vkb_dlsym(g_vkbVulkanSO, \"vkCreateOpticalFlowSessionNV\");\n    pAPI->vkDestroyOpticalFlowSessionNV = (PFN_vkDestroyOpticalFlowSessionNV)vkb_dlsym(g_vkbVulkanSO, \"vkDestroyOpticalFlowSessionNV\");\n    pAPI->vkBindOpticalFlowSessionImageNV = (PFN_vkBindOpticalFlowSessionImageNV)vkb_dlsym(g_vkbVulkanSO, \"vkBindOpticalFlowSessionImageNV\");\n    pAPI->vkCmdOpticalFlowExecuteNV = (PFN_vkCmdOpticalFlowExecuteNV)vkb_dlsym(g_vkbVulkanSO, \"vkCmdOpticalFlowExecuteNV\");\n    pAPI->vkCmdBindIndexBuffer2KHR = (PFN_vkCmdBindIndexBuffer2KHR)vkb_dlsym(g_vkbVulkanSO, \"vkCmdBindIndexBuffer2KHR\");\n    pAPI->vkGetRenderingAreaGranularityKHR = (PFN_vkGetRenderingAreaGranularityKHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetRenderingAreaGranularityKHR\");\n    pAPI->vkGetDeviceImageSubresourceLayoutKHR = (PFN_vkGetDeviceImageSubresourceLayoutKHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetDeviceImageSubresourceLayoutKHR\");\n    pAPI->vkGetImageSubresourceLayout2KHR = (PFN_vkGetImageSubresourceLayout2KHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetImageSubresourceLayout2KHR\");\n    pAPI->vkAntiLagUpdateAMD = (PFN_vkAntiLagUpdateAMD)vkb_dlsym(g_vkbVulkanSO, \"vkAntiLagUpdateAMD\");\n    pAPI->vkWaitForPresent2KHR = (PFN_vkWaitForPresent2KHR)vkb_dlsym(g_vkbVulkanSO, \"vkWaitForPresent2KHR\");\n    pAPI->vkCreateShadersEXT = (PFN_vkCreateShadersEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCreateShadersEXT\");\n    pAPI->vkDestroyShaderEXT = (PFN_vkDestroyShaderEXT)vkb_dlsym(g_vkbVulkanSO, \"vkDestroyShaderEXT\");\n    pAPI->vkGetShaderBinaryDataEXT = (PFN_vkGetShaderBinaryDataEXT)vkb_dlsym(g_vkbVulkanSO, \"vkGetShaderBinaryDataEXT\");\n    pAPI->vkCmdBindShadersEXT = (PFN_vkCmdBindShadersEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdBindShadersEXT\");\n    pAPI->vkCmdSetDepthClampRangeEXT = (PFN_vkCmdSetDepthClampRangeEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetDepthClampRangeEXT\");\n    pAPI->vkCreatePipelineBinariesKHR = (PFN_vkCreatePipelineBinariesKHR)vkb_dlsym(g_vkbVulkanSO, \"vkCreatePipelineBinariesKHR\");\n    pAPI->vkDestroyPipelineBinaryKHR = (PFN_vkDestroyPipelineBinaryKHR)vkb_dlsym(g_vkbVulkanSO, \"vkDestroyPipelineBinaryKHR\");\n    pAPI->vkGetPipelineKeyKHR = (PFN_vkGetPipelineKeyKHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetPipelineKeyKHR\");\n    pAPI->vkGetPipelineBinaryDataKHR = (PFN_vkGetPipelineBinaryDataKHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetPipelineBinaryDataKHR\");\n    pAPI->vkReleaseCapturedPipelineDataKHR = (PFN_vkReleaseCapturedPipelineDataKHR)vkb_dlsym(g_vkbVulkanSO, \"vkReleaseCapturedPipelineDataKHR\");\n    pAPI->vkGetFramebufferTilePropertiesQCOM = (PFN_vkGetFramebufferTilePropertiesQCOM)vkb_dlsym(g_vkbVulkanSO, \"vkGetFramebufferTilePropertiesQCOM\");\n    pAPI->vkGetDynamicRenderingTilePropertiesQCOM = (PFN_vkGetDynamicRenderingTilePropertiesQCOM)vkb_dlsym(g_vkbVulkanSO, \"vkGetDynamicRenderingTilePropertiesQCOM\");\n    pAPI->vkReleaseSwapchainImagesKHR = (PFN_vkReleaseSwapchainImagesKHR)vkb_dlsym(g_vkbVulkanSO, \"vkReleaseSwapchainImagesKHR\");\n    pAPI->vkReleaseSwapchainImagesEXT = (PFN_vkReleaseSwapchainImagesEXT)vkb_dlsym(g_vkbVulkanSO, \"vkReleaseSwapchainImagesEXT\");\n    pAPI->vkGetPhysicalDeviceCooperativeVectorPropertiesNV = (PFN_vkGetPhysicalDeviceCooperativeVectorPropertiesNV)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceCooperativeVectorPropertiesNV\");\n    pAPI->vkConvertCooperativeVectorMatrixNV = (PFN_vkConvertCooperativeVectorMatrixNV)vkb_dlsym(g_vkbVulkanSO, \"vkConvertCooperativeVectorMatrixNV\");\n    pAPI->vkCmdConvertCooperativeVectorMatrixNV = (PFN_vkCmdConvertCooperativeVectorMatrixNV)vkb_dlsym(g_vkbVulkanSO, \"vkCmdConvertCooperativeVectorMatrixNV\");\n    pAPI->vkSetLatencySleepModeNV = (PFN_vkSetLatencySleepModeNV)vkb_dlsym(g_vkbVulkanSO, \"vkSetLatencySleepModeNV\");\n    pAPI->vkLatencySleepNV = (PFN_vkLatencySleepNV)vkb_dlsym(g_vkbVulkanSO, \"vkLatencySleepNV\");\n    pAPI->vkSetLatencyMarkerNV = (PFN_vkSetLatencyMarkerNV)vkb_dlsym(g_vkbVulkanSO, \"vkSetLatencyMarkerNV\");\n    pAPI->vkGetLatencyTimingsNV = (PFN_vkGetLatencyTimingsNV)vkb_dlsym(g_vkbVulkanSO, \"vkGetLatencyTimingsNV\");\n    pAPI->vkQueueNotifyOutOfBandNV = (PFN_vkQueueNotifyOutOfBandNV)vkb_dlsym(g_vkbVulkanSO, \"vkQueueNotifyOutOfBandNV\");\n    pAPI->vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR = (PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR\");\n    pAPI->vkCreateDataGraphPipelinesARM = (PFN_vkCreateDataGraphPipelinesARM)vkb_dlsym(g_vkbVulkanSO, \"vkCreateDataGraphPipelinesARM\");\n    pAPI->vkCreateDataGraphPipelineSessionARM = (PFN_vkCreateDataGraphPipelineSessionARM)vkb_dlsym(g_vkbVulkanSO, \"vkCreateDataGraphPipelineSessionARM\");\n    pAPI->vkGetDataGraphPipelineSessionBindPointRequirementsARM = (PFN_vkGetDataGraphPipelineSessionBindPointRequirementsARM)vkb_dlsym(g_vkbVulkanSO, \"vkGetDataGraphPipelineSessionBindPointRequirementsARM\");\n    pAPI->vkGetDataGraphPipelineSessionMemoryRequirementsARM = (PFN_vkGetDataGraphPipelineSessionMemoryRequirementsARM)vkb_dlsym(g_vkbVulkanSO, \"vkGetDataGraphPipelineSessionMemoryRequirementsARM\");\n    pAPI->vkBindDataGraphPipelineSessionMemoryARM = (PFN_vkBindDataGraphPipelineSessionMemoryARM)vkb_dlsym(g_vkbVulkanSO, \"vkBindDataGraphPipelineSessionMemoryARM\");\n    pAPI->vkDestroyDataGraphPipelineSessionARM = (PFN_vkDestroyDataGraphPipelineSessionARM)vkb_dlsym(g_vkbVulkanSO, \"vkDestroyDataGraphPipelineSessionARM\");\n    pAPI->vkCmdDispatchDataGraphARM = (PFN_vkCmdDispatchDataGraphARM)vkb_dlsym(g_vkbVulkanSO, \"vkCmdDispatchDataGraphARM\");\n    pAPI->vkGetDataGraphPipelineAvailablePropertiesARM = (PFN_vkGetDataGraphPipelineAvailablePropertiesARM)vkb_dlsym(g_vkbVulkanSO, \"vkGetDataGraphPipelineAvailablePropertiesARM\");\n    pAPI->vkGetDataGraphPipelinePropertiesARM = (PFN_vkGetDataGraphPipelinePropertiesARM)vkb_dlsym(g_vkbVulkanSO, \"vkGetDataGraphPipelinePropertiesARM\");\n    pAPI->vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM = (PFN_vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM\");\n    pAPI->vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM = (PFN_vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM\");\n    pAPI->vkCmdSetAttachmentFeedbackLoopEnableEXT = (PFN_vkCmdSetAttachmentFeedbackLoopEnableEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetAttachmentFeedbackLoopEnableEXT\");\n    pAPI->vkCmdSetLineStippleKHR = (PFN_vkCmdSetLineStippleKHR)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetLineStippleKHR\");\n    pAPI->vkCmdSetLineStippleEXT = (PFN_vkCmdSetLineStippleEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetLineStippleEXT\");\n    pAPI->vkGetPhysicalDeviceCalibrateableTimeDomainsKHR = (PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsKHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceCalibrateableTimeDomainsKHR\");\n    pAPI->vkGetCalibratedTimestampsKHR = (PFN_vkGetCalibratedTimestampsKHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetCalibratedTimestampsKHR\");\n    pAPI->vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = (PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceCalibrateableTimeDomainsEXT\");\n    pAPI->vkGetCalibratedTimestampsEXT = (PFN_vkGetCalibratedTimestampsEXT)vkb_dlsym(g_vkbVulkanSO, \"vkGetCalibratedTimestampsEXT\");\n    pAPI->vkCmdBindDescriptorSets2KHR = (PFN_vkCmdBindDescriptorSets2KHR)vkb_dlsym(g_vkbVulkanSO, \"vkCmdBindDescriptorSets2KHR\");\n    pAPI->vkCmdPushConstants2KHR = (PFN_vkCmdPushConstants2KHR)vkb_dlsym(g_vkbVulkanSO, \"vkCmdPushConstants2KHR\");\n    pAPI->vkCmdPushDescriptorSet2KHR = (PFN_vkCmdPushDescriptorSet2KHR)vkb_dlsym(g_vkbVulkanSO, \"vkCmdPushDescriptorSet2KHR\");\n    pAPI->vkCmdPushDescriptorSetWithTemplate2KHR = (PFN_vkCmdPushDescriptorSetWithTemplate2KHR)vkb_dlsym(g_vkbVulkanSO, \"vkCmdPushDescriptorSetWithTemplate2KHR\");\n    pAPI->vkCmdSetDescriptorBufferOffsets2EXT = (PFN_vkCmdSetDescriptorBufferOffsets2EXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetDescriptorBufferOffsets2EXT\");\n    pAPI->vkCmdBindDescriptorBufferEmbeddedSamplers2EXT = (PFN_vkCmdBindDescriptorBufferEmbeddedSamplers2EXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdBindDescriptorBufferEmbeddedSamplers2EXT\");\n    pAPI->vkCmdBindTileMemoryQCOM = (PFN_vkCmdBindTileMemoryQCOM)vkb_dlsym(g_vkbVulkanSO, \"vkCmdBindTileMemoryQCOM\");\n    pAPI->vkCmdCopyMemoryIndirectKHR = (PFN_vkCmdCopyMemoryIndirectKHR)vkb_dlsym(g_vkbVulkanSO, \"vkCmdCopyMemoryIndirectKHR\");\n    pAPI->vkCmdCopyMemoryToImageIndirectKHR = (PFN_vkCmdCopyMemoryToImageIndirectKHR)vkb_dlsym(g_vkbVulkanSO, \"vkCmdCopyMemoryToImageIndirectKHR\");\n    pAPI->vkCmdCopyMemoryIndirectNV = (PFN_vkCmdCopyMemoryIndirectNV)vkb_dlsym(g_vkbVulkanSO, \"vkCmdCopyMemoryIndirectNV\");\n    pAPI->vkCmdCopyMemoryToImageIndirectNV = (PFN_vkCmdCopyMemoryToImageIndirectNV)vkb_dlsym(g_vkbVulkanSO, \"vkCmdCopyMemoryToImageIndirectNV\");\n    pAPI->vkCmdDecompressMemoryEXT = (PFN_vkCmdDecompressMemoryEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdDecompressMemoryEXT\");\n    pAPI->vkCmdDecompressMemoryIndirectCountEXT = (PFN_vkCmdDecompressMemoryIndirectCountEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdDecompressMemoryIndirectCountEXT\");\n    pAPI->vkCmdDecompressMemoryNV = (PFN_vkCmdDecompressMemoryNV)vkb_dlsym(g_vkbVulkanSO, \"vkCmdDecompressMemoryNV\");\n    pAPI->vkCmdDecompressMemoryIndirectCountNV = (PFN_vkCmdDecompressMemoryIndirectCountNV)vkb_dlsym(g_vkbVulkanSO, \"vkCmdDecompressMemoryIndirectCountNV\");\n    pAPI->vkCreateExternalComputeQueueNV = (PFN_vkCreateExternalComputeQueueNV)vkb_dlsym(g_vkbVulkanSO, \"vkCreateExternalComputeQueueNV\");\n    pAPI->vkDestroyExternalComputeQueueNV = (PFN_vkDestroyExternalComputeQueueNV)vkb_dlsym(g_vkbVulkanSO, \"vkDestroyExternalComputeQueueNV\");\n    pAPI->vkGetExternalComputeQueueDataNV = (PFN_vkGetExternalComputeQueueDataNV)vkb_dlsym(g_vkbVulkanSO, \"vkGetExternalComputeQueueDataNV\");\n    pAPI->vkGetClusterAccelerationStructureBuildSizesNV = (PFN_vkGetClusterAccelerationStructureBuildSizesNV)vkb_dlsym(g_vkbVulkanSO, \"vkGetClusterAccelerationStructureBuildSizesNV\");\n    pAPI->vkCmdBuildClusterAccelerationStructureIndirectNV = (PFN_vkCmdBuildClusterAccelerationStructureIndirectNV)vkb_dlsym(g_vkbVulkanSO, \"vkCmdBuildClusterAccelerationStructureIndirectNV\");\n    pAPI->vkGetPartitionedAccelerationStructuresBuildSizesNV = (PFN_vkGetPartitionedAccelerationStructuresBuildSizesNV)vkb_dlsym(g_vkbVulkanSO, \"vkGetPartitionedAccelerationStructuresBuildSizesNV\");\n    pAPI->vkCmdBuildPartitionedAccelerationStructuresNV = (PFN_vkCmdBuildPartitionedAccelerationStructuresNV)vkb_dlsym(g_vkbVulkanSO, \"vkCmdBuildPartitionedAccelerationStructuresNV\");\n    pAPI->vkGetGeneratedCommandsMemoryRequirementsEXT = (PFN_vkGetGeneratedCommandsMemoryRequirementsEXT)vkb_dlsym(g_vkbVulkanSO, \"vkGetGeneratedCommandsMemoryRequirementsEXT\");\n    pAPI->vkCmdPreprocessGeneratedCommandsEXT = (PFN_vkCmdPreprocessGeneratedCommandsEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdPreprocessGeneratedCommandsEXT\");\n    pAPI->vkCmdExecuteGeneratedCommandsEXT = (PFN_vkCmdExecuteGeneratedCommandsEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdExecuteGeneratedCommandsEXT\");\n    pAPI->vkCreateIndirectCommandsLayoutEXT = (PFN_vkCreateIndirectCommandsLayoutEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCreateIndirectCommandsLayoutEXT\");\n    pAPI->vkDestroyIndirectCommandsLayoutEXT = (PFN_vkDestroyIndirectCommandsLayoutEXT)vkb_dlsym(g_vkbVulkanSO, \"vkDestroyIndirectCommandsLayoutEXT\");\n    pAPI->vkCreateIndirectExecutionSetEXT = (PFN_vkCreateIndirectExecutionSetEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCreateIndirectExecutionSetEXT\");\n    pAPI->vkDestroyIndirectExecutionSetEXT = (PFN_vkDestroyIndirectExecutionSetEXT)vkb_dlsym(g_vkbVulkanSO, \"vkDestroyIndirectExecutionSetEXT\");\n    pAPI->vkUpdateIndirectExecutionSetPipelineEXT = (PFN_vkUpdateIndirectExecutionSetPipelineEXT)vkb_dlsym(g_vkbVulkanSO, \"vkUpdateIndirectExecutionSetPipelineEXT\");\n    pAPI->vkUpdateIndirectExecutionSetShaderEXT = (PFN_vkUpdateIndirectExecutionSetShaderEXT)vkb_dlsym(g_vkbVulkanSO, \"vkUpdateIndirectExecutionSetShaderEXT\");\n    pAPI->vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV = (PFN_vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV\");\n    pAPI->vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM = (PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM)vkb_dlsym(g_vkbVulkanSO, \"vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM\");\n    pAPI->vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM = (PFN_vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM)vkb_dlsym(g_vkbVulkanSO, \"vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM\");\n    pAPI->vkCreateShaderInstrumentationARM = (PFN_vkCreateShaderInstrumentationARM)vkb_dlsym(g_vkbVulkanSO, \"vkCreateShaderInstrumentationARM\");\n    pAPI->vkDestroyShaderInstrumentationARM = (PFN_vkDestroyShaderInstrumentationARM)vkb_dlsym(g_vkbVulkanSO, \"vkDestroyShaderInstrumentationARM\");\n    pAPI->vkCmdBeginShaderInstrumentationARM = (PFN_vkCmdBeginShaderInstrumentationARM)vkb_dlsym(g_vkbVulkanSO, \"vkCmdBeginShaderInstrumentationARM\");\n    pAPI->vkCmdEndShaderInstrumentationARM = (PFN_vkCmdEndShaderInstrumentationARM)vkb_dlsym(g_vkbVulkanSO, \"vkCmdEndShaderInstrumentationARM\");\n    pAPI->vkGetShaderInstrumentationValuesARM = (PFN_vkGetShaderInstrumentationValuesARM)vkb_dlsym(g_vkbVulkanSO, \"vkGetShaderInstrumentationValuesARM\");\n    pAPI->vkClearShaderInstrumentationMetricsARM = (PFN_vkClearShaderInstrumentationMetricsARM)vkb_dlsym(g_vkbVulkanSO, \"vkClearShaderInstrumentationMetricsARM\");\n    pAPI->vkCmdEndRendering2EXT = (PFN_vkCmdEndRendering2EXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdEndRendering2EXT\");\n    pAPI->vkCmdBeginCustomResolveEXT = (PFN_vkCmdBeginCustomResolveEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCmdBeginCustomResolveEXT\");\n    pAPI->vkCmdEndRendering2KHR = (PFN_vkCmdEndRendering2KHR)vkb_dlsym(g_vkbVulkanSO, \"vkCmdEndRendering2KHR\");\n    pAPI->vkCmdSetComputeOccupancyPriorityNV = (PFN_vkCmdSetComputeOccupancyPriorityNV)vkb_dlsym(g_vkbVulkanSO, \"vkCmdSetComputeOccupancyPriorityNV\");\n#ifdef VK_USE_PLATFORM_XLIB_KHR\n    pAPI->vkCreateXlibSurfaceKHR = (PFN_vkCreateXlibSurfaceKHR)vkb_dlsym(g_vkbVulkanSO, \"vkCreateXlibSurfaceKHR\");\n    pAPI->vkGetPhysicalDeviceXlibPresentationSupportKHR = (PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceXlibPresentationSupportKHR\");\n#endif /*VK_USE_PLATFORM_XLIB_KHR*/\n#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT\n    pAPI->vkAcquireXlibDisplayEXT = (PFN_vkAcquireXlibDisplayEXT)vkb_dlsym(g_vkbVulkanSO, \"vkAcquireXlibDisplayEXT\");\n    pAPI->vkGetRandROutputDisplayEXT = (PFN_vkGetRandROutputDisplayEXT)vkb_dlsym(g_vkbVulkanSO, \"vkGetRandROutputDisplayEXT\");\n#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/\n#ifdef VK_USE_PLATFORM_XCB_KHR\n    pAPI->vkCreateXcbSurfaceKHR = (PFN_vkCreateXcbSurfaceKHR)vkb_dlsym(g_vkbVulkanSO, \"vkCreateXcbSurfaceKHR\");\n    pAPI->vkGetPhysicalDeviceXcbPresentationSupportKHR = (PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceXcbPresentationSupportKHR\");\n#endif /*VK_USE_PLATFORM_XCB_KHR*/\n#ifdef VK_USE_PLATFORM_WAYLAND_KHR\n    pAPI->vkCreateWaylandSurfaceKHR = (PFN_vkCreateWaylandSurfaceKHR)vkb_dlsym(g_vkbVulkanSO, \"vkCreateWaylandSurfaceKHR\");\n    pAPI->vkGetPhysicalDeviceWaylandPresentationSupportKHR = (PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceWaylandPresentationSupportKHR\");\n#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/\n#ifdef VK_USE_PLATFORM_UBM_SEC\n    pAPI->vkCreateUbmSurfaceSEC = (PFN_vkCreateUbmSurfaceSEC)vkb_dlsym(g_vkbVulkanSO, \"vkCreateUbmSurfaceSEC\");\n    pAPI->vkGetPhysicalDeviceUbmPresentationSupportSEC = (PFN_vkGetPhysicalDeviceUbmPresentationSupportSEC)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceUbmPresentationSupportSEC\");\n#endif /*VK_USE_PLATFORM_UBM_SEC*/\n#ifdef VK_USE_PLATFORM_DIRECTFB_EXT\n    pAPI->vkCreateDirectFBSurfaceEXT = (PFN_vkCreateDirectFBSurfaceEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCreateDirectFBSurfaceEXT\");\n    pAPI->vkGetPhysicalDeviceDirectFBPresentationSupportEXT = (PFN_vkGetPhysicalDeviceDirectFBPresentationSupportEXT)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceDirectFBPresentationSupportEXT\");\n#endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/\n#ifdef VK_USE_PLATFORM_ANDROID_KHR\n    pAPI->vkCreateAndroidSurfaceKHR = (PFN_vkCreateAndroidSurfaceKHR)vkb_dlsym(g_vkbVulkanSO, \"vkCreateAndroidSurfaceKHR\");\n    pAPI->vkGetAndroidHardwareBufferPropertiesANDROID = (PFN_vkGetAndroidHardwareBufferPropertiesANDROID)vkb_dlsym(g_vkbVulkanSO, \"vkGetAndroidHardwareBufferPropertiesANDROID\");\n    pAPI->vkGetMemoryAndroidHardwareBufferANDROID = (PFN_vkGetMemoryAndroidHardwareBufferANDROID)vkb_dlsym(g_vkbVulkanSO, \"vkGetMemoryAndroidHardwareBufferANDROID\");\n#endif /*VK_USE_PLATFORM_ANDROID_KHR*/\n#ifdef VK_USE_PLATFORM_WIN32_KHR\n    pAPI->vkCreateWin32SurfaceKHR = (PFN_vkCreateWin32SurfaceKHR)vkb_dlsym(g_vkbVulkanSO, \"vkCreateWin32SurfaceKHR\");\n    pAPI->vkGetPhysicalDeviceWin32PresentationSupportKHR = (PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceWin32PresentationSupportKHR\");\n    pAPI->vkGetMemoryWin32HandleKHR = (PFN_vkGetMemoryWin32HandleKHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetMemoryWin32HandleKHR\");\n    pAPI->vkGetMemoryWin32HandlePropertiesKHR = (PFN_vkGetMemoryWin32HandlePropertiesKHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetMemoryWin32HandlePropertiesKHR\");\n    pAPI->vkGetMemoryWin32HandleNV = (PFN_vkGetMemoryWin32HandleNV)vkb_dlsym(g_vkbVulkanSO, \"vkGetMemoryWin32HandleNV\");\n    pAPI->vkImportSemaphoreWin32HandleKHR = (PFN_vkImportSemaphoreWin32HandleKHR)vkb_dlsym(g_vkbVulkanSO, \"vkImportSemaphoreWin32HandleKHR\");\n    pAPI->vkGetSemaphoreWin32HandleKHR = (PFN_vkGetSemaphoreWin32HandleKHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetSemaphoreWin32HandleKHR\");\n    pAPI->vkImportFenceWin32HandleKHR = (PFN_vkImportFenceWin32HandleKHR)vkb_dlsym(g_vkbVulkanSO, \"vkImportFenceWin32HandleKHR\");\n    pAPI->vkGetFenceWin32HandleKHR = (PFN_vkGetFenceWin32HandleKHR)vkb_dlsym(g_vkbVulkanSO, \"vkGetFenceWin32HandleKHR\");\n    pAPI->vkGetPhysicalDeviceSurfacePresentModes2EXT = (PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceSurfacePresentModes2EXT\");\n    pAPI->vkAcquireFullScreenExclusiveModeEXT = (PFN_vkAcquireFullScreenExclusiveModeEXT)vkb_dlsym(g_vkbVulkanSO, \"vkAcquireFullScreenExclusiveModeEXT\");\n    pAPI->vkReleaseFullScreenExclusiveModeEXT = (PFN_vkReleaseFullScreenExclusiveModeEXT)vkb_dlsym(g_vkbVulkanSO, \"vkReleaseFullScreenExclusiveModeEXT\");\n    pAPI->vkGetDeviceGroupSurfacePresentModes2EXT = (PFN_vkGetDeviceGroupSurfacePresentModes2EXT)vkb_dlsym(g_vkbVulkanSO, \"vkGetDeviceGroupSurfacePresentModes2EXT\");\n    pAPI->vkAcquireWinrtDisplayNV = (PFN_vkAcquireWinrtDisplayNV)vkb_dlsym(g_vkbVulkanSO, \"vkAcquireWinrtDisplayNV\");\n    pAPI->vkGetWinrtDisplayNV = (PFN_vkGetWinrtDisplayNV)vkb_dlsym(g_vkbVulkanSO, \"vkGetWinrtDisplayNV\");\n#endif /*VK_USE_PLATFORM_WIN32_KHR*/\n#ifdef VK_USE_PLATFORM_VI_NN\n    pAPI->vkCreateViSurfaceNN = (PFN_vkCreateViSurfaceNN)vkb_dlsym(g_vkbVulkanSO, \"vkCreateViSurfaceNN\");\n#endif /*VK_USE_PLATFORM_VI_NN*/\n#ifdef VK_USE_PLATFORM_IOS_MVK\n    pAPI->vkCreateIOSSurfaceMVK = (PFN_vkCreateIOSSurfaceMVK)vkb_dlsym(g_vkbVulkanSO, \"vkCreateIOSSurfaceMVK\");\n#endif /*VK_USE_PLATFORM_IOS_MVK*/\n#ifdef VK_USE_PLATFORM_MACOS_MVK\n    pAPI->vkCreateMacOSSurfaceMVK = (PFN_vkCreateMacOSSurfaceMVK)vkb_dlsym(g_vkbVulkanSO, \"vkCreateMacOSSurfaceMVK\");\n#endif /*VK_USE_PLATFORM_MACOS_MVK*/\n#ifdef VK_USE_PLATFORM_METAL_EXT\n    pAPI->vkCreateMetalSurfaceEXT = (PFN_vkCreateMetalSurfaceEXT)vkb_dlsym(g_vkbVulkanSO, \"vkCreateMetalSurfaceEXT\");\n    pAPI->vkExportMetalObjectsEXT = (PFN_vkExportMetalObjectsEXT)vkb_dlsym(g_vkbVulkanSO, \"vkExportMetalObjectsEXT\");\n    pAPI->vkGetMemoryMetalHandleEXT = (PFN_vkGetMemoryMetalHandleEXT)vkb_dlsym(g_vkbVulkanSO, \"vkGetMemoryMetalHandleEXT\");\n    pAPI->vkGetMemoryMetalHandlePropertiesEXT = (PFN_vkGetMemoryMetalHandlePropertiesEXT)vkb_dlsym(g_vkbVulkanSO, \"vkGetMemoryMetalHandlePropertiesEXT\");\n#endif /*VK_USE_PLATFORM_METAL_EXT*/\n#ifdef VK_USE_PLATFORM_FUCHSIA\n    pAPI->vkCreateImagePipeSurfaceFUCHSIA = (PFN_vkCreateImagePipeSurfaceFUCHSIA)vkb_dlsym(g_vkbVulkanSO, \"vkCreateImagePipeSurfaceFUCHSIA\");\n    pAPI->vkGetMemoryZirconHandleFUCHSIA = (PFN_vkGetMemoryZirconHandleFUCHSIA)vkb_dlsym(g_vkbVulkanSO, \"vkGetMemoryZirconHandleFUCHSIA\");\n    pAPI->vkGetMemoryZirconHandlePropertiesFUCHSIA = (PFN_vkGetMemoryZirconHandlePropertiesFUCHSIA)vkb_dlsym(g_vkbVulkanSO, \"vkGetMemoryZirconHandlePropertiesFUCHSIA\");\n    pAPI->vkImportSemaphoreZirconHandleFUCHSIA = (PFN_vkImportSemaphoreZirconHandleFUCHSIA)vkb_dlsym(g_vkbVulkanSO, \"vkImportSemaphoreZirconHandleFUCHSIA\");\n    pAPI->vkGetSemaphoreZirconHandleFUCHSIA = (PFN_vkGetSemaphoreZirconHandleFUCHSIA)vkb_dlsym(g_vkbVulkanSO, \"vkGetSemaphoreZirconHandleFUCHSIA\");\n    pAPI->vkCreateBufferCollectionFUCHSIA = (PFN_vkCreateBufferCollectionFUCHSIA)vkb_dlsym(g_vkbVulkanSO, \"vkCreateBufferCollectionFUCHSIA\");\n    pAPI->vkSetBufferCollectionImageConstraintsFUCHSIA = (PFN_vkSetBufferCollectionImageConstraintsFUCHSIA)vkb_dlsym(g_vkbVulkanSO, \"vkSetBufferCollectionImageConstraintsFUCHSIA\");\n    pAPI->vkSetBufferCollectionBufferConstraintsFUCHSIA = (PFN_vkSetBufferCollectionBufferConstraintsFUCHSIA)vkb_dlsym(g_vkbVulkanSO, \"vkSetBufferCollectionBufferConstraintsFUCHSIA\");\n    pAPI->vkDestroyBufferCollectionFUCHSIA = (PFN_vkDestroyBufferCollectionFUCHSIA)vkb_dlsym(g_vkbVulkanSO, \"vkDestroyBufferCollectionFUCHSIA\");\n    pAPI->vkGetBufferCollectionPropertiesFUCHSIA = (PFN_vkGetBufferCollectionPropertiesFUCHSIA)vkb_dlsym(g_vkbVulkanSO, \"vkGetBufferCollectionPropertiesFUCHSIA\");\n#endif /*VK_USE_PLATFORM_FUCHSIA*/\n#ifdef VK_USE_PLATFORM_GGP\n    pAPI->vkCreateStreamDescriptorSurfaceGGP = (PFN_vkCreateStreamDescriptorSurfaceGGP)vkb_dlsym(g_vkbVulkanSO, \"vkCreateStreamDescriptorSurfaceGGP\");\n#endif /*VK_USE_PLATFORM_GGP*/\n#ifdef VK_USE_PLATFORM_SCI\n    pAPI->vkGetMemorySciBufNV = (PFN_vkGetMemorySciBufNV)vkb_dlsym(g_vkbVulkanSO, \"vkGetMemorySciBufNV\");\n    pAPI->vkGetPhysicalDeviceExternalMemorySciBufPropertiesNV = (PFN_vkGetPhysicalDeviceExternalMemorySciBufPropertiesNV)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceExternalMemorySciBufPropertiesNV\");\n    pAPI->vkGetPhysicalDeviceSciBufAttributesNV = (PFN_vkGetPhysicalDeviceSciBufAttributesNV)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceSciBufAttributesNV\");\n    pAPI->vkCreateSemaphoreSciSyncPoolNV = (PFN_vkCreateSemaphoreSciSyncPoolNV)vkb_dlsym(g_vkbVulkanSO, \"vkCreateSemaphoreSciSyncPoolNV\");\n    pAPI->vkDestroySemaphoreSciSyncPoolNV = (PFN_vkDestroySemaphoreSciSyncPoolNV)vkb_dlsym(g_vkbVulkanSO, \"vkDestroySemaphoreSciSyncPoolNV\");\n    pAPI->vkGetFenceSciSyncFenceNV = (PFN_vkGetFenceSciSyncFenceNV)vkb_dlsym(g_vkbVulkanSO, \"vkGetFenceSciSyncFenceNV\");\n    pAPI->vkGetFenceSciSyncObjNV = (PFN_vkGetFenceSciSyncObjNV)vkb_dlsym(g_vkbVulkanSO, \"vkGetFenceSciSyncObjNV\");\n    pAPI->vkImportFenceSciSyncFenceNV = (PFN_vkImportFenceSciSyncFenceNV)vkb_dlsym(g_vkbVulkanSO, \"vkImportFenceSciSyncFenceNV\");\n    pAPI->vkImportFenceSciSyncObjNV = (PFN_vkImportFenceSciSyncObjNV)vkb_dlsym(g_vkbVulkanSO, \"vkImportFenceSciSyncObjNV\");\n    pAPI->vkGetPhysicalDeviceSciSyncAttributesNV = (PFN_vkGetPhysicalDeviceSciSyncAttributesNV)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceSciSyncAttributesNV\");\n    pAPI->vkGetSemaphoreSciSyncObjNV = (PFN_vkGetSemaphoreSciSyncObjNV)vkb_dlsym(g_vkbVulkanSO, \"vkGetSemaphoreSciSyncObjNV\");\n    pAPI->vkImportSemaphoreSciSyncObjNV = (PFN_vkImportSemaphoreSciSyncObjNV)vkb_dlsym(g_vkbVulkanSO, \"vkImportSemaphoreSciSyncObjNV\");\n#endif /*VK_USE_PLATFORM_SCI*/\n#ifdef VK_ENABLE_BETA_EXTENSIONS\n    pAPI->vkCreateExecutionGraphPipelinesAMDX = (PFN_vkCreateExecutionGraphPipelinesAMDX)vkb_dlsym(g_vkbVulkanSO, \"vkCreateExecutionGraphPipelinesAMDX\");\n    pAPI->vkGetExecutionGraphPipelineScratchSizeAMDX = (PFN_vkGetExecutionGraphPipelineScratchSizeAMDX)vkb_dlsym(g_vkbVulkanSO, \"vkGetExecutionGraphPipelineScratchSizeAMDX\");\n    pAPI->vkGetExecutionGraphPipelineNodeIndexAMDX = (PFN_vkGetExecutionGraphPipelineNodeIndexAMDX)vkb_dlsym(g_vkbVulkanSO, \"vkGetExecutionGraphPipelineNodeIndexAMDX\");\n    pAPI->vkCmdInitializeGraphScratchMemoryAMDX = (PFN_vkCmdInitializeGraphScratchMemoryAMDX)vkb_dlsym(g_vkbVulkanSO, \"vkCmdInitializeGraphScratchMemoryAMDX\");\n    pAPI->vkCmdDispatchGraphAMDX = (PFN_vkCmdDispatchGraphAMDX)vkb_dlsym(g_vkbVulkanSO, \"vkCmdDispatchGraphAMDX\");\n    pAPI->vkCmdDispatchGraphIndirectAMDX = (PFN_vkCmdDispatchGraphIndirectAMDX)vkb_dlsym(g_vkbVulkanSO, \"vkCmdDispatchGraphIndirectAMDX\");\n    pAPI->vkCmdDispatchGraphIndirectCountAMDX = (PFN_vkCmdDispatchGraphIndirectCountAMDX)vkb_dlsym(g_vkbVulkanSO, \"vkCmdDispatchGraphIndirectCountAMDX\");\n    pAPI->vkCreateCudaModuleNV = (PFN_vkCreateCudaModuleNV)vkb_dlsym(g_vkbVulkanSO, \"vkCreateCudaModuleNV\");\n    pAPI->vkGetCudaModuleCacheNV = (PFN_vkGetCudaModuleCacheNV)vkb_dlsym(g_vkbVulkanSO, \"vkGetCudaModuleCacheNV\");\n    pAPI->vkCreateCudaFunctionNV = (PFN_vkCreateCudaFunctionNV)vkb_dlsym(g_vkbVulkanSO, \"vkCreateCudaFunctionNV\");\n    pAPI->vkDestroyCudaModuleNV = (PFN_vkDestroyCudaModuleNV)vkb_dlsym(g_vkbVulkanSO, \"vkDestroyCudaModuleNV\");\n    pAPI->vkDestroyCudaFunctionNV = (PFN_vkDestroyCudaFunctionNV)vkb_dlsym(g_vkbVulkanSO, \"vkDestroyCudaFunctionNV\");\n    pAPI->vkCmdCudaLaunchKernelNV = (PFN_vkCmdCudaLaunchKernelNV)vkb_dlsym(g_vkbVulkanSO, \"vkCmdCudaLaunchKernelNV\");\n#endif /*VK_ENABLE_BETA_EXTENSIONS*/\n#ifdef VK_USE_PLATFORM_SCREEN_QNX\n    pAPI->vkCreateScreenSurfaceQNX = (PFN_vkCreateScreenSurfaceQNX)vkb_dlsym(g_vkbVulkanSO, \"vkCreateScreenSurfaceQNX\");\n    pAPI->vkGetPhysicalDeviceScreenPresentationSupportQNX = (PFN_vkGetPhysicalDeviceScreenPresentationSupportQNX)vkb_dlsym(g_vkbVulkanSO, \"vkGetPhysicalDeviceScreenPresentationSupportQNX\");\n    pAPI->vkGetScreenBufferPropertiesQNX = (PFN_vkGetScreenBufferPropertiesQNX)vkb_dlsym(g_vkbVulkanSO, \"vkGetScreenBufferPropertiesQNX\");\n#endif /*VK_USE_PLATFORM_SCREEN_QNX*/\n#ifdef VK_USE_PLATFORM_OHOS\n    pAPI->vkGetNativeBufferPropertiesOHOS = (PFN_vkGetNativeBufferPropertiesOHOS)vkb_dlsym(g_vkbVulkanSO, \"vkGetNativeBufferPropertiesOHOS\");\n    pAPI->vkGetMemoryNativeBufferOHOS = (PFN_vkGetMemoryNativeBufferOHOS)vkb_dlsym(g_vkbVulkanSO, \"vkGetMemoryNativeBufferOHOS\");\n    pAPI->vkCreateSurfaceOHOS = (PFN_vkCreateSurfaceOHOS)vkb_dlsym(g_vkbVulkanSO, \"vkCreateSurfaceOHOS\");\n#endif /*VK_USE_PLATFORM_OHOS*/\n\n    /*\n    We can only safely guarantee that vkGetInstanceProcAddr was successfully returned from dlsym(). The Vulkan specification lists some APIs\n    that should always work with vkGetInstanceProcAddr(), so I'm going ahead and doing that here just for robustness.\n    */\n    if (pAPI->vkGetInstanceProcAddr == NULL) {\n        return VK_ERROR_INITIALIZATION_FAILED;\n    }\n\n    pAPI->vkCreateInstance = (PFN_vkCreateInstance)pAPI->vkGetInstanceProcAddr(NULL, \"vkCreateInstance\");\n    pAPI->vkEnumerateInstanceExtensionProperties = (PFN_vkEnumerateInstanceExtensionProperties)pAPI->vkGetInstanceProcAddr(NULL, \"vkEnumerateInstanceExtensionProperties\");\n    pAPI->vkEnumerateInstanceLayerProperties = (PFN_vkEnumerateInstanceLayerProperties)pAPI->vkGetInstanceProcAddr(NULL, \"vkEnumerateInstanceLayerProperties\");\n    pAPI->vkEnumerateInstanceVersion = (PFN_vkEnumerateInstanceVersion)pAPI->vkGetInstanceProcAddr(NULL, \"vkEnumerateInstanceVersion\");\n\n    return VK_SUCCESS;\n}\n\n#ifndef VKBIND_NO_GLOBAL_API\nstatic void vkbInitFromGlobalAPI(VkbAPI* pAPI)\n{\n    pAPI->vkCreateInstance = vkCreateInstance;\n    pAPI->vkDestroyInstance = vkDestroyInstance;\n    pAPI->vkEnumeratePhysicalDevices = vkEnumeratePhysicalDevices;\n    pAPI->vkGetPhysicalDeviceFeatures = vkGetPhysicalDeviceFeatures;\n    pAPI->vkGetPhysicalDeviceFormatProperties = vkGetPhysicalDeviceFormatProperties;\n    pAPI->vkGetPhysicalDeviceImageFormatProperties = vkGetPhysicalDeviceImageFormatProperties;\n    pAPI->vkGetPhysicalDeviceProperties = vkGetPhysicalDeviceProperties;\n    pAPI->vkGetPhysicalDeviceQueueFamilyProperties = vkGetPhysicalDeviceQueueFamilyProperties;\n    pAPI->vkGetPhysicalDeviceMemoryProperties = vkGetPhysicalDeviceMemoryProperties;\n    pAPI->vkGetInstanceProcAddr = vkGetInstanceProcAddr;\n    pAPI->vkGetDeviceProcAddr = vkGetDeviceProcAddr;\n    pAPI->vkCreateDevice = vkCreateDevice;\n    pAPI->vkDestroyDevice = vkDestroyDevice;\n    pAPI->vkEnumerateInstanceExtensionProperties = vkEnumerateInstanceExtensionProperties;\n    pAPI->vkEnumerateDeviceExtensionProperties = vkEnumerateDeviceExtensionProperties;\n    pAPI->vkEnumerateInstanceLayerProperties = vkEnumerateInstanceLayerProperties;\n    pAPI->vkEnumerateDeviceLayerProperties = vkEnumerateDeviceLayerProperties;\n    pAPI->vkGetDeviceQueue = vkGetDeviceQueue;\n    pAPI->vkQueueSubmit = vkQueueSubmit;\n    pAPI->vkQueueWaitIdle = vkQueueWaitIdle;\n    pAPI->vkDeviceWaitIdle = vkDeviceWaitIdle;\n    pAPI->vkAllocateMemory = vkAllocateMemory;\n    pAPI->vkFreeMemory = vkFreeMemory;\n    pAPI->vkMapMemory = vkMapMemory;\n    pAPI->vkUnmapMemory = vkUnmapMemory;\n    pAPI->vkFlushMappedMemoryRanges = vkFlushMappedMemoryRanges;\n    pAPI->vkInvalidateMappedMemoryRanges = vkInvalidateMappedMemoryRanges;\n    pAPI->vkGetDeviceMemoryCommitment = vkGetDeviceMemoryCommitment;\n    pAPI->vkBindBufferMemory = vkBindBufferMemory;\n    pAPI->vkBindImageMemory = vkBindImageMemory;\n    pAPI->vkGetBufferMemoryRequirements = vkGetBufferMemoryRequirements;\n    pAPI->vkGetImageMemoryRequirements = vkGetImageMemoryRequirements;\n    pAPI->vkGetImageSparseMemoryRequirements = vkGetImageSparseMemoryRequirements;\n    pAPI->vkGetPhysicalDeviceSparseImageFormatProperties = vkGetPhysicalDeviceSparseImageFormatProperties;\n    pAPI->vkQueueBindSparse = vkQueueBindSparse;\n    pAPI->vkCreateFence = vkCreateFence;\n    pAPI->vkDestroyFence = vkDestroyFence;\n    pAPI->vkResetFences = vkResetFences;\n    pAPI->vkGetFenceStatus = vkGetFenceStatus;\n    pAPI->vkWaitForFences = vkWaitForFences;\n    pAPI->vkCreateSemaphore = vkCreateSemaphore;\n    pAPI->vkDestroySemaphore = vkDestroySemaphore;\n    pAPI->vkCreateQueryPool = vkCreateQueryPool;\n    pAPI->vkDestroyQueryPool = vkDestroyQueryPool;\n    pAPI->vkGetQueryPoolResults = vkGetQueryPoolResults;\n    pAPI->vkCreateBuffer = vkCreateBuffer;\n    pAPI->vkDestroyBuffer = vkDestroyBuffer;\n    pAPI->vkCreateImage = vkCreateImage;\n    pAPI->vkDestroyImage = vkDestroyImage;\n    pAPI->vkGetImageSubresourceLayout = vkGetImageSubresourceLayout;\n    pAPI->vkCreateImageView = vkCreateImageView;\n    pAPI->vkDestroyImageView = vkDestroyImageView;\n    pAPI->vkCreateCommandPool = vkCreateCommandPool;\n    pAPI->vkDestroyCommandPool = vkDestroyCommandPool;\n    pAPI->vkResetCommandPool = vkResetCommandPool;\n    pAPI->vkAllocateCommandBuffers = vkAllocateCommandBuffers;\n    pAPI->vkFreeCommandBuffers = vkFreeCommandBuffers;\n    pAPI->vkBeginCommandBuffer = vkBeginCommandBuffer;\n    pAPI->vkEndCommandBuffer = vkEndCommandBuffer;\n    pAPI->vkResetCommandBuffer = vkResetCommandBuffer;\n    pAPI->vkCmdCopyBuffer = vkCmdCopyBuffer;\n    pAPI->vkCmdCopyImage = vkCmdCopyImage;\n    pAPI->vkCmdCopyBufferToImage = vkCmdCopyBufferToImage;\n    pAPI->vkCmdCopyImageToBuffer = vkCmdCopyImageToBuffer;\n    pAPI->vkCmdUpdateBuffer = vkCmdUpdateBuffer;\n    pAPI->vkCmdFillBuffer = vkCmdFillBuffer;\n    pAPI->vkCmdPipelineBarrier = vkCmdPipelineBarrier;\n    pAPI->vkCmdBeginQuery = vkCmdBeginQuery;\n    pAPI->vkCmdEndQuery = vkCmdEndQuery;\n    pAPI->vkCmdResetQueryPool = vkCmdResetQueryPool;\n    pAPI->vkCmdWriteTimestamp = vkCmdWriteTimestamp;\n    pAPI->vkCmdCopyQueryPoolResults = vkCmdCopyQueryPoolResults;\n    pAPI->vkCmdExecuteCommands = vkCmdExecuteCommands;\n    pAPI->vkCreateEvent = vkCreateEvent;\n    pAPI->vkDestroyEvent = vkDestroyEvent;\n    pAPI->vkGetEventStatus = vkGetEventStatus;\n    pAPI->vkSetEvent = vkSetEvent;\n    pAPI->vkResetEvent = vkResetEvent;\n    pAPI->vkCreateBufferView = vkCreateBufferView;\n    pAPI->vkDestroyBufferView = vkDestroyBufferView;\n    pAPI->vkCreateShaderModule = vkCreateShaderModule;\n    pAPI->vkDestroyShaderModule = vkDestroyShaderModule;\n    pAPI->vkCreatePipelineCache = vkCreatePipelineCache;\n    pAPI->vkDestroyPipelineCache = vkDestroyPipelineCache;\n    pAPI->vkGetPipelineCacheData = vkGetPipelineCacheData;\n    pAPI->vkMergePipelineCaches = vkMergePipelineCaches;\n    pAPI->vkCreateComputePipelines = vkCreateComputePipelines;\n    pAPI->vkDestroyPipeline = vkDestroyPipeline;\n    pAPI->vkCreatePipelineLayout = vkCreatePipelineLayout;\n    pAPI->vkDestroyPipelineLayout = vkDestroyPipelineLayout;\n    pAPI->vkCreateSampler = vkCreateSampler;\n    pAPI->vkDestroySampler = vkDestroySampler;\n    pAPI->vkCreateDescriptorSetLayout = vkCreateDescriptorSetLayout;\n    pAPI->vkDestroyDescriptorSetLayout = vkDestroyDescriptorSetLayout;\n    pAPI->vkCreateDescriptorPool = vkCreateDescriptorPool;\n    pAPI->vkDestroyDescriptorPool = vkDestroyDescriptorPool;\n    pAPI->vkResetDescriptorPool = vkResetDescriptorPool;\n    pAPI->vkAllocateDescriptorSets = vkAllocateDescriptorSets;\n    pAPI->vkFreeDescriptorSets = vkFreeDescriptorSets;\n    pAPI->vkUpdateDescriptorSets = vkUpdateDescriptorSets;\n    pAPI->vkCmdBindPipeline = vkCmdBindPipeline;\n    pAPI->vkCmdBindDescriptorSets = vkCmdBindDescriptorSets;\n    pAPI->vkCmdClearColorImage = vkCmdClearColorImage;\n    pAPI->vkCmdDispatch = vkCmdDispatch;\n    pAPI->vkCmdDispatchIndirect = vkCmdDispatchIndirect;\n    pAPI->vkCmdSetEvent = vkCmdSetEvent;\n    pAPI->vkCmdResetEvent = vkCmdResetEvent;\n    pAPI->vkCmdWaitEvents = vkCmdWaitEvents;\n    pAPI->vkCmdPushConstants = vkCmdPushConstants;\n    pAPI->vkCreateGraphicsPipelines = vkCreateGraphicsPipelines;\n    pAPI->vkCreateFramebuffer = vkCreateFramebuffer;\n    pAPI->vkDestroyFramebuffer = vkDestroyFramebuffer;\n    pAPI->vkCreateRenderPass = vkCreateRenderPass;\n    pAPI->vkDestroyRenderPass = vkDestroyRenderPass;\n    pAPI->vkGetRenderAreaGranularity = vkGetRenderAreaGranularity;\n    pAPI->vkCmdSetViewport = vkCmdSetViewport;\n    pAPI->vkCmdSetScissor = vkCmdSetScissor;\n    pAPI->vkCmdSetLineWidth = vkCmdSetLineWidth;\n    pAPI->vkCmdSetDepthBias = vkCmdSetDepthBias;\n    pAPI->vkCmdSetBlendConstants = vkCmdSetBlendConstants;\n    pAPI->vkCmdSetDepthBounds = vkCmdSetDepthBounds;\n    pAPI->vkCmdSetStencilCompareMask = vkCmdSetStencilCompareMask;\n    pAPI->vkCmdSetStencilWriteMask = vkCmdSetStencilWriteMask;\n    pAPI->vkCmdSetStencilReference = vkCmdSetStencilReference;\n    pAPI->vkCmdBindIndexBuffer = vkCmdBindIndexBuffer;\n    pAPI->vkCmdBindVertexBuffers = vkCmdBindVertexBuffers;\n    pAPI->vkCmdDraw = vkCmdDraw;\n    pAPI->vkCmdDrawIndexed = vkCmdDrawIndexed;\n    pAPI->vkCmdDrawIndirect = vkCmdDrawIndirect;\n    pAPI->vkCmdDrawIndexedIndirect = vkCmdDrawIndexedIndirect;\n    pAPI->vkCmdBlitImage = vkCmdBlitImage;\n    pAPI->vkCmdClearDepthStencilImage = vkCmdClearDepthStencilImage;\n    pAPI->vkCmdClearAttachments = vkCmdClearAttachments;\n    pAPI->vkCmdResolveImage = vkCmdResolveImage;\n    pAPI->vkCmdBeginRenderPass = vkCmdBeginRenderPass;\n    pAPI->vkCmdNextSubpass = vkCmdNextSubpass;\n    pAPI->vkCmdEndRenderPass = vkCmdEndRenderPass;\n    pAPI->vkEnumerateInstanceVersion = vkEnumerateInstanceVersion;\n    pAPI->vkBindBufferMemory2 = vkBindBufferMemory2;\n    pAPI->vkBindImageMemory2 = vkBindImageMemory2;\n    pAPI->vkGetDeviceGroupPeerMemoryFeatures = vkGetDeviceGroupPeerMemoryFeatures;\n    pAPI->vkCmdSetDeviceMask = vkCmdSetDeviceMask;\n    pAPI->vkEnumeratePhysicalDeviceGroups = vkEnumeratePhysicalDeviceGroups;\n    pAPI->vkGetImageMemoryRequirements2 = vkGetImageMemoryRequirements2;\n    pAPI->vkGetBufferMemoryRequirements2 = vkGetBufferMemoryRequirements2;\n    pAPI->vkGetImageSparseMemoryRequirements2 = vkGetImageSparseMemoryRequirements2;\n    pAPI->vkGetPhysicalDeviceFeatures2 = vkGetPhysicalDeviceFeatures2;\n    pAPI->vkGetPhysicalDeviceProperties2 = vkGetPhysicalDeviceProperties2;\n    pAPI->vkGetPhysicalDeviceFormatProperties2 = vkGetPhysicalDeviceFormatProperties2;\n    pAPI->vkGetPhysicalDeviceImageFormatProperties2 = vkGetPhysicalDeviceImageFormatProperties2;\n    pAPI->vkGetPhysicalDeviceQueueFamilyProperties2 = vkGetPhysicalDeviceQueueFamilyProperties2;\n    pAPI->vkGetPhysicalDeviceMemoryProperties2 = vkGetPhysicalDeviceMemoryProperties2;\n    pAPI->vkGetPhysicalDeviceSparseImageFormatProperties2 = vkGetPhysicalDeviceSparseImageFormatProperties2;\n    pAPI->vkTrimCommandPool = vkTrimCommandPool;\n    pAPI->vkGetDeviceQueue2 = vkGetDeviceQueue2;\n    pAPI->vkGetPhysicalDeviceExternalBufferProperties = vkGetPhysicalDeviceExternalBufferProperties;\n    pAPI->vkGetPhysicalDeviceExternalFenceProperties = vkGetPhysicalDeviceExternalFenceProperties;\n    pAPI->vkGetPhysicalDeviceExternalSemaphoreProperties = vkGetPhysicalDeviceExternalSemaphoreProperties;\n    pAPI->vkCmdDispatchBase = vkCmdDispatchBase;\n    pAPI->vkCreateDescriptorUpdateTemplate = vkCreateDescriptorUpdateTemplate;\n    pAPI->vkDestroyDescriptorUpdateTemplate = vkDestroyDescriptorUpdateTemplate;\n    pAPI->vkUpdateDescriptorSetWithTemplate = vkUpdateDescriptorSetWithTemplate;\n    pAPI->vkGetDescriptorSetLayoutSupport = vkGetDescriptorSetLayoutSupport;\n    pAPI->vkCreateSamplerYcbcrConversion = vkCreateSamplerYcbcrConversion;\n    pAPI->vkDestroySamplerYcbcrConversion = vkDestroySamplerYcbcrConversion;\n    pAPI->vkResetQueryPool = vkResetQueryPool;\n    pAPI->vkGetSemaphoreCounterValue = vkGetSemaphoreCounterValue;\n    pAPI->vkWaitSemaphores = vkWaitSemaphores;\n    pAPI->vkSignalSemaphore = vkSignalSemaphore;\n    pAPI->vkGetBufferDeviceAddress = vkGetBufferDeviceAddress;\n    pAPI->vkGetBufferOpaqueCaptureAddress = vkGetBufferOpaqueCaptureAddress;\n    pAPI->vkGetDeviceMemoryOpaqueCaptureAddress = vkGetDeviceMemoryOpaqueCaptureAddress;\n    pAPI->vkCmdDrawIndirectCount = vkCmdDrawIndirectCount;\n    pAPI->vkCmdDrawIndexedIndirectCount = vkCmdDrawIndexedIndirectCount;\n    pAPI->vkCreateRenderPass2 = vkCreateRenderPass2;\n    pAPI->vkCmdBeginRenderPass2 = vkCmdBeginRenderPass2;\n    pAPI->vkCmdNextSubpass2 = vkCmdNextSubpass2;\n    pAPI->vkCmdEndRenderPass2 = vkCmdEndRenderPass2;\n    pAPI->vkGetPhysicalDeviceToolProperties = vkGetPhysicalDeviceToolProperties;\n    pAPI->vkCreatePrivateDataSlot = vkCreatePrivateDataSlot;\n    pAPI->vkDestroyPrivateDataSlot = vkDestroyPrivateDataSlot;\n    pAPI->vkSetPrivateData = vkSetPrivateData;\n    pAPI->vkGetPrivateData = vkGetPrivateData;\n    pAPI->vkCmdPipelineBarrier2 = vkCmdPipelineBarrier2;\n    pAPI->vkCmdWriteTimestamp2 = vkCmdWriteTimestamp2;\n    pAPI->vkQueueSubmit2 = vkQueueSubmit2;\n    pAPI->vkCmdCopyBuffer2 = vkCmdCopyBuffer2;\n    pAPI->vkCmdCopyImage2 = vkCmdCopyImage2;\n    pAPI->vkCmdCopyBufferToImage2 = vkCmdCopyBufferToImage2;\n    pAPI->vkCmdCopyImageToBuffer2 = vkCmdCopyImageToBuffer2;\n    pAPI->vkGetDeviceBufferMemoryRequirements = vkGetDeviceBufferMemoryRequirements;\n    pAPI->vkGetDeviceImageMemoryRequirements = vkGetDeviceImageMemoryRequirements;\n    pAPI->vkGetDeviceImageSparseMemoryRequirements = vkGetDeviceImageSparseMemoryRequirements;\n    pAPI->vkCmdSetEvent2 = vkCmdSetEvent2;\n    pAPI->vkCmdResetEvent2 = vkCmdResetEvent2;\n    pAPI->vkCmdWaitEvents2 = vkCmdWaitEvents2;\n    pAPI->vkCmdBlitImage2 = vkCmdBlitImage2;\n    pAPI->vkCmdResolveImage2 = vkCmdResolveImage2;\n    pAPI->vkCmdBeginRendering = vkCmdBeginRendering;\n    pAPI->vkCmdEndRendering = vkCmdEndRendering;\n    pAPI->vkCmdSetCullMode = vkCmdSetCullMode;\n    pAPI->vkCmdSetFrontFace = vkCmdSetFrontFace;\n    pAPI->vkCmdSetPrimitiveTopology = vkCmdSetPrimitiveTopology;\n    pAPI->vkCmdSetViewportWithCount = vkCmdSetViewportWithCount;\n    pAPI->vkCmdSetScissorWithCount = vkCmdSetScissorWithCount;\n    pAPI->vkCmdBindVertexBuffers2 = vkCmdBindVertexBuffers2;\n    pAPI->vkCmdSetDepthTestEnable = vkCmdSetDepthTestEnable;\n    pAPI->vkCmdSetDepthWriteEnable = vkCmdSetDepthWriteEnable;\n    pAPI->vkCmdSetDepthCompareOp = vkCmdSetDepthCompareOp;\n    pAPI->vkCmdSetDepthBoundsTestEnable = vkCmdSetDepthBoundsTestEnable;\n    pAPI->vkCmdSetStencilTestEnable = vkCmdSetStencilTestEnable;\n    pAPI->vkCmdSetStencilOp = vkCmdSetStencilOp;\n    pAPI->vkCmdSetRasterizerDiscardEnable = vkCmdSetRasterizerDiscardEnable;\n    pAPI->vkCmdSetDepthBiasEnable = vkCmdSetDepthBiasEnable;\n    pAPI->vkCmdSetPrimitiveRestartEnable = vkCmdSetPrimitiveRestartEnable;\n    pAPI->vkMapMemory2 = vkMapMemory2;\n    pAPI->vkUnmapMemory2 = vkUnmapMemory2;\n    pAPI->vkGetDeviceImageSubresourceLayout = vkGetDeviceImageSubresourceLayout;\n    pAPI->vkGetImageSubresourceLayout2 = vkGetImageSubresourceLayout2;\n    pAPI->vkCopyMemoryToImage = vkCopyMemoryToImage;\n    pAPI->vkCopyImageToMemory = vkCopyImageToMemory;\n    pAPI->vkCopyImageToImage = vkCopyImageToImage;\n    pAPI->vkTransitionImageLayout = vkTransitionImageLayout;\n    pAPI->vkCmdPushDescriptorSet = vkCmdPushDescriptorSet;\n    pAPI->vkCmdPushDescriptorSetWithTemplate = vkCmdPushDescriptorSetWithTemplate;\n    pAPI->vkCmdBindDescriptorSets2 = vkCmdBindDescriptorSets2;\n    pAPI->vkCmdPushConstants2 = vkCmdPushConstants2;\n    pAPI->vkCmdPushDescriptorSet2 = vkCmdPushDescriptorSet2;\n    pAPI->vkCmdPushDescriptorSetWithTemplate2 = vkCmdPushDescriptorSetWithTemplate2;\n    pAPI->vkCmdSetLineStipple = vkCmdSetLineStipple;\n    pAPI->vkCmdBindIndexBuffer2 = vkCmdBindIndexBuffer2;\n    pAPI->vkGetRenderingAreaGranularity = vkGetRenderingAreaGranularity;\n    pAPI->vkCmdSetRenderingAttachmentLocations = vkCmdSetRenderingAttachmentLocations;\n    pAPI->vkCmdSetRenderingInputAttachmentIndices = vkCmdSetRenderingInputAttachmentIndices;\n    pAPI->vkGetCommandPoolMemoryConsumption = vkGetCommandPoolMemoryConsumption;\n    pAPI->vkGetFaultData = vkGetFaultData;\n    pAPI->vkDestroySurfaceKHR = vkDestroySurfaceKHR;\n    pAPI->vkGetPhysicalDeviceSurfaceSupportKHR = vkGetPhysicalDeviceSurfaceSupportKHR;\n    pAPI->vkGetPhysicalDeviceSurfaceCapabilitiesKHR = vkGetPhysicalDeviceSurfaceCapabilitiesKHR;\n    pAPI->vkGetPhysicalDeviceSurfaceFormatsKHR = vkGetPhysicalDeviceSurfaceFormatsKHR;\n    pAPI->vkGetPhysicalDeviceSurfacePresentModesKHR = vkGetPhysicalDeviceSurfacePresentModesKHR;\n    pAPI->vkCreateSwapchainKHR = vkCreateSwapchainKHR;\n    pAPI->vkDestroySwapchainKHR = vkDestroySwapchainKHR;\n    pAPI->vkGetSwapchainImagesKHR = vkGetSwapchainImagesKHR;\n    pAPI->vkAcquireNextImageKHR = vkAcquireNextImageKHR;\n    pAPI->vkQueuePresentKHR = vkQueuePresentKHR;\n    pAPI->vkGetDeviceGroupPresentCapabilitiesKHR = vkGetDeviceGroupPresentCapabilitiesKHR;\n    pAPI->vkGetDeviceGroupSurfacePresentModesKHR = vkGetDeviceGroupSurfacePresentModesKHR;\n    pAPI->vkGetPhysicalDevicePresentRectanglesKHR = vkGetPhysicalDevicePresentRectanglesKHR;\n    pAPI->vkAcquireNextImage2KHR = vkAcquireNextImage2KHR;\n    pAPI->vkGetPhysicalDeviceDisplayPropertiesKHR = vkGetPhysicalDeviceDisplayPropertiesKHR;\n    pAPI->vkGetPhysicalDeviceDisplayPlanePropertiesKHR = vkGetPhysicalDeviceDisplayPlanePropertiesKHR;\n    pAPI->vkGetDisplayPlaneSupportedDisplaysKHR = vkGetDisplayPlaneSupportedDisplaysKHR;\n    pAPI->vkGetDisplayModePropertiesKHR = vkGetDisplayModePropertiesKHR;\n    pAPI->vkCreateDisplayModeKHR = vkCreateDisplayModeKHR;\n    pAPI->vkGetDisplayPlaneCapabilitiesKHR = vkGetDisplayPlaneCapabilitiesKHR;\n    pAPI->vkCreateDisplayPlaneSurfaceKHR = vkCreateDisplayPlaneSurfaceKHR;\n    pAPI->vkCreateSharedSwapchainsKHR = vkCreateSharedSwapchainsKHR;\n    pAPI->vkGetPhysicalDeviceVideoCapabilitiesKHR = vkGetPhysicalDeviceVideoCapabilitiesKHR;\n    pAPI->vkGetPhysicalDeviceVideoFormatPropertiesKHR = vkGetPhysicalDeviceVideoFormatPropertiesKHR;\n    pAPI->vkCreateVideoSessionKHR = vkCreateVideoSessionKHR;\n    pAPI->vkDestroyVideoSessionKHR = vkDestroyVideoSessionKHR;\n    pAPI->vkGetVideoSessionMemoryRequirementsKHR = vkGetVideoSessionMemoryRequirementsKHR;\n    pAPI->vkBindVideoSessionMemoryKHR = vkBindVideoSessionMemoryKHR;\n    pAPI->vkCreateVideoSessionParametersKHR = vkCreateVideoSessionParametersKHR;\n    pAPI->vkUpdateVideoSessionParametersKHR = vkUpdateVideoSessionParametersKHR;\n    pAPI->vkDestroyVideoSessionParametersKHR = vkDestroyVideoSessionParametersKHR;\n    pAPI->vkCmdBeginVideoCodingKHR = vkCmdBeginVideoCodingKHR;\n    pAPI->vkCmdEndVideoCodingKHR = vkCmdEndVideoCodingKHR;\n    pAPI->vkCmdControlVideoCodingKHR = vkCmdControlVideoCodingKHR;\n    pAPI->vkCmdDecodeVideoKHR = vkCmdDecodeVideoKHR;\n    pAPI->vkCmdBindTransformFeedbackBuffersEXT = vkCmdBindTransformFeedbackBuffersEXT;\n    pAPI->vkCmdBeginTransformFeedbackEXT = vkCmdBeginTransformFeedbackEXT;\n    pAPI->vkCmdEndTransformFeedbackEXT = vkCmdEndTransformFeedbackEXT;\n    pAPI->vkCmdBeginQueryIndexedEXT = vkCmdBeginQueryIndexedEXT;\n    pAPI->vkCmdEndQueryIndexedEXT = vkCmdEndQueryIndexedEXT;\n    pAPI->vkCmdDrawIndirectByteCountEXT = vkCmdDrawIndirectByteCountEXT;\n    pAPI->vkCreateCuModuleNVX = vkCreateCuModuleNVX;\n    pAPI->vkCreateCuFunctionNVX = vkCreateCuFunctionNVX;\n    pAPI->vkDestroyCuModuleNVX = vkDestroyCuModuleNVX;\n    pAPI->vkDestroyCuFunctionNVX = vkDestroyCuFunctionNVX;\n    pAPI->vkCmdCuLaunchKernelNVX = vkCmdCuLaunchKernelNVX;\n    pAPI->vkGetImageViewHandleNVX = vkGetImageViewHandleNVX;\n    pAPI->vkGetImageViewHandle64NVX = vkGetImageViewHandle64NVX;\n    pAPI->vkGetImageViewAddressNVX = vkGetImageViewAddressNVX;\n    pAPI->vkGetDeviceCombinedImageSamplerIndexNVX = vkGetDeviceCombinedImageSamplerIndexNVX;\n    pAPI->vkGetShaderInfoAMD = vkGetShaderInfoAMD;\n    pAPI->vkCmdBeginRenderingKHR = vkCmdBeginRenderingKHR;\n    pAPI->vkCmdEndRenderingKHR = vkCmdEndRenderingKHR;\n    pAPI->vkGetPhysicalDeviceFeatures2KHR = vkGetPhysicalDeviceFeatures2KHR;\n    pAPI->vkGetPhysicalDeviceProperties2KHR = vkGetPhysicalDeviceProperties2KHR;\n    pAPI->vkGetPhysicalDeviceFormatProperties2KHR = vkGetPhysicalDeviceFormatProperties2KHR;\n    pAPI->vkGetPhysicalDeviceImageFormatProperties2KHR = vkGetPhysicalDeviceImageFormatProperties2KHR;\n    pAPI->vkGetPhysicalDeviceQueueFamilyProperties2KHR = vkGetPhysicalDeviceQueueFamilyProperties2KHR;\n    pAPI->vkGetPhysicalDeviceMemoryProperties2KHR = vkGetPhysicalDeviceMemoryProperties2KHR;\n    pAPI->vkGetPhysicalDeviceSparseImageFormatProperties2KHR = vkGetPhysicalDeviceSparseImageFormatProperties2KHR;\n    pAPI->vkGetDeviceGroupPeerMemoryFeaturesKHR = vkGetDeviceGroupPeerMemoryFeaturesKHR;\n    pAPI->vkCmdSetDeviceMaskKHR = vkCmdSetDeviceMaskKHR;\n    pAPI->vkCmdDispatchBaseKHR = vkCmdDispatchBaseKHR;\n    pAPI->vkTrimCommandPoolKHR = vkTrimCommandPoolKHR;\n    pAPI->vkEnumeratePhysicalDeviceGroupsKHR = vkEnumeratePhysicalDeviceGroupsKHR;\n    pAPI->vkGetPhysicalDeviceExternalBufferPropertiesKHR = vkGetPhysicalDeviceExternalBufferPropertiesKHR;\n    pAPI->vkGetPhysicalDeviceExternalImageFormatPropertiesNV = vkGetPhysicalDeviceExternalImageFormatPropertiesNV;\n    pAPI->vkGetMemoryFdKHR = vkGetMemoryFdKHR;\n    pAPI->vkGetMemoryFdPropertiesKHR = vkGetMemoryFdPropertiesKHR;\n    pAPI->vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = vkGetPhysicalDeviceExternalSemaphorePropertiesKHR;\n    pAPI->vkImportSemaphoreFdKHR = vkImportSemaphoreFdKHR;\n    pAPI->vkGetSemaphoreFdKHR = vkGetSemaphoreFdKHR;\n    pAPI->vkCmdPushDescriptorSetKHR = vkCmdPushDescriptorSetKHR;\n    pAPI->vkCmdPushDescriptorSetWithTemplateKHR = vkCmdPushDescriptorSetWithTemplateKHR;\n    pAPI->vkCmdBeginConditionalRenderingEXT = vkCmdBeginConditionalRenderingEXT;\n    pAPI->vkCmdEndConditionalRenderingEXT = vkCmdEndConditionalRenderingEXT;\n    pAPI->vkCreateDescriptorUpdateTemplateKHR = vkCreateDescriptorUpdateTemplateKHR;\n    pAPI->vkDestroyDescriptorUpdateTemplateKHR = vkDestroyDescriptorUpdateTemplateKHR;\n    pAPI->vkUpdateDescriptorSetWithTemplateKHR = vkUpdateDescriptorSetWithTemplateKHR;\n    pAPI->vkCmdSetViewportWScalingNV = vkCmdSetViewportWScalingNV;\n    pAPI->vkReleaseDisplayEXT = vkReleaseDisplayEXT;\n    pAPI->vkGetPhysicalDeviceSurfaceCapabilities2EXT = vkGetPhysicalDeviceSurfaceCapabilities2EXT;\n    pAPI->vkDisplayPowerControlEXT = vkDisplayPowerControlEXT;\n    pAPI->vkRegisterDeviceEventEXT = vkRegisterDeviceEventEXT;\n    pAPI->vkRegisterDisplayEventEXT = vkRegisterDisplayEventEXT;\n    pAPI->vkGetSwapchainCounterEXT = vkGetSwapchainCounterEXT;\n    pAPI->vkGetRefreshCycleDurationGOOGLE = vkGetRefreshCycleDurationGOOGLE;\n    pAPI->vkGetPastPresentationTimingGOOGLE = vkGetPastPresentationTimingGOOGLE;\n    pAPI->vkCmdSetDiscardRectangleEXT = vkCmdSetDiscardRectangleEXT;\n    pAPI->vkCmdSetDiscardRectangleEnableEXT = vkCmdSetDiscardRectangleEnableEXT;\n    pAPI->vkCmdSetDiscardRectangleModeEXT = vkCmdSetDiscardRectangleModeEXT;\n    pAPI->vkSetHdrMetadataEXT = vkSetHdrMetadataEXT;\n    pAPI->vkCreateRenderPass2KHR = vkCreateRenderPass2KHR;\n    pAPI->vkCmdBeginRenderPass2KHR = vkCmdBeginRenderPass2KHR;\n    pAPI->vkCmdNextSubpass2KHR = vkCmdNextSubpass2KHR;\n    pAPI->vkCmdEndRenderPass2KHR = vkCmdEndRenderPass2KHR;\n    pAPI->vkGetSwapchainStatusKHR = vkGetSwapchainStatusKHR;\n    pAPI->vkGetPhysicalDeviceExternalFencePropertiesKHR = vkGetPhysicalDeviceExternalFencePropertiesKHR;\n    pAPI->vkImportFenceFdKHR = vkImportFenceFdKHR;\n    pAPI->vkGetFenceFdKHR = vkGetFenceFdKHR;\n    pAPI->vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR;\n    pAPI->vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR;\n    pAPI->vkAcquireProfilingLockKHR = vkAcquireProfilingLockKHR;\n    pAPI->vkReleaseProfilingLockKHR = vkReleaseProfilingLockKHR;\n    pAPI->vkGetPhysicalDeviceSurfaceCapabilities2KHR = vkGetPhysicalDeviceSurfaceCapabilities2KHR;\n    pAPI->vkGetPhysicalDeviceSurfaceFormats2KHR = vkGetPhysicalDeviceSurfaceFormats2KHR;\n    pAPI->vkGetPhysicalDeviceDisplayProperties2KHR = vkGetPhysicalDeviceDisplayProperties2KHR;\n    pAPI->vkGetPhysicalDeviceDisplayPlaneProperties2KHR = vkGetPhysicalDeviceDisplayPlaneProperties2KHR;\n    pAPI->vkGetDisplayModeProperties2KHR = vkGetDisplayModeProperties2KHR;\n    pAPI->vkGetDisplayPlaneCapabilities2KHR = vkGetDisplayPlaneCapabilities2KHR;\n    pAPI->vkSetDebugUtilsObjectNameEXT = vkSetDebugUtilsObjectNameEXT;\n    pAPI->vkSetDebugUtilsObjectTagEXT = vkSetDebugUtilsObjectTagEXT;\n    pAPI->vkQueueBeginDebugUtilsLabelEXT = vkQueueBeginDebugUtilsLabelEXT;\n    pAPI->vkQueueEndDebugUtilsLabelEXT = vkQueueEndDebugUtilsLabelEXT;\n    pAPI->vkQueueInsertDebugUtilsLabelEXT = vkQueueInsertDebugUtilsLabelEXT;\n    pAPI->vkCmdBeginDebugUtilsLabelEXT = vkCmdBeginDebugUtilsLabelEXT;\n    pAPI->vkCmdEndDebugUtilsLabelEXT = vkCmdEndDebugUtilsLabelEXT;\n    pAPI->vkCmdInsertDebugUtilsLabelEXT = vkCmdInsertDebugUtilsLabelEXT;\n    pAPI->vkCreateDebugUtilsMessengerEXT = vkCreateDebugUtilsMessengerEXT;\n    pAPI->vkDestroyDebugUtilsMessengerEXT = vkDestroyDebugUtilsMessengerEXT;\n    pAPI->vkSubmitDebugUtilsMessageEXT = vkSubmitDebugUtilsMessageEXT;\n    pAPI->vkDebugMarkerSetObjectTagEXT = vkDebugMarkerSetObjectTagEXT;\n    pAPI->vkDebugMarkerSetObjectNameEXT = vkDebugMarkerSetObjectNameEXT;\n    pAPI->vkCmdDebugMarkerBeginEXT = vkCmdDebugMarkerBeginEXT;\n    pAPI->vkCmdDebugMarkerEndEXT = vkCmdDebugMarkerEndEXT;\n    pAPI->vkCmdDebugMarkerInsertEXT = vkCmdDebugMarkerInsertEXT;\n    pAPI->vkCreateDebugReportCallbackEXT = vkCreateDebugReportCallbackEXT;\n    pAPI->vkDestroyDebugReportCallbackEXT = vkDestroyDebugReportCallbackEXT;\n    pAPI->vkDebugReportMessageEXT = vkDebugReportMessageEXT;\n    pAPI->vkWriteSamplerDescriptorsEXT = vkWriteSamplerDescriptorsEXT;\n    pAPI->vkWriteResourceDescriptorsEXT = vkWriteResourceDescriptorsEXT;\n    pAPI->vkCmdBindSamplerHeapEXT = vkCmdBindSamplerHeapEXT;\n    pAPI->vkCmdBindResourceHeapEXT = vkCmdBindResourceHeapEXT;\n    pAPI->vkCmdPushDataEXT = vkCmdPushDataEXT;\n    pAPI->vkGetImageOpaqueCaptureDataEXT = vkGetImageOpaqueCaptureDataEXT;\n    pAPI->vkGetPhysicalDeviceDescriptorSizeEXT = vkGetPhysicalDeviceDescriptorSizeEXT;\n    pAPI->vkRegisterCustomBorderColorEXT = vkRegisterCustomBorderColorEXT;\n    pAPI->vkUnregisterCustomBorderColorEXT = vkUnregisterCustomBorderColorEXT;\n    pAPI->vkGetTensorOpaqueCaptureDataARM = vkGetTensorOpaqueCaptureDataARM;\n    pAPI->vkCmdSetSampleLocationsEXT = vkCmdSetSampleLocationsEXT;\n    pAPI->vkGetPhysicalDeviceMultisamplePropertiesEXT = vkGetPhysicalDeviceMultisamplePropertiesEXT;\n    pAPI->vkGetImageMemoryRequirements2KHR = vkGetImageMemoryRequirements2KHR;\n    pAPI->vkGetBufferMemoryRequirements2KHR = vkGetBufferMemoryRequirements2KHR;\n    pAPI->vkGetImageSparseMemoryRequirements2KHR = vkGetImageSparseMemoryRequirements2KHR;\n    pAPI->vkCreateAccelerationStructureKHR = vkCreateAccelerationStructureKHR;\n    pAPI->vkDestroyAccelerationStructureKHR = vkDestroyAccelerationStructureKHR;\n    pAPI->vkCmdBuildAccelerationStructuresKHR = vkCmdBuildAccelerationStructuresKHR;\n    pAPI->vkCmdBuildAccelerationStructuresIndirectKHR = vkCmdBuildAccelerationStructuresIndirectKHR;\n    pAPI->vkBuildAccelerationStructuresKHR = vkBuildAccelerationStructuresKHR;\n    pAPI->vkCopyAccelerationStructureKHR = vkCopyAccelerationStructureKHR;\n    pAPI->vkCopyAccelerationStructureToMemoryKHR = vkCopyAccelerationStructureToMemoryKHR;\n    pAPI->vkCopyMemoryToAccelerationStructureKHR = vkCopyMemoryToAccelerationStructureKHR;\n    pAPI->vkWriteAccelerationStructuresPropertiesKHR = vkWriteAccelerationStructuresPropertiesKHR;\n    pAPI->vkCmdCopyAccelerationStructureKHR = vkCmdCopyAccelerationStructureKHR;\n    pAPI->vkCmdCopyAccelerationStructureToMemoryKHR = vkCmdCopyAccelerationStructureToMemoryKHR;\n    pAPI->vkCmdCopyMemoryToAccelerationStructureKHR = vkCmdCopyMemoryToAccelerationStructureKHR;\n    pAPI->vkGetAccelerationStructureDeviceAddressKHR = vkGetAccelerationStructureDeviceAddressKHR;\n    pAPI->vkCmdWriteAccelerationStructuresPropertiesKHR = vkCmdWriteAccelerationStructuresPropertiesKHR;\n    pAPI->vkGetDeviceAccelerationStructureCompatibilityKHR = vkGetDeviceAccelerationStructureCompatibilityKHR;\n    pAPI->vkGetAccelerationStructureBuildSizesKHR = vkGetAccelerationStructureBuildSizesKHR;\n    pAPI->vkCmdTraceRaysKHR = vkCmdTraceRaysKHR;\n    pAPI->vkCreateRayTracingPipelinesKHR = vkCreateRayTracingPipelinesKHR;\n    pAPI->vkGetRayTracingShaderGroupHandlesKHR = vkGetRayTracingShaderGroupHandlesKHR;\n    pAPI->vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = vkGetRayTracingCaptureReplayShaderGroupHandlesKHR;\n    pAPI->vkCmdTraceRaysIndirectKHR = vkCmdTraceRaysIndirectKHR;\n    pAPI->vkGetRayTracingShaderGroupStackSizeKHR = vkGetRayTracingShaderGroupStackSizeKHR;\n    pAPI->vkCmdSetRayTracingPipelineStackSizeKHR = vkCmdSetRayTracingPipelineStackSizeKHR;\n    pAPI->vkCreateSamplerYcbcrConversionKHR = vkCreateSamplerYcbcrConversionKHR;\n    pAPI->vkDestroySamplerYcbcrConversionKHR = vkDestroySamplerYcbcrConversionKHR;\n    pAPI->vkBindBufferMemory2KHR = vkBindBufferMemory2KHR;\n    pAPI->vkBindImageMemory2KHR = vkBindImageMemory2KHR;\n    pAPI->vkGetImageDrmFormatModifierPropertiesEXT = vkGetImageDrmFormatModifierPropertiesEXT;\n    pAPI->vkCreateValidationCacheEXT = vkCreateValidationCacheEXT;\n    pAPI->vkDestroyValidationCacheEXT = vkDestroyValidationCacheEXT;\n    pAPI->vkMergeValidationCachesEXT = vkMergeValidationCachesEXT;\n    pAPI->vkGetValidationCacheDataEXT = vkGetValidationCacheDataEXT;\n    pAPI->vkCmdBindShadingRateImageNV = vkCmdBindShadingRateImageNV;\n    pAPI->vkCmdSetViewportShadingRatePaletteNV = vkCmdSetViewportShadingRatePaletteNV;\n    pAPI->vkCmdSetCoarseSampleOrderNV = vkCmdSetCoarseSampleOrderNV;\n    pAPI->vkCreateAccelerationStructureNV = vkCreateAccelerationStructureNV;\n    pAPI->vkDestroyAccelerationStructureNV = vkDestroyAccelerationStructureNV;\n    pAPI->vkGetAccelerationStructureMemoryRequirementsNV = vkGetAccelerationStructureMemoryRequirementsNV;\n    pAPI->vkBindAccelerationStructureMemoryNV = vkBindAccelerationStructureMemoryNV;\n    pAPI->vkCmdBuildAccelerationStructureNV = vkCmdBuildAccelerationStructureNV;\n    pAPI->vkCmdCopyAccelerationStructureNV = vkCmdCopyAccelerationStructureNV;\n    pAPI->vkCmdTraceRaysNV = vkCmdTraceRaysNV;\n    pAPI->vkCreateRayTracingPipelinesNV = vkCreateRayTracingPipelinesNV;\n    pAPI->vkGetRayTracingShaderGroupHandlesNV = vkGetRayTracingShaderGroupHandlesNV;\n    pAPI->vkGetAccelerationStructureHandleNV = vkGetAccelerationStructureHandleNV;\n    pAPI->vkCmdWriteAccelerationStructuresPropertiesNV = vkCmdWriteAccelerationStructuresPropertiesNV;\n    pAPI->vkCompileDeferredNV = vkCompileDeferredNV;\n    pAPI->vkGetDescriptorSetLayoutSupportKHR = vkGetDescriptorSetLayoutSupportKHR;\n    pAPI->vkCmdDrawIndirectCountKHR = vkCmdDrawIndirectCountKHR;\n    pAPI->vkCmdDrawIndexedIndirectCountKHR = vkCmdDrawIndexedIndirectCountKHR;\n    pAPI->vkCmdDrawIndirectCountAMD = vkCmdDrawIndirectCountAMD;\n    pAPI->vkCmdDrawIndexedIndirectCountAMD = vkCmdDrawIndexedIndirectCountAMD;\n    pAPI->vkGetMemoryHostPointerPropertiesEXT = vkGetMemoryHostPointerPropertiesEXT;\n    pAPI->vkCmdWriteBufferMarkerAMD = vkCmdWriteBufferMarkerAMD;\n    pAPI->vkCmdWriteBufferMarker2AMD = vkCmdWriteBufferMarker2AMD;\n    pAPI->vkCmdDrawMeshTasksNV = vkCmdDrawMeshTasksNV;\n    pAPI->vkCmdDrawMeshTasksIndirectNV = vkCmdDrawMeshTasksIndirectNV;\n    pAPI->vkCmdDrawMeshTasksIndirectCountNV = vkCmdDrawMeshTasksIndirectCountNV;\n    pAPI->vkCmdSetExclusiveScissorEnableNV = vkCmdSetExclusiveScissorEnableNV;\n    pAPI->vkCmdSetExclusiveScissorNV = vkCmdSetExclusiveScissorNV;\n    pAPI->vkCmdSetCheckpointNV = vkCmdSetCheckpointNV;\n    pAPI->vkGetQueueCheckpointDataNV = vkGetQueueCheckpointDataNV;\n    pAPI->vkGetQueueCheckpointData2NV = vkGetQueueCheckpointData2NV;\n    pAPI->vkGetSemaphoreCounterValueKHR = vkGetSemaphoreCounterValueKHR;\n    pAPI->vkWaitSemaphoresKHR = vkWaitSemaphoresKHR;\n    pAPI->vkSignalSemaphoreKHR = vkSignalSemaphoreKHR;\n    pAPI->vkSetSwapchainPresentTimingQueueSizeEXT = vkSetSwapchainPresentTimingQueueSizeEXT;\n    pAPI->vkGetSwapchainTimingPropertiesEXT = vkGetSwapchainTimingPropertiesEXT;\n    pAPI->vkGetSwapchainTimeDomainPropertiesEXT = vkGetSwapchainTimeDomainPropertiesEXT;\n    pAPI->vkGetPastPresentationTimingEXT = vkGetPastPresentationTimingEXT;\n    pAPI->vkInitializePerformanceApiINTEL = vkInitializePerformanceApiINTEL;\n    pAPI->vkUninitializePerformanceApiINTEL = vkUninitializePerformanceApiINTEL;\n    pAPI->vkCmdSetPerformanceMarkerINTEL = vkCmdSetPerformanceMarkerINTEL;\n    pAPI->vkCmdSetPerformanceStreamMarkerINTEL = vkCmdSetPerformanceStreamMarkerINTEL;\n    pAPI->vkCmdSetPerformanceOverrideINTEL = vkCmdSetPerformanceOverrideINTEL;\n    pAPI->vkAcquirePerformanceConfigurationINTEL = vkAcquirePerformanceConfigurationINTEL;\n    pAPI->vkReleasePerformanceConfigurationINTEL = vkReleasePerformanceConfigurationINTEL;\n    pAPI->vkQueueSetPerformanceConfigurationINTEL = vkQueueSetPerformanceConfigurationINTEL;\n    pAPI->vkGetPerformanceParameterINTEL = vkGetPerformanceParameterINTEL;\n    pAPI->vkSetLocalDimmingAMD = vkSetLocalDimmingAMD;\n    pAPI->vkGetPhysicalDeviceFragmentShadingRatesKHR = vkGetPhysicalDeviceFragmentShadingRatesKHR;\n    pAPI->vkCmdSetFragmentShadingRateKHR = vkCmdSetFragmentShadingRateKHR;\n    pAPI->vkCmdSetRenderingAttachmentLocationsKHR = vkCmdSetRenderingAttachmentLocationsKHR;\n    pAPI->vkCmdSetRenderingInputAttachmentIndicesKHR = vkCmdSetRenderingInputAttachmentIndicesKHR;\n    pAPI->vkGetPhysicalDeviceToolPropertiesEXT = vkGetPhysicalDeviceToolPropertiesEXT;\n    pAPI->vkWaitForPresentKHR = vkWaitForPresentKHR;\n    pAPI->vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = vkGetPhysicalDeviceCooperativeMatrixPropertiesNV;\n    pAPI->vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV;\n    pAPI->vkCreateHeadlessSurfaceEXT = vkCreateHeadlessSurfaceEXT;\n    pAPI->vkGetBufferDeviceAddressKHR = vkGetBufferDeviceAddressKHR;\n    pAPI->vkGetBufferOpaqueCaptureAddressKHR = vkGetBufferOpaqueCaptureAddressKHR;\n    pAPI->vkGetDeviceMemoryOpaqueCaptureAddressKHR = vkGetDeviceMemoryOpaqueCaptureAddressKHR;\n    pAPI->vkGetBufferDeviceAddressEXT = vkGetBufferDeviceAddressEXT;\n    pAPI->vkResetQueryPoolEXT = vkResetQueryPoolEXT;\n    pAPI->vkCmdSetCullModeEXT = vkCmdSetCullModeEXT;\n    pAPI->vkCmdSetFrontFaceEXT = vkCmdSetFrontFaceEXT;\n    pAPI->vkCmdSetPrimitiveTopologyEXT = vkCmdSetPrimitiveTopologyEXT;\n    pAPI->vkCmdSetViewportWithCountEXT = vkCmdSetViewportWithCountEXT;\n    pAPI->vkCmdSetScissorWithCountEXT = vkCmdSetScissorWithCountEXT;\n    pAPI->vkCmdBindVertexBuffers2EXT = vkCmdBindVertexBuffers2EXT;\n    pAPI->vkCmdSetDepthTestEnableEXT = vkCmdSetDepthTestEnableEXT;\n    pAPI->vkCmdSetDepthWriteEnableEXT = vkCmdSetDepthWriteEnableEXT;\n    pAPI->vkCmdSetDepthCompareOpEXT = vkCmdSetDepthCompareOpEXT;\n    pAPI->vkCmdSetDepthBoundsTestEnableEXT = vkCmdSetDepthBoundsTestEnableEXT;\n    pAPI->vkCmdSetStencilTestEnableEXT = vkCmdSetStencilTestEnableEXT;\n    pAPI->vkCmdSetStencilOpEXT = vkCmdSetStencilOpEXT;\n    pAPI->vkCreateDeferredOperationKHR = vkCreateDeferredOperationKHR;\n    pAPI->vkDestroyDeferredOperationKHR = vkDestroyDeferredOperationKHR;\n    pAPI->vkGetDeferredOperationMaxConcurrencyKHR = vkGetDeferredOperationMaxConcurrencyKHR;\n    pAPI->vkGetDeferredOperationResultKHR = vkGetDeferredOperationResultKHR;\n    pAPI->vkDeferredOperationJoinKHR = vkDeferredOperationJoinKHR;\n    pAPI->vkGetPipelineExecutablePropertiesKHR = vkGetPipelineExecutablePropertiesKHR;\n    pAPI->vkGetPipelineExecutableStatisticsKHR = vkGetPipelineExecutableStatisticsKHR;\n    pAPI->vkGetPipelineExecutableInternalRepresentationsKHR = vkGetPipelineExecutableInternalRepresentationsKHR;\n    pAPI->vkCopyMemoryToImageEXT = vkCopyMemoryToImageEXT;\n    pAPI->vkCopyImageToMemoryEXT = vkCopyImageToMemoryEXT;\n    pAPI->vkCopyImageToImageEXT = vkCopyImageToImageEXT;\n    pAPI->vkTransitionImageLayoutEXT = vkTransitionImageLayoutEXT;\n    pAPI->vkGetImageSubresourceLayout2EXT = vkGetImageSubresourceLayout2EXT;\n    pAPI->vkMapMemory2KHR = vkMapMemory2KHR;\n    pAPI->vkUnmapMemory2KHR = vkUnmapMemory2KHR;\n    pAPI->vkGetGeneratedCommandsMemoryRequirementsNV = vkGetGeneratedCommandsMemoryRequirementsNV;\n    pAPI->vkCmdPreprocessGeneratedCommandsNV = vkCmdPreprocessGeneratedCommandsNV;\n    pAPI->vkCmdExecuteGeneratedCommandsNV = vkCmdExecuteGeneratedCommandsNV;\n    pAPI->vkCmdBindPipelineShaderGroupNV = vkCmdBindPipelineShaderGroupNV;\n    pAPI->vkCreateIndirectCommandsLayoutNV = vkCreateIndirectCommandsLayoutNV;\n    pAPI->vkDestroyIndirectCommandsLayoutNV = vkDestroyIndirectCommandsLayoutNV;\n    pAPI->vkCmdSetDepthBias2EXT = vkCmdSetDepthBias2EXT;\n    pAPI->vkAcquireDrmDisplayEXT = vkAcquireDrmDisplayEXT;\n    pAPI->vkGetDrmDisplayEXT = vkGetDrmDisplayEXT;\n    pAPI->vkCreatePrivateDataSlotEXT = vkCreatePrivateDataSlotEXT;\n    pAPI->vkDestroyPrivateDataSlotEXT = vkDestroyPrivateDataSlotEXT;\n    pAPI->vkSetPrivateDataEXT = vkSetPrivateDataEXT;\n    pAPI->vkGetPrivateDataEXT = vkGetPrivateDataEXT;\n    pAPI->vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR = vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR;\n    pAPI->vkGetEncodedVideoSessionParametersKHR = vkGetEncodedVideoSessionParametersKHR;\n    pAPI->vkCmdEncodeVideoKHR = vkCmdEncodeVideoKHR;\n    pAPI->vkCmdRefreshObjectsKHR = vkCmdRefreshObjectsKHR;\n    pAPI->vkGetPhysicalDeviceRefreshableObjectTypesKHR = vkGetPhysicalDeviceRefreshableObjectTypesKHR;\n    pAPI->vkCmdDispatchTileQCOM = vkCmdDispatchTileQCOM;\n    pAPI->vkCmdBeginPerTileExecutionQCOM = vkCmdBeginPerTileExecutionQCOM;\n    pAPI->vkCmdEndPerTileExecutionQCOM = vkCmdEndPerTileExecutionQCOM;\n    pAPI->vkCmdSetEvent2KHR = vkCmdSetEvent2KHR;\n    pAPI->vkCmdResetEvent2KHR = vkCmdResetEvent2KHR;\n    pAPI->vkCmdWaitEvents2KHR = vkCmdWaitEvents2KHR;\n    pAPI->vkCmdPipelineBarrier2KHR = vkCmdPipelineBarrier2KHR;\n    pAPI->vkCmdWriteTimestamp2KHR = vkCmdWriteTimestamp2KHR;\n    pAPI->vkQueueSubmit2KHR = vkQueueSubmit2KHR;\n    pAPI->vkGetDescriptorSetLayoutSizeEXT = vkGetDescriptorSetLayoutSizeEXT;\n    pAPI->vkGetDescriptorSetLayoutBindingOffsetEXT = vkGetDescriptorSetLayoutBindingOffsetEXT;\n    pAPI->vkGetDescriptorEXT = vkGetDescriptorEXT;\n    pAPI->vkCmdBindDescriptorBuffersEXT = vkCmdBindDescriptorBuffersEXT;\n    pAPI->vkCmdSetDescriptorBufferOffsetsEXT = vkCmdSetDescriptorBufferOffsetsEXT;\n    pAPI->vkCmdBindDescriptorBufferEmbeddedSamplersEXT = vkCmdBindDescriptorBufferEmbeddedSamplersEXT;\n    pAPI->vkGetBufferOpaqueCaptureDescriptorDataEXT = vkGetBufferOpaqueCaptureDescriptorDataEXT;\n    pAPI->vkGetImageOpaqueCaptureDescriptorDataEXT = vkGetImageOpaqueCaptureDescriptorDataEXT;\n    pAPI->vkGetImageViewOpaqueCaptureDescriptorDataEXT = vkGetImageViewOpaqueCaptureDescriptorDataEXT;\n    pAPI->vkGetSamplerOpaqueCaptureDescriptorDataEXT = vkGetSamplerOpaqueCaptureDescriptorDataEXT;\n    pAPI->vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT = vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT;\n    pAPI->vkCmdSetFragmentShadingRateEnumNV = vkCmdSetFragmentShadingRateEnumNV;\n    pAPI->vkCmdDrawMeshTasksEXT = vkCmdDrawMeshTasksEXT;\n    pAPI->vkCmdDrawMeshTasksIndirectEXT = vkCmdDrawMeshTasksIndirectEXT;\n    pAPI->vkCmdDrawMeshTasksIndirectCountEXT = vkCmdDrawMeshTasksIndirectCountEXT;\n    pAPI->vkCmdCopyBuffer2KHR = vkCmdCopyBuffer2KHR;\n    pAPI->vkCmdCopyImage2KHR = vkCmdCopyImage2KHR;\n    pAPI->vkCmdCopyBufferToImage2KHR = vkCmdCopyBufferToImage2KHR;\n    pAPI->vkCmdCopyImageToBuffer2KHR = vkCmdCopyImageToBuffer2KHR;\n    pAPI->vkCmdBlitImage2KHR = vkCmdBlitImage2KHR;\n    pAPI->vkCmdResolveImage2KHR = vkCmdResolveImage2KHR;\n    pAPI->vkGetDeviceFaultInfoEXT = vkGetDeviceFaultInfoEXT;\n    pAPI->vkCmdSetVertexInputEXT = vkCmdSetVertexInputEXT;\n    pAPI->vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI;\n    pAPI->vkCmdSubpassShadingHUAWEI = vkCmdSubpassShadingHUAWEI;\n    pAPI->vkCmdBindInvocationMaskHUAWEI = vkCmdBindInvocationMaskHUAWEI;\n    pAPI->vkGetMemoryRemoteAddressNV = vkGetMemoryRemoteAddressNV;\n    pAPI->vkGetPipelinePropertiesEXT = vkGetPipelinePropertiesEXT;\n    pAPI->vkCmdSetPatchControlPointsEXT = vkCmdSetPatchControlPointsEXT;\n    pAPI->vkCmdSetRasterizerDiscardEnableEXT = vkCmdSetRasterizerDiscardEnableEXT;\n    pAPI->vkCmdSetDepthBiasEnableEXT = vkCmdSetDepthBiasEnableEXT;\n    pAPI->vkCmdSetLogicOpEXT = vkCmdSetLogicOpEXT;\n    pAPI->vkCmdSetPrimitiveRestartEnableEXT = vkCmdSetPrimitiveRestartEnableEXT;\n    pAPI->vkCmdSetColorWriteEnableEXT = vkCmdSetColorWriteEnableEXT;\n    pAPI->vkCmdTraceRaysIndirect2KHR = vkCmdTraceRaysIndirect2KHR;\n    pAPI->vkCmdDrawMultiEXT = vkCmdDrawMultiEXT;\n    pAPI->vkCmdDrawMultiIndexedEXT = vkCmdDrawMultiIndexedEXT;\n    pAPI->vkCreateMicromapEXT = vkCreateMicromapEXT;\n    pAPI->vkDestroyMicromapEXT = vkDestroyMicromapEXT;\n    pAPI->vkCmdBuildMicromapsEXT = vkCmdBuildMicromapsEXT;\n    pAPI->vkBuildMicromapsEXT = vkBuildMicromapsEXT;\n    pAPI->vkCopyMicromapEXT = vkCopyMicromapEXT;\n    pAPI->vkCopyMicromapToMemoryEXT = vkCopyMicromapToMemoryEXT;\n    pAPI->vkCopyMemoryToMicromapEXT = vkCopyMemoryToMicromapEXT;\n    pAPI->vkWriteMicromapsPropertiesEXT = vkWriteMicromapsPropertiesEXT;\n    pAPI->vkCmdCopyMicromapEXT = vkCmdCopyMicromapEXT;\n    pAPI->vkCmdCopyMicromapToMemoryEXT = vkCmdCopyMicromapToMemoryEXT;\n    pAPI->vkCmdCopyMemoryToMicromapEXT = vkCmdCopyMemoryToMicromapEXT;\n    pAPI->vkCmdWriteMicromapsPropertiesEXT = vkCmdWriteMicromapsPropertiesEXT;\n    pAPI->vkGetDeviceMicromapCompatibilityEXT = vkGetDeviceMicromapCompatibilityEXT;\n    pAPI->vkGetMicromapBuildSizesEXT = vkGetMicromapBuildSizesEXT;\n    pAPI->vkCmdDrawClusterHUAWEI = vkCmdDrawClusterHUAWEI;\n    pAPI->vkCmdDrawClusterIndirectHUAWEI = vkCmdDrawClusterIndirectHUAWEI;\n    pAPI->vkSetDeviceMemoryPriorityEXT = vkSetDeviceMemoryPriorityEXT;\n    pAPI->vkGetDeviceBufferMemoryRequirementsKHR = vkGetDeviceBufferMemoryRequirementsKHR;\n    pAPI->vkGetDeviceImageMemoryRequirementsKHR = vkGetDeviceImageMemoryRequirementsKHR;\n    pAPI->vkGetDeviceImageSparseMemoryRequirementsKHR = vkGetDeviceImageSparseMemoryRequirementsKHR;\n    pAPI->vkGetDescriptorSetLayoutHostMappingInfoVALVE = vkGetDescriptorSetLayoutHostMappingInfoVALVE;\n    pAPI->vkGetDescriptorSetHostMappingVALVE = vkGetDescriptorSetHostMappingVALVE;\n    pAPI->vkGetPipelineIndirectMemoryRequirementsNV = vkGetPipelineIndirectMemoryRequirementsNV;\n    pAPI->vkCmdUpdatePipelineIndirectBufferNV = vkCmdUpdatePipelineIndirectBufferNV;\n    pAPI->vkGetPipelineIndirectDeviceAddressNV = vkGetPipelineIndirectDeviceAddressNV;\n    pAPI->vkCmdSetDepthClampEnableEXT = vkCmdSetDepthClampEnableEXT;\n    pAPI->vkCmdSetPolygonModeEXT = vkCmdSetPolygonModeEXT;\n    pAPI->vkCmdSetRasterizationSamplesEXT = vkCmdSetRasterizationSamplesEXT;\n    pAPI->vkCmdSetSampleMaskEXT = vkCmdSetSampleMaskEXT;\n    pAPI->vkCmdSetAlphaToCoverageEnableEXT = vkCmdSetAlphaToCoverageEnableEXT;\n    pAPI->vkCmdSetAlphaToOneEnableEXT = vkCmdSetAlphaToOneEnableEXT;\n    pAPI->vkCmdSetLogicOpEnableEXT = vkCmdSetLogicOpEnableEXT;\n    pAPI->vkCmdSetColorBlendEnableEXT = vkCmdSetColorBlendEnableEXT;\n    pAPI->vkCmdSetColorBlendEquationEXT = vkCmdSetColorBlendEquationEXT;\n    pAPI->vkCmdSetColorWriteMaskEXT = vkCmdSetColorWriteMaskEXT;\n    pAPI->vkCmdSetTessellationDomainOriginEXT = vkCmdSetTessellationDomainOriginEXT;\n    pAPI->vkCmdSetRasterizationStreamEXT = vkCmdSetRasterizationStreamEXT;\n    pAPI->vkCmdSetConservativeRasterizationModeEXT = vkCmdSetConservativeRasterizationModeEXT;\n    pAPI->vkCmdSetExtraPrimitiveOverestimationSizeEXT = vkCmdSetExtraPrimitiveOverestimationSizeEXT;\n    pAPI->vkCmdSetDepthClipEnableEXT = vkCmdSetDepthClipEnableEXT;\n    pAPI->vkCmdSetSampleLocationsEnableEXT = vkCmdSetSampleLocationsEnableEXT;\n    pAPI->vkCmdSetColorBlendAdvancedEXT = vkCmdSetColorBlendAdvancedEXT;\n    pAPI->vkCmdSetProvokingVertexModeEXT = vkCmdSetProvokingVertexModeEXT;\n    pAPI->vkCmdSetLineRasterizationModeEXT = vkCmdSetLineRasterizationModeEXT;\n    pAPI->vkCmdSetLineStippleEnableEXT = vkCmdSetLineStippleEnableEXT;\n    pAPI->vkCmdSetDepthClipNegativeOneToOneEXT = vkCmdSetDepthClipNegativeOneToOneEXT;\n    pAPI->vkCmdSetViewportWScalingEnableNV = vkCmdSetViewportWScalingEnableNV;\n    pAPI->vkCmdSetViewportSwizzleNV = vkCmdSetViewportSwizzleNV;\n    pAPI->vkCmdSetCoverageToColorEnableNV = vkCmdSetCoverageToColorEnableNV;\n    pAPI->vkCmdSetCoverageToColorLocationNV = vkCmdSetCoverageToColorLocationNV;\n    pAPI->vkCmdSetCoverageModulationModeNV = vkCmdSetCoverageModulationModeNV;\n    pAPI->vkCmdSetCoverageModulationTableEnableNV = vkCmdSetCoverageModulationTableEnableNV;\n    pAPI->vkCmdSetCoverageModulationTableNV = vkCmdSetCoverageModulationTableNV;\n    pAPI->vkCmdSetShadingRateImageEnableNV = vkCmdSetShadingRateImageEnableNV;\n    pAPI->vkCmdSetRepresentativeFragmentTestEnableNV = vkCmdSetRepresentativeFragmentTestEnableNV;\n    pAPI->vkCmdSetCoverageReductionModeNV = vkCmdSetCoverageReductionModeNV;\n    pAPI->vkCreateTensorARM = vkCreateTensorARM;\n    pAPI->vkDestroyTensorARM = vkDestroyTensorARM;\n    pAPI->vkCreateTensorViewARM = vkCreateTensorViewARM;\n    pAPI->vkDestroyTensorViewARM = vkDestroyTensorViewARM;\n    pAPI->vkGetTensorMemoryRequirementsARM = vkGetTensorMemoryRequirementsARM;\n    pAPI->vkBindTensorMemoryARM = vkBindTensorMemoryARM;\n    pAPI->vkGetDeviceTensorMemoryRequirementsARM = vkGetDeviceTensorMemoryRequirementsARM;\n    pAPI->vkCmdCopyTensorARM = vkCmdCopyTensorARM;\n    pAPI->vkGetPhysicalDeviceExternalTensorPropertiesARM = vkGetPhysicalDeviceExternalTensorPropertiesARM;\n    pAPI->vkGetTensorOpaqueCaptureDescriptorDataARM = vkGetTensorOpaqueCaptureDescriptorDataARM;\n    pAPI->vkGetTensorViewOpaqueCaptureDescriptorDataARM = vkGetTensorViewOpaqueCaptureDescriptorDataARM;\n    pAPI->vkGetShaderModuleIdentifierEXT = vkGetShaderModuleIdentifierEXT;\n    pAPI->vkGetShaderModuleCreateInfoIdentifierEXT = vkGetShaderModuleCreateInfoIdentifierEXT;\n    pAPI->vkGetPhysicalDeviceOpticalFlowImageFormatsNV = vkGetPhysicalDeviceOpticalFlowImageFormatsNV;\n    pAPI->vkCreateOpticalFlowSessionNV = vkCreateOpticalFlowSessionNV;\n    pAPI->vkDestroyOpticalFlowSessionNV = vkDestroyOpticalFlowSessionNV;\n    pAPI->vkBindOpticalFlowSessionImageNV = vkBindOpticalFlowSessionImageNV;\n    pAPI->vkCmdOpticalFlowExecuteNV = vkCmdOpticalFlowExecuteNV;\n    pAPI->vkCmdBindIndexBuffer2KHR = vkCmdBindIndexBuffer2KHR;\n    pAPI->vkGetRenderingAreaGranularityKHR = vkGetRenderingAreaGranularityKHR;\n    pAPI->vkGetDeviceImageSubresourceLayoutKHR = vkGetDeviceImageSubresourceLayoutKHR;\n    pAPI->vkGetImageSubresourceLayout2KHR = vkGetImageSubresourceLayout2KHR;\n    pAPI->vkAntiLagUpdateAMD = vkAntiLagUpdateAMD;\n    pAPI->vkWaitForPresent2KHR = vkWaitForPresent2KHR;\n    pAPI->vkCreateShadersEXT = vkCreateShadersEXT;\n    pAPI->vkDestroyShaderEXT = vkDestroyShaderEXT;\n    pAPI->vkGetShaderBinaryDataEXT = vkGetShaderBinaryDataEXT;\n    pAPI->vkCmdBindShadersEXT = vkCmdBindShadersEXT;\n    pAPI->vkCmdSetDepthClampRangeEXT = vkCmdSetDepthClampRangeEXT;\n    pAPI->vkCreatePipelineBinariesKHR = vkCreatePipelineBinariesKHR;\n    pAPI->vkDestroyPipelineBinaryKHR = vkDestroyPipelineBinaryKHR;\n    pAPI->vkGetPipelineKeyKHR = vkGetPipelineKeyKHR;\n    pAPI->vkGetPipelineBinaryDataKHR = vkGetPipelineBinaryDataKHR;\n    pAPI->vkReleaseCapturedPipelineDataKHR = vkReleaseCapturedPipelineDataKHR;\n    pAPI->vkGetFramebufferTilePropertiesQCOM = vkGetFramebufferTilePropertiesQCOM;\n    pAPI->vkGetDynamicRenderingTilePropertiesQCOM = vkGetDynamicRenderingTilePropertiesQCOM;\n    pAPI->vkReleaseSwapchainImagesKHR = vkReleaseSwapchainImagesKHR;\n    pAPI->vkReleaseSwapchainImagesEXT = vkReleaseSwapchainImagesEXT;\n    pAPI->vkGetPhysicalDeviceCooperativeVectorPropertiesNV = vkGetPhysicalDeviceCooperativeVectorPropertiesNV;\n    pAPI->vkConvertCooperativeVectorMatrixNV = vkConvertCooperativeVectorMatrixNV;\n    pAPI->vkCmdConvertCooperativeVectorMatrixNV = vkCmdConvertCooperativeVectorMatrixNV;\n    pAPI->vkSetLatencySleepModeNV = vkSetLatencySleepModeNV;\n    pAPI->vkLatencySleepNV = vkLatencySleepNV;\n    pAPI->vkSetLatencyMarkerNV = vkSetLatencyMarkerNV;\n    pAPI->vkGetLatencyTimingsNV = vkGetLatencyTimingsNV;\n    pAPI->vkQueueNotifyOutOfBandNV = vkQueueNotifyOutOfBandNV;\n    pAPI->vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR = vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR;\n    pAPI->vkCreateDataGraphPipelinesARM = vkCreateDataGraphPipelinesARM;\n    pAPI->vkCreateDataGraphPipelineSessionARM = vkCreateDataGraphPipelineSessionARM;\n    pAPI->vkGetDataGraphPipelineSessionBindPointRequirementsARM = vkGetDataGraphPipelineSessionBindPointRequirementsARM;\n    pAPI->vkGetDataGraphPipelineSessionMemoryRequirementsARM = vkGetDataGraphPipelineSessionMemoryRequirementsARM;\n    pAPI->vkBindDataGraphPipelineSessionMemoryARM = vkBindDataGraphPipelineSessionMemoryARM;\n    pAPI->vkDestroyDataGraphPipelineSessionARM = vkDestroyDataGraphPipelineSessionARM;\n    pAPI->vkCmdDispatchDataGraphARM = vkCmdDispatchDataGraphARM;\n    pAPI->vkGetDataGraphPipelineAvailablePropertiesARM = vkGetDataGraphPipelineAvailablePropertiesARM;\n    pAPI->vkGetDataGraphPipelinePropertiesARM = vkGetDataGraphPipelinePropertiesARM;\n    pAPI->vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM = vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM;\n    pAPI->vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM = vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM;\n    pAPI->vkCmdSetAttachmentFeedbackLoopEnableEXT = vkCmdSetAttachmentFeedbackLoopEnableEXT;\n    pAPI->vkCmdSetLineStippleKHR = vkCmdSetLineStippleKHR;\n    pAPI->vkCmdSetLineStippleEXT = vkCmdSetLineStippleEXT;\n    pAPI->vkGetPhysicalDeviceCalibrateableTimeDomainsKHR = vkGetPhysicalDeviceCalibrateableTimeDomainsKHR;\n    pAPI->vkGetCalibratedTimestampsKHR = vkGetCalibratedTimestampsKHR;\n    pAPI->vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = vkGetPhysicalDeviceCalibrateableTimeDomainsEXT;\n    pAPI->vkGetCalibratedTimestampsEXT = vkGetCalibratedTimestampsEXT;\n    pAPI->vkCmdBindDescriptorSets2KHR = vkCmdBindDescriptorSets2KHR;\n    pAPI->vkCmdPushConstants2KHR = vkCmdPushConstants2KHR;\n    pAPI->vkCmdPushDescriptorSet2KHR = vkCmdPushDescriptorSet2KHR;\n    pAPI->vkCmdPushDescriptorSetWithTemplate2KHR = vkCmdPushDescriptorSetWithTemplate2KHR;\n    pAPI->vkCmdSetDescriptorBufferOffsets2EXT = vkCmdSetDescriptorBufferOffsets2EXT;\n    pAPI->vkCmdBindDescriptorBufferEmbeddedSamplers2EXT = vkCmdBindDescriptorBufferEmbeddedSamplers2EXT;\n    pAPI->vkCmdBindTileMemoryQCOM = vkCmdBindTileMemoryQCOM;\n    pAPI->vkCmdCopyMemoryIndirectKHR = vkCmdCopyMemoryIndirectKHR;\n    pAPI->vkCmdCopyMemoryToImageIndirectKHR = vkCmdCopyMemoryToImageIndirectKHR;\n    pAPI->vkCmdCopyMemoryIndirectNV = vkCmdCopyMemoryIndirectNV;\n    pAPI->vkCmdCopyMemoryToImageIndirectNV = vkCmdCopyMemoryToImageIndirectNV;\n    pAPI->vkCmdDecompressMemoryEXT = vkCmdDecompressMemoryEXT;\n    pAPI->vkCmdDecompressMemoryIndirectCountEXT = vkCmdDecompressMemoryIndirectCountEXT;\n    pAPI->vkCmdDecompressMemoryNV = vkCmdDecompressMemoryNV;\n    pAPI->vkCmdDecompressMemoryIndirectCountNV = vkCmdDecompressMemoryIndirectCountNV;\n    pAPI->vkCreateExternalComputeQueueNV = vkCreateExternalComputeQueueNV;\n    pAPI->vkDestroyExternalComputeQueueNV = vkDestroyExternalComputeQueueNV;\n    pAPI->vkGetExternalComputeQueueDataNV = vkGetExternalComputeQueueDataNV;\n    pAPI->vkGetClusterAccelerationStructureBuildSizesNV = vkGetClusterAccelerationStructureBuildSizesNV;\n    pAPI->vkCmdBuildClusterAccelerationStructureIndirectNV = vkCmdBuildClusterAccelerationStructureIndirectNV;\n    pAPI->vkGetPartitionedAccelerationStructuresBuildSizesNV = vkGetPartitionedAccelerationStructuresBuildSizesNV;\n    pAPI->vkCmdBuildPartitionedAccelerationStructuresNV = vkCmdBuildPartitionedAccelerationStructuresNV;\n    pAPI->vkGetGeneratedCommandsMemoryRequirementsEXT = vkGetGeneratedCommandsMemoryRequirementsEXT;\n    pAPI->vkCmdPreprocessGeneratedCommandsEXT = vkCmdPreprocessGeneratedCommandsEXT;\n    pAPI->vkCmdExecuteGeneratedCommandsEXT = vkCmdExecuteGeneratedCommandsEXT;\n    pAPI->vkCreateIndirectCommandsLayoutEXT = vkCreateIndirectCommandsLayoutEXT;\n    pAPI->vkDestroyIndirectCommandsLayoutEXT = vkDestroyIndirectCommandsLayoutEXT;\n    pAPI->vkCreateIndirectExecutionSetEXT = vkCreateIndirectExecutionSetEXT;\n    pAPI->vkDestroyIndirectExecutionSetEXT = vkDestroyIndirectExecutionSetEXT;\n    pAPI->vkUpdateIndirectExecutionSetPipelineEXT = vkUpdateIndirectExecutionSetPipelineEXT;\n    pAPI->vkUpdateIndirectExecutionSetShaderEXT = vkUpdateIndirectExecutionSetShaderEXT;\n    pAPI->vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV = vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV;\n    pAPI->vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM = vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM;\n    pAPI->vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM = vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM;\n    pAPI->vkCreateShaderInstrumentationARM = vkCreateShaderInstrumentationARM;\n    pAPI->vkDestroyShaderInstrumentationARM = vkDestroyShaderInstrumentationARM;\n    pAPI->vkCmdBeginShaderInstrumentationARM = vkCmdBeginShaderInstrumentationARM;\n    pAPI->vkCmdEndShaderInstrumentationARM = vkCmdEndShaderInstrumentationARM;\n    pAPI->vkGetShaderInstrumentationValuesARM = vkGetShaderInstrumentationValuesARM;\n    pAPI->vkClearShaderInstrumentationMetricsARM = vkClearShaderInstrumentationMetricsARM;\n    pAPI->vkCmdEndRendering2EXT = vkCmdEndRendering2EXT;\n    pAPI->vkCmdBeginCustomResolveEXT = vkCmdBeginCustomResolveEXT;\n    pAPI->vkCmdEndRendering2KHR = vkCmdEndRendering2KHR;\n    pAPI->vkCmdSetComputeOccupancyPriorityNV = vkCmdSetComputeOccupancyPriorityNV;\n#ifdef VK_USE_PLATFORM_XLIB_KHR\n    pAPI->vkCreateXlibSurfaceKHR = vkCreateXlibSurfaceKHR;\n    pAPI->vkGetPhysicalDeviceXlibPresentationSupportKHR = vkGetPhysicalDeviceXlibPresentationSupportKHR;\n#endif /*VK_USE_PLATFORM_XLIB_KHR*/\n#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT\n    pAPI->vkAcquireXlibDisplayEXT = vkAcquireXlibDisplayEXT;\n    pAPI->vkGetRandROutputDisplayEXT = vkGetRandROutputDisplayEXT;\n#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/\n#ifdef VK_USE_PLATFORM_XCB_KHR\n    pAPI->vkCreateXcbSurfaceKHR = vkCreateXcbSurfaceKHR;\n    pAPI->vkGetPhysicalDeviceXcbPresentationSupportKHR = vkGetPhysicalDeviceXcbPresentationSupportKHR;\n#endif /*VK_USE_PLATFORM_XCB_KHR*/\n#ifdef VK_USE_PLATFORM_WAYLAND_KHR\n    pAPI->vkCreateWaylandSurfaceKHR = vkCreateWaylandSurfaceKHR;\n    pAPI->vkGetPhysicalDeviceWaylandPresentationSupportKHR = vkGetPhysicalDeviceWaylandPresentationSupportKHR;\n#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/\n#ifdef VK_USE_PLATFORM_UBM_SEC\n    pAPI->vkCreateUbmSurfaceSEC = vkCreateUbmSurfaceSEC;\n    pAPI->vkGetPhysicalDeviceUbmPresentationSupportSEC = vkGetPhysicalDeviceUbmPresentationSupportSEC;\n#endif /*VK_USE_PLATFORM_UBM_SEC*/\n#ifdef VK_USE_PLATFORM_DIRECTFB_EXT\n    pAPI->vkCreateDirectFBSurfaceEXT = vkCreateDirectFBSurfaceEXT;\n    pAPI->vkGetPhysicalDeviceDirectFBPresentationSupportEXT = vkGetPhysicalDeviceDirectFBPresentationSupportEXT;\n#endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/\n#ifdef VK_USE_PLATFORM_ANDROID_KHR\n    pAPI->vkCreateAndroidSurfaceKHR = vkCreateAndroidSurfaceKHR;\n    pAPI->vkGetAndroidHardwareBufferPropertiesANDROID = vkGetAndroidHardwareBufferPropertiesANDROID;\n    pAPI->vkGetMemoryAndroidHardwareBufferANDROID = vkGetMemoryAndroidHardwareBufferANDROID;\n#endif /*VK_USE_PLATFORM_ANDROID_KHR*/\n#ifdef VK_USE_PLATFORM_WIN32_KHR\n    pAPI->vkCreateWin32SurfaceKHR = vkCreateWin32SurfaceKHR;\n    pAPI->vkGetPhysicalDeviceWin32PresentationSupportKHR = vkGetPhysicalDeviceWin32PresentationSupportKHR;\n    pAPI->vkGetMemoryWin32HandleKHR = vkGetMemoryWin32HandleKHR;\n    pAPI->vkGetMemoryWin32HandlePropertiesKHR = vkGetMemoryWin32HandlePropertiesKHR;\n    pAPI->vkGetMemoryWin32HandleNV = vkGetMemoryWin32HandleNV;\n    pAPI->vkImportSemaphoreWin32HandleKHR = vkImportSemaphoreWin32HandleKHR;\n    pAPI->vkGetSemaphoreWin32HandleKHR = vkGetSemaphoreWin32HandleKHR;\n    pAPI->vkImportFenceWin32HandleKHR = vkImportFenceWin32HandleKHR;\n    pAPI->vkGetFenceWin32HandleKHR = vkGetFenceWin32HandleKHR;\n    pAPI->vkGetPhysicalDeviceSurfacePresentModes2EXT = vkGetPhysicalDeviceSurfacePresentModes2EXT;\n    pAPI->vkAcquireFullScreenExclusiveModeEXT = vkAcquireFullScreenExclusiveModeEXT;\n    pAPI->vkReleaseFullScreenExclusiveModeEXT = vkReleaseFullScreenExclusiveModeEXT;\n    pAPI->vkGetDeviceGroupSurfacePresentModes2EXT = vkGetDeviceGroupSurfacePresentModes2EXT;\n    pAPI->vkAcquireWinrtDisplayNV = vkAcquireWinrtDisplayNV;\n    pAPI->vkGetWinrtDisplayNV = vkGetWinrtDisplayNV;\n#endif /*VK_USE_PLATFORM_WIN32_KHR*/\n#ifdef VK_USE_PLATFORM_VI_NN\n    pAPI->vkCreateViSurfaceNN = vkCreateViSurfaceNN;\n#endif /*VK_USE_PLATFORM_VI_NN*/\n#ifdef VK_USE_PLATFORM_IOS_MVK\n    pAPI->vkCreateIOSSurfaceMVK = vkCreateIOSSurfaceMVK;\n#endif /*VK_USE_PLATFORM_IOS_MVK*/\n#ifdef VK_USE_PLATFORM_MACOS_MVK\n    pAPI->vkCreateMacOSSurfaceMVK = vkCreateMacOSSurfaceMVK;\n#endif /*VK_USE_PLATFORM_MACOS_MVK*/\n#ifdef VK_USE_PLATFORM_METAL_EXT\n    pAPI->vkCreateMetalSurfaceEXT = vkCreateMetalSurfaceEXT;\n    pAPI->vkExportMetalObjectsEXT = vkExportMetalObjectsEXT;\n    pAPI->vkGetMemoryMetalHandleEXT = vkGetMemoryMetalHandleEXT;\n    pAPI->vkGetMemoryMetalHandlePropertiesEXT = vkGetMemoryMetalHandlePropertiesEXT;\n#endif /*VK_USE_PLATFORM_METAL_EXT*/\n#ifdef VK_USE_PLATFORM_FUCHSIA\n    pAPI->vkCreateImagePipeSurfaceFUCHSIA = vkCreateImagePipeSurfaceFUCHSIA;\n    pAPI->vkGetMemoryZirconHandleFUCHSIA = vkGetMemoryZirconHandleFUCHSIA;\n    pAPI->vkGetMemoryZirconHandlePropertiesFUCHSIA = vkGetMemoryZirconHandlePropertiesFUCHSIA;\n    pAPI->vkImportSemaphoreZirconHandleFUCHSIA = vkImportSemaphoreZirconHandleFUCHSIA;\n    pAPI->vkGetSemaphoreZirconHandleFUCHSIA = vkGetSemaphoreZirconHandleFUCHSIA;\n    pAPI->vkCreateBufferCollectionFUCHSIA = vkCreateBufferCollectionFUCHSIA;\n    pAPI->vkSetBufferCollectionImageConstraintsFUCHSIA = vkSetBufferCollectionImageConstraintsFUCHSIA;\n    pAPI->vkSetBufferCollectionBufferConstraintsFUCHSIA = vkSetBufferCollectionBufferConstraintsFUCHSIA;\n    pAPI->vkDestroyBufferCollectionFUCHSIA = vkDestroyBufferCollectionFUCHSIA;\n    pAPI->vkGetBufferCollectionPropertiesFUCHSIA = vkGetBufferCollectionPropertiesFUCHSIA;\n#endif /*VK_USE_PLATFORM_FUCHSIA*/\n#ifdef VK_USE_PLATFORM_GGP\n    pAPI->vkCreateStreamDescriptorSurfaceGGP = vkCreateStreamDescriptorSurfaceGGP;\n#endif /*VK_USE_PLATFORM_GGP*/\n#ifdef VK_USE_PLATFORM_SCI\n    pAPI->vkGetMemorySciBufNV = vkGetMemorySciBufNV;\n    pAPI->vkGetPhysicalDeviceExternalMemorySciBufPropertiesNV = vkGetPhysicalDeviceExternalMemorySciBufPropertiesNV;\n    pAPI->vkGetPhysicalDeviceSciBufAttributesNV = vkGetPhysicalDeviceSciBufAttributesNV;\n    pAPI->vkCreateSemaphoreSciSyncPoolNV = vkCreateSemaphoreSciSyncPoolNV;\n    pAPI->vkDestroySemaphoreSciSyncPoolNV = vkDestroySemaphoreSciSyncPoolNV;\n    pAPI->vkGetFenceSciSyncFenceNV = vkGetFenceSciSyncFenceNV;\n    pAPI->vkGetFenceSciSyncObjNV = vkGetFenceSciSyncObjNV;\n    pAPI->vkImportFenceSciSyncFenceNV = vkImportFenceSciSyncFenceNV;\n    pAPI->vkImportFenceSciSyncObjNV = vkImportFenceSciSyncObjNV;\n    pAPI->vkGetPhysicalDeviceSciSyncAttributesNV = vkGetPhysicalDeviceSciSyncAttributesNV;\n    pAPI->vkGetSemaphoreSciSyncObjNV = vkGetSemaphoreSciSyncObjNV;\n    pAPI->vkImportSemaphoreSciSyncObjNV = vkImportSemaphoreSciSyncObjNV;\n#endif /*VK_USE_PLATFORM_SCI*/\n#ifdef VK_ENABLE_BETA_EXTENSIONS\n    pAPI->vkCreateExecutionGraphPipelinesAMDX = vkCreateExecutionGraphPipelinesAMDX;\n    pAPI->vkGetExecutionGraphPipelineScratchSizeAMDX = vkGetExecutionGraphPipelineScratchSizeAMDX;\n    pAPI->vkGetExecutionGraphPipelineNodeIndexAMDX = vkGetExecutionGraphPipelineNodeIndexAMDX;\n    pAPI->vkCmdInitializeGraphScratchMemoryAMDX = vkCmdInitializeGraphScratchMemoryAMDX;\n    pAPI->vkCmdDispatchGraphAMDX = vkCmdDispatchGraphAMDX;\n    pAPI->vkCmdDispatchGraphIndirectAMDX = vkCmdDispatchGraphIndirectAMDX;\n    pAPI->vkCmdDispatchGraphIndirectCountAMDX = vkCmdDispatchGraphIndirectCountAMDX;\n    pAPI->vkCreateCudaModuleNV = vkCreateCudaModuleNV;\n    pAPI->vkGetCudaModuleCacheNV = vkGetCudaModuleCacheNV;\n    pAPI->vkCreateCudaFunctionNV = vkCreateCudaFunctionNV;\n    pAPI->vkDestroyCudaModuleNV = vkDestroyCudaModuleNV;\n    pAPI->vkDestroyCudaFunctionNV = vkDestroyCudaFunctionNV;\n    pAPI->vkCmdCudaLaunchKernelNV = vkCmdCudaLaunchKernelNV;\n#endif /*VK_ENABLE_BETA_EXTENSIONS*/\n#ifdef VK_USE_PLATFORM_SCREEN_QNX\n    pAPI->vkCreateScreenSurfaceQNX = vkCreateScreenSurfaceQNX;\n    pAPI->vkGetPhysicalDeviceScreenPresentationSupportQNX = vkGetPhysicalDeviceScreenPresentationSupportQNX;\n    pAPI->vkGetScreenBufferPropertiesQNX = vkGetScreenBufferPropertiesQNX;\n#endif /*VK_USE_PLATFORM_SCREEN_QNX*/\n#ifdef VK_USE_PLATFORM_OHOS\n    pAPI->vkGetNativeBufferPropertiesOHOS = vkGetNativeBufferPropertiesOHOS;\n    pAPI->vkGetMemoryNativeBufferOHOS = vkGetMemoryNativeBufferOHOS;\n    pAPI->vkCreateSurfaceOHOS = vkCreateSurfaceOHOS;\n#endif /*VK_USE_PLATFORM_OHOS*/\n}\n#endif /*VKBIND_NO_GLOBAL_API*/\n\nVkResult vkbInit(VkbAPI* pAPI)\n{\n    VkResult result;\n\n    /* If the Vulkan SO has not been loaded, do that first thing. */\n    if (g_vkbInitCount == 0) {\n        result = vkbLoadVulkanSO();\n        if (result != VK_SUCCESS) {\n            return result;\n        }\n    }\n\n    #if defined(VKBIND_NO_GLOBAL_API)\n    {\n        /* Getting here means the global API has been disabled. Therefore the caller *must* provide a VkbAPI object. */\n        if (pAPI == NULL) {\n            return VK_ERROR_INITIALIZATION_FAILED;\n        } else {\n            /* Since we don't have global function pointers we'll have to use dlsym() every time we initialize. */\n            result = vkbLoadVulkanSymbols(pAPI);\n            if (result != VK_SUCCESS) {\n                return result;\n            }\n        }\n    }\n    #else\n    {\n        if (pAPI == NULL) {\n            if (g_vkbInitCount == 0) {\n                VkbAPI api;\n                result = vkbInit(&api);\n                if (result != VK_SUCCESS) {\n                    return result;\n                }\n\n                /* The call to vkbInit() will have incremented the reference counter. Bring it back down since we're just going to increment it again later. */\n            } else {\n                /* The global API has already been bound. No need to do anything here. */\n            }\n        } else {\n            if (g_vkbInitCount == 0) {\n                result = vkbLoadVulkanSymbols(pAPI);\n                if (result != VK_SUCCESS) {\n                    return result;\n                }\n\n                result = vkbBindAPI(pAPI);\n                if (result != VK_SUCCESS) {\n                    return result;\n                }\n            } else {\n                /* The global API has already been bound. We need only retrieve the pointers from the globals. Using dlsym() would be too inefficient. */\n                vkbInitFromGlobalAPI(pAPI);\n            }\n        }\n    }\n    #endif\n\n    g_vkbInitCount += 1;    /* <-- Only increment the init counter on success. */\n    return VK_SUCCESS;\n}\n\nvoid vkbUninit(void)\n{\n    if (g_vkbInitCount == 0) {\n        return;\n    }\n\n    g_vkbInitCount -= 1;\n    if (g_vkbInitCount == 0) {\n        vkb_dlclose(g_vkbVulkanSO);\n        g_vkbVulkanSO = NULL;\n    }\n}\n\nVkResult vkbInitInstanceAPI(VkInstance instance, VkbAPI* pAPI)\n{\n    if (g_vkbInitCount == 0) {\n        return VK_ERROR_INITIALIZATION_FAILED;  /* vkbind not initialized. */\n    }\n\n    if (pAPI == NULL) {\n        return VK_ERROR_INITIALIZATION_FAILED;\n    }\n\n    /*\n    We need an instance of vkGetInstanceProcAddr(). If it's not available in pAPI we'll try pulling it\n    from global scope.\n    */\n    if (pAPI->vkGetInstanceProcAddr == NULL) {\n        #if !defined(VKBIND_NO_GLOBAL_API)\n        {\n            pAPI->vkGetInstanceProcAddr = vkGetInstanceProcAddr;\n        }\n        #endif\n    }\n\n    if (pAPI->vkGetInstanceProcAddr == NULL) {\n        return VK_ERROR_INITIALIZATION_FAILED;  /* We don't have a vkGetInstanceProcAddr(). We need to abort. */\n    }\n\n    pAPI->vkCreateInstance = (PFN_vkCreateInstance)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateInstance\");\n    pAPI->vkDestroyInstance = (PFN_vkDestroyInstance)pAPI->vkGetInstanceProcAddr(instance, \"vkDestroyInstance\");\n    pAPI->vkEnumeratePhysicalDevices = (PFN_vkEnumeratePhysicalDevices)pAPI->vkGetInstanceProcAddr(instance, \"vkEnumeratePhysicalDevices\");\n    pAPI->vkGetPhysicalDeviceFeatures = (PFN_vkGetPhysicalDeviceFeatures)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceFeatures\");\n    pAPI->vkGetPhysicalDeviceFormatProperties = (PFN_vkGetPhysicalDeviceFormatProperties)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceFormatProperties\");\n    pAPI->vkGetPhysicalDeviceImageFormatProperties = (PFN_vkGetPhysicalDeviceImageFormatProperties)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceImageFormatProperties\");\n    pAPI->vkGetPhysicalDeviceProperties = (PFN_vkGetPhysicalDeviceProperties)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceProperties\");\n    pAPI->vkGetPhysicalDeviceQueueFamilyProperties = (PFN_vkGetPhysicalDeviceQueueFamilyProperties)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceQueueFamilyProperties\");\n    pAPI->vkGetPhysicalDeviceMemoryProperties = (PFN_vkGetPhysicalDeviceMemoryProperties)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceMemoryProperties\");\n    pAPI->vkGetDeviceProcAddr = (PFN_vkGetDeviceProcAddr)pAPI->vkGetInstanceProcAddr(instance, \"vkGetDeviceProcAddr\");\n    pAPI->vkCreateDevice = (PFN_vkCreateDevice)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateDevice\");\n    pAPI->vkDestroyDevice = (PFN_vkDestroyDevice)pAPI->vkGetInstanceProcAddr(instance, \"vkDestroyDevice\");\n    pAPI->vkEnumerateInstanceExtensionProperties = (PFN_vkEnumerateInstanceExtensionProperties)pAPI->vkGetInstanceProcAddr(instance, \"vkEnumerateInstanceExtensionProperties\");\n    pAPI->vkEnumerateDeviceExtensionProperties = (PFN_vkEnumerateDeviceExtensionProperties)pAPI->vkGetInstanceProcAddr(instance, \"vkEnumerateDeviceExtensionProperties\");\n    pAPI->vkEnumerateInstanceLayerProperties = (PFN_vkEnumerateInstanceLayerProperties)pAPI->vkGetInstanceProcAddr(instance, \"vkEnumerateInstanceLayerProperties\");\n    pAPI->vkEnumerateDeviceLayerProperties = (PFN_vkEnumerateDeviceLayerProperties)pAPI->vkGetInstanceProcAddr(instance, \"vkEnumerateDeviceLayerProperties\");\n    pAPI->vkGetDeviceQueue = (PFN_vkGetDeviceQueue)pAPI->vkGetInstanceProcAddr(instance, \"vkGetDeviceQueue\");\n    pAPI->vkQueueSubmit = (PFN_vkQueueSubmit)pAPI->vkGetInstanceProcAddr(instance, \"vkQueueSubmit\");\n    pAPI->vkQueueWaitIdle = (PFN_vkQueueWaitIdle)pAPI->vkGetInstanceProcAddr(instance, \"vkQueueWaitIdle\");\n    pAPI->vkDeviceWaitIdle = (PFN_vkDeviceWaitIdle)pAPI->vkGetInstanceProcAddr(instance, \"vkDeviceWaitIdle\");\n    pAPI->vkAllocateMemory = (PFN_vkAllocateMemory)pAPI->vkGetInstanceProcAddr(instance, \"vkAllocateMemory\");\n    pAPI->vkFreeMemory = (PFN_vkFreeMemory)pAPI->vkGetInstanceProcAddr(instance, \"vkFreeMemory\");\n    pAPI->vkMapMemory = (PFN_vkMapMemory)pAPI->vkGetInstanceProcAddr(instance, \"vkMapMemory\");\n    pAPI->vkUnmapMemory = (PFN_vkUnmapMemory)pAPI->vkGetInstanceProcAddr(instance, \"vkUnmapMemory\");\n    pAPI->vkFlushMappedMemoryRanges = (PFN_vkFlushMappedMemoryRanges)pAPI->vkGetInstanceProcAddr(instance, \"vkFlushMappedMemoryRanges\");\n    pAPI->vkInvalidateMappedMemoryRanges = (PFN_vkInvalidateMappedMemoryRanges)pAPI->vkGetInstanceProcAddr(instance, \"vkInvalidateMappedMemoryRanges\");\n    pAPI->vkGetDeviceMemoryCommitment = (PFN_vkGetDeviceMemoryCommitment)pAPI->vkGetInstanceProcAddr(instance, \"vkGetDeviceMemoryCommitment\");\n    pAPI->vkBindBufferMemory = (PFN_vkBindBufferMemory)pAPI->vkGetInstanceProcAddr(instance, \"vkBindBufferMemory\");\n    pAPI->vkBindImageMemory = (PFN_vkBindImageMemory)pAPI->vkGetInstanceProcAddr(instance, \"vkBindImageMemory\");\n    pAPI->vkGetBufferMemoryRequirements = (PFN_vkGetBufferMemoryRequirements)pAPI->vkGetInstanceProcAddr(instance, \"vkGetBufferMemoryRequirements\");\n    pAPI->vkGetImageMemoryRequirements = (PFN_vkGetImageMemoryRequirements)pAPI->vkGetInstanceProcAddr(instance, \"vkGetImageMemoryRequirements\");\n    pAPI->vkGetImageSparseMemoryRequirements = (PFN_vkGetImageSparseMemoryRequirements)pAPI->vkGetInstanceProcAddr(instance, \"vkGetImageSparseMemoryRequirements\");\n    pAPI->vkGetPhysicalDeviceSparseImageFormatProperties = (PFN_vkGetPhysicalDeviceSparseImageFormatProperties)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceSparseImageFormatProperties\");\n    pAPI->vkQueueBindSparse = (PFN_vkQueueBindSparse)pAPI->vkGetInstanceProcAddr(instance, \"vkQueueBindSparse\");\n    pAPI->vkCreateFence = (PFN_vkCreateFence)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateFence\");\n    pAPI->vkDestroyFence = (PFN_vkDestroyFence)pAPI->vkGetInstanceProcAddr(instance, \"vkDestroyFence\");\n    pAPI->vkResetFences = (PFN_vkResetFences)pAPI->vkGetInstanceProcAddr(instance, \"vkResetFences\");\n    pAPI->vkGetFenceStatus = (PFN_vkGetFenceStatus)pAPI->vkGetInstanceProcAddr(instance, \"vkGetFenceStatus\");\n    pAPI->vkWaitForFences = (PFN_vkWaitForFences)pAPI->vkGetInstanceProcAddr(instance, \"vkWaitForFences\");\n    pAPI->vkCreateSemaphore = (PFN_vkCreateSemaphore)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateSemaphore\");\n    pAPI->vkDestroySemaphore = (PFN_vkDestroySemaphore)pAPI->vkGetInstanceProcAddr(instance, \"vkDestroySemaphore\");\n    pAPI->vkCreateQueryPool = (PFN_vkCreateQueryPool)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateQueryPool\");\n    pAPI->vkDestroyQueryPool = (PFN_vkDestroyQueryPool)pAPI->vkGetInstanceProcAddr(instance, \"vkDestroyQueryPool\");\n    pAPI->vkGetQueryPoolResults = (PFN_vkGetQueryPoolResults)pAPI->vkGetInstanceProcAddr(instance, \"vkGetQueryPoolResults\");\n    pAPI->vkCreateBuffer = (PFN_vkCreateBuffer)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateBuffer\");\n    pAPI->vkDestroyBuffer = (PFN_vkDestroyBuffer)pAPI->vkGetInstanceProcAddr(instance, \"vkDestroyBuffer\");\n    pAPI->vkCreateImage = (PFN_vkCreateImage)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateImage\");\n    pAPI->vkDestroyImage = (PFN_vkDestroyImage)pAPI->vkGetInstanceProcAddr(instance, \"vkDestroyImage\");\n    pAPI->vkGetImageSubresourceLayout = (PFN_vkGetImageSubresourceLayout)pAPI->vkGetInstanceProcAddr(instance, \"vkGetImageSubresourceLayout\");\n    pAPI->vkCreateImageView = (PFN_vkCreateImageView)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateImageView\");\n    pAPI->vkDestroyImageView = (PFN_vkDestroyImageView)pAPI->vkGetInstanceProcAddr(instance, \"vkDestroyImageView\");\n    pAPI->vkCreateCommandPool = (PFN_vkCreateCommandPool)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateCommandPool\");\n    pAPI->vkDestroyCommandPool = (PFN_vkDestroyCommandPool)pAPI->vkGetInstanceProcAddr(instance, \"vkDestroyCommandPool\");\n    pAPI->vkResetCommandPool = (PFN_vkResetCommandPool)pAPI->vkGetInstanceProcAddr(instance, \"vkResetCommandPool\");\n    pAPI->vkAllocateCommandBuffers = (PFN_vkAllocateCommandBuffers)pAPI->vkGetInstanceProcAddr(instance, \"vkAllocateCommandBuffers\");\n    pAPI->vkFreeCommandBuffers = (PFN_vkFreeCommandBuffers)pAPI->vkGetInstanceProcAddr(instance, \"vkFreeCommandBuffers\");\n    pAPI->vkBeginCommandBuffer = (PFN_vkBeginCommandBuffer)pAPI->vkGetInstanceProcAddr(instance, \"vkBeginCommandBuffer\");\n    pAPI->vkEndCommandBuffer = (PFN_vkEndCommandBuffer)pAPI->vkGetInstanceProcAddr(instance, \"vkEndCommandBuffer\");\n    pAPI->vkResetCommandBuffer = (PFN_vkResetCommandBuffer)pAPI->vkGetInstanceProcAddr(instance, \"vkResetCommandBuffer\");\n    pAPI->vkCmdCopyBuffer = (PFN_vkCmdCopyBuffer)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdCopyBuffer\");\n    pAPI->vkCmdCopyImage = (PFN_vkCmdCopyImage)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdCopyImage\");\n    pAPI->vkCmdCopyBufferToImage = (PFN_vkCmdCopyBufferToImage)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdCopyBufferToImage\");\n    pAPI->vkCmdCopyImageToBuffer = (PFN_vkCmdCopyImageToBuffer)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdCopyImageToBuffer\");\n    pAPI->vkCmdUpdateBuffer = (PFN_vkCmdUpdateBuffer)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdUpdateBuffer\");\n    pAPI->vkCmdFillBuffer = (PFN_vkCmdFillBuffer)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdFillBuffer\");\n    pAPI->vkCmdPipelineBarrier = (PFN_vkCmdPipelineBarrier)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdPipelineBarrier\");\n    pAPI->vkCmdBeginQuery = (PFN_vkCmdBeginQuery)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdBeginQuery\");\n    pAPI->vkCmdEndQuery = (PFN_vkCmdEndQuery)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdEndQuery\");\n    pAPI->vkCmdResetQueryPool = (PFN_vkCmdResetQueryPool)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdResetQueryPool\");\n    pAPI->vkCmdWriteTimestamp = (PFN_vkCmdWriteTimestamp)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdWriteTimestamp\");\n    pAPI->vkCmdCopyQueryPoolResults = (PFN_vkCmdCopyQueryPoolResults)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdCopyQueryPoolResults\");\n    pAPI->vkCmdExecuteCommands = (PFN_vkCmdExecuteCommands)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdExecuteCommands\");\n    pAPI->vkCreateEvent = (PFN_vkCreateEvent)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateEvent\");\n    pAPI->vkDestroyEvent = (PFN_vkDestroyEvent)pAPI->vkGetInstanceProcAddr(instance, \"vkDestroyEvent\");\n    pAPI->vkGetEventStatus = (PFN_vkGetEventStatus)pAPI->vkGetInstanceProcAddr(instance, \"vkGetEventStatus\");\n    pAPI->vkSetEvent = (PFN_vkSetEvent)pAPI->vkGetInstanceProcAddr(instance, \"vkSetEvent\");\n    pAPI->vkResetEvent = (PFN_vkResetEvent)pAPI->vkGetInstanceProcAddr(instance, \"vkResetEvent\");\n    pAPI->vkCreateBufferView = (PFN_vkCreateBufferView)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateBufferView\");\n    pAPI->vkDestroyBufferView = (PFN_vkDestroyBufferView)pAPI->vkGetInstanceProcAddr(instance, \"vkDestroyBufferView\");\n    pAPI->vkCreateShaderModule = (PFN_vkCreateShaderModule)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateShaderModule\");\n    pAPI->vkDestroyShaderModule = (PFN_vkDestroyShaderModule)pAPI->vkGetInstanceProcAddr(instance, \"vkDestroyShaderModule\");\n    pAPI->vkCreatePipelineCache = (PFN_vkCreatePipelineCache)pAPI->vkGetInstanceProcAddr(instance, \"vkCreatePipelineCache\");\n    pAPI->vkDestroyPipelineCache = (PFN_vkDestroyPipelineCache)pAPI->vkGetInstanceProcAddr(instance, \"vkDestroyPipelineCache\");\n    pAPI->vkGetPipelineCacheData = (PFN_vkGetPipelineCacheData)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPipelineCacheData\");\n    pAPI->vkMergePipelineCaches = (PFN_vkMergePipelineCaches)pAPI->vkGetInstanceProcAddr(instance, \"vkMergePipelineCaches\");\n    pAPI->vkCreateComputePipelines = (PFN_vkCreateComputePipelines)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateComputePipelines\");\n    pAPI->vkDestroyPipeline = (PFN_vkDestroyPipeline)pAPI->vkGetInstanceProcAddr(instance, \"vkDestroyPipeline\");\n    pAPI->vkCreatePipelineLayout = (PFN_vkCreatePipelineLayout)pAPI->vkGetInstanceProcAddr(instance, \"vkCreatePipelineLayout\");\n    pAPI->vkDestroyPipelineLayout = (PFN_vkDestroyPipelineLayout)pAPI->vkGetInstanceProcAddr(instance, \"vkDestroyPipelineLayout\");\n    pAPI->vkCreateSampler = (PFN_vkCreateSampler)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateSampler\");\n    pAPI->vkDestroySampler = (PFN_vkDestroySampler)pAPI->vkGetInstanceProcAddr(instance, \"vkDestroySampler\");\n    pAPI->vkCreateDescriptorSetLayout = (PFN_vkCreateDescriptorSetLayout)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateDescriptorSetLayout\");\n    pAPI->vkDestroyDescriptorSetLayout = (PFN_vkDestroyDescriptorSetLayout)pAPI->vkGetInstanceProcAddr(instance, \"vkDestroyDescriptorSetLayout\");\n    pAPI->vkCreateDescriptorPool = (PFN_vkCreateDescriptorPool)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateDescriptorPool\");\n    pAPI->vkDestroyDescriptorPool = (PFN_vkDestroyDescriptorPool)pAPI->vkGetInstanceProcAddr(instance, \"vkDestroyDescriptorPool\");\n    pAPI->vkResetDescriptorPool = (PFN_vkResetDescriptorPool)pAPI->vkGetInstanceProcAddr(instance, \"vkResetDescriptorPool\");\n    pAPI->vkAllocateDescriptorSets = (PFN_vkAllocateDescriptorSets)pAPI->vkGetInstanceProcAddr(instance, \"vkAllocateDescriptorSets\");\n    pAPI->vkFreeDescriptorSets = (PFN_vkFreeDescriptorSets)pAPI->vkGetInstanceProcAddr(instance, \"vkFreeDescriptorSets\");\n    pAPI->vkUpdateDescriptorSets = (PFN_vkUpdateDescriptorSets)pAPI->vkGetInstanceProcAddr(instance, \"vkUpdateDescriptorSets\");\n    pAPI->vkCmdBindPipeline = (PFN_vkCmdBindPipeline)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdBindPipeline\");\n    pAPI->vkCmdBindDescriptorSets = (PFN_vkCmdBindDescriptorSets)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdBindDescriptorSets\");\n    pAPI->vkCmdClearColorImage = (PFN_vkCmdClearColorImage)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdClearColorImage\");\n    pAPI->vkCmdDispatch = (PFN_vkCmdDispatch)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdDispatch\");\n    pAPI->vkCmdDispatchIndirect = (PFN_vkCmdDispatchIndirect)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdDispatchIndirect\");\n    pAPI->vkCmdSetEvent = (PFN_vkCmdSetEvent)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetEvent\");\n    pAPI->vkCmdResetEvent = (PFN_vkCmdResetEvent)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdResetEvent\");\n    pAPI->vkCmdWaitEvents = (PFN_vkCmdWaitEvents)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdWaitEvents\");\n    pAPI->vkCmdPushConstants = (PFN_vkCmdPushConstants)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdPushConstants\");\n    pAPI->vkCreateGraphicsPipelines = (PFN_vkCreateGraphicsPipelines)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateGraphicsPipelines\");\n    pAPI->vkCreateFramebuffer = (PFN_vkCreateFramebuffer)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateFramebuffer\");\n    pAPI->vkDestroyFramebuffer = (PFN_vkDestroyFramebuffer)pAPI->vkGetInstanceProcAddr(instance, \"vkDestroyFramebuffer\");\n    pAPI->vkCreateRenderPass = (PFN_vkCreateRenderPass)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateRenderPass\");\n    pAPI->vkDestroyRenderPass = (PFN_vkDestroyRenderPass)pAPI->vkGetInstanceProcAddr(instance, \"vkDestroyRenderPass\");\n    pAPI->vkGetRenderAreaGranularity = (PFN_vkGetRenderAreaGranularity)pAPI->vkGetInstanceProcAddr(instance, \"vkGetRenderAreaGranularity\");\n    pAPI->vkCmdSetViewport = (PFN_vkCmdSetViewport)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetViewport\");\n    pAPI->vkCmdSetScissor = (PFN_vkCmdSetScissor)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetScissor\");\n    pAPI->vkCmdSetLineWidth = (PFN_vkCmdSetLineWidth)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetLineWidth\");\n    pAPI->vkCmdSetDepthBias = (PFN_vkCmdSetDepthBias)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetDepthBias\");\n    pAPI->vkCmdSetBlendConstants = (PFN_vkCmdSetBlendConstants)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetBlendConstants\");\n    pAPI->vkCmdSetDepthBounds = (PFN_vkCmdSetDepthBounds)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetDepthBounds\");\n    pAPI->vkCmdSetStencilCompareMask = (PFN_vkCmdSetStencilCompareMask)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetStencilCompareMask\");\n    pAPI->vkCmdSetStencilWriteMask = (PFN_vkCmdSetStencilWriteMask)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetStencilWriteMask\");\n    pAPI->vkCmdSetStencilReference = (PFN_vkCmdSetStencilReference)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetStencilReference\");\n    pAPI->vkCmdBindIndexBuffer = (PFN_vkCmdBindIndexBuffer)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdBindIndexBuffer\");\n    pAPI->vkCmdBindVertexBuffers = (PFN_vkCmdBindVertexBuffers)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdBindVertexBuffers\");\n    pAPI->vkCmdDraw = (PFN_vkCmdDraw)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdDraw\");\n    pAPI->vkCmdDrawIndexed = (PFN_vkCmdDrawIndexed)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdDrawIndexed\");\n    pAPI->vkCmdDrawIndirect = (PFN_vkCmdDrawIndirect)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdDrawIndirect\");\n    pAPI->vkCmdDrawIndexedIndirect = (PFN_vkCmdDrawIndexedIndirect)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdDrawIndexedIndirect\");\n    pAPI->vkCmdBlitImage = (PFN_vkCmdBlitImage)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdBlitImage\");\n    pAPI->vkCmdClearDepthStencilImage = (PFN_vkCmdClearDepthStencilImage)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdClearDepthStencilImage\");\n    pAPI->vkCmdClearAttachments = (PFN_vkCmdClearAttachments)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdClearAttachments\");\n    pAPI->vkCmdResolveImage = (PFN_vkCmdResolveImage)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdResolveImage\");\n    pAPI->vkCmdBeginRenderPass = (PFN_vkCmdBeginRenderPass)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdBeginRenderPass\");\n    pAPI->vkCmdNextSubpass = (PFN_vkCmdNextSubpass)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdNextSubpass\");\n    pAPI->vkCmdEndRenderPass = (PFN_vkCmdEndRenderPass)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdEndRenderPass\");\n    pAPI->vkEnumerateInstanceVersion = (PFN_vkEnumerateInstanceVersion)pAPI->vkGetInstanceProcAddr(instance, \"vkEnumerateInstanceVersion\");\n    pAPI->vkBindBufferMemory2 = (PFN_vkBindBufferMemory2)pAPI->vkGetInstanceProcAddr(instance, \"vkBindBufferMemory2\");\n    pAPI->vkBindImageMemory2 = (PFN_vkBindImageMemory2)pAPI->vkGetInstanceProcAddr(instance, \"vkBindImageMemory2\");\n    pAPI->vkGetDeviceGroupPeerMemoryFeatures = (PFN_vkGetDeviceGroupPeerMemoryFeatures)pAPI->vkGetInstanceProcAddr(instance, \"vkGetDeviceGroupPeerMemoryFeatures\");\n    pAPI->vkCmdSetDeviceMask = (PFN_vkCmdSetDeviceMask)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetDeviceMask\");\n    pAPI->vkEnumeratePhysicalDeviceGroups = (PFN_vkEnumeratePhysicalDeviceGroups)pAPI->vkGetInstanceProcAddr(instance, \"vkEnumeratePhysicalDeviceGroups\");\n    pAPI->vkGetImageMemoryRequirements2 = (PFN_vkGetImageMemoryRequirements2)pAPI->vkGetInstanceProcAddr(instance, \"vkGetImageMemoryRequirements2\");\n    pAPI->vkGetBufferMemoryRequirements2 = (PFN_vkGetBufferMemoryRequirements2)pAPI->vkGetInstanceProcAddr(instance, \"vkGetBufferMemoryRequirements2\");\n    pAPI->vkGetImageSparseMemoryRequirements2 = (PFN_vkGetImageSparseMemoryRequirements2)pAPI->vkGetInstanceProcAddr(instance, \"vkGetImageSparseMemoryRequirements2\");\n    pAPI->vkGetPhysicalDeviceFeatures2 = (PFN_vkGetPhysicalDeviceFeatures2)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceFeatures2\");\n    pAPI->vkGetPhysicalDeviceProperties2 = (PFN_vkGetPhysicalDeviceProperties2)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceProperties2\");\n    pAPI->vkGetPhysicalDeviceFormatProperties2 = (PFN_vkGetPhysicalDeviceFormatProperties2)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceFormatProperties2\");\n    pAPI->vkGetPhysicalDeviceImageFormatProperties2 = (PFN_vkGetPhysicalDeviceImageFormatProperties2)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceImageFormatProperties2\");\n    pAPI->vkGetPhysicalDeviceQueueFamilyProperties2 = (PFN_vkGetPhysicalDeviceQueueFamilyProperties2)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceQueueFamilyProperties2\");\n    pAPI->vkGetPhysicalDeviceMemoryProperties2 = (PFN_vkGetPhysicalDeviceMemoryProperties2)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceMemoryProperties2\");\n    pAPI->vkGetPhysicalDeviceSparseImageFormatProperties2 = (PFN_vkGetPhysicalDeviceSparseImageFormatProperties2)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceSparseImageFormatProperties2\");\n    pAPI->vkTrimCommandPool = (PFN_vkTrimCommandPool)pAPI->vkGetInstanceProcAddr(instance, \"vkTrimCommandPool\");\n    pAPI->vkGetDeviceQueue2 = (PFN_vkGetDeviceQueue2)pAPI->vkGetInstanceProcAddr(instance, \"vkGetDeviceQueue2\");\n    pAPI->vkGetPhysicalDeviceExternalBufferProperties = (PFN_vkGetPhysicalDeviceExternalBufferProperties)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceExternalBufferProperties\");\n    pAPI->vkGetPhysicalDeviceExternalFenceProperties = (PFN_vkGetPhysicalDeviceExternalFenceProperties)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceExternalFenceProperties\");\n    pAPI->vkGetPhysicalDeviceExternalSemaphoreProperties = (PFN_vkGetPhysicalDeviceExternalSemaphoreProperties)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceExternalSemaphoreProperties\");\n    pAPI->vkCmdDispatchBase = (PFN_vkCmdDispatchBase)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdDispatchBase\");\n    pAPI->vkCreateDescriptorUpdateTemplate = (PFN_vkCreateDescriptorUpdateTemplate)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateDescriptorUpdateTemplate\");\n    pAPI->vkDestroyDescriptorUpdateTemplate = (PFN_vkDestroyDescriptorUpdateTemplate)pAPI->vkGetInstanceProcAddr(instance, \"vkDestroyDescriptorUpdateTemplate\");\n    pAPI->vkUpdateDescriptorSetWithTemplate = (PFN_vkUpdateDescriptorSetWithTemplate)pAPI->vkGetInstanceProcAddr(instance, \"vkUpdateDescriptorSetWithTemplate\");\n    pAPI->vkGetDescriptorSetLayoutSupport = (PFN_vkGetDescriptorSetLayoutSupport)pAPI->vkGetInstanceProcAddr(instance, \"vkGetDescriptorSetLayoutSupport\");\n    pAPI->vkCreateSamplerYcbcrConversion = (PFN_vkCreateSamplerYcbcrConversion)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateSamplerYcbcrConversion\");\n    pAPI->vkDestroySamplerYcbcrConversion = (PFN_vkDestroySamplerYcbcrConversion)pAPI->vkGetInstanceProcAddr(instance, \"vkDestroySamplerYcbcrConversion\");\n    pAPI->vkResetQueryPool = (PFN_vkResetQueryPool)pAPI->vkGetInstanceProcAddr(instance, \"vkResetQueryPool\");\n    pAPI->vkGetSemaphoreCounterValue = (PFN_vkGetSemaphoreCounterValue)pAPI->vkGetInstanceProcAddr(instance, \"vkGetSemaphoreCounterValue\");\n    pAPI->vkWaitSemaphores = (PFN_vkWaitSemaphores)pAPI->vkGetInstanceProcAddr(instance, \"vkWaitSemaphores\");\n    pAPI->vkSignalSemaphore = (PFN_vkSignalSemaphore)pAPI->vkGetInstanceProcAddr(instance, \"vkSignalSemaphore\");\n    pAPI->vkGetBufferDeviceAddress = (PFN_vkGetBufferDeviceAddress)pAPI->vkGetInstanceProcAddr(instance, \"vkGetBufferDeviceAddress\");\n    pAPI->vkGetBufferOpaqueCaptureAddress = (PFN_vkGetBufferOpaqueCaptureAddress)pAPI->vkGetInstanceProcAddr(instance, \"vkGetBufferOpaqueCaptureAddress\");\n    pAPI->vkGetDeviceMemoryOpaqueCaptureAddress = (PFN_vkGetDeviceMemoryOpaqueCaptureAddress)pAPI->vkGetInstanceProcAddr(instance, \"vkGetDeviceMemoryOpaqueCaptureAddress\");\n    pAPI->vkCmdDrawIndirectCount = (PFN_vkCmdDrawIndirectCount)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdDrawIndirectCount\");\n    pAPI->vkCmdDrawIndexedIndirectCount = (PFN_vkCmdDrawIndexedIndirectCount)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdDrawIndexedIndirectCount\");\n    pAPI->vkCreateRenderPass2 = (PFN_vkCreateRenderPass2)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateRenderPass2\");\n    pAPI->vkCmdBeginRenderPass2 = (PFN_vkCmdBeginRenderPass2)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdBeginRenderPass2\");\n    pAPI->vkCmdNextSubpass2 = (PFN_vkCmdNextSubpass2)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdNextSubpass2\");\n    pAPI->vkCmdEndRenderPass2 = (PFN_vkCmdEndRenderPass2)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdEndRenderPass2\");\n    pAPI->vkGetPhysicalDeviceToolProperties = (PFN_vkGetPhysicalDeviceToolProperties)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceToolProperties\");\n    pAPI->vkCreatePrivateDataSlot = (PFN_vkCreatePrivateDataSlot)pAPI->vkGetInstanceProcAddr(instance, \"vkCreatePrivateDataSlot\");\n    pAPI->vkDestroyPrivateDataSlot = (PFN_vkDestroyPrivateDataSlot)pAPI->vkGetInstanceProcAddr(instance, \"vkDestroyPrivateDataSlot\");\n    pAPI->vkSetPrivateData = (PFN_vkSetPrivateData)pAPI->vkGetInstanceProcAddr(instance, \"vkSetPrivateData\");\n    pAPI->vkGetPrivateData = (PFN_vkGetPrivateData)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPrivateData\");\n    pAPI->vkCmdPipelineBarrier2 = (PFN_vkCmdPipelineBarrier2)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdPipelineBarrier2\");\n    pAPI->vkCmdWriteTimestamp2 = (PFN_vkCmdWriteTimestamp2)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdWriteTimestamp2\");\n    pAPI->vkQueueSubmit2 = (PFN_vkQueueSubmit2)pAPI->vkGetInstanceProcAddr(instance, \"vkQueueSubmit2\");\n    pAPI->vkCmdCopyBuffer2 = (PFN_vkCmdCopyBuffer2)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdCopyBuffer2\");\n    pAPI->vkCmdCopyImage2 = (PFN_vkCmdCopyImage2)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdCopyImage2\");\n    pAPI->vkCmdCopyBufferToImage2 = (PFN_vkCmdCopyBufferToImage2)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdCopyBufferToImage2\");\n    pAPI->vkCmdCopyImageToBuffer2 = (PFN_vkCmdCopyImageToBuffer2)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdCopyImageToBuffer2\");\n    pAPI->vkGetDeviceBufferMemoryRequirements = (PFN_vkGetDeviceBufferMemoryRequirements)pAPI->vkGetInstanceProcAddr(instance, \"vkGetDeviceBufferMemoryRequirements\");\n    pAPI->vkGetDeviceImageMemoryRequirements = (PFN_vkGetDeviceImageMemoryRequirements)pAPI->vkGetInstanceProcAddr(instance, \"vkGetDeviceImageMemoryRequirements\");\n    pAPI->vkGetDeviceImageSparseMemoryRequirements = (PFN_vkGetDeviceImageSparseMemoryRequirements)pAPI->vkGetInstanceProcAddr(instance, \"vkGetDeviceImageSparseMemoryRequirements\");\n    pAPI->vkCmdSetEvent2 = (PFN_vkCmdSetEvent2)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetEvent2\");\n    pAPI->vkCmdResetEvent2 = (PFN_vkCmdResetEvent2)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdResetEvent2\");\n    pAPI->vkCmdWaitEvents2 = (PFN_vkCmdWaitEvents2)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdWaitEvents2\");\n    pAPI->vkCmdBlitImage2 = (PFN_vkCmdBlitImage2)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdBlitImage2\");\n    pAPI->vkCmdResolveImage2 = (PFN_vkCmdResolveImage2)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdResolveImage2\");\n    pAPI->vkCmdBeginRendering = (PFN_vkCmdBeginRendering)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdBeginRendering\");\n    pAPI->vkCmdEndRendering = (PFN_vkCmdEndRendering)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdEndRendering\");\n    pAPI->vkCmdSetCullMode = (PFN_vkCmdSetCullMode)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetCullMode\");\n    pAPI->vkCmdSetFrontFace = (PFN_vkCmdSetFrontFace)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetFrontFace\");\n    pAPI->vkCmdSetPrimitiveTopology = (PFN_vkCmdSetPrimitiveTopology)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetPrimitiveTopology\");\n    pAPI->vkCmdSetViewportWithCount = (PFN_vkCmdSetViewportWithCount)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetViewportWithCount\");\n    pAPI->vkCmdSetScissorWithCount = (PFN_vkCmdSetScissorWithCount)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetScissorWithCount\");\n    pAPI->vkCmdBindVertexBuffers2 = (PFN_vkCmdBindVertexBuffers2)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdBindVertexBuffers2\");\n    pAPI->vkCmdSetDepthTestEnable = (PFN_vkCmdSetDepthTestEnable)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetDepthTestEnable\");\n    pAPI->vkCmdSetDepthWriteEnable = (PFN_vkCmdSetDepthWriteEnable)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetDepthWriteEnable\");\n    pAPI->vkCmdSetDepthCompareOp = (PFN_vkCmdSetDepthCompareOp)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetDepthCompareOp\");\n    pAPI->vkCmdSetDepthBoundsTestEnable = (PFN_vkCmdSetDepthBoundsTestEnable)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetDepthBoundsTestEnable\");\n    pAPI->vkCmdSetStencilTestEnable = (PFN_vkCmdSetStencilTestEnable)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetStencilTestEnable\");\n    pAPI->vkCmdSetStencilOp = (PFN_vkCmdSetStencilOp)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetStencilOp\");\n    pAPI->vkCmdSetRasterizerDiscardEnable = (PFN_vkCmdSetRasterizerDiscardEnable)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetRasterizerDiscardEnable\");\n    pAPI->vkCmdSetDepthBiasEnable = (PFN_vkCmdSetDepthBiasEnable)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetDepthBiasEnable\");\n    pAPI->vkCmdSetPrimitiveRestartEnable = (PFN_vkCmdSetPrimitiveRestartEnable)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetPrimitiveRestartEnable\");\n    pAPI->vkMapMemory2 = (PFN_vkMapMemory2)pAPI->vkGetInstanceProcAddr(instance, \"vkMapMemory2\");\n    pAPI->vkUnmapMemory2 = (PFN_vkUnmapMemory2)pAPI->vkGetInstanceProcAddr(instance, \"vkUnmapMemory2\");\n    pAPI->vkGetDeviceImageSubresourceLayout = (PFN_vkGetDeviceImageSubresourceLayout)pAPI->vkGetInstanceProcAddr(instance, \"vkGetDeviceImageSubresourceLayout\");\n    pAPI->vkGetImageSubresourceLayout2 = (PFN_vkGetImageSubresourceLayout2)pAPI->vkGetInstanceProcAddr(instance, \"vkGetImageSubresourceLayout2\");\n    pAPI->vkCopyMemoryToImage = (PFN_vkCopyMemoryToImage)pAPI->vkGetInstanceProcAddr(instance, \"vkCopyMemoryToImage\");\n    pAPI->vkCopyImageToMemory = (PFN_vkCopyImageToMemory)pAPI->vkGetInstanceProcAddr(instance, \"vkCopyImageToMemory\");\n    pAPI->vkCopyImageToImage = (PFN_vkCopyImageToImage)pAPI->vkGetInstanceProcAddr(instance, \"vkCopyImageToImage\");\n    pAPI->vkTransitionImageLayout = (PFN_vkTransitionImageLayout)pAPI->vkGetInstanceProcAddr(instance, \"vkTransitionImageLayout\");\n    pAPI->vkCmdPushDescriptorSet = (PFN_vkCmdPushDescriptorSet)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdPushDescriptorSet\");\n    pAPI->vkCmdPushDescriptorSetWithTemplate = (PFN_vkCmdPushDescriptorSetWithTemplate)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdPushDescriptorSetWithTemplate\");\n    pAPI->vkCmdBindDescriptorSets2 = (PFN_vkCmdBindDescriptorSets2)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdBindDescriptorSets2\");\n    pAPI->vkCmdPushConstants2 = (PFN_vkCmdPushConstants2)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdPushConstants2\");\n    pAPI->vkCmdPushDescriptorSet2 = (PFN_vkCmdPushDescriptorSet2)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdPushDescriptorSet2\");\n    pAPI->vkCmdPushDescriptorSetWithTemplate2 = (PFN_vkCmdPushDescriptorSetWithTemplate2)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdPushDescriptorSetWithTemplate2\");\n    pAPI->vkCmdSetLineStipple = (PFN_vkCmdSetLineStipple)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetLineStipple\");\n    pAPI->vkCmdBindIndexBuffer2 = (PFN_vkCmdBindIndexBuffer2)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdBindIndexBuffer2\");\n    pAPI->vkGetRenderingAreaGranularity = (PFN_vkGetRenderingAreaGranularity)pAPI->vkGetInstanceProcAddr(instance, \"vkGetRenderingAreaGranularity\");\n    pAPI->vkCmdSetRenderingAttachmentLocations = (PFN_vkCmdSetRenderingAttachmentLocations)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetRenderingAttachmentLocations\");\n    pAPI->vkCmdSetRenderingInputAttachmentIndices = (PFN_vkCmdSetRenderingInputAttachmentIndices)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetRenderingInputAttachmentIndices\");\n    pAPI->vkGetCommandPoolMemoryConsumption = (PFN_vkGetCommandPoolMemoryConsumption)pAPI->vkGetInstanceProcAddr(instance, \"vkGetCommandPoolMemoryConsumption\");\n    pAPI->vkGetFaultData = (PFN_vkGetFaultData)pAPI->vkGetInstanceProcAddr(instance, \"vkGetFaultData\");\n    pAPI->vkDestroySurfaceKHR = (PFN_vkDestroySurfaceKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkDestroySurfaceKHR\");\n    pAPI->vkGetPhysicalDeviceSurfaceSupportKHR = (PFN_vkGetPhysicalDeviceSurfaceSupportKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceSurfaceSupportKHR\");\n    pAPI->vkGetPhysicalDeviceSurfaceCapabilitiesKHR = (PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceSurfaceCapabilitiesKHR\");\n    pAPI->vkGetPhysicalDeviceSurfaceFormatsKHR = (PFN_vkGetPhysicalDeviceSurfaceFormatsKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceSurfaceFormatsKHR\");\n    pAPI->vkGetPhysicalDeviceSurfacePresentModesKHR = (PFN_vkGetPhysicalDeviceSurfacePresentModesKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceSurfacePresentModesKHR\");\n    pAPI->vkCreateSwapchainKHR = (PFN_vkCreateSwapchainKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateSwapchainKHR\");\n    pAPI->vkDestroySwapchainKHR = (PFN_vkDestroySwapchainKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkDestroySwapchainKHR\");\n    pAPI->vkGetSwapchainImagesKHR = (PFN_vkGetSwapchainImagesKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetSwapchainImagesKHR\");\n    pAPI->vkAcquireNextImageKHR = (PFN_vkAcquireNextImageKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkAcquireNextImageKHR\");\n    pAPI->vkQueuePresentKHR = (PFN_vkQueuePresentKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkQueuePresentKHR\");\n    pAPI->vkGetDeviceGroupPresentCapabilitiesKHR = (PFN_vkGetDeviceGroupPresentCapabilitiesKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetDeviceGroupPresentCapabilitiesKHR\");\n    pAPI->vkGetDeviceGroupSurfacePresentModesKHR = (PFN_vkGetDeviceGroupSurfacePresentModesKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetDeviceGroupSurfacePresentModesKHR\");\n    pAPI->vkGetPhysicalDevicePresentRectanglesKHR = (PFN_vkGetPhysicalDevicePresentRectanglesKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDevicePresentRectanglesKHR\");\n    pAPI->vkAcquireNextImage2KHR = (PFN_vkAcquireNextImage2KHR)pAPI->vkGetInstanceProcAddr(instance, \"vkAcquireNextImage2KHR\");\n    pAPI->vkGetPhysicalDeviceDisplayPropertiesKHR = (PFN_vkGetPhysicalDeviceDisplayPropertiesKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceDisplayPropertiesKHR\");\n    pAPI->vkGetPhysicalDeviceDisplayPlanePropertiesKHR = (PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceDisplayPlanePropertiesKHR\");\n    pAPI->vkGetDisplayPlaneSupportedDisplaysKHR = (PFN_vkGetDisplayPlaneSupportedDisplaysKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetDisplayPlaneSupportedDisplaysKHR\");\n    pAPI->vkGetDisplayModePropertiesKHR = (PFN_vkGetDisplayModePropertiesKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetDisplayModePropertiesKHR\");\n    pAPI->vkCreateDisplayModeKHR = (PFN_vkCreateDisplayModeKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateDisplayModeKHR\");\n    pAPI->vkGetDisplayPlaneCapabilitiesKHR = (PFN_vkGetDisplayPlaneCapabilitiesKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetDisplayPlaneCapabilitiesKHR\");\n    pAPI->vkCreateDisplayPlaneSurfaceKHR = (PFN_vkCreateDisplayPlaneSurfaceKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateDisplayPlaneSurfaceKHR\");\n    pAPI->vkCreateSharedSwapchainsKHR = (PFN_vkCreateSharedSwapchainsKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateSharedSwapchainsKHR\");\n    pAPI->vkGetPhysicalDeviceVideoCapabilitiesKHR = (PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceVideoCapabilitiesKHR\");\n    pAPI->vkGetPhysicalDeviceVideoFormatPropertiesKHR = (PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceVideoFormatPropertiesKHR\");\n    pAPI->vkCreateVideoSessionKHR = (PFN_vkCreateVideoSessionKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateVideoSessionKHR\");\n    pAPI->vkDestroyVideoSessionKHR = (PFN_vkDestroyVideoSessionKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkDestroyVideoSessionKHR\");\n    pAPI->vkGetVideoSessionMemoryRequirementsKHR = (PFN_vkGetVideoSessionMemoryRequirementsKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetVideoSessionMemoryRequirementsKHR\");\n    pAPI->vkBindVideoSessionMemoryKHR = (PFN_vkBindVideoSessionMemoryKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkBindVideoSessionMemoryKHR\");\n    pAPI->vkCreateVideoSessionParametersKHR = (PFN_vkCreateVideoSessionParametersKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateVideoSessionParametersKHR\");\n    pAPI->vkUpdateVideoSessionParametersKHR = (PFN_vkUpdateVideoSessionParametersKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkUpdateVideoSessionParametersKHR\");\n    pAPI->vkDestroyVideoSessionParametersKHR = (PFN_vkDestroyVideoSessionParametersKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkDestroyVideoSessionParametersKHR\");\n    pAPI->vkCmdBeginVideoCodingKHR = (PFN_vkCmdBeginVideoCodingKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdBeginVideoCodingKHR\");\n    pAPI->vkCmdEndVideoCodingKHR = (PFN_vkCmdEndVideoCodingKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdEndVideoCodingKHR\");\n    pAPI->vkCmdControlVideoCodingKHR = (PFN_vkCmdControlVideoCodingKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdControlVideoCodingKHR\");\n    pAPI->vkCmdDecodeVideoKHR = (PFN_vkCmdDecodeVideoKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdDecodeVideoKHR\");\n    pAPI->vkCmdBindTransformFeedbackBuffersEXT = (PFN_vkCmdBindTransformFeedbackBuffersEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdBindTransformFeedbackBuffersEXT\");\n    pAPI->vkCmdBeginTransformFeedbackEXT = (PFN_vkCmdBeginTransformFeedbackEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdBeginTransformFeedbackEXT\");\n    pAPI->vkCmdEndTransformFeedbackEXT = (PFN_vkCmdEndTransformFeedbackEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdEndTransformFeedbackEXT\");\n    pAPI->vkCmdBeginQueryIndexedEXT = (PFN_vkCmdBeginQueryIndexedEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdBeginQueryIndexedEXT\");\n    pAPI->vkCmdEndQueryIndexedEXT = (PFN_vkCmdEndQueryIndexedEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdEndQueryIndexedEXT\");\n    pAPI->vkCmdDrawIndirectByteCountEXT = (PFN_vkCmdDrawIndirectByteCountEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdDrawIndirectByteCountEXT\");\n    pAPI->vkCreateCuModuleNVX = (PFN_vkCreateCuModuleNVX)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateCuModuleNVX\");\n    pAPI->vkCreateCuFunctionNVX = (PFN_vkCreateCuFunctionNVX)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateCuFunctionNVX\");\n    pAPI->vkDestroyCuModuleNVX = (PFN_vkDestroyCuModuleNVX)pAPI->vkGetInstanceProcAddr(instance, \"vkDestroyCuModuleNVX\");\n    pAPI->vkDestroyCuFunctionNVX = (PFN_vkDestroyCuFunctionNVX)pAPI->vkGetInstanceProcAddr(instance, \"vkDestroyCuFunctionNVX\");\n    pAPI->vkCmdCuLaunchKernelNVX = (PFN_vkCmdCuLaunchKernelNVX)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdCuLaunchKernelNVX\");\n    pAPI->vkGetImageViewHandleNVX = (PFN_vkGetImageViewHandleNVX)pAPI->vkGetInstanceProcAddr(instance, \"vkGetImageViewHandleNVX\");\n    pAPI->vkGetImageViewHandle64NVX = (PFN_vkGetImageViewHandle64NVX)pAPI->vkGetInstanceProcAddr(instance, \"vkGetImageViewHandle64NVX\");\n    pAPI->vkGetImageViewAddressNVX = (PFN_vkGetImageViewAddressNVX)pAPI->vkGetInstanceProcAddr(instance, \"vkGetImageViewAddressNVX\");\n    pAPI->vkGetDeviceCombinedImageSamplerIndexNVX = (PFN_vkGetDeviceCombinedImageSamplerIndexNVX)pAPI->vkGetInstanceProcAddr(instance, \"vkGetDeviceCombinedImageSamplerIndexNVX\");\n    pAPI->vkGetShaderInfoAMD = (PFN_vkGetShaderInfoAMD)pAPI->vkGetInstanceProcAddr(instance, \"vkGetShaderInfoAMD\");\n    pAPI->vkCmdBeginRenderingKHR = (PFN_vkCmdBeginRenderingKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdBeginRenderingKHR\");\n    pAPI->vkCmdEndRenderingKHR = (PFN_vkCmdEndRenderingKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdEndRenderingKHR\");\n    pAPI->vkGetPhysicalDeviceFeatures2KHR = (PFN_vkGetPhysicalDeviceFeatures2KHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceFeatures2KHR\");\n    pAPI->vkGetPhysicalDeviceProperties2KHR = (PFN_vkGetPhysicalDeviceProperties2KHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceProperties2KHR\");\n    pAPI->vkGetPhysicalDeviceFormatProperties2KHR = (PFN_vkGetPhysicalDeviceFormatProperties2KHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceFormatProperties2KHR\");\n    pAPI->vkGetPhysicalDeviceImageFormatProperties2KHR = (PFN_vkGetPhysicalDeviceImageFormatProperties2KHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceImageFormatProperties2KHR\");\n    pAPI->vkGetPhysicalDeviceQueueFamilyProperties2KHR = (PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceQueueFamilyProperties2KHR\");\n    pAPI->vkGetPhysicalDeviceMemoryProperties2KHR = (PFN_vkGetPhysicalDeviceMemoryProperties2KHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceMemoryProperties2KHR\");\n    pAPI->vkGetPhysicalDeviceSparseImageFormatProperties2KHR = (PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceSparseImageFormatProperties2KHR\");\n    pAPI->vkGetDeviceGroupPeerMemoryFeaturesKHR = (PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetDeviceGroupPeerMemoryFeaturesKHR\");\n    pAPI->vkCmdSetDeviceMaskKHR = (PFN_vkCmdSetDeviceMaskKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetDeviceMaskKHR\");\n    pAPI->vkCmdDispatchBaseKHR = (PFN_vkCmdDispatchBaseKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdDispatchBaseKHR\");\n    pAPI->vkTrimCommandPoolKHR = (PFN_vkTrimCommandPoolKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkTrimCommandPoolKHR\");\n    pAPI->vkEnumeratePhysicalDeviceGroupsKHR = (PFN_vkEnumeratePhysicalDeviceGroupsKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkEnumeratePhysicalDeviceGroupsKHR\");\n    pAPI->vkGetPhysicalDeviceExternalBufferPropertiesKHR = (PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceExternalBufferPropertiesKHR\");\n    pAPI->vkGetPhysicalDeviceExternalImageFormatPropertiesNV = (PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceExternalImageFormatPropertiesNV\");\n    pAPI->vkGetMemoryFdKHR = (PFN_vkGetMemoryFdKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetMemoryFdKHR\");\n    pAPI->vkGetMemoryFdPropertiesKHR = (PFN_vkGetMemoryFdPropertiesKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetMemoryFdPropertiesKHR\");\n    pAPI->vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = (PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceExternalSemaphorePropertiesKHR\");\n    pAPI->vkImportSemaphoreFdKHR = (PFN_vkImportSemaphoreFdKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkImportSemaphoreFdKHR\");\n    pAPI->vkGetSemaphoreFdKHR = (PFN_vkGetSemaphoreFdKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetSemaphoreFdKHR\");\n    pAPI->vkCmdPushDescriptorSetKHR = (PFN_vkCmdPushDescriptorSetKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdPushDescriptorSetKHR\");\n    pAPI->vkCmdPushDescriptorSetWithTemplateKHR = (PFN_vkCmdPushDescriptorSetWithTemplateKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdPushDescriptorSetWithTemplateKHR\");\n    pAPI->vkCmdBeginConditionalRenderingEXT = (PFN_vkCmdBeginConditionalRenderingEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdBeginConditionalRenderingEXT\");\n    pAPI->vkCmdEndConditionalRenderingEXT = (PFN_vkCmdEndConditionalRenderingEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdEndConditionalRenderingEXT\");\n    pAPI->vkCreateDescriptorUpdateTemplateKHR = (PFN_vkCreateDescriptorUpdateTemplateKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateDescriptorUpdateTemplateKHR\");\n    pAPI->vkDestroyDescriptorUpdateTemplateKHR = (PFN_vkDestroyDescriptorUpdateTemplateKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkDestroyDescriptorUpdateTemplateKHR\");\n    pAPI->vkUpdateDescriptorSetWithTemplateKHR = (PFN_vkUpdateDescriptorSetWithTemplateKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkUpdateDescriptorSetWithTemplateKHR\");\n    pAPI->vkCmdSetViewportWScalingNV = (PFN_vkCmdSetViewportWScalingNV)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetViewportWScalingNV\");\n    pAPI->vkReleaseDisplayEXT = (PFN_vkReleaseDisplayEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkReleaseDisplayEXT\");\n    pAPI->vkGetPhysicalDeviceSurfaceCapabilities2EXT = (PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceSurfaceCapabilities2EXT\");\n    pAPI->vkDisplayPowerControlEXT = (PFN_vkDisplayPowerControlEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkDisplayPowerControlEXT\");\n    pAPI->vkRegisterDeviceEventEXT = (PFN_vkRegisterDeviceEventEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkRegisterDeviceEventEXT\");\n    pAPI->vkRegisterDisplayEventEXT = (PFN_vkRegisterDisplayEventEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkRegisterDisplayEventEXT\");\n    pAPI->vkGetSwapchainCounterEXT = (PFN_vkGetSwapchainCounterEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkGetSwapchainCounterEXT\");\n    pAPI->vkGetRefreshCycleDurationGOOGLE = (PFN_vkGetRefreshCycleDurationGOOGLE)pAPI->vkGetInstanceProcAddr(instance, \"vkGetRefreshCycleDurationGOOGLE\");\n    pAPI->vkGetPastPresentationTimingGOOGLE = (PFN_vkGetPastPresentationTimingGOOGLE)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPastPresentationTimingGOOGLE\");\n    pAPI->vkCmdSetDiscardRectangleEXT = (PFN_vkCmdSetDiscardRectangleEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetDiscardRectangleEXT\");\n    pAPI->vkCmdSetDiscardRectangleEnableEXT = (PFN_vkCmdSetDiscardRectangleEnableEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetDiscardRectangleEnableEXT\");\n    pAPI->vkCmdSetDiscardRectangleModeEXT = (PFN_vkCmdSetDiscardRectangleModeEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetDiscardRectangleModeEXT\");\n    pAPI->vkSetHdrMetadataEXT = (PFN_vkSetHdrMetadataEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkSetHdrMetadataEXT\");\n    pAPI->vkCreateRenderPass2KHR = (PFN_vkCreateRenderPass2KHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateRenderPass2KHR\");\n    pAPI->vkCmdBeginRenderPass2KHR = (PFN_vkCmdBeginRenderPass2KHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdBeginRenderPass2KHR\");\n    pAPI->vkCmdNextSubpass2KHR = (PFN_vkCmdNextSubpass2KHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdNextSubpass2KHR\");\n    pAPI->vkCmdEndRenderPass2KHR = (PFN_vkCmdEndRenderPass2KHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdEndRenderPass2KHR\");\n    pAPI->vkGetSwapchainStatusKHR = (PFN_vkGetSwapchainStatusKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetSwapchainStatusKHR\");\n    pAPI->vkGetPhysicalDeviceExternalFencePropertiesKHR = (PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceExternalFencePropertiesKHR\");\n    pAPI->vkImportFenceFdKHR = (PFN_vkImportFenceFdKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkImportFenceFdKHR\");\n    pAPI->vkGetFenceFdKHR = (PFN_vkGetFenceFdKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetFenceFdKHR\");\n    pAPI->vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = (PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR\");\n    pAPI->vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = (PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR\");\n    pAPI->vkAcquireProfilingLockKHR = (PFN_vkAcquireProfilingLockKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkAcquireProfilingLockKHR\");\n    pAPI->vkReleaseProfilingLockKHR = (PFN_vkReleaseProfilingLockKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkReleaseProfilingLockKHR\");\n    pAPI->vkGetPhysicalDeviceSurfaceCapabilities2KHR = (PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceSurfaceCapabilities2KHR\");\n    pAPI->vkGetPhysicalDeviceSurfaceFormats2KHR = (PFN_vkGetPhysicalDeviceSurfaceFormats2KHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceSurfaceFormats2KHR\");\n    pAPI->vkGetPhysicalDeviceDisplayProperties2KHR = (PFN_vkGetPhysicalDeviceDisplayProperties2KHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceDisplayProperties2KHR\");\n    pAPI->vkGetPhysicalDeviceDisplayPlaneProperties2KHR = (PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceDisplayPlaneProperties2KHR\");\n    pAPI->vkGetDisplayModeProperties2KHR = (PFN_vkGetDisplayModeProperties2KHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetDisplayModeProperties2KHR\");\n    pAPI->vkGetDisplayPlaneCapabilities2KHR = (PFN_vkGetDisplayPlaneCapabilities2KHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetDisplayPlaneCapabilities2KHR\");\n    pAPI->vkSetDebugUtilsObjectNameEXT = (PFN_vkSetDebugUtilsObjectNameEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkSetDebugUtilsObjectNameEXT\");\n    pAPI->vkSetDebugUtilsObjectTagEXT = (PFN_vkSetDebugUtilsObjectTagEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkSetDebugUtilsObjectTagEXT\");\n    pAPI->vkQueueBeginDebugUtilsLabelEXT = (PFN_vkQueueBeginDebugUtilsLabelEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkQueueBeginDebugUtilsLabelEXT\");\n    pAPI->vkQueueEndDebugUtilsLabelEXT = (PFN_vkQueueEndDebugUtilsLabelEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkQueueEndDebugUtilsLabelEXT\");\n    pAPI->vkQueueInsertDebugUtilsLabelEXT = (PFN_vkQueueInsertDebugUtilsLabelEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkQueueInsertDebugUtilsLabelEXT\");\n    pAPI->vkCmdBeginDebugUtilsLabelEXT = (PFN_vkCmdBeginDebugUtilsLabelEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdBeginDebugUtilsLabelEXT\");\n    pAPI->vkCmdEndDebugUtilsLabelEXT = (PFN_vkCmdEndDebugUtilsLabelEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdEndDebugUtilsLabelEXT\");\n    pAPI->vkCmdInsertDebugUtilsLabelEXT = (PFN_vkCmdInsertDebugUtilsLabelEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdInsertDebugUtilsLabelEXT\");\n    pAPI->vkCreateDebugUtilsMessengerEXT = (PFN_vkCreateDebugUtilsMessengerEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateDebugUtilsMessengerEXT\");\n    pAPI->vkDestroyDebugUtilsMessengerEXT = (PFN_vkDestroyDebugUtilsMessengerEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkDestroyDebugUtilsMessengerEXT\");\n    pAPI->vkSubmitDebugUtilsMessageEXT = (PFN_vkSubmitDebugUtilsMessageEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkSubmitDebugUtilsMessageEXT\");\n    pAPI->vkDebugMarkerSetObjectTagEXT = (PFN_vkDebugMarkerSetObjectTagEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkDebugMarkerSetObjectTagEXT\");\n    pAPI->vkDebugMarkerSetObjectNameEXT = (PFN_vkDebugMarkerSetObjectNameEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkDebugMarkerSetObjectNameEXT\");\n    pAPI->vkCmdDebugMarkerBeginEXT = (PFN_vkCmdDebugMarkerBeginEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdDebugMarkerBeginEXT\");\n    pAPI->vkCmdDebugMarkerEndEXT = (PFN_vkCmdDebugMarkerEndEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdDebugMarkerEndEXT\");\n    pAPI->vkCmdDebugMarkerInsertEXT = (PFN_vkCmdDebugMarkerInsertEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdDebugMarkerInsertEXT\");\n    pAPI->vkCreateDebugReportCallbackEXT = (PFN_vkCreateDebugReportCallbackEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateDebugReportCallbackEXT\");\n    pAPI->vkDestroyDebugReportCallbackEXT = (PFN_vkDestroyDebugReportCallbackEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkDestroyDebugReportCallbackEXT\");\n    pAPI->vkDebugReportMessageEXT = (PFN_vkDebugReportMessageEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkDebugReportMessageEXT\");\n    pAPI->vkWriteSamplerDescriptorsEXT = (PFN_vkWriteSamplerDescriptorsEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkWriteSamplerDescriptorsEXT\");\n    pAPI->vkWriteResourceDescriptorsEXT = (PFN_vkWriteResourceDescriptorsEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkWriteResourceDescriptorsEXT\");\n    pAPI->vkCmdBindSamplerHeapEXT = (PFN_vkCmdBindSamplerHeapEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdBindSamplerHeapEXT\");\n    pAPI->vkCmdBindResourceHeapEXT = (PFN_vkCmdBindResourceHeapEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdBindResourceHeapEXT\");\n    pAPI->vkCmdPushDataEXT = (PFN_vkCmdPushDataEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdPushDataEXT\");\n    pAPI->vkGetImageOpaqueCaptureDataEXT = (PFN_vkGetImageOpaqueCaptureDataEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkGetImageOpaqueCaptureDataEXT\");\n    pAPI->vkGetPhysicalDeviceDescriptorSizeEXT = (PFN_vkGetPhysicalDeviceDescriptorSizeEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceDescriptorSizeEXT\");\n    pAPI->vkRegisterCustomBorderColorEXT = (PFN_vkRegisterCustomBorderColorEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkRegisterCustomBorderColorEXT\");\n    pAPI->vkUnregisterCustomBorderColorEXT = (PFN_vkUnregisterCustomBorderColorEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkUnregisterCustomBorderColorEXT\");\n    pAPI->vkGetTensorOpaqueCaptureDataARM = (PFN_vkGetTensorOpaqueCaptureDataARM)pAPI->vkGetInstanceProcAddr(instance, \"vkGetTensorOpaqueCaptureDataARM\");\n    pAPI->vkCmdSetSampleLocationsEXT = (PFN_vkCmdSetSampleLocationsEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetSampleLocationsEXT\");\n    pAPI->vkGetPhysicalDeviceMultisamplePropertiesEXT = (PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceMultisamplePropertiesEXT\");\n    pAPI->vkGetImageMemoryRequirements2KHR = (PFN_vkGetImageMemoryRequirements2KHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetImageMemoryRequirements2KHR\");\n    pAPI->vkGetBufferMemoryRequirements2KHR = (PFN_vkGetBufferMemoryRequirements2KHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetBufferMemoryRequirements2KHR\");\n    pAPI->vkGetImageSparseMemoryRequirements2KHR = (PFN_vkGetImageSparseMemoryRequirements2KHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetImageSparseMemoryRequirements2KHR\");\n    pAPI->vkCreateAccelerationStructureKHR = (PFN_vkCreateAccelerationStructureKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateAccelerationStructureKHR\");\n    pAPI->vkDestroyAccelerationStructureKHR = (PFN_vkDestroyAccelerationStructureKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkDestroyAccelerationStructureKHR\");\n    pAPI->vkCmdBuildAccelerationStructuresKHR = (PFN_vkCmdBuildAccelerationStructuresKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdBuildAccelerationStructuresKHR\");\n    pAPI->vkCmdBuildAccelerationStructuresIndirectKHR = (PFN_vkCmdBuildAccelerationStructuresIndirectKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdBuildAccelerationStructuresIndirectKHR\");\n    pAPI->vkBuildAccelerationStructuresKHR = (PFN_vkBuildAccelerationStructuresKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkBuildAccelerationStructuresKHR\");\n    pAPI->vkCopyAccelerationStructureKHR = (PFN_vkCopyAccelerationStructureKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCopyAccelerationStructureKHR\");\n    pAPI->vkCopyAccelerationStructureToMemoryKHR = (PFN_vkCopyAccelerationStructureToMemoryKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCopyAccelerationStructureToMemoryKHR\");\n    pAPI->vkCopyMemoryToAccelerationStructureKHR = (PFN_vkCopyMemoryToAccelerationStructureKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCopyMemoryToAccelerationStructureKHR\");\n    pAPI->vkWriteAccelerationStructuresPropertiesKHR = (PFN_vkWriteAccelerationStructuresPropertiesKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkWriteAccelerationStructuresPropertiesKHR\");\n    pAPI->vkCmdCopyAccelerationStructureKHR = (PFN_vkCmdCopyAccelerationStructureKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdCopyAccelerationStructureKHR\");\n    pAPI->vkCmdCopyAccelerationStructureToMemoryKHR = (PFN_vkCmdCopyAccelerationStructureToMemoryKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdCopyAccelerationStructureToMemoryKHR\");\n    pAPI->vkCmdCopyMemoryToAccelerationStructureKHR = (PFN_vkCmdCopyMemoryToAccelerationStructureKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdCopyMemoryToAccelerationStructureKHR\");\n    pAPI->vkGetAccelerationStructureDeviceAddressKHR = (PFN_vkGetAccelerationStructureDeviceAddressKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetAccelerationStructureDeviceAddressKHR\");\n    pAPI->vkCmdWriteAccelerationStructuresPropertiesKHR = (PFN_vkCmdWriteAccelerationStructuresPropertiesKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdWriteAccelerationStructuresPropertiesKHR\");\n    pAPI->vkGetDeviceAccelerationStructureCompatibilityKHR = (PFN_vkGetDeviceAccelerationStructureCompatibilityKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetDeviceAccelerationStructureCompatibilityKHR\");\n    pAPI->vkGetAccelerationStructureBuildSizesKHR = (PFN_vkGetAccelerationStructureBuildSizesKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetAccelerationStructureBuildSizesKHR\");\n    pAPI->vkCmdTraceRaysKHR = (PFN_vkCmdTraceRaysKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdTraceRaysKHR\");\n    pAPI->vkCreateRayTracingPipelinesKHR = (PFN_vkCreateRayTracingPipelinesKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateRayTracingPipelinesKHR\");\n    pAPI->vkGetRayTracingShaderGroupHandlesKHR = (PFN_vkGetRayTracingShaderGroupHandlesKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetRayTracingShaderGroupHandlesKHR\");\n    pAPI->vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = (PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetRayTracingCaptureReplayShaderGroupHandlesKHR\");\n    pAPI->vkCmdTraceRaysIndirectKHR = (PFN_vkCmdTraceRaysIndirectKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdTraceRaysIndirectKHR\");\n    pAPI->vkGetRayTracingShaderGroupStackSizeKHR = (PFN_vkGetRayTracingShaderGroupStackSizeKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetRayTracingShaderGroupStackSizeKHR\");\n    pAPI->vkCmdSetRayTracingPipelineStackSizeKHR = (PFN_vkCmdSetRayTracingPipelineStackSizeKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetRayTracingPipelineStackSizeKHR\");\n    pAPI->vkCreateSamplerYcbcrConversionKHR = (PFN_vkCreateSamplerYcbcrConversionKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateSamplerYcbcrConversionKHR\");\n    pAPI->vkDestroySamplerYcbcrConversionKHR = (PFN_vkDestroySamplerYcbcrConversionKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkDestroySamplerYcbcrConversionKHR\");\n    pAPI->vkBindBufferMemory2KHR = (PFN_vkBindBufferMemory2KHR)pAPI->vkGetInstanceProcAddr(instance, \"vkBindBufferMemory2KHR\");\n    pAPI->vkBindImageMemory2KHR = (PFN_vkBindImageMemory2KHR)pAPI->vkGetInstanceProcAddr(instance, \"vkBindImageMemory2KHR\");\n    pAPI->vkGetImageDrmFormatModifierPropertiesEXT = (PFN_vkGetImageDrmFormatModifierPropertiesEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkGetImageDrmFormatModifierPropertiesEXT\");\n    pAPI->vkCreateValidationCacheEXT = (PFN_vkCreateValidationCacheEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateValidationCacheEXT\");\n    pAPI->vkDestroyValidationCacheEXT = (PFN_vkDestroyValidationCacheEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkDestroyValidationCacheEXT\");\n    pAPI->vkMergeValidationCachesEXT = (PFN_vkMergeValidationCachesEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkMergeValidationCachesEXT\");\n    pAPI->vkGetValidationCacheDataEXT = (PFN_vkGetValidationCacheDataEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkGetValidationCacheDataEXT\");\n    pAPI->vkCmdBindShadingRateImageNV = (PFN_vkCmdBindShadingRateImageNV)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdBindShadingRateImageNV\");\n    pAPI->vkCmdSetViewportShadingRatePaletteNV = (PFN_vkCmdSetViewportShadingRatePaletteNV)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetViewportShadingRatePaletteNV\");\n    pAPI->vkCmdSetCoarseSampleOrderNV = (PFN_vkCmdSetCoarseSampleOrderNV)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetCoarseSampleOrderNV\");\n    pAPI->vkCreateAccelerationStructureNV = (PFN_vkCreateAccelerationStructureNV)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateAccelerationStructureNV\");\n    pAPI->vkDestroyAccelerationStructureNV = (PFN_vkDestroyAccelerationStructureNV)pAPI->vkGetInstanceProcAddr(instance, \"vkDestroyAccelerationStructureNV\");\n    pAPI->vkGetAccelerationStructureMemoryRequirementsNV = (PFN_vkGetAccelerationStructureMemoryRequirementsNV)pAPI->vkGetInstanceProcAddr(instance, \"vkGetAccelerationStructureMemoryRequirementsNV\");\n    pAPI->vkBindAccelerationStructureMemoryNV = (PFN_vkBindAccelerationStructureMemoryNV)pAPI->vkGetInstanceProcAddr(instance, \"vkBindAccelerationStructureMemoryNV\");\n    pAPI->vkCmdBuildAccelerationStructureNV = (PFN_vkCmdBuildAccelerationStructureNV)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdBuildAccelerationStructureNV\");\n    pAPI->vkCmdCopyAccelerationStructureNV = (PFN_vkCmdCopyAccelerationStructureNV)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdCopyAccelerationStructureNV\");\n    pAPI->vkCmdTraceRaysNV = (PFN_vkCmdTraceRaysNV)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdTraceRaysNV\");\n    pAPI->vkCreateRayTracingPipelinesNV = (PFN_vkCreateRayTracingPipelinesNV)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateRayTracingPipelinesNV\");\n    pAPI->vkGetRayTracingShaderGroupHandlesNV = (PFN_vkGetRayTracingShaderGroupHandlesNV)pAPI->vkGetInstanceProcAddr(instance, \"vkGetRayTracingShaderGroupHandlesNV\");\n    pAPI->vkGetAccelerationStructureHandleNV = (PFN_vkGetAccelerationStructureHandleNV)pAPI->vkGetInstanceProcAddr(instance, \"vkGetAccelerationStructureHandleNV\");\n    pAPI->vkCmdWriteAccelerationStructuresPropertiesNV = (PFN_vkCmdWriteAccelerationStructuresPropertiesNV)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdWriteAccelerationStructuresPropertiesNV\");\n    pAPI->vkCompileDeferredNV = (PFN_vkCompileDeferredNV)pAPI->vkGetInstanceProcAddr(instance, \"vkCompileDeferredNV\");\n    pAPI->vkGetDescriptorSetLayoutSupportKHR = (PFN_vkGetDescriptorSetLayoutSupportKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetDescriptorSetLayoutSupportKHR\");\n    pAPI->vkCmdDrawIndirectCountKHR = (PFN_vkCmdDrawIndirectCountKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdDrawIndirectCountKHR\");\n    pAPI->vkCmdDrawIndexedIndirectCountKHR = (PFN_vkCmdDrawIndexedIndirectCountKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdDrawIndexedIndirectCountKHR\");\n    pAPI->vkCmdDrawIndirectCountAMD = (PFN_vkCmdDrawIndirectCountAMD)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdDrawIndirectCountAMD\");\n    pAPI->vkCmdDrawIndexedIndirectCountAMD = (PFN_vkCmdDrawIndexedIndirectCountAMD)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdDrawIndexedIndirectCountAMD\");\n    pAPI->vkGetMemoryHostPointerPropertiesEXT = (PFN_vkGetMemoryHostPointerPropertiesEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkGetMemoryHostPointerPropertiesEXT\");\n    pAPI->vkCmdWriteBufferMarkerAMD = (PFN_vkCmdWriteBufferMarkerAMD)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdWriteBufferMarkerAMD\");\n    pAPI->vkCmdWriteBufferMarker2AMD = (PFN_vkCmdWriteBufferMarker2AMD)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdWriteBufferMarker2AMD\");\n    pAPI->vkCmdDrawMeshTasksNV = (PFN_vkCmdDrawMeshTasksNV)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdDrawMeshTasksNV\");\n    pAPI->vkCmdDrawMeshTasksIndirectNV = (PFN_vkCmdDrawMeshTasksIndirectNV)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdDrawMeshTasksIndirectNV\");\n    pAPI->vkCmdDrawMeshTasksIndirectCountNV = (PFN_vkCmdDrawMeshTasksIndirectCountNV)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdDrawMeshTasksIndirectCountNV\");\n    pAPI->vkCmdSetExclusiveScissorEnableNV = (PFN_vkCmdSetExclusiveScissorEnableNV)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetExclusiveScissorEnableNV\");\n    pAPI->vkCmdSetExclusiveScissorNV = (PFN_vkCmdSetExclusiveScissorNV)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetExclusiveScissorNV\");\n    pAPI->vkCmdSetCheckpointNV = (PFN_vkCmdSetCheckpointNV)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetCheckpointNV\");\n    pAPI->vkGetQueueCheckpointDataNV = (PFN_vkGetQueueCheckpointDataNV)pAPI->vkGetInstanceProcAddr(instance, \"vkGetQueueCheckpointDataNV\");\n    pAPI->vkGetQueueCheckpointData2NV = (PFN_vkGetQueueCheckpointData2NV)pAPI->vkGetInstanceProcAddr(instance, \"vkGetQueueCheckpointData2NV\");\n    pAPI->vkGetSemaphoreCounterValueKHR = (PFN_vkGetSemaphoreCounterValueKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetSemaphoreCounterValueKHR\");\n    pAPI->vkWaitSemaphoresKHR = (PFN_vkWaitSemaphoresKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkWaitSemaphoresKHR\");\n    pAPI->vkSignalSemaphoreKHR = (PFN_vkSignalSemaphoreKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkSignalSemaphoreKHR\");\n    pAPI->vkSetSwapchainPresentTimingQueueSizeEXT = (PFN_vkSetSwapchainPresentTimingQueueSizeEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkSetSwapchainPresentTimingQueueSizeEXT\");\n    pAPI->vkGetSwapchainTimingPropertiesEXT = (PFN_vkGetSwapchainTimingPropertiesEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkGetSwapchainTimingPropertiesEXT\");\n    pAPI->vkGetSwapchainTimeDomainPropertiesEXT = (PFN_vkGetSwapchainTimeDomainPropertiesEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkGetSwapchainTimeDomainPropertiesEXT\");\n    pAPI->vkGetPastPresentationTimingEXT = (PFN_vkGetPastPresentationTimingEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPastPresentationTimingEXT\");\n    pAPI->vkInitializePerformanceApiINTEL = (PFN_vkInitializePerformanceApiINTEL)pAPI->vkGetInstanceProcAddr(instance, \"vkInitializePerformanceApiINTEL\");\n    pAPI->vkUninitializePerformanceApiINTEL = (PFN_vkUninitializePerformanceApiINTEL)pAPI->vkGetInstanceProcAddr(instance, \"vkUninitializePerformanceApiINTEL\");\n    pAPI->vkCmdSetPerformanceMarkerINTEL = (PFN_vkCmdSetPerformanceMarkerINTEL)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetPerformanceMarkerINTEL\");\n    pAPI->vkCmdSetPerformanceStreamMarkerINTEL = (PFN_vkCmdSetPerformanceStreamMarkerINTEL)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetPerformanceStreamMarkerINTEL\");\n    pAPI->vkCmdSetPerformanceOverrideINTEL = (PFN_vkCmdSetPerformanceOverrideINTEL)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetPerformanceOverrideINTEL\");\n    pAPI->vkAcquirePerformanceConfigurationINTEL = (PFN_vkAcquirePerformanceConfigurationINTEL)pAPI->vkGetInstanceProcAddr(instance, \"vkAcquirePerformanceConfigurationINTEL\");\n    pAPI->vkReleasePerformanceConfigurationINTEL = (PFN_vkReleasePerformanceConfigurationINTEL)pAPI->vkGetInstanceProcAddr(instance, \"vkReleasePerformanceConfigurationINTEL\");\n    pAPI->vkQueueSetPerformanceConfigurationINTEL = (PFN_vkQueueSetPerformanceConfigurationINTEL)pAPI->vkGetInstanceProcAddr(instance, \"vkQueueSetPerformanceConfigurationINTEL\");\n    pAPI->vkGetPerformanceParameterINTEL = (PFN_vkGetPerformanceParameterINTEL)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPerformanceParameterINTEL\");\n    pAPI->vkSetLocalDimmingAMD = (PFN_vkSetLocalDimmingAMD)pAPI->vkGetInstanceProcAddr(instance, \"vkSetLocalDimmingAMD\");\n    pAPI->vkGetPhysicalDeviceFragmentShadingRatesKHR = (PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceFragmentShadingRatesKHR\");\n    pAPI->vkCmdSetFragmentShadingRateKHR = (PFN_vkCmdSetFragmentShadingRateKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetFragmentShadingRateKHR\");\n    pAPI->vkCmdSetRenderingAttachmentLocationsKHR = (PFN_vkCmdSetRenderingAttachmentLocationsKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetRenderingAttachmentLocationsKHR\");\n    pAPI->vkCmdSetRenderingInputAttachmentIndicesKHR = (PFN_vkCmdSetRenderingInputAttachmentIndicesKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetRenderingInputAttachmentIndicesKHR\");\n    pAPI->vkGetPhysicalDeviceToolPropertiesEXT = (PFN_vkGetPhysicalDeviceToolPropertiesEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceToolPropertiesEXT\");\n    pAPI->vkWaitForPresentKHR = (PFN_vkWaitForPresentKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkWaitForPresentKHR\");\n    pAPI->vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = (PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceCooperativeMatrixPropertiesNV\");\n    pAPI->vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = (PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV\");\n    pAPI->vkCreateHeadlessSurfaceEXT = (PFN_vkCreateHeadlessSurfaceEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateHeadlessSurfaceEXT\");\n    pAPI->vkGetBufferDeviceAddressKHR = (PFN_vkGetBufferDeviceAddressKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetBufferDeviceAddressKHR\");\n    pAPI->vkGetBufferOpaqueCaptureAddressKHR = (PFN_vkGetBufferOpaqueCaptureAddressKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetBufferOpaqueCaptureAddressKHR\");\n    pAPI->vkGetDeviceMemoryOpaqueCaptureAddressKHR = (PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetDeviceMemoryOpaqueCaptureAddressKHR\");\n    pAPI->vkGetBufferDeviceAddressEXT = (PFN_vkGetBufferDeviceAddressEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkGetBufferDeviceAddressEXT\");\n    pAPI->vkResetQueryPoolEXT = (PFN_vkResetQueryPoolEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkResetQueryPoolEXT\");\n    pAPI->vkCmdSetCullModeEXT = (PFN_vkCmdSetCullModeEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetCullModeEXT\");\n    pAPI->vkCmdSetFrontFaceEXT = (PFN_vkCmdSetFrontFaceEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetFrontFaceEXT\");\n    pAPI->vkCmdSetPrimitiveTopologyEXT = (PFN_vkCmdSetPrimitiveTopologyEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetPrimitiveTopologyEXT\");\n    pAPI->vkCmdSetViewportWithCountEXT = (PFN_vkCmdSetViewportWithCountEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetViewportWithCountEXT\");\n    pAPI->vkCmdSetScissorWithCountEXT = (PFN_vkCmdSetScissorWithCountEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetScissorWithCountEXT\");\n    pAPI->vkCmdBindVertexBuffers2EXT = (PFN_vkCmdBindVertexBuffers2EXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdBindVertexBuffers2EXT\");\n    pAPI->vkCmdSetDepthTestEnableEXT = (PFN_vkCmdSetDepthTestEnableEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetDepthTestEnableEXT\");\n    pAPI->vkCmdSetDepthWriteEnableEXT = (PFN_vkCmdSetDepthWriteEnableEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetDepthWriteEnableEXT\");\n    pAPI->vkCmdSetDepthCompareOpEXT = (PFN_vkCmdSetDepthCompareOpEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetDepthCompareOpEXT\");\n    pAPI->vkCmdSetDepthBoundsTestEnableEXT = (PFN_vkCmdSetDepthBoundsTestEnableEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetDepthBoundsTestEnableEXT\");\n    pAPI->vkCmdSetStencilTestEnableEXT = (PFN_vkCmdSetStencilTestEnableEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetStencilTestEnableEXT\");\n    pAPI->vkCmdSetStencilOpEXT = (PFN_vkCmdSetStencilOpEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetStencilOpEXT\");\n    pAPI->vkCreateDeferredOperationKHR = (PFN_vkCreateDeferredOperationKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateDeferredOperationKHR\");\n    pAPI->vkDestroyDeferredOperationKHR = (PFN_vkDestroyDeferredOperationKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkDestroyDeferredOperationKHR\");\n    pAPI->vkGetDeferredOperationMaxConcurrencyKHR = (PFN_vkGetDeferredOperationMaxConcurrencyKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetDeferredOperationMaxConcurrencyKHR\");\n    pAPI->vkGetDeferredOperationResultKHR = (PFN_vkGetDeferredOperationResultKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetDeferredOperationResultKHR\");\n    pAPI->vkDeferredOperationJoinKHR = (PFN_vkDeferredOperationJoinKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkDeferredOperationJoinKHR\");\n    pAPI->vkGetPipelineExecutablePropertiesKHR = (PFN_vkGetPipelineExecutablePropertiesKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPipelineExecutablePropertiesKHR\");\n    pAPI->vkGetPipelineExecutableStatisticsKHR = (PFN_vkGetPipelineExecutableStatisticsKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPipelineExecutableStatisticsKHR\");\n    pAPI->vkGetPipelineExecutableInternalRepresentationsKHR = (PFN_vkGetPipelineExecutableInternalRepresentationsKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPipelineExecutableInternalRepresentationsKHR\");\n    pAPI->vkCopyMemoryToImageEXT = (PFN_vkCopyMemoryToImageEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCopyMemoryToImageEXT\");\n    pAPI->vkCopyImageToMemoryEXT = (PFN_vkCopyImageToMemoryEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCopyImageToMemoryEXT\");\n    pAPI->vkCopyImageToImageEXT = (PFN_vkCopyImageToImageEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCopyImageToImageEXT\");\n    pAPI->vkTransitionImageLayoutEXT = (PFN_vkTransitionImageLayoutEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkTransitionImageLayoutEXT\");\n    pAPI->vkGetImageSubresourceLayout2EXT = (PFN_vkGetImageSubresourceLayout2EXT)pAPI->vkGetInstanceProcAddr(instance, \"vkGetImageSubresourceLayout2EXT\");\n    pAPI->vkMapMemory2KHR = (PFN_vkMapMemory2KHR)pAPI->vkGetInstanceProcAddr(instance, \"vkMapMemory2KHR\");\n    pAPI->vkUnmapMemory2KHR = (PFN_vkUnmapMemory2KHR)pAPI->vkGetInstanceProcAddr(instance, \"vkUnmapMemory2KHR\");\n    pAPI->vkGetGeneratedCommandsMemoryRequirementsNV = (PFN_vkGetGeneratedCommandsMemoryRequirementsNV)pAPI->vkGetInstanceProcAddr(instance, \"vkGetGeneratedCommandsMemoryRequirementsNV\");\n    pAPI->vkCmdPreprocessGeneratedCommandsNV = (PFN_vkCmdPreprocessGeneratedCommandsNV)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdPreprocessGeneratedCommandsNV\");\n    pAPI->vkCmdExecuteGeneratedCommandsNV = (PFN_vkCmdExecuteGeneratedCommandsNV)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdExecuteGeneratedCommandsNV\");\n    pAPI->vkCmdBindPipelineShaderGroupNV = (PFN_vkCmdBindPipelineShaderGroupNV)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdBindPipelineShaderGroupNV\");\n    pAPI->vkCreateIndirectCommandsLayoutNV = (PFN_vkCreateIndirectCommandsLayoutNV)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateIndirectCommandsLayoutNV\");\n    pAPI->vkDestroyIndirectCommandsLayoutNV = (PFN_vkDestroyIndirectCommandsLayoutNV)pAPI->vkGetInstanceProcAddr(instance, \"vkDestroyIndirectCommandsLayoutNV\");\n    pAPI->vkCmdSetDepthBias2EXT = (PFN_vkCmdSetDepthBias2EXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetDepthBias2EXT\");\n    pAPI->vkAcquireDrmDisplayEXT = (PFN_vkAcquireDrmDisplayEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkAcquireDrmDisplayEXT\");\n    pAPI->vkGetDrmDisplayEXT = (PFN_vkGetDrmDisplayEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkGetDrmDisplayEXT\");\n    pAPI->vkCreatePrivateDataSlotEXT = (PFN_vkCreatePrivateDataSlotEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCreatePrivateDataSlotEXT\");\n    pAPI->vkDestroyPrivateDataSlotEXT = (PFN_vkDestroyPrivateDataSlotEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkDestroyPrivateDataSlotEXT\");\n    pAPI->vkSetPrivateDataEXT = (PFN_vkSetPrivateDataEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkSetPrivateDataEXT\");\n    pAPI->vkGetPrivateDataEXT = (PFN_vkGetPrivateDataEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPrivateDataEXT\");\n    pAPI->vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR = (PFN_vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR\");\n    pAPI->vkGetEncodedVideoSessionParametersKHR = (PFN_vkGetEncodedVideoSessionParametersKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetEncodedVideoSessionParametersKHR\");\n    pAPI->vkCmdEncodeVideoKHR = (PFN_vkCmdEncodeVideoKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdEncodeVideoKHR\");\n    pAPI->vkCmdRefreshObjectsKHR = (PFN_vkCmdRefreshObjectsKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdRefreshObjectsKHR\");\n    pAPI->vkGetPhysicalDeviceRefreshableObjectTypesKHR = (PFN_vkGetPhysicalDeviceRefreshableObjectTypesKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceRefreshableObjectTypesKHR\");\n    pAPI->vkCmdDispatchTileQCOM = (PFN_vkCmdDispatchTileQCOM)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdDispatchTileQCOM\");\n    pAPI->vkCmdBeginPerTileExecutionQCOM = (PFN_vkCmdBeginPerTileExecutionQCOM)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdBeginPerTileExecutionQCOM\");\n    pAPI->vkCmdEndPerTileExecutionQCOM = (PFN_vkCmdEndPerTileExecutionQCOM)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdEndPerTileExecutionQCOM\");\n    pAPI->vkCmdSetEvent2KHR = (PFN_vkCmdSetEvent2KHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetEvent2KHR\");\n    pAPI->vkCmdResetEvent2KHR = (PFN_vkCmdResetEvent2KHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdResetEvent2KHR\");\n    pAPI->vkCmdWaitEvents2KHR = (PFN_vkCmdWaitEvents2KHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdWaitEvents2KHR\");\n    pAPI->vkCmdPipelineBarrier2KHR = (PFN_vkCmdPipelineBarrier2KHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdPipelineBarrier2KHR\");\n    pAPI->vkCmdWriteTimestamp2KHR = (PFN_vkCmdWriteTimestamp2KHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdWriteTimestamp2KHR\");\n    pAPI->vkQueueSubmit2KHR = (PFN_vkQueueSubmit2KHR)pAPI->vkGetInstanceProcAddr(instance, \"vkQueueSubmit2KHR\");\n    pAPI->vkGetDescriptorSetLayoutSizeEXT = (PFN_vkGetDescriptorSetLayoutSizeEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkGetDescriptorSetLayoutSizeEXT\");\n    pAPI->vkGetDescriptorSetLayoutBindingOffsetEXT = (PFN_vkGetDescriptorSetLayoutBindingOffsetEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkGetDescriptorSetLayoutBindingOffsetEXT\");\n    pAPI->vkGetDescriptorEXT = (PFN_vkGetDescriptorEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkGetDescriptorEXT\");\n    pAPI->vkCmdBindDescriptorBuffersEXT = (PFN_vkCmdBindDescriptorBuffersEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdBindDescriptorBuffersEXT\");\n    pAPI->vkCmdSetDescriptorBufferOffsetsEXT = (PFN_vkCmdSetDescriptorBufferOffsetsEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetDescriptorBufferOffsetsEXT\");\n    pAPI->vkCmdBindDescriptorBufferEmbeddedSamplersEXT = (PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdBindDescriptorBufferEmbeddedSamplersEXT\");\n    pAPI->vkGetBufferOpaqueCaptureDescriptorDataEXT = (PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkGetBufferOpaqueCaptureDescriptorDataEXT\");\n    pAPI->vkGetImageOpaqueCaptureDescriptorDataEXT = (PFN_vkGetImageOpaqueCaptureDescriptorDataEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkGetImageOpaqueCaptureDescriptorDataEXT\");\n    pAPI->vkGetImageViewOpaqueCaptureDescriptorDataEXT = (PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkGetImageViewOpaqueCaptureDescriptorDataEXT\");\n    pAPI->vkGetSamplerOpaqueCaptureDescriptorDataEXT = (PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkGetSamplerOpaqueCaptureDescriptorDataEXT\");\n    pAPI->vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT = (PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT\");\n    pAPI->vkCmdSetFragmentShadingRateEnumNV = (PFN_vkCmdSetFragmentShadingRateEnumNV)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetFragmentShadingRateEnumNV\");\n    pAPI->vkCmdDrawMeshTasksEXT = (PFN_vkCmdDrawMeshTasksEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdDrawMeshTasksEXT\");\n    pAPI->vkCmdDrawMeshTasksIndirectEXT = (PFN_vkCmdDrawMeshTasksIndirectEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdDrawMeshTasksIndirectEXT\");\n    pAPI->vkCmdDrawMeshTasksIndirectCountEXT = (PFN_vkCmdDrawMeshTasksIndirectCountEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdDrawMeshTasksIndirectCountEXT\");\n    pAPI->vkCmdCopyBuffer2KHR = (PFN_vkCmdCopyBuffer2KHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdCopyBuffer2KHR\");\n    pAPI->vkCmdCopyImage2KHR = (PFN_vkCmdCopyImage2KHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdCopyImage2KHR\");\n    pAPI->vkCmdCopyBufferToImage2KHR = (PFN_vkCmdCopyBufferToImage2KHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdCopyBufferToImage2KHR\");\n    pAPI->vkCmdCopyImageToBuffer2KHR = (PFN_vkCmdCopyImageToBuffer2KHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdCopyImageToBuffer2KHR\");\n    pAPI->vkCmdBlitImage2KHR = (PFN_vkCmdBlitImage2KHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdBlitImage2KHR\");\n    pAPI->vkCmdResolveImage2KHR = (PFN_vkCmdResolveImage2KHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdResolveImage2KHR\");\n    pAPI->vkGetDeviceFaultInfoEXT = (PFN_vkGetDeviceFaultInfoEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkGetDeviceFaultInfoEXT\");\n    pAPI->vkCmdSetVertexInputEXT = (PFN_vkCmdSetVertexInputEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetVertexInputEXT\");\n    pAPI->vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = (PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI)pAPI->vkGetInstanceProcAddr(instance, \"vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI\");\n    pAPI->vkCmdSubpassShadingHUAWEI = (PFN_vkCmdSubpassShadingHUAWEI)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSubpassShadingHUAWEI\");\n    pAPI->vkCmdBindInvocationMaskHUAWEI = (PFN_vkCmdBindInvocationMaskHUAWEI)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdBindInvocationMaskHUAWEI\");\n    pAPI->vkGetMemoryRemoteAddressNV = (PFN_vkGetMemoryRemoteAddressNV)pAPI->vkGetInstanceProcAddr(instance, \"vkGetMemoryRemoteAddressNV\");\n    pAPI->vkGetPipelinePropertiesEXT = (PFN_vkGetPipelinePropertiesEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPipelinePropertiesEXT\");\n    pAPI->vkCmdSetPatchControlPointsEXT = (PFN_vkCmdSetPatchControlPointsEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetPatchControlPointsEXT\");\n    pAPI->vkCmdSetRasterizerDiscardEnableEXT = (PFN_vkCmdSetRasterizerDiscardEnableEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetRasterizerDiscardEnableEXT\");\n    pAPI->vkCmdSetDepthBiasEnableEXT = (PFN_vkCmdSetDepthBiasEnableEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetDepthBiasEnableEXT\");\n    pAPI->vkCmdSetLogicOpEXT = (PFN_vkCmdSetLogicOpEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetLogicOpEXT\");\n    pAPI->vkCmdSetPrimitiveRestartEnableEXT = (PFN_vkCmdSetPrimitiveRestartEnableEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetPrimitiveRestartEnableEXT\");\n    pAPI->vkCmdSetColorWriteEnableEXT = (PFN_vkCmdSetColorWriteEnableEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetColorWriteEnableEXT\");\n    pAPI->vkCmdTraceRaysIndirect2KHR = (PFN_vkCmdTraceRaysIndirect2KHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdTraceRaysIndirect2KHR\");\n    pAPI->vkCmdDrawMultiEXT = (PFN_vkCmdDrawMultiEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdDrawMultiEXT\");\n    pAPI->vkCmdDrawMultiIndexedEXT = (PFN_vkCmdDrawMultiIndexedEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdDrawMultiIndexedEXT\");\n    pAPI->vkCreateMicromapEXT = (PFN_vkCreateMicromapEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateMicromapEXT\");\n    pAPI->vkDestroyMicromapEXT = (PFN_vkDestroyMicromapEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkDestroyMicromapEXT\");\n    pAPI->vkCmdBuildMicromapsEXT = (PFN_vkCmdBuildMicromapsEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdBuildMicromapsEXT\");\n    pAPI->vkBuildMicromapsEXT = (PFN_vkBuildMicromapsEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkBuildMicromapsEXT\");\n    pAPI->vkCopyMicromapEXT = (PFN_vkCopyMicromapEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCopyMicromapEXT\");\n    pAPI->vkCopyMicromapToMemoryEXT = (PFN_vkCopyMicromapToMemoryEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCopyMicromapToMemoryEXT\");\n    pAPI->vkCopyMemoryToMicromapEXT = (PFN_vkCopyMemoryToMicromapEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCopyMemoryToMicromapEXT\");\n    pAPI->vkWriteMicromapsPropertiesEXT = (PFN_vkWriteMicromapsPropertiesEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkWriteMicromapsPropertiesEXT\");\n    pAPI->vkCmdCopyMicromapEXT = (PFN_vkCmdCopyMicromapEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdCopyMicromapEXT\");\n    pAPI->vkCmdCopyMicromapToMemoryEXT = (PFN_vkCmdCopyMicromapToMemoryEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdCopyMicromapToMemoryEXT\");\n    pAPI->vkCmdCopyMemoryToMicromapEXT = (PFN_vkCmdCopyMemoryToMicromapEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdCopyMemoryToMicromapEXT\");\n    pAPI->vkCmdWriteMicromapsPropertiesEXT = (PFN_vkCmdWriteMicromapsPropertiesEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdWriteMicromapsPropertiesEXT\");\n    pAPI->vkGetDeviceMicromapCompatibilityEXT = (PFN_vkGetDeviceMicromapCompatibilityEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkGetDeviceMicromapCompatibilityEXT\");\n    pAPI->vkGetMicromapBuildSizesEXT = (PFN_vkGetMicromapBuildSizesEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkGetMicromapBuildSizesEXT\");\n    pAPI->vkCmdDrawClusterHUAWEI = (PFN_vkCmdDrawClusterHUAWEI)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdDrawClusterHUAWEI\");\n    pAPI->vkCmdDrawClusterIndirectHUAWEI = (PFN_vkCmdDrawClusterIndirectHUAWEI)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdDrawClusterIndirectHUAWEI\");\n    pAPI->vkSetDeviceMemoryPriorityEXT = (PFN_vkSetDeviceMemoryPriorityEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkSetDeviceMemoryPriorityEXT\");\n    pAPI->vkGetDeviceBufferMemoryRequirementsKHR = (PFN_vkGetDeviceBufferMemoryRequirementsKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetDeviceBufferMemoryRequirementsKHR\");\n    pAPI->vkGetDeviceImageMemoryRequirementsKHR = (PFN_vkGetDeviceImageMemoryRequirementsKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetDeviceImageMemoryRequirementsKHR\");\n    pAPI->vkGetDeviceImageSparseMemoryRequirementsKHR = (PFN_vkGetDeviceImageSparseMemoryRequirementsKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetDeviceImageSparseMemoryRequirementsKHR\");\n    pAPI->vkGetDescriptorSetLayoutHostMappingInfoVALVE = (PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE)pAPI->vkGetInstanceProcAddr(instance, \"vkGetDescriptorSetLayoutHostMappingInfoVALVE\");\n    pAPI->vkGetDescriptorSetHostMappingVALVE = (PFN_vkGetDescriptorSetHostMappingVALVE)pAPI->vkGetInstanceProcAddr(instance, \"vkGetDescriptorSetHostMappingVALVE\");\n    pAPI->vkGetPipelineIndirectMemoryRequirementsNV = (PFN_vkGetPipelineIndirectMemoryRequirementsNV)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPipelineIndirectMemoryRequirementsNV\");\n    pAPI->vkCmdUpdatePipelineIndirectBufferNV = (PFN_vkCmdUpdatePipelineIndirectBufferNV)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdUpdatePipelineIndirectBufferNV\");\n    pAPI->vkGetPipelineIndirectDeviceAddressNV = (PFN_vkGetPipelineIndirectDeviceAddressNV)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPipelineIndirectDeviceAddressNV\");\n    pAPI->vkCmdSetDepthClampEnableEXT = (PFN_vkCmdSetDepthClampEnableEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetDepthClampEnableEXT\");\n    pAPI->vkCmdSetPolygonModeEXT = (PFN_vkCmdSetPolygonModeEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetPolygonModeEXT\");\n    pAPI->vkCmdSetRasterizationSamplesEXT = (PFN_vkCmdSetRasterizationSamplesEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetRasterizationSamplesEXT\");\n    pAPI->vkCmdSetSampleMaskEXT = (PFN_vkCmdSetSampleMaskEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetSampleMaskEXT\");\n    pAPI->vkCmdSetAlphaToCoverageEnableEXT = (PFN_vkCmdSetAlphaToCoverageEnableEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetAlphaToCoverageEnableEXT\");\n    pAPI->vkCmdSetAlphaToOneEnableEXT = (PFN_vkCmdSetAlphaToOneEnableEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetAlphaToOneEnableEXT\");\n    pAPI->vkCmdSetLogicOpEnableEXT = (PFN_vkCmdSetLogicOpEnableEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetLogicOpEnableEXT\");\n    pAPI->vkCmdSetColorBlendEnableEXT = (PFN_vkCmdSetColorBlendEnableEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetColorBlendEnableEXT\");\n    pAPI->vkCmdSetColorBlendEquationEXT = (PFN_vkCmdSetColorBlendEquationEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetColorBlendEquationEXT\");\n    pAPI->vkCmdSetColorWriteMaskEXT = (PFN_vkCmdSetColorWriteMaskEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetColorWriteMaskEXT\");\n    pAPI->vkCmdSetTessellationDomainOriginEXT = (PFN_vkCmdSetTessellationDomainOriginEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetTessellationDomainOriginEXT\");\n    pAPI->vkCmdSetRasterizationStreamEXT = (PFN_vkCmdSetRasterizationStreamEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetRasterizationStreamEXT\");\n    pAPI->vkCmdSetConservativeRasterizationModeEXT = (PFN_vkCmdSetConservativeRasterizationModeEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetConservativeRasterizationModeEXT\");\n    pAPI->vkCmdSetExtraPrimitiveOverestimationSizeEXT = (PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetExtraPrimitiveOverestimationSizeEXT\");\n    pAPI->vkCmdSetDepthClipEnableEXT = (PFN_vkCmdSetDepthClipEnableEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetDepthClipEnableEXT\");\n    pAPI->vkCmdSetSampleLocationsEnableEXT = (PFN_vkCmdSetSampleLocationsEnableEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetSampleLocationsEnableEXT\");\n    pAPI->vkCmdSetColorBlendAdvancedEXT = (PFN_vkCmdSetColorBlendAdvancedEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetColorBlendAdvancedEXT\");\n    pAPI->vkCmdSetProvokingVertexModeEXT = (PFN_vkCmdSetProvokingVertexModeEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetProvokingVertexModeEXT\");\n    pAPI->vkCmdSetLineRasterizationModeEXT = (PFN_vkCmdSetLineRasterizationModeEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetLineRasterizationModeEXT\");\n    pAPI->vkCmdSetLineStippleEnableEXT = (PFN_vkCmdSetLineStippleEnableEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetLineStippleEnableEXT\");\n    pAPI->vkCmdSetDepthClipNegativeOneToOneEXT = (PFN_vkCmdSetDepthClipNegativeOneToOneEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetDepthClipNegativeOneToOneEXT\");\n    pAPI->vkCmdSetViewportWScalingEnableNV = (PFN_vkCmdSetViewportWScalingEnableNV)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetViewportWScalingEnableNV\");\n    pAPI->vkCmdSetViewportSwizzleNV = (PFN_vkCmdSetViewportSwizzleNV)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetViewportSwizzleNV\");\n    pAPI->vkCmdSetCoverageToColorEnableNV = (PFN_vkCmdSetCoverageToColorEnableNV)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetCoverageToColorEnableNV\");\n    pAPI->vkCmdSetCoverageToColorLocationNV = (PFN_vkCmdSetCoverageToColorLocationNV)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetCoverageToColorLocationNV\");\n    pAPI->vkCmdSetCoverageModulationModeNV = (PFN_vkCmdSetCoverageModulationModeNV)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetCoverageModulationModeNV\");\n    pAPI->vkCmdSetCoverageModulationTableEnableNV = (PFN_vkCmdSetCoverageModulationTableEnableNV)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetCoverageModulationTableEnableNV\");\n    pAPI->vkCmdSetCoverageModulationTableNV = (PFN_vkCmdSetCoverageModulationTableNV)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetCoverageModulationTableNV\");\n    pAPI->vkCmdSetShadingRateImageEnableNV = (PFN_vkCmdSetShadingRateImageEnableNV)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetShadingRateImageEnableNV\");\n    pAPI->vkCmdSetRepresentativeFragmentTestEnableNV = (PFN_vkCmdSetRepresentativeFragmentTestEnableNV)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetRepresentativeFragmentTestEnableNV\");\n    pAPI->vkCmdSetCoverageReductionModeNV = (PFN_vkCmdSetCoverageReductionModeNV)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetCoverageReductionModeNV\");\n    pAPI->vkCreateTensorARM = (PFN_vkCreateTensorARM)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateTensorARM\");\n    pAPI->vkDestroyTensorARM = (PFN_vkDestroyTensorARM)pAPI->vkGetInstanceProcAddr(instance, \"vkDestroyTensorARM\");\n    pAPI->vkCreateTensorViewARM = (PFN_vkCreateTensorViewARM)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateTensorViewARM\");\n    pAPI->vkDestroyTensorViewARM = (PFN_vkDestroyTensorViewARM)pAPI->vkGetInstanceProcAddr(instance, \"vkDestroyTensorViewARM\");\n    pAPI->vkGetTensorMemoryRequirementsARM = (PFN_vkGetTensorMemoryRequirementsARM)pAPI->vkGetInstanceProcAddr(instance, \"vkGetTensorMemoryRequirementsARM\");\n    pAPI->vkBindTensorMemoryARM = (PFN_vkBindTensorMemoryARM)pAPI->vkGetInstanceProcAddr(instance, \"vkBindTensorMemoryARM\");\n    pAPI->vkGetDeviceTensorMemoryRequirementsARM = (PFN_vkGetDeviceTensorMemoryRequirementsARM)pAPI->vkGetInstanceProcAddr(instance, \"vkGetDeviceTensorMemoryRequirementsARM\");\n    pAPI->vkCmdCopyTensorARM = (PFN_vkCmdCopyTensorARM)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdCopyTensorARM\");\n    pAPI->vkGetPhysicalDeviceExternalTensorPropertiesARM = (PFN_vkGetPhysicalDeviceExternalTensorPropertiesARM)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceExternalTensorPropertiesARM\");\n    pAPI->vkGetTensorOpaqueCaptureDescriptorDataARM = (PFN_vkGetTensorOpaqueCaptureDescriptorDataARM)pAPI->vkGetInstanceProcAddr(instance, \"vkGetTensorOpaqueCaptureDescriptorDataARM\");\n    pAPI->vkGetTensorViewOpaqueCaptureDescriptorDataARM = (PFN_vkGetTensorViewOpaqueCaptureDescriptorDataARM)pAPI->vkGetInstanceProcAddr(instance, \"vkGetTensorViewOpaqueCaptureDescriptorDataARM\");\n    pAPI->vkGetShaderModuleIdentifierEXT = (PFN_vkGetShaderModuleIdentifierEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkGetShaderModuleIdentifierEXT\");\n    pAPI->vkGetShaderModuleCreateInfoIdentifierEXT = (PFN_vkGetShaderModuleCreateInfoIdentifierEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkGetShaderModuleCreateInfoIdentifierEXT\");\n    pAPI->vkGetPhysicalDeviceOpticalFlowImageFormatsNV = (PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceOpticalFlowImageFormatsNV\");\n    pAPI->vkCreateOpticalFlowSessionNV = (PFN_vkCreateOpticalFlowSessionNV)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateOpticalFlowSessionNV\");\n    pAPI->vkDestroyOpticalFlowSessionNV = (PFN_vkDestroyOpticalFlowSessionNV)pAPI->vkGetInstanceProcAddr(instance, \"vkDestroyOpticalFlowSessionNV\");\n    pAPI->vkBindOpticalFlowSessionImageNV = (PFN_vkBindOpticalFlowSessionImageNV)pAPI->vkGetInstanceProcAddr(instance, \"vkBindOpticalFlowSessionImageNV\");\n    pAPI->vkCmdOpticalFlowExecuteNV = (PFN_vkCmdOpticalFlowExecuteNV)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdOpticalFlowExecuteNV\");\n    pAPI->vkCmdBindIndexBuffer2KHR = (PFN_vkCmdBindIndexBuffer2KHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdBindIndexBuffer2KHR\");\n    pAPI->vkGetRenderingAreaGranularityKHR = (PFN_vkGetRenderingAreaGranularityKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetRenderingAreaGranularityKHR\");\n    pAPI->vkGetDeviceImageSubresourceLayoutKHR = (PFN_vkGetDeviceImageSubresourceLayoutKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetDeviceImageSubresourceLayoutKHR\");\n    pAPI->vkGetImageSubresourceLayout2KHR = (PFN_vkGetImageSubresourceLayout2KHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetImageSubresourceLayout2KHR\");\n    pAPI->vkAntiLagUpdateAMD = (PFN_vkAntiLagUpdateAMD)pAPI->vkGetInstanceProcAddr(instance, \"vkAntiLagUpdateAMD\");\n    pAPI->vkWaitForPresent2KHR = (PFN_vkWaitForPresent2KHR)pAPI->vkGetInstanceProcAddr(instance, \"vkWaitForPresent2KHR\");\n    pAPI->vkCreateShadersEXT = (PFN_vkCreateShadersEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateShadersEXT\");\n    pAPI->vkDestroyShaderEXT = (PFN_vkDestroyShaderEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkDestroyShaderEXT\");\n    pAPI->vkGetShaderBinaryDataEXT = (PFN_vkGetShaderBinaryDataEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkGetShaderBinaryDataEXT\");\n    pAPI->vkCmdBindShadersEXT = (PFN_vkCmdBindShadersEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdBindShadersEXT\");\n    pAPI->vkCmdSetDepthClampRangeEXT = (PFN_vkCmdSetDepthClampRangeEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetDepthClampRangeEXT\");\n    pAPI->vkCreatePipelineBinariesKHR = (PFN_vkCreatePipelineBinariesKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCreatePipelineBinariesKHR\");\n    pAPI->vkDestroyPipelineBinaryKHR = (PFN_vkDestroyPipelineBinaryKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkDestroyPipelineBinaryKHR\");\n    pAPI->vkGetPipelineKeyKHR = (PFN_vkGetPipelineKeyKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPipelineKeyKHR\");\n    pAPI->vkGetPipelineBinaryDataKHR = (PFN_vkGetPipelineBinaryDataKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPipelineBinaryDataKHR\");\n    pAPI->vkReleaseCapturedPipelineDataKHR = (PFN_vkReleaseCapturedPipelineDataKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkReleaseCapturedPipelineDataKHR\");\n    pAPI->vkGetFramebufferTilePropertiesQCOM = (PFN_vkGetFramebufferTilePropertiesQCOM)pAPI->vkGetInstanceProcAddr(instance, \"vkGetFramebufferTilePropertiesQCOM\");\n    pAPI->vkGetDynamicRenderingTilePropertiesQCOM = (PFN_vkGetDynamicRenderingTilePropertiesQCOM)pAPI->vkGetInstanceProcAddr(instance, \"vkGetDynamicRenderingTilePropertiesQCOM\");\n    pAPI->vkReleaseSwapchainImagesKHR = (PFN_vkReleaseSwapchainImagesKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkReleaseSwapchainImagesKHR\");\n    pAPI->vkReleaseSwapchainImagesEXT = (PFN_vkReleaseSwapchainImagesEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkReleaseSwapchainImagesEXT\");\n    pAPI->vkGetPhysicalDeviceCooperativeVectorPropertiesNV = (PFN_vkGetPhysicalDeviceCooperativeVectorPropertiesNV)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceCooperativeVectorPropertiesNV\");\n    pAPI->vkConvertCooperativeVectorMatrixNV = (PFN_vkConvertCooperativeVectorMatrixNV)pAPI->vkGetInstanceProcAddr(instance, \"vkConvertCooperativeVectorMatrixNV\");\n    pAPI->vkCmdConvertCooperativeVectorMatrixNV = (PFN_vkCmdConvertCooperativeVectorMatrixNV)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdConvertCooperativeVectorMatrixNV\");\n    pAPI->vkSetLatencySleepModeNV = (PFN_vkSetLatencySleepModeNV)pAPI->vkGetInstanceProcAddr(instance, \"vkSetLatencySleepModeNV\");\n    pAPI->vkLatencySleepNV = (PFN_vkLatencySleepNV)pAPI->vkGetInstanceProcAddr(instance, \"vkLatencySleepNV\");\n    pAPI->vkSetLatencyMarkerNV = (PFN_vkSetLatencyMarkerNV)pAPI->vkGetInstanceProcAddr(instance, \"vkSetLatencyMarkerNV\");\n    pAPI->vkGetLatencyTimingsNV = (PFN_vkGetLatencyTimingsNV)pAPI->vkGetInstanceProcAddr(instance, \"vkGetLatencyTimingsNV\");\n    pAPI->vkQueueNotifyOutOfBandNV = (PFN_vkQueueNotifyOutOfBandNV)pAPI->vkGetInstanceProcAddr(instance, \"vkQueueNotifyOutOfBandNV\");\n    pAPI->vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR = (PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR\");\n    pAPI->vkCreateDataGraphPipelinesARM = (PFN_vkCreateDataGraphPipelinesARM)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateDataGraphPipelinesARM\");\n    pAPI->vkCreateDataGraphPipelineSessionARM = (PFN_vkCreateDataGraphPipelineSessionARM)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateDataGraphPipelineSessionARM\");\n    pAPI->vkGetDataGraphPipelineSessionBindPointRequirementsARM = (PFN_vkGetDataGraphPipelineSessionBindPointRequirementsARM)pAPI->vkGetInstanceProcAddr(instance, \"vkGetDataGraphPipelineSessionBindPointRequirementsARM\");\n    pAPI->vkGetDataGraphPipelineSessionMemoryRequirementsARM = (PFN_vkGetDataGraphPipelineSessionMemoryRequirementsARM)pAPI->vkGetInstanceProcAddr(instance, \"vkGetDataGraphPipelineSessionMemoryRequirementsARM\");\n    pAPI->vkBindDataGraphPipelineSessionMemoryARM = (PFN_vkBindDataGraphPipelineSessionMemoryARM)pAPI->vkGetInstanceProcAddr(instance, \"vkBindDataGraphPipelineSessionMemoryARM\");\n    pAPI->vkDestroyDataGraphPipelineSessionARM = (PFN_vkDestroyDataGraphPipelineSessionARM)pAPI->vkGetInstanceProcAddr(instance, \"vkDestroyDataGraphPipelineSessionARM\");\n    pAPI->vkCmdDispatchDataGraphARM = (PFN_vkCmdDispatchDataGraphARM)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdDispatchDataGraphARM\");\n    pAPI->vkGetDataGraphPipelineAvailablePropertiesARM = (PFN_vkGetDataGraphPipelineAvailablePropertiesARM)pAPI->vkGetInstanceProcAddr(instance, \"vkGetDataGraphPipelineAvailablePropertiesARM\");\n    pAPI->vkGetDataGraphPipelinePropertiesARM = (PFN_vkGetDataGraphPipelinePropertiesARM)pAPI->vkGetInstanceProcAddr(instance, \"vkGetDataGraphPipelinePropertiesARM\");\n    pAPI->vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM = (PFN_vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM\");\n    pAPI->vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM = (PFN_vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM\");\n    pAPI->vkCmdSetAttachmentFeedbackLoopEnableEXT = (PFN_vkCmdSetAttachmentFeedbackLoopEnableEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetAttachmentFeedbackLoopEnableEXT\");\n    pAPI->vkCmdSetLineStippleKHR = (PFN_vkCmdSetLineStippleKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetLineStippleKHR\");\n    pAPI->vkCmdSetLineStippleEXT = (PFN_vkCmdSetLineStippleEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetLineStippleEXT\");\n    pAPI->vkGetPhysicalDeviceCalibrateableTimeDomainsKHR = (PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceCalibrateableTimeDomainsKHR\");\n    pAPI->vkGetCalibratedTimestampsKHR = (PFN_vkGetCalibratedTimestampsKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetCalibratedTimestampsKHR\");\n    pAPI->vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = (PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceCalibrateableTimeDomainsEXT\");\n    pAPI->vkGetCalibratedTimestampsEXT = (PFN_vkGetCalibratedTimestampsEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkGetCalibratedTimestampsEXT\");\n    pAPI->vkCmdBindDescriptorSets2KHR = (PFN_vkCmdBindDescriptorSets2KHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdBindDescriptorSets2KHR\");\n    pAPI->vkCmdPushConstants2KHR = (PFN_vkCmdPushConstants2KHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdPushConstants2KHR\");\n    pAPI->vkCmdPushDescriptorSet2KHR = (PFN_vkCmdPushDescriptorSet2KHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdPushDescriptorSet2KHR\");\n    pAPI->vkCmdPushDescriptorSetWithTemplate2KHR = (PFN_vkCmdPushDescriptorSetWithTemplate2KHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdPushDescriptorSetWithTemplate2KHR\");\n    pAPI->vkCmdSetDescriptorBufferOffsets2EXT = (PFN_vkCmdSetDescriptorBufferOffsets2EXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetDescriptorBufferOffsets2EXT\");\n    pAPI->vkCmdBindDescriptorBufferEmbeddedSamplers2EXT = (PFN_vkCmdBindDescriptorBufferEmbeddedSamplers2EXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdBindDescriptorBufferEmbeddedSamplers2EXT\");\n    pAPI->vkCmdBindTileMemoryQCOM = (PFN_vkCmdBindTileMemoryQCOM)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdBindTileMemoryQCOM\");\n    pAPI->vkCmdCopyMemoryIndirectKHR = (PFN_vkCmdCopyMemoryIndirectKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdCopyMemoryIndirectKHR\");\n    pAPI->vkCmdCopyMemoryToImageIndirectKHR = (PFN_vkCmdCopyMemoryToImageIndirectKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdCopyMemoryToImageIndirectKHR\");\n    pAPI->vkCmdCopyMemoryIndirectNV = (PFN_vkCmdCopyMemoryIndirectNV)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdCopyMemoryIndirectNV\");\n    pAPI->vkCmdCopyMemoryToImageIndirectNV = (PFN_vkCmdCopyMemoryToImageIndirectNV)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdCopyMemoryToImageIndirectNV\");\n    pAPI->vkCmdDecompressMemoryEXT = (PFN_vkCmdDecompressMemoryEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdDecompressMemoryEXT\");\n    pAPI->vkCmdDecompressMemoryIndirectCountEXT = (PFN_vkCmdDecompressMemoryIndirectCountEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdDecompressMemoryIndirectCountEXT\");\n    pAPI->vkCmdDecompressMemoryNV = (PFN_vkCmdDecompressMemoryNV)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdDecompressMemoryNV\");\n    pAPI->vkCmdDecompressMemoryIndirectCountNV = (PFN_vkCmdDecompressMemoryIndirectCountNV)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdDecompressMemoryIndirectCountNV\");\n    pAPI->vkCreateExternalComputeQueueNV = (PFN_vkCreateExternalComputeQueueNV)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateExternalComputeQueueNV\");\n    pAPI->vkDestroyExternalComputeQueueNV = (PFN_vkDestroyExternalComputeQueueNV)pAPI->vkGetInstanceProcAddr(instance, \"vkDestroyExternalComputeQueueNV\");\n    pAPI->vkGetExternalComputeQueueDataNV = (PFN_vkGetExternalComputeQueueDataNV)pAPI->vkGetInstanceProcAddr(instance, \"vkGetExternalComputeQueueDataNV\");\n    pAPI->vkGetClusterAccelerationStructureBuildSizesNV = (PFN_vkGetClusterAccelerationStructureBuildSizesNV)pAPI->vkGetInstanceProcAddr(instance, \"vkGetClusterAccelerationStructureBuildSizesNV\");\n    pAPI->vkCmdBuildClusterAccelerationStructureIndirectNV = (PFN_vkCmdBuildClusterAccelerationStructureIndirectNV)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdBuildClusterAccelerationStructureIndirectNV\");\n    pAPI->vkGetPartitionedAccelerationStructuresBuildSizesNV = (PFN_vkGetPartitionedAccelerationStructuresBuildSizesNV)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPartitionedAccelerationStructuresBuildSizesNV\");\n    pAPI->vkCmdBuildPartitionedAccelerationStructuresNV = (PFN_vkCmdBuildPartitionedAccelerationStructuresNV)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdBuildPartitionedAccelerationStructuresNV\");\n    pAPI->vkGetGeneratedCommandsMemoryRequirementsEXT = (PFN_vkGetGeneratedCommandsMemoryRequirementsEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkGetGeneratedCommandsMemoryRequirementsEXT\");\n    pAPI->vkCmdPreprocessGeneratedCommandsEXT = (PFN_vkCmdPreprocessGeneratedCommandsEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdPreprocessGeneratedCommandsEXT\");\n    pAPI->vkCmdExecuteGeneratedCommandsEXT = (PFN_vkCmdExecuteGeneratedCommandsEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdExecuteGeneratedCommandsEXT\");\n    pAPI->vkCreateIndirectCommandsLayoutEXT = (PFN_vkCreateIndirectCommandsLayoutEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateIndirectCommandsLayoutEXT\");\n    pAPI->vkDestroyIndirectCommandsLayoutEXT = (PFN_vkDestroyIndirectCommandsLayoutEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkDestroyIndirectCommandsLayoutEXT\");\n    pAPI->vkCreateIndirectExecutionSetEXT = (PFN_vkCreateIndirectExecutionSetEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateIndirectExecutionSetEXT\");\n    pAPI->vkDestroyIndirectExecutionSetEXT = (PFN_vkDestroyIndirectExecutionSetEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkDestroyIndirectExecutionSetEXT\");\n    pAPI->vkUpdateIndirectExecutionSetPipelineEXT = (PFN_vkUpdateIndirectExecutionSetPipelineEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkUpdateIndirectExecutionSetPipelineEXT\");\n    pAPI->vkUpdateIndirectExecutionSetShaderEXT = (PFN_vkUpdateIndirectExecutionSetShaderEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkUpdateIndirectExecutionSetShaderEXT\");\n    pAPI->vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV = (PFN_vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV\");\n    pAPI->vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM = (PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM)pAPI->vkGetInstanceProcAddr(instance, \"vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM\");\n    pAPI->vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM = (PFN_vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM)pAPI->vkGetInstanceProcAddr(instance, \"vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM\");\n    pAPI->vkCreateShaderInstrumentationARM = (PFN_vkCreateShaderInstrumentationARM)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateShaderInstrumentationARM\");\n    pAPI->vkDestroyShaderInstrumentationARM = (PFN_vkDestroyShaderInstrumentationARM)pAPI->vkGetInstanceProcAddr(instance, \"vkDestroyShaderInstrumentationARM\");\n    pAPI->vkCmdBeginShaderInstrumentationARM = (PFN_vkCmdBeginShaderInstrumentationARM)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdBeginShaderInstrumentationARM\");\n    pAPI->vkCmdEndShaderInstrumentationARM = (PFN_vkCmdEndShaderInstrumentationARM)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdEndShaderInstrumentationARM\");\n    pAPI->vkGetShaderInstrumentationValuesARM = (PFN_vkGetShaderInstrumentationValuesARM)pAPI->vkGetInstanceProcAddr(instance, \"vkGetShaderInstrumentationValuesARM\");\n    pAPI->vkClearShaderInstrumentationMetricsARM = (PFN_vkClearShaderInstrumentationMetricsARM)pAPI->vkGetInstanceProcAddr(instance, \"vkClearShaderInstrumentationMetricsARM\");\n    pAPI->vkCmdEndRendering2EXT = (PFN_vkCmdEndRendering2EXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdEndRendering2EXT\");\n    pAPI->vkCmdBeginCustomResolveEXT = (PFN_vkCmdBeginCustomResolveEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdBeginCustomResolveEXT\");\n    pAPI->vkCmdEndRendering2KHR = (PFN_vkCmdEndRendering2KHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdEndRendering2KHR\");\n    pAPI->vkCmdSetComputeOccupancyPriorityNV = (PFN_vkCmdSetComputeOccupancyPriorityNV)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdSetComputeOccupancyPriorityNV\");\n#ifdef VK_USE_PLATFORM_XLIB_KHR\n    pAPI->vkCreateXlibSurfaceKHR = (PFN_vkCreateXlibSurfaceKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateXlibSurfaceKHR\");\n    pAPI->vkGetPhysicalDeviceXlibPresentationSupportKHR = (PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceXlibPresentationSupportKHR\");\n#endif /*VK_USE_PLATFORM_XLIB_KHR*/\n#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT\n    pAPI->vkAcquireXlibDisplayEXT = (PFN_vkAcquireXlibDisplayEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkAcquireXlibDisplayEXT\");\n    pAPI->vkGetRandROutputDisplayEXT = (PFN_vkGetRandROutputDisplayEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkGetRandROutputDisplayEXT\");\n#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/\n#ifdef VK_USE_PLATFORM_XCB_KHR\n    pAPI->vkCreateXcbSurfaceKHR = (PFN_vkCreateXcbSurfaceKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateXcbSurfaceKHR\");\n    pAPI->vkGetPhysicalDeviceXcbPresentationSupportKHR = (PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceXcbPresentationSupportKHR\");\n#endif /*VK_USE_PLATFORM_XCB_KHR*/\n#ifdef VK_USE_PLATFORM_WAYLAND_KHR\n    pAPI->vkCreateWaylandSurfaceKHR = (PFN_vkCreateWaylandSurfaceKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateWaylandSurfaceKHR\");\n    pAPI->vkGetPhysicalDeviceWaylandPresentationSupportKHR = (PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceWaylandPresentationSupportKHR\");\n#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/\n#ifdef VK_USE_PLATFORM_UBM_SEC\n    pAPI->vkCreateUbmSurfaceSEC = (PFN_vkCreateUbmSurfaceSEC)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateUbmSurfaceSEC\");\n    pAPI->vkGetPhysicalDeviceUbmPresentationSupportSEC = (PFN_vkGetPhysicalDeviceUbmPresentationSupportSEC)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceUbmPresentationSupportSEC\");\n#endif /*VK_USE_PLATFORM_UBM_SEC*/\n#ifdef VK_USE_PLATFORM_DIRECTFB_EXT\n    pAPI->vkCreateDirectFBSurfaceEXT = (PFN_vkCreateDirectFBSurfaceEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateDirectFBSurfaceEXT\");\n    pAPI->vkGetPhysicalDeviceDirectFBPresentationSupportEXT = (PFN_vkGetPhysicalDeviceDirectFBPresentationSupportEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceDirectFBPresentationSupportEXT\");\n#endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/\n#ifdef VK_USE_PLATFORM_ANDROID_KHR\n    pAPI->vkCreateAndroidSurfaceKHR = (PFN_vkCreateAndroidSurfaceKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateAndroidSurfaceKHR\");\n    pAPI->vkGetAndroidHardwareBufferPropertiesANDROID = (PFN_vkGetAndroidHardwareBufferPropertiesANDROID)pAPI->vkGetInstanceProcAddr(instance, \"vkGetAndroidHardwareBufferPropertiesANDROID\");\n    pAPI->vkGetMemoryAndroidHardwareBufferANDROID = (PFN_vkGetMemoryAndroidHardwareBufferANDROID)pAPI->vkGetInstanceProcAddr(instance, \"vkGetMemoryAndroidHardwareBufferANDROID\");\n#endif /*VK_USE_PLATFORM_ANDROID_KHR*/\n#ifdef VK_USE_PLATFORM_WIN32_KHR\n    pAPI->vkCreateWin32SurfaceKHR = (PFN_vkCreateWin32SurfaceKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateWin32SurfaceKHR\");\n    pAPI->vkGetPhysicalDeviceWin32PresentationSupportKHR = (PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceWin32PresentationSupportKHR\");\n    pAPI->vkGetMemoryWin32HandleKHR = (PFN_vkGetMemoryWin32HandleKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetMemoryWin32HandleKHR\");\n    pAPI->vkGetMemoryWin32HandlePropertiesKHR = (PFN_vkGetMemoryWin32HandlePropertiesKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetMemoryWin32HandlePropertiesKHR\");\n    pAPI->vkGetMemoryWin32HandleNV = (PFN_vkGetMemoryWin32HandleNV)pAPI->vkGetInstanceProcAddr(instance, \"vkGetMemoryWin32HandleNV\");\n    pAPI->vkImportSemaphoreWin32HandleKHR = (PFN_vkImportSemaphoreWin32HandleKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkImportSemaphoreWin32HandleKHR\");\n    pAPI->vkGetSemaphoreWin32HandleKHR = (PFN_vkGetSemaphoreWin32HandleKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetSemaphoreWin32HandleKHR\");\n    pAPI->vkImportFenceWin32HandleKHR = (PFN_vkImportFenceWin32HandleKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkImportFenceWin32HandleKHR\");\n    pAPI->vkGetFenceWin32HandleKHR = (PFN_vkGetFenceWin32HandleKHR)pAPI->vkGetInstanceProcAddr(instance, \"vkGetFenceWin32HandleKHR\");\n    pAPI->vkGetPhysicalDeviceSurfacePresentModes2EXT = (PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceSurfacePresentModes2EXT\");\n    pAPI->vkAcquireFullScreenExclusiveModeEXT = (PFN_vkAcquireFullScreenExclusiveModeEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkAcquireFullScreenExclusiveModeEXT\");\n    pAPI->vkReleaseFullScreenExclusiveModeEXT = (PFN_vkReleaseFullScreenExclusiveModeEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkReleaseFullScreenExclusiveModeEXT\");\n    pAPI->vkGetDeviceGroupSurfacePresentModes2EXT = (PFN_vkGetDeviceGroupSurfacePresentModes2EXT)pAPI->vkGetInstanceProcAddr(instance, \"vkGetDeviceGroupSurfacePresentModes2EXT\");\n    pAPI->vkAcquireWinrtDisplayNV = (PFN_vkAcquireWinrtDisplayNV)pAPI->vkGetInstanceProcAddr(instance, \"vkAcquireWinrtDisplayNV\");\n    pAPI->vkGetWinrtDisplayNV = (PFN_vkGetWinrtDisplayNV)pAPI->vkGetInstanceProcAddr(instance, \"vkGetWinrtDisplayNV\");\n#endif /*VK_USE_PLATFORM_WIN32_KHR*/\n#ifdef VK_USE_PLATFORM_VI_NN\n    pAPI->vkCreateViSurfaceNN = (PFN_vkCreateViSurfaceNN)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateViSurfaceNN\");\n#endif /*VK_USE_PLATFORM_VI_NN*/\n#ifdef VK_USE_PLATFORM_IOS_MVK\n    pAPI->vkCreateIOSSurfaceMVK = (PFN_vkCreateIOSSurfaceMVK)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateIOSSurfaceMVK\");\n#endif /*VK_USE_PLATFORM_IOS_MVK*/\n#ifdef VK_USE_PLATFORM_MACOS_MVK\n    pAPI->vkCreateMacOSSurfaceMVK = (PFN_vkCreateMacOSSurfaceMVK)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateMacOSSurfaceMVK\");\n#endif /*VK_USE_PLATFORM_MACOS_MVK*/\n#ifdef VK_USE_PLATFORM_METAL_EXT\n    pAPI->vkCreateMetalSurfaceEXT = (PFN_vkCreateMetalSurfaceEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateMetalSurfaceEXT\");\n    pAPI->vkExportMetalObjectsEXT = (PFN_vkExportMetalObjectsEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkExportMetalObjectsEXT\");\n    pAPI->vkGetMemoryMetalHandleEXT = (PFN_vkGetMemoryMetalHandleEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkGetMemoryMetalHandleEXT\");\n    pAPI->vkGetMemoryMetalHandlePropertiesEXT = (PFN_vkGetMemoryMetalHandlePropertiesEXT)pAPI->vkGetInstanceProcAddr(instance, \"vkGetMemoryMetalHandlePropertiesEXT\");\n#endif /*VK_USE_PLATFORM_METAL_EXT*/\n#ifdef VK_USE_PLATFORM_FUCHSIA\n    pAPI->vkCreateImagePipeSurfaceFUCHSIA = (PFN_vkCreateImagePipeSurfaceFUCHSIA)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateImagePipeSurfaceFUCHSIA\");\n    pAPI->vkGetMemoryZirconHandleFUCHSIA = (PFN_vkGetMemoryZirconHandleFUCHSIA)pAPI->vkGetInstanceProcAddr(instance, \"vkGetMemoryZirconHandleFUCHSIA\");\n    pAPI->vkGetMemoryZirconHandlePropertiesFUCHSIA = (PFN_vkGetMemoryZirconHandlePropertiesFUCHSIA)pAPI->vkGetInstanceProcAddr(instance, \"vkGetMemoryZirconHandlePropertiesFUCHSIA\");\n    pAPI->vkImportSemaphoreZirconHandleFUCHSIA = (PFN_vkImportSemaphoreZirconHandleFUCHSIA)pAPI->vkGetInstanceProcAddr(instance, \"vkImportSemaphoreZirconHandleFUCHSIA\");\n    pAPI->vkGetSemaphoreZirconHandleFUCHSIA = (PFN_vkGetSemaphoreZirconHandleFUCHSIA)pAPI->vkGetInstanceProcAddr(instance, \"vkGetSemaphoreZirconHandleFUCHSIA\");\n    pAPI->vkCreateBufferCollectionFUCHSIA = (PFN_vkCreateBufferCollectionFUCHSIA)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateBufferCollectionFUCHSIA\");\n    pAPI->vkSetBufferCollectionImageConstraintsFUCHSIA = (PFN_vkSetBufferCollectionImageConstraintsFUCHSIA)pAPI->vkGetInstanceProcAddr(instance, \"vkSetBufferCollectionImageConstraintsFUCHSIA\");\n    pAPI->vkSetBufferCollectionBufferConstraintsFUCHSIA = (PFN_vkSetBufferCollectionBufferConstraintsFUCHSIA)pAPI->vkGetInstanceProcAddr(instance, \"vkSetBufferCollectionBufferConstraintsFUCHSIA\");\n    pAPI->vkDestroyBufferCollectionFUCHSIA = (PFN_vkDestroyBufferCollectionFUCHSIA)pAPI->vkGetInstanceProcAddr(instance, \"vkDestroyBufferCollectionFUCHSIA\");\n    pAPI->vkGetBufferCollectionPropertiesFUCHSIA = (PFN_vkGetBufferCollectionPropertiesFUCHSIA)pAPI->vkGetInstanceProcAddr(instance, \"vkGetBufferCollectionPropertiesFUCHSIA\");\n#endif /*VK_USE_PLATFORM_FUCHSIA*/\n#ifdef VK_USE_PLATFORM_GGP\n    pAPI->vkCreateStreamDescriptorSurfaceGGP = (PFN_vkCreateStreamDescriptorSurfaceGGP)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateStreamDescriptorSurfaceGGP\");\n#endif /*VK_USE_PLATFORM_GGP*/\n#ifdef VK_USE_PLATFORM_SCI\n    pAPI->vkGetMemorySciBufNV = (PFN_vkGetMemorySciBufNV)pAPI->vkGetInstanceProcAddr(instance, \"vkGetMemorySciBufNV\");\n    pAPI->vkGetPhysicalDeviceExternalMemorySciBufPropertiesNV = (PFN_vkGetPhysicalDeviceExternalMemorySciBufPropertiesNV)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceExternalMemorySciBufPropertiesNV\");\n    pAPI->vkGetPhysicalDeviceSciBufAttributesNV = (PFN_vkGetPhysicalDeviceSciBufAttributesNV)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceSciBufAttributesNV\");\n    pAPI->vkCreateSemaphoreSciSyncPoolNV = (PFN_vkCreateSemaphoreSciSyncPoolNV)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateSemaphoreSciSyncPoolNV\");\n    pAPI->vkDestroySemaphoreSciSyncPoolNV = (PFN_vkDestroySemaphoreSciSyncPoolNV)pAPI->vkGetInstanceProcAddr(instance, \"vkDestroySemaphoreSciSyncPoolNV\");\n    pAPI->vkGetFenceSciSyncFenceNV = (PFN_vkGetFenceSciSyncFenceNV)pAPI->vkGetInstanceProcAddr(instance, \"vkGetFenceSciSyncFenceNV\");\n    pAPI->vkGetFenceSciSyncObjNV = (PFN_vkGetFenceSciSyncObjNV)pAPI->vkGetInstanceProcAddr(instance, \"vkGetFenceSciSyncObjNV\");\n    pAPI->vkImportFenceSciSyncFenceNV = (PFN_vkImportFenceSciSyncFenceNV)pAPI->vkGetInstanceProcAddr(instance, \"vkImportFenceSciSyncFenceNV\");\n    pAPI->vkImportFenceSciSyncObjNV = (PFN_vkImportFenceSciSyncObjNV)pAPI->vkGetInstanceProcAddr(instance, \"vkImportFenceSciSyncObjNV\");\n    pAPI->vkGetPhysicalDeviceSciSyncAttributesNV = (PFN_vkGetPhysicalDeviceSciSyncAttributesNV)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceSciSyncAttributesNV\");\n    pAPI->vkGetSemaphoreSciSyncObjNV = (PFN_vkGetSemaphoreSciSyncObjNV)pAPI->vkGetInstanceProcAddr(instance, \"vkGetSemaphoreSciSyncObjNV\");\n    pAPI->vkImportSemaphoreSciSyncObjNV = (PFN_vkImportSemaphoreSciSyncObjNV)pAPI->vkGetInstanceProcAddr(instance, \"vkImportSemaphoreSciSyncObjNV\");\n#endif /*VK_USE_PLATFORM_SCI*/\n#ifdef VK_ENABLE_BETA_EXTENSIONS\n    pAPI->vkCreateExecutionGraphPipelinesAMDX = (PFN_vkCreateExecutionGraphPipelinesAMDX)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateExecutionGraphPipelinesAMDX\");\n    pAPI->vkGetExecutionGraphPipelineScratchSizeAMDX = (PFN_vkGetExecutionGraphPipelineScratchSizeAMDX)pAPI->vkGetInstanceProcAddr(instance, \"vkGetExecutionGraphPipelineScratchSizeAMDX\");\n    pAPI->vkGetExecutionGraphPipelineNodeIndexAMDX = (PFN_vkGetExecutionGraphPipelineNodeIndexAMDX)pAPI->vkGetInstanceProcAddr(instance, \"vkGetExecutionGraphPipelineNodeIndexAMDX\");\n    pAPI->vkCmdInitializeGraphScratchMemoryAMDX = (PFN_vkCmdInitializeGraphScratchMemoryAMDX)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdInitializeGraphScratchMemoryAMDX\");\n    pAPI->vkCmdDispatchGraphAMDX = (PFN_vkCmdDispatchGraphAMDX)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdDispatchGraphAMDX\");\n    pAPI->vkCmdDispatchGraphIndirectAMDX = (PFN_vkCmdDispatchGraphIndirectAMDX)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdDispatchGraphIndirectAMDX\");\n    pAPI->vkCmdDispatchGraphIndirectCountAMDX = (PFN_vkCmdDispatchGraphIndirectCountAMDX)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdDispatchGraphIndirectCountAMDX\");\n    pAPI->vkCreateCudaModuleNV = (PFN_vkCreateCudaModuleNV)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateCudaModuleNV\");\n    pAPI->vkGetCudaModuleCacheNV = (PFN_vkGetCudaModuleCacheNV)pAPI->vkGetInstanceProcAddr(instance, \"vkGetCudaModuleCacheNV\");\n    pAPI->vkCreateCudaFunctionNV = (PFN_vkCreateCudaFunctionNV)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateCudaFunctionNV\");\n    pAPI->vkDestroyCudaModuleNV = (PFN_vkDestroyCudaModuleNV)pAPI->vkGetInstanceProcAddr(instance, \"vkDestroyCudaModuleNV\");\n    pAPI->vkDestroyCudaFunctionNV = (PFN_vkDestroyCudaFunctionNV)pAPI->vkGetInstanceProcAddr(instance, \"vkDestroyCudaFunctionNV\");\n    pAPI->vkCmdCudaLaunchKernelNV = (PFN_vkCmdCudaLaunchKernelNV)pAPI->vkGetInstanceProcAddr(instance, \"vkCmdCudaLaunchKernelNV\");\n#endif /*VK_ENABLE_BETA_EXTENSIONS*/\n#ifdef VK_USE_PLATFORM_SCREEN_QNX\n    pAPI->vkCreateScreenSurfaceQNX = (PFN_vkCreateScreenSurfaceQNX)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateScreenSurfaceQNX\");\n    pAPI->vkGetPhysicalDeviceScreenPresentationSupportQNX = (PFN_vkGetPhysicalDeviceScreenPresentationSupportQNX)pAPI->vkGetInstanceProcAddr(instance, \"vkGetPhysicalDeviceScreenPresentationSupportQNX\");\n    pAPI->vkGetScreenBufferPropertiesQNX = (PFN_vkGetScreenBufferPropertiesQNX)pAPI->vkGetInstanceProcAddr(instance, \"vkGetScreenBufferPropertiesQNX\");\n#endif /*VK_USE_PLATFORM_SCREEN_QNX*/\n#ifdef VK_USE_PLATFORM_OHOS\n    pAPI->vkGetNativeBufferPropertiesOHOS = (PFN_vkGetNativeBufferPropertiesOHOS)pAPI->vkGetInstanceProcAddr(instance, \"vkGetNativeBufferPropertiesOHOS\");\n    pAPI->vkGetMemoryNativeBufferOHOS = (PFN_vkGetMemoryNativeBufferOHOS)pAPI->vkGetInstanceProcAddr(instance, \"vkGetMemoryNativeBufferOHOS\");\n    pAPI->vkCreateSurfaceOHOS = (PFN_vkCreateSurfaceOHOS)pAPI->vkGetInstanceProcAddr(instance, \"vkCreateSurfaceOHOS\");\n#endif /*VK_USE_PLATFORM_OHOS*/\n\n    return VK_SUCCESS;\n}\n\nVkResult vkbInitDeviceAPI(VkDevice device, VkbAPI* pAPI)\n{\n    if (g_vkbInitCount == 0) {\n        return VK_ERROR_INITIALIZATION_FAILED;  /* vkbind not initialized. */\n    }\n\n    if (pAPI == NULL) {\n        return VK_ERROR_INITIALIZATION_FAILED;\n    }\n\n    /* We need to handle vkGetDeviceProcAddr() in a special way to ensure it's using the device-specific version instead of the per-instance version. */\n    if (pAPI->vkGetDeviceProcAddr == NULL) {\n        #if !defined(VKBIND_NO_GLOBAL_API)\n        {\n            pAPI->vkGetDeviceProcAddr = vkGetDeviceProcAddr;\n        }\n        #endif\n    }\n\n    if (pAPI->vkGetDeviceProcAddr == NULL) {\n        return VK_ERROR_INITIALIZATION_FAILED;  /* Don't have access to vkGetDeviceProcAddr(). Make sure vkbInitInstanceAPI() is called first on pAPI. */\n    }\n\n    pAPI->vkGetDeviceProcAddr = (PFN_vkGetDeviceProcAddr)pAPI->vkGetDeviceProcAddr(device, \"vkGetDeviceProcAddr\");\n    pAPI->vkDestroyDevice = (PFN_vkDestroyDevice)pAPI->vkGetDeviceProcAddr(device, \"vkDestroyDevice\");\n    pAPI->vkGetDeviceQueue = (PFN_vkGetDeviceQueue)pAPI->vkGetDeviceProcAddr(device, \"vkGetDeviceQueue\");\n    pAPI->vkQueueSubmit = (PFN_vkQueueSubmit)pAPI->vkGetDeviceProcAddr(device, \"vkQueueSubmit\");\n    pAPI->vkQueueWaitIdle = (PFN_vkQueueWaitIdle)pAPI->vkGetDeviceProcAddr(device, \"vkQueueWaitIdle\");\n    pAPI->vkDeviceWaitIdle = (PFN_vkDeviceWaitIdle)pAPI->vkGetDeviceProcAddr(device, \"vkDeviceWaitIdle\");\n    pAPI->vkAllocateMemory = (PFN_vkAllocateMemory)pAPI->vkGetDeviceProcAddr(device, \"vkAllocateMemory\");\n    pAPI->vkFreeMemory = (PFN_vkFreeMemory)pAPI->vkGetDeviceProcAddr(device, \"vkFreeMemory\");\n    pAPI->vkMapMemory = (PFN_vkMapMemory)pAPI->vkGetDeviceProcAddr(device, \"vkMapMemory\");\n    pAPI->vkUnmapMemory = (PFN_vkUnmapMemory)pAPI->vkGetDeviceProcAddr(device, \"vkUnmapMemory\");\n    pAPI->vkFlushMappedMemoryRanges = (PFN_vkFlushMappedMemoryRanges)pAPI->vkGetDeviceProcAddr(device, \"vkFlushMappedMemoryRanges\");\n    pAPI->vkInvalidateMappedMemoryRanges = (PFN_vkInvalidateMappedMemoryRanges)pAPI->vkGetDeviceProcAddr(device, \"vkInvalidateMappedMemoryRanges\");\n    pAPI->vkGetDeviceMemoryCommitment = (PFN_vkGetDeviceMemoryCommitment)pAPI->vkGetDeviceProcAddr(device, \"vkGetDeviceMemoryCommitment\");\n    pAPI->vkBindBufferMemory = (PFN_vkBindBufferMemory)pAPI->vkGetDeviceProcAddr(device, \"vkBindBufferMemory\");\n    pAPI->vkBindImageMemory = (PFN_vkBindImageMemory)pAPI->vkGetDeviceProcAddr(device, \"vkBindImageMemory\");\n    pAPI->vkGetBufferMemoryRequirements = (PFN_vkGetBufferMemoryRequirements)pAPI->vkGetDeviceProcAddr(device, \"vkGetBufferMemoryRequirements\");\n    pAPI->vkGetImageMemoryRequirements = (PFN_vkGetImageMemoryRequirements)pAPI->vkGetDeviceProcAddr(device, \"vkGetImageMemoryRequirements\");\n    pAPI->vkGetImageSparseMemoryRequirements = (PFN_vkGetImageSparseMemoryRequirements)pAPI->vkGetDeviceProcAddr(device, \"vkGetImageSparseMemoryRequirements\");\n    pAPI->vkQueueBindSparse = (PFN_vkQueueBindSparse)pAPI->vkGetDeviceProcAddr(device, \"vkQueueBindSparse\");\n    pAPI->vkCreateFence = (PFN_vkCreateFence)pAPI->vkGetDeviceProcAddr(device, \"vkCreateFence\");\n    pAPI->vkDestroyFence = (PFN_vkDestroyFence)pAPI->vkGetDeviceProcAddr(device, \"vkDestroyFence\");\n    pAPI->vkResetFences = (PFN_vkResetFences)pAPI->vkGetDeviceProcAddr(device, \"vkResetFences\");\n    pAPI->vkGetFenceStatus = (PFN_vkGetFenceStatus)pAPI->vkGetDeviceProcAddr(device, \"vkGetFenceStatus\");\n    pAPI->vkWaitForFences = (PFN_vkWaitForFences)pAPI->vkGetDeviceProcAddr(device, \"vkWaitForFences\");\n    pAPI->vkCreateSemaphore = (PFN_vkCreateSemaphore)pAPI->vkGetDeviceProcAddr(device, \"vkCreateSemaphore\");\n    pAPI->vkDestroySemaphore = (PFN_vkDestroySemaphore)pAPI->vkGetDeviceProcAddr(device, \"vkDestroySemaphore\");\n    pAPI->vkCreateQueryPool = (PFN_vkCreateQueryPool)pAPI->vkGetDeviceProcAddr(device, \"vkCreateQueryPool\");\n    pAPI->vkDestroyQueryPool = (PFN_vkDestroyQueryPool)pAPI->vkGetDeviceProcAddr(device, \"vkDestroyQueryPool\");\n    pAPI->vkGetQueryPoolResults = (PFN_vkGetQueryPoolResults)pAPI->vkGetDeviceProcAddr(device, \"vkGetQueryPoolResults\");\n    pAPI->vkCreateBuffer = (PFN_vkCreateBuffer)pAPI->vkGetDeviceProcAddr(device, \"vkCreateBuffer\");\n    pAPI->vkDestroyBuffer = (PFN_vkDestroyBuffer)pAPI->vkGetDeviceProcAddr(device, \"vkDestroyBuffer\");\n    pAPI->vkCreateImage = (PFN_vkCreateImage)pAPI->vkGetDeviceProcAddr(device, \"vkCreateImage\");\n    pAPI->vkDestroyImage = (PFN_vkDestroyImage)pAPI->vkGetDeviceProcAddr(device, \"vkDestroyImage\");\n    pAPI->vkGetImageSubresourceLayout = (PFN_vkGetImageSubresourceLayout)pAPI->vkGetDeviceProcAddr(device, \"vkGetImageSubresourceLayout\");\n    pAPI->vkCreateImageView = (PFN_vkCreateImageView)pAPI->vkGetDeviceProcAddr(device, \"vkCreateImageView\");\n    pAPI->vkDestroyImageView = (PFN_vkDestroyImageView)pAPI->vkGetDeviceProcAddr(device, \"vkDestroyImageView\");\n    pAPI->vkCreateCommandPool = (PFN_vkCreateCommandPool)pAPI->vkGetDeviceProcAddr(device, \"vkCreateCommandPool\");\n    pAPI->vkDestroyCommandPool = (PFN_vkDestroyCommandPool)pAPI->vkGetDeviceProcAddr(device, \"vkDestroyCommandPool\");\n    pAPI->vkResetCommandPool = (PFN_vkResetCommandPool)pAPI->vkGetDeviceProcAddr(device, \"vkResetCommandPool\");\n    pAPI->vkAllocateCommandBuffers = (PFN_vkAllocateCommandBuffers)pAPI->vkGetDeviceProcAddr(device, \"vkAllocateCommandBuffers\");\n    pAPI->vkFreeCommandBuffers = (PFN_vkFreeCommandBuffers)pAPI->vkGetDeviceProcAddr(device, \"vkFreeCommandBuffers\");\n    pAPI->vkBeginCommandBuffer = (PFN_vkBeginCommandBuffer)pAPI->vkGetDeviceProcAddr(device, \"vkBeginCommandBuffer\");\n    pAPI->vkEndCommandBuffer = (PFN_vkEndCommandBuffer)pAPI->vkGetDeviceProcAddr(device, \"vkEndCommandBuffer\");\n    pAPI->vkResetCommandBuffer = (PFN_vkResetCommandBuffer)pAPI->vkGetDeviceProcAddr(device, \"vkResetCommandBuffer\");\n    pAPI->vkCmdCopyBuffer = (PFN_vkCmdCopyBuffer)pAPI->vkGetDeviceProcAddr(device, \"vkCmdCopyBuffer\");\n    pAPI->vkCmdCopyImage = (PFN_vkCmdCopyImage)pAPI->vkGetDeviceProcAddr(device, \"vkCmdCopyImage\");\n    pAPI->vkCmdCopyBufferToImage = (PFN_vkCmdCopyBufferToImage)pAPI->vkGetDeviceProcAddr(device, \"vkCmdCopyBufferToImage\");\n    pAPI->vkCmdCopyImageToBuffer = (PFN_vkCmdCopyImageToBuffer)pAPI->vkGetDeviceProcAddr(device, \"vkCmdCopyImageToBuffer\");\n    pAPI->vkCmdUpdateBuffer = (PFN_vkCmdUpdateBuffer)pAPI->vkGetDeviceProcAddr(device, \"vkCmdUpdateBuffer\");\n    pAPI->vkCmdFillBuffer = (PFN_vkCmdFillBuffer)pAPI->vkGetDeviceProcAddr(device, \"vkCmdFillBuffer\");\n    pAPI->vkCmdPipelineBarrier = (PFN_vkCmdPipelineBarrier)pAPI->vkGetDeviceProcAddr(device, \"vkCmdPipelineBarrier\");\n    pAPI->vkCmdBeginQuery = (PFN_vkCmdBeginQuery)pAPI->vkGetDeviceProcAddr(device, \"vkCmdBeginQuery\");\n    pAPI->vkCmdEndQuery = (PFN_vkCmdEndQuery)pAPI->vkGetDeviceProcAddr(device, \"vkCmdEndQuery\");\n    pAPI->vkCmdResetQueryPool = (PFN_vkCmdResetQueryPool)pAPI->vkGetDeviceProcAddr(device, \"vkCmdResetQueryPool\");\n    pAPI->vkCmdWriteTimestamp = (PFN_vkCmdWriteTimestamp)pAPI->vkGetDeviceProcAddr(device, \"vkCmdWriteTimestamp\");\n    pAPI->vkCmdCopyQueryPoolResults = (PFN_vkCmdCopyQueryPoolResults)pAPI->vkGetDeviceProcAddr(device, \"vkCmdCopyQueryPoolResults\");\n    pAPI->vkCmdExecuteCommands = (PFN_vkCmdExecuteCommands)pAPI->vkGetDeviceProcAddr(device, \"vkCmdExecuteCommands\");\n    pAPI->vkCreateEvent = (PFN_vkCreateEvent)pAPI->vkGetDeviceProcAddr(device, \"vkCreateEvent\");\n    pAPI->vkDestroyEvent = (PFN_vkDestroyEvent)pAPI->vkGetDeviceProcAddr(device, \"vkDestroyEvent\");\n    pAPI->vkGetEventStatus = (PFN_vkGetEventStatus)pAPI->vkGetDeviceProcAddr(device, \"vkGetEventStatus\");\n    pAPI->vkSetEvent = (PFN_vkSetEvent)pAPI->vkGetDeviceProcAddr(device, \"vkSetEvent\");\n    pAPI->vkResetEvent = (PFN_vkResetEvent)pAPI->vkGetDeviceProcAddr(device, \"vkResetEvent\");\n    pAPI->vkCreateBufferView = (PFN_vkCreateBufferView)pAPI->vkGetDeviceProcAddr(device, \"vkCreateBufferView\");\n    pAPI->vkDestroyBufferView = (PFN_vkDestroyBufferView)pAPI->vkGetDeviceProcAddr(device, \"vkDestroyBufferView\");\n    pAPI->vkCreateShaderModule = (PFN_vkCreateShaderModule)pAPI->vkGetDeviceProcAddr(device, \"vkCreateShaderModule\");\n    pAPI->vkDestroyShaderModule = (PFN_vkDestroyShaderModule)pAPI->vkGetDeviceProcAddr(device, \"vkDestroyShaderModule\");\n    pAPI->vkCreatePipelineCache = (PFN_vkCreatePipelineCache)pAPI->vkGetDeviceProcAddr(device, \"vkCreatePipelineCache\");\n    pAPI->vkDestroyPipelineCache = (PFN_vkDestroyPipelineCache)pAPI->vkGetDeviceProcAddr(device, \"vkDestroyPipelineCache\");\n    pAPI->vkGetPipelineCacheData = (PFN_vkGetPipelineCacheData)pAPI->vkGetDeviceProcAddr(device, \"vkGetPipelineCacheData\");\n    pAPI->vkMergePipelineCaches = (PFN_vkMergePipelineCaches)pAPI->vkGetDeviceProcAddr(device, \"vkMergePipelineCaches\");\n    pAPI->vkCreateComputePipelines = (PFN_vkCreateComputePipelines)pAPI->vkGetDeviceProcAddr(device, \"vkCreateComputePipelines\");\n    pAPI->vkDestroyPipeline = (PFN_vkDestroyPipeline)pAPI->vkGetDeviceProcAddr(device, \"vkDestroyPipeline\");\n    pAPI->vkCreatePipelineLayout = (PFN_vkCreatePipelineLayout)pAPI->vkGetDeviceProcAddr(device, \"vkCreatePipelineLayout\");\n    pAPI->vkDestroyPipelineLayout = (PFN_vkDestroyPipelineLayout)pAPI->vkGetDeviceProcAddr(device, \"vkDestroyPipelineLayout\");\n    pAPI->vkCreateSampler = (PFN_vkCreateSampler)pAPI->vkGetDeviceProcAddr(device, \"vkCreateSampler\");\n    pAPI->vkDestroySampler = (PFN_vkDestroySampler)pAPI->vkGetDeviceProcAddr(device, \"vkDestroySampler\");\n    pAPI->vkCreateDescriptorSetLayout = (PFN_vkCreateDescriptorSetLayout)pAPI->vkGetDeviceProcAddr(device, \"vkCreateDescriptorSetLayout\");\n    pAPI->vkDestroyDescriptorSetLayout = (PFN_vkDestroyDescriptorSetLayout)pAPI->vkGetDeviceProcAddr(device, \"vkDestroyDescriptorSetLayout\");\n    pAPI->vkCreateDescriptorPool = (PFN_vkCreateDescriptorPool)pAPI->vkGetDeviceProcAddr(device, \"vkCreateDescriptorPool\");\n    pAPI->vkDestroyDescriptorPool = (PFN_vkDestroyDescriptorPool)pAPI->vkGetDeviceProcAddr(device, \"vkDestroyDescriptorPool\");\n    pAPI->vkResetDescriptorPool = (PFN_vkResetDescriptorPool)pAPI->vkGetDeviceProcAddr(device, \"vkResetDescriptorPool\");\n    pAPI->vkAllocateDescriptorSets = (PFN_vkAllocateDescriptorSets)pAPI->vkGetDeviceProcAddr(device, \"vkAllocateDescriptorSets\");\n    pAPI->vkFreeDescriptorSets = (PFN_vkFreeDescriptorSets)pAPI->vkGetDeviceProcAddr(device, \"vkFreeDescriptorSets\");\n    pAPI->vkUpdateDescriptorSets = (PFN_vkUpdateDescriptorSets)pAPI->vkGetDeviceProcAddr(device, \"vkUpdateDescriptorSets\");\n    pAPI->vkCmdBindPipeline = (PFN_vkCmdBindPipeline)pAPI->vkGetDeviceProcAddr(device, \"vkCmdBindPipeline\");\n    pAPI->vkCmdBindDescriptorSets = (PFN_vkCmdBindDescriptorSets)pAPI->vkGetDeviceProcAddr(device, \"vkCmdBindDescriptorSets\");\n    pAPI->vkCmdClearColorImage = (PFN_vkCmdClearColorImage)pAPI->vkGetDeviceProcAddr(device, \"vkCmdClearColorImage\");\n    pAPI->vkCmdDispatch = (PFN_vkCmdDispatch)pAPI->vkGetDeviceProcAddr(device, \"vkCmdDispatch\");\n    pAPI->vkCmdDispatchIndirect = (PFN_vkCmdDispatchIndirect)pAPI->vkGetDeviceProcAddr(device, \"vkCmdDispatchIndirect\");\n    pAPI->vkCmdSetEvent = (PFN_vkCmdSetEvent)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetEvent\");\n    pAPI->vkCmdResetEvent = (PFN_vkCmdResetEvent)pAPI->vkGetDeviceProcAddr(device, \"vkCmdResetEvent\");\n    pAPI->vkCmdWaitEvents = (PFN_vkCmdWaitEvents)pAPI->vkGetDeviceProcAddr(device, \"vkCmdWaitEvents\");\n    pAPI->vkCmdPushConstants = (PFN_vkCmdPushConstants)pAPI->vkGetDeviceProcAddr(device, \"vkCmdPushConstants\");\n    pAPI->vkCreateGraphicsPipelines = (PFN_vkCreateGraphicsPipelines)pAPI->vkGetDeviceProcAddr(device, \"vkCreateGraphicsPipelines\");\n    pAPI->vkCreateFramebuffer = (PFN_vkCreateFramebuffer)pAPI->vkGetDeviceProcAddr(device, \"vkCreateFramebuffer\");\n    pAPI->vkDestroyFramebuffer = (PFN_vkDestroyFramebuffer)pAPI->vkGetDeviceProcAddr(device, \"vkDestroyFramebuffer\");\n    pAPI->vkCreateRenderPass = (PFN_vkCreateRenderPass)pAPI->vkGetDeviceProcAddr(device, \"vkCreateRenderPass\");\n    pAPI->vkDestroyRenderPass = (PFN_vkDestroyRenderPass)pAPI->vkGetDeviceProcAddr(device, \"vkDestroyRenderPass\");\n    pAPI->vkGetRenderAreaGranularity = (PFN_vkGetRenderAreaGranularity)pAPI->vkGetDeviceProcAddr(device, \"vkGetRenderAreaGranularity\");\n    pAPI->vkCmdSetViewport = (PFN_vkCmdSetViewport)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetViewport\");\n    pAPI->vkCmdSetScissor = (PFN_vkCmdSetScissor)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetScissor\");\n    pAPI->vkCmdSetLineWidth = (PFN_vkCmdSetLineWidth)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetLineWidth\");\n    pAPI->vkCmdSetDepthBias = (PFN_vkCmdSetDepthBias)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetDepthBias\");\n    pAPI->vkCmdSetBlendConstants = (PFN_vkCmdSetBlendConstants)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetBlendConstants\");\n    pAPI->vkCmdSetDepthBounds = (PFN_vkCmdSetDepthBounds)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetDepthBounds\");\n    pAPI->vkCmdSetStencilCompareMask = (PFN_vkCmdSetStencilCompareMask)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetStencilCompareMask\");\n    pAPI->vkCmdSetStencilWriteMask = (PFN_vkCmdSetStencilWriteMask)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetStencilWriteMask\");\n    pAPI->vkCmdSetStencilReference = (PFN_vkCmdSetStencilReference)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetStencilReference\");\n    pAPI->vkCmdBindIndexBuffer = (PFN_vkCmdBindIndexBuffer)pAPI->vkGetDeviceProcAddr(device, \"vkCmdBindIndexBuffer\");\n    pAPI->vkCmdBindVertexBuffers = (PFN_vkCmdBindVertexBuffers)pAPI->vkGetDeviceProcAddr(device, \"vkCmdBindVertexBuffers\");\n    pAPI->vkCmdDraw = (PFN_vkCmdDraw)pAPI->vkGetDeviceProcAddr(device, \"vkCmdDraw\");\n    pAPI->vkCmdDrawIndexed = (PFN_vkCmdDrawIndexed)pAPI->vkGetDeviceProcAddr(device, \"vkCmdDrawIndexed\");\n    pAPI->vkCmdDrawIndirect = (PFN_vkCmdDrawIndirect)pAPI->vkGetDeviceProcAddr(device, \"vkCmdDrawIndirect\");\n    pAPI->vkCmdDrawIndexedIndirect = (PFN_vkCmdDrawIndexedIndirect)pAPI->vkGetDeviceProcAddr(device, \"vkCmdDrawIndexedIndirect\");\n    pAPI->vkCmdBlitImage = (PFN_vkCmdBlitImage)pAPI->vkGetDeviceProcAddr(device, \"vkCmdBlitImage\");\n    pAPI->vkCmdClearDepthStencilImage = (PFN_vkCmdClearDepthStencilImage)pAPI->vkGetDeviceProcAddr(device, \"vkCmdClearDepthStencilImage\");\n    pAPI->vkCmdClearAttachments = (PFN_vkCmdClearAttachments)pAPI->vkGetDeviceProcAddr(device, \"vkCmdClearAttachments\");\n    pAPI->vkCmdResolveImage = (PFN_vkCmdResolveImage)pAPI->vkGetDeviceProcAddr(device, \"vkCmdResolveImage\");\n    pAPI->vkCmdBeginRenderPass = (PFN_vkCmdBeginRenderPass)pAPI->vkGetDeviceProcAddr(device, \"vkCmdBeginRenderPass\");\n    pAPI->vkCmdNextSubpass = (PFN_vkCmdNextSubpass)pAPI->vkGetDeviceProcAddr(device, \"vkCmdNextSubpass\");\n    pAPI->vkCmdEndRenderPass = (PFN_vkCmdEndRenderPass)pAPI->vkGetDeviceProcAddr(device, \"vkCmdEndRenderPass\");\n    pAPI->vkBindBufferMemory2 = (PFN_vkBindBufferMemory2)pAPI->vkGetDeviceProcAddr(device, \"vkBindBufferMemory2\");\n    pAPI->vkBindImageMemory2 = (PFN_vkBindImageMemory2)pAPI->vkGetDeviceProcAddr(device, \"vkBindImageMemory2\");\n    pAPI->vkGetDeviceGroupPeerMemoryFeatures = (PFN_vkGetDeviceGroupPeerMemoryFeatures)pAPI->vkGetDeviceProcAddr(device, \"vkGetDeviceGroupPeerMemoryFeatures\");\n    pAPI->vkCmdSetDeviceMask = (PFN_vkCmdSetDeviceMask)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetDeviceMask\");\n    pAPI->vkGetImageMemoryRequirements2 = (PFN_vkGetImageMemoryRequirements2)pAPI->vkGetDeviceProcAddr(device, \"vkGetImageMemoryRequirements2\");\n    pAPI->vkGetBufferMemoryRequirements2 = (PFN_vkGetBufferMemoryRequirements2)pAPI->vkGetDeviceProcAddr(device, \"vkGetBufferMemoryRequirements2\");\n    pAPI->vkGetImageSparseMemoryRequirements2 = (PFN_vkGetImageSparseMemoryRequirements2)pAPI->vkGetDeviceProcAddr(device, \"vkGetImageSparseMemoryRequirements2\");\n    pAPI->vkTrimCommandPool = (PFN_vkTrimCommandPool)pAPI->vkGetDeviceProcAddr(device, \"vkTrimCommandPool\");\n    pAPI->vkGetDeviceQueue2 = (PFN_vkGetDeviceQueue2)pAPI->vkGetDeviceProcAddr(device, \"vkGetDeviceQueue2\");\n    pAPI->vkCmdDispatchBase = (PFN_vkCmdDispatchBase)pAPI->vkGetDeviceProcAddr(device, \"vkCmdDispatchBase\");\n    pAPI->vkCreateDescriptorUpdateTemplate = (PFN_vkCreateDescriptorUpdateTemplate)pAPI->vkGetDeviceProcAddr(device, \"vkCreateDescriptorUpdateTemplate\");\n    pAPI->vkDestroyDescriptorUpdateTemplate = (PFN_vkDestroyDescriptorUpdateTemplate)pAPI->vkGetDeviceProcAddr(device, \"vkDestroyDescriptorUpdateTemplate\");\n    pAPI->vkUpdateDescriptorSetWithTemplate = (PFN_vkUpdateDescriptorSetWithTemplate)pAPI->vkGetDeviceProcAddr(device, \"vkUpdateDescriptorSetWithTemplate\");\n    pAPI->vkGetDescriptorSetLayoutSupport = (PFN_vkGetDescriptorSetLayoutSupport)pAPI->vkGetDeviceProcAddr(device, \"vkGetDescriptorSetLayoutSupport\");\n    pAPI->vkCreateSamplerYcbcrConversion = (PFN_vkCreateSamplerYcbcrConversion)pAPI->vkGetDeviceProcAddr(device, \"vkCreateSamplerYcbcrConversion\");\n    pAPI->vkDestroySamplerYcbcrConversion = (PFN_vkDestroySamplerYcbcrConversion)pAPI->vkGetDeviceProcAddr(device, \"vkDestroySamplerYcbcrConversion\");\n    pAPI->vkResetQueryPool = (PFN_vkResetQueryPool)pAPI->vkGetDeviceProcAddr(device, \"vkResetQueryPool\");\n    pAPI->vkGetSemaphoreCounterValue = (PFN_vkGetSemaphoreCounterValue)pAPI->vkGetDeviceProcAddr(device, \"vkGetSemaphoreCounterValue\");\n    pAPI->vkWaitSemaphores = (PFN_vkWaitSemaphores)pAPI->vkGetDeviceProcAddr(device, \"vkWaitSemaphores\");\n    pAPI->vkSignalSemaphore = (PFN_vkSignalSemaphore)pAPI->vkGetDeviceProcAddr(device, \"vkSignalSemaphore\");\n    pAPI->vkGetBufferDeviceAddress = (PFN_vkGetBufferDeviceAddress)pAPI->vkGetDeviceProcAddr(device, \"vkGetBufferDeviceAddress\");\n    pAPI->vkGetBufferOpaqueCaptureAddress = (PFN_vkGetBufferOpaqueCaptureAddress)pAPI->vkGetDeviceProcAddr(device, \"vkGetBufferOpaqueCaptureAddress\");\n    pAPI->vkGetDeviceMemoryOpaqueCaptureAddress = (PFN_vkGetDeviceMemoryOpaqueCaptureAddress)pAPI->vkGetDeviceProcAddr(device, \"vkGetDeviceMemoryOpaqueCaptureAddress\");\n    pAPI->vkCmdDrawIndirectCount = (PFN_vkCmdDrawIndirectCount)pAPI->vkGetDeviceProcAddr(device, \"vkCmdDrawIndirectCount\");\n    pAPI->vkCmdDrawIndexedIndirectCount = (PFN_vkCmdDrawIndexedIndirectCount)pAPI->vkGetDeviceProcAddr(device, \"vkCmdDrawIndexedIndirectCount\");\n    pAPI->vkCreateRenderPass2 = (PFN_vkCreateRenderPass2)pAPI->vkGetDeviceProcAddr(device, \"vkCreateRenderPass2\");\n    pAPI->vkCmdBeginRenderPass2 = (PFN_vkCmdBeginRenderPass2)pAPI->vkGetDeviceProcAddr(device, \"vkCmdBeginRenderPass2\");\n    pAPI->vkCmdNextSubpass2 = (PFN_vkCmdNextSubpass2)pAPI->vkGetDeviceProcAddr(device, \"vkCmdNextSubpass2\");\n    pAPI->vkCmdEndRenderPass2 = (PFN_vkCmdEndRenderPass2)pAPI->vkGetDeviceProcAddr(device, \"vkCmdEndRenderPass2\");\n    pAPI->vkCreatePrivateDataSlot = (PFN_vkCreatePrivateDataSlot)pAPI->vkGetDeviceProcAddr(device, \"vkCreatePrivateDataSlot\");\n    pAPI->vkDestroyPrivateDataSlot = (PFN_vkDestroyPrivateDataSlot)pAPI->vkGetDeviceProcAddr(device, \"vkDestroyPrivateDataSlot\");\n    pAPI->vkSetPrivateData = (PFN_vkSetPrivateData)pAPI->vkGetDeviceProcAddr(device, \"vkSetPrivateData\");\n    pAPI->vkGetPrivateData = (PFN_vkGetPrivateData)pAPI->vkGetDeviceProcAddr(device, \"vkGetPrivateData\");\n    pAPI->vkCmdPipelineBarrier2 = (PFN_vkCmdPipelineBarrier2)pAPI->vkGetDeviceProcAddr(device, \"vkCmdPipelineBarrier2\");\n    pAPI->vkCmdWriteTimestamp2 = (PFN_vkCmdWriteTimestamp2)pAPI->vkGetDeviceProcAddr(device, \"vkCmdWriteTimestamp2\");\n    pAPI->vkQueueSubmit2 = (PFN_vkQueueSubmit2)pAPI->vkGetDeviceProcAddr(device, \"vkQueueSubmit2\");\n    pAPI->vkCmdCopyBuffer2 = (PFN_vkCmdCopyBuffer2)pAPI->vkGetDeviceProcAddr(device, \"vkCmdCopyBuffer2\");\n    pAPI->vkCmdCopyImage2 = (PFN_vkCmdCopyImage2)pAPI->vkGetDeviceProcAddr(device, \"vkCmdCopyImage2\");\n    pAPI->vkCmdCopyBufferToImage2 = (PFN_vkCmdCopyBufferToImage2)pAPI->vkGetDeviceProcAddr(device, \"vkCmdCopyBufferToImage2\");\n    pAPI->vkCmdCopyImageToBuffer2 = (PFN_vkCmdCopyImageToBuffer2)pAPI->vkGetDeviceProcAddr(device, \"vkCmdCopyImageToBuffer2\");\n    pAPI->vkGetDeviceBufferMemoryRequirements = (PFN_vkGetDeviceBufferMemoryRequirements)pAPI->vkGetDeviceProcAddr(device, \"vkGetDeviceBufferMemoryRequirements\");\n    pAPI->vkGetDeviceImageMemoryRequirements = (PFN_vkGetDeviceImageMemoryRequirements)pAPI->vkGetDeviceProcAddr(device, \"vkGetDeviceImageMemoryRequirements\");\n    pAPI->vkGetDeviceImageSparseMemoryRequirements = (PFN_vkGetDeviceImageSparseMemoryRequirements)pAPI->vkGetDeviceProcAddr(device, \"vkGetDeviceImageSparseMemoryRequirements\");\n    pAPI->vkCmdSetEvent2 = (PFN_vkCmdSetEvent2)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetEvent2\");\n    pAPI->vkCmdResetEvent2 = (PFN_vkCmdResetEvent2)pAPI->vkGetDeviceProcAddr(device, \"vkCmdResetEvent2\");\n    pAPI->vkCmdWaitEvents2 = (PFN_vkCmdWaitEvents2)pAPI->vkGetDeviceProcAddr(device, \"vkCmdWaitEvents2\");\n    pAPI->vkCmdBlitImage2 = (PFN_vkCmdBlitImage2)pAPI->vkGetDeviceProcAddr(device, \"vkCmdBlitImage2\");\n    pAPI->vkCmdResolveImage2 = (PFN_vkCmdResolveImage2)pAPI->vkGetDeviceProcAddr(device, \"vkCmdResolveImage2\");\n    pAPI->vkCmdBeginRendering = (PFN_vkCmdBeginRendering)pAPI->vkGetDeviceProcAddr(device, \"vkCmdBeginRendering\");\n    pAPI->vkCmdEndRendering = (PFN_vkCmdEndRendering)pAPI->vkGetDeviceProcAddr(device, \"vkCmdEndRendering\");\n    pAPI->vkCmdSetCullMode = (PFN_vkCmdSetCullMode)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetCullMode\");\n    pAPI->vkCmdSetFrontFace = (PFN_vkCmdSetFrontFace)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetFrontFace\");\n    pAPI->vkCmdSetPrimitiveTopology = (PFN_vkCmdSetPrimitiveTopology)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetPrimitiveTopology\");\n    pAPI->vkCmdSetViewportWithCount = (PFN_vkCmdSetViewportWithCount)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetViewportWithCount\");\n    pAPI->vkCmdSetScissorWithCount = (PFN_vkCmdSetScissorWithCount)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetScissorWithCount\");\n    pAPI->vkCmdBindVertexBuffers2 = (PFN_vkCmdBindVertexBuffers2)pAPI->vkGetDeviceProcAddr(device, \"vkCmdBindVertexBuffers2\");\n    pAPI->vkCmdSetDepthTestEnable = (PFN_vkCmdSetDepthTestEnable)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetDepthTestEnable\");\n    pAPI->vkCmdSetDepthWriteEnable = (PFN_vkCmdSetDepthWriteEnable)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetDepthWriteEnable\");\n    pAPI->vkCmdSetDepthCompareOp = (PFN_vkCmdSetDepthCompareOp)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetDepthCompareOp\");\n    pAPI->vkCmdSetDepthBoundsTestEnable = (PFN_vkCmdSetDepthBoundsTestEnable)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetDepthBoundsTestEnable\");\n    pAPI->vkCmdSetStencilTestEnable = (PFN_vkCmdSetStencilTestEnable)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetStencilTestEnable\");\n    pAPI->vkCmdSetStencilOp = (PFN_vkCmdSetStencilOp)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetStencilOp\");\n    pAPI->vkCmdSetRasterizerDiscardEnable = (PFN_vkCmdSetRasterizerDiscardEnable)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetRasterizerDiscardEnable\");\n    pAPI->vkCmdSetDepthBiasEnable = (PFN_vkCmdSetDepthBiasEnable)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetDepthBiasEnable\");\n    pAPI->vkCmdSetPrimitiveRestartEnable = (PFN_vkCmdSetPrimitiveRestartEnable)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetPrimitiveRestartEnable\");\n    pAPI->vkMapMemory2 = (PFN_vkMapMemory2)pAPI->vkGetDeviceProcAddr(device, \"vkMapMemory2\");\n    pAPI->vkUnmapMemory2 = (PFN_vkUnmapMemory2)pAPI->vkGetDeviceProcAddr(device, \"vkUnmapMemory2\");\n    pAPI->vkGetDeviceImageSubresourceLayout = (PFN_vkGetDeviceImageSubresourceLayout)pAPI->vkGetDeviceProcAddr(device, \"vkGetDeviceImageSubresourceLayout\");\n    pAPI->vkGetImageSubresourceLayout2 = (PFN_vkGetImageSubresourceLayout2)pAPI->vkGetDeviceProcAddr(device, \"vkGetImageSubresourceLayout2\");\n    pAPI->vkCopyMemoryToImage = (PFN_vkCopyMemoryToImage)pAPI->vkGetDeviceProcAddr(device, \"vkCopyMemoryToImage\");\n    pAPI->vkCopyImageToMemory = (PFN_vkCopyImageToMemory)pAPI->vkGetDeviceProcAddr(device, \"vkCopyImageToMemory\");\n    pAPI->vkCopyImageToImage = (PFN_vkCopyImageToImage)pAPI->vkGetDeviceProcAddr(device, \"vkCopyImageToImage\");\n    pAPI->vkTransitionImageLayout = (PFN_vkTransitionImageLayout)pAPI->vkGetDeviceProcAddr(device, \"vkTransitionImageLayout\");\n    pAPI->vkCmdPushDescriptorSet = (PFN_vkCmdPushDescriptorSet)pAPI->vkGetDeviceProcAddr(device, \"vkCmdPushDescriptorSet\");\n    pAPI->vkCmdPushDescriptorSetWithTemplate = (PFN_vkCmdPushDescriptorSetWithTemplate)pAPI->vkGetDeviceProcAddr(device, \"vkCmdPushDescriptorSetWithTemplate\");\n    pAPI->vkCmdBindDescriptorSets2 = (PFN_vkCmdBindDescriptorSets2)pAPI->vkGetDeviceProcAddr(device, \"vkCmdBindDescriptorSets2\");\n    pAPI->vkCmdPushConstants2 = (PFN_vkCmdPushConstants2)pAPI->vkGetDeviceProcAddr(device, \"vkCmdPushConstants2\");\n    pAPI->vkCmdPushDescriptorSet2 = (PFN_vkCmdPushDescriptorSet2)pAPI->vkGetDeviceProcAddr(device, \"vkCmdPushDescriptorSet2\");\n    pAPI->vkCmdPushDescriptorSetWithTemplate2 = (PFN_vkCmdPushDescriptorSetWithTemplate2)pAPI->vkGetDeviceProcAddr(device, \"vkCmdPushDescriptorSetWithTemplate2\");\n    pAPI->vkCmdSetLineStipple = (PFN_vkCmdSetLineStipple)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetLineStipple\");\n    pAPI->vkCmdBindIndexBuffer2 = (PFN_vkCmdBindIndexBuffer2)pAPI->vkGetDeviceProcAddr(device, \"vkCmdBindIndexBuffer2\");\n    pAPI->vkGetRenderingAreaGranularity = (PFN_vkGetRenderingAreaGranularity)pAPI->vkGetDeviceProcAddr(device, \"vkGetRenderingAreaGranularity\");\n    pAPI->vkCmdSetRenderingAttachmentLocations = (PFN_vkCmdSetRenderingAttachmentLocations)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetRenderingAttachmentLocations\");\n    pAPI->vkCmdSetRenderingInputAttachmentIndices = (PFN_vkCmdSetRenderingInputAttachmentIndices)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetRenderingInputAttachmentIndices\");\n    pAPI->vkGetCommandPoolMemoryConsumption = (PFN_vkGetCommandPoolMemoryConsumption)pAPI->vkGetDeviceProcAddr(device, \"vkGetCommandPoolMemoryConsumption\");\n    pAPI->vkGetFaultData = (PFN_vkGetFaultData)pAPI->vkGetDeviceProcAddr(device, \"vkGetFaultData\");\n    pAPI->vkCreateSwapchainKHR = (PFN_vkCreateSwapchainKHR)pAPI->vkGetDeviceProcAddr(device, \"vkCreateSwapchainKHR\");\n    pAPI->vkDestroySwapchainKHR = (PFN_vkDestroySwapchainKHR)pAPI->vkGetDeviceProcAddr(device, \"vkDestroySwapchainKHR\");\n    pAPI->vkGetSwapchainImagesKHR = (PFN_vkGetSwapchainImagesKHR)pAPI->vkGetDeviceProcAddr(device, \"vkGetSwapchainImagesKHR\");\n    pAPI->vkAcquireNextImageKHR = (PFN_vkAcquireNextImageKHR)pAPI->vkGetDeviceProcAddr(device, \"vkAcquireNextImageKHR\");\n    pAPI->vkQueuePresentKHR = (PFN_vkQueuePresentKHR)pAPI->vkGetDeviceProcAddr(device, \"vkQueuePresentKHR\");\n    pAPI->vkGetDeviceGroupPresentCapabilitiesKHR = (PFN_vkGetDeviceGroupPresentCapabilitiesKHR)pAPI->vkGetDeviceProcAddr(device, \"vkGetDeviceGroupPresentCapabilitiesKHR\");\n    pAPI->vkGetDeviceGroupSurfacePresentModesKHR = (PFN_vkGetDeviceGroupSurfacePresentModesKHR)pAPI->vkGetDeviceProcAddr(device, \"vkGetDeviceGroupSurfacePresentModesKHR\");\n    pAPI->vkAcquireNextImage2KHR = (PFN_vkAcquireNextImage2KHR)pAPI->vkGetDeviceProcAddr(device, \"vkAcquireNextImage2KHR\");\n    pAPI->vkCreateSharedSwapchainsKHR = (PFN_vkCreateSharedSwapchainsKHR)pAPI->vkGetDeviceProcAddr(device, \"vkCreateSharedSwapchainsKHR\");\n    pAPI->vkCreateVideoSessionKHR = (PFN_vkCreateVideoSessionKHR)pAPI->vkGetDeviceProcAddr(device, \"vkCreateVideoSessionKHR\");\n    pAPI->vkDestroyVideoSessionKHR = (PFN_vkDestroyVideoSessionKHR)pAPI->vkGetDeviceProcAddr(device, \"vkDestroyVideoSessionKHR\");\n    pAPI->vkGetVideoSessionMemoryRequirementsKHR = (PFN_vkGetVideoSessionMemoryRequirementsKHR)pAPI->vkGetDeviceProcAddr(device, \"vkGetVideoSessionMemoryRequirementsKHR\");\n    pAPI->vkBindVideoSessionMemoryKHR = (PFN_vkBindVideoSessionMemoryKHR)pAPI->vkGetDeviceProcAddr(device, \"vkBindVideoSessionMemoryKHR\");\n    pAPI->vkCreateVideoSessionParametersKHR = (PFN_vkCreateVideoSessionParametersKHR)pAPI->vkGetDeviceProcAddr(device, \"vkCreateVideoSessionParametersKHR\");\n    pAPI->vkUpdateVideoSessionParametersKHR = (PFN_vkUpdateVideoSessionParametersKHR)pAPI->vkGetDeviceProcAddr(device, \"vkUpdateVideoSessionParametersKHR\");\n    pAPI->vkDestroyVideoSessionParametersKHR = (PFN_vkDestroyVideoSessionParametersKHR)pAPI->vkGetDeviceProcAddr(device, \"vkDestroyVideoSessionParametersKHR\");\n    pAPI->vkCmdBeginVideoCodingKHR = (PFN_vkCmdBeginVideoCodingKHR)pAPI->vkGetDeviceProcAddr(device, \"vkCmdBeginVideoCodingKHR\");\n    pAPI->vkCmdEndVideoCodingKHR = (PFN_vkCmdEndVideoCodingKHR)pAPI->vkGetDeviceProcAddr(device, \"vkCmdEndVideoCodingKHR\");\n    pAPI->vkCmdControlVideoCodingKHR = (PFN_vkCmdControlVideoCodingKHR)pAPI->vkGetDeviceProcAddr(device, \"vkCmdControlVideoCodingKHR\");\n    pAPI->vkCmdDecodeVideoKHR = (PFN_vkCmdDecodeVideoKHR)pAPI->vkGetDeviceProcAddr(device, \"vkCmdDecodeVideoKHR\");\n    pAPI->vkCmdBindTransformFeedbackBuffersEXT = (PFN_vkCmdBindTransformFeedbackBuffersEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdBindTransformFeedbackBuffersEXT\");\n    pAPI->vkCmdBeginTransformFeedbackEXT = (PFN_vkCmdBeginTransformFeedbackEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdBeginTransformFeedbackEXT\");\n    pAPI->vkCmdEndTransformFeedbackEXT = (PFN_vkCmdEndTransformFeedbackEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdEndTransformFeedbackEXT\");\n    pAPI->vkCmdBeginQueryIndexedEXT = (PFN_vkCmdBeginQueryIndexedEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdBeginQueryIndexedEXT\");\n    pAPI->vkCmdEndQueryIndexedEXT = (PFN_vkCmdEndQueryIndexedEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdEndQueryIndexedEXT\");\n    pAPI->vkCmdDrawIndirectByteCountEXT = (PFN_vkCmdDrawIndirectByteCountEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdDrawIndirectByteCountEXT\");\n    pAPI->vkCreateCuModuleNVX = (PFN_vkCreateCuModuleNVX)pAPI->vkGetDeviceProcAddr(device, \"vkCreateCuModuleNVX\");\n    pAPI->vkCreateCuFunctionNVX = (PFN_vkCreateCuFunctionNVX)pAPI->vkGetDeviceProcAddr(device, \"vkCreateCuFunctionNVX\");\n    pAPI->vkDestroyCuModuleNVX = (PFN_vkDestroyCuModuleNVX)pAPI->vkGetDeviceProcAddr(device, \"vkDestroyCuModuleNVX\");\n    pAPI->vkDestroyCuFunctionNVX = (PFN_vkDestroyCuFunctionNVX)pAPI->vkGetDeviceProcAddr(device, \"vkDestroyCuFunctionNVX\");\n    pAPI->vkCmdCuLaunchKernelNVX = (PFN_vkCmdCuLaunchKernelNVX)pAPI->vkGetDeviceProcAddr(device, \"vkCmdCuLaunchKernelNVX\");\n    pAPI->vkGetImageViewHandleNVX = (PFN_vkGetImageViewHandleNVX)pAPI->vkGetDeviceProcAddr(device, \"vkGetImageViewHandleNVX\");\n    pAPI->vkGetImageViewHandle64NVX = (PFN_vkGetImageViewHandle64NVX)pAPI->vkGetDeviceProcAddr(device, \"vkGetImageViewHandle64NVX\");\n    pAPI->vkGetImageViewAddressNVX = (PFN_vkGetImageViewAddressNVX)pAPI->vkGetDeviceProcAddr(device, \"vkGetImageViewAddressNVX\");\n    pAPI->vkGetDeviceCombinedImageSamplerIndexNVX = (PFN_vkGetDeviceCombinedImageSamplerIndexNVX)pAPI->vkGetDeviceProcAddr(device, \"vkGetDeviceCombinedImageSamplerIndexNVX\");\n    pAPI->vkGetShaderInfoAMD = (PFN_vkGetShaderInfoAMD)pAPI->vkGetDeviceProcAddr(device, \"vkGetShaderInfoAMD\");\n    pAPI->vkCmdBeginRenderingKHR = (PFN_vkCmdBeginRenderingKHR)pAPI->vkGetDeviceProcAddr(device, \"vkCmdBeginRenderingKHR\");\n    pAPI->vkCmdEndRenderingKHR = (PFN_vkCmdEndRenderingKHR)pAPI->vkGetDeviceProcAddr(device, \"vkCmdEndRenderingKHR\");\n    pAPI->vkGetDeviceGroupPeerMemoryFeaturesKHR = (PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR)pAPI->vkGetDeviceProcAddr(device, \"vkGetDeviceGroupPeerMemoryFeaturesKHR\");\n    pAPI->vkCmdSetDeviceMaskKHR = (PFN_vkCmdSetDeviceMaskKHR)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetDeviceMaskKHR\");\n    pAPI->vkCmdDispatchBaseKHR = (PFN_vkCmdDispatchBaseKHR)pAPI->vkGetDeviceProcAddr(device, \"vkCmdDispatchBaseKHR\");\n    pAPI->vkTrimCommandPoolKHR = (PFN_vkTrimCommandPoolKHR)pAPI->vkGetDeviceProcAddr(device, \"vkTrimCommandPoolKHR\");\n    pAPI->vkGetMemoryFdKHR = (PFN_vkGetMemoryFdKHR)pAPI->vkGetDeviceProcAddr(device, \"vkGetMemoryFdKHR\");\n    pAPI->vkGetMemoryFdPropertiesKHR = (PFN_vkGetMemoryFdPropertiesKHR)pAPI->vkGetDeviceProcAddr(device, \"vkGetMemoryFdPropertiesKHR\");\n    pAPI->vkImportSemaphoreFdKHR = (PFN_vkImportSemaphoreFdKHR)pAPI->vkGetDeviceProcAddr(device, \"vkImportSemaphoreFdKHR\");\n    pAPI->vkGetSemaphoreFdKHR = (PFN_vkGetSemaphoreFdKHR)pAPI->vkGetDeviceProcAddr(device, \"vkGetSemaphoreFdKHR\");\n    pAPI->vkCmdPushDescriptorSetKHR = (PFN_vkCmdPushDescriptorSetKHR)pAPI->vkGetDeviceProcAddr(device, \"vkCmdPushDescriptorSetKHR\");\n    pAPI->vkCmdPushDescriptorSetWithTemplateKHR = (PFN_vkCmdPushDescriptorSetWithTemplateKHR)pAPI->vkGetDeviceProcAddr(device, \"vkCmdPushDescriptorSetWithTemplateKHR\");\n    pAPI->vkCmdBeginConditionalRenderingEXT = (PFN_vkCmdBeginConditionalRenderingEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdBeginConditionalRenderingEXT\");\n    pAPI->vkCmdEndConditionalRenderingEXT = (PFN_vkCmdEndConditionalRenderingEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdEndConditionalRenderingEXT\");\n    pAPI->vkCreateDescriptorUpdateTemplateKHR = (PFN_vkCreateDescriptorUpdateTemplateKHR)pAPI->vkGetDeviceProcAddr(device, \"vkCreateDescriptorUpdateTemplateKHR\");\n    pAPI->vkDestroyDescriptorUpdateTemplateKHR = (PFN_vkDestroyDescriptorUpdateTemplateKHR)pAPI->vkGetDeviceProcAddr(device, \"vkDestroyDescriptorUpdateTemplateKHR\");\n    pAPI->vkUpdateDescriptorSetWithTemplateKHR = (PFN_vkUpdateDescriptorSetWithTemplateKHR)pAPI->vkGetDeviceProcAddr(device, \"vkUpdateDescriptorSetWithTemplateKHR\");\n    pAPI->vkCmdSetViewportWScalingNV = (PFN_vkCmdSetViewportWScalingNV)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetViewportWScalingNV\");\n    pAPI->vkDisplayPowerControlEXT = (PFN_vkDisplayPowerControlEXT)pAPI->vkGetDeviceProcAddr(device, \"vkDisplayPowerControlEXT\");\n    pAPI->vkRegisterDeviceEventEXT = (PFN_vkRegisterDeviceEventEXT)pAPI->vkGetDeviceProcAddr(device, \"vkRegisterDeviceEventEXT\");\n    pAPI->vkRegisterDisplayEventEXT = (PFN_vkRegisterDisplayEventEXT)pAPI->vkGetDeviceProcAddr(device, \"vkRegisterDisplayEventEXT\");\n    pAPI->vkGetSwapchainCounterEXT = (PFN_vkGetSwapchainCounterEXT)pAPI->vkGetDeviceProcAddr(device, \"vkGetSwapchainCounterEXT\");\n    pAPI->vkGetRefreshCycleDurationGOOGLE = (PFN_vkGetRefreshCycleDurationGOOGLE)pAPI->vkGetDeviceProcAddr(device, \"vkGetRefreshCycleDurationGOOGLE\");\n    pAPI->vkGetPastPresentationTimingGOOGLE = (PFN_vkGetPastPresentationTimingGOOGLE)pAPI->vkGetDeviceProcAddr(device, \"vkGetPastPresentationTimingGOOGLE\");\n    pAPI->vkCmdSetDiscardRectangleEXT = (PFN_vkCmdSetDiscardRectangleEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetDiscardRectangleEXT\");\n    pAPI->vkCmdSetDiscardRectangleEnableEXT = (PFN_vkCmdSetDiscardRectangleEnableEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetDiscardRectangleEnableEXT\");\n    pAPI->vkCmdSetDiscardRectangleModeEXT = (PFN_vkCmdSetDiscardRectangleModeEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetDiscardRectangleModeEXT\");\n    pAPI->vkSetHdrMetadataEXT = (PFN_vkSetHdrMetadataEXT)pAPI->vkGetDeviceProcAddr(device, \"vkSetHdrMetadataEXT\");\n    pAPI->vkCreateRenderPass2KHR = (PFN_vkCreateRenderPass2KHR)pAPI->vkGetDeviceProcAddr(device, \"vkCreateRenderPass2KHR\");\n    pAPI->vkCmdBeginRenderPass2KHR = (PFN_vkCmdBeginRenderPass2KHR)pAPI->vkGetDeviceProcAddr(device, \"vkCmdBeginRenderPass2KHR\");\n    pAPI->vkCmdNextSubpass2KHR = (PFN_vkCmdNextSubpass2KHR)pAPI->vkGetDeviceProcAddr(device, \"vkCmdNextSubpass2KHR\");\n    pAPI->vkCmdEndRenderPass2KHR = (PFN_vkCmdEndRenderPass2KHR)pAPI->vkGetDeviceProcAddr(device, \"vkCmdEndRenderPass2KHR\");\n    pAPI->vkGetSwapchainStatusKHR = (PFN_vkGetSwapchainStatusKHR)pAPI->vkGetDeviceProcAddr(device, \"vkGetSwapchainStatusKHR\");\n    pAPI->vkImportFenceFdKHR = (PFN_vkImportFenceFdKHR)pAPI->vkGetDeviceProcAddr(device, \"vkImportFenceFdKHR\");\n    pAPI->vkGetFenceFdKHR = (PFN_vkGetFenceFdKHR)pAPI->vkGetDeviceProcAddr(device, \"vkGetFenceFdKHR\");\n    pAPI->vkAcquireProfilingLockKHR = (PFN_vkAcquireProfilingLockKHR)pAPI->vkGetDeviceProcAddr(device, \"vkAcquireProfilingLockKHR\");\n    pAPI->vkReleaseProfilingLockKHR = (PFN_vkReleaseProfilingLockKHR)pAPI->vkGetDeviceProcAddr(device, \"vkReleaseProfilingLockKHR\");\n    pAPI->vkSetDebugUtilsObjectNameEXT = (PFN_vkSetDebugUtilsObjectNameEXT)pAPI->vkGetDeviceProcAddr(device, \"vkSetDebugUtilsObjectNameEXT\");\n    pAPI->vkSetDebugUtilsObjectTagEXT = (PFN_vkSetDebugUtilsObjectTagEXT)pAPI->vkGetDeviceProcAddr(device, \"vkSetDebugUtilsObjectTagEXT\");\n    pAPI->vkQueueBeginDebugUtilsLabelEXT = (PFN_vkQueueBeginDebugUtilsLabelEXT)pAPI->vkGetDeviceProcAddr(device, \"vkQueueBeginDebugUtilsLabelEXT\");\n    pAPI->vkQueueEndDebugUtilsLabelEXT = (PFN_vkQueueEndDebugUtilsLabelEXT)pAPI->vkGetDeviceProcAddr(device, \"vkQueueEndDebugUtilsLabelEXT\");\n    pAPI->vkQueueInsertDebugUtilsLabelEXT = (PFN_vkQueueInsertDebugUtilsLabelEXT)pAPI->vkGetDeviceProcAddr(device, \"vkQueueInsertDebugUtilsLabelEXT\");\n    pAPI->vkCmdBeginDebugUtilsLabelEXT = (PFN_vkCmdBeginDebugUtilsLabelEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdBeginDebugUtilsLabelEXT\");\n    pAPI->vkCmdEndDebugUtilsLabelEXT = (PFN_vkCmdEndDebugUtilsLabelEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdEndDebugUtilsLabelEXT\");\n    pAPI->vkCmdInsertDebugUtilsLabelEXT = (PFN_vkCmdInsertDebugUtilsLabelEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdInsertDebugUtilsLabelEXT\");\n    pAPI->vkDebugMarkerSetObjectTagEXT = (PFN_vkDebugMarkerSetObjectTagEXT)pAPI->vkGetDeviceProcAddr(device, \"vkDebugMarkerSetObjectTagEXT\");\n    pAPI->vkDebugMarkerSetObjectNameEXT = (PFN_vkDebugMarkerSetObjectNameEXT)pAPI->vkGetDeviceProcAddr(device, \"vkDebugMarkerSetObjectNameEXT\");\n    pAPI->vkCmdDebugMarkerBeginEXT = (PFN_vkCmdDebugMarkerBeginEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdDebugMarkerBeginEXT\");\n    pAPI->vkCmdDebugMarkerEndEXT = (PFN_vkCmdDebugMarkerEndEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdDebugMarkerEndEXT\");\n    pAPI->vkCmdDebugMarkerInsertEXT = (PFN_vkCmdDebugMarkerInsertEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdDebugMarkerInsertEXT\");\n    pAPI->vkWriteSamplerDescriptorsEXT = (PFN_vkWriteSamplerDescriptorsEXT)pAPI->vkGetDeviceProcAddr(device, \"vkWriteSamplerDescriptorsEXT\");\n    pAPI->vkWriteResourceDescriptorsEXT = (PFN_vkWriteResourceDescriptorsEXT)pAPI->vkGetDeviceProcAddr(device, \"vkWriteResourceDescriptorsEXT\");\n    pAPI->vkCmdBindSamplerHeapEXT = (PFN_vkCmdBindSamplerHeapEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdBindSamplerHeapEXT\");\n    pAPI->vkCmdBindResourceHeapEXT = (PFN_vkCmdBindResourceHeapEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdBindResourceHeapEXT\");\n    pAPI->vkCmdPushDataEXT = (PFN_vkCmdPushDataEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdPushDataEXT\");\n    pAPI->vkGetImageOpaqueCaptureDataEXT = (PFN_vkGetImageOpaqueCaptureDataEXT)pAPI->vkGetDeviceProcAddr(device, \"vkGetImageOpaqueCaptureDataEXT\");\n    pAPI->vkRegisterCustomBorderColorEXT = (PFN_vkRegisterCustomBorderColorEXT)pAPI->vkGetDeviceProcAddr(device, \"vkRegisterCustomBorderColorEXT\");\n    pAPI->vkUnregisterCustomBorderColorEXT = (PFN_vkUnregisterCustomBorderColorEXT)pAPI->vkGetDeviceProcAddr(device, \"vkUnregisterCustomBorderColorEXT\");\n    pAPI->vkGetTensorOpaqueCaptureDataARM = (PFN_vkGetTensorOpaqueCaptureDataARM)pAPI->vkGetDeviceProcAddr(device, \"vkGetTensorOpaqueCaptureDataARM\");\n    pAPI->vkCmdSetSampleLocationsEXT = (PFN_vkCmdSetSampleLocationsEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetSampleLocationsEXT\");\n    pAPI->vkGetImageMemoryRequirements2KHR = (PFN_vkGetImageMemoryRequirements2KHR)pAPI->vkGetDeviceProcAddr(device, \"vkGetImageMemoryRequirements2KHR\");\n    pAPI->vkGetBufferMemoryRequirements2KHR = (PFN_vkGetBufferMemoryRequirements2KHR)pAPI->vkGetDeviceProcAddr(device, \"vkGetBufferMemoryRequirements2KHR\");\n    pAPI->vkGetImageSparseMemoryRequirements2KHR = (PFN_vkGetImageSparseMemoryRequirements2KHR)pAPI->vkGetDeviceProcAddr(device, \"vkGetImageSparseMemoryRequirements2KHR\");\n    pAPI->vkCreateAccelerationStructureKHR = (PFN_vkCreateAccelerationStructureKHR)pAPI->vkGetDeviceProcAddr(device, \"vkCreateAccelerationStructureKHR\");\n    pAPI->vkDestroyAccelerationStructureKHR = (PFN_vkDestroyAccelerationStructureKHR)pAPI->vkGetDeviceProcAddr(device, \"vkDestroyAccelerationStructureKHR\");\n    pAPI->vkCmdBuildAccelerationStructuresKHR = (PFN_vkCmdBuildAccelerationStructuresKHR)pAPI->vkGetDeviceProcAddr(device, \"vkCmdBuildAccelerationStructuresKHR\");\n    pAPI->vkCmdBuildAccelerationStructuresIndirectKHR = (PFN_vkCmdBuildAccelerationStructuresIndirectKHR)pAPI->vkGetDeviceProcAddr(device, \"vkCmdBuildAccelerationStructuresIndirectKHR\");\n    pAPI->vkBuildAccelerationStructuresKHR = (PFN_vkBuildAccelerationStructuresKHR)pAPI->vkGetDeviceProcAddr(device, \"vkBuildAccelerationStructuresKHR\");\n    pAPI->vkCopyAccelerationStructureKHR = (PFN_vkCopyAccelerationStructureKHR)pAPI->vkGetDeviceProcAddr(device, \"vkCopyAccelerationStructureKHR\");\n    pAPI->vkCopyAccelerationStructureToMemoryKHR = (PFN_vkCopyAccelerationStructureToMemoryKHR)pAPI->vkGetDeviceProcAddr(device, \"vkCopyAccelerationStructureToMemoryKHR\");\n    pAPI->vkCopyMemoryToAccelerationStructureKHR = (PFN_vkCopyMemoryToAccelerationStructureKHR)pAPI->vkGetDeviceProcAddr(device, \"vkCopyMemoryToAccelerationStructureKHR\");\n    pAPI->vkWriteAccelerationStructuresPropertiesKHR = (PFN_vkWriteAccelerationStructuresPropertiesKHR)pAPI->vkGetDeviceProcAddr(device, \"vkWriteAccelerationStructuresPropertiesKHR\");\n    pAPI->vkCmdCopyAccelerationStructureKHR = (PFN_vkCmdCopyAccelerationStructureKHR)pAPI->vkGetDeviceProcAddr(device, \"vkCmdCopyAccelerationStructureKHR\");\n    pAPI->vkCmdCopyAccelerationStructureToMemoryKHR = (PFN_vkCmdCopyAccelerationStructureToMemoryKHR)pAPI->vkGetDeviceProcAddr(device, \"vkCmdCopyAccelerationStructureToMemoryKHR\");\n    pAPI->vkCmdCopyMemoryToAccelerationStructureKHR = (PFN_vkCmdCopyMemoryToAccelerationStructureKHR)pAPI->vkGetDeviceProcAddr(device, \"vkCmdCopyMemoryToAccelerationStructureKHR\");\n    pAPI->vkGetAccelerationStructureDeviceAddressKHR = (PFN_vkGetAccelerationStructureDeviceAddressKHR)pAPI->vkGetDeviceProcAddr(device, \"vkGetAccelerationStructureDeviceAddressKHR\");\n    pAPI->vkCmdWriteAccelerationStructuresPropertiesKHR = (PFN_vkCmdWriteAccelerationStructuresPropertiesKHR)pAPI->vkGetDeviceProcAddr(device, \"vkCmdWriteAccelerationStructuresPropertiesKHR\");\n    pAPI->vkGetDeviceAccelerationStructureCompatibilityKHR = (PFN_vkGetDeviceAccelerationStructureCompatibilityKHR)pAPI->vkGetDeviceProcAddr(device, \"vkGetDeviceAccelerationStructureCompatibilityKHR\");\n    pAPI->vkGetAccelerationStructureBuildSizesKHR = (PFN_vkGetAccelerationStructureBuildSizesKHR)pAPI->vkGetDeviceProcAddr(device, \"vkGetAccelerationStructureBuildSizesKHR\");\n    pAPI->vkCmdTraceRaysKHR = (PFN_vkCmdTraceRaysKHR)pAPI->vkGetDeviceProcAddr(device, \"vkCmdTraceRaysKHR\");\n    pAPI->vkCreateRayTracingPipelinesKHR = (PFN_vkCreateRayTracingPipelinesKHR)pAPI->vkGetDeviceProcAddr(device, \"vkCreateRayTracingPipelinesKHR\");\n    pAPI->vkGetRayTracingShaderGroupHandlesKHR = (PFN_vkGetRayTracingShaderGroupHandlesKHR)pAPI->vkGetDeviceProcAddr(device, \"vkGetRayTracingShaderGroupHandlesKHR\");\n    pAPI->vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = (PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR)pAPI->vkGetDeviceProcAddr(device, \"vkGetRayTracingCaptureReplayShaderGroupHandlesKHR\");\n    pAPI->vkCmdTraceRaysIndirectKHR = (PFN_vkCmdTraceRaysIndirectKHR)pAPI->vkGetDeviceProcAddr(device, \"vkCmdTraceRaysIndirectKHR\");\n    pAPI->vkGetRayTracingShaderGroupStackSizeKHR = (PFN_vkGetRayTracingShaderGroupStackSizeKHR)pAPI->vkGetDeviceProcAddr(device, \"vkGetRayTracingShaderGroupStackSizeKHR\");\n    pAPI->vkCmdSetRayTracingPipelineStackSizeKHR = (PFN_vkCmdSetRayTracingPipelineStackSizeKHR)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetRayTracingPipelineStackSizeKHR\");\n    pAPI->vkCreateSamplerYcbcrConversionKHR = (PFN_vkCreateSamplerYcbcrConversionKHR)pAPI->vkGetDeviceProcAddr(device, \"vkCreateSamplerYcbcrConversionKHR\");\n    pAPI->vkDestroySamplerYcbcrConversionKHR = (PFN_vkDestroySamplerYcbcrConversionKHR)pAPI->vkGetDeviceProcAddr(device, \"vkDestroySamplerYcbcrConversionKHR\");\n    pAPI->vkBindBufferMemory2KHR = (PFN_vkBindBufferMemory2KHR)pAPI->vkGetDeviceProcAddr(device, \"vkBindBufferMemory2KHR\");\n    pAPI->vkBindImageMemory2KHR = (PFN_vkBindImageMemory2KHR)pAPI->vkGetDeviceProcAddr(device, \"vkBindImageMemory2KHR\");\n    pAPI->vkGetImageDrmFormatModifierPropertiesEXT = (PFN_vkGetImageDrmFormatModifierPropertiesEXT)pAPI->vkGetDeviceProcAddr(device, \"vkGetImageDrmFormatModifierPropertiesEXT\");\n    pAPI->vkCreateValidationCacheEXT = (PFN_vkCreateValidationCacheEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCreateValidationCacheEXT\");\n    pAPI->vkDestroyValidationCacheEXT = (PFN_vkDestroyValidationCacheEXT)pAPI->vkGetDeviceProcAddr(device, \"vkDestroyValidationCacheEXT\");\n    pAPI->vkMergeValidationCachesEXT = (PFN_vkMergeValidationCachesEXT)pAPI->vkGetDeviceProcAddr(device, \"vkMergeValidationCachesEXT\");\n    pAPI->vkGetValidationCacheDataEXT = (PFN_vkGetValidationCacheDataEXT)pAPI->vkGetDeviceProcAddr(device, \"vkGetValidationCacheDataEXT\");\n    pAPI->vkCmdBindShadingRateImageNV = (PFN_vkCmdBindShadingRateImageNV)pAPI->vkGetDeviceProcAddr(device, \"vkCmdBindShadingRateImageNV\");\n    pAPI->vkCmdSetViewportShadingRatePaletteNV = (PFN_vkCmdSetViewportShadingRatePaletteNV)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetViewportShadingRatePaletteNV\");\n    pAPI->vkCmdSetCoarseSampleOrderNV = (PFN_vkCmdSetCoarseSampleOrderNV)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetCoarseSampleOrderNV\");\n    pAPI->vkCreateAccelerationStructureNV = (PFN_vkCreateAccelerationStructureNV)pAPI->vkGetDeviceProcAddr(device, \"vkCreateAccelerationStructureNV\");\n    pAPI->vkDestroyAccelerationStructureNV = (PFN_vkDestroyAccelerationStructureNV)pAPI->vkGetDeviceProcAddr(device, \"vkDestroyAccelerationStructureNV\");\n    pAPI->vkGetAccelerationStructureMemoryRequirementsNV = (PFN_vkGetAccelerationStructureMemoryRequirementsNV)pAPI->vkGetDeviceProcAddr(device, \"vkGetAccelerationStructureMemoryRequirementsNV\");\n    pAPI->vkBindAccelerationStructureMemoryNV = (PFN_vkBindAccelerationStructureMemoryNV)pAPI->vkGetDeviceProcAddr(device, \"vkBindAccelerationStructureMemoryNV\");\n    pAPI->vkCmdBuildAccelerationStructureNV = (PFN_vkCmdBuildAccelerationStructureNV)pAPI->vkGetDeviceProcAddr(device, \"vkCmdBuildAccelerationStructureNV\");\n    pAPI->vkCmdCopyAccelerationStructureNV = (PFN_vkCmdCopyAccelerationStructureNV)pAPI->vkGetDeviceProcAddr(device, \"vkCmdCopyAccelerationStructureNV\");\n    pAPI->vkCmdTraceRaysNV = (PFN_vkCmdTraceRaysNV)pAPI->vkGetDeviceProcAddr(device, \"vkCmdTraceRaysNV\");\n    pAPI->vkCreateRayTracingPipelinesNV = (PFN_vkCreateRayTracingPipelinesNV)pAPI->vkGetDeviceProcAddr(device, \"vkCreateRayTracingPipelinesNV\");\n    pAPI->vkGetRayTracingShaderGroupHandlesNV = (PFN_vkGetRayTracingShaderGroupHandlesNV)pAPI->vkGetDeviceProcAddr(device, \"vkGetRayTracingShaderGroupHandlesNV\");\n    pAPI->vkGetAccelerationStructureHandleNV = (PFN_vkGetAccelerationStructureHandleNV)pAPI->vkGetDeviceProcAddr(device, \"vkGetAccelerationStructureHandleNV\");\n    pAPI->vkCmdWriteAccelerationStructuresPropertiesNV = (PFN_vkCmdWriteAccelerationStructuresPropertiesNV)pAPI->vkGetDeviceProcAddr(device, \"vkCmdWriteAccelerationStructuresPropertiesNV\");\n    pAPI->vkCompileDeferredNV = (PFN_vkCompileDeferredNV)pAPI->vkGetDeviceProcAddr(device, \"vkCompileDeferredNV\");\n    pAPI->vkGetDescriptorSetLayoutSupportKHR = (PFN_vkGetDescriptorSetLayoutSupportKHR)pAPI->vkGetDeviceProcAddr(device, \"vkGetDescriptorSetLayoutSupportKHR\");\n    pAPI->vkCmdDrawIndirectCountKHR = (PFN_vkCmdDrawIndirectCountKHR)pAPI->vkGetDeviceProcAddr(device, \"vkCmdDrawIndirectCountKHR\");\n    pAPI->vkCmdDrawIndexedIndirectCountKHR = (PFN_vkCmdDrawIndexedIndirectCountKHR)pAPI->vkGetDeviceProcAddr(device, \"vkCmdDrawIndexedIndirectCountKHR\");\n    pAPI->vkCmdDrawIndirectCountAMD = (PFN_vkCmdDrawIndirectCountAMD)pAPI->vkGetDeviceProcAddr(device, \"vkCmdDrawIndirectCountAMD\");\n    pAPI->vkCmdDrawIndexedIndirectCountAMD = (PFN_vkCmdDrawIndexedIndirectCountAMD)pAPI->vkGetDeviceProcAddr(device, \"vkCmdDrawIndexedIndirectCountAMD\");\n    pAPI->vkGetMemoryHostPointerPropertiesEXT = (PFN_vkGetMemoryHostPointerPropertiesEXT)pAPI->vkGetDeviceProcAddr(device, \"vkGetMemoryHostPointerPropertiesEXT\");\n    pAPI->vkCmdWriteBufferMarkerAMD = (PFN_vkCmdWriteBufferMarkerAMD)pAPI->vkGetDeviceProcAddr(device, \"vkCmdWriteBufferMarkerAMD\");\n    pAPI->vkCmdWriteBufferMarker2AMD = (PFN_vkCmdWriteBufferMarker2AMD)pAPI->vkGetDeviceProcAddr(device, \"vkCmdWriteBufferMarker2AMD\");\n    pAPI->vkCmdDrawMeshTasksNV = (PFN_vkCmdDrawMeshTasksNV)pAPI->vkGetDeviceProcAddr(device, \"vkCmdDrawMeshTasksNV\");\n    pAPI->vkCmdDrawMeshTasksIndirectNV = (PFN_vkCmdDrawMeshTasksIndirectNV)pAPI->vkGetDeviceProcAddr(device, \"vkCmdDrawMeshTasksIndirectNV\");\n    pAPI->vkCmdDrawMeshTasksIndirectCountNV = (PFN_vkCmdDrawMeshTasksIndirectCountNV)pAPI->vkGetDeviceProcAddr(device, \"vkCmdDrawMeshTasksIndirectCountNV\");\n    pAPI->vkCmdSetExclusiveScissorEnableNV = (PFN_vkCmdSetExclusiveScissorEnableNV)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetExclusiveScissorEnableNV\");\n    pAPI->vkCmdSetExclusiveScissorNV = (PFN_vkCmdSetExclusiveScissorNV)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetExclusiveScissorNV\");\n    pAPI->vkCmdSetCheckpointNV = (PFN_vkCmdSetCheckpointNV)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetCheckpointNV\");\n    pAPI->vkGetQueueCheckpointDataNV = (PFN_vkGetQueueCheckpointDataNV)pAPI->vkGetDeviceProcAddr(device, \"vkGetQueueCheckpointDataNV\");\n    pAPI->vkGetQueueCheckpointData2NV = (PFN_vkGetQueueCheckpointData2NV)pAPI->vkGetDeviceProcAddr(device, \"vkGetQueueCheckpointData2NV\");\n    pAPI->vkGetSemaphoreCounterValueKHR = (PFN_vkGetSemaphoreCounterValueKHR)pAPI->vkGetDeviceProcAddr(device, \"vkGetSemaphoreCounterValueKHR\");\n    pAPI->vkWaitSemaphoresKHR = (PFN_vkWaitSemaphoresKHR)pAPI->vkGetDeviceProcAddr(device, \"vkWaitSemaphoresKHR\");\n    pAPI->vkSignalSemaphoreKHR = (PFN_vkSignalSemaphoreKHR)pAPI->vkGetDeviceProcAddr(device, \"vkSignalSemaphoreKHR\");\n    pAPI->vkSetSwapchainPresentTimingQueueSizeEXT = (PFN_vkSetSwapchainPresentTimingQueueSizeEXT)pAPI->vkGetDeviceProcAddr(device, \"vkSetSwapchainPresentTimingQueueSizeEXT\");\n    pAPI->vkGetSwapchainTimingPropertiesEXT = (PFN_vkGetSwapchainTimingPropertiesEXT)pAPI->vkGetDeviceProcAddr(device, \"vkGetSwapchainTimingPropertiesEXT\");\n    pAPI->vkGetSwapchainTimeDomainPropertiesEXT = (PFN_vkGetSwapchainTimeDomainPropertiesEXT)pAPI->vkGetDeviceProcAddr(device, \"vkGetSwapchainTimeDomainPropertiesEXT\");\n    pAPI->vkGetPastPresentationTimingEXT = (PFN_vkGetPastPresentationTimingEXT)pAPI->vkGetDeviceProcAddr(device, \"vkGetPastPresentationTimingEXT\");\n    pAPI->vkInitializePerformanceApiINTEL = (PFN_vkInitializePerformanceApiINTEL)pAPI->vkGetDeviceProcAddr(device, \"vkInitializePerformanceApiINTEL\");\n    pAPI->vkUninitializePerformanceApiINTEL = (PFN_vkUninitializePerformanceApiINTEL)pAPI->vkGetDeviceProcAddr(device, \"vkUninitializePerformanceApiINTEL\");\n    pAPI->vkCmdSetPerformanceMarkerINTEL = (PFN_vkCmdSetPerformanceMarkerINTEL)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetPerformanceMarkerINTEL\");\n    pAPI->vkCmdSetPerformanceStreamMarkerINTEL = (PFN_vkCmdSetPerformanceStreamMarkerINTEL)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetPerformanceStreamMarkerINTEL\");\n    pAPI->vkCmdSetPerformanceOverrideINTEL = (PFN_vkCmdSetPerformanceOverrideINTEL)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetPerformanceOverrideINTEL\");\n    pAPI->vkAcquirePerformanceConfigurationINTEL = (PFN_vkAcquirePerformanceConfigurationINTEL)pAPI->vkGetDeviceProcAddr(device, \"vkAcquirePerformanceConfigurationINTEL\");\n    pAPI->vkReleasePerformanceConfigurationINTEL = (PFN_vkReleasePerformanceConfigurationINTEL)pAPI->vkGetDeviceProcAddr(device, \"vkReleasePerformanceConfigurationINTEL\");\n    pAPI->vkQueueSetPerformanceConfigurationINTEL = (PFN_vkQueueSetPerformanceConfigurationINTEL)pAPI->vkGetDeviceProcAddr(device, \"vkQueueSetPerformanceConfigurationINTEL\");\n    pAPI->vkGetPerformanceParameterINTEL = (PFN_vkGetPerformanceParameterINTEL)pAPI->vkGetDeviceProcAddr(device, \"vkGetPerformanceParameterINTEL\");\n    pAPI->vkSetLocalDimmingAMD = (PFN_vkSetLocalDimmingAMD)pAPI->vkGetDeviceProcAddr(device, \"vkSetLocalDimmingAMD\");\n    pAPI->vkCmdSetFragmentShadingRateKHR = (PFN_vkCmdSetFragmentShadingRateKHR)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetFragmentShadingRateKHR\");\n    pAPI->vkCmdSetRenderingAttachmentLocationsKHR = (PFN_vkCmdSetRenderingAttachmentLocationsKHR)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetRenderingAttachmentLocationsKHR\");\n    pAPI->vkCmdSetRenderingInputAttachmentIndicesKHR = (PFN_vkCmdSetRenderingInputAttachmentIndicesKHR)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetRenderingInputAttachmentIndicesKHR\");\n    pAPI->vkWaitForPresentKHR = (PFN_vkWaitForPresentKHR)pAPI->vkGetDeviceProcAddr(device, \"vkWaitForPresentKHR\");\n    pAPI->vkGetBufferDeviceAddressKHR = (PFN_vkGetBufferDeviceAddressKHR)pAPI->vkGetDeviceProcAddr(device, \"vkGetBufferDeviceAddressKHR\");\n    pAPI->vkGetBufferOpaqueCaptureAddressKHR = (PFN_vkGetBufferOpaqueCaptureAddressKHR)pAPI->vkGetDeviceProcAddr(device, \"vkGetBufferOpaqueCaptureAddressKHR\");\n    pAPI->vkGetDeviceMemoryOpaqueCaptureAddressKHR = (PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR)pAPI->vkGetDeviceProcAddr(device, \"vkGetDeviceMemoryOpaqueCaptureAddressKHR\");\n    pAPI->vkGetBufferDeviceAddressEXT = (PFN_vkGetBufferDeviceAddressEXT)pAPI->vkGetDeviceProcAddr(device, \"vkGetBufferDeviceAddressEXT\");\n    pAPI->vkResetQueryPoolEXT = (PFN_vkResetQueryPoolEXT)pAPI->vkGetDeviceProcAddr(device, \"vkResetQueryPoolEXT\");\n    pAPI->vkCmdSetCullModeEXT = (PFN_vkCmdSetCullModeEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetCullModeEXT\");\n    pAPI->vkCmdSetFrontFaceEXT = (PFN_vkCmdSetFrontFaceEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetFrontFaceEXT\");\n    pAPI->vkCmdSetPrimitiveTopologyEXT = (PFN_vkCmdSetPrimitiveTopologyEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetPrimitiveTopologyEXT\");\n    pAPI->vkCmdSetViewportWithCountEXT = (PFN_vkCmdSetViewportWithCountEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetViewportWithCountEXT\");\n    pAPI->vkCmdSetScissorWithCountEXT = (PFN_vkCmdSetScissorWithCountEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetScissorWithCountEXT\");\n    pAPI->vkCmdBindVertexBuffers2EXT = (PFN_vkCmdBindVertexBuffers2EXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdBindVertexBuffers2EXT\");\n    pAPI->vkCmdSetDepthTestEnableEXT = (PFN_vkCmdSetDepthTestEnableEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetDepthTestEnableEXT\");\n    pAPI->vkCmdSetDepthWriteEnableEXT = (PFN_vkCmdSetDepthWriteEnableEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetDepthWriteEnableEXT\");\n    pAPI->vkCmdSetDepthCompareOpEXT = (PFN_vkCmdSetDepthCompareOpEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetDepthCompareOpEXT\");\n    pAPI->vkCmdSetDepthBoundsTestEnableEXT = (PFN_vkCmdSetDepthBoundsTestEnableEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetDepthBoundsTestEnableEXT\");\n    pAPI->vkCmdSetStencilTestEnableEXT = (PFN_vkCmdSetStencilTestEnableEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetStencilTestEnableEXT\");\n    pAPI->vkCmdSetStencilOpEXT = (PFN_vkCmdSetStencilOpEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetStencilOpEXT\");\n    pAPI->vkCreateDeferredOperationKHR = (PFN_vkCreateDeferredOperationKHR)pAPI->vkGetDeviceProcAddr(device, \"vkCreateDeferredOperationKHR\");\n    pAPI->vkDestroyDeferredOperationKHR = (PFN_vkDestroyDeferredOperationKHR)pAPI->vkGetDeviceProcAddr(device, \"vkDestroyDeferredOperationKHR\");\n    pAPI->vkGetDeferredOperationMaxConcurrencyKHR = (PFN_vkGetDeferredOperationMaxConcurrencyKHR)pAPI->vkGetDeviceProcAddr(device, \"vkGetDeferredOperationMaxConcurrencyKHR\");\n    pAPI->vkGetDeferredOperationResultKHR = (PFN_vkGetDeferredOperationResultKHR)pAPI->vkGetDeviceProcAddr(device, \"vkGetDeferredOperationResultKHR\");\n    pAPI->vkDeferredOperationJoinKHR = (PFN_vkDeferredOperationJoinKHR)pAPI->vkGetDeviceProcAddr(device, \"vkDeferredOperationJoinKHR\");\n    pAPI->vkGetPipelineExecutablePropertiesKHR = (PFN_vkGetPipelineExecutablePropertiesKHR)pAPI->vkGetDeviceProcAddr(device, \"vkGetPipelineExecutablePropertiesKHR\");\n    pAPI->vkGetPipelineExecutableStatisticsKHR = (PFN_vkGetPipelineExecutableStatisticsKHR)pAPI->vkGetDeviceProcAddr(device, \"vkGetPipelineExecutableStatisticsKHR\");\n    pAPI->vkGetPipelineExecutableInternalRepresentationsKHR = (PFN_vkGetPipelineExecutableInternalRepresentationsKHR)pAPI->vkGetDeviceProcAddr(device, \"vkGetPipelineExecutableInternalRepresentationsKHR\");\n    pAPI->vkCopyMemoryToImageEXT = (PFN_vkCopyMemoryToImageEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCopyMemoryToImageEXT\");\n    pAPI->vkCopyImageToMemoryEXT = (PFN_vkCopyImageToMemoryEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCopyImageToMemoryEXT\");\n    pAPI->vkCopyImageToImageEXT = (PFN_vkCopyImageToImageEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCopyImageToImageEXT\");\n    pAPI->vkTransitionImageLayoutEXT = (PFN_vkTransitionImageLayoutEXT)pAPI->vkGetDeviceProcAddr(device, \"vkTransitionImageLayoutEXT\");\n    pAPI->vkGetImageSubresourceLayout2EXT = (PFN_vkGetImageSubresourceLayout2EXT)pAPI->vkGetDeviceProcAddr(device, \"vkGetImageSubresourceLayout2EXT\");\n    pAPI->vkMapMemory2KHR = (PFN_vkMapMemory2KHR)pAPI->vkGetDeviceProcAddr(device, \"vkMapMemory2KHR\");\n    pAPI->vkUnmapMemory2KHR = (PFN_vkUnmapMemory2KHR)pAPI->vkGetDeviceProcAddr(device, \"vkUnmapMemory2KHR\");\n    pAPI->vkGetGeneratedCommandsMemoryRequirementsNV = (PFN_vkGetGeneratedCommandsMemoryRequirementsNV)pAPI->vkGetDeviceProcAddr(device, \"vkGetGeneratedCommandsMemoryRequirementsNV\");\n    pAPI->vkCmdPreprocessGeneratedCommandsNV = (PFN_vkCmdPreprocessGeneratedCommandsNV)pAPI->vkGetDeviceProcAddr(device, \"vkCmdPreprocessGeneratedCommandsNV\");\n    pAPI->vkCmdExecuteGeneratedCommandsNV = (PFN_vkCmdExecuteGeneratedCommandsNV)pAPI->vkGetDeviceProcAddr(device, \"vkCmdExecuteGeneratedCommandsNV\");\n    pAPI->vkCmdBindPipelineShaderGroupNV = (PFN_vkCmdBindPipelineShaderGroupNV)pAPI->vkGetDeviceProcAddr(device, \"vkCmdBindPipelineShaderGroupNV\");\n    pAPI->vkCreateIndirectCommandsLayoutNV = (PFN_vkCreateIndirectCommandsLayoutNV)pAPI->vkGetDeviceProcAddr(device, \"vkCreateIndirectCommandsLayoutNV\");\n    pAPI->vkDestroyIndirectCommandsLayoutNV = (PFN_vkDestroyIndirectCommandsLayoutNV)pAPI->vkGetDeviceProcAddr(device, \"vkDestroyIndirectCommandsLayoutNV\");\n    pAPI->vkCmdSetDepthBias2EXT = (PFN_vkCmdSetDepthBias2EXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetDepthBias2EXT\");\n    pAPI->vkCreatePrivateDataSlotEXT = (PFN_vkCreatePrivateDataSlotEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCreatePrivateDataSlotEXT\");\n    pAPI->vkDestroyPrivateDataSlotEXT = (PFN_vkDestroyPrivateDataSlotEXT)pAPI->vkGetDeviceProcAddr(device, \"vkDestroyPrivateDataSlotEXT\");\n    pAPI->vkSetPrivateDataEXT = (PFN_vkSetPrivateDataEXT)pAPI->vkGetDeviceProcAddr(device, \"vkSetPrivateDataEXT\");\n    pAPI->vkGetPrivateDataEXT = (PFN_vkGetPrivateDataEXT)pAPI->vkGetDeviceProcAddr(device, \"vkGetPrivateDataEXT\");\n    pAPI->vkGetEncodedVideoSessionParametersKHR = (PFN_vkGetEncodedVideoSessionParametersKHR)pAPI->vkGetDeviceProcAddr(device, \"vkGetEncodedVideoSessionParametersKHR\");\n    pAPI->vkCmdEncodeVideoKHR = (PFN_vkCmdEncodeVideoKHR)pAPI->vkGetDeviceProcAddr(device, \"vkCmdEncodeVideoKHR\");\n    pAPI->vkCmdRefreshObjectsKHR = (PFN_vkCmdRefreshObjectsKHR)pAPI->vkGetDeviceProcAddr(device, \"vkCmdRefreshObjectsKHR\");\n    pAPI->vkCmdDispatchTileQCOM = (PFN_vkCmdDispatchTileQCOM)pAPI->vkGetDeviceProcAddr(device, \"vkCmdDispatchTileQCOM\");\n    pAPI->vkCmdBeginPerTileExecutionQCOM = (PFN_vkCmdBeginPerTileExecutionQCOM)pAPI->vkGetDeviceProcAddr(device, \"vkCmdBeginPerTileExecutionQCOM\");\n    pAPI->vkCmdEndPerTileExecutionQCOM = (PFN_vkCmdEndPerTileExecutionQCOM)pAPI->vkGetDeviceProcAddr(device, \"vkCmdEndPerTileExecutionQCOM\");\n    pAPI->vkCmdSetEvent2KHR = (PFN_vkCmdSetEvent2KHR)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetEvent2KHR\");\n    pAPI->vkCmdResetEvent2KHR = (PFN_vkCmdResetEvent2KHR)pAPI->vkGetDeviceProcAddr(device, \"vkCmdResetEvent2KHR\");\n    pAPI->vkCmdWaitEvents2KHR = (PFN_vkCmdWaitEvents2KHR)pAPI->vkGetDeviceProcAddr(device, \"vkCmdWaitEvents2KHR\");\n    pAPI->vkCmdPipelineBarrier2KHR = (PFN_vkCmdPipelineBarrier2KHR)pAPI->vkGetDeviceProcAddr(device, \"vkCmdPipelineBarrier2KHR\");\n    pAPI->vkCmdWriteTimestamp2KHR = (PFN_vkCmdWriteTimestamp2KHR)pAPI->vkGetDeviceProcAddr(device, \"vkCmdWriteTimestamp2KHR\");\n    pAPI->vkQueueSubmit2KHR = (PFN_vkQueueSubmit2KHR)pAPI->vkGetDeviceProcAddr(device, \"vkQueueSubmit2KHR\");\n    pAPI->vkGetDescriptorSetLayoutSizeEXT = (PFN_vkGetDescriptorSetLayoutSizeEXT)pAPI->vkGetDeviceProcAddr(device, \"vkGetDescriptorSetLayoutSizeEXT\");\n    pAPI->vkGetDescriptorSetLayoutBindingOffsetEXT = (PFN_vkGetDescriptorSetLayoutBindingOffsetEXT)pAPI->vkGetDeviceProcAddr(device, \"vkGetDescriptorSetLayoutBindingOffsetEXT\");\n    pAPI->vkGetDescriptorEXT = (PFN_vkGetDescriptorEXT)pAPI->vkGetDeviceProcAddr(device, \"vkGetDescriptorEXT\");\n    pAPI->vkCmdBindDescriptorBuffersEXT = (PFN_vkCmdBindDescriptorBuffersEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdBindDescriptorBuffersEXT\");\n    pAPI->vkCmdSetDescriptorBufferOffsetsEXT = (PFN_vkCmdSetDescriptorBufferOffsetsEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetDescriptorBufferOffsetsEXT\");\n    pAPI->vkCmdBindDescriptorBufferEmbeddedSamplersEXT = (PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdBindDescriptorBufferEmbeddedSamplersEXT\");\n    pAPI->vkGetBufferOpaqueCaptureDescriptorDataEXT = (PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT)pAPI->vkGetDeviceProcAddr(device, \"vkGetBufferOpaqueCaptureDescriptorDataEXT\");\n    pAPI->vkGetImageOpaqueCaptureDescriptorDataEXT = (PFN_vkGetImageOpaqueCaptureDescriptorDataEXT)pAPI->vkGetDeviceProcAddr(device, \"vkGetImageOpaqueCaptureDescriptorDataEXT\");\n    pAPI->vkGetImageViewOpaqueCaptureDescriptorDataEXT = (PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT)pAPI->vkGetDeviceProcAddr(device, \"vkGetImageViewOpaqueCaptureDescriptorDataEXT\");\n    pAPI->vkGetSamplerOpaqueCaptureDescriptorDataEXT = (PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT)pAPI->vkGetDeviceProcAddr(device, \"vkGetSamplerOpaqueCaptureDescriptorDataEXT\");\n    pAPI->vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT = (PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT)pAPI->vkGetDeviceProcAddr(device, \"vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT\");\n    pAPI->vkCmdSetFragmentShadingRateEnumNV = (PFN_vkCmdSetFragmentShadingRateEnumNV)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetFragmentShadingRateEnumNV\");\n    pAPI->vkCmdDrawMeshTasksEXT = (PFN_vkCmdDrawMeshTasksEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdDrawMeshTasksEXT\");\n    pAPI->vkCmdDrawMeshTasksIndirectEXT = (PFN_vkCmdDrawMeshTasksIndirectEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdDrawMeshTasksIndirectEXT\");\n    pAPI->vkCmdDrawMeshTasksIndirectCountEXT = (PFN_vkCmdDrawMeshTasksIndirectCountEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdDrawMeshTasksIndirectCountEXT\");\n    pAPI->vkCmdCopyBuffer2KHR = (PFN_vkCmdCopyBuffer2KHR)pAPI->vkGetDeviceProcAddr(device, \"vkCmdCopyBuffer2KHR\");\n    pAPI->vkCmdCopyImage2KHR = (PFN_vkCmdCopyImage2KHR)pAPI->vkGetDeviceProcAddr(device, \"vkCmdCopyImage2KHR\");\n    pAPI->vkCmdCopyBufferToImage2KHR = (PFN_vkCmdCopyBufferToImage2KHR)pAPI->vkGetDeviceProcAddr(device, \"vkCmdCopyBufferToImage2KHR\");\n    pAPI->vkCmdCopyImageToBuffer2KHR = (PFN_vkCmdCopyImageToBuffer2KHR)pAPI->vkGetDeviceProcAddr(device, \"vkCmdCopyImageToBuffer2KHR\");\n    pAPI->vkCmdBlitImage2KHR = (PFN_vkCmdBlitImage2KHR)pAPI->vkGetDeviceProcAddr(device, \"vkCmdBlitImage2KHR\");\n    pAPI->vkCmdResolveImage2KHR = (PFN_vkCmdResolveImage2KHR)pAPI->vkGetDeviceProcAddr(device, \"vkCmdResolveImage2KHR\");\n    pAPI->vkGetDeviceFaultInfoEXT = (PFN_vkGetDeviceFaultInfoEXT)pAPI->vkGetDeviceProcAddr(device, \"vkGetDeviceFaultInfoEXT\");\n    pAPI->vkCmdSetVertexInputEXT = (PFN_vkCmdSetVertexInputEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetVertexInputEXT\");\n    pAPI->vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = (PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI)pAPI->vkGetDeviceProcAddr(device, \"vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI\");\n    pAPI->vkCmdSubpassShadingHUAWEI = (PFN_vkCmdSubpassShadingHUAWEI)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSubpassShadingHUAWEI\");\n    pAPI->vkCmdBindInvocationMaskHUAWEI = (PFN_vkCmdBindInvocationMaskHUAWEI)pAPI->vkGetDeviceProcAddr(device, \"vkCmdBindInvocationMaskHUAWEI\");\n    pAPI->vkGetMemoryRemoteAddressNV = (PFN_vkGetMemoryRemoteAddressNV)pAPI->vkGetDeviceProcAddr(device, \"vkGetMemoryRemoteAddressNV\");\n    pAPI->vkGetPipelinePropertiesEXT = (PFN_vkGetPipelinePropertiesEXT)pAPI->vkGetDeviceProcAddr(device, \"vkGetPipelinePropertiesEXT\");\n    pAPI->vkCmdSetPatchControlPointsEXT = (PFN_vkCmdSetPatchControlPointsEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetPatchControlPointsEXT\");\n    pAPI->vkCmdSetRasterizerDiscardEnableEXT = (PFN_vkCmdSetRasterizerDiscardEnableEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetRasterizerDiscardEnableEXT\");\n    pAPI->vkCmdSetDepthBiasEnableEXT = (PFN_vkCmdSetDepthBiasEnableEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetDepthBiasEnableEXT\");\n    pAPI->vkCmdSetLogicOpEXT = (PFN_vkCmdSetLogicOpEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetLogicOpEXT\");\n    pAPI->vkCmdSetPrimitiveRestartEnableEXT = (PFN_vkCmdSetPrimitiveRestartEnableEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetPrimitiveRestartEnableEXT\");\n    pAPI->vkCmdSetColorWriteEnableEXT = (PFN_vkCmdSetColorWriteEnableEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetColorWriteEnableEXT\");\n    pAPI->vkCmdTraceRaysIndirect2KHR = (PFN_vkCmdTraceRaysIndirect2KHR)pAPI->vkGetDeviceProcAddr(device, \"vkCmdTraceRaysIndirect2KHR\");\n    pAPI->vkCmdDrawMultiEXT = (PFN_vkCmdDrawMultiEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdDrawMultiEXT\");\n    pAPI->vkCmdDrawMultiIndexedEXT = (PFN_vkCmdDrawMultiIndexedEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdDrawMultiIndexedEXT\");\n    pAPI->vkCreateMicromapEXT = (PFN_vkCreateMicromapEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCreateMicromapEXT\");\n    pAPI->vkDestroyMicromapEXT = (PFN_vkDestroyMicromapEXT)pAPI->vkGetDeviceProcAddr(device, \"vkDestroyMicromapEXT\");\n    pAPI->vkCmdBuildMicromapsEXT = (PFN_vkCmdBuildMicromapsEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdBuildMicromapsEXT\");\n    pAPI->vkBuildMicromapsEXT = (PFN_vkBuildMicromapsEXT)pAPI->vkGetDeviceProcAddr(device, \"vkBuildMicromapsEXT\");\n    pAPI->vkCopyMicromapEXT = (PFN_vkCopyMicromapEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCopyMicromapEXT\");\n    pAPI->vkCopyMicromapToMemoryEXT = (PFN_vkCopyMicromapToMemoryEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCopyMicromapToMemoryEXT\");\n    pAPI->vkCopyMemoryToMicromapEXT = (PFN_vkCopyMemoryToMicromapEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCopyMemoryToMicromapEXT\");\n    pAPI->vkWriteMicromapsPropertiesEXT = (PFN_vkWriteMicromapsPropertiesEXT)pAPI->vkGetDeviceProcAddr(device, \"vkWriteMicromapsPropertiesEXT\");\n    pAPI->vkCmdCopyMicromapEXT = (PFN_vkCmdCopyMicromapEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdCopyMicromapEXT\");\n    pAPI->vkCmdCopyMicromapToMemoryEXT = (PFN_vkCmdCopyMicromapToMemoryEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdCopyMicromapToMemoryEXT\");\n    pAPI->vkCmdCopyMemoryToMicromapEXT = (PFN_vkCmdCopyMemoryToMicromapEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdCopyMemoryToMicromapEXT\");\n    pAPI->vkCmdWriteMicromapsPropertiesEXT = (PFN_vkCmdWriteMicromapsPropertiesEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdWriteMicromapsPropertiesEXT\");\n    pAPI->vkGetDeviceMicromapCompatibilityEXT = (PFN_vkGetDeviceMicromapCompatibilityEXT)pAPI->vkGetDeviceProcAddr(device, \"vkGetDeviceMicromapCompatibilityEXT\");\n    pAPI->vkGetMicromapBuildSizesEXT = (PFN_vkGetMicromapBuildSizesEXT)pAPI->vkGetDeviceProcAddr(device, \"vkGetMicromapBuildSizesEXT\");\n    pAPI->vkCmdDrawClusterHUAWEI = (PFN_vkCmdDrawClusterHUAWEI)pAPI->vkGetDeviceProcAddr(device, \"vkCmdDrawClusterHUAWEI\");\n    pAPI->vkCmdDrawClusterIndirectHUAWEI = (PFN_vkCmdDrawClusterIndirectHUAWEI)pAPI->vkGetDeviceProcAddr(device, \"vkCmdDrawClusterIndirectHUAWEI\");\n    pAPI->vkSetDeviceMemoryPriorityEXT = (PFN_vkSetDeviceMemoryPriorityEXT)pAPI->vkGetDeviceProcAddr(device, \"vkSetDeviceMemoryPriorityEXT\");\n    pAPI->vkGetDeviceBufferMemoryRequirementsKHR = (PFN_vkGetDeviceBufferMemoryRequirementsKHR)pAPI->vkGetDeviceProcAddr(device, \"vkGetDeviceBufferMemoryRequirementsKHR\");\n    pAPI->vkGetDeviceImageMemoryRequirementsKHR = (PFN_vkGetDeviceImageMemoryRequirementsKHR)pAPI->vkGetDeviceProcAddr(device, \"vkGetDeviceImageMemoryRequirementsKHR\");\n    pAPI->vkGetDeviceImageSparseMemoryRequirementsKHR = (PFN_vkGetDeviceImageSparseMemoryRequirementsKHR)pAPI->vkGetDeviceProcAddr(device, \"vkGetDeviceImageSparseMemoryRequirementsKHR\");\n    pAPI->vkGetDescriptorSetLayoutHostMappingInfoVALVE = (PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE)pAPI->vkGetDeviceProcAddr(device, \"vkGetDescriptorSetLayoutHostMappingInfoVALVE\");\n    pAPI->vkGetDescriptorSetHostMappingVALVE = (PFN_vkGetDescriptorSetHostMappingVALVE)pAPI->vkGetDeviceProcAddr(device, \"vkGetDescriptorSetHostMappingVALVE\");\n    pAPI->vkGetPipelineIndirectMemoryRequirementsNV = (PFN_vkGetPipelineIndirectMemoryRequirementsNV)pAPI->vkGetDeviceProcAddr(device, \"vkGetPipelineIndirectMemoryRequirementsNV\");\n    pAPI->vkCmdUpdatePipelineIndirectBufferNV = (PFN_vkCmdUpdatePipelineIndirectBufferNV)pAPI->vkGetDeviceProcAddr(device, \"vkCmdUpdatePipelineIndirectBufferNV\");\n    pAPI->vkGetPipelineIndirectDeviceAddressNV = (PFN_vkGetPipelineIndirectDeviceAddressNV)pAPI->vkGetDeviceProcAddr(device, \"vkGetPipelineIndirectDeviceAddressNV\");\n    pAPI->vkCmdSetDepthClampEnableEXT = (PFN_vkCmdSetDepthClampEnableEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetDepthClampEnableEXT\");\n    pAPI->vkCmdSetPolygonModeEXT = (PFN_vkCmdSetPolygonModeEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetPolygonModeEXT\");\n    pAPI->vkCmdSetRasterizationSamplesEXT = (PFN_vkCmdSetRasterizationSamplesEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetRasterizationSamplesEXT\");\n    pAPI->vkCmdSetSampleMaskEXT = (PFN_vkCmdSetSampleMaskEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetSampleMaskEXT\");\n    pAPI->vkCmdSetAlphaToCoverageEnableEXT = (PFN_vkCmdSetAlphaToCoverageEnableEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetAlphaToCoverageEnableEXT\");\n    pAPI->vkCmdSetAlphaToOneEnableEXT = (PFN_vkCmdSetAlphaToOneEnableEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetAlphaToOneEnableEXT\");\n    pAPI->vkCmdSetLogicOpEnableEXT = (PFN_vkCmdSetLogicOpEnableEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetLogicOpEnableEXT\");\n    pAPI->vkCmdSetColorBlendEnableEXT = (PFN_vkCmdSetColorBlendEnableEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetColorBlendEnableEXT\");\n    pAPI->vkCmdSetColorBlendEquationEXT = (PFN_vkCmdSetColorBlendEquationEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetColorBlendEquationEXT\");\n    pAPI->vkCmdSetColorWriteMaskEXT = (PFN_vkCmdSetColorWriteMaskEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetColorWriteMaskEXT\");\n    pAPI->vkCmdSetTessellationDomainOriginEXT = (PFN_vkCmdSetTessellationDomainOriginEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetTessellationDomainOriginEXT\");\n    pAPI->vkCmdSetRasterizationStreamEXT = (PFN_vkCmdSetRasterizationStreamEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetRasterizationStreamEXT\");\n    pAPI->vkCmdSetConservativeRasterizationModeEXT = (PFN_vkCmdSetConservativeRasterizationModeEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetConservativeRasterizationModeEXT\");\n    pAPI->vkCmdSetExtraPrimitiveOverestimationSizeEXT = (PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetExtraPrimitiveOverestimationSizeEXT\");\n    pAPI->vkCmdSetDepthClipEnableEXT = (PFN_vkCmdSetDepthClipEnableEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetDepthClipEnableEXT\");\n    pAPI->vkCmdSetSampleLocationsEnableEXT = (PFN_vkCmdSetSampleLocationsEnableEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetSampleLocationsEnableEXT\");\n    pAPI->vkCmdSetColorBlendAdvancedEXT = (PFN_vkCmdSetColorBlendAdvancedEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetColorBlendAdvancedEXT\");\n    pAPI->vkCmdSetProvokingVertexModeEXT = (PFN_vkCmdSetProvokingVertexModeEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetProvokingVertexModeEXT\");\n    pAPI->vkCmdSetLineRasterizationModeEXT = (PFN_vkCmdSetLineRasterizationModeEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetLineRasterizationModeEXT\");\n    pAPI->vkCmdSetLineStippleEnableEXT = (PFN_vkCmdSetLineStippleEnableEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetLineStippleEnableEXT\");\n    pAPI->vkCmdSetDepthClipNegativeOneToOneEXT = (PFN_vkCmdSetDepthClipNegativeOneToOneEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetDepthClipNegativeOneToOneEXT\");\n    pAPI->vkCmdSetViewportWScalingEnableNV = (PFN_vkCmdSetViewportWScalingEnableNV)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetViewportWScalingEnableNV\");\n    pAPI->vkCmdSetViewportSwizzleNV = (PFN_vkCmdSetViewportSwizzleNV)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetViewportSwizzleNV\");\n    pAPI->vkCmdSetCoverageToColorEnableNV = (PFN_vkCmdSetCoverageToColorEnableNV)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetCoverageToColorEnableNV\");\n    pAPI->vkCmdSetCoverageToColorLocationNV = (PFN_vkCmdSetCoverageToColorLocationNV)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetCoverageToColorLocationNV\");\n    pAPI->vkCmdSetCoverageModulationModeNV = (PFN_vkCmdSetCoverageModulationModeNV)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetCoverageModulationModeNV\");\n    pAPI->vkCmdSetCoverageModulationTableEnableNV = (PFN_vkCmdSetCoverageModulationTableEnableNV)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetCoverageModulationTableEnableNV\");\n    pAPI->vkCmdSetCoverageModulationTableNV = (PFN_vkCmdSetCoverageModulationTableNV)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetCoverageModulationTableNV\");\n    pAPI->vkCmdSetShadingRateImageEnableNV = (PFN_vkCmdSetShadingRateImageEnableNV)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetShadingRateImageEnableNV\");\n    pAPI->vkCmdSetRepresentativeFragmentTestEnableNV = (PFN_vkCmdSetRepresentativeFragmentTestEnableNV)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetRepresentativeFragmentTestEnableNV\");\n    pAPI->vkCmdSetCoverageReductionModeNV = (PFN_vkCmdSetCoverageReductionModeNV)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetCoverageReductionModeNV\");\n    pAPI->vkCreateTensorARM = (PFN_vkCreateTensorARM)pAPI->vkGetDeviceProcAddr(device, \"vkCreateTensorARM\");\n    pAPI->vkDestroyTensorARM = (PFN_vkDestroyTensorARM)pAPI->vkGetDeviceProcAddr(device, \"vkDestroyTensorARM\");\n    pAPI->vkCreateTensorViewARM = (PFN_vkCreateTensorViewARM)pAPI->vkGetDeviceProcAddr(device, \"vkCreateTensorViewARM\");\n    pAPI->vkDestroyTensorViewARM = (PFN_vkDestroyTensorViewARM)pAPI->vkGetDeviceProcAddr(device, \"vkDestroyTensorViewARM\");\n    pAPI->vkGetTensorMemoryRequirementsARM = (PFN_vkGetTensorMemoryRequirementsARM)pAPI->vkGetDeviceProcAddr(device, \"vkGetTensorMemoryRequirementsARM\");\n    pAPI->vkBindTensorMemoryARM = (PFN_vkBindTensorMemoryARM)pAPI->vkGetDeviceProcAddr(device, \"vkBindTensorMemoryARM\");\n    pAPI->vkGetDeviceTensorMemoryRequirementsARM = (PFN_vkGetDeviceTensorMemoryRequirementsARM)pAPI->vkGetDeviceProcAddr(device, \"vkGetDeviceTensorMemoryRequirementsARM\");\n    pAPI->vkCmdCopyTensorARM = (PFN_vkCmdCopyTensorARM)pAPI->vkGetDeviceProcAddr(device, \"vkCmdCopyTensorARM\");\n    pAPI->vkGetTensorOpaqueCaptureDescriptorDataARM = (PFN_vkGetTensorOpaqueCaptureDescriptorDataARM)pAPI->vkGetDeviceProcAddr(device, \"vkGetTensorOpaqueCaptureDescriptorDataARM\");\n    pAPI->vkGetTensorViewOpaqueCaptureDescriptorDataARM = (PFN_vkGetTensorViewOpaqueCaptureDescriptorDataARM)pAPI->vkGetDeviceProcAddr(device, \"vkGetTensorViewOpaqueCaptureDescriptorDataARM\");\n    pAPI->vkGetShaderModuleIdentifierEXT = (PFN_vkGetShaderModuleIdentifierEXT)pAPI->vkGetDeviceProcAddr(device, \"vkGetShaderModuleIdentifierEXT\");\n    pAPI->vkGetShaderModuleCreateInfoIdentifierEXT = (PFN_vkGetShaderModuleCreateInfoIdentifierEXT)pAPI->vkGetDeviceProcAddr(device, \"vkGetShaderModuleCreateInfoIdentifierEXT\");\n    pAPI->vkCreateOpticalFlowSessionNV = (PFN_vkCreateOpticalFlowSessionNV)pAPI->vkGetDeviceProcAddr(device, \"vkCreateOpticalFlowSessionNV\");\n    pAPI->vkDestroyOpticalFlowSessionNV = (PFN_vkDestroyOpticalFlowSessionNV)pAPI->vkGetDeviceProcAddr(device, \"vkDestroyOpticalFlowSessionNV\");\n    pAPI->vkBindOpticalFlowSessionImageNV = (PFN_vkBindOpticalFlowSessionImageNV)pAPI->vkGetDeviceProcAddr(device, \"vkBindOpticalFlowSessionImageNV\");\n    pAPI->vkCmdOpticalFlowExecuteNV = (PFN_vkCmdOpticalFlowExecuteNV)pAPI->vkGetDeviceProcAddr(device, \"vkCmdOpticalFlowExecuteNV\");\n    pAPI->vkCmdBindIndexBuffer2KHR = (PFN_vkCmdBindIndexBuffer2KHR)pAPI->vkGetDeviceProcAddr(device, \"vkCmdBindIndexBuffer2KHR\");\n    pAPI->vkGetRenderingAreaGranularityKHR = (PFN_vkGetRenderingAreaGranularityKHR)pAPI->vkGetDeviceProcAddr(device, \"vkGetRenderingAreaGranularityKHR\");\n    pAPI->vkGetDeviceImageSubresourceLayoutKHR = (PFN_vkGetDeviceImageSubresourceLayoutKHR)pAPI->vkGetDeviceProcAddr(device, \"vkGetDeviceImageSubresourceLayoutKHR\");\n    pAPI->vkGetImageSubresourceLayout2KHR = (PFN_vkGetImageSubresourceLayout2KHR)pAPI->vkGetDeviceProcAddr(device, \"vkGetImageSubresourceLayout2KHR\");\n    pAPI->vkAntiLagUpdateAMD = (PFN_vkAntiLagUpdateAMD)pAPI->vkGetDeviceProcAddr(device, \"vkAntiLagUpdateAMD\");\n    pAPI->vkWaitForPresent2KHR = (PFN_vkWaitForPresent2KHR)pAPI->vkGetDeviceProcAddr(device, \"vkWaitForPresent2KHR\");\n    pAPI->vkCreateShadersEXT = (PFN_vkCreateShadersEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCreateShadersEXT\");\n    pAPI->vkDestroyShaderEXT = (PFN_vkDestroyShaderEXT)pAPI->vkGetDeviceProcAddr(device, \"vkDestroyShaderEXT\");\n    pAPI->vkGetShaderBinaryDataEXT = (PFN_vkGetShaderBinaryDataEXT)pAPI->vkGetDeviceProcAddr(device, \"vkGetShaderBinaryDataEXT\");\n    pAPI->vkCmdBindShadersEXT = (PFN_vkCmdBindShadersEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdBindShadersEXT\");\n    pAPI->vkCmdSetDepthClampRangeEXT = (PFN_vkCmdSetDepthClampRangeEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetDepthClampRangeEXT\");\n    pAPI->vkCreatePipelineBinariesKHR = (PFN_vkCreatePipelineBinariesKHR)pAPI->vkGetDeviceProcAddr(device, \"vkCreatePipelineBinariesKHR\");\n    pAPI->vkDestroyPipelineBinaryKHR = (PFN_vkDestroyPipelineBinaryKHR)pAPI->vkGetDeviceProcAddr(device, \"vkDestroyPipelineBinaryKHR\");\n    pAPI->vkGetPipelineKeyKHR = (PFN_vkGetPipelineKeyKHR)pAPI->vkGetDeviceProcAddr(device, \"vkGetPipelineKeyKHR\");\n    pAPI->vkGetPipelineBinaryDataKHR = (PFN_vkGetPipelineBinaryDataKHR)pAPI->vkGetDeviceProcAddr(device, \"vkGetPipelineBinaryDataKHR\");\n    pAPI->vkReleaseCapturedPipelineDataKHR = (PFN_vkReleaseCapturedPipelineDataKHR)pAPI->vkGetDeviceProcAddr(device, \"vkReleaseCapturedPipelineDataKHR\");\n    pAPI->vkGetFramebufferTilePropertiesQCOM = (PFN_vkGetFramebufferTilePropertiesQCOM)pAPI->vkGetDeviceProcAddr(device, \"vkGetFramebufferTilePropertiesQCOM\");\n    pAPI->vkGetDynamicRenderingTilePropertiesQCOM = (PFN_vkGetDynamicRenderingTilePropertiesQCOM)pAPI->vkGetDeviceProcAddr(device, \"vkGetDynamicRenderingTilePropertiesQCOM\");\n    pAPI->vkReleaseSwapchainImagesKHR = (PFN_vkReleaseSwapchainImagesKHR)pAPI->vkGetDeviceProcAddr(device, \"vkReleaseSwapchainImagesKHR\");\n    pAPI->vkReleaseSwapchainImagesEXT = (PFN_vkReleaseSwapchainImagesEXT)pAPI->vkGetDeviceProcAddr(device, \"vkReleaseSwapchainImagesEXT\");\n    pAPI->vkConvertCooperativeVectorMatrixNV = (PFN_vkConvertCooperativeVectorMatrixNV)pAPI->vkGetDeviceProcAddr(device, \"vkConvertCooperativeVectorMatrixNV\");\n    pAPI->vkCmdConvertCooperativeVectorMatrixNV = (PFN_vkCmdConvertCooperativeVectorMatrixNV)pAPI->vkGetDeviceProcAddr(device, \"vkCmdConvertCooperativeVectorMatrixNV\");\n    pAPI->vkSetLatencySleepModeNV = (PFN_vkSetLatencySleepModeNV)pAPI->vkGetDeviceProcAddr(device, \"vkSetLatencySleepModeNV\");\n    pAPI->vkLatencySleepNV = (PFN_vkLatencySleepNV)pAPI->vkGetDeviceProcAddr(device, \"vkLatencySleepNV\");\n    pAPI->vkSetLatencyMarkerNV = (PFN_vkSetLatencyMarkerNV)pAPI->vkGetDeviceProcAddr(device, \"vkSetLatencyMarkerNV\");\n    pAPI->vkGetLatencyTimingsNV = (PFN_vkGetLatencyTimingsNV)pAPI->vkGetDeviceProcAddr(device, \"vkGetLatencyTimingsNV\");\n    pAPI->vkQueueNotifyOutOfBandNV = (PFN_vkQueueNotifyOutOfBandNV)pAPI->vkGetDeviceProcAddr(device, \"vkQueueNotifyOutOfBandNV\");\n    pAPI->vkCreateDataGraphPipelinesARM = (PFN_vkCreateDataGraphPipelinesARM)pAPI->vkGetDeviceProcAddr(device, \"vkCreateDataGraphPipelinesARM\");\n    pAPI->vkCreateDataGraphPipelineSessionARM = (PFN_vkCreateDataGraphPipelineSessionARM)pAPI->vkGetDeviceProcAddr(device, \"vkCreateDataGraphPipelineSessionARM\");\n    pAPI->vkGetDataGraphPipelineSessionBindPointRequirementsARM = (PFN_vkGetDataGraphPipelineSessionBindPointRequirementsARM)pAPI->vkGetDeviceProcAddr(device, \"vkGetDataGraphPipelineSessionBindPointRequirementsARM\");\n    pAPI->vkGetDataGraphPipelineSessionMemoryRequirementsARM = (PFN_vkGetDataGraphPipelineSessionMemoryRequirementsARM)pAPI->vkGetDeviceProcAddr(device, \"vkGetDataGraphPipelineSessionMemoryRequirementsARM\");\n    pAPI->vkBindDataGraphPipelineSessionMemoryARM = (PFN_vkBindDataGraphPipelineSessionMemoryARM)pAPI->vkGetDeviceProcAddr(device, \"vkBindDataGraphPipelineSessionMemoryARM\");\n    pAPI->vkDestroyDataGraphPipelineSessionARM = (PFN_vkDestroyDataGraphPipelineSessionARM)pAPI->vkGetDeviceProcAddr(device, \"vkDestroyDataGraphPipelineSessionARM\");\n    pAPI->vkCmdDispatchDataGraphARM = (PFN_vkCmdDispatchDataGraphARM)pAPI->vkGetDeviceProcAddr(device, \"vkCmdDispatchDataGraphARM\");\n    pAPI->vkGetDataGraphPipelineAvailablePropertiesARM = (PFN_vkGetDataGraphPipelineAvailablePropertiesARM)pAPI->vkGetDeviceProcAddr(device, \"vkGetDataGraphPipelineAvailablePropertiesARM\");\n    pAPI->vkGetDataGraphPipelinePropertiesARM = (PFN_vkGetDataGraphPipelinePropertiesARM)pAPI->vkGetDeviceProcAddr(device, \"vkGetDataGraphPipelinePropertiesARM\");\n    pAPI->vkCmdSetAttachmentFeedbackLoopEnableEXT = (PFN_vkCmdSetAttachmentFeedbackLoopEnableEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetAttachmentFeedbackLoopEnableEXT\");\n    pAPI->vkCmdSetLineStippleKHR = (PFN_vkCmdSetLineStippleKHR)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetLineStippleKHR\");\n    pAPI->vkCmdSetLineStippleEXT = (PFN_vkCmdSetLineStippleEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetLineStippleEXT\");\n    pAPI->vkGetCalibratedTimestampsKHR = (PFN_vkGetCalibratedTimestampsKHR)pAPI->vkGetDeviceProcAddr(device, \"vkGetCalibratedTimestampsKHR\");\n    pAPI->vkGetCalibratedTimestampsEXT = (PFN_vkGetCalibratedTimestampsEXT)pAPI->vkGetDeviceProcAddr(device, \"vkGetCalibratedTimestampsEXT\");\n    pAPI->vkCmdBindDescriptorSets2KHR = (PFN_vkCmdBindDescriptorSets2KHR)pAPI->vkGetDeviceProcAddr(device, \"vkCmdBindDescriptorSets2KHR\");\n    pAPI->vkCmdPushConstants2KHR = (PFN_vkCmdPushConstants2KHR)pAPI->vkGetDeviceProcAddr(device, \"vkCmdPushConstants2KHR\");\n    pAPI->vkCmdPushDescriptorSet2KHR = (PFN_vkCmdPushDescriptorSet2KHR)pAPI->vkGetDeviceProcAddr(device, \"vkCmdPushDescriptorSet2KHR\");\n    pAPI->vkCmdPushDescriptorSetWithTemplate2KHR = (PFN_vkCmdPushDescriptorSetWithTemplate2KHR)pAPI->vkGetDeviceProcAddr(device, \"vkCmdPushDescriptorSetWithTemplate2KHR\");\n    pAPI->vkCmdSetDescriptorBufferOffsets2EXT = (PFN_vkCmdSetDescriptorBufferOffsets2EXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetDescriptorBufferOffsets2EXT\");\n    pAPI->vkCmdBindDescriptorBufferEmbeddedSamplers2EXT = (PFN_vkCmdBindDescriptorBufferEmbeddedSamplers2EXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdBindDescriptorBufferEmbeddedSamplers2EXT\");\n    pAPI->vkCmdBindTileMemoryQCOM = (PFN_vkCmdBindTileMemoryQCOM)pAPI->vkGetDeviceProcAddr(device, \"vkCmdBindTileMemoryQCOM\");\n    pAPI->vkCmdCopyMemoryIndirectKHR = (PFN_vkCmdCopyMemoryIndirectKHR)pAPI->vkGetDeviceProcAddr(device, \"vkCmdCopyMemoryIndirectKHR\");\n    pAPI->vkCmdCopyMemoryToImageIndirectKHR = (PFN_vkCmdCopyMemoryToImageIndirectKHR)pAPI->vkGetDeviceProcAddr(device, \"vkCmdCopyMemoryToImageIndirectKHR\");\n    pAPI->vkCmdCopyMemoryIndirectNV = (PFN_vkCmdCopyMemoryIndirectNV)pAPI->vkGetDeviceProcAddr(device, \"vkCmdCopyMemoryIndirectNV\");\n    pAPI->vkCmdCopyMemoryToImageIndirectNV = (PFN_vkCmdCopyMemoryToImageIndirectNV)pAPI->vkGetDeviceProcAddr(device, \"vkCmdCopyMemoryToImageIndirectNV\");\n    pAPI->vkCmdDecompressMemoryEXT = (PFN_vkCmdDecompressMemoryEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdDecompressMemoryEXT\");\n    pAPI->vkCmdDecompressMemoryIndirectCountEXT = (PFN_vkCmdDecompressMemoryIndirectCountEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdDecompressMemoryIndirectCountEXT\");\n    pAPI->vkCmdDecompressMemoryNV = (PFN_vkCmdDecompressMemoryNV)pAPI->vkGetDeviceProcAddr(device, \"vkCmdDecompressMemoryNV\");\n    pAPI->vkCmdDecompressMemoryIndirectCountNV = (PFN_vkCmdDecompressMemoryIndirectCountNV)pAPI->vkGetDeviceProcAddr(device, \"vkCmdDecompressMemoryIndirectCountNV\");\n    pAPI->vkCreateExternalComputeQueueNV = (PFN_vkCreateExternalComputeQueueNV)pAPI->vkGetDeviceProcAddr(device, \"vkCreateExternalComputeQueueNV\");\n    pAPI->vkDestroyExternalComputeQueueNV = (PFN_vkDestroyExternalComputeQueueNV)pAPI->vkGetDeviceProcAddr(device, \"vkDestroyExternalComputeQueueNV\");\n    pAPI->vkGetExternalComputeQueueDataNV = (PFN_vkGetExternalComputeQueueDataNV)pAPI->vkGetDeviceProcAddr(device, \"vkGetExternalComputeQueueDataNV\");\n    pAPI->vkGetClusterAccelerationStructureBuildSizesNV = (PFN_vkGetClusterAccelerationStructureBuildSizesNV)pAPI->vkGetDeviceProcAddr(device, \"vkGetClusterAccelerationStructureBuildSizesNV\");\n    pAPI->vkCmdBuildClusterAccelerationStructureIndirectNV = (PFN_vkCmdBuildClusterAccelerationStructureIndirectNV)pAPI->vkGetDeviceProcAddr(device, \"vkCmdBuildClusterAccelerationStructureIndirectNV\");\n    pAPI->vkGetPartitionedAccelerationStructuresBuildSizesNV = (PFN_vkGetPartitionedAccelerationStructuresBuildSizesNV)pAPI->vkGetDeviceProcAddr(device, \"vkGetPartitionedAccelerationStructuresBuildSizesNV\");\n    pAPI->vkCmdBuildPartitionedAccelerationStructuresNV = (PFN_vkCmdBuildPartitionedAccelerationStructuresNV)pAPI->vkGetDeviceProcAddr(device, \"vkCmdBuildPartitionedAccelerationStructuresNV\");\n    pAPI->vkGetGeneratedCommandsMemoryRequirementsEXT = (PFN_vkGetGeneratedCommandsMemoryRequirementsEXT)pAPI->vkGetDeviceProcAddr(device, \"vkGetGeneratedCommandsMemoryRequirementsEXT\");\n    pAPI->vkCmdPreprocessGeneratedCommandsEXT = (PFN_vkCmdPreprocessGeneratedCommandsEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdPreprocessGeneratedCommandsEXT\");\n    pAPI->vkCmdExecuteGeneratedCommandsEXT = (PFN_vkCmdExecuteGeneratedCommandsEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdExecuteGeneratedCommandsEXT\");\n    pAPI->vkCreateIndirectCommandsLayoutEXT = (PFN_vkCreateIndirectCommandsLayoutEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCreateIndirectCommandsLayoutEXT\");\n    pAPI->vkDestroyIndirectCommandsLayoutEXT = (PFN_vkDestroyIndirectCommandsLayoutEXT)pAPI->vkGetDeviceProcAddr(device, \"vkDestroyIndirectCommandsLayoutEXT\");\n    pAPI->vkCreateIndirectExecutionSetEXT = (PFN_vkCreateIndirectExecutionSetEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCreateIndirectExecutionSetEXT\");\n    pAPI->vkDestroyIndirectExecutionSetEXT = (PFN_vkDestroyIndirectExecutionSetEXT)pAPI->vkGetDeviceProcAddr(device, \"vkDestroyIndirectExecutionSetEXT\");\n    pAPI->vkUpdateIndirectExecutionSetPipelineEXT = (PFN_vkUpdateIndirectExecutionSetPipelineEXT)pAPI->vkGetDeviceProcAddr(device, \"vkUpdateIndirectExecutionSetPipelineEXT\");\n    pAPI->vkUpdateIndirectExecutionSetShaderEXT = (PFN_vkUpdateIndirectExecutionSetShaderEXT)pAPI->vkGetDeviceProcAddr(device, \"vkUpdateIndirectExecutionSetShaderEXT\");\n    pAPI->vkCreateShaderInstrumentationARM = (PFN_vkCreateShaderInstrumentationARM)pAPI->vkGetDeviceProcAddr(device, \"vkCreateShaderInstrumentationARM\");\n    pAPI->vkDestroyShaderInstrumentationARM = (PFN_vkDestroyShaderInstrumentationARM)pAPI->vkGetDeviceProcAddr(device, \"vkDestroyShaderInstrumentationARM\");\n    pAPI->vkCmdBeginShaderInstrumentationARM = (PFN_vkCmdBeginShaderInstrumentationARM)pAPI->vkGetDeviceProcAddr(device, \"vkCmdBeginShaderInstrumentationARM\");\n    pAPI->vkCmdEndShaderInstrumentationARM = (PFN_vkCmdEndShaderInstrumentationARM)pAPI->vkGetDeviceProcAddr(device, \"vkCmdEndShaderInstrumentationARM\");\n    pAPI->vkGetShaderInstrumentationValuesARM = (PFN_vkGetShaderInstrumentationValuesARM)pAPI->vkGetDeviceProcAddr(device, \"vkGetShaderInstrumentationValuesARM\");\n    pAPI->vkClearShaderInstrumentationMetricsARM = (PFN_vkClearShaderInstrumentationMetricsARM)pAPI->vkGetDeviceProcAddr(device, \"vkClearShaderInstrumentationMetricsARM\");\n    pAPI->vkCmdEndRendering2EXT = (PFN_vkCmdEndRendering2EXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdEndRendering2EXT\");\n    pAPI->vkCmdBeginCustomResolveEXT = (PFN_vkCmdBeginCustomResolveEXT)pAPI->vkGetDeviceProcAddr(device, \"vkCmdBeginCustomResolveEXT\");\n    pAPI->vkCmdEndRendering2KHR = (PFN_vkCmdEndRendering2KHR)pAPI->vkGetDeviceProcAddr(device, \"vkCmdEndRendering2KHR\");\n    pAPI->vkCmdSetComputeOccupancyPriorityNV = (PFN_vkCmdSetComputeOccupancyPriorityNV)pAPI->vkGetDeviceProcAddr(device, \"vkCmdSetComputeOccupancyPriorityNV\");\n#ifdef VK_USE_PLATFORM_XLIB_KHR\n#endif /*VK_USE_PLATFORM_XLIB_KHR*/\n#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT\n#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/\n#ifdef VK_USE_PLATFORM_XCB_KHR\n#endif /*VK_USE_PLATFORM_XCB_KHR*/\n#ifdef VK_USE_PLATFORM_WAYLAND_KHR\n#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/\n#ifdef VK_USE_PLATFORM_UBM_SEC\n#endif /*VK_USE_PLATFORM_UBM_SEC*/\n#ifdef VK_USE_PLATFORM_DIRECTFB_EXT\n#endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/\n#ifdef VK_USE_PLATFORM_ANDROID_KHR\n    pAPI->vkGetAndroidHardwareBufferPropertiesANDROID = (PFN_vkGetAndroidHardwareBufferPropertiesANDROID)pAPI->vkGetDeviceProcAddr(device, \"vkGetAndroidHardwareBufferPropertiesANDROID\");\n    pAPI->vkGetMemoryAndroidHardwareBufferANDROID = (PFN_vkGetMemoryAndroidHardwareBufferANDROID)pAPI->vkGetDeviceProcAddr(device, \"vkGetMemoryAndroidHardwareBufferANDROID\");\n#endif /*VK_USE_PLATFORM_ANDROID_KHR*/\n#ifdef VK_USE_PLATFORM_WIN32_KHR\n    pAPI->vkGetMemoryWin32HandleKHR = (PFN_vkGetMemoryWin32HandleKHR)pAPI->vkGetDeviceProcAddr(device, \"vkGetMemoryWin32HandleKHR\");\n    pAPI->vkGetMemoryWin32HandlePropertiesKHR = (PFN_vkGetMemoryWin32HandlePropertiesKHR)pAPI->vkGetDeviceProcAddr(device, \"vkGetMemoryWin32HandlePropertiesKHR\");\n    pAPI->vkGetMemoryWin32HandleNV = (PFN_vkGetMemoryWin32HandleNV)pAPI->vkGetDeviceProcAddr(device, \"vkGetMemoryWin32HandleNV\");\n    pAPI->vkImportSemaphoreWin32HandleKHR = (PFN_vkImportSemaphoreWin32HandleKHR)pAPI->vkGetDeviceProcAddr(device, \"vkImportSemaphoreWin32HandleKHR\");\n    pAPI->vkGetSemaphoreWin32HandleKHR = (PFN_vkGetSemaphoreWin32HandleKHR)pAPI->vkGetDeviceProcAddr(device, \"vkGetSemaphoreWin32HandleKHR\");\n    pAPI->vkImportFenceWin32HandleKHR = (PFN_vkImportFenceWin32HandleKHR)pAPI->vkGetDeviceProcAddr(device, \"vkImportFenceWin32HandleKHR\");\n    pAPI->vkGetFenceWin32HandleKHR = (PFN_vkGetFenceWin32HandleKHR)pAPI->vkGetDeviceProcAddr(device, \"vkGetFenceWin32HandleKHR\");\n    pAPI->vkAcquireFullScreenExclusiveModeEXT = (PFN_vkAcquireFullScreenExclusiveModeEXT)pAPI->vkGetDeviceProcAddr(device, \"vkAcquireFullScreenExclusiveModeEXT\");\n    pAPI->vkReleaseFullScreenExclusiveModeEXT = (PFN_vkReleaseFullScreenExclusiveModeEXT)pAPI->vkGetDeviceProcAddr(device, \"vkReleaseFullScreenExclusiveModeEXT\");\n    pAPI->vkGetDeviceGroupSurfacePresentModes2EXT = (PFN_vkGetDeviceGroupSurfacePresentModes2EXT)pAPI->vkGetDeviceProcAddr(device, \"vkGetDeviceGroupSurfacePresentModes2EXT\");\n#endif /*VK_USE_PLATFORM_WIN32_KHR*/\n#ifdef VK_USE_PLATFORM_VI_NN\n#endif /*VK_USE_PLATFORM_VI_NN*/\n#ifdef VK_USE_PLATFORM_IOS_MVK\n#endif /*VK_USE_PLATFORM_IOS_MVK*/\n#ifdef VK_USE_PLATFORM_MACOS_MVK\n#endif /*VK_USE_PLATFORM_MACOS_MVK*/\n#ifdef VK_USE_PLATFORM_METAL_EXT\n    pAPI->vkExportMetalObjectsEXT = (PFN_vkExportMetalObjectsEXT)pAPI->vkGetDeviceProcAddr(device, \"vkExportMetalObjectsEXT\");\n    pAPI->vkGetMemoryMetalHandleEXT = (PFN_vkGetMemoryMetalHandleEXT)pAPI->vkGetDeviceProcAddr(device, \"vkGetMemoryMetalHandleEXT\");\n    pAPI->vkGetMemoryMetalHandlePropertiesEXT = (PFN_vkGetMemoryMetalHandlePropertiesEXT)pAPI->vkGetDeviceProcAddr(device, \"vkGetMemoryMetalHandlePropertiesEXT\");\n#endif /*VK_USE_PLATFORM_METAL_EXT*/\n#ifdef VK_USE_PLATFORM_FUCHSIA\n    pAPI->vkGetMemoryZirconHandleFUCHSIA = (PFN_vkGetMemoryZirconHandleFUCHSIA)pAPI->vkGetDeviceProcAddr(device, \"vkGetMemoryZirconHandleFUCHSIA\");\n    pAPI->vkGetMemoryZirconHandlePropertiesFUCHSIA = (PFN_vkGetMemoryZirconHandlePropertiesFUCHSIA)pAPI->vkGetDeviceProcAddr(device, \"vkGetMemoryZirconHandlePropertiesFUCHSIA\");\n    pAPI->vkImportSemaphoreZirconHandleFUCHSIA = (PFN_vkImportSemaphoreZirconHandleFUCHSIA)pAPI->vkGetDeviceProcAddr(device, \"vkImportSemaphoreZirconHandleFUCHSIA\");\n    pAPI->vkGetSemaphoreZirconHandleFUCHSIA = (PFN_vkGetSemaphoreZirconHandleFUCHSIA)pAPI->vkGetDeviceProcAddr(device, \"vkGetSemaphoreZirconHandleFUCHSIA\");\n    pAPI->vkCreateBufferCollectionFUCHSIA = (PFN_vkCreateBufferCollectionFUCHSIA)pAPI->vkGetDeviceProcAddr(device, \"vkCreateBufferCollectionFUCHSIA\");\n    pAPI->vkSetBufferCollectionImageConstraintsFUCHSIA = (PFN_vkSetBufferCollectionImageConstraintsFUCHSIA)pAPI->vkGetDeviceProcAddr(device, \"vkSetBufferCollectionImageConstraintsFUCHSIA\");\n    pAPI->vkSetBufferCollectionBufferConstraintsFUCHSIA = (PFN_vkSetBufferCollectionBufferConstraintsFUCHSIA)pAPI->vkGetDeviceProcAddr(device, \"vkSetBufferCollectionBufferConstraintsFUCHSIA\");\n    pAPI->vkDestroyBufferCollectionFUCHSIA = (PFN_vkDestroyBufferCollectionFUCHSIA)pAPI->vkGetDeviceProcAddr(device, \"vkDestroyBufferCollectionFUCHSIA\");\n    pAPI->vkGetBufferCollectionPropertiesFUCHSIA = (PFN_vkGetBufferCollectionPropertiesFUCHSIA)pAPI->vkGetDeviceProcAddr(device, \"vkGetBufferCollectionPropertiesFUCHSIA\");\n#endif /*VK_USE_PLATFORM_FUCHSIA*/\n#ifdef VK_USE_PLATFORM_GGP\n#endif /*VK_USE_PLATFORM_GGP*/\n#ifdef VK_USE_PLATFORM_SCI\n    pAPI->vkGetMemorySciBufNV = (PFN_vkGetMemorySciBufNV)pAPI->vkGetDeviceProcAddr(device, \"vkGetMemorySciBufNV\");\n    pAPI->vkCreateSemaphoreSciSyncPoolNV = (PFN_vkCreateSemaphoreSciSyncPoolNV)pAPI->vkGetDeviceProcAddr(device, \"vkCreateSemaphoreSciSyncPoolNV\");\n    pAPI->vkDestroySemaphoreSciSyncPoolNV = (PFN_vkDestroySemaphoreSciSyncPoolNV)pAPI->vkGetDeviceProcAddr(device, \"vkDestroySemaphoreSciSyncPoolNV\");\n    pAPI->vkGetFenceSciSyncFenceNV = (PFN_vkGetFenceSciSyncFenceNV)pAPI->vkGetDeviceProcAddr(device, \"vkGetFenceSciSyncFenceNV\");\n    pAPI->vkGetFenceSciSyncObjNV = (PFN_vkGetFenceSciSyncObjNV)pAPI->vkGetDeviceProcAddr(device, \"vkGetFenceSciSyncObjNV\");\n    pAPI->vkImportFenceSciSyncFenceNV = (PFN_vkImportFenceSciSyncFenceNV)pAPI->vkGetDeviceProcAddr(device, \"vkImportFenceSciSyncFenceNV\");\n    pAPI->vkImportFenceSciSyncObjNV = (PFN_vkImportFenceSciSyncObjNV)pAPI->vkGetDeviceProcAddr(device, \"vkImportFenceSciSyncObjNV\");\n    pAPI->vkGetSemaphoreSciSyncObjNV = (PFN_vkGetSemaphoreSciSyncObjNV)pAPI->vkGetDeviceProcAddr(device, \"vkGetSemaphoreSciSyncObjNV\");\n    pAPI->vkImportSemaphoreSciSyncObjNV = (PFN_vkImportSemaphoreSciSyncObjNV)pAPI->vkGetDeviceProcAddr(device, \"vkImportSemaphoreSciSyncObjNV\");\n#endif /*VK_USE_PLATFORM_SCI*/\n#ifdef VK_ENABLE_BETA_EXTENSIONS\n    pAPI->vkCreateExecutionGraphPipelinesAMDX = (PFN_vkCreateExecutionGraphPipelinesAMDX)pAPI->vkGetDeviceProcAddr(device, \"vkCreateExecutionGraphPipelinesAMDX\");\n    pAPI->vkGetExecutionGraphPipelineScratchSizeAMDX = (PFN_vkGetExecutionGraphPipelineScratchSizeAMDX)pAPI->vkGetDeviceProcAddr(device, \"vkGetExecutionGraphPipelineScratchSizeAMDX\");\n    pAPI->vkGetExecutionGraphPipelineNodeIndexAMDX = (PFN_vkGetExecutionGraphPipelineNodeIndexAMDX)pAPI->vkGetDeviceProcAddr(device, \"vkGetExecutionGraphPipelineNodeIndexAMDX\");\n    pAPI->vkCmdInitializeGraphScratchMemoryAMDX = (PFN_vkCmdInitializeGraphScratchMemoryAMDX)pAPI->vkGetDeviceProcAddr(device, \"vkCmdInitializeGraphScratchMemoryAMDX\");\n    pAPI->vkCmdDispatchGraphAMDX = (PFN_vkCmdDispatchGraphAMDX)pAPI->vkGetDeviceProcAddr(device, \"vkCmdDispatchGraphAMDX\");\n    pAPI->vkCmdDispatchGraphIndirectAMDX = (PFN_vkCmdDispatchGraphIndirectAMDX)pAPI->vkGetDeviceProcAddr(device, \"vkCmdDispatchGraphIndirectAMDX\");\n    pAPI->vkCmdDispatchGraphIndirectCountAMDX = (PFN_vkCmdDispatchGraphIndirectCountAMDX)pAPI->vkGetDeviceProcAddr(device, \"vkCmdDispatchGraphIndirectCountAMDX\");\n    pAPI->vkCreateCudaModuleNV = (PFN_vkCreateCudaModuleNV)pAPI->vkGetDeviceProcAddr(device, \"vkCreateCudaModuleNV\");\n    pAPI->vkGetCudaModuleCacheNV = (PFN_vkGetCudaModuleCacheNV)pAPI->vkGetDeviceProcAddr(device, \"vkGetCudaModuleCacheNV\");\n    pAPI->vkCreateCudaFunctionNV = (PFN_vkCreateCudaFunctionNV)pAPI->vkGetDeviceProcAddr(device, \"vkCreateCudaFunctionNV\");\n    pAPI->vkDestroyCudaModuleNV = (PFN_vkDestroyCudaModuleNV)pAPI->vkGetDeviceProcAddr(device, \"vkDestroyCudaModuleNV\");\n    pAPI->vkDestroyCudaFunctionNV = (PFN_vkDestroyCudaFunctionNV)pAPI->vkGetDeviceProcAddr(device, \"vkDestroyCudaFunctionNV\");\n    pAPI->vkCmdCudaLaunchKernelNV = (PFN_vkCmdCudaLaunchKernelNV)pAPI->vkGetDeviceProcAddr(device, \"vkCmdCudaLaunchKernelNV\");\n#endif /*VK_ENABLE_BETA_EXTENSIONS*/\n#ifdef VK_USE_PLATFORM_SCREEN_QNX\n    pAPI->vkGetScreenBufferPropertiesQNX = (PFN_vkGetScreenBufferPropertiesQNX)pAPI->vkGetDeviceProcAddr(device, \"vkGetScreenBufferPropertiesQNX\");\n#endif /*VK_USE_PLATFORM_SCREEN_QNX*/\n#ifdef VK_USE_PLATFORM_OHOS\n    pAPI->vkGetNativeBufferPropertiesOHOS = (PFN_vkGetNativeBufferPropertiesOHOS)pAPI->vkGetDeviceProcAddr(device, \"vkGetNativeBufferPropertiesOHOS\");\n    pAPI->vkGetMemoryNativeBufferOHOS = (PFN_vkGetMemoryNativeBufferOHOS)pAPI->vkGetDeviceProcAddr(device, \"vkGetMemoryNativeBufferOHOS\");\n#endif /*VK_USE_PLATFORM_OHOS*/\n\n    return VK_SUCCESS;\n}\n\nVkResult vkbBindAPI(const VkbAPI* pAPI)\n{\n    if (pAPI == NULL) {\n        return VK_ERROR_INITIALIZATION_FAILED;\n    }\n\n#if defined(VKBIND_NO_GLOBAL_API)\n    return VK_ERROR_INITIALIZATION_FAILED;  /* The global API has been disabled. */\n#else\n    vkCreateInstance = pAPI->vkCreateInstance;\n    vkDestroyInstance = pAPI->vkDestroyInstance;\n    vkEnumeratePhysicalDevices = pAPI->vkEnumeratePhysicalDevices;\n    vkGetPhysicalDeviceFeatures = pAPI->vkGetPhysicalDeviceFeatures;\n    vkGetPhysicalDeviceFormatProperties = pAPI->vkGetPhysicalDeviceFormatProperties;\n    vkGetPhysicalDeviceImageFormatProperties = pAPI->vkGetPhysicalDeviceImageFormatProperties;\n    vkGetPhysicalDeviceProperties = pAPI->vkGetPhysicalDeviceProperties;\n    vkGetPhysicalDeviceQueueFamilyProperties = pAPI->vkGetPhysicalDeviceQueueFamilyProperties;\n    vkGetPhysicalDeviceMemoryProperties = pAPI->vkGetPhysicalDeviceMemoryProperties;\n    vkGetInstanceProcAddr = pAPI->vkGetInstanceProcAddr;\n    vkGetDeviceProcAddr = pAPI->vkGetDeviceProcAddr;\n    vkCreateDevice = pAPI->vkCreateDevice;\n    vkDestroyDevice = pAPI->vkDestroyDevice;\n    vkEnumerateInstanceExtensionProperties = pAPI->vkEnumerateInstanceExtensionProperties;\n    vkEnumerateDeviceExtensionProperties = pAPI->vkEnumerateDeviceExtensionProperties;\n    vkEnumerateInstanceLayerProperties = pAPI->vkEnumerateInstanceLayerProperties;\n    vkEnumerateDeviceLayerProperties = pAPI->vkEnumerateDeviceLayerProperties;\n    vkGetDeviceQueue = pAPI->vkGetDeviceQueue;\n    vkQueueSubmit = pAPI->vkQueueSubmit;\n    vkQueueWaitIdle = pAPI->vkQueueWaitIdle;\n    vkDeviceWaitIdle = pAPI->vkDeviceWaitIdle;\n    vkAllocateMemory = pAPI->vkAllocateMemory;\n    vkFreeMemory = pAPI->vkFreeMemory;\n    vkMapMemory = pAPI->vkMapMemory;\n    vkUnmapMemory = pAPI->vkUnmapMemory;\n    vkFlushMappedMemoryRanges = pAPI->vkFlushMappedMemoryRanges;\n    vkInvalidateMappedMemoryRanges = pAPI->vkInvalidateMappedMemoryRanges;\n    vkGetDeviceMemoryCommitment = pAPI->vkGetDeviceMemoryCommitment;\n    vkBindBufferMemory = pAPI->vkBindBufferMemory;\n    vkBindImageMemory = pAPI->vkBindImageMemory;\n    vkGetBufferMemoryRequirements = pAPI->vkGetBufferMemoryRequirements;\n    vkGetImageMemoryRequirements = pAPI->vkGetImageMemoryRequirements;\n    vkGetImageSparseMemoryRequirements = pAPI->vkGetImageSparseMemoryRequirements;\n    vkGetPhysicalDeviceSparseImageFormatProperties = pAPI->vkGetPhysicalDeviceSparseImageFormatProperties;\n    vkQueueBindSparse = pAPI->vkQueueBindSparse;\n    vkCreateFence = pAPI->vkCreateFence;\n    vkDestroyFence = pAPI->vkDestroyFence;\n    vkResetFences = pAPI->vkResetFences;\n    vkGetFenceStatus = pAPI->vkGetFenceStatus;\n    vkWaitForFences = pAPI->vkWaitForFences;\n    vkCreateSemaphore = pAPI->vkCreateSemaphore;\n    vkDestroySemaphore = pAPI->vkDestroySemaphore;\n    vkCreateQueryPool = pAPI->vkCreateQueryPool;\n    vkDestroyQueryPool = pAPI->vkDestroyQueryPool;\n    vkGetQueryPoolResults = pAPI->vkGetQueryPoolResults;\n    vkCreateBuffer = pAPI->vkCreateBuffer;\n    vkDestroyBuffer = pAPI->vkDestroyBuffer;\n    vkCreateImage = pAPI->vkCreateImage;\n    vkDestroyImage = pAPI->vkDestroyImage;\n    vkGetImageSubresourceLayout = pAPI->vkGetImageSubresourceLayout;\n    vkCreateImageView = pAPI->vkCreateImageView;\n    vkDestroyImageView = pAPI->vkDestroyImageView;\n    vkCreateCommandPool = pAPI->vkCreateCommandPool;\n    vkDestroyCommandPool = pAPI->vkDestroyCommandPool;\n    vkResetCommandPool = pAPI->vkResetCommandPool;\n    vkAllocateCommandBuffers = pAPI->vkAllocateCommandBuffers;\n    vkFreeCommandBuffers = pAPI->vkFreeCommandBuffers;\n    vkBeginCommandBuffer = pAPI->vkBeginCommandBuffer;\n    vkEndCommandBuffer = pAPI->vkEndCommandBuffer;\n    vkResetCommandBuffer = pAPI->vkResetCommandBuffer;\n    vkCmdCopyBuffer = pAPI->vkCmdCopyBuffer;\n    vkCmdCopyImage = pAPI->vkCmdCopyImage;\n    vkCmdCopyBufferToImage = pAPI->vkCmdCopyBufferToImage;\n    vkCmdCopyImageToBuffer = pAPI->vkCmdCopyImageToBuffer;\n    vkCmdUpdateBuffer = pAPI->vkCmdUpdateBuffer;\n    vkCmdFillBuffer = pAPI->vkCmdFillBuffer;\n    vkCmdPipelineBarrier = pAPI->vkCmdPipelineBarrier;\n    vkCmdBeginQuery = pAPI->vkCmdBeginQuery;\n    vkCmdEndQuery = pAPI->vkCmdEndQuery;\n    vkCmdResetQueryPool = pAPI->vkCmdResetQueryPool;\n    vkCmdWriteTimestamp = pAPI->vkCmdWriteTimestamp;\n    vkCmdCopyQueryPoolResults = pAPI->vkCmdCopyQueryPoolResults;\n    vkCmdExecuteCommands = pAPI->vkCmdExecuteCommands;\n    vkCreateEvent = pAPI->vkCreateEvent;\n    vkDestroyEvent = pAPI->vkDestroyEvent;\n    vkGetEventStatus = pAPI->vkGetEventStatus;\n    vkSetEvent = pAPI->vkSetEvent;\n    vkResetEvent = pAPI->vkResetEvent;\n    vkCreateBufferView = pAPI->vkCreateBufferView;\n    vkDestroyBufferView = pAPI->vkDestroyBufferView;\n    vkCreateShaderModule = pAPI->vkCreateShaderModule;\n    vkDestroyShaderModule = pAPI->vkDestroyShaderModule;\n    vkCreatePipelineCache = pAPI->vkCreatePipelineCache;\n    vkDestroyPipelineCache = pAPI->vkDestroyPipelineCache;\n    vkGetPipelineCacheData = pAPI->vkGetPipelineCacheData;\n    vkMergePipelineCaches = pAPI->vkMergePipelineCaches;\n    vkCreateComputePipelines = pAPI->vkCreateComputePipelines;\n    vkDestroyPipeline = pAPI->vkDestroyPipeline;\n    vkCreatePipelineLayout = pAPI->vkCreatePipelineLayout;\n    vkDestroyPipelineLayout = pAPI->vkDestroyPipelineLayout;\n    vkCreateSampler = pAPI->vkCreateSampler;\n    vkDestroySampler = pAPI->vkDestroySampler;\n    vkCreateDescriptorSetLayout = pAPI->vkCreateDescriptorSetLayout;\n    vkDestroyDescriptorSetLayout = pAPI->vkDestroyDescriptorSetLayout;\n    vkCreateDescriptorPool = pAPI->vkCreateDescriptorPool;\n    vkDestroyDescriptorPool = pAPI->vkDestroyDescriptorPool;\n    vkResetDescriptorPool = pAPI->vkResetDescriptorPool;\n    vkAllocateDescriptorSets = pAPI->vkAllocateDescriptorSets;\n    vkFreeDescriptorSets = pAPI->vkFreeDescriptorSets;\n    vkUpdateDescriptorSets = pAPI->vkUpdateDescriptorSets;\n    vkCmdBindPipeline = pAPI->vkCmdBindPipeline;\n    vkCmdBindDescriptorSets = pAPI->vkCmdBindDescriptorSets;\n    vkCmdClearColorImage = pAPI->vkCmdClearColorImage;\n    vkCmdDispatch = pAPI->vkCmdDispatch;\n    vkCmdDispatchIndirect = pAPI->vkCmdDispatchIndirect;\n    vkCmdSetEvent = pAPI->vkCmdSetEvent;\n    vkCmdResetEvent = pAPI->vkCmdResetEvent;\n    vkCmdWaitEvents = pAPI->vkCmdWaitEvents;\n    vkCmdPushConstants = pAPI->vkCmdPushConstants;\n    vkCreateGraphicsPipelines = pAPI->vkCreateGraphicsPipelines;\n    vkCreateFramebuffer = pAPI->vkCreateFramebuffer;\n    vkDestroyFramebuffer = pAPI->vkDestroyFramebuffer;\n    vkCreateRenderPass = pAPI->vkCreateRenderPass;\n    vkDestroyRenderPass = pAPI->vkDestroyRenderPass;\n    vkGetRenderAreaGranularity = pAPI->vkGetRenderAreaGranularity;\n    vkCmdSetViewport = pAPI->vkCmdSetViewport;\n    vkCmdSetScissor = pAPI->vkCmdSetScissor;\n    vkCmdSetLineWidth = pAPI->vkCmdSetLineWidth;\n    vkCmdSetDepthBias = pAPI->vkCmdSetDepthBias;\n    vkCmdSetBlendConstants = pAPI->vkCmdSetBlendConstants;\n    vkCmdSetDepthBounds = pAPI->vkCmdSetDepthBounds;\n    vkCmdSetStencilCompareMask = pAPI->vkCmdSetStencilCompareMask;\n    vkCmdSetStencilWriteMask = pAPI->vkCmdSetStencilWriteMask;\n    vkCmdSetStencilReference = pAPI->vkCmdSetStencilReference;\n    vkCmdBindIndexBuffer = pAPI->vkCmdBindIndexBuffer;\n    vkCmdBindVertexBuffers = pAPI->vkCmdBindVertexBuffers;\n    vkCmdDraw = pAPI->vkCmdDraw;\n    vkCmdDrawIndexed = pAPI->vkCmdDrawIndexed;\n    vkCmdDrawIndirect = pAPI->vkCmdDrawIndirect;\n    vkCmdDrawIndexedIndirect = pAPI->vkCmdDrawIndexedIndirect;\n    vkCmdBlitImage = pAPI->vkCmdBlitImage;\n    vkCmdClearDepthStencilImage = pAPI->vkCmdClearDepthStencilImage;\n    vkCmdClearAttachments = pAPI->vkCmdClearAttachments;\n    vkCmdResolveImage = pAPI->vkCmdResolveImage;\n    vkCmdBeginRenderPass = pAPI->vkCmdBeginRenderPass;\n    vkCmdNextSubpass = pAPI->vkCmdNextSubpass;\n    vkCmdEndRenderPass = pAPI->vkCmdEndRenderPass;\n    vkEnumerateInstanceVersion = pAPI->vkEnumerateInstanceVersion;\n    vkBindBufferMemory2 = pAPI->vkBindBufferMemory2;\n    vkBindImageMemory2 = pAPI->vkBindImageMemory2;\n    vkGetDeviceGroupPeerMemoryFeatures = pAPI->vkGetDeviceGroupPeerMemoryFeatures;\n    vkCmdSetDeviceMask = pAPI->vkCmdSetDeviceMask;\n    vkEnumeratePhysicalDeviceGroups = pAPI->vkEnumeratePhysicalDeviceGroups;\n    vkGetImageMemoryRequirements2 = pAPI->vkGetImageMemoryRequirements2;\n    vkGetBufferMemoryRequirements2 = pAPI->vkGetBufferMemoryRequirements2;\n    vkGetImageSparseMemoryRequirements2 = pAPI->vkGetImageSparseMemoryRequirements2;\n    vkGetPhysicalDeviceFeatures2 = pAPI->vkGetPhysicalDeviceFeatures2;\n    vkGetPhysicalDeviceProperties2 = pAPI->vkGetPhysicalDeviceProperties2;\n    vkGetPhysicalDeviceFormatProperties2 = pAPI->vkGetPhysicalDeviceFormatProperties2;\n    vkGetPhysicalDeviceImageFormatProperties2 = pAPI->vkGetPhysicalDeviceImageFormatProperties2;\n    vkGetPhysicalDeviceQueueFamilyProperties2 = pAPI->vkGetPhysicalDeviceQueueFamilyProperties2;\n    vkGetPhysicalDeviceMemoryProperties2 = pAPI->vkGetPhysicalDeviceMemoryProperties2;\n    vkGetPhysicalDeviceSparseImageFormatProperties2 = pAPI->vkGetPhysicalDeviceSparseImageFormatProperties2;\n    vkTrimCommandPool = pAPI->vkTrimCommandPool;\n    vkGetDeviceQueue2 = pAPI->vkGetDeviceQueue2;\n    vkGetPhysicalDeviceExternalBufferProperties = pAPI->vkGetPhysicalDeviceExternalBufferProperties;\n    vkGetPhysicalDeviceExternalFenceProperties = pAPI->vkGetPhysicalDeviceExternalFenceProperties;\n    vkGetPhysicalDeviceExternalSemaphoreProperties = pAPI->vkGetPhysicalDeviceExternalSemaphoreProperties;\n    vkCmdDispatchBase = pAPI->vkCmdDispatchBase;\n    vkCreateDescriptorUpdateTemplate = pAPI->vkCreateDescriptorUpdateTemplate;\n    vkDestroyDescriptorUpdateTemplate = pAPI->vkDestroyDescriptorUpdateTemplate;\n    vkUpdateDescriptorSetWithTemplate = pAPI->vkUpdateDescriptorSetWithTemplate;\n    vkGetDescriptorSetLayoutSupport = pAPI->vkGetDescriptorSetLayoutSupport;\n    vkCreateSamplerYcbcrConversion = pAPI->vkCreateSamplerYcbcrConversion;\n    vkDestroySamplerYcbcrConversion = pAPI->vkDestroySamplerYcbcrConversion;\n    vkResetQueryPool = pAPI->vkResetQueryPool;\n    vkGetSemaphoreCounterValue = pAPI->vkGetSemaphoreCounterValue;\n    vkWaitSemaphores = pAPI->vkWaitSemaphores;\n    vkSignalSemaphore = pAPI->vkSignalSemaphore;\n    vkGetBufferDeviceAddress = pAPI->vkGetBufferDeviceAddress;\n    vkGetBufferOpaqueCaptureAddress = pAPI->vkGetBufferOpaqueCaptureAddress;\n    vkGetDeviceMemoryOpaqueCaptureAddress = pAPI->vkGetDeviceMemoryOpaqueCaptureAddress;\n    vkCmdDrawIndirectCount = pAPI->vkCmdDrawIndirectCount;\n    vkCmdDrawIndexedIndirectCount = pAPI->vkCmdDrawIndexedIndirectCount;\n    vkCreateRenderPass2 = pAPI->vkCreateRenderPass2;\n    vkCmdBeginRenderPass2 = pAPI->vkCmdBeginRenderPass2;\n    vkCmdNextSubpass2 = pAPI->vkCmdNextSubpass2;\n    vkCmdEndRenderPass2 = pAPI->vkCmdEndRenderPass2;\n    vkGetPhysicalDeviceToolProperties = pAPI->vkGetPhysicalDeviceToolProperties;\n    vkCreatePrivateDataSlot = pAPI->vkCreatePrivateDataSlot;\n    vkDestroyPrivateDataSlot = pAPI->vkDestroyPrivateDataSlot;\n    vkSetPrivateData = pAPI->vkSetPrivateData;\n    vkGetPrivateData = pAPI->vkGetPrivateData;\n    vkCmdPipelineBarrier2 = pAPI->vkCmdPipelineBarrier2;\n    vkCmdWriteTimestamp2 = pAPI->vkCmdWriteTimestamp2;\n    vkQueueSubmit2 = pAPI->vkQueueSubmit2;\n    vkCmdCopyBuffer2 = pAPI->vkCmdCopyBuffer2;\n    vkCmdCopyImage2 = pAPI->vkCmdCopyImage2;\n    vkCmdCopyBufferToImage2 = pAPI->vkCmdCopyBufferToImage2;\n    vkCmdCopyImageToBuffer2 = pAPI->vkCmdCopyImageToBuffer2;\n    vkGetDeviceBufferMemoryRequirements = pAPI->vkGetDeviceBufferMemoryRequirements;\n    vkGetDeviceImageMemoryRequirements = pAPI->vkGetDeviceImageMemoryRequirements;\n    vkGetDeviceImageSparseMemoryRequirements = pAPI->vkGetDeviceImageSparseMemoryRequirements;\n    vkCmdSetEvent2 = pAPI->vkCmdSetEvent2;\n    vkCmdResetEvent2 = pAPI->vkCmdResetEvent2;\n    vkCmdWaitEvents2 = pAPI->vkCmdWaitEvents2;\n    vkCmdBlitImage2 = pAPI->vkCmdBlitImage2;\n    vkCmdResolveImage2 = pAPI->vkCmdResolveImage2;\n    vkCmdBeginRendering = pAPI->vkCmdBeginRendering;\n    vkCmdEndRendering = pAPI->vkCmdEndRendering;\n    vkCmdSetCullMode = pAPI->vkCmdSetCullMode;\n    vkCmdSetFrontFace = pAPI->vkCmdSetFrontFace;\n    vkCmdSetPrimitiveTopology = pAPI->vkCmdSetPrimitiveTopology;\n    vkCmdSetViewportWithCount = pAPI->vkCmdSetViewportWithCount;\n    vkCmdSetScissorWithCount = pAPI->vkCmdSetScissorWithCount;\n    vkCmdBindVertexBuffers2 = pAPI->vkCmdBindVertexBuffers2;\n    vkCmdSetDepthTestEnable = pAPI->vkCmdSetDepthTestEnable;\n    vkCmdSetDepthWriteEnable = pAPI->vkCmdSetDepthWriteEnable;\n    vkCmdSetDepthCompareOp = pAPI->vkCmdSetDepthCompareOp;\n    vkCmdSetDepthBoundsTestEnable = pAPI->vkCmdSetDepthBoundsTestEnable;\n    vkCmdSetStencilTestEnable = pAPI->vkCmdSetStencilTestEnable;\n    vkCmdSetStencilOp = pAPI->vkCmdSetStencilOp;\n    vkCmdSetRasterizerDiscardEnable = pAPI->vkCmdSetRasterizerDiscardEnable;\n    vkCmdSetDepthBiasEnable = pAPI->vkCmdSetDepthBiasEnable;\n    vkCmdSetPrimitiveRestartEnable = pAPI->vkCmdSetPrimitiveRestartEnable;\n    vkMapMemory2 = pAPI->vkMapMemory2;\n    vkUnmapMemory2 = pAPI->vkUnmapMemory2;\n    vkGetDeviceImageSubresourceLayout = pAPI->vkGetDeviceImageSubresourceLayout;\n    vkGetImageSubresourceLayout2 = pAPI->vkGetImageSubresourceLayout2;\n    vkCopyMemoryToImage = pAPI->vkCopyMemoryToImage;\n    vkCopyImageToMemory = pAPI->vkCopyImageToMemory;\n    vkCopyImageToImage = pAPI->vkCopyImageToImage;\n    vkTransitionImageLayout = pAPI->vkTransitionImageLayout;\n    vkCmdPushDescriptorSet = pAPI->vkCmdPushDescriptorSet;\n    vkCmdPushDescriptorSetWithTemplate = pAPI->vkCmdPushDescriptorSetWithTemplate;\n    vkCmdBindDescriptorSets2 = pAPI->vkCmdBindDescriptorSets2;\n    vkCmdPushConstants2 = pAPI->vkCmdPushConstants2;\n    vkCmdPushDescriptorSet2 = pAPI->vkCmdPushDescriptorSet2;\n    vkCmdPushDescriptorSetWithTemplate2 = pAPI->vkCmdPushDescriptorSetWithTemplate2;\n    vkCmdSetLineStipple = pAPI->vkCmdSetLineStipple;\n    vkCmdBindIndexBuffer2 = pAPI->vkCmdBindIndexBuffer2;\n    vkGetRenderingAreaGranularity = pAPI->vkGetRenderingAreaGranularity;\n    vkCmdSetRenderingAttachmentLocations = pAPI->vkCmdSetRenderingAttachmentLocations;\n    vkCmdSetRenderingInputAttachmentIndices = pAPI->vkCmdSetRenderingInputAttachmentIndices;\n    vkGetCommandPoolMemoryConsumption = pAPI->vkGetCommandPoolMemoryConsumption;\n    vkGetFaultData = pAPI->vkGetFaultData;\n    vkDestroySurfaceKHR = pAPI->vkDestroySurfaceKHR;\n    vkGetPhysicalDeviceSurfaceSupportKHR = pAPI->vkGetPhysicalDeviceSurfaceSupportKHR;\n    vkGetPhysicalDeviceSurfaceCapabilitiesKHR = pAPI->vkGetPhysicalDeviceSurfaceCapabilitiesKHR;\n    vkGetPhysicalDeviceSurfaceFormatsKHR = pAPI->vkGetPhysicalDeviceSurfaceFormatsKHR;\n    vkGetPhysicalDeviceSurfacePresentModesKHR = pAPI->vkGetPhysicalDeviceSurfacePresentModesKHR;\n    vkCreateSwapchainKHR = pAPI->vkCreateSwapchainKHR;\n    vkDestroySwapchainKHR = pAPI->vkDestroySwapchainKHR;\n    vkGetSwapchainImagesKHR = pAPI->vkGetSwapchainImagesKHR;\n    vkAcquireNextImageKHR = pAPI->vkAcquireNextImageKHR;\n    vkQueuePresentKHR = pAPI->vkQueuePresentKHR;\n    vkGetDeviceGroupPresentCapabilitiesKHR = pAPI->vkGetDeviceGroupPresentCapabilitiesKHR;\n    vkGetDeviceGroupSurfacePresentModesKHR = pAPI->vkGetDeviceGroupSurfacePresentModesKHR;\n    vkGetPhysicalDevicePresentRectanglesKHR = pAPI->vkGetPhysicalDevicePresentRectanglesKHR;\n    vkAcquireNextImage2KHR = pAPI->vkAcquireNextImage2KHR;\n    vkGetPhysicalDeviceDisplayPropertiesKHR = pAPI->vkGetPhysicalDeviceDisplayPropertiesKHR;\n    vkGetPhysicalDeviceDisplayPlanePropertiesKHR = pAPI->vkGetPhysicalDeviceDisplayPlanePropertiesKHR;\n    vkGetDisplayPlaneSupportedDisplaysKHR = pAPI->vkGetDisplayPlaneSupportedDisplaysKHR;\n    vkGetDisplayModePropertiesKHR = pAPI->vkGetDisplayModePropertiesKHR;\n    vkCreateDisplayModeKHR = pAPI->vkCreateDisplayModeKHR;\n    vkGetDisplayPlaneCapabilitiesKHR = pAPI->vkGetDisplayPlaneCapabilitiesKHR;\n    vkCreateDisplayPlaneSurfaceKHR = pAPI->vkCreateDisplayPlaneSurfaceKHR;\n    vkCreateSharedSwapchainsKHR = pAPI->vkCreateSharedSwapchainsKHR;\n    vkGetPhysicalDeviceVideoCapabilitiesKHR = pAPI->vkGetPhysicalDeviceVideoCapabilitiesKHR;\n    vkGetPhysicalDeviceVideoFormatPropertiesKHR = pAPI->vkGetPhysicalDeviceVideoFormatPropertiesKHR;\n    vkCreateVideoSessionKHR = pAPI->vkCreateVideoSessionKHR;\n    vkDestroyVideoSessionKHR = pAPI->vkDestroyVideoSessionKHR;\n    vkGetVideoSessionMemoryRequirementsKHR = pAPI->vkGetVideoSessionMemoryRequirementsKHR;\n    vkBindVideoSessionMemoryKHR = pAPI->vkBindVideoSessionMemoryKHR;\n    vkCreateVideoSessionParametersKHR = pAPI->vkCreateVideoSessionParametersKHR;\n    vkUpdateVideoSessionParametersKHR = pAPI->vkUpdateVideoSessionParametersKHR;\n    vkDestroyVideoSessionParametersKHR = pAPI->vkDestroyVideoSessionParametersKHR;\n    vkCmdBeginVideoCodingKHR = pAPI->vkCmdBeginVideoCodingKHR;\n    vkCmdEndVideoCodingKHR = pAPI->vkCmdEndVideoCodingKHR;\n    vkCmdControlVideoCodingKHR = pAPI->vkCmdControlVideoCodingKHR;\n    vkCmdDecodeVideoKHR = pAPI->vkCmdDecodeVideoKHR;\n    vkCmdBindTransformFeedbackBuffersEXT = pAPI->vkCmdBindTransformFeedbackBuffersEXT;\n    vkCmdBeginTransformFeedbackEXT = pAPI->vkCmdBeginTransformFeedbackEXT;\n    vkCmdEndTransformFeedbackEXT = pAPI->vkCmdEndTransformFeedbackEXT;\n    vkCmdBeginQueryIndexedEXT = pAPI->vkCmdBeginQueryIndexedEXT;\n    vkCmdEndQueryIndexedEXT = pAPI->vkCmdEndQueryIndexedEXT;\n    vkCmdDrawIndirectByteCountEXT = pAPI->vkCmdDrawIndirectByteCountEXT;\n    vkCreateCuModuleNVX = pAPI->vkCreateCuModuleNVX;\n    vkCreateCuFunctionNVX = pAPI->vkCreateCuFunctionNVX;\n    vkDestroyCuModuleNVX = pAPI->vkDestroyCuModuleNVX;\n    vkDestroyCuFunctionNVX = pAPI->vkDestroyCuFunctionNVX;\n    vkCmdCuLaunchKernelNVX = pAPI->vkCmdCuLaunchKernelNVX;\n    vkGetImageViewHandleNVX = pAPI->vkGetImageViewHandleNVX;\n    vkGetImageViewHandle64NVX = pAPI->vkGetImageViewHandle64NVX;\n    vkGetImageViewAddressNVX = pAPI->vkGetImageViewAddressNVX;\n    vkGetDeviceCombinedImageSamplerIndexNVX = pAPI->vkGetDeviceCombinedImageSamplerIndexNVX;\n    vkGetShaderInfoAMD = pAPI->vkGetShaderInfoAMD;\n    vkCmdBeginRenderingKHR = pAPI->vkCmdBeginRenderingKHR;\n    vkCmdEndRenderingKHR = pAPI->vkCmdEndRenderingKHR;\n    vkGetPhysicalDeviceFeatures2KHR = pAPI->vkGetPhysicalDeviceFeatures2KHR;\n    vkGetPhysicalDeviceProperties2KHR = pAPI->vkGetPhysicalDeviceProperties2KHR;\n    vkGetPhysicalDeviceFormatProperties2KHR = pAPI->vkGetPhysicalDeviceFormatProperties2KHR;\n    vkGetPhysicalDeviceImageFormatProperties2KHR = pAPI->vkGetPhysicalDeviceImageFormatProperties2KHR;\n    vkGetPhysicalDeviceQueueFamilyProperties2KHR = pAPI->vkGetPhysicalDeviceQueueFamilyProperties2KHR;\n    vkGetPhysicalDeviceMemoryProperties2KHR = pAPI->vkGetPhysicalDeviceMemoryProperties2KHR;\n    vkGetPhysicalDeviceSparseImageFormatProperties2KHR = pAPI->vkGetPhysicalDeviceSparseImageFormatProperties2KHR;\n    vkGetDeviceGroupPeerMemoryFeaturesKHR = pAPI->vkGetDeviceGroupPeerMemoryFeaturesKHR;\n    vkCmdSetDeviceMaskKHR = pAPI->vkCmdSetDeviceMaskKHR;\n    vkCmdDispatchBaseKHR = pAPI->vkCmdDispatchBaseKHR;\n    vkTrimCommandPoolKHR = pAPI->vkTrimCommandPoolKHR;\n    vkEnumeratePhysicalDeviceGroupsKHR = pAPI->vkEnumeratePhysicalDeviceGroupsKHR;\n    vkGetPhysicalDeviceExternalBufferPropertiesKHR = pAPI->vkGetPhysicalDeviceExternalBufferPropertiesKHR;\n    vkGetPhysicalDeviceExternalImageFormatPropertiesNV = pAPI->vkGetPhysicalDeviceExternalImageFormatPropertiesNV;\n    vkGetMemoryFdKHR = pAPI->vkGetMemoryFdKHR;\n    vkGetMemoryFdPropertiesKHR = pAPI->vkGetMemoryFdPropertiesKHR;\n    vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = pAPI->vkGetPhysicalDeviceExternalSemaphorePropertiesKHR;\n    vkImportSemaphoreFdKHR = pAPI->vkImportSemaphoreFdKHR;\n    vkGetSemaphoreFdKHR = pAPI->vkGetSemaphoreFdKHR;\n    vkCmdPushDescriptorSetKHR = pAPI->vkCmdPushDescriptorSetKHR;\n    vkCmdPushDescriptorSetWithTemplateKHR = pAPI->vkCmdPushDescriptorSetWithTemplateKHR;\n    vkCmdBeginConditionalRenderingEXT = pAPI->vkCmdBeginConditionalRenderingEXT;\n    vkCmdEndConditionalRenderingEXT = pAPI->vkCmdEndConditionalRenderingEXT;\n    vkCreateDescriptorUpdateTemplateKHR = pAPI->vkCreateDescriptorUpdateTemplateKHR;\n    vkDestroyDescriptorUpdateTemplateKHR = pAPI->vkDestroyDescriptorUpdateTemplateKHR;\n    vkUpdateDescriptorSetWithTemplateKHR = pAPI->vkUpdateDescriptorSetWithTemplateKHR;\n    vkCmdSetViewportWScalingNV = pAPI->vkCmdSetViewportWScalingNV;\n    vkReleaseDisplayEXT = pAPI->vkReleaseDisplayEXT;\n    vkGetPhysicalDeviceSurfaceCapabilities2EXT = pAPI->vkGetPhysicalDeviceSurfaceCapabilities2EXT;\n    vkDisplayPowerControlEXT = pAPI->vkDisplayPowerControlEXT;\n    vkRegisterDeviceEventEXT = pAPI->vkRegisterDeviceEventEXT;\n    vkRegisterDisplayEventEXT = pAPI->vkRegisterDisplayEventEXT;\n    vkGetSwapchainCounterEXT = pAPI->vkGetSwapchainCounterEXT;\n    vkGetRefreshCycleDurationGOOGLE = pAPI->vkGetRefreshCycleDurationGOOGLE;\n    vkGetPastPresentationTimingGOOGLE = pAPI->vkGetPastPresentationTimingGOOGLE;\n    vkCmdSetDiscardRectangleEXT = pAPI->vkCmdSetDiscardRectangleEXT;\n    vkCmdSetDiscardRectangleEnableEXT = pAPI->vkCmdSetDiscardRectangleEnableEXT;\n    vkCmdSetDiscardRectangleModeEXT = pAPI->vkCmdSetDiscardRectangleModeEXT;\n    vkSetHdrMetadataEXT = pAPI->vkSetHdrMetadataEXT;\n    vkCreateRenderPass2KHR = pAPI->vkCreateRenderPass2KHR;\n    vkCmdBeginRenderPass2KHR = pAPI->vkCmdBeginRenderPass2KHR;\n    vkCmdNextSubpass2KHR = pAPI->vkCmdNextSubpass2KHR;\n    vkCmdEndRenderPass2KHR = pAPI->vkCmdEndRenderPass2KHR;\n    vkGetSwapchainStatusKHR = pAPI->vkGetSwapchainStatusKHR;\n    vkGetPhysicalDeviceExternalFencePropertiesKHR = pAPI->vkGetPhysicalDeviceExternalFencePropertiesKHR;\n    vkImportFenceFdKHR = pAPI->vkImportFenceFdKHR;\n    vkGetFenceFdKHR = pAPI->vkGetFenceFdKHR;\n    vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = pAPI->vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR;\n    vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = pAPI->vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR;\n    vkAcquireProfilingLockKHR = pAPI->vkAcquireProfilingLockKHR;\n    vkReleaseProfilingLockKHR = pAPI->vkReleaseProfilingLockKHR;\n    vkGetPhysicalDeviceSurfaceCapabilities2KHR = pAPI->vkGetPhysicalDeviceSurfaceCapabilities2KHR;\n    vkGetPhysicalDeviceSurfaceFormats2KHR = pAPI->vkGetPhysicalDeviceSurfaceFormats2KHR;\n    vkGetPhysicalDeviceDisplayProperties2KHR = pAPI->vkGetPhysicalDeviceDisplayProperties2KHR;\n    vkGetPhysicalDeviceDisplayPlaneProperties2KHR = pAPI->vkGetPhysicalDeviceDisplayPlaneProperties2KHR;\n    vkGetDisplayModeProperties2KHR = pAPI->vkGetDisplayModeProperties2KHR;\n    vkGetDisplayPlaneCapabilities2KHR = pAPI->vkGetDisplayPlaneCapabilities2KHR;\n    vkSetDebugUtilsObjectNameEXT = pAPI->vkSetDebugUtilsObjectNameEXT;\n    vkSetDebugUtilsObjectTagEXT = pAPI->vkSetDebugUtilsObjectTagEXT;\n    vkQueueBeginDebugUtilsLabelEXT = pAPI->vkQueueBeginDebugUtilsLabelEXT;\n    vkQueueEndDebugUtilsLabelEXT = pAPI->vkQueueEndDebugUtilsLabelEXT;\n    vkQueueInsertDebugUtilsLabelEXT = pAPI->vkQueueInsertDebugUtilsLabelEXT;\n    vkCmdBeginDebugUtilsLabelEXT = pAPI->vkCmdBeginDebugUtilsLabelEXT;\n    vkCmdEndDebugUtilsLabelEXT = pAPI->vkCmdEndDebugUtilsLabelEXT;\n    vkCmdInsertDebugUtilsLabelEXT = pAPI->vkCmdInsertDebugUtilsLabelEXT;\n    vkCreateDebugUtilsMessengerEXT = pAPI->vkCreateDebugUtilsMessengerEXT;\n    vkDestroyDebugUtilsMessengerEXT = pAPI->vkDestroyDebugUtilsMessengerEXT;\n    vkSubmitDebugUtilsMessageEXT = pAPI->vkSubmitDebugUtilsMessageEXT;\n    vkDebugMarkerSetObjectTagEXT = pAPI->vkDebugMarkerSetObjectTagEXT;\n    vkDebugMarkerSetObjectNameEXT = pAPI->vkDebugMarkerSetObjectNameEXT;\n    vkCmdDebugMarkerBeginEXT = pAPI->vkCmdDebugMarkerBeginEXT;\n    vkCmdDebugMarkerEndEXT = pAPI->vkCmdDebugMarkerEndEXT;\n    vkCmdDebugMarkerInsertEXT = pAPI->vkCmdDebugMarkerInsertEXT;\n    vkCreateDebugReportCallbackEXT = pAPI->vkCreateDebugReportCallbackEXT;\n    vkDestroyDebugReportCallbackEXT = pAPI->vkDestroyDebugReportCallbackEXT;\n    vkDebugReportMessageEXT = pAPI->vkDebugReportMessageEXT;\n    vkWriteSamplerDescriptorsEXT = pAPI->vkWriteSamplerDescriptorsEXT;\n    vkWriteResourceDescriptorsEXT = pAPI->vkWriteResourceDescriptorsEXT;\n    vkCmdBindSamplerHeapEXT = pAPI->vkCmdBindSamplerHeapEXT;\n    vkCmdBindResourceHeapEXT = pAPI->vkCmdBindResourceHeapEXT;\n    vkCmdPushDataEXT = pAPI->vkCmdPushDataEXT;\n    vkGetImageOpaqueCaptureDataEXT = pAPI->vkGetImageOpaqueCaptureDataEXT;\n    vkGetPhysicalDeviceDescriptorSizeEXT = pAPI->vkGetPhysicalDeviceDescriptorSizeEXT;\n    vkRegisterCustomBorderColorEXT = pAPI->vkRegisterCustomBorderColorEXT;\n    vkUnregisterCustomBorderColorEXT = pAPI->vkUnregisterCustomBorderColorEXT;\n    vkGetTensorOpaqueCaptureDataARM = pAPI->vkGetTensorOpaqueCaptureDataARM;\n    vkCmdSetSampleLocationsEXT = pAPI->vkCmdSetSampleLocationsEXT;\n    vkGetPhysicalDeviceMultisamplePropertiesEXT = pAPI->vkGetPhysicalDeviceMultisamplePropertiesEXT;\n    vkGetImageMemoryRequirements2KHR = pAPI->vkGetImageMemoryRequirements2KHR;\n    vkGetBufferMemoryRequirements2KHR = pAPI->vkGetBufferMemoryRequirements2KHR;\n    vkGetImageSparseMemoryRequirements2KHR = pAPI->vkGetImageSparseMemoryRequirements2KHR;\n    vkCreateAccelerationStructureKHR = pAPI->vkCreateAccelerationStructureKHR;\n    vkDestroyAccelerationStructureKHR = pAPI->vkDestroyAccelerationStructureKHR;\n    vkCmdBuildAccelerationStructuresKHR = pAPI->vkCmdBuildAccelerationStructuresKHR;\n    vkCmdBuildAccelerationStructuresIndirectKHR = pAPI->vkCmdBuildAccelerationStructuresIndirectKHR;\n    vkBuildAccelerationStructuresKHR = pAPI->vkBuildAccelerationStructuresKHR;\n    vkCopyAccelerationStructureKHR = pAPI->vkCopyAccelerationStructureKHR;\n    vkCopyAccelerationStructureToMemoryKHR = pAPI->vkCopyAccelerationStructureToMemoryKHR;\n    vkCopyMemoryToAccelerationStructureKHR = pAPI->vkCopyMemoryToAccelerationStructureKHR;\n    vkWriteAccelerationStructuresPropertiesKHR = pAPI->vkWriteAccelerationStructuresPropertiesKHR;\n    vkCmdCopyAccelerationStructureKHR = pAPI->vkCmdCopyAccelerationStructureKHR;\n    vkCmdCopyAccelerationStructureToMemoryKHR = pAPI->vkCmdCopyAccelerationStructureToMemoryKHR;\n    vkCmdCopyMemoryToAccelerationStructureKHR = pAPI->vkCmdCopyMemoryToAccelerationStructureKHR;\n    vkGetAccelerationStructureDeviceAddressKHR = pAPI->vkGetAccelerationStructureDeviceAddressKHR;\n    vkCmdWriteAccelerationStructuresPropertiesKHR = pAPI->vkCmdWriteAccelerationStructuresPropertiesKHR;\n    vkGetDeviceAccelerationStructureCompatibilityKHR = pAPI->vkGetDeviceAccelerationStructureCompatibilityKHR;\n    vkGetAccelerationStructureBuildSizesKHR = pAPI->vkGetAccelerationStructureBuildSizesKHR;\n    vkCmdTraceRaysKHR = pAPI->vkCmdTraceRaysKHR;\n    vkCreateRayTracingPipelinesKHR = pAPI->vkCreateRayTracingPipelinesKHR;\n    vkGetRayTracingShaderGroupHandlesKHR = pAPI->vkGetRayTracingShaderGroupHandlesKHR;\n    vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = pAPI->vkGetRayTracingCaptureReplayShaderGroupHandlesKHR;\n    vkCmdTraceRaysIndirectKHR = pAPI->vkCmdTraceRaysIndirectKHR;\n    vkGetRayTracingShaderGroupStackSizeKHR = pAPI->vkGetRayTracingShaderGroupStackSizeKHR;\n    vkCmdSetRayTracingPipelineStackSizeKHR = pAPI->vkCmdSetRayTracingPipelineStackSizeKHR;\n    vkCreateSamplerYcbcrConversionKHR = pAPI->vkCreateSamplerYcbcrConversionKHR;\n    vkDestroySamplerYcbcrConversionKHR = pAPI->vkDestroySamplerYcbcrConversionKHR;\n    vkBindBufferMemory2KHR = pAPI->vkBindBufferMemory2KHR;\n    vkBindImageMemory2KHR = pAPI->vkBindImageMemory2KHR;\n    vkGetImageDrmFormatModifierPropertiesEXT = pAPI->vkGetImageDrmFormatModifierPropertiesEXT;\n    vkCreateValidationCacheEXT = pAPI->vkCreateValidationCacheEXT;\n    vkDestroyValidationCacheEXT = pAPI->vkDestroyValidationCacheEXT;\n    vkMergeValidationCachesEXT = pAPI->vkMergeValidationCachesEXT;\n    vkGetValidationCacheDataEXT = pAPI->vkGetValidationCacheDataEXT;\n    vkCmdBindShadingRateImageNV = pAPI->vkCmdBindShadingRateImageNV;\n    vkCmdSetViewportShadingRatePaletteNV = pAPI->vkCmdSetViewportShadingRatePaletteNV;\n    vkCmdSetCoarseSampleOrderNV = pAPI->vkCmdSetCoarseSampleOrderNV;\n    vkCreateAccelerationStructureNV = pAPI->vkCreateAccelerationStructureNV;\n    vkDestroyAccelerationStructureNV = pAPI->vkDestroyAccelerationStructureNV;\n    vkGetAccelerationStructureMemoryRequirementsNV = pAPI->vkGetAccelerationStructureMemoryRequirementsNV;\n    vkBindAccelerationStructureMemoryNV = pAPI->vkBindAccelerationStructureMemoryNV;\n    vkCmdBuildAccelerationStructureNV = pAPI->vkCmdBuildAccelerationStructureNV;\n    vkCmdCopyAccelerationStructureNV = pAPI->vkCmdCopyAccelerationStructureNV;\n    vkCmdTraceRaysNV = pAPI->vkCmdTraceRaysNV;\n    vkCreateRayTracingPipelinesNV = pAPI->vkCreateRayTracingPipelinesNV;\n    vkGetRayTracingShaderGroupHandlesNV = pAPI->vkGetRayTracingShaderGroupHandlesNV;\n    vkGetAccelerationStructureHandleNV = pAPI->vkGetAccelerationStructureHandleNV;\n    vkCmdWriteAccelerationStructuresPropertiesNV = pAPI->vkCmdWriteAccelerationStructuresPropertiesNV;\n    vkCompileDeferredNV = pAPI->vkCompileDeferredNV;\n    vkGetDescriptorSetLayoutSupportKHR = pAPI->vkGetDescriptorSetLayoutSupportKHR;\n    vkCmdDrawIndirectCountKHR = pAPI->vkCmdDrawIndirectCountKHR;\n    vkCmdDrawIndexedIndirectCountKHR = pAPI->vkCmdDrawIndexedIndirectCountKHR;\n    vkCmdDrawIndirectCountAMD = pAPI->vkCmdDrawIndirectCountAMD;\n    vkCmdDrawIndexedIndirectCountAMD = pAPI->vkCmdDrawIndexedIndirectCountAMD;\n    vkGetMemoryHostPointerPropertiesEXT = pAPI->vkGetMemoryHostPointerPropertiesEXT;\n    vkCmdWriteBufferMarkerAMD = pAPI->vkCmdWriteBufferMarkerAMD;\n    vkCmdWriteBufferMarker2AMD = pAPI->vkCmdWriteBufferMarker2AMD;\n    vkCmdDrawMeshTasksNV = pAPI->vkCmdDrawMeshTasksNV;\n    vkCmdDrawMeshTasksIndirectNV = pAPI->vkCmdDrawMeshTasksIndirectNV;\n    vkCmdDrawMeshTasksIndirectCountNV = pAPI->vkCmdDrawMeshTasksIndirectCountNV;\n    vkCmdSetExclusiveScissorEnableNV = pAPI->vkCmdSetExclusiveScissorEnableNV;\n    vkCmdSetExclusiveScissorNV = pAPI->vkCmdSetExclusiveScissorNV;\n    vkCmdSetCheckpointNV = pAPI->vkCmdSetCheckpointNV;\n    vkGetQueueCheckpointDataNV = pAPI->vkGetQueueCheckpointDataNV;\n    vkGetQueueCheckpointData2NV = pAPI->vkGetQueueCheckpointData2NV;\n    vkGetSemaphoreCounterValueKHR = pAPI->vkGetSemaphoreCounterValueKHR;\n    vkWaitSemaphoresKHR = pAPI->vkWaitSemaphoresKHR;\n    vkSignalSemaphoreKHR = pAPI->vkSignalSemaphoreKHR;\n    vkSetSwapchainPresentTimingQueueSizeEXT = pAPI->vkSetSwapchainPresentTimingQueueSizeEXT;\n    vkGetSwapchainTimingPropertiesEXT = pAPI->vkGetSwapchainTimingPropertiesEXT;\n    vkGetSwapchainTimeDomainPropertiesEXT = pAPI->vkGetSwapchainTimeDomainPropertiesEXT;\n    vkGetPastPresentationTimingEXT = pAPI->vkGetPastPresentationTimingEXT;\n    vkInitializePerformanceApiINTEL = pAPI->vkInitializePerformanceApiINTEL;\n    vkUninitializePerformanceApiINTEL = pAPI->vkUninitializePerformanceApiINTEL;\n    vkCmdSetPerformanceMarkerINTEL = pAPI->vkCmdSetPerformanceMarkerINTEL;\n    vkCmdSetPerformanceStreamMarkerINTEL = pAPI->vkCmdSetPerformanceStreamMarkerINTEL;\n    vkCmdSetPerformanceOverrideINTEL = pAPI->vkCmdSetPerformanceOverrideINTEL;\n    vkAcquirePerformanceConfigurationINTEL = pAPI->vkAcquirePerformanceConfigurationINTEL;\n    vkReleasePerformanceConfigurationINTEL = pAPI->vkReleasePerformanceConfigurationINTEL;\n    vkQueueSetPerformanceConfigurationINTEL = pAPI->vkQueueSetPerformanceConfigurationINTEL;\n    vkGetPerformanceParameterINTEL = pAPI->vkGetPerformanceParameterINTEL;\n    vkSetLocalDimmingAMD = pAPI->vkSetLocalDimmingAMD;\n    vkGetPhysicalDeviceFragmentShadingRatesKHR = pAPI->vkGetPhysicalDeviceFragmentShadingRatesKHR;\n    vkCmdSetFragmentShadingRateKHR = pAPI->vkCmdSetFragmentShadingRateKHR;\n    vkCmdSetRenderingAttachmentLocationsKHR = pAPI->vkCmdSetRenderingAttachmentLocationsKHR;\n    vkCmdSetRenderingInputAttachmentIndicesKHR = pAPI->vkCmdSetRenderingInputAttachmentIndicesKHR;\n    vkGetPhysicalDeviceToolPropertiesEXT = pAPI->vkGetPhysicalDeviceToolPropertiesEXT;\n    vkWaitForPresentKHR = pAPI->vkWaitForPresentKHR;\n    vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = pAPI->vkGetPhysicalDeviceCooperativeMatrixPropertiesNV;\n    vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = pAPI->vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV;\n    vkCreateHeadlessSurfaceEXT = pAPI->vkCreateHeadlessSurfaceEXT;\n    vkGetBufferDeviceAddressKHR = pAPI->vkGetBufferDeviceAddressKHR;\n    vkGetBufferOpaqueCaptureAddressKHR = pAPI->vkGetBufferOpaqueCaptureAddressKHR;\n    vkGetDeviceMemoryOpaqueCaptureAddressKHR = pAPI->vkGetDeviceMemoryOpaqueCaptureAddressKHR;\n    vkGetBufferDeviceAddressEXT = pAPI->vkGetBufferDeviceAddressEXT;\n    vkResetQueryPoolEXT = pAPI->vkResetQueryPoolEXT;\n    vkCmdSetCullModeEXT = pAPI->vkCmdSetCullModeEXT;\n    vkCmdSetFrontFaceEXT = pAPI->vkCmdSetFrontFaceEXT;\n    vkCmdSetPrimitiveTopologyEXT = pAPI->vkCmdSetPrimitiveTopologyEXT;\n    vkCmdSetViewportWithCountEXT = pAPI->vkCmdSetViewportWithCountEXT;\n    vkCmdSetScissorWithCountEXT = pAPI->vkCmdSetScissorWithCountEXT;\n    vkCmdBindVertexBuffers2EXT = pAPI->vkCmdBindVertexBuffers2EXT;\n    vkCmdSetDepthTestEnableEXT = pAPI->vkCmdSetDepthTestEnableEXT;\n    vkCmdSetDepthWriteEnableEXT = pAPI->vkCmdSetDepthWriteEnableEXT;\n    vkCmdSetDepthCompareOpEXT = pAPI->vkCmdSetDepthCompareOpEXT;\n    vkCmdSetDepthBoundsTestEnableEXT = pAPI->vkCmdSetDepthBoundsTestEnableEXT;\n    vkCmdSetStencilTestEnableEXT = pAPI->vkCmdSetStencilTestEnableEXT;\n    vkCmdSetStencilOpEXT = pAPI->vkCmdSetStencilOpEXT;\n    vkCreateDeferredOperationKHR = pAPI->vkCreateDeferredOperationKHR;\n    vkDestroyDeferredOperationKHR = pAPI->vkDestroyDeferredOperationKHR;\n    vkGetDeferredOperationMaxConcurrencyKHR = pAPI->vkGetDeferredOperationMaxConcurrencyKHR;\n    vkGetDeferredOperationResultKHR = pAPI->vkGetDeferredOperationResultKHR;\n    vkDeferredOperationJoinKHR = pAPI->vkDeferredOperationJoinKHR;\n    vkGetPipelineExecutablePropertiesKHR = pAPI->vkGetPipelineExecutablePropertiesKHR;\n    vkGetPipelineExecutableStatisticsKHR = pAPI->vkGetPipelineExecutableStatisticsKHR;\n    vkGetPipelineExecutableInternalRepresentationsKHR = pAPI->vkGetPipelineExecutableInternalRepresentationsKHR;\n    vkCopyMemoryToImageEXT = pAPI->vkCopyMemoryToImageEXT;\n    vkCopyImageToMemoryEXT = pAPI->vkCopyImageToMemoryEXT;\n    vkCopyImageToImageEXT = pAPI->vkCopyImageToImageEXT;\n    vkTransitionImageLayoutEXT = pAPI->vkTransitionImageLayoutEXT;\n    vkGetImageSubresourceLayout2EXT = pAPI->vkGetImageSubresourceLayout2EXT;\n    vkMapMemory2KHR = pAPI->vkMapMemory2KHR;\n    vkUnmapMemory2KHR = pAPI->vkUnmapMemory2KHR;\n    vkGetGeneratedCommandsMemoryRequirementsNV = pAPI->vkGetGeneratedCommandsMemoryRequirementsNV;\n    vkCmdPreprocessGeneratedCommandsNV = pAPI->vkCmdPreprocessGeneratedCommandsNV;\n    vkCmdExecuteGeneratedCommandsNV = pAPI->vkCmdExecuteGeneratedCommandsNV;\n    vkCmdBindPipelineShaderGroupNV = pAPI->vkCmdBindPipelineShaderGroupNV;\n    vkCreateIndirectCommandsLayoutNV = pAPI->vkCreateIndirectCommandsLayoutNV;\n    vkDestroyIndirectCommandsLayoutNV = pAPI->vkDestroyIndirectCommandsLayoutNV;\n    vkCmdSetDepthBias2EXT = pAPI->vkCmdSetDepthBias2EXT;\n    vkAcquireDrmDisplayEXT = pAPI->vkAcquireDrmDisplayEXT;\n    vkGetDrmDisplayEXT = pAPI->vkGetDrmDisplayEXT;\n    vkCreatePrivateDataSlotEXT = pAPI->vkCreatePrivateDataSlotEXT;\n    vkDestroyPrivateDataSlotEXT = pAPI->vkDestroyPrivateDataSlotEXT;\n    vkSetPrivateDataEXT = pAPI->vkSetPrivateDataEXT;\n    vkGetPrivateDataEXT = pAPI->vkGetPrivateDataEXT;\n    vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR = pAPI->vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR;\n    vkGetEncodedVideoSessionParametersKHR = pAPI->vkGetEncodedVideoSessionParametersKHR;\n    vkCmdEncodeVideoKHR = pAPI->vkCmdEncodeVideoKHR;\n    vkCmdRefreshObjectsKHR = pAPI->vkCmdRefreshObjectsKHR;\n    vkGetPhysicalDeviceRefreshableObjectTypesKHR = pAPI->vkGetPhysicalDeviceRefreshableObjectTypesKHR;\n    vkCmdDispatchTileQCOM = pAPI->vkCmdDispatchTileQCOM;\n    vkCmdBeginPerTileExecutionQCOM = pAPI->vkCmdBeginPerTileExecutionQCOM;\n    vkCmdEndPerTileExecutionQCOM = pAPI->vkCmdEndPerTileExecutionQCOM;\n    vkCmdSetEvent2KHR = pAPI->vkCmdSetEvent2KHR;\n    vkCmdResetEvent2KHR = pAPI->vkCmdResetEvent2KHR;\n    vkCmdWaitEvents2KHR = pAPI->vkCmdWaitEvents2KHR;\n    vkCmdPipelineBarrier2KHR = pAPI->vkCmdPipelineBarrier2KHR;\n    vkCmdWriteTimestamp2KHR = pAPI->vkCmdWriteTimestamp2KHR;\n    vkQueueSubmit2KHR = pAPI->vkQueueSubmit2KHR;\n    vkGetDescriptorSetLayoutSizeEXT = pAPI->vkGetDescriptorSetLayoutSizeEXT;\n    vkGetDescriptorSetLayoutBindingOffsetEXT = pAPI->vkGetDescriptorSetLayoutBindingOffsetEXT;\n    vkGetDescriptorEXT = pAPI->vkGetDescriptorEXT;\n    vkCmdBindDescriptorBuffersEXT = pAPI->vkCmdBindDescriptorBuffersEXT;\n    vkCmdSetDescriptorBufferOffsetsEXT = pAPI->vkCmdSetDescriptorBufferOffsetsEXT;\n    vkCmdBindDescriptorBufferEmbeddedSamplersEXT = pAPI->vkCmdBindDescriptorBufferEmbeddedSamplersEXT;\n    vkGetBufferOpaqueCaptureDescriptorDataEXT = pAPI->vkGetBufferOpaqueCaptureDescriptorDataEXT;\n    vkGetImageOpaqueCaptureDescriptorDataEXT = pAPI->vkGetImageOpaqueCaptureDescriptorDataEXT;\n    vkGetImageViewOpaqueCaptureDescriptorDataEXT = pAPI->vkGetImageViewOpaqueCaptureDescriptorDataEXT;\n    vkGetSamplerOpaqueCaptureDescriptorDataEXT = pAPI->vkGetSamplerOpaqueCaptureDescriptorDataEXT;\n    vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT = pAPI->vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT;\n    vkCmdSetFragmentShadingRateEnumNV = pAPI->vkCmdSetFragmentShadingRateEnumNV;\n    vkCmdDrawMeshTasksEXT = pAPI->vkCmdDrawMeshTasksEXT;\n    vkCmdDrawMeshTasksIndirectEXT = pAPI->vkCmdDrawMeshTasksIndirectEXT;\n    vkCmdDrawMeshTasksIndirectCountEXT = pAPI->vkCmdDrawMeshTasksIndirectCountEXT;\n    vkCmdCopyBuffer2KHR = pAPI->vkCmdCopyBuffer2KHR;\n    vkCmdCopyImage2KHR = pAPI->vkCmdCopyImage2KHR;\n    vkCmdCopyBufferToImage2KHR = pAPI->vkCmdCopyBufferToImage2KHR;\n    vkCmdCopyImageToBuffer2KHR = pAPI->vkCmdCopyImageToBuffer2KHR;\n    vkCmdBlitImage2KHR = pAPI->vkCmdBlitImage2KHR;\n    vkCmdResolveImage2KHR = pAPI->vkCmdResolveImage2KHR;\n    vkGetDeviceFaultInfoEXT = pAPI->vkGetDeviceFaultInfoEXT;\n    vkCmdSetVertexInputEXT = pAPI->vkCmdSetVertexInputEXT;\n    vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = pAPI->vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI;\n    vkCmdSubpassShadingHUAWEI = pAPI->vkCmdSubpassShadingHUAWEI;\n    vkCmdBindInvocationMaskHUAWEI = pAPI->vkCmdBindInvocationMaskHUAWEI;\n    vkGetMemoryRemoteAddressNV = pAPI->vkGetMemoryRemoteAddressNV;\n    vkGetPipelinePropertiesEXT = pAPI->vkGetPipelinePropertiesEXT;\n    vkCmdSetPatchControlPointsEXT = pAPI->vkCmdSetPatchControlPointsEXT;\n    vkCmdSetRasterizerDiscardEnableEXT = pAPI->vkCmdSetRasterizerDiscardEnableEXT;\n    vkCmdSetDepthBiasEnableEXT = pAPI->vkCmdSetDepthBiasEnableEXT;\n    vkCmdSetLogicOpEXT = pAPI->vkCmdSetLogicOpEXT;\n    vkCmdSetPrimitiveRestartEnableEXT = pAPI->vkCmdSetPrimitiveRestartEnableEXT;\n    vkCmdSetColorWriteEnableEXT = pAPI->vkCmdSetColorWriteEnableEXT;\n    vkCmdTraceRaysIndirect2KHR = pAPI->vkCmdTraceRaysIndirect2KHR;\n    vkCmdDrawMultiEXT = pAPI->vkCmdDrawMultiEXT;\n    vkCmdDrawMultiIndexedEXT = pAPI->vkCmdDrawMultiIndexedEXT;\n    vkCreateMicromapEXT = pAPI->vkCreateMicromapEXT;\n    vkDestroyMicromapEXT = pAPI->vkDestroyMicromapEXT;\n    vkCmdBuildMicromapsEXT = pAPI->vkCmdBuildMicromapsEXT;\n    vkBuildMicromapsEXT = pAPI->vkBuildMicromapsEXT;\n    vkCopyMicromapEXT = pAPI->vkCopyMicromapEXT;\n    vkCopyMicromapToMemoryEXT = pAPI->vkCopyMicromapToMemoryEXT;\n    vkCopyMemoryToMicromapEXT = pAPI->vkCopyMemoryToMicromapEXT;\n    vkWriteMicromapsPropertiesEXT = pAPI->vkWriteMicromapsPropertiesEXT;\n    vkCmdCopyMicromapEXT = pAPI->vkCmdCopyMicromapEXT;\n    vkCmdCopyMicromapToMemoryEXT = pAPI->vkCmdCopyMicromapToMemoryEXT;\n    vkCmdCopyMemoryToMicromapEXT = pAPI->vkCmdCopyMemoryToMicromapEXT;\n    vkCmdWriteMicromapsPropertiesEXT = pAPI->vkCmdWriteMicromapsPropertiesEXT;\n    vkGetDeviceMicromapCompatibilityEXT = pAPI->vkGetDeviceMicromapCompatibilityEXT;\n    vkGetMicromapBuildSizesEXT = pAPI->vkGetMicromapBuildSizesEXT;\n    vkCmdDrawClusterHUAWEI = pAPI->vkCmdDrawClusterHUAWEI;\n    vkCmdDrawClusterIndirectHUAWEI = pAPI->vkCmdDrawClusterIndirectHUAWEI;\n    vkSetDeviceMemoryPriorityEXT = pAPI->vkSetDeviceMemoryPriorityEXT;\n    vkGetDeviceBufferMemoryRequirementsKHR = pAPI->vkGetDeviceBufferMemoryRequirementsKHR;\n    vkGetDeviceImageMemoryRequirementsKHR = pAPI->vkGetDeviceImageMemoryRequirementsKHR;\n    vkGetDeviceImageSparseMemoryRequirementsKHR = pAPI->vkGetDeviceImageSparseMemoryRequirementsKHR;\n    vkGetDescriptorSetLayoutHostMappingInfoVALVE = pAPI->vkGetDescriptorSetLayoutHostMappingInfoVALVE;\n    vkGetDescriptorSetHostMappingVALVE = pAPI->vkGetDescriptorSetHostMappingVALVE;\n    vkGetPipelineIndirectMemoryRequirementsNV = pAPI->vkGetPipelineIndirectMemoryRequirementsNV;\n    vkCmdUpdatePipelineIndirectBufferNV = pAPI->vkCmdUpdatePipelineIndirectBufferNV;\n    vkGetPipelineIndirectDeviceAddressNV = pAPI->vkGetPipelineIndirectDeviceAddressNV;\n    vkCmdSetDepthClampEnableEXT = pAPI->vkCmdSetDepthClampEnableEXT;\n    vkCmdSetPolygonModeEXT = pAPI->vkCmdSetPolygonModeEXT;\n    vkCmdSetRasterizationSamplesEXT = pAPI->vkCmdSetRasterizationSamplesEXT;\n    vkCmdSetSampleMaskEXT = pAPI->vkCmdSetSampleMaskEXT;\n    vkCmdSetAlphaToCoverageEnableEXT = pAPI->vkCmdSetAlphaToCoverageEnableEXT;\n    vkCmdSetAlphaToOneEnableEXT = pAPI->vkCmdSetAlphaToOneEnableEXT;\n    vkCmdSetLogicOpEnableEXT = pAPI->vkCmdSetLogicOpEnableEXT;\n    vkCmdSetColorBlendEnableEXT = pAPI->vkCmdSetColorBlendEnableEXT;\n    vkCmdSetColorBlendEquationEXT = pAPI->vkCmdSetColorBlendEquationEXT;\n    vkCmdSetColorWriteMaskEXT = pAPI->vkCmdSetColorWriteMaskEXT;\n    vkCmdSetTessellationDomainOriginEXT = pAPI->vkCmdSetTessellationDomainOriginEXT;\n    vkCmdSetRasterizationStreamEXT = pAPI->vkCmdSetRasterizationStreamEXT;\n    vkCmdSetConservativeRasterizationModeEXT = pAPI->vkCmdSetConservativeRasterizationModeEXT;\n    vkCmdSetExtraPrimitiveOverestimationSizeEXT = pAPI->vkCmdSetExtraPrimitiveOverestimationSizeEXT;\n    vkCmdSetDepthClipEnableEXT = pAPI->vkCmdSetDepthClipEnableEXT;\n    vkCmdSetSampleLocationsEnableEXT = pAPI->vkCmdSetSampleLocationsEnableEXT;\n    vkCmdSetColorBlendAdvancedEXT = pAPI->vkCmdSetColorBlendAdvancedEXT;\n    vkCmdSetProvokingVertexModeEXT = pAPI->vkCmdSetProvokingVertexModeEXT;\n    vkCmdSetLineRasterizationModeEXT = pAPI->vkCmdSetLineRasterizationModeEXT;\n    vkCmdSetLineStippleEnableEXT = pAPI->vkCmdSetLineStippleEnableEXT;\n    vkCmdSetDepthClipNegativeOneToOneEXT = pAPI->vkCmdSetDepthClipNegativeOneToOneEXT;\n    vkCmdSetViewportWScalingEnableNV = pAPI->vkCmdSetViewportWScalingEnableNV;\n    vkCmdSetViewportSwizzleNV = pAPI->vkCmdSetViewportSwizzleNV;\n    vkCmdSetCoverageToColorEnableNV = pAPI->vkCmdSetCoverageToColorEnableNV;\n    vkCmdSetCoverageToColorLocationNV = pAPI->vkCmdSetCoverageToColorLocationNV;\n    vkCmdSetCoverageModulationModeNV = pAPI->vkCmdSetCoverageModulationModeNV;\n    vkCmdSetCoverageModulationTableEnableNV = pAPI->vkCmdSetCoverageModulationTableEnableNV;\n    vkCmdSetCoverageModulationTableNV = pAPI->vkCmdSetCoverageModulationTableNV;\n    vkCmdSetShadingRateImageEnableNV = pAPI->vkCmdSetShadingRateImageEnableNV;\n    vkCmdSetRepresentativeFragmentTestEnableNV = pAPI->vkCmdSetRepresentativeFragmentTestEnableNV;\n    vkCmdSetCoverageReductionModeNV = pAPI->vkCmdSetCoverageReductionModeNV;\n    vkCreateTensorARM = pAPI->vkCreateTensorARM;\n    vkDestroyTensorARM = pAPI->vkDestroyTensorARM;\n    vkCreateTensorViewARM = pAPI->vkCreateTensorViewARM;\n    vkDestroyTensorViewARM = pAPI->vkDestroyTensorViewARM;\n    vkGetTensorMemoryRequirementsARM = pAPI->vkGetTensorMemoryRequirementsARM;\n    vkBindTensorMemoryARM = pAPI->vkBindTensorMemoryARM;\n    vkGetDeviceTensorMemoryRequirementsARM = pAPI->vkGetDeviceTensorMemoryRequirementsARM;\n    vkCmdCopyTensorARM = pAPI->vkCmdCopyTensorARM;\n    vkGetPhysicalDeviceExternalTensorPropertiesARM = pAPI->vkGetPhysicalDeviceExternalTensorPropertiesARM;\n    vkGetTensorOpaqueCaptureDescriptorDataARM = pAPI->vkGetTensorOpaqueCaptureDescriptorDataARM;\n    vkGetTensorViewOpaqueCaptureDescriptorDataARM = pAPI->vkGetTensorViewOpaqueCaptureDescriptorDataARM;\n    vkGetShaderModuleIdentifierEXT = pAPI->vkGetShaderModuleIdentifierEXT;\n    vkGetShaderModuleCreateInfoIdentifierEXT = pAPI->vkGetShaderModuleCreateInfoIdentifierEXT;\n    vkGetPhysicalDeviceOpticalFlowImageFormatsNV = pAPI->vkGetPhysicalDeviceOpticalFlowImageFormatsNV;\n    vkCreateOpticalFlowSessionNV = pAPI->vkCreateOpticalFlowSessionNV;\n    vkDestroyOpticalFlowSessionNV = pAPI->vkDestroyOpticalFlowSessionNV;\n    vkBindOpticalFlowSessionImageNV = pAPI->vkBindOpticalFlowSessionImageNV;\n    vkCmdOpticalFlowExecuteNV = pAPI->vkCmdOpticalFlowExecuteNV;\n    vkCmdBindIndexBuffer2KHR = pAPI->vkCmdBindIndexBuffer2KHR;\n    vkGetRenderingAreaGranularityKHR = pAPI->vkGetRenderingAreaGranularityKHR;\n    vkGetDeviceImageSubresourceLayoutKHR = pAPI->vkGetDeviceImageSubresourceLayoutKHR;\n    vkGetImageSubresourceLayout2KHR = pAPI->vkGetImageSubresourceLayout2KHR;\n    vkAntiLagUpdateAMD = pAPI->vkAntiLagUpdateAMD;\n    vkWaitForPresent2KHR = pAPI->vkWaitForPresent2KHR;\n    vkCreateShadersEXT = pAPI->vkCreateShadersEXT;\n    vkDestroyShaderEXT = pAPI->vkDestroyShaderEXT;\n    vkGetShaderBinaryDataEXT = pAPI->vkGetShaderBinaryDataEXT;\n    vkCmdBindShadersEXT = pAPI->vkCmdBindShadersEXT;\n    vkCmdSetDepthClampRangeEXT = pAPI->vkCmdSetDepthClampRangeEXT;\n    vkCreatePipelineBinariesKHR = pAPI->vkCreatePipelineBinariesKHR;\n    vkDestroyPipelineBinaryKHR = pAPI->vkDestroyPipelineBinaryKHR;\n    vkGetPipelineKeyKHR = pAPI->vkGetPipelineKeyKHR;\n    vkGetPipelineBinaryDataKHR = pAPI->vkGetPipelineBinaryDataKHR;\n    vkReleaseCapturedPipelineDataKHR = pAPI->vkReleaseCapturedPipelineDataKHR;\n    vkGetFramebufferTilePropertiesQCOM = pAPI->vkGetFramebufferTilePropertiesQCOM;\n    vkGetDynamicRenderingTilePropertiesQCOM = pAPI->vkGetDynamicRenderingTilePropertiesQCOM;\n    vkReleaseSwapchainImagesKHR = pAPI->vkReleaseSwapchainImagesKHR;\n    vkReleaseSwapchainImagesEXT = pAPI->vkReleaseSwapchainImagesEXT;\n    vkGetPhysicalDeviceCooperativeVectorPropertiesNV = pAPI->vkGetPhysicalDeviceCooperativeVectorPropertiesNV;\n    vkConvertCooperativeVectorMatrixNV = pAPI->vkConvertCooperativeVectorMatrixNV;\n    vkCmdConvertCooperativeVectorMatrixNV = pAPI->vkCmdConvertCooperativeVectorMatrixNV;\n    vkSetLatencySleepModeNV = pAPI->vkSetLatencySleepModeNV;\n    vkLatencySleepNV = pAPI->vkLatencySleepNV;\n    vkSetLatencyMarkerNV = pAPI->vkSetLatencyMarkerNV;\n    vkGetLatencyTimingsNV = pAPI->vkGetLatencyTimingsNV;\n    vkQueueNotifyOutOfBandNV = pAPI->vkQueueNotifyOutOfBandNV;\n    vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR = pAPI->vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR;\n    vkCreateDataGraphPipelinesARM = pAPI->vkCreateDataGraphPipelinesARM;\n    vkCreateDataGraphPipelineSessionARM = pAPI->vkCreateDataGraphPipelineSessionARM;\n    vkGetDataGraphPipelineSessionBindPointRequirementsARM = pAPI->vkGetDataGraphPipelineSessionBindPointRequirementsARM;\n    vkGetDataGraphPipelineSessionMemoryRequirementsARM = pAPI->vkGetDataGraphPipelineSessionMemoryRequirementsARM;\n    vkBindDataGraphPipelineSessionMemoryARM = pAPI->vkBindDataGraphPipelineSessionMemoryARM;\n    vkDestroyDataGraphPipelineSessionARM = pAPI->vkDestroyDataGraphPipelineSessionARM;\n    vkCmdDispatchDataGraphARM = pAPI->vkCmdDispatchDataGraphARM;\n    vkGetDataGraphPipelineAvailablePropertiesARM = pAPI->vkGetDataGraphPipelineAvailablePropertiesARM;\n    vkGetDataGraphPipelinePropertiesARM = pAPI->vkGetDataGraphPipelinePropertiesARM;\n    vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM = pAPI->vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM;\n    vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM = pAPI->vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM;\n    vkCmdSetAttachmentFeedbackLoopEnableEXT = pAPI->vkCmdSetAttachmentFeedbackLoopEnableEXT;\n    vkCmdSetLineStippleKHR = pAPI->vkCmdSetLineStippleKHR;\n    vkCmdSetLineStippleEXT = pAPI->vkCmdSetLineStippleEXT;\n    vkGetPhysicalDeviceCalibrateableTimeDomainsKHR = pAPI->vkGetPhysicalDeviceCalibrateableTimeDomainsKHR;\n    vkGetCalibratedTimestampsKHR = pAPI->vkGetCalibratedTimestampsKHR;\n    vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = pAPI->vkGetPhysicalDeviceCalibrateableTimeDomainsEXT;\n    vkGetCalibratedTimestampsEXT = pAPI->vkGetCalibratedTimestampsEXT;\n    vkCmdBindDescriptorSets2KHR = pAPI->vkCmdBindDescriptorSets2KHR;\n    vkCmdPushConstants2KHR = pAPI->vkCmdPushConstants2KHR;\n    vkCmdPushDescriptorSet2KHR = pAPI->vkCmdPushDescriptorSet2KHR;\n    vkCmdPushDescriptorSetWithTemplate2KHR = pAPI->vkCmdPushDescriptorSetWithTemplate2KHR;\n    vkCmdSetDescriptorBufferOffsets2EXT = pAPI->vkCmdSetDescriptorBufferOffsets2EXT;\n    vkCmdBindDescriptorBufferEmbeddedSamplers2EXT = pAPI->vkCmdBindDescriptorBufferEmbeddedSamplers2EXT;\n    vkCmdBindTileMemoryQCOM = pAPI->vkCmdBindTileMemoryQCOM;\n    vkCmdCopyMemoryIndirectKHR = pAPI->vkCmdCopyMemoryIndirectKHR;\n    vkCmdCopyMemoryToImageIndirectKHR = pAPI->vkCmdCopyMemoryToImageIndirectKHR;\n    vkCmdCopyMemoryIndirectNV = pAPI->vkCmdCopyMemoryIndirectNV;\n    vkCmdCopyMemoryToImageIndirectNV = pAPI->vkCmdCopyMemoryToImageIndirectNV;\n    vkCmdDecompressMemoryEXT = pAPI->vkCmdDecompressMemoryEXT;\n    vkCmdDecompressMemoryIndirectCountEXT = pAPI->vkCmdDecompressMemoryIndirectCountEXT;\n    vkCmdDecompressMemoryNV = pAPI->vkCmdDecompressMemoryNV;\n    vkCmdDecompressMemoryIndirectCountNV = pAPI->vkCmdDecompressMemoryIndirectCountNV;\n    vkCreateExternalComputeQueueNV = pAPI->vkCreateExternalComputeQueueNV;\n    vkDestroyExternalComputeQueueNV = pAPI->vkDestroyExternalComputeQueueNV;\n    vkGetExternalComputeQueueDataNV = pAPI->vkGetExternalComputeQueueDataNV;\n    vkGetClusterAccelerationStructureBuildSizesNV = pAPI->vkGetClusterAccelerationStructureBuildSizesNV;\n    vkCmdBuildClusterAccelerationStructureIndirectNV = pAPI->vkCmdBuildClusterAccelerationStructureIndirectNV;\n    vkGetPartitionedAccelerationStructuresBuildSizesNV = pAPI->vkGetPartitionedAccelerationStructuresBuildSizesNV;\n    vkCmdBuildPartitionedAccelerationStructuresNV = pAPI->vkCmdBuildPartitionedAccelerationStructuresNV;\n    vkGetGeneratedCommandsMemoryRequirementsEXT = pAPI->vkGetGeneratedCommandsMemoryRequirementsEXT;\n    vkCmdPreprocessGeneratedCommandsEXT = pAPI->vkCmdPreprocessGeneratedCommandsEXT;\n    vkCmdExecuteGeneratedCommandsEXT = pAPI->vkCmdExecuteGeneratedCommandsEXT;\n    vkCreateIndirectCommandsLayoutEXT = pAPI->vkCreateIndirectCommandsLayoutEXT;\n    vkDestroyIndirectCommandsLayoutEXT = pAPI->vkDestroyIndirectCommandsLayoutEXT;\n    vkCreateIndirectExecutionSetEXT = pAPI->vkCreateIndirectExecutionSetEXT;\n    vkDestroyIndirectExecutionSetEXT = pAPI->vkDestroyIndirectExecutionSetEXT;\n    vkUpdateIndirectExecutionSetPipelineEXT = pAPI->vkUpdateIndirectExecutionSetPipelineEXT;\n    vkUpdateIndirectExecutionSetShaderEXT = pAPI->vkUpdateIndirectExecutionSetShaderEXT;\n    vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV = pAPI->vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV;\n    vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM = pAPI->vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM;\n    vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM = pAPI->vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM;\n    vkCreateShaderInstrumentationARM = pAPI->vkCreateShaderInstrumentationARM;\n    vkDestroyShaderInstrumentationARM = pAPI->vkDestroyShaderInstrumentationARM;\n    vkCmdBeginShaderInstrumentationARM = pAPI->vkCmdBeginShaderInstrumentationARM;\n    vkCmdEndShaderInstrumentationARM = pAPI->vkCmdEndShaderInstrumentationARM;\n    vkGetShaderInstrumentationValuesARM = pAPI->vkGetShaderInstrumentationValuesARM;\n    vkClearShaderInstrumentationMetricsARM = pAPI->vkClearShaderInstrumentationMetricsARM;\n    vkCmdEndRendering2EXT = pAPI->vkCmdEndRendering2EXT;\n    vkCmdBeginCustomResolveEXT = pAPI->vkCmdBeginCustomResolveEXT;\n    vkCmdEndRendering2KHR = pAPI->vkCmdEndRendering2KHR;\n    vkCmdSetComputeOccupancyPriorityNV = pAPI->vkCmdSetComputeOccupancyPriorityNV;\n#ifdef VK_USE_PLATFORM_XLIB_KHR\n    vkCreateXlibSurfaceKHR = pAPI->vkCreateXlibSurfaceKHR;\n    vkGetPhysicalDeviceXlibPresentationSupportKHR = pAPI->vkGetPhysicalDeviceXlibPresentationSupportKHR;\n#endif /*VK_USE_PLATFORM_XLIB_KHR*/\n#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT\n    vkAcquireXlibDisplayEXT = pAPI->vkAcquireXlibDisplayEXT;\n    vkGetRandROutputDisplayEXT = pAPI->vkGetRandROutputDisplayEXT;\n#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/\n#ifdef VK_USE_PLATFORM_XCB_KHR\n    vkCreateXcbSurfaceKHR = pAPI->vkCreateXcbSurfaceKHR;\n    vkGetPhysicalDeviceXcbPresentationSupportKHR = pAPI->vkGetPhysicalDeviceXcbPresentationSupportKHR;\n#endif /*VK_USE_PLATFORM_XCB_KHR*/\n#ifdef VK_USE_PLATFORM_WAYLAND_KHR\n    vkCreateWaylandSurfaceKHR = pAPI->vkCreateWaylandSurfaceKHR;\n    vkGetPhysicalDeviceWaylandPresentationSupportKHR = pAPI->vkGetPhysicalDeviceWaylandPresentationSupportKHR;\n#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/\n#ifdef VK_USE_PLATFORM_UBM_SEC\n    vkCreateUbmSurfaceSEC = pAPI->vkCreateUbmSurfaceSEC;\n    vkGetPhysicalDeviceUbmPresentationSupportSEC = pAPI->vkGetPhysicalDeviceUbmPresentationSupportSEC;\n#endif /*VK_USE_PLATFORM_UBM_SEC*/\n#ifdef VK_USE_PLATFORM_DIRECTFB_EXT\n    vkCreateDirectFBSurfaceEXT = pAPI->vkCreateDirectFBSurfaceEXT;\n    vkGetPhysicalDeviceDirectFBPresentationSupportEXT = pAPI->vkGetPhysicalDeviceDirectFBPresentationSupportEXT;\n#endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/\n#ifdef VK_USE_PLATFORM_ANDROID_KHR\n    vkCreateAndroidSurfaceKHR = pAPI->vkCreateAndroidSurfaceKHR;\n    vkGetAndroidHardwareBufferPropertiesANDROID = pAPI->vkGetAndroidHardwareBufferPropertiesANDROID;\n    vkGetMemoryAndroidHardwareBufferANDROID = pAPI->vkGetMemoryAndroidHardwareBufferANDROID;\n#endif /*VK_USE_PLATFORM_ANDROID_KHR*/\n#ifdef VK_USE_PLATFORM_WIN32_KHR\n    vkCreateWin32SurfaceKHR = pAPI->vkCreateWin32SurfaceKHR;\n    vkGetPhysicalDeviceWin32PresentationSupportKHR = pAPI->vkGetPhysicalDeviceWin32PresentationSupportKHR;\n    vkGetMemoryWin32HandleKHR = pAPI->vkGetMemoryWin32HandleKHR;\n    vkGetMemoryWin32HandlePropertiesKHR = pAPI->vkGetMemoryWin32HandlePropertiesKHR;\n    vkGetMemoryWin32HandleNV = pAPI->vkGetMemoryWin32HandleNV;\n    vkImportSemaphoreWin32HandleKHR = pAPI->vkImportSemaphoreWin32HandleKHR;\n    vkGetSemaphoreWin32HandleKHR = pAPI->vkGetSemaphoreWin32HandleKHR;\n    vkImportFenceWin32HandleKHR = pAPI->vkImportFenceWin32HandleKHR;\n    vkGetFenceWin32HandleKHR = pAPI->vkGetFenceWin32HandleKHR;\n    vkGetPhysicalDeviceSurfacePresentModes2EXT = pAPI->vkGetPhysicalDeviceSurfacePresentModes2EXT;\n    vkAcquireFullScreenExclusiveModeEXT = pAPI->vkAcquireFullScreenExclusiveModeEXT;\n    vkReleaseFullScreenExclusiveModeEXT = pAPI->vkReleaseFullScreenExclusiveModeEXT;\n    vkGetDeviceGroupSurfacePresentModes2EXT = pAPI->vkGetDeviceGroupSurfacePresentModes2EXT;\n    vkAcquireWinrtDisplayNV = pAPI->vkAcquireWinrtDisplayNV;\n    vkGetWinrtDisplayNV = pAPI->vkGetWinrtDisplayNV;\n#endif /*VK_USE_PLATFORM_WIN32_KHR*/\n#ifdef VK_USE_PLATFORM_VI_NN\n    vkCreateViSurfaceNN = pAPI->vkCreateViSurfaceNN;\n#endif /*VK_USE_PLATFORM_VI_NN*/\n#ifdef VK_USE_PLATFORM_IOS_MVK\n    vkCreateIOSSurfaceMVK = pAPI->vkCreateIOSSurfaceMVK;\n#endif /*VK_USE_PLATFORM_IOS_MVK*/\n#ifdef VK_USE_PLATFORM_MACOS_MVK\n    vkCreateMacOSSurfaceMVK = pAPI->vkCreateMacOSSurfaceMVK;\n#endif /*VK_USE_PLATFORM_MACOS_MVK*/\n#ifdef VK_USE_PLATFORM_METAL_EXT\n    vkCreateMetalSurfaceEXT = pAPI->vkCreateMetalSurfaceEXT;\n    vkExportMetalObjectsEXT = pAPI->vkExportMetalObjectsEXT;\n    vkGetMemoryMetalHandleEXT = pAPI->vkGetMemoryMetalHandleEXT;\n    vkGetMemoryMetalHandlePropertiesEXT = pAPI->vkGetMemoryMetalHandlePropertiesEXT;\n#endif /*VK_USE_PLATFORM_METAL_EXT*/\n#ifdef VK_USE_PLATFORM_FUCHSIA\n    vkCreateImagePipeSurfaceFUCHSIA = pAPI->vkCreateImagePipeSurfaceFUCHSIA;\n    vkGetMemoryZirconHandleFUCHSIA = pAPI->vkGetMemoryZirconHandleFUCHSIA;\n    vkGetMemoryZirconHandlePropertiesFUCHSIA = pAPI->vkGetMemoryZirconHandlePropertiesFUCHSIA;\n    vkImportSemaphoreZirconHandleFUCHSIA = pAPI->vkImportSemaphoreZirconHandleFUCHSIA;\n    vkGetSemaphoreZirconHandleFUCHSIA = pAPI->vkGetSemaphoreZirconHandleFUCHSIA;\n    vkCreateBufferCollectionFUCHSIA = pAPI->vkCreateBufferCollectionFUCHSIA;\n    vkSetBufferCollectionImageConstraintsFUCHSIA = pAPI->vkSetBufferCollectionImageConstraintsFUCHSIA;\n    vkSetBufferCollectionBufferConstraintsFUCHSIA = pAPI->vkSetBufferCollectionBufferConstraintsFUCHSIA;\n    vkDestroyBufferCollectionFUCHSIA = pAPI->vkDestroyBufferCollectionFUCHSIA;\n    vkGetBufferCollectionPropertiesFUCHSIA = pAPI->vkGetBufferCollectionPropertiesFUCHSIA;\n#endif /*VK_USE_PLATFORM_FUCHSIA*/\n#ifdef VK_USE_PLATFORM_GGP\n    vkCreateStreamDescriptorSurfaceGGP = pAPI->vkCreateStreamDescriptorSurfaceGGP;\n#endif /*VK_USE_PLATFORM_GGP*/\n#ifdef VK_USE_PLATFORM_SCI\n    vkGetMemorySciBufNV = pAPI->vkGetMemorySciBufNV;\n    vkGetPhysicalDeviceExternalMemorySciBufPropertiesNV = pAPI->vkGetPhysicalDeviceExternalMemorySciBufPropertiesNV;\n    vkGetPhysicalDeviceSciBufAttributesNV = pAPI->vkGetPhysicalDeviceSciBufAttributesNV;\n    vkCreateSemaphoreSciSyncPoolNV = pAPI->vkCreateSemaphoreSciSyncPoolNV;\n    vkDestroySemaphoreSciSyncPoolNV = pAPI->vkDestroySemaphoreSciSyncPoolNV;\n    vkGetFenceSciSyncFenceNV = pAPI->vkGetFenceSciSyncFenceNV;\n    vkGetFenceSciSyncObjNV = pAPI->vkGetFenceSciSyncObjNV;\n    vkImportFenceSciSyncFenceNV = pAPI->vkImportFenceSciSyncFenceNV;\n    vkImportFenceSciSyncObjNV = pAPI->vkImportFenceSciSyncObjNV;\n    vkGetPhysicalDeviceSciSyncAttributesNV = pAPI->vkGetPhysicalDeviceSciSyncAttributesNV;\n    vkGetSemaphoreSciSyncObjNV = pAPI->vkGetSemaphoreSciSyncObjNV;\n    vkImportSemaphoreSciSyncObjNV = pAPI->vkImportSemaphoreSciSyncObjNV;\n#endif /*VK_USE_PLATFORM_SCI*/\n#ifdef VK_ENABLE_BETA_EXTENSIONS\n    vkCreateExecutionGraphPipelinesAMDX = pAPI->vkCreateExecutionGraphPipelinesAMDX;\n    vkGetExecutionGraphPipelineScratchSizeAMDX = pAPI->vkGetExecutionGraphPipelineScratchSizeAMDX;\n    vkGetExecutionGraphPipelineNodeIndexAMDX = pAPI->vkGetExecutionGraphPipelineNodeIndexAMDX;\n    vkCmdInitializeGraphScratchMemoryAMDX = pAPI->vkCmdInitializeGraphScratchMemoryAMDX;\n    vkCmdDispatchGraphAMDX = pAPI->vkCmdDispatchGraphAMDX;\n    vkCmdDispatchGraphIndirectAMDX = pAPI->vkCmdDispatchGraphIndirectAMDX;\n    vkCmdDispatchGraphIndirectCountAMDX = pAPI->vkCmdDispatchGraphIndirectCountAMDX;\n    vkCreateCudaModuleNV = pAPI->vkCreateCudaModuleNV;\n    vkGetCudaModuleCacheNV = pAPI->vkGetCudaModuleCacheNV;\n    vkCreateCudaFunctionNV = pAPI->vkCreateCudaFunctionNV;\n    vkDestroyCudaModuleNV = pAPI->vkDestroyCudaModuleNV;\n    vkDestroyCudaFunctionNV = pAPI->vkDestroyCudaFunctionNV;\n    vkCmdCudaLaunchKernelNV = pAPI->vkCmdCudaLaunchKernelNV;\n#endif /*VK_ENABLE_BETA_EXTENSIONS*/\n#ifdef VK_USE_PLATFORM_SCREEN_QNX\n    vkCreateScreenSurfaceQNX = pAPI->vkCreateScreenSurfaceQNX;\n    vkGetPhysicalDeviceScreenPresentationSupportQNX = pAPI->vkGetPhysicalDeviceScreenPresentationSupportQNX;\n    vkGetScreenBufferPropertiesQNX = pAPI->vkGetScreenBufferPropertiesQNX;\n#endif /*VK_USE_PLATFORM_SCREEN_QNX*/\n#ifdef VK_USE_PLATFORM_OHOS\n    vkGetNativeBufferPropertiesOHOS = pAPI->vkGetNativeBufferPropertiesOHOS;\n    vkGetMemoryNativeBufferOHOS = pAPI->vkGetMemoryNativeBufferOHOS;\n    vkCreateSurfaceOHOS = pAPI->vkCreateSurfaceOHOS;\n#endif /*VK_USE_PLATFORM_OHOS*/\n\n    return VK_SUCCESS;\n#endif\n}\n\n#endif  /* VKBIND_IMPLEMENTATION */\n\n\n\n/*\nThis software is available as a choice of the following licenses. Choose\nwhichever you prefer.\n\n===============================================================================\nALTERNATIVE 1 - Public Domain (www.unlicense.org)\n===============================================================================\nThis is free and unencumbered software released into the public domain.\n\nAnyone is free to copy, modify, publish, use, compile, sell, or distribute this\nsoftware, either in source code form or as a compiled binary, for any purpose,\ncommercial or non-commercial, and by any means.\n\nIn jurisdictions that recognize copyright laws, the author or authors of this\nsoftware dedicate any and all copyright interest in the software to the public\ndomain. We make this dedication for the benefit of the public at large and to\nthe detriment of our heirs and successors. We intend this dedication to be an\novert act of relinquishment in perpetuity of all present and future rights to\nthis software under copyright law.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\nACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nFor more information, please refer to <http://unlicense.org/>\n\n===============================================================================\nALTERNATIVE 2 - MIT No Attribution\n===============================================================================\nCopyright 2019 David Reid\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit persons to whom the Software is furnished to do\nso.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n*/\n"
  }
]