/* $info$ tags: thunklibs|Vulkan $end_info$ */ #define VK_USE_64_BIT_PTR_DEFINES 0 #define VK_USE_PLATFORM_XLIB_XRANDR_EXT #define VK_USE_PLATFORM_XLIB_KHR #define VK_USE_PLATFORM_XCB_KHR #define VK_USE_PLATFORM_WAYLAND_KHR #include #include "common/Host.h" #include #include #include #include #include #include #include #ifdef IS_32BIT_THUNK // Union type embedded in VkDescriptorGetInfoEXT template<> struct guest_layout { char union_storage[8]; }; #endif #include "thunkgen_host_libvulkan.inl" #include static bool SetupInstance {}; static std::mutex SetupMutex {}; #define LDR_PTR(fn) fexldr_ptr_libvulkan_##fn static void DoSetupWithInstance(VkInstance instance) { std::unique_lock lk {SetupMutex}; // Needed since the Guest-endpoint calls without a function pointer // TODO: Support use of multiple instances (void*&)LDR_PTR(vkGetDeviceProcAddr) = (void*)LDR_PTR(vkGetInstanceProcAddr)(instance, "vkGetDeviceProcAddr"); if (LDR_PTR(vkGetDeviceProcAddr) == nullptr) { std::abort(); } // Query pointers for non-EXT functions customized below (void*&)LDR_PTR(vkCreateDevice) = (void*)LDR_PTR(vkGetInstanceProcAddr)(instance, "vkCreateDevice"); // Only do this lookup once. // NOTE: If vkGetInstanceProcAddr was called with a null instance, only a few function pointers will be filled with non-null values, so we do repeat the lookup in that case if (instance) { SetupInstance = true; } } #define FEXFN_IMPL(fn) fexfn_impl_libvulkan_##fn static X11Manager x11_manager; static void fexfn_impl_libvulkan_Vulkan_SetGuestXGetVisualInfo(uintptr_t GuestTarget, uintptr_t GuestUnpacker) { MakeHostTrampolineForGuestFunctionAt(GuestTarget, GuestUnpacker, &x11_manager.GuestXGetVisualInfo); } static void fexfn_impl_libvulkan_Vulkan_SetGuestXSync(uintptr_t GuestTarget, uintptr_t GuestUnpacker) { MakeHostTrampolineForGuestFunctionAt(GuestTarget, GuestUnpacker, &x11_manager.GuestXSync); } static void fexfn_impl_libvulkan_Vulkan_SetGuestXDisplayString(uintptr_t GuestTarget, uintptr_t GuestUnpacker) { MakeHostTrampolineForGuestFunctionAt(GuestTarget, GuestUnpacker, &x11_manager.GuestXDisplayString); } void fex_custom_repack_entry(host_layout& to, const guest_layout& from) { // TODO: xcb_aux_sync? to.data.connection = x11_manager.GuestToHostConnection(const_cast(from.data.connection.force_get_host_pointer())); } bool fex_custom_repack_exit(guest_layout&, const host_layout&) { // TODO: xcb_sync? return false; } void fex_custom_repack_entry(host_layout& to, const guest_layout& from) { to.data.dpy = x11_manager.GuestToHostDisplay(const_cast(from.data.dpy.force_get_host_pointer())); } bool fex_custom_repack_exit(guest_layout&, const host_layout& from) { x11_manager.HostXFlush(from.data.dpy); return false; } static VkResult fexfn_impl_libvulkan_vkAcquireXlibDisplayEXT(VkPhysicalDevice a_0, guest_layout a_1, VkDisplayKHR a_2) { auto host_display = x11_manager.GuestToHostDisplay(a_1.force_get_host_pointer()); auto ret = fexldr_ptr_libvulkan_vkAcquireXlibDisplayEXT(a_0, host_display, a_2); x11_manager.HostXFlush(host_display); return ret; } static VkResult fexfn_impl_libvulkan_vkGetRandROutputDisplayEXT(VkPhysicalDevice a_0, guest_layout a_1, RROutput a_2, VkDisplayKHR* a_3) { auto host_display = x11_manager.GuestToHostDisplay(a_1.force_get_host_pointer()); auto ret = fexldr_ptr_libvulkan_vkGetRandROutputDisplayEXT(a_0, host_display, a_2, a_3); x11_manager.HostXFlush(host_display); return ret; } static VkBool32 fexfn_impl_libvulkan_vkGetPhysicalDeviceXcbPresentationSupportKHR(VkPhysicalDevice a_0, uint32_t a_1, guest_layout a_2, xcb_visualid_t a_3) { auto host_connection = x11_manager.GuestToHostConnection(a_2.force_get_host_pointer()); return fexldr_ptr_libvulkan_vkGetPhysicalDeviceXcbPresentationSupportKHR(a_0, a_1, host_connection, a_3); } static VkBool32 fexfn_impl_libvulkan_vkGetPhysicalDeviceXlibPresentationSupportKHR(VkPhysicalDevice a_0, uint32_t a_1, guest_layout a_2, VisualID a_3) { auto host_display = x11_manager.GuestToHostDisplay(a_2.force_get_host_pointer()); auto ret = fexldr_ptr_libvulkan_vkGetPhysicalDeviceXlibPresentationSupportKHR(a_0, a_1, host_display, a_3); x11_manager.HostXFlush(host_display); return ret; } // Functions with callbacks are overridden to ignore the guest-side callbacks static VkResult FEXFN_IMPL(vkCreateShaderModule)(VkDevice a_0, const VkShaderModuleCreateInfo* a_1, const VkAllocationCallbacks* a_2, VkShaderModule* a_3) { (void*&)LDR_PTR(vkCreateShaderModule) = (void*)LDR_PTR(vkGetDeviceProcAddr)(a_0, "vkCreateShaderModule"); return LDR_PTR(vkCreateShaderModule)(a_0, a_1, nullptr, a_3); } static VkBool32 DummyVkDebugReportCallback(VkDebugReportFlagsEXT, VkDebugReportObjectTypeEXT, uint64_t, size_t, int32_t, const char*, const char*, void*) { return VK_FALSE; } static VkResult FEXFN_IMPL(vkCreateInstance)(const VkInstanceCreateInfo* a_0, const VkAllocationCallbacks* a_1, guest_layout a_2) { const VkInstanceCreateInfo* vk_struct_base = a_0; for (const VkBaseInStructure* vk_struct = reinterpret_cast(vk_struct_base); vk_struct->pNext; vk_struct = vk_struct->pNext) { // Override guest callbacks used for VK_EXT_debug_report if (reinterpret_cast(vk_struct->pNext)->sType == VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT) { // Overwrite the pNext pointer, ignoring its const-qualifier const_cast(vk_struct)->pNext = vk_struct->pNext->pNext; // If we copied over a nullptr for pNext then early exit if (!vk_struct->pNext) { break; } } } VkInstance out; auto ret = LDR_PTR(vkCreateInstance)(vk_struct_base, nullptr, &out); *a_2.get_pointer() = to_guest(to_host_layout(out)); return ret; } static VkResult FEXFN_IMPL(vkCreateDevice)(VkPhysicalDevice a_0, const VkDeviceCreateInfo* a_1, const VkAllocationCallbacks* a_2, guest_layout a_3) { VkDevice out; auto ret = LDR_PTR(vkCreateDevice)(a_0, a_1, nullptr, &out); *a_3.get_pointer() = to_guest(to_host_layout(out)); // Reload device-specific function pointers used in custom implementations. // This is only done in advance for functions that don't take a VkDevice // argument. Since this breaks multi-device scenarios, other functions reload // the function pointer on-demand. // NOTE: Running KHR-GLES31.core.compute_shader.simple-compute-shared_context with zink may trigger related issues // TODO: Support multi-device scenarios everywhere #ifdef IS_32BIT_THUNK fexldr_ptr_libvulkan_vkCmdSetVertexInputEXT = (PFN_vkCmdSetVertexInputEXT)fexldr_ptr_libvulkan_vkGetDeviceProcAddr(out, "vkCmdSetVertexIn" "putEXT"); fexldr_ptr_libvulkan_vkQueueSubmit = (PFN_vkQueueSubmit)fexldr_ptr_libvulkan_vkGetDeviceProcAddr(out, "vkQueueSubmit"); #else // No functions affected on 64-bit #endif return ret; } static VkResult FEXFN_IMPL(vkAllocateMemory)(VkDevice a_0, const VkMemoryAllocateInfo* a_1, const VkAllocationCallbacks* a_2, VkDeviceMemory* a_3) { (void*&)LDR_PTR(vkAllocateMemory) = (void*)LDR_PTR(vkGetDeviceProcAddr)(a_0, "vkAllocateMemory"); return LDR_PTR(vkAllocateMemory)(a_0, a_1, nullptr, a_3); } static void FEXFN_IMPL(vkFreeMemory)(VkDevice a_0, VkDeviceMemory a_1, const VkAllocationCallbacks* a_2) { (void*&)LDR_PTR(vkFreeMemory) = (void*)LDR_PTR(vkGetDeviceProcAddr)(a_0, "vkFreeMemory"); LDR_PTR(vkFreeMemory)(a_0, a_1, nullptr); } static VkResult FEXFN_IMPL(vkCreateDebugReportCallbackEXT)(VkInstance a_0, guest_layout a_1, const VkAllocationCallbacks* a_2, VkDebugReportCallbackEXT* a_3) { auto overridden_callback = host_layout {*a_1.get_pointer()}.data; overridden_callback.pfnCallback = DummyVkDebugReportCallback; (void*&)LDR_PTR(vkCreateDebugReportCallbackEXT) = (void*)LDR_PTR(vkGetInstanceProcAddr)(a_0, "vkCreateDebugReportCallbackEXT"); return LDR_PTR(vkCreateDebugReportCallbackEXT)(a_0, &overridden_callback, nullptr, a_3); } static void FEXFN_IMPL(vkDestroyDebugReportCallbackEXT)(VkInstance a_0, VkDebugReportCallbackEXT a_1, const VkAllocationCallbacks* a_2) { (void*&)LDR_PTR(vkDestroyDebugReportCallbackEXT) = (void*)LDR_PTR(vkGetInstanceProcAddr)(a_0, "vkDestroyDebugReportCallbackEXT"); LDR_PTR(vkDestroyDebugReportCallbackEXT)(a_0, a_1, nullptr); } extern "C" VkBool32 DummyVkDebugUtilsMessengerCallback(VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, const VkDebugUtilsMessengerCallbackDataEXT*, void*) { return VK_FALSE; } static VkResult FEXFN_IMPL(vkCreateDebugUtilsMessengerEXT)(VkInstance_T* a_0, guest_layout a_1, const VkAllocationCallbacks* a_2, VkDebugUtilsMessengerEXT* a_3) { auto overridden_callback = host_layout {*a_1.get_pointer()}.data; overridden_callback.pfnUserCallback = DummyVkDebugUtilsMessengerCallback; (void*&)LDR_PTR(vkCreateDebugUtilsMessengerEXT) = (void*)LDR_PTR(vkGetInstanceProcAddr)(a_0, "vkCreateDebugUtilsMessengerEXT"); return LDR_PTR(vkCreateDebugUtilsMessengerEXT)(a_0, &overridden_callback, nullptr, a_3); } #ifdef IS_32BIT_THUNK VkResult fexfn_impl_libvulkan_vkEnumeratePhysicalDevices(VkInstance instance, uint32_t* count, guest_layout devices) { if (!devices.get_pointer()) { return fexldr_ptr_libvulkan_vkEnumeratePhysicalDevices(instance, count, nullptr); } auto input_count = *count; std::vector out(input_count); auto ret = fexldr_ptr_libvulkan_vkEnumeratePhysicalDevices(instance, count, out.data()); for (size_t i = 0; i < std::min(input_count, *count); ++i) { devices.get_pointer()[i] = to_guest(to_host_layout(out[i])); } return ret; } void fexfn_impl_libvulkan_vkGetDeviceQueue(VkDevice device, uint32_t family_index, uint32_t queue_index, guest_layout queue) { VkQueue out; (void*&)fexldr_ptr_libvulkan_vkGetDeviceQueue = (void*)LDR_PTR(vkGetDeviceProcAddr)(device, "vkGetDeviceQueue"); fexldr_ptr_libvulkan_vkGetDeviceQueue(device, family_index, queue_index, &out); *queue.get_pointer() = to_guest(to_host_layout(out)); } VkResult fexfn_impl_libvulkan_vkAllocateCommandBuffers(VkDevice device, const VkCommandBufferAllocateInfo* info, guest_layout buffers) { std::vector out(info->commandBufferCount); (void*&)fexldr_ptr_libvulkan_vkAllocateCommandBuffers = (void*)LDR_PTR(vkGetDeviceProcAddr)(device, "vkAllocateCommandBuffers"); auto ret = fexldr_ptr_libvulkan_vkAllocateCommandBuffers(device, info, out.data()); if (ret == VK_SUCCESS) { for (size_t i = 0; i < info->commandBufferCount; ++i) { buffers.get_pointer()[i] = to_guest(to_host_layout(out[i])); } } return ret; } VkResult fexfn_impl_libvulkan_vkMapMemory(VkDevice device, VkDeviceMemory memory, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, guest_layout data) { host_layout host_data {}; void* mapped; (void*&)fexldr_ptr_libvulkan_vkMapMemory = (void*)LDR_PTR(vkGetDeviceProcAddr)(device, "vkMapMemory"); auto ret = fexldr_ptr_libvulkan_vkMapMemory(device, memory, offset, size, flags, &mapped); if (ret == VK_SUCCESS) { host_data.data = mapped; *data.get_pointer() = to_guest(host_data); } return ret; } // Allocates storage on the heap that must be de-allocated using delete[] or DeleteRepackedStructArray template std::span> RepackStructArray(uint32_t Count, const guest_layout GuestData) { if (!GuestData.get_pointer() || Count == 0) { return {}; } auto HostData = new std::remove_cv_t[Count]; for (size_t i = 0; i < Count; ++i) { auto& GuestElement = (const guest_layout>&)GuestData.get_pointer()[i]; auto Element = host_layout> {GuestElement}; if constexpr (NeedsRepack) { fex_apply_custom_repacking_entry(Element, GuestElement); } HostData[i] = Element.data; } return {HostData, Count}; } template void DeleteRepackedStructArray(uint32_t Count, T* HostData, guest_layout& GuestData) { for (uint32_t i = 0; i < Count; ++i) { fex_apply_custom_repacking_exit(GuestData.get_pointer()[i], to_host_layout(HostData[i])); } delete[] HostData; } void fexfn_impl_libvulkan_vkCmdSetVertexInputEXT( VkCommandBuffer Buffer, uint32_t BindingDescCount, guest_layout GuestBindingDescs, uint32_t AttributeDescCount, guest_layout GuestAttributeDescs) { assert(GuestBindingDescs.get_pointer() && BindingDescCount > 0); assert(GuestAttributeDescs.get_pointer() && AttributeDescCount > 0); auto BindingDescs = RepackStructArray(BindingDescCount, GuestBindingDescs); auto AttributeDescs = RepackStructArray(AttributeDescCount, GuestAttributeDescs); fexldr_ptr_libvulkan_vkCmdSetVertexInputEXT(Buffer, BindingDescCount, BindingDescs.data(), AttributeDescCount, AttributeDescs.data()); delete[] AttributeDescs.data(); delete[] BindingDescs.data(); } void fexfn_impl_libvulkan_vkUpdateDescriptorSets(VkDevice device, unsigned int descriptorWriteCount, guest_layout pDescriptorWrites, unsigned int descriptorCopyCount, guest_layout pDescriptorCopies) { auto HostDescriptorWrites = RepackStructArray(descriptorWriteCount, pDescriptorWrites); auto HostDescriptorCopies = RepackStructArray(descriptorCopyCount, pDescriptorCopies); (void*&)fexldr_ptr_libvulkan_vkUpdateDescriptorSets = (void*)LDR_PTR(vkGetDeviceProcAddr)(device, "vkUpdateDescriptorSets"); fexldr_ptr_libvulkan_vkUpdateDescriptorSets(device, descriptorWriteCount, HostDescriptorWrites.data(), descriptorCopyCount, HostDescriptorCopies.data()); delete[] HostDescriptorCopies.data(); delete[] HostDescriptorWrites.data(); } VkResult fexfn_impl_libvulkan_vkQueueSubmit(VkQueue queue, uint32_t submit_count, guest_layout submit_infos, VkFence fence) { auto HostSubmitInfos = RepackStructArray(submit_count, submit_infos); auto ret = fexldr_ptr_libvulkan_vkQueueSubmit(queue, submit_count, HostSubmitInfos.data(), fence); delete[] HostSubmitInfos.data(); return ret; } void fexfn_impl_libvulkan_vkFreeCommandBuffers(VkDevice device, VkCommandPool pool, uint32_t num_buffers, guest_layout buffers) { auto HostBuffers = RepackStructArray(num_buffers, buffers); (void*&)fexldr_ptr_libvulkan_vkFreeCommandBuffers = (void*)LDR_PTR(vkGetDeviceProcAddr)(device, "vkFreeCommandBuffers"); fexldr_ptr_libvulkan_vkFreeCommandBuffers(device, pool, num_buffers, HostBuffers.data()); delete[] HostBuffers.data(); } VkResult fexfn_impl_libvulkan_vkGetPipelineCacheData(VkDevice device, VkPipelineCache cache, guest_layout guest_data_size, void* data) { size_t data_size = guest_data_size.get_pointer()->data; (void*&)fexldr_ptr_libvulkan_vkGetPipelineCacheData = (void*)LDR_PTR(vkGetDeviceProcAddr)(device, "vkGetPipelineCacheData"); auto ret = fexldr_ptr_libvulkan_vkGetPipelineCacheData(device, cache, &data_size, data); *guest_data_size.get_pointer() = data_size; return ret; } #endif static PFN_vkVoidFunction LookupCustomVulkanFunction(const char* a_1) { using namespace std::string_view_literals; if (a_1 == "vkCreateShaderModule"sv) { return (PFN_vkVoidFunction)fexfn_impl_libvulkan_vkCreateShaderModule; } else if (a_1 == "vkCreateInstance"sv) { return (PFN_vkVoidFunction)fexfn_impl_libvulkan_vkCreateInstance; } else if (a_1 == "vkCreateDevice"sv) { return (PFN_vkVoidFunction)fexfn_impl_libvulkan_vkCreateDevice; } else if (a_1 == "vkAllocateMemory"sv) { return (PFN_vkVoidFunction)fexfn_impl_libvulkan_vkAllocateMemory; } else if (a_1 == "vkFreeMemory"sv) { return (PFN_vkVoidFunction)fexfn_impl_libvulkan_vkFreeMemory; } else if (a_1 == "vkAcquireXlibDisplayEXT"sv) { return (PFN_vkVoidFunction)fexfn_impl_libvulkan_vkAcquireXlibDisplayEXT; } else if (a_1 == "vkGetRandROutputDisplayEXT"sv) { return (PFN_vkVoidFunction)fexfn_impl_libvulkan_vkGetRandROutputDisplayEXT; } else if (a_1 == "vkGetPhysicalDeviceXcbPresentationSupportKHR"sv) { return (PFN_vkVoidFunction)fexfn_impl_libvulkan_vkGetPhysicalDeviceXcbPresentationSupportKHR; } else if (a_1 == "vkGetPhysicalDeviceXlibPresentationSupportKHR"sv) { return (PFN_vkVoidFunction)fexfn_impl_libvulkan_vkGetPhysicalDeviceXlibPresentationSupportKHR; #ifdef IS_32BIT_THUNK } else if (a_1 == "vkAllocateCommandBuffers"sv) { return (PFN_vkVoidFunction)fexfn_impl_libvulkan_vkAllocateCommandBuffers; } else if (a_1 == "vkEnumeratePhysicalDevices"sv) { return (PFN_vkVoidFunction)fexfn_impl_libvulkan_vkEnumeratePhysicalDevices; } else if (a_1 == "vkFreeCommandBuffers"sv) { return (PFN_vkVoidFunction)fexfn_impl_libvulkan_vkFreeCommandBuffers; } else if (a_1 == "vkGetDeviceQueue"sv) { return (PFN_vkVoidFunction)fexfn_impl_libvulkan_vkGetDeviceQueue; } else if (a_1 == "vkGetPipelineCacheData"sv) { return (PFN_vkVoidFunction)fexfn_impl_libvulkan_vkGetPipelineCacheData; } else if (a_1 == "vkMapMemory"sv) { return (PFN_vkVoidFunction)fexfn_impl_libvulkan_vkMapMemory; } else if (a_1 == "vkQueueSubmit"sv) { return (PFN_vkVoidFunction)fexfn_impl_libvulkan_vkQueueSubmit; } else if (a_1 == "vkCmdSetVertexInputEXT"sv) { return (PFN_vkVoidFunction)fexfn_impl_libvulkan_vkCmdSetVertexInputEXT; } else if (a_1 == "vkUpdateDescriptorSets"sv) { return (PFN_vkVoidFunction)fexfn_impl_libvulkan_vkUpdateDescriptorSets; #endif } return nullptr; } static PFN_vkVoidFunction FEXFN_IMPL(vkGetDeviceProcAddr)(VkDevice a_0, const char* a_1) { // Just return the host facing function pointer // The guest will handle mapping if this exists // Check for functions with custom implementations first if (auto ptr = LookupCustomVulkanFunction(a_1)) { return ptr; } return LDR_PTR(vkGetDeviceProcAddr)(a_0, a_1); } static PFN_vkVoidFunction FEXFN_IMPL(vkGetInstanceProcAddr)(VkInstance a_0, const char* a_1) { // Just return the host facing function pointer // The guest will handle mapping if it exists if (!SetupInstance && a_0) { DoSetupWithInstance(a_0); } // Check for functions with custom implementations first if (auto ptr = LookupCustomVulkanFunction(a_1)) { // If this function belongs to an instance extension, requery its address. // This ensures fexldr_ptr_* is valid if the application creates a minimal // VkInstance with no extensions before creating its actual instance. using namespace std::string_view_literals; if (a_1 == "vkGetRandROutputDisplayEXT"sv && !LDR_PTR(vkGetRandROutputDisplayEXT)) { (void*&)LDR_PTR(vkGetRandROutputDisplayEXT) = (void*)LDR_PTR(vkGetInstanceProcAddr)(a_0, "vkGetRandROutputDisplayEXT"); } if (a_1 == "vkAcquireXlibDisplayEXT"sv && !LDR_PTR(vkAcquireXlibDisplayEXT)) { (void*&)LDR_PTR(vkAcquireXlibDisplayEXT) = (void*)LDR_PTR(vkGetInstanceProcAddr)(a_0, "vkAcquireXlibDisplayEXT"); } const char* XcbPresent = "vkGetPhysicalDeviceXcbPresentationSupportKHR"; if (a_1 == std::string_view {XcbPresent} && !LDR_PTR(vkGetPhysicalDeviceXcbPresentationSupportKHR)) { (void*&)LDR_PTR(vkGetPhysicalDeviceXcbPresentationSupportKHR) = (void*)LDR_PTR(vkGetInstanceProcAddr)(a_0, XcbPresent); } const char* XlibPresent = "vkGetPhysicalDeviceXlibPresentationSupportKHR"; if (a_1 == std::string_view {XlibPresent} && !LDR_PTR(vkGetPhysicalDeviceXlibPresentationSupportKHR)) { (void*&)LDR_PTR(vkGetPhysicalDeviceXlibPresentationSupportKHR) = (void*)LDR_PTR(vkGetInstanceProcAddr)(a_0, XlibPresent); } return ptr; } return LDR_PTR(vkGetInstanceProcAddr)(a_0, a_1); } #ifdef IS_32BIT_THUNK template static VkBaseOutStructure* convert(const guest_layout* source) { // Using malloc here since no easily available type information is available at the time of destruction. auto typed_source = reinterpret_cast*>(source); auto child_mem = (char*)aligned_alloc(alignof(host_layout), sizeof(host_layout)); auto child = new (child_mem) host_layout {*typed_source}; fex_custom_repack_entry(*child, *typed_source); return reinterpret_cast(&child->data); } template static void convert_to_guest(void* into, const VkBaseOutStructure* from) { auto typed_into = reinterpret_cast*>(into); auto oldNext = typed_into->data.pNext; // TODO: This assumes Vulkan never modifies pNext internally *typed_into = to_guest(to_host_layout(*(Type*)from)); typed_into->data.pNext = oldNext; fex_custom_repack_exit(*typed_into, to_host_layout(*(Type*)from)); } template inline constexpr std::pair*), void (*)(void*, const VkBaseOutStructure*)>> converters = {TypeIndex, {convert, convert_to_guest}}; // NOTE: Not all Vulkan structures with pNext members are listed here. This is because excluding structs exclusively used as top-level entries is useful to detect repacking bugs. static std::unordered_map*), void (*)(void*, const VkBaseOutStructure*)>> next_handlers { converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, converters, }; static void default_fex_custom_repack_entry(VkBaseOutStructure& into, const guest_layout* from) { if (!from->data.pNext.get_pointer()) { into.pNext = nullptr; return; } auto typed_source = reinterpret_cast*>(from->data.pNext.get_pointer()); auto next_handler = next_handlers.find(static_cast(typed_source->data.sType.data)); if (next_handler == next_handlers.end()) { fprintf(stderr, "ERROR: Unrecognized VkStructureType %u referenced by pNext\n", typed_source->data.sType.data); std::abort(); } into.pNext = next_handler->second.first(typed_source); } template void default_fex_custom_repack_entry(host_layout& into, const guest_layout& from) { default_fex_custom_repack_entry(*(VkBaseOutStructure*)&into.data, reinterpret_cast*>(&from)); } static void default_fex_custom_repack_reverse(guest_layout& into, const VkBaseOutStructure* from) { auto pNextHost = from->pNext; if (!pNextHost) { return; } auto next_handler = next_handlers.find(static_cast(into.data.pNext.get_pointer()->data.sType.data)); if (next_handler == next_handlers.end()) { fprintf(stderr, "ERROR: Unrecognized VkStructureType %u referenced by pNext when converting to guest\n", from->sType); std::abort(); } next_handler->second.second((void*)into.data.pNext.get_pointer(), from->pNext); free(pNextHost); } // Default repacking functions that only traverses and repacks the pNext chain. // If other members need to be repacked, use VULKAN_NONDEFAULT_CUSTOM_REPACK instead #define VULKAN_DEFAULT_CUSTOM_REPACK(name) \ void fex_custom_repack_entry(host_layout& into, const guest_layout& from) { \ default_fex_custom_repack_entry(reinterpret_cast(into.data), \ &reinterpret_cast&>(from)); \ } \ \ bool fex_custom_repack_exit(guest_layout& into, const host_layout& from) { \ auto prev_next = into.data.pNext; \ default_fex_custom_repack_reverse(*reinterpret_cast*>(&into), \ &reinterpret_cast(from.data)); \ into = to_guest(from); \ into.data.pNext = prev_next; \ return true; \ } // Intentionally left empty. This macro doesn't automate anything, but it // helps ensure we don't forget any Vulkan types in the list. The actual // repacking functions are defined manually later #define VULKAN_NONDEFAULT_CUSTOM_REPACK(name) // VULKAN_DEFAULT_CUSTOM_REPACK(VkAccelerationStructureBuildGeometryInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkAccelerationStructureBuildSizesInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkAccelerationStructureCaptureDescriptorDataInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkAccelerationStructureCreateInfo2KHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkAccelerationStructureCreateInfoKHR) // VULKAN_DEFAULT_CUSTOM_REPACK(VkAccelerationStructureCreateInfoNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkAccelerationStructureDeviceAddressInfoKHR) // VULKAN_DEFAULT_CUSTOM_REPACK(VkAccelerationStructureGeometryAabbsDataKHR) // VULKAN_DEFAULT_CUSTOM_REPACK(VkAccelerationStructureGeometryInstancesDataKHR) // VULKAN_DEFAULT_CUSTOM_REPACK(VkAccelerationStructureGeometryKHR) // VULKAN_DEFAULT_CUSTOM_REPACK(VkAccelerationStructureGeometryMicromapDataKHR) // VULKAN_DEFAULT_CUSTOM_REPACK(VkAccelerationStructureGeometryMotionTrianglesDataNV) // VULKAN_DEFAULT_CUSTOM_REPACK(VkAccelerationStructureGeometryTrianglesDataKHR) // VULKAN_DEFAULT_CUSTOM_REPACK(VkAccelerationStructureInfoNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkAccelerationStructureMemoryRequirementsInfoNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkAccelerationStructureMotionInfoNV) // VULKAN_DEFAULT_CUSTOM_REPACK(VkAccelerationStructureTrianglesOpacityMicromapEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkAccelerationStructureTrianglesOpacityMicromapKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkAccelerationStructureVersionInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkAcquireNextImageInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkAcquireProfilingLockInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkAmigoProfilingSubmitInfoSEC) // VULKAN_DEFAULT_CUSTOM_REPACK(VkAntiLagDataAMD) VULKAN_DEFAULT_CUSTOM_REPACK(VkAntiLagPresentationInfoAMD) VULKAN_DEFAULT_CUSTOM_REPACK(VkApplicationInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkAttachmentDescription2) VULKAN_DEFAULT_CUSTOM_REPACK(VkAttachmentDescriptionStencilLayout) VULKAN_DEFAULT_CUSTOM_REPACK(VkAttachmentFeedbackLoopInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkAttachmentReference2) VULKAN_DEFAULT_CUSTOM_REPACK(VkAttachmentReferenceStencilLayout) VULKAN_DEFAULT_CUSTOM_REPACK(VkAttachmentSampleCountInfoAMD) VULKAN_DEFAULT_CUSTOM_REPACK(VkBeginCustomResolveInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkBindAccelerationStructureMemoryInfoNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkBindBufferMemoryDeviceGroupInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkBindBufferMemoryInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkBindDataGraphPipelineSessionMemoryInfoARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkBindDescriptorBufferEmbeddedSamplersInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkBindDescriptorSetsInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkBindHeapInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkBindImageMemoryDeviceGroupInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkBindImageMemoryInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkBindImageMemorySwapchainInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkBindImagePlaneMemoryInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkBindIndexBuffer3InfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkBindMemoryStatus) // VULKAN_DEFAULT_CUSTOM_REPACK(VkBindSparseInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkBindTensorMemoryInfoARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkBindTransformFeedbackBuffer2InfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkBindVertexBuffer3InfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkBindVideoSessionMemoryInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkBlitImageCubicWeightsInfoQCOM) // VULKAN_DEFAULT_CUSTOM_REPACK(VkBlitImageInfo2) VULKAN_DEFAULT_CUSTOM_REPACK(VkBufferCaptureDescriptorDataInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkBufferCopy2) VULKAN_DEFAULT_CUSTOM_REPACK(VkBufferCreateInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkBufferDeviceAddressAlignmentAllocateInfoVALVE) VULKAN_DEFAULT_CUSTOM_REPACK(VkBufferDeviceAddressCreateInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkBufferDeviceAddressInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkBufferImageCopy2) VULKAN_DEFAULT_CUSTOM_REPACK(VkBufferMemoryBarrier) VULKAN_DEFAULT_CUSTOM_REPACK(VkBufferMemoryBarrier2) VULKAN_DEFAULT_CUSTOM_REPACK(VkBufferMemoryRequirementsInfo2) VULKAN_DEFAULT_CUSTOM_REPACK(VkBufferOpaqueCaptureAddressCreateInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkBufferUsageFlags2CreateInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkBufferViewCreateInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkBuildPartitionedAccelerationStructureInfoNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkCalibratedTimestampInfoKHR) // VULKAN_DEFAULT_CUSTOM_REPACK(VkCheckpointData2NV) // VULKAN_DEFAULT_CUSTOM_REPACK(VkCheckpointDataNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkClusterAccelerationStructureClustersBottomLevelInputNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkClusterAccelerationStructureMoveObjectsInputNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkClusterAccelerationStructureTriangleClusterInputNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkCommandBufferAllocateInfo) VULKAN_NONDEFAULT_CUSTOM_REPACK(VkCommandBufferBeginInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkCommandBufferInheritanceConditionalRenderingInfoEXT) // VULKAN_DEFAULT_CUSTOM_REPACK(VkCommandBufferInheritanceDescriptorHeapInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkCommandBufferInheritanceInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkCommandBufferInheritanceRenderingInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkCommandBufferInheritanceRenderPassTransformInfoQCOM) VULKAN_DEFAULT_CUSTOM_REPACK(VkCommandBufferInheritanceViewportScissorInfoNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkCommandBufferSubmitInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkCommandPoolCreateInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkComputeOccupancyPriorityParametersNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkComputePipelineCreateInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkComputePipelineIndirectBufferInfoNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkConditionalRenderingBeginInfo2EXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkConditionalRenderingBeginInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkCooperativeMatrixFlexibleDimensionsPropertiesNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkCooperativeMatrixProperties2EXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkCooperativeMatrixPropertiesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkCooperativeMatrixPropertiesNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkCooperativeVectorPropertiesNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkCopyAccelerationStructureInfoKHR) // VULKAN_DEFAULT_CUSTOM_REPACK(VkCopyAccelerationStructureToMemoryInfoKHR) // VULKAN_DEFAULT_CUSTOM_REPACK(VkCopyBufferInfo2) // VULKAN_DEFAULT_CUSTOM_REPACK(VkCopyBufferToImageInfo2) VULKAN_DEFAULT_CUSTOM_REPACK(VkCopyCommandTransformInfoQCOM) VULKAN_DEFAULT_CUSTOM_REPACK(VkCopyDescriptorSet) // VULKAN_DEFAULT_CUSTOM_REPACK(VkCopyDeviceMemoryImageInfoKHR) // VULKAN_DEFAULT_CUSTOM_REPACK(VkCopyDeviceMemoryInfoKHR) // VULKAN_DEFAULT_CUSTOM_REPACK(VkCopyImageInfo2) // VULKAN_DEFAULT_CUSTOM_REPACK(VkCopyImageToBufferInfo2) // VULKAN_DEFAULT_CUSTOM_REPACK(VkCopyImageToImageInfoEXT) // VULKAN_DEFAULT_CUSTOM_REPACK(VkCopyImageToMemoryInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkCopyMemoryIndirectInfoKHR) // VULKAN_DEFAULT_CUSTOM_REPACK(VkCopyMemoryToAccelerationStructureInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkCopyMemoryToImageIndirectInfoKHR) VULKAN_NONDEFAULT_CUSTOM_REPACK(VkCopyMemoryToImageInfoEXT) // VULKAN_DEFAULT_CUSTOM_REPACK(VkCopyMemoryToMicromapInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkCopyMicromapInfoEXT) // VULKAN_DEFAULT_CUSTOM_REPACK(VkCopyMicromapToMemoryInfoEXT) // VULKAN_DEFAULT_CUSTOM_REPACK(VkCopyTensorInfoARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkCuFunctionCreateInfoNVX) // VULKAN_DEFAULT_CUSTOM_REPACK(VkCuLaunchInfoNVX) // VULKAN_DEFAULT_CUSTOM_REPACK(VkCuModuleCreateInfoNVX) VULKAN_DEFAULT_CUSTOM_REPACK(VkCuModuleTexturingModeCreateInfoNVX) VULKAN_DEFAULT_CUSTOM_REPACK(VkCustomResolveCreateInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkDataGraphOpticalFlowImageFormatInfoARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkDataGraphOpticalFlowImageFormatPropertiesARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkDataGraphPipelineBuiltinModelCreateInfoQCOM) VULKAN_DEFAULT_CUSTOM_REPACK(VkDataGraphPipelineCompilerControlCreateInfoARM) // VULKAN_DEFAULT_CUSTOM_REPACK(VkDataGraphPipelineConstantARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkDataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM) // VULKAN_DEFAULT_CUSTOM_REPACK(VkDataGraphPipelineCreateInfoARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkDataGraphPipelineDispatchInfoARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkDataGraphPipelineIdentifierCreateInfoARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkDataGraphPipelineInfoARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkDataGraphPipelineNeuralStatisticsCreateInfoARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkDataGraphPipelineOpticalFlowCreateInfoARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkDataGraphPipelineOpticalFlowDispatchInfoARM) // VULKAN_DEFAULT_CUSTOM_REPACK(VkDataGraphPipelinePropertyQueryResultARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkDataGraphPipelineResourceInfoARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkDataGraphPipelineResourceInfoImageLayoutARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkDataGraphPipelineSessionBindPointRequirementARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkDataGraphPipelineSessionBindPointRequirementsInfoARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkDataGraphPipelineSessionCreateInfoARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkDataGraphPipelineSessionMemoryRequirementsInfoARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkDataGraphPipelineSessionNeuralStatisticsCreateInfoARM) // VULKAN_DEFAULT_CUSTOM_REPACK(VkDataGraphPipelineShaderModuleCreateInfoARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkDataGraphPipelineSingleNodeConnectionARM) // VULKAN_DEFAULT_CUSTOM_REPACK(VkDataGraphPipelineSingleNodeCreateInfoARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkDataGraphProcessingEngineCreateInfoARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkDebugMarkerMarkerInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkDebugMarkerObjectNameInfoEXT) // VULKAN_DEFAULT_CUSTOM_REPACK(VkDebugMarkerObjectTagInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkDebugReportCallbackCreateInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkDebugUtilsLabelEXT) // VULKAN_DEFAULT_CUSTOM_REPACK(VkDebugUtilsMessengerCallbackDataEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkDebugUtilsMessengerCreateInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkDebugUtilsObjectNameInfoEXT) // VULKAN_DEFAULT_CUSTOM_REPACK(VkDebugUtilsObjectTagInfoEXT) // VULKAN_DEFAULT_CUSTOM_REPACK(VkDecompressMemoryInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkDedicatedAllocationBufferCreateInfoNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkDedicatedAllocationImageCreateInfoNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkDedicatedAllocationMemoryAllocateInfoNV) VULKAN_NONDEFAULT_CUSTOM_REPACK(VkDependencyInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkDepthBiasInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkDepthBiasRepresentationInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkDescriptorAddressInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkDescriptorBufferBindingInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkDescriptorBufferBindingPushDescriptorBufferHandleEXT) VULKAN_NONDEFAULT_CUSTOM_REPACK(VkDescriptorGetInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkDescriptorGetTensorInfoARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkDescriptorPoolCreateInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkDescriptorPoolInlineUniformBlockCreateInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkDescriptorSetAllocateInfo) // VULKAN_DEFAULT_CUSTOM_REPACK(VkDescriptorSetAndBindingMappingEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkDescriptorSetBindingReferenceVALVE) VULKAN_DEFAULT_CUSTOM_REPACK(VkDescriptorSetLayoutBindingFlagsCreateInfo) VULKAN_NONDEFAULT_CUSTOM_REPACK(VkDescriptorSetLayoutCreateInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkDescriptorSetLayoutHostMappingInfoVALVE) VULKAN_DEFAULT_CUSTOM_REPACK(VkDescriptorSetLayoutSupport) VULKAN_DEFAULT_CUSTOM_REPACK(VkDescriptorSetVariableDescriptorCountAllocateInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkDescriptorSetVariableDescriptorCountLayoutSupport) VULKAN_NONDEFAULT_CUSTOM_REPACK(VkDescriptorUpdateTemplateCreateInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkDeviceAddressBindingCallbackDataEXT) // VULKAN_DEFAULT_CUSTOM_REPACK(VkDeviceBufferMemoryRequirements) VULKAN_NONDEFAULT_CUSTOM_REPACK(VkDeviceCreateInfo) // VULKAN_DEFAULT_CUSTOM_REPACK(VkDeviceDeviceMemoryReportCreateInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkDeviceDiagnosticsConfigCreateInfoNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkDeviceEventInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkDeviceFaultCountsEXT) // VULKAN_DEFAULT_CUSTOM_REPACK(VkDeviceFaultDebugInfoKHR) // VULKAN_DEFAULT_CUSTOM_REPACK(VkDeviceFaultInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkDeviceFaultInfoKHR) // VULKAN_DEFAULT_CUSTOM_REPACK(VkDeviceFaultShaderAbortMessageInfoKHR) // VULKAN_DEFAULT_CUSTOM_REPACK(VkDeviceGroupBindSparseInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkDeviceGroupCommandBufferBeginInfo) // VULKAN_DEFAULT_CUSTOM_REPACK(VkDeviceGroupDeviceCreateInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkDeviceGroupPresentCapabilitiesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkDeviceGroupPresentInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkDeviceGroupRenderPassBeginInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkDeviceGroupSubmitInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkDeviceGroupSwapchainCreateInfoKHR) // VULKAN_DEFAULT_CUSTOM_REPACK(VkDeviceImageMemoryRequirements) VULKAN_DEFAULT_CUSTOM_REPACK(VkDeviceMemoryCopyKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkDeviceMemoryImageCopyKHR) // VULKAN_DEFAULT_CUSTOM_REPACK(VkDeviceImageSubresourceInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkDeviceMemoryOpaqueCaptureAddressInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkDeviceMemoryOverallocationCreateInfoAMD) VULKAN_DEFAULT_CUSTOM_REPACK(VkDeviceMemoryReportCallbackDataEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkDevicePipelineBinaryInternalCacheControlKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkDevicePrivateDataCreateInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkDeviceQueueCreateInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkDeviceQueueGlobalPriorityCreateInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkDeviceQueueInfo2) VULKAN_DEFAULT_CUSTOM_REPACK(VkDeviceQueueShaderCoreControlCreateInfoARM) // VULKAN_DEFAULT_CUSTOM_REPACK(VkDeviceTensorMemoryRequirementsARM) // VULKAN_DEFAULT_CUSTOM_REPACK(VkDirectDriverLoadingInfoLUNARG) // VULKAN_DEFAULT_CUSTOM_REPACK(VkDirectDriverLoadingListLUNARG) VULKAN_DEFAULT_CUSTOM_REPACK(VkDispatchIndirect2InfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkDispatchParametersARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkDispatchTileInfoQCOM) VULKAN_DEFAULT_CUSTOM_REPACK(VkDisplayEventInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkDisplayModeCreateInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkDisplayModeProperties2KHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkDisplayModeStereoPropertiesNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkDisplayNativeHdrSurfaceCapabilitiesAMD) VULKAN_DEFAULT_CUSTOM_REPACK(VkDisplayPlaneCapabilities2KHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkDisplayPlaneInfo2KHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkDisplayPlaneProperties2KHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkDisplayPowerInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkDisplayPresentInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkDisplayProperties2KHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkDisplaySurfaceCreateInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkDisplaySurfaceStereoCreateInfoNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkDrawIndirect2InfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkDrawIndirectCount2InfoKHR) // VULKAN_DEFAULT_CUSTOM_REPACK(VkDrmFormatModifierPropertiesList2EXT) // VULKAN_DEFAULT_CUSTOM_REPACK(VkDrmFormatModifierPropertiesListEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkEventCreateInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkExportFenceCreateInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkExportMemoryAllocateInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkExportMemoryAllocateInfoNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkExportSemaphoreCreateInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkExternalBufferProperties) VULKAN_DEFAULT_CUSTOM_REPACK(VkExternalComputeQueueCreateInfoNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkExternalComputeQueueDataParamsNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkExternalComputeQueueDeviceCreateInfoNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkExternalFenceProperties) VULKAN_DEFAULT_CUSTOM_REPACK(VkExternalImageFormatProperties) VULKAN_DEFAULT_CUSTOM_REPACK(VkExternalMemoryAcquireUnmodifiedEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkExternalMemoryBufferCreateInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkExternalMemoryImageCreateInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkExternalMemoryImageCreateInfoNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkExternalMemoryTensorCreateInfoARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkExternalSemaphoreProperties) VULKAN_DEFAULT_CUSTOM_REPACK(VkExternalTensorPropertiesARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkFenceCreateInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkFenceGetFdInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkFilterCubicImageViewImageFormatPropertiesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkFormatProperties2) VULKAN_DEFAULT_CUSTOM_REPACK(VkFormatProperties3) VULKAN_DEFAULT_CUSTOM_REPACK(VkFormatProperties4KHR) // VULKAN_DEFAULT_CUSTOM_REPACK(VkFragmentShadingRateAttachmentInfoKHR) // VULKAN_DEFAULT_CUSTOM_REPACK(VkFrameBoundaryEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkFrameBoundaryTensorsARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkFramebufferAttachmentImageInfo) // VULKAN_DEFAULT_CUSTOM_REPACK(VkFramebufferAttachmentsCreateInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkFramebufferCreateInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkFramebufferMixedSamplesCombinationNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkGeneratedCommandsInfoEXT) // VULKAN_DEFAULT_CUSTOM_REPACK(VkGeneratedCommandsInfoNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkGeneratedCommandsMemoryRequirementsInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkGeneratedCommandsMemoryRequirementsInfoNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkGeneratedCommandsPipelineInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkGeneratedCommandsShaderInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkGeometryAABBNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkGeometryNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkGeometryTrianglesNV) // VULKAN_DEFAULT_CUSTOM_REPACK(VkGetLatencyMarkerInfoNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkGpaDeviceClockModeInfoAMD) VULKAN_DEFAULT_CUSTOM_REPACK(VkGpaDeviceGetClockInfoAMD) VULKAN_DEFAULT_CUSTOM_REPACK(VkGpaSampleBeginInfoAMD) VULKAN_DEFAULT_CUSTOM_REPACK(VkGpaSessionCreateInfoAMD) VULKAN_NONDEFAULT_CUSTOM_REPACK(VkGraphicsPipelineCreateInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkGraphicsPipelineLibraryCreateInfoEXT) // VULKAN_DEFAULT_CUSTOM_REPACK(VkGraphicsPipelineShaderGroupsCreateInfoNV) // VULKAN_DEFAULT_CUSTOM_REPACK(VkGraphicsShaderGroupCreateInfoNV) // VULKAN_DEFAULT_CUSTOM_REPACK(VkHdrVividDynamicMetadataHUAWEI) VULKAN_DEFAULT_CUSTOM_REPACK(VkHeadlessSurfaceCreateInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkHostImageCopyDevicePerformanceQuery) VULKAN_DEFAULT_CUSTOM_REPACK(VkHostImageLayoutTransitionInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkImageAlignmentControlCreateInfoMESA) VULKAN_DEFAULT_CUSTOM_REPACK(VkImageBlit2) VULKAN_DEFAULT_CUSTOM_REPACK(VkImageCaptureDescriptorDataInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkImageCompressionControlEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkImageCompressionPropertiesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkImageCopy2) VULKAN_DEFAULT_CUSTOM_REPACK(VkImageCreateFlags2CreateInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkImageCreateInfo) // VULKAN_DEFAULT_CUSTOM_REPACK(VkImageDescriptorInfoEXT) // VULKAN_DEFAULT_CUSTOM_REPACK(VkImageDrmFormatModifierExplicitCreateInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkImageDrmFormatModifierListCreateInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkImageDrmFormatModifierPropertiesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkImageFormatListCreateInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkImageFormatProperties2) VULKAN_DEFAULT_CUSTOM_REPACK(VkImageMemoryBarrier) VULKAN_DEFAULT_CUSTOM_REPACK(VkImageMemoryBarrier2) VULKAN_DEFAULT_CUSTOM_REPACK(VkImageMemoryRequirementsInfo2) VULKAN_DEFAULT_CUSTOM_REPACK(VkImagePlaneMemoryRequirementsInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkImageResolve2) VULKAN_DEFAULT_CUSTOM_REPACK(VkImageSparseMemoryRequirementsInfo2) VULKAN_DEFAULT_CUSTOM_REPACK(VkImageStencilUsage2CreateInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkImageStencilUsageCreateInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkImageSubresource2) VULKAN_DEFAULT_CUSTOM_REPACK(VkImageSwapchainCreateInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkImageTilingControlCreateInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkImageUsageFlags2CreateInfoKHR) // VULKAN_DEFAULT_CUSTOM_REPACK(VkImageToMemoryCopyEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkImageViewAddressPropertiesNVX) VULKAN_DEFAULT_CUSTOM_REPACK(VkImageViewASTCDecodeModeEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkImageViewCaptureDescriptorDataInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkImageViewCreateInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkImageViewHandleInfoNVX) VULKAN_DEFAULT_CUSTOM_REPACK(VkImageViewMinLodCreateInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkImageViewSampleWeightCreateInfoQCOM) VULKAN_DEFAULT_CUSTOM_REPACK(VkImageViewSlicedCreateInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkImageViewUsage2CreateInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkImageViewUsageCreateInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkImportFenceFdInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkImportMemoryFdInfoKHR) // VULKAN_DEFAULT_CUSTOM_REPACK(VkImportMemoryHostPointerInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkImportSemaphoreFdInfoKHR) // VULKAN_DEFAULT_CUSTOM_REPACK(VkIndirectCommandsLayoutCreateInfoNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkIndirectCommandsLayoutPushDataTokenNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkIndirectCommandsLayoutTokenNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkIndirectExecutionSetPipelineInfoEXT) // VULKAN_DEFAULT_CUSTOM_REPACK(VkIndirectExecutionSetShaderInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkIndirectExecutionSetShaderLayoutInfoEXT) // VULKAN_DEFAULT_CUSTOM_REPACK(VkInitializePerformanceApiInfoINTEL) VULKAN_NONDEFAULT_CUSTOM_REPACK(VkInstanceCreateInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkLatencySleepInfoNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkLatencySleepModeInfoNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkLatencySubmissionPresentIdNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkLatencySurfaceCapabilitiesNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkLatencyTimingsFrameReportNV) // VULKAN_DEFAULT_CUSTOM_REPACK(VkLayerSettingsCreateInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkMappedMemoryRange) VULKAN_DEFAULT_CUSTOM_REPACK(VkMemoryAllocateFlagsInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkMemoryAllocateInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkMemoryBarrier) VULKAN_DEFAULT_CUSTOM_REPACK(VkMemoryBarrier2) VULKAN_DEFAULT_CUSTOM_REPACK(VkMemoryBarrierAccessFlags3KHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkMemoryDedicatedAllocateInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkMemoryDedicatedAllocateInfoTensorARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkMemoryDedicatedRequirements) VULKAN_DEFAULT_CUSTOM_REPACK(VkMemoryFdPropertiesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkMemoryGetFdInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkMemoryGetRemoteAddressInfoNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkMemoryHostPointerPropertiesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkMemoryMapInfo) // VULKAN_DEFAULT_CUSTOM_REPACK(VkMemoryMapPlacedInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkMemoryMarkerInfoAMD) VULKAN_DEFAULT_CUSTOM_REPACK(VkMemoryOpaqueCaptureAddressAllocateInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkMemoryPriorityAllocateInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkMemoryRangeBarrierKHR) // VULKAN_DEFAULT_CUSTOM_REPACK(VkMemoryRangeBarriersInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkMemoryRequirements2) VULKAN_NONDEFAULT_CUSTOM_REPACK(VkMemoryToImageCopy) VULKAN_DEFAULT_CUSTOM_REPACK(VkMemoryUnmapInfo) // VULKAN_DEFAULT_CUSTOM_REPACK(VkMicromapBuildInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkMicromapBuildSizesInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkMicromapCreateInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkMicromapVersionInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkMultisampledRenderToSingleSampledInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkMultisamplePropertiesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkMultiviewPerViewAttributesInfoNVX) VULKAN_DEFAULT_CUSTOM_REPACK(VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM) // VULKAN_DEFAULT_CUSTOM_REPACK(VkMutableDescriptorTypeCreateInfoEXT) // VULKAN_DEFAULT_CUSTOM_REPACK(VkOpaqueCaptureDataCreateInfoEXT) // VULKAN_DEFAULT_CUSTOM_REPACK(VkOpaqueCaptureDescriptorDataCreateInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkOpticalFlowExecuteInfoNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkOpticalFlowImageFormatInfoNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkOpticalFlowImageFormatPropertiesNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkOpticalFlowSessionCreateInfoNV) // VULKAN_DEFAULT_CUSTOM_REPACK(VkOpticalFlowSessionCreatePrivateDataInfoNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkOutOfBandQueueTypeInfoNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPartitionedAccelerationStructureFlagsNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPartitionedAccelerationStructureInstancesInputNV) // VULKAN_DEFAULT_CUSTOM_REPACK(VkPastPresentationTimingEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPastPresentationTimingInfoEXT) // VULKAN_DEFAULT_CUSTOM_REPACK(VkPastPresentationTimingPropertiesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPerfHintInfoQCOM) VULKAN_DEFAULT_CUSTOM_REPACK(VkPerformanceConfigurationAcquireInfoINTEL) VULKAN_DEFAULT_CUSTOM_REPACK(VkPerformanceCounterARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkPerformanceCounterDescriptionARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkPerformanceCounterDescriptionKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPerformanceCounterKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPerformanceMarkerInfoINTEL) VULKAN_DEFAULT_CUSTOM_REPACK(VkPerformanceOverrideInfoINTEL) VULKAN_DEFAULT_CUSTOM_REPACK(VkPerformanceQuerySubmitInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPerformanceStreamMarkerInfoINTEL) VULKAN_DEFAULT_CUSTOM_REPACK(VkPerTileBeginInfoQCOM) VULKAN_DEFAULT_CUSTOM_REPACK(VkPerTileEndInfoQCOM) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDevice16BitStorageFeatures) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDevice4444FormatsFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDevice8BitStorageFeatures) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceAccelerationStructureFeaturesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceAccelerationStructurePropertiesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceAddressBindingReportFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceAmigoProfilingFeaturesSEC) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceAntiLagFeaturesAMD) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceASTCDecodeFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceBorderColorSwizzleFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceBufferDeviceAddressAllocationAlignmentFeaturesVALVE) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceBufferDeviceAddressAllocationAlignmentPropertiesVALVE) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceBufferDeviceAddressFeatures) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceBufferDeviceAddressFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceClusterAccelerationStructureFeaturesNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceClusterAccelerationStructurePropertiesNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceCoherentMemoryFeaturesAMD) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceColorWriteEnableFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceCommandBufferInheritanceFeaturesNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceComputeOccupancyPriorityFeaturesNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceConditionalRenderingFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceConservativeRasterizationPropertiesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceCooperativeMatrix2FeaturesNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceCooperativeMatrix2PropertiesNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceCooperativeMatrixConversionFeaturesQCOM) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceCooperativeMatrixDecodeVectorFeaturesNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceCooperativeMatrixFeaturesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceCooperativeMatrixFeaturesNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceCooperativeMatrixInfo2EXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceCooperativeMatrixMaintenance1FeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceCooperativeMatrixPropertiesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceCooperativeMatrixPropertiesNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceCooperativeVectorFeaturesNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceCooperativeVectorPropertiesNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceCopyMemoryIndirectFeaturesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceCopyMemoryIndirectFeaturesNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceCopyMemoryIndirectPropertiesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceCornerSampledImageFeaturesNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceCoverageReductionModeFeaturesNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceCubicClampFeaturesQCOM) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceCubicWeightsFeaturesQCOM) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceCustomBorderColorFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceCustomBorderColorPropertiesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceCustomResolveFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceDataGraphFeaturesARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceDataGraphModelFeaturesQCOM) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceDataGraphNeuralAcceleratorStatisticsFeaturesARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceDataGraphOpticalFlowFeaturesARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceDepthBiasControlFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceDepthClampControlFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceDepthClampZeroOneFeaturesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceDepthClipControlFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceDepthClipEnableFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceDepthStencilResolveProperties) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceDescriptorBufferFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceDescriptorBufferPropertiesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceDescriptorBufferTensorFeaturesARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceDescriptorBufferTensorPropertiesARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceDescriptorHeapFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceDescriptorHeapPropertiesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceDescriptorHeapTensorPropertiesARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceDescriptorIndexingFeatures) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceDescriptorIndexingProperties) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceDeviceAddressCommandsFeaturesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceDeviceMemoryReportFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceDiagnosticsConfigFeaturesNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceDiscardRectanglePropertiesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceDriverProperties) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceDrmPropertiesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceDynamicRenderingFeatures) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceDynamicRenderingLocalReadFeatures) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceElapsedTimerQueryFeaturesQCOM) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceExclusiveScissorFeaturesNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceExtendedDynamicState2FeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceExtendedDynamicState3FeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceExtendedDynamicState3PropertiesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceExtendedDynamicStateFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceExtendedFlagsFeaturesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceExternalBufferInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceExternalComputeQueuePropertiesNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceExternalFenceInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceExternalImageFormatInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceExternalMemoryHostPropertiesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceExternalMemoryRDMAFeaturesNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceExternalSemaphoreInfo) // VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceExternalTensorInfoARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceFaultFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceFaultFeaturesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceFaultPropertiesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceFeatures2) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceFloatControlsProperties) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceFormatPackFeaturesARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceFragmentDensityMap2FeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceFragmentDensityMap2PropertiesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceFragmentDensityMapFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceFragmentDensityMapPropertiesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceFragmentShadingRateFeaturesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceFragmentShadingRateKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceFragmentShadingRatePropertiesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceFrameBoundaryFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceGlobalPriorityQueryFeatures) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceGpaFeaturesAMD) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceGpaProperties2AMD) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceGpaPropertiesAMD) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT) // VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceGroupProperties) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceHdrVividFeaturesHUAWEI) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceHostImageCopyFeatures) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceHostImageCopyProperties) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceHostQueryResetFeatures) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceIDProperties) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceImage2DViewOf3DFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceImageAlignmentControlFeaturesMESA) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceImageAlignmentControlPropertiesMESA) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceImageCompressionControlFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceImageDrmFormatModifierInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceImageFormatInfo2) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceImagelessFramebufferFeatures) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceImageProcessing2FeaturesQCOM) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceImageProcessing2PropertiesQCOM) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceImageProcessing3FeaturesQCOM) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceImageProcessingFeaturesQCOM) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceImageProcessingPropertiesQCOM) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceImageRobustnessFeatures) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceImageTilingControlFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceImageViewImageFormatInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceImageViewMinLodFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceIndexTypeUint8Features) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceInheritedViewportScissorFeaturesNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceInlineUniformBlockFeatures) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceInlineUniformBlockProperties) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceInternallySynchronizedQueuesFeaturesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceInvocationMaskFeaturesHUAWEI) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceLayeredApiPropertiesKHR) // VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceLayeredApiPropertiesListKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceLayeredApiVulkanPropertiesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceLayeredDriverPropertiesMSFT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceLegacyDitheringFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceLinearColorAttachmentFeaturesNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceLineRasterizationFeatures) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceLineRasterizationProperties) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceMaintenance10FeaturesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceMaintenance10PropertiesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceMaintenance11FeaturesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceMaintenance3Properties) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceMaintenance4Features) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceMaintenance4Properties) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceMaintenance5Features) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceMaintenance5Properties) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceMaintenance6Features) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceMaintenance6Properties) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceMaintenance7FeaturesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceMaintenance7PropertiesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceMaintenance8FeaturesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceMaintenance9FeaturesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceMaintenance9PropertiesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceMapMemoryPlacedFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceMapMemoryPlacedPropertiesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceMemoryBudgetPropertiesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceMemoryDecompressionFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceMemoryDecompressionPropertiesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceMemoryPriorityFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceMemoryProperties2) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceMeshShaderFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceMeshShaderFeaturesNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceMeshShaderPropertiesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceMeshShaderPropertiesNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceMultiDrawFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceMultiDrawPropertiesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceMultisampledRenderToSwapchainFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceMultiviewFeatures) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceMultiviewProperties) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceNestedCommandBufferFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceNestedCommandBufferPropertiesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceOpacityMicromapFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceOpacityMicromapFeaturesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceOpacityMicromapPropertiesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceOpacityMicromapPropertiesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceOpticalFlowFeaturesNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceOpticalFlowPropertiesNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDevicePartitionedAccelerationStructureFeaturesNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDevicePartitionedAccelerationStructurePropertiesNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDevicePCIBusInfoPropertiesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDevicePerformanceCountersByRegionFeaturesARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDevicePerformanceCountersByRegionPropertiesARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDevicePerformanceQueryFeaturesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDevicePerformanceQueryPropertiesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDevicePerStageDescriptorSetFeaturesNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDevicePipelineBinaryFeaturesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDevicePipelineBinaryPropertiesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDevicePipelineCacheIncrementalModeFeaturesSEC) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDevicePipelineCreationCacheControlFeatures) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDevicePipelineOpacityMicromapFeaturesARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDevicePipelinePropertiesFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDevicePipelineProtectedAccessFeatures) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDevicePipelineRobustnessFeatures) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDevicePipelineRobustnessProperties) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDevicePointClippingProperties) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDevicePresentBarrierFeaturesNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDevicePresentId2FeaturesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDevicePresentIdFeaturesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDevicePresentMeteringFeaturesNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDevicePresentTimingFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDevicePresentWait2FeaturesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDevicePresentWaitFeaturesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDevicePrimitiveRestartIndexFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDevicePrivateDataBaseHandleFeaturesNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDevicePrivateDataFeatures) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceProperties2) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceProtectedMemoryFeatures) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceProtectedMemoryProperties) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceProvokingVertexFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceProvokingVertexPropertiesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDevicePushConstantBankFeaturesNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDevicePushConstantBankPropertiesNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDevicePushDescriptorProperties) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceQueuePerfHintFeaturesQCOM) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceQueuePerfHintPropertiesQCOM) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceRawAccessChainsFeaturesNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceRayQueryFeaturesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceRayTracingInvocationReorderFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceRayTracingInvocationReorderPropertiesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceRayTracingMotionBlurFeaturesNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceRayTracingPipelineFeaturesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceRayTracingPipelinePropertiesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceRayTracingPropertiesNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceRayTracingValidationFeaturesNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceRenderPassStripedFeaturesARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceRenderPassStripedPropertiesARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceRobustness2FeaturesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceRobustness2PropertiesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceSampleLocationsPropertiesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceSamplerFilterMinmaxProperties) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceSamplerYcbcrConversionFeatures) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceScalarBlockLayoutFeatures) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceSchedulingControlsDispatchParametersPropertiesARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceSchedulingControlsFeaturesARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceSchedulingControlsPropertiesARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceShader64BitIndexingFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceShaderAbortFeaturesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceShaderAbortPropertiesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceShaderAtomicFloatFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceShaderAtomicInt64Features) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceShaderBfloat16FeaturesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceShaderClockFeaturesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceShaderConstantDataFeaturesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceShaderCoreProperties2AMD) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceShaderCorePropertiesAMD) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceShaderCorePropertiesARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceShaderDrawParametersFeatures) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceShaderExpectAssumeFeatures) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceShaderFloat16Int8Features) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceShaderFloat8FeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceShaderFloatControls2Features) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceShaderFmaFeaturesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceShaderImageFootprintFeaturesNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceShaderInstrumentationFeaturesARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceShaderInstrumentationPropertiesARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceShaderIntegerDotProductFeatures) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceShaderIntegerDotProductProperties) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceShaderLongVectorFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceShaderLongVectorPropertiesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceShaderMultipleWaitQueuesFeaturesQCOM) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceShaderMultipleWaitQueuesPropertiesQCOM) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceShaderObjectFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceShaderObjectPropertiesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceShaderOCPMicroscalingTypesFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceShaderQuadControlFeaturesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceShaderSMBuiltinsFeaturesNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceShaderSMBuiltinsPropertiesNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceShaderSplitBarrierFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceShaderSplitBarrierPropertiesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceShaderSubgroupPartitionedFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceShaderSubgroupRotateFeatures) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceShaderTerminateInvocationFeatures) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceShaderTileImageFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceShaderTileImagePropertiesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceShaderUntypedPointersFeaturesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceShadingRateImageFeaturesNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceShadingRateImagePropertiesNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceSparseImageFormatInfo2) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceSubgroupProperties) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceSubgroupSizeControlFeatures) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceSubgroupSizeControlProperties) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceSubpassShadingFeaturesHUAWEI) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceSubpassShadingPropertiesHUAWEI) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceSurfaceInfo2KHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceSynchronization2Features) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceTensorFeaturesARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceTensorPropertiesARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceTexelBufferAlignmentProperties) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceTextureCompressionASTC3DFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceTextureCompressionASTCHDRFeatures) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceThrottleHintFeaturesSEC) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceTileMemoryHeapFeaturesQCOM) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceTileMemoryHeapPropertiesQCOM) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceTilePropertiesFeaturesQCOM) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceTileShadingFeaturesQCOM) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceTileShadingPropertiesQCOM) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceTimelineSemaphoreFeatures) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceTimelineSemaphoreProperties) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceToolProperties) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceTransformFeedbackFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceTransformFeedbackPropertiesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceUnifiedImageLayoutsFeaturesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceUniformBufferStandardLayoutFeatures) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceVariablePointersFeatures) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceVertexAttributeDivisorFeatures) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceVertexAttributeDivisorProperties) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceVideoDecodeVP9FeaturesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceVideoEncodeAV1FeaturesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceVideoEncodeFeedback2FeaturesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR) // VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceVideoFormatInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceVideoMaintenance1FeaturesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceVideoMaintenance2FeaturesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceVulkan11Features) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceVulkan11Properties) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceVulkan12Features) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceVulkan12Properties) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceVulkan13Features) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceVulkan13Properties) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceVulkan14Features) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceVulkan14Properties) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceVulkanMemoryModelFeatures) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceYcbcrDegammaFeaturesQCOM) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceYcbcrImageArraysFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures) // VULKAN_DEFAULT_CUSTOM_REPACK(VkPipelineBinaryCreateInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPipelineBinaryDataInfoKHR) // VULKAN_DEFAULT_CUSTOM_REPACK(VkPipelineBinaryHandlesInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPipelineBinaryInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPipelineBinaryKeyKHR) VULKAN_NONDEFAULT_CUSTOM_REPACK(VkPipelineCacheCreateInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkPipelineColorBlendAdvancedStateCreateInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPipelineColorBlendStateCreateInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkPipelineColorWriteCreateInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPipelineCompilerControlCreateInfoAMD) VULKAN_DEFAULT_CUSTOM_REPACK(VkPipelineCoverageModulationStateCreateInfoNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPipelineCoverageReductionStateCreateInfoNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPipelineCoverageToColorStateCreateInfoNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPipelineCreateFlags2CreateInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkPipelineCreateInfoKHR) // VULKAN_DEFAULT_CUSTOM_REPACK(VkPipelineCreationFeedbackCreateInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkPipelineDepthStencilStateCreateInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkPipelineDiscardRectangleStateCreateInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPipelineDynamicStateCreateInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkPipelineExecutableInfoKHR) // VULKAN_DEFAULT_CUSTOM_REPACK(VkPipelineExecutableInternalRepresentationKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPipelineExecutablePropertiesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPipelineExecutableStatisticKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPipelineFragmentDensityMapLayeredCreateInfoVALVE) VULKAN_DEFAULT_CUSTOM_REPACK(VkPipelineFragmentShadingRateEnumStateCreateInfoNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPipelineFragmentShadingRateStateCreateInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPipelineIndirectDeviceAddressInfoNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPipelineInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPipelineInputAssemblyStateCreateInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkPipelineLayoutCreateInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkPipelineLibraryCreateInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPipelineMultisampleStateCreateInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkPipelinePropertiesIdentifierEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPipelineRasterizationConservativeStateCreateInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPipelineRasterizationDepthClipStateCreateInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPipelineRasterizationLineStateCreateInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkPipelineRasterizationProvokingVertexStateCreateInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPipelineRasterizationStateCreateInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkPipelineRasterizationStateRasterizationOrderAMD) VULKAN_DEFAULT_CUSTOM_REPACK(VkPipelineRasterizationStateStreamCreateInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPipelineRenderingCreateInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkPipelineRepresentativeFragmentTestStateCreateInfoNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPipelineRobustnessCreateInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkPipelineSampleLocationsStateCreateInfoEXT) VULKAN_NONDEFAULT_CUSTOM_REPACK(VkPipelineShaderStageCreateInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkPipelineShaderStageModuleIdentifierCreateInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPipelineShaderStageRequiredSubgroupSizeCreateInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkPipelineTessellationDomainOriginStateCreateInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkPipelineTessellationStateCreateInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkPipelineVertexInputDivisorStateCreateInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPipelineVertexInputStateCreateInfo) // VULKAN_DEFAULT_CUSTOM_REPACK(VkPipelineViewportCoarseSampleOrderStateCreateInfoNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPipelineViewportDepthClampControlCreateInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPipelineViewportDepthClipControlCreateInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPipelineViewportExclusiveScissorStateCreateInfoNV) // VULKAN_DEFAULT_CUSTOM_REPACK(VkPipelineViewportShadingRateImageStateCreateInfoNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPipelineViewportStateCreateInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkPipelineViewportSwizzleStateCreateInfoNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPipelineViewportWScalingStateCreateInfoNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkPresentId2KHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPresentIdKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPresentInfoKHR) // VULKAN_DEFAULT_CUSTOM_REPACK(VkPresentRegionsKHR) // VULKAN_DEFAULT_CUSTOM_REPACK(VkPresentTimesInfoGOOGLE) VULKAN_DEFAULT_CUSTOM_REPACK(VkPresentTimingInfoEXT) // VULKAN_DEFAULT_CUSTOM_REPACK(VkPresentTimingsInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPresentTimingSurfaceCapabilitiesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkPresentWait2InfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkPrivateDataSlotCreateInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkProtectedSubmitInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkPushConstantBankInfoNV) // VULKAN_DEFAULT_CUSTOM_REPACK(VkPushConstantsInfo) // VULKAN_DEFAULT_CUSTOM_REPACK(VkPushDataInfoEXT) // VULKAN_DEFAULT_CUSTOM_REPACK(VkPushDescriptorSetInfo) // VULKAN_DEFAULT_CUSTOM_REPACK(VkPushDescriptorSetWithTemplateInfo) // VULKAN_DEFAULT_CUSTOM_REPACK(VkQueryLowLatencySupportNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkQueryPoolCreateInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkQueryPoolPerformanceCreateInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkQueryPoolPerformanceQueryCreateInfoINTEL) VULKAN_DEFAULT_CUSTOM_REPACK(VkQueryPoolVideoEncodeFeedbackCreateInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkQueryPoolVideoEncodePerPartitionFeedbackCreateInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkQueueFamilyCheckpointProperties2NV) VULKAN_DEFAULT_CUSTOM_REPACK(VkQueueFamilyCheckpointPropertiesNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkQueueFamilyDataGraphOpticalFlowPropertiesARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkQueueFamilyDataGraphProcessingEnginePropertiesARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkQueueFamilyDataGraphPropertiesARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkQueueFamilyDataGraphTOSAPropertiesARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkQueueFamilyGlobalPriorityProperties) VULKAN_DEFAULT_CUSTOM_REPACK(VkQueueFamilyOptimalImageTransferGranularityPropertiesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkQueueFamilyOwnershipTransferPropertiesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkQueueFamilyProperties2) VULKAN_DEFAULT_CUSTOM_REPACK(VkQueueFamilyQueryResultStatusPropertiesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkQueueFamilyVideoPropertiesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkRayTracingPipelineClusterAccelerationStructureCreateInfoNV) // VULKAN_DEFAULT_CUSTOM_REPACK(VkRayTracingPipelineCreateInfoKHR) // VULKAN_DEFAULT_CUSTOM_REPACK(VkRayTracingPipelineCreateInfoNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkRayTracingPipelineInterfaceCreateInfoKHR) // VULKAN_DEFAULT_CUSTOM_REPACK(VkRayTracingShaderGroupCreateInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkRayTracingShaderGroupCreateInfoNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkReleaseCapturedPipelineDataInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkReleaseSwapchainImagesInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkRenderingAreaInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkRenderingAttachmentFlagsInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkRenderingAttachmentInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkRenderingAttachmentLocationInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkRenderingEndInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkRenderingFragmentDensityMapAttachmentInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkRenderingFragmentShadingRateAttachmentInfoKHR) VULKAN_NONDEFAULT_CUSTOM_REPACK(VkRenderingInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkRenderingInputAttachmentIndexInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkRenderPassAttachmentBeginInfo) VULKAN_NONDEFAULT_CUSTOM_REPACK(VkRenderPassBeginInfo) VULKAN_NONDEFAULT_CUSTOM_REPACK(VkRenderPassCreateInfo) VULKAN_NONDEFAULT_CUSTOM_REPACK(VkRenderPassCreateInfo2) VULKAN_DEFAULT_CUSTOM_REPACK(VkRenderPassCreationControlEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkRenderPassCreationFeedbackCreateInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkRenderPassFragmentDensityMapCreateInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkRenderPassFragmentDensityMapOffsetEndInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkRenderPassInputAttachmentAspectCreateInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkRenderPassMultiviewCreateInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkRenderPassPerformanceCountersByRegionBeginInfoARM) // VULKAN_DEFAULT_CUSTOM_REPACK(VkRenderPassSampleLocationsBeginInfoEXT) // VULKAN_DEFAULT_CUSTOM_REPACK(VkRenderPassStripeBeginInfoARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkRenderPassStripeInfoARM) // VULKAN_DEFAULT_CUSTOM_REPACK(VkRenderPassStripeSubmitInfoARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkRenderPassSubpassFeedbackCreateInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkRenderPassTileShadingCreateInfoQCOM) VULKAN_DEFAULT_CUSTOM_REPACK(VkRenderPassTransformBeginInfoQCOM) // VULKAN_DEFAULT_CUSTOM_REPACK(VkResolveImageInfo2) VULKAN_DEFAULT_CUSTOM_REPACK(VkResolveImageModeInfoKHR) // VULKAN_DEFAULT_CUSTOM_REPACK(VkResourceDescriptorInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkSampleLocationsInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkSamplerBlockMatchWindowCreateInfoQCOM) VULKAN_DEFAULT_CUSTOM_REPACK(VkSamplerBorderColorComponentMappingCreateInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkSamplerCaptureDescriptorDataInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkSamplerCreateInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkSamplerCubicWeightsCreateInfoQCOM) VULKAN_DEFAULT_CUSTOM_REPACK(VkSamplerCustomBorderColorCreateInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkSamplerCustomBorderColorIndexCreateInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkSamplerReductionModeCreateInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkSamplerYcbcrConversionCreateInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkSamplerYcbcrConversionImageFormatProperties) VULKAN_DEFAULT_CUSTOM_REPACK(VkSamplerYcbcrConversionInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM) VULKAN_DEFAULT_CUSTOM_REPACK(VkSemaphoreCreateInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkSemaphoreGetFdInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkSemaphoreSignalInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkSemaphoreSubmitInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkSemaphoreTypeCreateInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkSemaphoreWaitInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkSetDescriptorBufferOffsetsInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkSetLatencyMarkerInfoNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkSetPresentConfigNV) // VULKAN_DEFAULT_CUSTOM_REPACK(VkShaderCreateInfoEXT) // VULKAN_DEFAULT_CUSTOM_REPACK(VkShaderDescriptorSetAndBindingMappingInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkShaderInstrumentationCreateInfoARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkShaderInstrumentationMetricDescriptionARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkShaderModuleCreateInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkShaderModuleIdentifierEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkShaderModuleValidationCacheCreateInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkSharedPresentSurfaceCapabilities2KHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkSharedPresentSurfaceCapabilitiesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkSparseImageFormatProperties2) VULKAN_DEFAULT_CUSTOM_REPACK(VkSparseImageMemoryRequirements2) VULKAN_NONDEFAULT_CUSTOM_REPACK(VkSubmitInfo) // VULKAN_DEFAULT_CUSTOM_REPACK(VkSubmitInfo2) VULKAN_DEFAULT_CUSTOM_REPACK(VkSubpassBeginInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkSubpassDependency2) VULKAN_NONDEFAULT_CUSTOM_REPACK(VkSubpassDescription2) // VULKAN_DEFAULT_CUSTOM_REPACK(VkSubpassDescriptionDepthStencilResolve) VULKAN_DEFAULT_CUSTOM_REPACK(VkSubpassEndInfo) VULKAN_DEFAULT_CUSTOM_REPACK(VkSubpassResolvePerformanceQueryEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkSubpassShadingPipelineCreateInfoHUAWEI) VULKAN_DEFAULT_CUSTOM_REPACK(VkSubresourceHostMemcpySize) VULKAN_DEFAULT_CUSTOM_REPACK(VkSubresourceLayout2) VULKAN_DEFAULT_CUSTOM_REPACK(VkSubsampledImageFormatPropertiesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkSurfaceCapabilities2EXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkSurfaceCapabilities2KHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkSurfaceCapabilitiesPresentBarrierNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkSurfaceCapabilitiesPresentId2KHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkSurfaceCapabilitiesPresentWait2KHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkSurfaceFormat2KHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkSurfacePresentModeCompatibilityKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkSurfacePresentModeKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkSurfacePresentScalingCapabilitiesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkSurfaceProtectedCapabilitiesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkSwapchainCalibratedTimestampInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkSwapchainCounterCreateInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkSwapchainCreateInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkSwapchainDisplayNativeHdrCreateInfoAMD) VULKAN_DEFAULT_CUSTOM_REPACK(VkSwapchainFlagsSurfaceCapabilitiesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkSwapchainLatencyCreateInfoNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkSwapchainPresentBarrierCreateInfoNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkSwapchainPresentFenceInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkSwapchainPresentModeInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkSwapchainPresentModesCreateInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkSwapchainPresentScalingCreateInfoKHR) // VULKAN_DEFAULT_CUSTOM_REPACK(VkSwapchainTimeDomainPropertiesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkSwapchainTimingPropertiesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkTensorCaptureDescriptorDataInfoARM) // VULKAN_DEFAULT_CUSTOM_REPACK(VkTensorCopyARM) // VULKAN_DEFAULT_CUSTOM_REPACK(VkTensorCreateInfoARM) // VULKAN_DEFAULT_CUSTOM_REPACK(VkTensorDependencyInfoARM) // VULKAN_DEFAULT_CUSTOM_REPACK(VkTensorDescriptionARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkTensorExplicitTilingFormatPropertiesARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkTensorFormatPropertiesARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkTensorMemoryBarrierARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkTensorMemoryRequirementsInfoARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkTensorRollingBackingCreateInfoARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkTensorViewCaptureDescriptorDataInfoARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkTensorViewCreateInfoARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkTexelBufferDescriptorInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkTextureLODGatherFormatPropertiesAMD) VULKAN_DEFAULT_CUSTOM_REPACK(VkThrottleHintSubmitInfoSEC) VULKAN_DEFAULT_CUSTOM_REPACK(VkTileMemoryBindInfoQCOM) VULKAN_DEFAULT_CUSTOM_REPACK(VkTileMemoryRequirementsQCOM) VULKAN_DEFAULT_CUSTOM_REPACK(VkTileMemorySizeInfoQCOM) VULKAN_DEFAULT_CUSTOM_REPACK(VkTilePropertiesQCOM) VULKAN_DEFAULT_CUSTOM_REPACK(VkTimelineSemaphoreSubmitInfo) // VULKAN_DEFAULT_CUSTOM_REPACK(VkValidationCacheCreateInfoEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkValidationFeaturesEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkValidationFlagsEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkVertexInputAttributeDescription2EXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkVertexInputBindingDescription2EXT) // VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoBeginCodingInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoCapabilitiesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoCodingControlInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoDecodeAV1CapabilitiesKHR) // VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoDecodeAV1DpbSlotInfoKHR) // VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoDecodeAV1InlineSessionParametersInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoDecodeAV1ProfileInfoKHR) // VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoDecodeAV1SessionParametersCreateInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoDecodeCapabilitiesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoDecodeH264CapabilitiesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoDecodeH264DpbSlotInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoDecodeH264PictureInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoDecodeH264ProfileInfoKHR) // VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoDecodeH264SessionParametersAddInfoKHR) // VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoDecodeH264SessionParametersCreateInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoDecodeH265CapabilitiesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoDecodeH265DpbSlotInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoDecodeH265PictureInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoDecodeH265ProfileInfoKHR) // VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoDecodeH265SessionParametersAddInfoKHR) // VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoDecodeH265SessionParametersCreateInfoKHR) // VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoDecodeInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoDecodeUsageInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoDecodeVP9CapabilitiesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoDecodeVP9ProfileInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoEncodeAV1CapabilitiesKHR) // VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoEncodeAV1DpbSlotInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoEncodeAV1GopRemainingFrameInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoEncodeAV1ProfileInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoEncodeAV1QualityLevelPropertiesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoEncodeAV1QuantizationMapCapabilitiesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoEncodeAV1RateControlInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoEncodeAV1RateControlLayerInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoEncodeAV1SessionCreateInfoKHR) // VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoEncodeAV1SessionParametersCreateInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoEncodeCapabilitiesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoEncodeFeedback2CapabilitiesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoEncodeH264CapabilitiesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoEncodeH264DpbSlotInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoEncodeH264GopRemainingFrameInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoEncodeH264ProfileInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoEncodeH264QualityLevelPropertiesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoEncodeH264QuantizationMapCapabilitiesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoEncodeH264RateControlInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoEncodeH264RateControlLayerInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoEncodeH264SessionCreateInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoEncodeH264SessionParametersFeedbackInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoEncodeH264SessionParametersGetInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoEncodeH265CapabilitiesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoEncodeH265DpbSlotInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoEncodeH265GopRemainingFrameInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoEncodeH265ProfileInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoEncodeH265QualityLevelPropertiesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoEncodeH265QuantizationMapCapabilitiesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoEncodeH265RateControlInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoEncodeH265RateControlLayerInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoEncodeH265SessionCreateInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoEncodeH265SessionParametersFeedbackInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoEncodeH265SessionParametersGetInfoKHR) // VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoEncodeInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoEncodeIntraRefreshCapabilitiesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoEncodeIntraRefreshInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoEncodeProfileRgbConversionInfoVALVE) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoEncodeQualityLevelInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoEncodeQualityLevelPropertiesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoEncodeQuantizationMapCapabilitiesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoEncodeQuantizationMapInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoEncodeQuantizationMapSessionParametersCreateInfoKHR) // VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoEncodeRateControlInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoEncodeRateControlLayerInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoEncodeRgbConversionCapabilitiesVALVE) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoEncodeSessionIntraRefreshCreateInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoEncodeSessionParametersFeedbackInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoEncodeSessionParametersGetInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoEncodeSessionRgbConversionCreateInfoVALVE) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoEncodeUsageInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoEndCodingInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoFormatAV1QuantizationMapPropertiesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoFormatH265QuantizationMapPropertiesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoFormatPropertiesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoFormatQuantizationMapPropertiesKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoInlineQueryInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoPictureResourceInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoProfileInfoKHR) // VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoProfileListInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoReferenceIntraRefreshInfoKHR) // VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoReferenceSlotInfoKHR) // VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoSessionCreateInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoSessionMemoryRequirementsKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoSessionParametersCreateInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkVideoSessionParametersUpdateInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkWaylandSurfaceCreateInfoKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkWriteDescriptorSet) // TODO: This should be non-default instead VULKAN_DEFAULT_CUSTOM_REPACK(VkWriteDescriptorSetAccelerationStructureKHR) VULKAN_DEFAULT_CUSTOM_REPACK(VkWriteDescriptorSetAccelerationStructureNV) // VULKAN_DEFAULT_CUSTOM_REPACK(VkWriteDescriptorSetInlineUniformBlock) VULKAN_DEFAULT_CUSTOM_REPACK(VkWriteDescriptorSetPartitionedAccelerationStructureNV) VULKAN_DEFAULT_CUSTOM_REPACK(VkWriteDescriptorSetTensorARM) VULKAN_DEFAULT_CUSTOM_REPACK(VkWriteIndirectExecutionSetPipelineEXT) VULKAN_DEFAULT_CUSTOM_REPACK(VkWriteIndirectExecutionSetShaderEXT) VULKAN_NONDEFAULT_CUSTOM_REPACK(VkXcbSurfaceCreateInfoKHR) VULKAN_NONDEFAULT_CUSTOM_REPACK(VkXlibSurfaceCreateInfoKHR) void fex_custom_repack_entry(host_layout& into, const guest_layout& from) { default_fex_custom_repack_entry(into, from); auto HostApplicationInfo = new host_layout {*from.data.pApplicationInfo.get_pointer()}; fex_apply_custom_repacking_entry(*HostApplicationInfo, *from.data.pApplicationInfo.get_pointer()); into.data.pApplicationInfo = &HostApplicationInfo->data; auto extension_count = from.data.enabledExtensionCount.data; into.data.ppEnabledExtensionNames = RepackStructArray(extension_count, from.data.ppEnabledExtensionNames).data(); auto layer_count = from.data.enabledLayerCount.data; into.data.ppEnabledLayerNames = RepackStructArray(layer_count, from.data.ppEnabledLayerNames).data(); } bool fex_custom_repack_exit(guest_layout& into, const host_layout& from) { delete from.data.pApplicationInfo; delete[] from.data.ppEnabledExtensionNames; delete[] from.data.ppEnabledLayerNames; return false; } void fex_custom_repack_entry(host_layout& into, const guest_layout& from) { default_fex_custom_repack_entry(into, from); into.data.pHostPointer = from.data.pHostPointer.get_pointer(); } bool fex_custom_repack_exit(guest_layout& into, const host_layout& from) { return false; } void fex_custom_repack_entry(host_layout& into, const guest_layout& from) { default_fex_custom_repack_entry(into, from); auto HostQueueCreateInfo = new host_layout {*from.data.pQueueCreateInfos.get_pointer()}; fex_apply_custom_repacking_entry(*HostQueueCreateInfo, *from.data.pQueueCreateInfos.get_pointer()); into.data.pQueueCreateInfos = &HostQueueCreateInfo->data; auto layer_count = from.data.enabledExtensionCount.data; fprintf(stderr, " Repacking %d ppEnabledLayerNames\n", layer_count); into.data.ppEnabledLayerNames = RepackStructArray(layer_count, from.data.ppEnabledLayerNames).data(); auto extension_count = from.data.enabledExtensionCount.data; fprintf(stderr, " Repacking %d ppEnabledExtensionNames\n", extension_count); into.data.ppEnabledExtensionNames = RepackStructArray(extension_count, from.data.ppEnabledExtensionNames).data(); } bool fex_custom_repack_exit(guest_layout& into, const host_layout& from) { delete from.data.pQueueCreateInfos; delete[] from.data.ppEnabledExtensionNames; delete[] from.data.ppEnabledLayerNames; return false; } void fex_custom_repack_entry(host_layout& into, const guest_layout& from) { default_fex_custom_repack_entry(into, from); into.data.pBindings = RepackStructArray(from.data.bindingCount.data, from.data.pBindings).data(); } bool fex_custom_repack_exit(guest_layout& into, const host_layout& from) { delete[] from.data.pBindings; return false; } void fex_custom_repack_entry(host_layout& into, const guest_layout& from) { default_fex_custom_repack_entry(into, from); into.data.pSubpasses = RepackStructArray(from.data.subpassCount.data, from.data.pSubpasses).data(); } bool fex_custom_repack_exit(guest_layout& into, const host_layout& from) { delete[] from.data.pSubpasses; return false; } void fex_custom_repack_entry(host_layout& into, const guest_layout& from) { default_fex_custom_repack_entry(into, from); into.data.pAttachments = RepackStructArray(from.data.attachmentCount.data, from.data.pAttachments).data(); into.data.pSubpasses = RepackStructArray(from.data.subpassCount.data, from.data.pSubpasses).data(); into.data.pDependencies = RepackStructArray(from.data.dependencyCount.data, from.data.pDependencies).data(); } bool fex_custom_repack_exit(guest_layout& into, const host_layout& from) { DeleteRepackedStructArray(from.data.attachmentCount, from.data.pAttachments, into.data.pAttachments); DeleteRepackedStructArray(from.data.subpassCount, from.data.pSubpasses, into.data.pSubpasses); DeleteRepackedStructArray(from.data.dependencyCount, from.data.pDependencies, into.data.pDependencies); return false; } void fex_custom_repack_entry(host_layout& into, const guest_layout& from) { default_fex_custom_repack_entry(into, from); into.data.pInputAttachments = RepackStructArray(from.data.inputAttachmentCount.data, from.data.pInputAttachments).data(); into.data.pColorAttachments = RepackStructArray(from.data.colorAttachmentCount.data, from.data.pColorAttachments).data(); into.data.pResolveAttachments = RepackStructArray(from.data.colorAttachmentCount.data, from.data.pResolveAttachments).data(); if (from.data.pDepthStencilAttachment.data == 0) { into.data.pDepthStencilAttachment = nullptr; } else { into.data.pDepthStencilAttachment = new VkAttachmentReference2; auto in_data = host_layout {*from.data.pDepthStencilAttachment.get_pointer()}; fex_apply_custom_repacking_entry(in_data, *from.data.pDepthStencilAttachment.get_pointer()); memcpy((void*)into.data.pDepthStencilAttachment, &in_data.data, sizeof(VkAttachmentReference2)); } } bool fex_custom_repack_exit(guest_layout& into, const host_layout& from) { DeleteRepackedStructArray(from.data.inputAttachmentCount, from.data.pInputAttachments, into.data.pInputAttachments); DeleteRepackedStructArray(from.data.colorAttachmentCount, from.data.pColorAttachments, into.data.pColorAttachments); DeleteRepackedStructArray(from.data.colorAttachmentCount, from.data.pResolveAttachments, into.data.pResolveAttachments); if (from.data.pDepthStencilAttachment) { fex_apply_custom_repacking_exit(*into.data.pDepthStencilAttachment.get_pointer(), to_host_layout(*from.data.pDepthStencilAttachment)); delete from.data.pDepthStencilAttachment; } return false; } void fex_custom_repack_entry(host_layout& into, const guest_layout& from) { default_fex_custom_repack_entry(into, from); into.data.pColorAttachments = RepackStructArray(from.data.colorAttachmentCount.data, from.data.pColorAttachments).data(); if (from.data.pDepthAttachment.get_pointer() == nullptr) { into.data.pDepthAttachment = nullptr; } else { into.data.pDepthAttachment = new VkRenderingAttachmentInfo; auto in_data = host_layout {*from.data.pDepthAttachment.get_pointer()}; fex_apply_custom_repacking_entry(in_data, *from.data.pDepthAttachment.get_pointer()); memcpy((void*)into.data.pDepthAttachment, &in_data.data, sizeof(VkRenderingAttachmentInfo)); } if (from.data.pStencilAttachment.get_pointer() == nullptr) { into.data.pStencilAttachment = nullptr; } else { into.data.pStencilAttachment = new VkRenderingAttachmentInfo; auto in_data = host_layout {*from.data.pStencilAttachment.get_pointer()}; fex_apply_custom_repacking_entry(in_data, *from.data.pStencilAttachment.get_pointer()); memcpy((void*)into.data.pStencilAttachment, &in_data.data, sizeof(VkRenderingAttachmentInfo)); } } bool fex_custom_repack_exit(guest_layout& into, const host_layout& from) { DeleteRepackedStructArray(from.data.colorAttachmentCount, from.data.pColorAttachments, into.data.pColorAttachments); if (from.data.pDepthAttachment) { fex_apply_custom_repacking_exit(*into.data.pDepthAttachment.get_pointer(), to_host_layout(*from.data.pDepthAttachment)); delete from.data.pDepthAttachment; } if (from.data.pStencilAttachment) { fex_apply_custom_repacking_exit(*into.data.pStencilAttachment.get_pointer(), to_host_layout(*from.data.pStencilAttachment)); delete from.data.pStencilAttachment; } return false; } void fex_custom_repack_entry(host_layout& into, const guest_layout& from) { default_fex_custom_repack_entry(into, from); switch (into.data.type) { case VK_DESCRIPTOR_TYPE_SAMPLER: case VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER: case VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE: case VK_DESCRIPTOR_TYPE_STORAGE_IMAGE: case VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT: { // VkSampler* or VkDescriptorImageInfo*. Handle by zero-extending guest_layout guest_data; memcpy(&guest_data, from.data.data.union_storage, sizeof(guest_data)); into.data.data.pSampler = host_layout {guest_data}.data; break; } case VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER: case VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER: case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER: case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER: { // VkDescriptorAddressInfoEXT*. Repacking required guest_layout guest_ptr; memcpy(&guest_ptr, from.data.data.union_storage, sizeof(guest_ptr)); auto child_mem = (char*)aligned_alloc(alignof(host_layout), sizeof(host_layout)); auto child = new (child_mem) host_layout {*guest_ptr.get_pointer()}; default_fex_custom_repack_entry(*child, *guest_ptr.get_pointer()); into.data.data.pUniformBuffer = &child->data; break; } case VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR: case VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV: { // Copy unmodified static_assert(sizeof(guest_layout) == sizeof(uint64_t)); memcpy(&into.data.data.accelerationStructure, &from.data.data, sizeof(uint64_t)); } case VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM: case VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM: case VK_DESCRIPTOR_TYPE_MUTABLE_EXT: case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC: case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC: case VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK: default: fprintf(stderr, "ERROR: Invalid descriptor type used in VkDescriptorGetInfoEXT"); std::abort(); } } bool fex_custom_repack_exit(guest_layout& into, const host_layout& from) { switch (from.data.type) { case VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER: case VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER: case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER: case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER: // Delete storage allocated on entry free((void*)from.data.data.pUniformBuffer); default: // Nothing to do for the rest break; } return false; } void fex_custom_repack_entry(host_layout& into, const guest_layout& from) { default_fex_custom_repack_entry(into, from); into.data.pRegions = RepackStructArray(from.data.regionCount.data, from.data.pRegions).data(); } bool fex_custom_repack_exit(guest_layout& into, const host_layout& from) { DeleteRepackedStructArray(from.data.regionCount, from.data.pRegions, into.data.pRegions); return false; } void fex_custom_repack_entry(host_layout& into, const guest_layout& from) { default_fex_custom_repack_entry(into, from); into.data.pMemoryBarriers = RepackStructArray(from.data.memoryBarrierCount.data, from.data.pMemoryBarriers).data(); into.data.pImageMemoryBarriers = RepackStructArray(from.data.imageMemoryBarrierCount.data, from.data.pImageMemoryBarriers).data(); into.data.pBufferMemoryBarriers = RepackStructArray(from.data.bufferMemoryBarrierCount.data, from.data.pBufferMemoryBarriers).data(); } bool fex_custom_repack_exit(guest_layout& into, const host_layout& from) { DeleteRepackedStructArray(from.data.memoryBarrierCount, from.data.pMemoryBarriers, into.data.pMemoryBarriers); DeleteRepackedStructArray(from.data.imageMemoryBarrierCount, from.data.pImageMemoryBarriers, into.data.pImageMemoryBarriers); DeleteRepackedStructArray(from.data.bufferMemoryBarrierCount, from.data.pBufferMemoryBarriers, into.data.pBufferMemoryBarriers); return false; } void fex_custom_repack_entry(host_layout& into, const guest_layout& from) { default_fex_custom_repack_entry(into, from); into.data.pDescriptorUpdateEntries = RepackStructArray(from.data.descriptorUpdateEntryCount.data, from.data.pDescriptorUpdateEntries).data(); } bool fex_custom_repack_exit(guest_layout& into, const host_layout& from) { DeleteRepackedStructArray(from.data.descriptorUpdateEntryCount, from.data.pDescriptorUpdateEntries, into.data.pDescriptorUpdateEntries); return false; } void fex_custom_repack_entry(host_layout& into, const guest_layout& from) { default_fex_custom_repack_entry(into, from); if (from.data.pSpecializationInfo.get_pointer()) { fprintf(stderr, "ERROR: Cannot repack non-null VkPipelineShaderStageCreateInfo::pSpecializationInfo yet"); std::abort(); } } bool fex_custom_repack_exit(guest_layout& into, const host_layout& from) { // TODO return false; } void fex_custom_repack_entry(host_layout& into, const guest_layout& from) { default_fex_custom_repack_entry(into, from); into.data.pStages = RepackStructArray(from.data.stageCount.data, from.data.pStages).data(); if (!from.data.pVertexInputState.get_pointer()) { into.data.pVertexInputState = nullptr; } else { into.data.pVertexInputState = &(new host_layout {*from.data.pVertexInputState.get_pointer()})->data; } if (!from.data.pInputAssemblyState.get_pointer()) { into.data.pInputAssemblyState = nullptr; } else { into.data.pInputAssemblyState = &(new host_layout {*from.data.pInputAssemblyState.get_pointer()})->data; } if (!from.data.pTessellationState.get_pointer()) { into.data.pTessellationState = nullptr; } else { into.data.pTessellationState = &(new host_layout {*from.data.pTessellationState.get_pointer()})->data; } if (!from.data.pViewportState.get_pointer()) { into.data.pViewportState = nullptr; } else { into.data.pViewportState = &(new host_layout {*from.data.pViewportState.get_pointer()})->data; } if (!from.data.pRasterizationState.get_pointer()) { into.data.pRasterizationState = nullptr; } else { into.data.pRasterizationState = &(new host_layout {*from.data.pRasterizationState.get_pointer()})->data; } if (!from.data.pMultisampleState.get_pointer()) { into.data.pMultisampleState = nullptr; } else { into.data.pMultisampleState = &(new host_layout {*from.data.pMultisampleState.get_pointer()})->data; } if (!from.data.pDepthStencilState.get_pointer()) { into.data.pDepthStencilState = nullptr; } else { into.data.pDepthStencilState = &(new host_layout {*from.data.pDepthStencilState.get_pointer()})->data; } if (!from.data.pColorBlendState.get_pointer()) { into.data.pColorBlendState = nullptr; } else { into.data.pColorBlendState = &(new host_layout {*from.data.pColorBlendState.get_pointer()})->data; } if (!from.data.pDynamicState.get_pointer()) { into.data.pDynamicState = nullptr; } else { into.data.pDynamicState = &(new host_layout {*from.data.pDynamicState.get_pointer()})->data; } } bool fex_custom_repack_exit(guest_layout& into, const host_layout& from) { delete[] from.data.pStages; delete from.data.pVertexInputState; delete from.data.pInputAssemblyState; delete from.data.pTessellationState; delete from.data.pViewportState; delete from.data.pRasterizationState; delete from.data.pMultisampleState; delete from.data.pDepthStencilState; delete from.data.pColorBlendState; delete from.data.pDynamicState; return false; } void fex_custom_repack_entry(host_layout& into, const guest_layout& from) { default_fex_custom_repack_entry(into, from); into.data.pCommandBuffers = RepackStructArray(from.data.commandBufferCount.data, from.data.pCommandBuffers).data(); } bool fex_custom_repack_exit(guest_layout& into, const host_layout& from) { delete[] from.data.pCommandBuffers; return false; } void fex_custom_repack_entry(host_layout& into, const guest_layout& from) { default_fex_custom_repack_entry(into, from); if (!from.data.pInheritanceInfo.get_pointer() || !from.data.pInheritanceInfo.data) { into.data.pInheritanceInfo = nullptr; return; } into.data.pInheritanceInfo = new VkCommandBufferInheritanceInfo; auto src = host_layout {*from.data.pInheritanceInfo.get_pointer()}.data; static_assert(sizeof(src) == sizeof(*into.data.pInheritanceInfo)); memcpy((void*)into.data.pInheritanceInfo, &src, sizeof(src)); } bool fex_custom_repack_exit(guest_layout& into, const host_layout& from) { delete from.data.pInheritanceInfo; return false; } void fex_custom_repack_entry(host_layout& into, const guest_layout& from) { default_fex_custom_repack_entry(into, from); // Same underlying layout, so there's nothing to do into.data.pInitialData = from.data.pInitialData.get_pointer(); } bool fex_custom_repack_exit(guest_layout& into, const host_layout& from) { // Nothing to do return false; } void fex_custom_repack_entry(host_layout& into, const guest_layout& from) { default_fex_custom_repack_entry(into, from); // Same underlying layout, so there's nothing to do into.data.pClearValues = reinterpret_cast(from.data.pClearValues.get_pointer()); } bool fex_custom_repack_exit(guest_layout& into, const host_layout& from) { // Nothing to do return false; } #endif EXPORTS(libvulkan)