/* Autogenerated file -- do not edit
 * generated by gen_enum_to_str.py
 *
 * Copyright © 2017 Intel Corporation
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
 */

#include <vulkan/vulkan.h>
#include "util/macros.h"
#include "vk_enum_to_str.h"


    const char *
    vk_VertexInputRate_to_str(VkVertexInputRate input)
    {
        switch(input) {
            case VK_VERTEX_INPUT_RATE_VERTEX:
                return "VK_VERTEX_INPUT_RATE_VERTEX";
            case VK_VERTEX_INPUT_RATE_INSTANCE:
                return "VK_VERTEX_INPUT_RATE_INSTANCE";
        default:
            unreachable("Undefined enum value.");
        }
    }

    const char *
    vk_ViewportCoordinateSwizzleNV_to_str(VkViewportCoordinateSwizzleNV input)
    {
        switch(input) {
            case VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV:
                return "VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV";
            case VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV:
                return "VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV";
            case VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV:
                return "VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV";
            case VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV:
                return "VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV";
            case VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV:
                return "VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV";
            case VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV:
                return "VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV";
            case VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV:
                return "VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV";
            case VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV:
                return "VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV";
        default:
            unreachable("Undefined enum value.");
        }
    }

    const char *
    vk_BlendOp_to_str(VkBlendOp input)
    {
        switch(input) {
            case VK_BLEND_OP_ADD:
                return "VK_BLEND_OP_ADD";
            case VK_BLEND_OP_SUBTRACT:
                return "VK_BLEND_OP_SUBTRACT";
            case VK_BLEND_OP_REVERSE_SUBTRACT:
                return "VK_BLEND_OP_REVERSE_SUBTRACT";
            case VK_BLEND_OP_MIN:
                return "VK_BLEND_OP_MIN";
            case VK_BLEND_OP_MAX:
                return "VK_BLEND_OP_MAX";
        default:
            unreachable("Undefined enum value.");
        }
    }

    const char *
    vk_StructureType_to_str(VkStructureType input)
    {
        switch(input) {
            case VK_STRUCTURE_TYPE_APPLICATION_INFO:
                return "VK_STRUCTURE_TYPE_APPLICATION_INFO";
            case VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO:
                return "VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO";
            case VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO:
                return "VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO";
            case VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO:
                return "VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO";
            case VK_STRUCTURE_TYPE_SUBMIT_INFO:
                return "VK_STRUCTURE_TYPE_SUBMIT_INFO";
            case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO:
                return "VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO";
            case VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE:
                return "VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE";
            case VK_STRUCTURE_TYPE_BIND_SPARSE_INFO:
                return "VK_STRUCTURE_TYPE_BIND_SPARSE_INFO";
            case VK_STRUCTURE_TYPE_FENCE_CREATE_INFO:
                return "VK_STRUCTURE_TYPE_FENCE_CREATE_INFO";
            case VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO:
                return "VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO";
            case VK_STRUCTURE_TYPE_EVENT_CREATE_INFO:
                return "VK_STRUCTURE_TYPE_EVENT_CREATE_INFO";
            case VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO:
                return "VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO";
            case VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO:
                return "VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO";
            case VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO:
                return "VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO";
            case VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO:
                return "VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO";
            case VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO:
                return "VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO";
            case VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO:
                return "VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO";
            case VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO:
                return "VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO";
            case VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO:
                return "VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO";
            case VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO:
                return "VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO";
            case VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO:
                return "VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO";
            case VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO:
                return "VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO";
            case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO:
                return "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO";
            case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO:
                return "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO";
            case VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO:
                return "VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO";
            case VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO:
                return "VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO";
            case VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO:
                return "VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO";
            case VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO:
                return "VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO";
            case VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO:
                return "VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO";
            case VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO:
                return "VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO";
            case VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO:
                return "VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO";
            case VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO:
                return "VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO";
            case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO:
                return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO";
            case VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO:
                return "VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO";
            case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO:
                return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO";
            case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET:
                return "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET";
            case VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET:
                return "VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET";
            case VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO:
                return "VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO";
            case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO:
                return "VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO";
            case VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO:
                return "VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO";
            case VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO:
                return "VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO";
            case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO:
                return "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO";
            case VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO:
                return "VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO";
            case VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO:
                return "VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO";
            case VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER:
                return "VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER";
            case VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER:
                return "VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER";
            case VK_STRUCTURE_TYPE_MEMORY_BARRIER:
                return "VK_STRUCTURE_TYPE_MEMORY_BARRIER";
            case VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO:
                return "VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO";
            case VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO:
                return "VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO";
            case VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR:
                return "VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR";
            case VK_STRUCTURE_TYPE_PRESENT_INFO_KHR:
                return "VK_STRUCTURE_TYPE_PRESENT_INFO_KHR";
            case VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR:
                return "VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR";
            case VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR:
                return "VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR";
            case VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR:
                return "VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR";
            case VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR:
                return "VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR";
            case VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR:
                return "VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR";
            case VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR:
                return "VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR";
            case VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR:
                return "VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR";
            case VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR:
                return "VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR";
            case VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR:
                return "VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR";
            case VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT:
                return "VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT";
            case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD:
                return "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD";
            case VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT:
                return "VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT";
            case VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT:
                return "VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT";
            case VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT:
                return "VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT";
            case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV:
                return "VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV";
            case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV:
                return "VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV";
            case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV:
                return "VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV";
            case VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHX:
                return "VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHX";
            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHX:
                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHX";
            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHX:
                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHX";
            case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV:
                return "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV";
            case VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV:
                return "VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV";
            case VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV:
                return "VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV";
            case VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV:
                return "VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV";
            case VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV:
                return "VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV";
            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR:
                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR";
            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR:
                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR";
            case VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR:
                return "VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR";
            case VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR:
                return "VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR";
            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR:
                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR";
            case VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR:
                return "VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR";
            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR:
                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR";
            case VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR:
                return "VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR";
            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR:
                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR";
            case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHX:
                return "VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHX";
            case VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHX:
                return "VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHX";
            case VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHX:
                return "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHX";
            case VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHX:
                return "VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHX";
            case VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHX:
                return "VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHX";
            case VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHX:
                return "VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHX";
            case VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHX:
                return "VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHX";
            case VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHX:
                return "VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHX";
            case VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHX:
                return "VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHX";
            case VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHX:
                return "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHX";
            case VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHX:
                return "VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHX";
            case VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHX:
                return "VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHX";
            case VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHX:
                return "VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHX";
            case VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT:
                return "VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT";
            case VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN:
                return "VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN";
            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHX:
                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHX";
            case VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHX:
                return "VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHX";
            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHX:
                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHX";
            case VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHX:
                return "VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHX";
            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHX:
                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHX";
            case VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHX:
                return "VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHX";
            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHX:
                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHX";
            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHX:
                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHX";
            case VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHX:
                return "VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHX";
            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHX:
                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHX";
            case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHX:
                return "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHX";
            case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHX:
                return "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHX";
            case VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHX:
                return "VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHX";
            case VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHX:
                return "VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHX";
            case VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHX:
                return "VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHX";
            case VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHX:
                return "VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHX";
            case VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHX:
                return "VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHX";
            case VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHX:
                return "VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHX";
            case VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHX:
                return "VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHX";
            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHX:
                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHX";
            case VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHX:
                return "VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHX";
            case VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHX:
                return "VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHX";
            case VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHX:
                return "VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHX";
            case VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHX:
                return "VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHX";
            case VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHX:
                return "VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHX";
            case VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHX:
                return "VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHX";
            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR:
                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR";
            case VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR:
                return "VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR";
            case VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR:
                return "VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR";
            case VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX:
                return "VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX";
            case VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX:
                return "VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX";
            case VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX:
                return "VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX";
            case VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX:
                return "VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX";
            case VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX:
                return "VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX";
            case VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX:
                return "VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX";
            case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV:
                return "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV";
            case VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT:
                return "VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT";
            case VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT:
                return "VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT";
            case VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT:
                return "VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT";
            case VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT:
                return "VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT";
            case VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT:
                return "VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT";
            case VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE:
                return "VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE";
            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX:
                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX";
            case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV:
                return "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV";
            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT:
                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT";
            case VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT:
                return "VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT";
            case VK_STRUCTURE_TYPE_HDR_METADATA_EXT:
                return "VK_STRUCTURE_TYPE_HDR_METADATA_EXT";
            case VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK:
                return "VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK";
            case VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK:
                return "VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK";
        default:
            unreachable("Undefined enum value.");
        }
    }

    const char *
    vk_StencilOp_to_str(VkStencilOp input)
    {
        switch(input) {
            case VK_STENCIL_OP_KEEP:
                return "VK_STENCIL_OP_KEEP";
            case VK_STENCIL_OP_ZERO:
                return "VK_STENCIL_OP_ZERO";
            case VK_STENCIL_OP_REPLACE:
                return "VK_STENCIL_OP_REPLACE";
            case VK_STENCIL_OP_INCREMENT_AND_CLAMP:
                return "VK_STENCIL_OP_INCREMENT_AND_CLAMP";
            case VK_STENCIL_OP_DECREMENT_AND_CLAMP:
                return "VK_STENCIL_OP_DECREMENT_AND_CLAMP";
            case VK_STENCIL_OP_INVERT:
                return "VK_STENCIL_OP_INVERT";
            case VK_STENCIL_OP_INCREMENT_AND_WRAP:
                return "VK_STENCIL_OP_INCREMENT_AND_WRAP";
            case VK_STENCIL_OP_DECREMENT_AND_WRAP:
                return "VK_STENCIL_OP_DECREMENT_AND_WRAP";
        default:
            unreachable("Undefined enum value.");
        }
    }

    const char *
    vk_DiscardRectangleModeEXT_to_str(VkDiscardRectangleModeEXT input)
    {
        switch(input) {
            case VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT:
                return "VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT";
            case VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT:
                return "VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT";
        default:
            unreachable("Undefined enum value.");
        }
    }

    const char *
    vk_ObjectEntryTypeNVX_to_str(VkObjectEntryTypeNVX input)
    {
        switch(input) {
            case VK_OBJECT_ENTRY_DESCRIPTOR_SET_NVX:
                return "VK_OBJECT_ENTRY_DESCRIPTOR_SET_NVX";
            case VK_OBJECT_ENTRY_PIPELINE_NVX:
                return "VK_OBJECT_ENTRY_PIPELINE_NVX";
            case VK_OBJECT_ENTRY_INDEX_BUFFER_NVX:
                return "VK_OBJECT_ENTRY_INDEX_BUFFER_NVX";
            case VK_OBJECT_ENTRY_VERTEX_BUFFER_NVX:
                return "VK_OBJECT_ENTRY_VERTEX_BUFFER_NVX";
            case VK_OBJECT_ENTRY_PUSH_CONSTANT_NVX:
                return "VK_OBJECT_ENTRY_PUSH_CONSTANT_NVX";
        default:
            unreachable("Undefined enum value.");
        }
    }

    const char *
    vk_BorderColor_to_str(VkBorderColor input)
    {
        switch(input) {
            case VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK:
                return "VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK";
            case VK_BORDER_COLOR_INT_TRANSPARENT_BLACK:
                return "VK_BORDER_COLOR_INT_TRANSPARENT_BLACK";
            case VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK:
                return "VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK";
            case VK_BORDER_COLOR_INT_OPAQUE_BLACK:
                return "VK_BORDER_COLOR_INT_OPAQUE_BLACK";
            case VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE:
                return "VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE";
            case VK_BORDER_COLOR_INT_OPAQUE_WHITE:
                return "VK_BORDER_COLOR_INT_OPAQUE_WHITE";
        default:
            unreachable("Undefined enum value.");
        }
    }

    const char *
    vk_Filter_to_str(VkFilter input)
    {
        switch(input) {
            case VK_FILTER_NEAREST:
                return "VK_FILTER_NEAREST";
            case VK_FILTER_LINEAR:
                return "VK_FILTER_LINEAR";
            case VK_FILTER_CUBIC_IMG:
                return "VK_FILTER_CUBIC_IMG";
        default:
            unreachable("Undefined enum value.");
        }
    }

    const char *
    vk_ImageTiling_to_str(VkImageTiling input)
    {
        switch(input) {
            case VK_IMAGE_TILING_OPTIMAL:
                return "VK_IMAGE_TILING_OPTIMAL";
            case VK_IMAGE_TILING_LINEAR:
                return "VK_IMAGE_TILING_LINEAR";
        default:
            unreachable("Undefined enum value.");
        }
    }

    const char *
    vk_PolygonMode_to_str(VkPolygonMode input)
    {
        switch(input) {
            case VK_POLYGON_MODE_FILL:
                return "VK_POLYGON_MODE_FILL";
            case VK_POLYGON_MODE_LINE:
                return "VK_POLYGON_MODE_LINE";
            case VK_POLYGON_MODE_POINT:
                return "VK_POLYGON_MODE_POINT";
        default:
            unreachable("Undefined enum value.");
        }
    }

    const char *
    vk_AttachmentLoadOp_to_str(VkAttachmentLoadOp input)
    {
        switch(input) {
            case VK_ATTACHMENT_LOAD_OP_LOAD:
                return "VK_ATTACHMENT_LOAD_OP_LOAD";
            case VK_ATTACHMENT_LOAD_OP_CLEAR:
                return "VK_ATTACHMENT_LOAD_OP_CLEAR";
            case VK_ATTACHMENT_LOAD_OP_DONT_CARE:
                return "VK_ATTACHMENT_LOAD_OP_DONT_CARE";
        default:
            unreachable("Undefined enum value.");
        }
    }

    const char *
    vk_PipelineCacheHeaderVersion_to_str(VkPipelineCacheHeaderVersion input)
    {
        switch(input) {
            case VK_PIPELINE_CACHE_HEADER_VERSION_ONE:
                return "VK_PIPELINE_CACHE_HEADER_VERSION_ONE";
        default:
            unreachable("Undefined enum value.");
        }
    }

    const char *
    vk_FrontFace_to_str(VkFrontFace input)
    {
        switch(input) {
            case VK_FRONT_FACE_COUNTER_CLOCKWISE:
                return "VK_FRONT_FACE_COUNTER_CLOCKWISE";
            case VK_FRONT_FACE_CLOCKWISE:
                return "VK_FRONT_FACE_CLOCKWISE";
        default:
            unreachable("Undefined enum value.");
        }
    }

    const char *
    vk_DescriptorType_to_str(VkDescriptorType input)
    {
        switch(input) {
            case VK_DESCRIPTOR_TYPE_SAMPLER:
                return "VK_DESCRIPTOR_TYPE_SAMPLER";
            case VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER:
                return "VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER";
            case VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE:
                return "VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE";
            case VK_DESCRIPTOR_TYPE_STORAGE_IMAGE:
                return "VK_DESCRIPTOR_TYPE_STORAGE_IMAGE";
            case VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER:
                return "VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER";
            case VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER:
                return "VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER";
            case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER:
                return "VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER";
            case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER:
                return "VK_DESCRIPTOR_TYPE_STORAGE_BUFFER";
            case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC:
                return "VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC";
            case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC:
                return "VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC";
            case VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT:
                return "VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT";
        default:
            unreachable("Undefined enum value.");
        }
    }

    const char *
    vk_CommandBufferLevel_to_str(VkCommandBufferLevel input)
    {
        switch(input) {
            case VK_COMMAND_BUFFER_LEVEL_PRIMARY:
                return "VK_COMMAND_BUFFER_LEVEL_PRIMARY";
            case VK_COMMAND_BUFFER_LEVEL_SECONDARY:
                return "VK_COMMAND_BUFFER_LEVEL_SECONDARY";
        default:
            unreachable("Undefined enum value.");
        }
    }

    const char *
    vk_SharingMode_to_str(VkSharingMode input)
    {
        switch(input) {
            case VK_SHARING_MODE_EXCLUSIVE:
                return "VK_SHARING_MODE_EXCLUSIVE";
            case VK_SHARING_MODE_CONCURRENT:
                return "VK_SHARING_MODE_CONCURRENT";
        default:
            unreachable("Undefined enum value.");
        }
    }

    const char *
    vk_Result_to_str(VkResult input)
    {
        switch(input) {
            case VK_SUCCESS:
                return "VK_SUCCESS";
            case VK_NOT_READY:
                return "VK_NOT_READY";
            case VK_TIMEOUT:
                return "VK_TIMEOUT";
            case VK_EVENT_SET:
                return "VK_EVENT_SET";
            case VK_EVENT_RESET:
                return "VK_EVENT_RESET";
            case VK_INCOMPLETE:
                return "VK_INCOMPLETE";
            case VK_ERROR_OUT_OF_HOST_MEMORY:
                return "VK_ERROR_OUT_OF_HOST_MEMORY";
            case VK_ERROR_OUT_OF_DEVICE_MEMORY:
                return "VK_ERROR_OUT_OF_DEVICE_MEMORY";
            case VK_ERROR_INITIALIZATION_FAILED:
                return "VK_ERROR_INITIALIZATION_FAILED";
            case VK_ERROR_DEVICE_LOST:
                return "VK_ERROR_DEVICE_LOST";
            case VK_ERROR_MEMORY_MAP_FAILED:
                return "VK_ERROR_MEMORY_MAP_FAILED";
            case VK_ERROR_LAYER_NOT_PRESENT:
                return "VK_ERROR_LAYER_NOT_PRESENT";
            case VK_ERROR_EXTENSION_NOT_PRESENT:
                return "VK_ERROR_EXTENSION_NOT_PRESENT";
            case VK_ERROR_FEATURE_NOT_PRESENT:
                return "VK_ERROR_FEATURE_NOT_PRESENT";
            case VK_ERROR_INCOMPATIBLE_DRIVER:
                return "VK_ERROR_INCOMPATIBLE_DRIVER";
            case VK_ERROR_TOO_MANY_OBJECTS:
                return "VK_ERROR_TOO_MANY_OBJECTS";
            case VK_ERROR_FORMAT_NOT_SUPPORTED:
                return "VK_ERROR_FORMAT_NOT_SUPPORTED";
            case VK_ERROR_FRAGMENTED_POOL:
                return "VK_ERROR_FRAGMENTED_POOL";
            case VK_ERROR_SURFACE_LOST_KHR:
                return "VK_ERROR_SURFACE_LOST_KHR";
            case VK_ERROR_NATIVE_WINDOW_IN_USE_KHR:
                return "VK_ERROR_NATIVE_WINDOW_IN_USE_KHR";
            case VK_SUBOPTIMAL_KHR:
                return "VK_SUBOPTIMAL_KHR";
            case VK_ERROR_OUT_OF_DATE_KHR:
                return "VK_ERROR_OUT_OF_DATE_KHR";
            case VK_ERROR_INCOMPATIBLE_DISPLAY_KHR:
                return "VK_ERROR_INCOMPATIBLE_DISPLAY_KHR";
            case VK_ERROR_VALIDATION_FAILED_EXT:
                return "VK_ERROR_VALIDATION_FAILED_EXT";
            case VK_ERROR_INVALID_SHADER_NV:
                return "VK_ERROR_INVALID_SHADER_NV";
            case VK_ERROR_OUT_OF_POOL_MEMORY_KHR:
                return "VK_ERROR_OUT_OF_POOL_MEMORY_KHR";
            case VK_ERROR_INVALID_EXTERNAL_HANDLE_KHX:
                return "VK_ERROR_INVALID_EXTERNAL_HANDLE_KHX";
        default:
            unreachable("Undefined enum value.");
        }
    }

    const char *
    vk_ImageLayout_to_str(VkImageLayout input)
    {
        switch(input) {
            case VK_IMAGE_LAYOUT_UNDEFINED:
                return "VK_IMAGE_LAYOUT_UNDEFINED";
            case VK_IMAGE_LAYOUT_GENERAL:
                return "VK_IMAGE_LAYOUT_GENERAL";
            case VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL:
                return "VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL";
            case VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL:
                return "VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL";
            case VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL:
                return "VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL";
            case VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL:
                return "VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL";
            case VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL:
                return "VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL";
            case VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL:
                return "VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL";
            case VK_IMAGE_LAYOUT_PREINITIALIZED:
                return "VK_IMAGE_LAYOUT_PREINITIALIZED";
            case VK_IMAGE_LAYOUT_PRESENT_SRC_KHR:
                return "VK_IMAGE_LAYOUT_PRESENT_SRC_KHR";
        default:
            unreachable("Undefined enum value.");
        }
    }

    const char *
    vk_BlendFactor_to_str(VkBlendFactor input)
    {
        switch(input) {
            case VK_BLEND_FACTOR_ZERO:
                return "VK_BLEND_FACTOR_ZERO";
            case VK_BLEND_FACTOR_ONE:
                return "VK_BLEND_FACTOR_ONE";
            case VK_BLEND_FACTOR_SRC_COLOR:
                return "VK_BLEND_FACTOR_SRC_COLOR";
            case VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR:
                return "VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR";
            case VK_BLEND_FACTOR_DST_COLOR:
                return "VK_BLEND_FACTOR_DST_COLOR";
            case VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR:
                return "VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR";
            case VK_BLEND_FACTOR_SRC_ALPHA:
                return "VK_BLEND_FACTOR_SRC_ALPHA";
            case VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA:
                return "VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA";
            case VK_BLEND_FACTOR_DST_ALPHA:
                return "VK_BLEND_FACTOR_DST_ALPHA";
            case VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA:
                return "VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA";
            case VK_BLEND_FACTOR_CONSTANT_COLOR:
                return "VK_BLEND_FACTOR_CONSTANT_COLOR";
            case VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR:
                return "VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR";
            case VK_BLEND_FACTOR_CONSTANT_ALPHA:
                return "VK_BLEND_FACTOR_CONSTANT_ALPHA";
            case VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA:
                return "VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA";
            case VK_BLEND_FACTOR_SRC_ALPHA_SATURATE:
                return "VK_BLEND_FACTOR_SRC_ALPHA_SATURATE";
            case VK_BLEND_FACTOR_SRC1_COLOR:
                return "VK_BLEND_FACTOR_SRC1_COLOR";
            case VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR:
                return "VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR";
            case VK_BLEND_FACTOR_SRC1_ALPHA:
                return "VK_BLEND_FACTOR_SRC1_ALPHA";
            case VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA:
                return "VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA";
        default:
            unreachable("Undefined enum value.");
        }
    }

    const char *
    vk_ImageType_to_str(VkImageType input)
    {
        switch(input) {
            case VK_IMAGE_TYPE_1D:
                return "VK_IMAGE_TYPE_1D";
            case VK_IMAGE_TYPE_2D:
                return "VK_IMAGE_TYPE_2D";
            case VK_IMAGE_TYPE_3D:
                return "VK_IMAGE_TYPE_3D";
        default:
            unreachable("Undefined enum value.");
        }
    }

    const char *
    vk_IndirectCommandsTokenTypeNVX_to_str(VkIndirectCommandsTokenTypeNVX input)
    {
        switch(input) {
            case VK_INDIRECT_COMMANDS_TOKEN_PIPELINE_NVX:
                return "VK_INDIRECT_COMMANDS_TOKEN_PIPELINE_NVX";
            case VK_INDIRECT_COMMANDS_TOKEN_DESCRIPTOR_SET_NVX:
                return "VK_INDIRECT_COMMANDS_TOKEN_DESCRIPTOR_SET_NVX";
            case VK_INDIRECT_COMMANDS_TOKEN_INDEX_BUFFER_NVX:
                return "VK_INDIRECT_COMMANDS_TOKEN_INDEX_BUFFER_NVX";
            case VK_INDIRECT_COMMANDS_TOKEN_VERTEX_BUFFER_NVX:
                return "VK_INDIRECT_COMMANDS_TOKEN_VERTEX_BUFFER_NVX";
            case VK_INDIRECT_COMMANDS_TOKEN_PUSH_CONSTANT_NVX:
                return "VK_INDIRECT_COMMANDS_TOKEN_PUSH_CONSTANT_NVX";
            case VK_INDIRECT_COMMANDS_TOKEN_DRAW_INDEXED_NVX:
                return "VK_INDIRECT_COMMANDS_TOKEN_DRAW_INDEXED_NVX";
            case VK_INDIRECT_COMMANDS_TOKEN_DRAW_NVX:
                return "VK_INDIRECT_COMMANDS_TOKEN_DRAW_NVX";
            case VK_INDIRECT_COMMANDS_TOKEN_DISPATCH_NVX:
                return "VK_INDIRECT_COMMANDS_TOKEN_DISPATCH_NVX";
        default:
            unreachable("Undefined enum value.");
        }
    }

    const char *
    vk_ValidationCheckEXT_to_str(VkValidationCheckEXT input)
    {
        switch(input) {
            case VK_VALIDATION_CHECK_ALL_EXT:
                return "VK_VALIDATION_CHECK_ALL_EXT";
        default:
            unreachable("Undefined enum value.");
        }
    }

    const char *
    vk_QueryType_to_str(VkQueryType input)
    {
        switch(input) {
            case VK_QUERY_TYPE_OCCLUSION:
                return "VK_QUERY_TYPE_OCCLUSION";
            case VK_QUERY_TYPE_PIPELINE_STATISTICS:
                return "VK_QUERY_TYPE_PIPELINE_STATISTICS";
            case VK_QUERY_TYPE_TIMESTAMP:
                return "VK_QUERY_TYPE_TIMESTAMP";
        default:
            unreachable("Undefined enum value.");
        }
    }

    const char *
    vk_Format_to_str(VkFormat input)
    {
        switch(input) {
            case VK_FORMAT_UNDEFINED:
                return "VK_FORMAT_UNDEFINED";
            case VK_FORMAT_R4G4_UNORM_PACK8:
                return "VK_FORMAT_R4G4_UNORM_PACK8";
            case VK_FORMAT_R4G4B4A4_UNORM_PACK16:
                return "VK_FORMAT_R4G4B4A4_UNORM_PACK16";
            case VK_FORMAT_B4G4R4A4_UNORM_PACK16:
                return "VK_FORMAT_B4G4R4A4_UNORM_PACK16";
            case VK_FORMAT_R5G6B5_UNORM_PACK16:
                return "VK_FORMAT_R5G6B5_UNORM_PACK16";
            case VK_FORMAT_B5G6R5_UNORM_PACK16:
                return "VK_FORMAT_B5G6R5_UNORM_PACK16";
            case VK_FORMAT_R5G5B5A1_UNORM_PACK16:
                return "VK_FORMAT_R5G5B5A1_UNORM_PACK16";
            case VK_FORMAT_B5G5R5A1_UNORM_PACK16:
                return "VK_FORMAT_B5G5R5A1_UNORM_PACK16";
            case VK_FORMAT_A1R5G5B5_UNORM_PACK16:
                return "VK_FORMAT_A1R5G5B5_UNORM_PACK16";
            case VK_FORMAT_R8_UNORM:
                return "VK_FORMAT_R8_UNORM";
            case VK_FORMAT_R8_SNORM:
                return "VK_FORMAT_R8_SNORM";
            case VK_FORMAT_R8_USCALED:
                return "VK_FORMAT_R8_USCALED";
            case VK_FORMAT_R8_SSCALED:
                return "VK_FORMAT_R8_SSCALED";
            case VK_FORMAT_R8_UINT:
                return "VK_FORMAT_R8_UINT";
            case VK_FORMAT_R8_SINT:
                return "VK_FORMAT_R8_SINT";
            case VK_FORMAT_R8_SRGB:
                return "VK_FORMAT_R8_SRGB";
            case VK_FORMAT_R8G8_UNORM:
                return "VK_FORMAT_R8G8_UNORM";
            case VK_FORMAT_R8G8_SNORM:
                return "VK_FORMAT_R8G8_SNORM";
            case VK_FORMAT_R8G8_USCALED:
                return "VK_FORMAT_R8G8_USCALED";
            case VK_FORMAT_R8G8_SSCALED:
                return "VK_FORMAT_R8G8_SSCALED";
            case VK_FORMAT_R8G8_UINT:
                return "VK_FORMAT_R8G8_UINT";
            case VK_FORMAT_R8G8_SINT:
                return "VK_FORMAT_R8G8_SINT";
            case VK_FORMAT_R8G8_SRGB:
                return "VK_FORMAT_R8G8_SRGB";
            case VK_FORMAT_R8G8B8_UNORM:
                return "VK_FORMAT_R8G8B8_UNORM";
            case VK_FORMAT_R8G8B8_SNORM:
                return "VK_FORMAT_R8G8B8_SNORM";
            case VK_FORMAT_R8G8B8_USCALED:
                return "VK_FORMAT_R8G8B8_USCALED";
            case VK_FORMAT_R8G8B8_SSCALED:
                return "VK_FORMAT_R8G8B8_SSCALED";
            case VK_FORMAT_R8G8B8_UINT:
                return "VK_FORMAT_R8G8B8_UINT";
            case VK_FORMAT_R8G8B8_SINT:
                return "VK_FORMAT_R8G8B8_SINT";
            case VK_FORMAT_R8G8B8_SRGB:
                return "VK_FORMAT_R8G8B8_SRGB";
            case VK_FORMAT_B8G8R8_UNORM:
                return "VK_FORMAT_B8G8R8_UNORM";
            case VK_FORMAT_B8G8R8_SNORM:
                return "VK_FORMAT_B8G8R8_SNORM";
            case VK_FORMAT_B8G8R8_USCALED:
                return "VK_FORMAT_B8G8R8_USCALED";
            case VK_FORMAT_B8G8R8_SSCALED:
                return "VK_FORMAT_B8G8R8_SSCALED";
            case VK_FORMAT_B8G8R8_UINT:
                return "VK_FORMAT_B8G8R8_UINT";
            case VK_FORMAT_B8G8R8_SINT:
                return "VK_FORMAT_B8G8R8_SINT";
            case VK_FORMAT_B8G8R8_SRGB:
                return "VK_FORMAT_B8G8R8_SRGB";
            case VK_FORMAT_R8G8B8A8_UNORM:
                return "VK_FORMAT_R8G8B8A8_UNORM";
            case VK_FORMAT_R8G8B8A8_SNORM:
                return "VK_FORMAT_R8G8B8A8_SNORM";
            case VK_FORMAT_R8G8B8A8_USCALED:
                return "VK_FORMAT_R8G8B8A8_USCALED";
            case VK_FORMAT_R8G8B8A8_SSCALED:
                return "VK_FORMAT_R8G8B8A8_SSCALED";
            case VK_FORMAT_R8G8B8A8_UINT:
                return "VK_FORMAT_R8G8B8A8_UINT";
            case VK_FORMAT_R8G8B8A8_SINT:
                return "VK_FORMAT_R8G8B8A8_SINT";
            case VK_FORMAT_R8G8B8A8_SRGB:
                return "VK_FORMAT_R8G8B8A8_SRGB";
            case VK_FORMAT_B8G8R8A8_UNORM:
                return "VK_FORMAT_B8G8R8A8_UNORM";
            case VK_FORMAT_B8G8R8A8_SNORM:
                return "VK_FORMAT_B8G8R8A8_SNORM";
            case VK_FORMAT_B8G8R8A8_USCALED:
                return "VK_FORMAT_B8G8R8A8_USCALED";
            case VK_FORMAT_B8G8R8A8_SSCALED:
                return "VK_FORMAT_B8G8R8A8_SSCALED";
            case VK_FORMAT_B8G8R8A8_UINT:
                return "VK_FORMAT_B8G8R8A8_UINT";
            case VK_FORMAT_B8G8R8A8_SINT:
                return "VK_FORMAT_B8G8R8A8_SINT";
            case VK_FORMAT_B8G8R8A8_SRGB:
                return "VK_FORMAT_B8G8R8A8_SRGB";
            case VK_FORMAT_A8B8G8R8_UNORM_PACK32:
                return "VK_FORMAT_A8B8G8R8_UNORM_PACK32";
            case VK_FORMAT_A8B8G8R8_SNORM_PACK32:
                return "VK_FORMAT_A8B8G8R8_SNORM_PACK32";
            case VK_FORMAT_A8B8G8R8_USCALED_PACK32:
                return "VK_FORMAT_A8B8G8R8_USCALED_PACK32";
            case VK_FORMAT_A8B8G8R8_SSCALED_PACK32:
                return "VK_FORMAT_A8B8G8R8_SSCALED_PACK32";
            case VK_FORMAT_A8B8G8R8_UINT_PACK32:
                return "VK_FORMAT_A8B8G8R8_UINT_PACK32";
            case VK_FORMAT_A8B8G8R8_SINT_PACK32:
                return "VK_FORMAT_A8B8G8R8_SINT_PACK32";
            case VK_FORMAT_A8B8G8R8_SRGB_PACK32:
                return "VK_FORMAT_A8B8G8R8_SRGB_PACK32";
            case VK_FORMAT_A2R10G10B10_UNORM_PACK32:
                return "VK_FORMAT_A2R10G10B10_UNORM_PACK32";
            case VK_FORMAT_A2R10G10B10_SNORM_PACK32:
                return "VK_FORMAT_A2R10G10B10_SNORM_PACK32";
            case VK_FORMAT_A2R10G10B10_USCALED_PACK32:
                return "VK_FORMAT_A2R10G10B10_USCALED_PACK32";
            case VK_FORMAT_A2R10G10B10_SSCALED_PACK32:
                return "VK_FORMAT_A2R10G10B10_SSCALED_PACK32";
            case VK_FORMAT_A2R10G10B10_UINT_PACK32:
                return "VK_FORMAT_A2R10G10B10_UINT_PACK32";
            case VK_FORMAT_A2R10G10B10_SINT_PACK32:
                return "VK_FORMAT_A2R10G10B10_SINT_PACK32";
            case VK_FORMAT_A2B10G10R10_UNORM_PACK32:
                return "VK_FORMAT_A2B10G10R10_UNORM_PACK32";
            case VK_FORMAT_A2B10G10R10_SNORM_PACK32:
                return "VK_FORMAT_A2B10G10R10_SNORM_PACK32";
            case VK_FORMAT_A2B10G10R10_USCALED_PACK32:
                return "VK_FORMAT_A2B10G10R10_USCALED_PACK32";
            case VK_FORMAT_A2B10G10R10_SSCALED_PACK32:
                return "VK_FORMAT_A2B10G10R10_SSCALED_PACK32";
            case VK_FORMAT_A2B10G10R10_UINT_PACK32:
                return "VK_FORMAT_A2B10G10R10_UINT_PACK32";
            case VK_FORMAT_A2B10G10R10_SINT_PACK32:
                return "VK_FORMAT_A2B10G10R10_SINT_PACK32";
            case VK_FORMAT_R16_UNORM:
                return "VK_FORMAT_R16_UNORM";
            case VK_FORMAT_R16_SNORM:
                return "VK_FORMAT_R16_SNORM";
            case VK_FORMAT_R16_USCALED:
                return "VK_FORMAT_R16_USCALED";
            case VK_FORMAT_R16_SSCALED:
                return "VK_FORMAT_R16_SSCALED";
            case VK_FORMAT_R16_UINT:
                return "VK_FORMAT_R16_UINT";
            case VK_FORMAT_R16_SINT:
                return "VK_FORMAT_R16_SINT";
            case VK_FORMAT_R16_SFLOAT:
                return "VK_FORMAT_R16_SFLOAT";
            case VK_FORMAT_R16G16_UNORM:
                return "VK_FORMAT_R16G16_UNORM";
            case VK_FORMAT_R16G16_SNORM:
                return "VK_FORMAT_R16G16_SNORM";
            case VK_FORMAT_R16G16_USCALED:
                return "VK_FORMAT_R16G16_USCALED";
            case VK_FORMAT_R16G16_SSCALED:
                return "VK_FORMAT_R16G16_SSCALED";
            case VK_FORMAT_R16G16_UINT:
                return "VK_FORMAT_R16G16_UINT";
            case VK_FORMAT_R16G16_SINT:
                return "VK_FORMAT_R16G16_SINT";
            case VK_FORMAT_R16G16_SFLOAT:
                return "VK_FORMAT_R16G16_SFLOAT";
            case VK_FORMAT_R16G16B16_UNORM:
                return "VK_FORMAT_R16G16B16_UNORM";
            case VK_FORMAT_R16G16B16_SNORM:
                return "VK_FORMAT_R16G16B16_SNORM";
            case VK_FORMAT_R16G16B16_USCALED:
                return "VK_FORMAT_R16G16B16_USCALED";
            case VK_FORMAT_R16G16B16_SSCALED:
                return "VK_FORMAT_R16G16B16_SSCALED";
            case VK_FORMAT_R16G16B16_UINT:
                return "VK_FORMAT_R16G16B16_UINT";
            case VK_FORMAT_R16G16B16_SINT:
                return "VK_FORMAT_R16G16B16_SINT";
            case VK_FORMAT_R16G16B16_SFLOAT:
                return "VK_FORMAT_R16G16B16_SFLOAT";
            case VK_FORMAT_R16G16B16A16_UNORM:
                return "VK_FORMAT_R16G16B16A16_UNORM";
            case VK_FORMAT_R16G16B16A16_SNORM:
                return "VK_FORMAT_R16G16B16A16_SNORM";
            case VK_FORMAT_R16G16B16A16_USCALED:
                return "VK_FORMAT_R16G16B16A16_USCALED";
            case VK_FORMAT_R16G16B16A16_SSCALED:
                return "VK_FORMAT_R16G16B16A16_SSCALED";
            case VK_FORMAT_R16G16B16A16_UINT:
                return "VK_FORMAT_R16G16B16A16_UINT";
            case VK_FORMAT_R16G16B16A16_SINT:
                return "VK_FORMAT_R16G16B16A16_SINT";
            case VK_FORMAT_R16G16B16A16_SFLOAT:
                return "VK_FORMAT_R16G16B16A16_SFLOAT";
            case VK_FORMAT_R32_UINT:
                return "VK_FORMAT_R32_UINT";
            case VK_FORMAT_R32_SINT:
                return "VK_FORMAT_R32_SINT";
            case VK_FORMAT_R32_SFLOAT:
                return "VK_FORMAT_R32_SFLOAT";
            case VK_FORMAT_R32G32_UINT:
                return "VK_FORMAT_R32G32_UINT";
            case VK_FORMAT_R32G32_SINT:
                return "VK_FORMAT_R32G32_SINT";
            case VK_FORMAT_R32G32_SFLOAT:
                return "VK_FORMAT_R32G32_SFLOAT";
            case VK_FORMAT_R32G32B32_UINT:
                return "VK_FORMAT_R32G32B32_UINT";
            case VK_FORMAT_R32G32B32_SINT:
                return "VK_FORMAT_R32G32B32_SINT";
            case VK_FORMAT_R32G32B32_SFLOAT:
                return "VK_FORMAT_R32G32B32_SFLOAT";
            case VK_FORMAT_R32G32B32A32_UINT:
                return "VK_FORMAT_R32G32B32A32_UINT";
            case VK_FORMAT_R32G32B32A32_SINT:
                return "VK_FORMAT_R32G32B32A32_SINT";
            case VK_FORMAT_R32G32B32A32_SFLOAT:
                return "VK_FORMAT_R32G32B32A32_SFLOAT";
            case VK_FORMAT_R64_UINT:
                return "VK_FORMAT_R64_UINT";
            case VK_FORMAT_R64_SINT:
                return "VK_FORMAT_R64_SINT";
            case VK_FORMAT_R64_SFLOAT:
                return "VK_FORMAT_R64_SFLOAT";
            case VK_FORMAT_R64G64_UINT:
                return "VK_FORMAT_R64G64_UINT";
            case VK_FORMAT_R64G64_SINT:
                return "VK_FORMAT_R64G64_SINT";
            case VK_FORMAT_R64G64_SFLOAT:
                return "VK_FORMAT_R64G64_SFLOAT";
            case VK_FORMAT_R64G64B64_UINT:
                return "VK_FORMAT_R64G64B64_UINT";
            case VK_FORMAT_R64G64B64_SINT:
                return "VK_FORMAT_R64G64B64_SINT";
            case VK_FORMAT_R64G64B64_SFLOAT:
                return "VK_FORMAT_R64G64B64_SFLOAT";
            case VK_FORMAT_R64G64B64A64_UINT:
                return "VK_FORMAT_R64G64B64A64_UINT";
            case VK_FORMAT_R64G64B64A64_SINT:
                return "VK_FORMAT_R64G64B64A64_SINT";
            case VK_FORMAT_R64G64B64A64_SFLOAT:
                return "VK_FORMAT_R64G64B64A64_SFLOAT";
            case VK_FORMAT_B10G11R11_UFLOAT_PACK32:
                return "VK_FORMAT_B10G11R11_UFLOAT_PACK32";
            case VK_FORMAT_E5B9G9R9_UFLOAT_PACK32:
                return "VK_FORMAT_E5B9G9R9_UFLOAT_PACK32";
            case VK_FORMAT_D16_UNORM:
                return "VK_FORMAT_D16_UNORM";
            case VK_FORMAT_X8_D24_UNORM_PACK32:
                return "VK_FORMAT_X8_D24_UNORM_PACK32";
            case VK_FORMAT_D32_SFLOAT:
                return "VK_FORMAT_D32_SFLOAT";
            case VK_FORMAT_S8_UINT:
                return "VK_FORMAT_S8_UINT";
            case VK_FORMAT_D16_UNORM_S8_UINT:
                return "VK_FORMAT_D16_UNORM_S8_UINT";
            case VK_FORMAT_D24_UNORM_S8_UINT:
                return "VK_FORMAT_D24_UNORM_S8_UINT";
            case VK_FORMAT_D32_SFLOAT_S8_UINT:
                return "VK_FORMAT_D32_SFLOAT_S8_UINT";
            case VK_FORMAT_BC1_RGB_UNORM_BLOCK:
                return "VK_FORMAT_BC1_RGB_UNORM_BLOCK";
            case VK_FORMAT_BC1_RGB_SRGB_BLOCK:
                return "VK_FORMAT_BC1_RGB_SRGB_BLOCK";
            case VK_FORMAT_BC1_RGBA_UNORM_BLOCK:
                return "VK_FORMAT_BC1_RGBA_UNORM_BLOCK";
            case VK_FORMAT_BC1_RGBA_SRGB_BLOCK:
                return "VK_FORMAT_BC1_RGBA_SRGB_BLOCK";
            case VK_FORMAT_BC2_UNORM_BLOCK:
                return "VK_FORMAT_BC2_UNORM_BLOCK";
            case VK_FORMAT_BC2_SRGB_BLOCK:
                return "VK_FORMAT_BC2_SRGB_BLOCK";
            case VK_FORMAT_BC3_UNORM_BLOCK:
                return "VK_FORMAT_BC3_UNORM_BLOCK";
            case VK_FORMAT_BC3_SRGB_BLOCK:
                return "VK_FORMAT_BC3_SRGB_BLOCK";
            case VK_FORMAT_BC4_UNORM_BLOCK:
                return "VK_FORMAT_BC4_UNORM_BLOCK";
            case VK_FORMAT_BC4_SNORM_BLOCK:
                return "VK_FORMAT_BC4_SNORM_BLOCK";
            case VK_FORMAT_BC5_UNORM_BLOCK:
                return "VK_FORMAT_BC5_UNORM_BLOCK";
            case VK_FORMAT_BC5_SNORM_BLOCK:
                return "VK_FORMAT_BC5_SNORM_BLOCK";
            case VK_FORMAT_BC6H_UFLOAT_BLOCK:
                return "VK_FORMAT_BC6H_UFLOAT_BLOCK";
            case VK_FORMAT_BC6H_SFLOAT_BLOCK:
                return "VK_FORMAT_BC6H_SFLOAT_BLOCK";
            case VK_FORMAT_BC7_UNORM_BLOCK:
                return "VK_FORMAT_BC7_UNORM_BLOCK";
            case VK_FORMAT_BC7_SRGB_BLOCK:
                return "VK_FORMAT_BC7_SRGB_BLOCK";
            case VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK:
                return "VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK";
            case VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK:
                return "VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK";
            case VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK:
                return "VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK";
            case VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK:
                return "VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK";
            case VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK:
                return "VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK";
            case VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK:
                return "VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK";
            case VK_FORMAT_EAC_R11_UNORM_BLOCK:
                return "VK_FORMAT_EAC_R11_UNORM_BLOCK";
            case VK_FORMAT_EAC_R11_SNORM_BLOCK:
                return "VK_FORMAT_EAC_R11_SNORM_BLOCK";
            case VK_FORMAT_EAC_R11G11_UNORM_BLOCK:
                return "VK_FORMAT_EAC_R11G11_UNORM_BLOCK";
            case VK_FORMAT_EAC_R11G11_SNORM_BLOCK:
                return "VK_FORMAT_EAC_R11G11_SNORM_BLOCK";
            case VK_FORMAT_ASTC_4x4_UNORM_BLOCK:
                return "VK_FORMAT_ASTC_4x4_UNORM_BLOCK";
            case VK_FORMAT_ASTC_4x4_SRGB_BLOCK:
                return "VK_FORMAT_ASTC_4x4_SRGB_BLOCK";
            case VK_FORMAT_ASTC_5x4_UNORM_BLOCK:
                return "VK_FORMAT_ASTC_5x4_UNORM_BLOCK";
            case VK_FORMAT_ASTC_5x4_SRGB_BLOCK:
                return "VK_FORMAT_ASTC_5x4_SRGB_BLOCK";
            case VK_FORMAT_ASTC_5x5_UNORM_BLOCK:
                return "VK_FORMAT_ASTC_5x5_UNORM_BLOCK";
            case VK_FORMAT_ASTC_5x5_SRGB_BLOCK:
                return "VK_FORMAT_ASTC_5x5_SRGB_BLOCK";
            case VK_FORMAT_ASTC_6x5_UNORM_BLOCK:
                return "VK_FORMAT_ASTC_6x5_UNORM_BLOCK";
            case VK_FORMAT_ASTC_6x5_SRGB_BLOCK:
                return "VK_FORMAT_ASTC_6x5_SRGB_BLOCK";
            case VK_FORMAT_ASTC_6x6_UNORM_BLOCK:
                return "VK_FORMAT_ASTC_6x6_UNORM_BLOCK";
            case VK_FORMAT_ASTC_6x6_SRGB_BLOCK:
                return "VK_FORMAT_ASTC_6x6_SRGB_BLOCK";
            case VK_FORMAT_ASTC_8x5_UNORM_BLOCK:
                return "VK_FORMAT_ASTC_8x5_UNORM_BLOCK";
            case VK_FORMAT_ASTC_8x5_SRGB_BLOCK:
                return "VK_FORMAT_ASTC_8x5_SRGB_BLOCK";
            case VK_FORMAT_ASTC_8x6_UNORM_BLOCK:
                return "VK_FORMAT_ASTC_8x6_UNORM_BLOCK";
            case VK_FORMAT_ASTC_8x6_SRGB_BLOCK:
                return "VK_FORMAT_ASTC_8x6_SRGB_BLOCK";
            case VK_FORMAT_ASTC_8x8_UNORM_BLOCK:
                return "VK_FORMAT_ASTC_8x8_UNORM_BLOCK";
            case VK_FORMAT_ASTC_8x8_SRGB_BLOCK:
                return "VK_FORMAT_ASTC_8x8_SRGB_BLOCK";
            case VK_FORMAT_ASTC_10x5_UNORM_BLOCK:
                return "VK_FORMAT_ASTC_10x5_UNORM_BLOCK";
            case VK_FORMAT_ASTC_10x5_SRGB_BLOCK:
                return "VK_FORMAT_ASTC_10x5_SRGB_BLOCK";
            case VK_FORMAT_ASTC_10x6_UNORM_BLOCK:
                return "VK_FORMAT_ASTC_10x6_UNORM_BLOCK";
            case VK_FORMAT_ASTC_10x6_SRGB_BLOCK:
                return "VK_FORMAT_ASTC_10x6_SRGB_BLOCK";
            case VK_FORMAT_ASTC_10x8_UNORM_BLOCK:
                return "VK_FORMAT_ASTC_10x8_UNORM_BLOCK";
            case VK_FORMAT_ASTC_10x8_SRGB_BLOCK:
                return "VK_FORMAT_ASTC_10x8_SRGB_BLOCK";
            case VK_FORMAT_ASTC_10x10_UNORM_BLOCK:
                return "VK_FORMAT_ASTC_10x10_UNORM_BLOCK";
            case VK_FORMAT_ASTC_10x10_SRGB_BLOCK:
                return "VK_FORMAT_ASTC_10x10_SRGB_BLOCK";
            case VK_FORMAT_ASTC_12x10_UNORM_BLOCK:
                return "VK_FORMAT_ASTC_12x10_UNORM_BLOCK";
            case VK_FORMAT_ASTC_12x10_SRGB_BLOCK:
                return "VK_FORMAT_ASTC_12x10_SRGB_BLOCK";
            case VK_FORMAT_ASTC_12x12_UNORM_BLOCK:
                return "VK_FORMAT_ASTC_12x12_UNORM_BLOCK";
            case VK_FORMAT_ASTC_12x12_SRGB_BLOCK:
                return "VK_FORMAT_ASTC_12x12_SRGB_BLOCK";
            case VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG:
                return "VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG";
            case VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG:
                return "VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG";
            case VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG:
                return "VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG";
            case VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG:
                return "VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG";
            case VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG:
                return "VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG";
            case VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG:
                return "VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG";
            case VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG:
                return "VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG";
            case VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG:
                return "VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG";
        default:
            unreachable("Undefined enum value.");
        }
    }

    const char *
    vk_DebugReportObjectTypeEXT_to_str(VkDebugReportObjectTypeEXT input)
    {
        switch(input) {
            case VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT:
                return "VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT";
            case VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT:
                return "VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT";
            case VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT:
                return "VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT";
            case VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT:
                return "VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT";
            case VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT:
                return "VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT";
            case VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT:
                return "VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT";
            case VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT:
                return "VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT";
            case VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT:
                return "VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT";
            case VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT:
                return "VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT";
            case VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT:
                return "VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT";
            case VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT:
                return "VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT";
            case VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT:
                return "VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT";
            case VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT:
                return "VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT";
            case VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT:
                return "VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT";
            case VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT:
                return "VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT";
            case VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT:
                return "VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT";
            case VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT:
                return "VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT";
            case VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT:
                return "VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT";
            case VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT:
                return "VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT";
            case VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT:
                return "VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT";
            case VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT:
                return "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT";
            case VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT:
                return "VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT";
            case VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT:
                return "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT";
            case VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT:
                return "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT";
            case VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT:
                return "VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT";
            case VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT:
                return "VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT";
            case VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT:
                return "VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT";
            case VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT:
                return "VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT";
            case VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT:
                return "VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT";
            case VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT:
                return "VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT";
            case VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT:
                return "VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT";
            case VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT:
                return "VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT";
            case VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT:
                return "VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT";
            case VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT:
                return "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT";
        default:
            unreachable("Undefined enum value.");
        }
    }

    const char *
    vk_SubpassContents_to_str(VkSubpassContents input)
    {
        switch(input) {
            case VK_SUBPASS_CONTENTS_INLINE:
                return "VK_SUBPASS_CONTENTS_INLINE";
            case VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS:
                return "VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS";
        default:
            unreachable("Undefined enum value.");
        }
    }

    const char *
    vk_DisplayEventTypeEXT_to_str(VkDisplayEventTypeEXT input)
    {
        switch(input) {
            case VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT:
                return "VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT";
        default:
            unreachable("Undefined enum value.");
        }
    }

    const char *
    vk_DeviceEventTypeEXT_to_str(VkDeviceEventTypeEXT input)
    {
        switch(input) {
            case VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT:
                return "VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT";
        default:
            unreachable("Undefined enum value.");
        }
    }

    const char *
    vk_RasterizationOrderAMD_to_str(VkRasterizationOrderAMD input)
    {
        switch(input) {
            case VK_RASTERIZATION_ORDER_STRICT_AMD:
                return "VK_RASTERIZATION_ORDER_STRICT_AMD";
            case VK_RASTERIZATION_ORDER_RELAXED_AMD:
                return "VK_RASTERIZATION_ORDER_RELAXED_AMD";
        default:
            unreachable("Undefined enum value.");
        }
    }

    const char *
    vk_InternalAllocationType_to_str(VkInternalAllocationType input)
    {
        switch(input) {
            case VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE:
                return "VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE";
        default:
            unreachable("Undefined enum value.");
        }
    }

    const char *
    vk_SamplerMipmapMode_to_str(VkSamplerMipmapMode input)
    {
        switch(input) {
            case VK_SAMPLER_MIPMAP_MODE_NEAREST:
                return "VK_SAMPLER_MIPMAP_MODE_NEAREST";
            case VK_SAMPLER_MIPMAP_MODE_LINEAR:
                return "VK_SAMPLER_MIPMAP_MODE_LINEAR";
        default:
            unreachable("Undefined enum value.");
        }
    }

    const char *
    vk_ColorSpaceKHR_to_str(VkColorSpaceKHR input)
    {
        switch(input) {
            case VK_COLOR_SPACE_SRGB_NONLINEAR_KHR:
                return "VK_COLOR_SPACE_SRGB_NONLINEAR_KHR";
            case VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT:
                return "VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT";
            case VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT:
                return "VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT";
            case VK_COLOR_SPACE_DCI_P3_LINEAR_EXT:
                return "VK_COLOR_SPACE_DCI_P3_LINEAR_EXT";
            case VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT:
                return "VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT";
            case VK_COLOR_SPACE_BT709_LINEAR_EXT:
                return "VK_COLOR_SPACE_BT709_LINEAR_EXT";
            case VK_COLOR_SPACE_BT709_NONLINEAR_EXT:
                return "VK_COLOR_SPACE_BT709_NONLINEAR_EXT";
            case VK_COLOR_SPACE_BT2020_LINEAR_EXT:
                return "VK_COLOR_SPACE_BT2020_LINEAR_EXT";
            case VK_COLOR_SPACE_HDR10_ST2084_EXT:
                return "VK_COLOR_SPACE_HDR10_ST2084_EXT";
            case VK_COLOR_SPACE_DOLBYVISION_EXT:
                return "VK_COLOR_SPACE_DOLBYVISION_EXT";
            case VK_COLOR_SPACE_HDR10_HLG_EXT:
                return "VK_COLOR_SPACE_HDR10_HLG_EXT";
            case VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT:
                return "VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT";
            case VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT:
                return "VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT";
            case VK_COLOR_SPACE_PASS_THROUGH_EXT:
                return "VK_COLOR_SPACE_PASS_THROUGH_EXT";
        default:
            unreachable("Undefined enum value.");
        }
    }

    const char *
    vk_DescriptorUpdateTemplateTypeKHR_to_str(VkDescriptorUpdateTemplateTypeKHR input)
    {
        switch(input) {
            case VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR:
                return "VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR";
            case VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR:
                return "VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR";
        default:
            unreachable("Undefined enum value.");
        }
    }

    const char *
    vk_SamplerAddressMode_to_str(VkSamplerAddressMode input)
    {
        switch(input) {
            case VK_SAMPLER_ADDRESS_MODE_REPEAT:
                return "VK_SAMPLER_ADDRESS_MODE_REPEAT";
            case VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT:
                return "VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT";
            case VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE:
                return "VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE";
            case VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER:
                return "VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER";
        default:
            unreachable("Undefined enum value.");
        }
    }

    const char *
    vk_ComponentSwizzle_to_str(VkComponentSwizzle input)
    {
        switch(input) {
            case VK_COMPONENT_SWIZZLE_IDENTITY:
                return "VK_COMPONENT_SWIZZLE_IDENTITY";
            case VK_COMPONENT_SWIZZLE_ZERO:
                return "VK_COMPONENT_SWIZZLE_ZERO";
            case VK_COMPONENT_SWIZZLE_ONE:
                return "VK_COMPONENT_SWIZZLE_ONE";
            case VK_COMPONENT_SWIZZLE_R:
                return "VK_COMPONENT_SWIZZLE_R";
            case VK_COMPONENT_SWIZZLE_G:
                return "VK_COMPONENT_SWIZZLE_G";
            case VK_COMPONENT_SWIZZLE_B:
                return "VK_COMPONENT_SWIZZLE_B";
            case VK_COMPONENT_SWIZZLE_A:
                return "VK_COMPONENT_SWIZZLE_A";
        default:
            unreachable("Undefined enum value.");
        }
    }

    const char *
    vk_PipelineBindPoint_to_str(VkPipelineBindPoint input)
    {
        switch(input) {
            case VK_PIPELINE_BIND_POINT_GRAPHICS:
                return "VK_PIPELINE_BIND_POINT_GRAPHICS";
            case VK_PIPELINE_BIND_POINT_COMPUTE:
                return "VK_PIPELINE_BIND_POINT_COMPUTE";
        default:
            unreachable("Undefined enum value.");
        }
    }

    const char *
    vk_LogicOp_to_str(VkLogicOp input)
    {
        switch(input) {
            case VK_LOGIC_OP_CLEAR:
                return "VK_LOGIC_OP_CLEAR";
            case VK_LOGIC_OP_AND:
                return "VK_LOGIC_OP_AND";
            case VK_LOGIC_OP_AND_REVERSE:
                return "VK_LOGIC_OP_AND_REVERSE";
            case VK_LOGIC_OP_COPY:
                return "VK_LOGIC_OP_COPY";
            case VK_LOGIC_OP_AND_INVERTED:
                return "VK_LOGIC_OP_AND_INVERTED";
            case VK_LOGIC_OP_NO_OP:
                return "VK_LOGIC_OP_NO_OP";
            case VK_LOGIC_OP_XOR:
                return "VK_LOGIC_OP_XOR";
            case VK_LOGIC_OP_OR:
                return "VK_LOGIC_OP_OR";
            case VK_LOGIC_OP_NOR:
                return "VK_LOGIC_OP_NOR";
            case VK_LOGIC_OP_EQUIVALENT:
                return "VK_LOGIC_OP_EQUIVALENT";
            case VK_LOGIC_OP_INVERT:
                return "VK_LOGIC_OP_INVERT";
            case VK_LOGIC_OP_OR_REVERSE:
                return "VK_LOGIC_OP_OR_REVERSE";
            case VK_LOGIC_OP_COPY_INVERTED:
                return "VK_LOGIC_OP_COPY_INVERTED";
            case VK_LOGIC_OP_OR_INVERTED:
                return "VK_LOGIC_OP_OR_INVERTED";
            case VK_LOGIC_OP_NAND:
                return "VK_LOGIC_OP_NAND";
            case VK_LOGIC_OP_SET:
                return "VK_LOGIC_OP_SET";
        default:
            unreachable("Undefined enum value.");
        }
    }

    const char *
    vk_PresentModeKHR_to_str(VkPresentModeKHR input)
    {
        switch(input) {
            case VK_PRESENT_MODE_IMMEDIATE_KHR:
                return "VK_PRESENT_MODE_IMMEDIATE_KHR";
            case VK_PRESENT_MODE_MAILBOX_KHR:
                return "VK_PRESENT_MODE_MAILBOX_KHR";
            case VK_PRESENT_MODE_FIFO_KHR:
                return "VK_PRESENT_MODE_FIFO_KHR";
            case VK_PRESENT_MODE_FIFO_RELAXED_KHR:
                return "VK_PRESENT_MODE_FIFO_RELAXED_KHR";
        default:
            unreachable("Undefined enum value.");
        }
    }

    const char *
    vk_PhysicalDeviceType_to_str(VkPhysicalDeviceType input)
    {
        switch(input) {
            case VK_PHYSICAL_DEVICE_TYPE_OTHER:
                return "VK_PHYSICAL_DEVICE_TYPE_OTHER";
            case VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU:
                return "VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU";
            case VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU:
                return "VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU";
            case VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU:
                return "VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU";
            case VK_PHYSICAL_DEVICE_TYPE_CPU:
                return "VK_PHYSICAL_DEVICE_TYPE_CPU";
        default:
            unreachable("Undefined enum value.");
        }
    }

    const char *
    vk_AttachmentStoreOp_to_str(VkAttachmentStoreOp input)
    {
        switch(input) {
            case VK_ATTACHMENT_STORE_OP_STORE:
                return "VK_ATTACHMENT_STORE_OP_STORE";
            case VK_ATTACHMENT_STORE_OP_DONT_CARE:
                return "VK_ATTACHMENT_STORE_OP_DONT_CARE";
        default:
            unreachable("Undefined enum value.");
        }
    }

    const char *
    vk_PrimitiveTopology_to_str(VkPrimitiveTopology input)
    {
        switch(input) {
            case VK_PRIMITIVE_TOPOLOGY_POINT_LIST:
                return "VK_PRIMITIVE_TOPOLOGY_POINT_LIST";
            case VK_PRIMITIVE_TOPOLOGY_LINE_LIST:
                return "VK_PRIMITIVE_TOPOLOGY_LINE_LIST";
            case VK_PRIMITIVE_TOPOLOGY_LINE_STRIP:
                return "VK_PRIMITIVE_TOPOLOGY_LINE_STRIP";
            case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST:
                return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST";
            case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP:
                return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP";
            case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN:
                return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN";
            case VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY:
                return "VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY";
            case VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY:
                return "VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY";
            case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY:
                return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY";
            case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY:
                return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY";
            case VK_PRIMITIVE_TOPOLOGY_PATCH_LIST:
                return "VK_PRIMITIVE_TOPOLOGY_PATCH_LIST";
        default:
            unreachable("Undefined enum value.");
        }
    }

    const char *
    vk_SystemAllocationScope_to_str(VkSystemAllocationScope input)
    {
        switch(input) {
            case VK_SYSTEM_ALLOCATION_SCOPE_COMMAND:
                return "VK_SYSTEM_ALLOCATION_SCOPE_COMMAND";
            case VK_SYSTEM_ALLOCATION_SCOPE_OBJECT:
                return "VK_SYSTEM_ALLOCATION_SCOPE_OBJECT";
            case VK_SYSTEM_ALLOCATION_SCOPE_CACHE:
                return "VK_SYSTEM_ALLOCATION_SCOPE_CACHE";
            case VK_SYSTEM_ALLOCATION_SCOPE_DEVICE:
                return "VK_SYSTEM_ALLOCATION_SCOPE_DEVICE";
            case VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE:
                return "VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE";
        default:
            unreachable("Undefined enum value.");
        }
    }

    const char *
    vk_IndexType_to_str(VkIndexType input)
    {
        switch(input) {
            case VK_INDEX_TYPE_UINT16:
                return "VK_INDEX_TYPE_UINT16";
            case VK_INDEX_TYPE_UINT32:
                return "VK_INDEX_TYPE_UINT32";
        default:
            unreachable("Undefined enum value.");
        }
    }

    const char *
    vk_DynamicState_to_str(VkDynamicState input)
    {
        switch(input) {
            case VK_DYNAMIC_STATE_VIEWPORT:
                return "VK_DYNAMIC_STATE_VIEWPORT";
            case VK_DYNAMIC_STATE_SCISSOR:
                return "VK_DYNAMIC_STATE_SCISSOR";
            case VK_DYNAMIC_STATE_LINE_WIDTH:
                return "VK_DYNAMIC_STATE_LINE_WIDTH";
            case VK_DYNAMIC_STATE_DEPTH_BIAS:
                return "VK_DYNAMIC_STATE_DEPTH_BIAS";
            case VK_DYNAMIC_STATE_BLEND_CONSTANTS:
                return "VK_DYNAMIC_STATE_BLEND_CONSTANTS";
            case VK_DYNAMIC_STATE_DEPTH_BOUNDS:
                return "VK_DYNAMIC_STATE_DEPTH_BOUNDS";
            case VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK:
                return "VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK";
            case VK_DYNAMIC_STATE_STENCIL_WRITE_MASK:
                return "VK_DYNAMIC_STATE_STENCIL_WRITE_MASK";
            case VK_DYNAMIC_STATE_STENCIL_REFERENCE:
                return "VK_DYNAMIC_STATE_STENCIL_REFERENCE";
            case VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV:
                return "VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV";
            case VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT:
                return "VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT";
        default:
            unreachable("Undefined enum value.");
        }
    }

    const char *
    vk_DebugReportErrorEXT_to_str(VkDebugReportErrorEXT input)
    {
        switch(input) {
            case VK_DEBUG_REPORT_ERROR_NONE_EXT:
                return "VK_DEBUG_REPORT_ERROR_NONE_EXT";
            case VK_DEBUG_REPORT_ERROR_CALLBACK_REF_EXT:
                return "VK_DEBUG_REPORT_ERROR_CALLBACK_REF_EXT";
        default:
            unreachable("Undefined enum value.");
        }
    }

    const char *
    vk_ImageViewType_to_str(VkImageViewType input)
    {
        switch(input) {
            case VK_IMAGE_VIEW_TYPE_1D:
                return "VK_IMAGE_VIEW_TYPE_1D";
            case VK_IMAGE_VIEW_TYPE_2D:
                return "VK_IMAGE_VIEW_TYPE_2D";
            case VK_IMAGE_VIEW_TYPE_3D:
                return "VK_IMAGE_VIEW_TYPE_3D";
            case VK_IMAGE_VIEW_TYPE_CUBE:
                return "VK_IMAGE_VIEW_TYPE_CUBE";
            case VK_IMAGE_VIEW_TYPE_1D_ARRAY:
                return "VK_IMAGE_VIEW_TYPE_1D_ARRAY";
            case VK_IMAGE_VIEW_TYPE_2D_ARRAY:
                return "VK_IMAGE_VIEW_TYPE_2D_ARRAY";
            case VK_IMAGE_VIEW_TYPE_CUBE_ARRAY:
                return "VK_IMAGE_VIEW_TYPE_CUBE_ARRAY";
        default:
            unreachable("Undefined enum value.");
        }
    }

    const char *
    vk_DisplayPowerStateEXT_to_str(VkDisplayPowerStateEXT input)
    {
        switch(input) {
            case VK_DISPLAY_POWER_STATE_OFF_EXT:
                return "VK_DISPLAY_POWER_STATE_OFF_EXT";
            case VK_DISPLAY_POWER_STATE_SUSPEND_EXT:
                return "VK_DISPLAY_POWER_STATE_SUSPEND_EXT";
            case VK_DISPLAY_POWER_STATE_ON_EXT:
                return "VK_DISPLAY_POWER_STATE_ON_EXT";
        default:
            unreachable("Undefined enum value.");
        }
    }

    const char *
    vk_CompareOp_to_str(VkCompareOp input)
    {
        switch(input) {
            case VK_COMPARE_OP_NEVER:
                return "VK_COMPARE_OP_NEVER";
            case VK_COMPARE_OP_LESS:
                return "VK_COMPARE_OP_LESS";
            case VK_COMPARE_OP_EQUAL:
                return "VK_COMPARE_OP_EQUAL";
            case VK_COMPARE_OP_LESS_OR_EQUAL:
                return "VK_COMPARE_OP_LESS_OR_EQUAL";
            case VK_COMPARE_OP_GREATER:
                return "VK_COMPARE_OP_GREATER";
            case VK_COMPARE_OP_NOT_EQUAL:
                return "VK_COMPARE_OP_NOT_EQUAL";
            case VK_COMPARE_OP_GREATER_OR_EQUAL:
                return "VK_COMPARE_OP_GREATER_OR_EQUAL";
            case VK_COMPARE_OP_ALWAYS:
                return "VK_COMPARE_OP_ALWAYS";
        default:
            unreachable("Undefined enum value.");
        }
    }
