renderdoc/driver/vulkan/vk_hookset_defs.h (1,823 lines of code) (raw):

/****************************************************************************** * The MIT License (MIT) * * Copyright (c) 2019-2024 Baldur Karlsson * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. ******************************************************************************/ #pragma once // extensions made core in 1.1 #define VK11 VK_MAKE_VERSION(1, 1, 0) // extensions made core in 1.2 #define VK12 VK_MAKE_VERSION(1, 2, 0) // extensions made core in 1.3 #define VK13 VK_MAKE_VERSION(1, 3, 0) // extensions that are not core in any version #define VKXX VK_MAKE_VERSION(99, 99, 0) #if defined(VK_USE_PLATFORM_WIN32_KHR) #define HookInitExtension_Instance_Win32() \ HookInitExtension(VK_KHR_win32_surface, CreateWin32SurfaceKHR); \ HookInitExtension(VK_KHR_win32_surface, GetPhysicalDeviceWin32PresentationSupportKHR); \ HookInitExtension(VK_EXT_full_screen_exclusive, GetPhysicalDeviceSurfacePresentModes2EXT); #define HookInitExtension_PhysDev_Win32() \ HookInitExtension(VK_KHR_win32_surface, GetPhysicalDeviceWin32PresentationSupportKHR); \ HookInitExtension(VK_EXT_full_screen_exclusive, GetPhysicalDeviceSurfacePresentModes2EXT); #define HookInitExtension_Device_Win32() \ HookInitExtension(VK_NV_win32_keyed_mutex, GetMemoryWin32HandleNV); \ HookInitExtension(VK_KHR_external_memory_win32, GetMemoryWin32HandleKHR); \ HookInitExtension(VK_KHR_external_memory_win32, GetMemoryWin32HandlePropertiesKHR); \ HookInitExtension(VK_KHR_external_semaphore_win32, ImportSemaphoreWin32HandleKHR); \ HookInitExtension(VK_KHR_external_semaphore_win32, GetSemaphoreWin32HandleKHR); \ HookInitExtension(VK_KHR_external_fence_win32, ImportFenceWin32HandleKHR); \ HookInitExtension(VK_KHR_external_fence_win32, GetFenceWin32HandleKHR); \ HookInitExtension(VK_EXT_full_screen_exclusive, AcquireFullScreenExclusiveModeEXT); \ HookInitExtension(VK_EXT_full_screen_exclusive, ReleaseFullScreenExclusiveModeEXT); \ HookInitExtension(VK_EXT_full_screen_exclusive, GetDeviceGroupSurfacePresentModes2EXT); #define HookDefine_Win32() \ HookDefine4(VkResult, vkCreateWin32SurfaceKHR, VkInstance, instance, \ const VkWin32SurfaceCreateInfoKHR *, pCreateInfo, const VkAllocationCallbacks *, \ pAllocator, VkSurfaceKHR *, pSurface); \ HookDefine2(VkBool32, vkGetPhysicalDeviceWin32PresentationSupportKHR, VkPhysicalDevice, \ physicalDevice, uint32_t, queueFamilyIndex); \ HookDefine4(VkResult, vkGetMemoryWin32HandleNV, VkDevice, device, VkDeviceMemory, memory, \ VkExternalMemoryHandleTypeFlagsNV, handleType, HANDLE *, pHandle); \ HookDefine3(VkResult, vkGetMemoryWin32HandleKHR, VkDevice, device, \ const VkMemoryGetWin32HandleInfoKHR *, pGetWin32HandleInfo, HANDLE *, pHandle); \ HookDefine4(VkResult, vkGetMemoryWin32HandlePropertiesKHR, VkDevice, device, \ VkExternalMemoryHandleTypeFlagBits, handleType, HANDLE, handle, \ VkMemoryWin32HandlePropertiesKHR *, pMemoryWin32HandleProperties); \ HookDefine2(VkResult, vkImportSemaphoreWin32HandleKHR, VkDevice, device, \ const VkImportSemaphoreWin32HandleInfoKHR *, pImportSemaphoreWin32HandleInfo); \ HookDefine3(VkResult, vkGetSemaphoreWin32HandleKHR, VkDevice, device, \ const VkSemaphoreGetWin32HandleInfoKHR *, pGetWin32HandleInfo, HANDLE *, pHandle); \ HookDefine2(VkResult, vkImportFenceWin32HandleKHR, VkDevice, device, \ const VkImportFenceWin32HandleInfoKHR *, pImportFenceWin32HandleInfo); \ HookDefine3(VkResult, vkGetFenceWin32HandleKHR, VkDevice, device, \ const VkFenceGetWin32HandleInfoKHR *, pGetWin32HandleInfo, HANDLE *, pHandle); \ HookDefine4(VkResult, vkGetPhysicalDeviceSurfacePresentModes2EXT, VkPhysicalDevice, \ physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR *, pSurfaceInfo, uint32_t *, \ pPresentModeCount, VkPresentModeKHR *, pPresentModes); \ HookDefine3(VkResult, vkGetDeviceGroupSurfacePresentModes2EXT, VkDevice, device, \ const VkPhysicalDeviceSurfaceInfo2KHR *, pSurfaceInfo, \ VkDeviceGroupPresentModeFlagsKHR *, pModes); \ HookDefine2(VkResult, vkAcquireFullScreenExclusiveModeEXT, VkDevice, device, VkSwapchainKHR, \ swapchain); \ HookDefine2(VkResult, vkReleaseFullScreenExclusiveModeEXT, VkDevice, device, VkSwapchainKHR, \ swapchain); #else // defined(VK_USE_PLATFORM_WIN32_KHR) #define HookInitExtension_Instance_Win32() #define HookInitExtension_PhysDev_Win32() #define HookInitExtension_Device_Win32() #define HookDefine_Win32() #endif // defined(VK_USE_PLATFORM_WIN32_KHR) #if defined(VK_USE_PLATFORM_MACOS_MVK) #define HookInitExtension_Instance_MVK() \ HookInitExtension(VK_MVK_macos_surface, CreateMacOSSurfaceMVK); #define HookDefine_MVK() \ HookDefine4(VkResult, vkCreateMacOSSurfaceMVK, VkInstance, instance, \ const VkMacOSSurfaceCreateInfoMVK *, pCreateInfo, const VkAllocationCallbacks *, \ pAllocator, VkSurfaceKHR *, pSurface); #else // defined(VK_USE_PLATFORM_MACOS_MVK) #define HookInitExtension_Instance_MVK() #define HookDefine_MVK() #endif // defined(VK_USE_PLATFORM_MACOS_MVK) #if defined(VK_USE_PLATFORM_METAL_EXT) #define HookInitExtension_Instance_Metal() \ HookInitExtension(VK_EXT_metal_surface, CreateMetalSurfaceEXT); #define HookDefine_Metal() \ HookDefine4(VkResult, vkCreateMetalSurfaceEXT, VkInstance, instance, \ const VkMetalSurfaceCreateInfoEXT *, pCreateInfo, const VkAllocationCallbacks *, \ pAllocator, VkSurfaceKHR *, pSurface); #else // defined(VK_USE_PLATFORM_METAL_EXT) #define HookInitExtension_Instance_Metal() #define HookDefine_Metal() #endif // defined(VK_USE_PLATFORM_METAL_EXT) #define HookInitExtension_Instance_Mac() \ HookInitExtension_Instance_MVK(); \ HookInitExtension_Instance_Metal(); #define HookDefine_Mac() \ HookDefine_MVK(); \ HookDefine_Metal(); #define HookInitExtension_PhysDev_Mac() #define HookInitExtension_Device_Mac() #if defined(VK_USE_PLATFORM_ANDROID_KHR) #define HookInitExtension_Instance_Android() \ HookInitExtension(VK_KHR_android_surface, CreateAndroidSurfaceKHR); #define HookInitExtension_Device_Android() \ HookInitExtension(VK_ANDROID_external_memory_android_hardware_buffer, \ GetMemoryAndroidHardwareBufferANDROID); \ HookInitExtension(VK_ANDROID_external_memory_android_hardware_buffer, \ GetAndroidHardwareBufferPropertiesANDROID); #define HookDefine_Android() \ HookDefine4(VkResult, vkCreateAndroidSurfaceKHR, VkInstance, instance, \ const VkAndroidSurfaceCreateInfoKHR *, pCreateInfo, const VkAllocationCallbacks *, \ pAllocator, VkSurfaceKHR *, pSurface); \ HookDefine3(VkResult, vkGetAndroidHardwareBufferPropertiesANDROID, VkDevice, device, \ const struct AHardwareBuffer *, buffer, VkAndroidHardwareBufferPropertiesANDROID *, \ pProperties); \ HookDefine3(VkResult, vkGetMemoryAndroidHardwareBufferANDROID, VkDevice, device, \ const VkMemoryGetAndroidHardwareBufferInfoANDROID *, pInfo, \ struct AHardwareBuffer **, pBuffer); #else // defined(VK_USE_PLATFORM_ANDROID_KHR) #define HookInitExtension_Instance_Android() #define HookInitExtension_Device_Android() #define HookDefine_Android() #endif // defined(VK_USE_PLATFORM_ANDROID_KHR) #define HookInitExtension_PhysDev_Android() #if defined(VK_USE_PLATFORM_GGP) #define HookInitExtension_Instance_GGP() \ HookInitExtension(VK_GGP_stream_descriptor_surface, CreateStreamDescriptorSurfaceGGP); #define HookDefine_GGP() \ HookDefine4(VkResult, vkCreateStreamDescriptorSurfaceGGP, VkInstance, instance, \ const VkStreamDescriptorSurfaceCreateInfoGGP *, pCreateInfo, \ const VkAllocationCallbacks *, pAllocator, VkSurfaceKHR *, pSurface); #else // defined(VK_USE_PLATFORM_GGP) #define HookInitExtension_Instance_GGP() #define HookDefine_GGP() #endif // defined(VK_USE_PLATFORM_GGP) #define HookInitExtension_PhysDev_GGP() #define HookInitExtension_Device_GGP() #if defined(VK_USE_PLATFORM_XCB_KHR) #define HookInitExtension_Instance_XCB() \ HookInitExtension(VK_KHR_xcb_surface, CreateXcbSurfaceKHR); \ HookInitExtension(VK_KHR_xcb_surface, GetPhysicalDeviceXcbPresentationSupportKHR); #define HookInitExtension_PhysDev_XCB() \ HookInitExtension(VK_KHR_xcb_surface, GetPhysicalDeviceXcbPresentationSupportKHR); #define HookDefine_XCB() \ HookDefine4(VkResult, vkCreateXcbSurfaceKHR, VkInstance, instance, \ const VkXcbSurfaceCreateInfoKHR *, pCreateInfo, const VkAllocationCallbacks *, \ pAllocator, VkSurfaceKHR *, pSurface); \ HookDefine4(VkBool32, vkGetPhysicalDeviceXcbPresentationSupportKHR, VkPhysicalDevice, \ physicalDevice, uint32_t, queueFamilyIndex, xcb_connection_t *, connection, \ xcb_visualid_t, visual_id); #else // defined(VK_USE_PLATFORM_XCB_KHR) #define HookInitExtension_Instance_XCB() #define HookInitExtension_PhysDev_XCB() #define HookDefine_XCB() #endif // defined(VK_USE_PLATFORM_XCB_KHR) #if defined(VK_USE_PLATFORM_WAYLAND_KHR) #define HookInitExtension_Instance_Wayland() \ HookInitExtension(VK_KHR_wayland_surface, CreateWaylandSurfaceKHR); \ HookInitExtension(VK_KHR_wayland_surface, GetPhysicalDeviceWaylandPresentationSupportKHR); #define HookInitExtension_PhysDev_Wayland() \ HookInitExtension(VK_KHR_wayland_surface, GetPhysicalDeviceWaylandPresentationSupportKHR); #define HookDefine_Wayland() \ HookDefine4(VkResult, vkCreateWaylandSurfaceKHR, VkInstance, instance, \ const VkWaylandSurfaceCreateInfoKHR *, pCreateInfo, const VkAllocationCallbacks *, \ pAllocator, VkSurfaceKHR *, pSurface); \ HookDefine3(VkBool32, vkGetPhysicalDeviceWaylandPresentationSupportKHR, VkPhysicalDevice, \ physicalDevice, uint32_t, queueFamilyIndex, struct wl_display *, display); #else // defined(VK_USE_PLATFORM_WAYLAND_KHR) #define HookInitExtension_Instance_Wayland() #define HookInitExtension_PhysDev_Wayland() #define HookDefine_Wayland() #endif // defined(VK_USE_PLATFORM_WAYLAND_KHR) #if defined(VK_USE_PLATFORM_XLIB_KHR) #define HookInitExtension_Instance_XLib() \ HookInitExtension(VK_KHR_xlib_surface, CreateXlibSurfaceKHR); \ HookInitExtension(VK_KHR_xlib_surface, GetPhysicalDeviceXlibPresentationSupportKHR); \ HookInitExtension(VK_EXT_acquire_xlib_display, AcquireXlibDisplayEXT); \ HookInitExtension(VK_EXT_acquire_xlib_display, GetRandROutputDisplayEXT); #define HookInitExtension_PhysDev_XLib() \ HookInitExtension(VK_KHR_xlib_surface, GetPhysicalDeviceXlibPresentationSupportKHR); \ HookInitExtension(VK_EXT_acquire_xlib_display, AcquireXlibDisplayEXT); \ HookInitExtension(VK_EXT_acquire_xlib_display, GetRandROutputDisplayEXT); #define HookDefine_XLib() \ HookDefine4(VkResult, vkCreateXlibSurfaceKHR, VkInstance, instance, \ const VkXlibSurfaceCreateInfoKHR *, pCreateInfo, const VkAllocationCallbacks *, \ pAllocator, VkSurfaceKHR *, pSurface); \ HookDefine4(VkBool32, vkGetPhysicalDeviceXlibPresentationSupportKHR, VkPhysicalDevice, \ physicalDevice, uint32_t, queueFamilyIndex, Display *, dpy, VisualID, visualID); \ HookDefine3(VkResult, vkAcquireXlibDisplayEXT, VkPhysicalDevice, physicalDevice, Display *, dpy, \ VkDisplayKHR, display); \ HookDefine4(VkResult, vkGetRandROutputDisplayEXT, VkPhysicalDevice, physicalDevice, Display *, \ dpy, RROutput, rrOutput, VkDisplayKHR *, pDisplay); #else // defined(VK_USE_PLATFORM_XLIB_KHR) #define HookInitExtension_Instance_XLib() #define HookInitExtension_PhysDev_XLib() #define HookDefine_XLib() #endif // defined(VK_USE_PLATFORM_XLIB_KHR) #define HookInitExtension_Instance_Linux() \ HookInitExtension_Instance_XCB(); \ HookInitExtension_Instance_XLib(); \ HookInitExtension_Instance_Wayland(); #define HookInitExtension_PhysDev_Linux() \ HookInitExtension_PhysDev_XCB(); \ HookInitExtension_PhysDev_XLib(); \ HookInitExtension_PhysDev_Wayland(); #define HookInitExtension_Device_Linux() #define HookDefine_Linux() \ HookDefine_XCB(); \ HookDefine_XLib(); \ HookDefine_Wayland(); #define HookInitVulkanInstance() \ HookInit(CreateInstance); \ HookInit(DestroyInstance); \ HookInit(EnumeratePhysicalDevices); \ HookInit(GetPhysicalDeviceFeatures); \ HookInit(GetPhysicalDeviceImageFormatProperties); \ HookInit(GetPhysicalDeviceFormatProperties); \ HookInit(GetPhysicalDeviceSparseImageFormatProperties); \ HookInit(GetPhysicalDeviceProperties); \ HookInit(GetPhysicalDeviceQueueFamilyProperties); \ HookInit(GetPhysicalDeviceMemoryProperties); #define HookInitVulkanInstance_PhysDev() \ HookInit(GetPhysicalDeviceFeatures); \ HookInit(GetPhysicalDeviceImageFormatProperties); \ HookInit(GetPhysicalDeviceFormatProperties); \ HookInit(GetPhysicalDeviceSparseImageFormatProperties); \ HookInit(GetPhysicalDeviceProperties); \ HookInit(GetPhysicalDeviceQueueFamilyProperties); \ HookInit(GetPhysicalDeviceMemoryProperties); #define HookInitVulkanDevice() \ HookInit(CreateDevice); \ HookInit(DestroyDevice); \ HookInit(GetDeviceQueue); \ HookInit(QueueSubmit); \ HookInit(QueueWaitIdle); \ HookInit(DeviceWaitIdle); \ HookInit(AllocateMemory); \ HookInit(FreeMemory); \ HookInit(MapMemory); \ HookInit(UnmapMemory); \ HookInit(FlushMappedMemoryRanges); \ HookInit(InvalidateMappedMemoryRanges); \ HookInit(GetDeviceMemoryCommitment); \ HookInit(BindBufferMemory); \ HookInit(BindImageMemory); \ HookInit(QueueBindSparse); \ HookInit(CreateBuffer); \ HookInit(DestroyBuffer); \ HookInit(CreateBufferView); \ HookInit(DestroyBufferView); \ HookInit(CreateImage); \ HookInit(DestroyImage); \ HookInit(GetImageSubresourceLayout); \ HookInit(GetBufferMemoryRequirements); \ HookInit(GetImageMemoryRequirements); \ HookInit(GetImageSparseMemoryRequirements); \ HookInit(CreateImageView); \ HookInit(DestroyImageView); \ HookInit(CreateShaderModule); \ HookInit(DestroyShaderModule); \ HookInit(CreateGraphicsPipelines); \ HookInit(CreateComputePipelines); \ HookInit(DestroyPipeline); \ HookInit(CreatePipelineCache); \ HookInit(GetPipelineCacheData); \ HookInit(MergePipelineCaches); \ HookInit(DestroyPipelineCache); \ HookInit(CreatePipelineLayout); \ HookInit(DestroyPipelineLayout); \ HookInit(CreateSemaphore); \ HookInit(DestroySemaphore); \ HookInit(CreateFence); \ HookInit(GetFenceStatus); \ HookInit(ResetFences); \ HookInit(WaitForFences); \ HookInit(DestroyFence); \ HookInit(CreateEvent); \ HookInit(GetEventStatus); \ HookInit(ResetEvent); \ HookInit(SetEvent); \ HookInit(DestroyEvent); \ HookInit(CreateQueryPool); \ HookInit(GetQueryPoolResults); \ HookInit(DestroyQueryPool); \ HookInit(CreateSampler); \ HookInit(DestroySampler); \ HookInit(CreateDescriptorSetLayout); \ HookInit(DestroyDescriptorSetLayout); \ HookInit(CreateDescriptorPool); \ HookInit(ResetDescriptorPool); \ HookInit(DestroyDescriptorPool); \ HookInit(AllocateDescriptorSets); \ HookInit(UpdateDescriptorSets); \ HookInit(FreeDescriptorSets); \ HookInit(GetRenderAreaGranularity); \ HookInit(CreateCommandPool); \ HookInit(DestroyCommandPool); \ HookInit(ResetCommandPool); \ HookInit(AllocateCommandBuffers); \ HookInit(FreeCommandBuffers); \ HookInit(BeginCommandBuffer); \ HookInit(EndCommandBuffer); \ HookInit(ResetCommandBuffer); \ HookInit(CmdBindPipeline); \ HookInit(CmdSetViewport); \ HookInit(CmdSetScissor); \ HookInit(CmdSetLineWidth); \ HookInit(CmdSetDepthBias); \ HookInit(CmdSetBlendConstants); \ HookInit(CmdSetDepthBounds); \ HookInit(CmdSetStencilCompareMask); \ HookInit(CmdSetStencilWriteMask); \ HookInit(CmdSetStencilReference); \ HookInit(CmdBindDescriptorSets); \ HookInit(CmdBindVertexBuffers); \ HookInit(CmdBindIndexBuffer); \ HookInit(CmdDraw); \ HookInit(CmdDrawIndirect); \ HookInit(CmdDrawIndexed); \ HookInit(CmdDrawIndexedIndirect); \ HookInit(CmdDispatch); \ HookInit(CmdDispatchIndirect); \ HookInit(CmdCopyBufferToImage); \ HookInit(CmdCopyImageToBuffer); \ HookInit(CmdCopyBuffer); \ HookInit(CmdCopyImage); \ HookInit(CmdBlitImage); \ HookInit(CmdResolveImage); \ HookInit(CmdUpdateBuffer); \ HookInit(CmdFillBuffer); \ HookInit(CmdPushConstants); \ HookInit(CmdClearColorImage); \ HookInit(CmdClearDepthStencilImage); \ HookInit(CmdClearAttachments); \ HookInit(CmdPipelineBarrier); \ HookInit(CmdWriteTimestamp); \ HookInit(CmdCopyQueryPoolResults); \ HookInit(CmdBeginQuery); \ HookInit(CmdEndQuery); \ HookInit(CmdResetQueryPool); \ HookInit(CmdSetEvent); \ HookInit(CmdResetEvent); \ HookInit(CmdWaitEvents); \ HookInit(CreateFramebuffer); \ HookInit(DestroyFramebuffer); \ HookInit(CreateRenderPass); \ HookInit(DestroyRenderPass); \ HookInit(CmdBeginRenderPass); \ HookInit(CmdNextSubpass); \ HookInit(CmdExecuteCommands); \ HookInit(CmdEndRenderPass); // We can always build in VK_KHR_display and VK_KHR_display_swapchain support // because they don't need any libraries or headers. // They're not really used or relevant on win32/android but for platform simplicity // we just include it always, it does no harm to include. // this is the union of the lists below - necessary because some extensions are in both lists // (device extensions with physical device functions) #define DeclExts() \ DeclExt(KHR_xlib_surface); \ DeclExt(KHR_xcb_surface); \ DeclExt(KHR_win32_surface); \ DeclExt(KHR_android_surface); \ DeclExt(MVK_macos_surface); \ DeclExt(KHR_surface); \ DeclExt(GGP_stream_descriptor_surface); \ DeclExt(EXT_debug_report); \ DeclExt(KHR_display); \ DeclExt(NV_external_memory_capabilities); \ DeclExt(KHR_get_physical_device_properties2); \ DeclExt(EXT_display_surface_counter); \ DeclExt(EXT_direct_mode_display); \ DeclExt(EXT_acquire_xlib_display); \ DeclExt(KHR_external_memory_capabilities); \ DeclExt(KHR_external_semaphore_capabilities); \ DeclExt(KHR_external_fence_capabilities); \ DeclExt(EXT_debug_utils); \ DeclExt(KHR_device_group_creation); \ DeclExt(protected_memory); \ DeclExt(KHR_get_surface_capabilities2); \ DeclExt(KHR_get_display_properties2); \ DeclExt(EXT_headless_surface); \ DeclExt(EXT_metal_surface); \ DeclExt(KHR_wayland_surface); \ DeclExt(EXT_acquire_drm_display); \ /* device extensions */ \ DeclExt(EXT_debug_marker); \ DeclExt(GGP_frame_token); \ DeclExt(KHR_swapchain); \ DeclExt(KHR_display_swapchain); \ DeclExt(NV_external_memory); \ DeclExt(NV_external_memory_win32); \ DeclExt(NV_win32_keyed_mutex); \ DeclExt(KHR_maintenance1); \ DeclExt(KHR_maintenance2); \ DeclExt(KHR_maintenance3); \ DeclExt(EXT_display_control); \ DeclExt(KHR_external_memory); \ DeclExt(KHR_external_memory_win32); \ DeclExt(KHR_external_memory_fd); \ DeclExt(KHR_external_semaphore); \ DeclExt(KHR_external_semaphore_win32); \ DeclExt(KHR_external_semaphore_fd); \ DeclExt(KHR_external_fence); \ DeclExt(KHR_external_fence_win32); \ DeclExt(KHR_external_fence_fd); \ DeclExt(KHR_get_memory_requirements2); \ DeclExt(AMD_shader_info); \ DeclExt(KHR_push_descriptor); \ DeclExt(KHR_descriptor_update_template); \ DeclExt(KHR_bind_memory2); \ DeclExt(EXT_conservative_rasterization); \ DeclExt(EXT_global_priority); \ DeclExt(AMD_buffer_marker); \ DeclExt(EXT_vertex_attribute_divisor); \ DeclExt(EXT_sampler_filter_minmax); \ DeclExt(KHR_sampler_ycbcr_conversion); \ DeclExt(KHR_device_group); \ DeclExt(MVK_moltenvk); \ DeclExt(KHR_draw_indirect_count); \ DeclExt(EXT_validation_cache); \ DeclExt(KHR_shared_presentable_image); \ DeclExt(KHR_create_renderpass2); \ DeclExt(EXT_transform_feedback); \ DeclExt(EXT_conditional_rendering); \ DeclExt(EXT_sample_locations); \ DeclExt(EXT_discard_rectangles); \ DeclExt(EXT_calibrated_timestamps); \ DeclExt(EXT_host_query_reset); \ DeclExt(EXT_buffer_device_address); \ DeclExt(EXT_full_screen_exclusive); \ DeclExt(EXT_hdr_metadata); \ DeclExt(AMD_display_native_hdr); \ DeclExt(EXT_depth_clip_control); \ DeclExt(EXT_depth_clip_enable); \ DeclExt(KHR_pipeline_executable_properties); \ DeclExt(AMD_negative_viewport_height); \ DeclExt(EXT_line_rasterization); \ DeclExt(GOOGLE_display_timing); \ DeclExt(KHR_timeline_semaphore); \ DeclExt(KHR_performance_query); \ DeclExt(KHR_buffer_device_address); \ DeclExt(EXT_tooling_info); \ DeclExt(KHR_separate_depth_stencil_layouts); \ DeclExt(KHR_shader_non_semantic_info); \ DeclExt(EXT_inline_uniform_block); \ DeclExt(EXT_custom_border_color); \ DeclExt(EXT_robustness2); \ DeclExt(EXT_pipeline_creation_cache_control); \ DeclExt(EXT_primitive_topology_list_restart); \ DeclExt(EXT_primitives_generated_query); \ DeclExt(EXT_private_data); \ DeclExt(EXT_extended_dynamic_state); \ DeclExt(EXT_rasterization_order_attachment_access); \ DeclExt(KHR_copy_commands2); \ DeclExt(KHR_synchronization2); \ DeclExt(KHR_present_wait); \ DeclExt(KHR_maintenance4); \ DeclExt(EXT_color_write_enable); \ DeclExt(EXT_extended_dynamic_state2); \ DeclExt(EXT_multisampled_render_to_single_sampled); \ DeclExt(EXT_vertex_input_dynamic_state); \ DeclExt(KHR_dynamic_rendering); \ DeclExt(KHR_fragment_shading_rate); \ DeclExt(EXT_attachment_feedback_loop_layout); \ DeclExt(EXT_pageable_device_local_memory); \ DeclExt(EXT_swapchain_maintenance1); \ DeclExt(EXT_provoking_vertex); \ DeclExt(EXT_attachment_feedback_loop_dynamic_state); \ DeclExt(EXT_extended_dynamic_state3); \ DeclExt(EXT_mesh_shader); \ DeclExt(EXT_scalar_block_layout); \ DeclExt(KHR_vertex_attribute_divisor); \ DeclExt(KHR_line_rasterization); \ DeclExt(KHR_calibrated_timestamps); \ DeclExt(KHR_deferred_host_operations); \ DeclExt(KHR_acceleration_structure); \ DeclExt(KHR_ray_query); \ DeclExt(EXT_nested_command_buffer); \ DeclExt(EXT_shader_object); // for simplicity and since the check itself is platform agnostic, // these aren't protected in platform defines #define CheckInstanceExts() \ CheckExt(KHR_xlib_surface, VKXX); \ CheckExt(KHR_xcb_surface, VKXX); \ CheckExt(KHR_win32_surface, VKXX); \ CheckExt(KHR_android_surface, VKXX); \ CheckExt(MVK_macos_surface, VKXX); \ CheckExt(KHR_surface, VKXX); \ CheckExt(GGP_stream_descriptor_surface, VKXX); \ CheckExt(EXT_debug_report, VKXX); \ CheckExt(KHR_display, VKXX); \ CheckExt(NV_external_memory_capabilities, VKXX); \ CheckExt(KHR_get_physical_device_properties2, VK11); \ CheckExt(EXT_display_surface_counter, VKXX); \ CheckExt(EXT_direct_mode_display, VKXX); \ CheckExt(EXT_acquire_xlib_display, VKXX); \ CheckExt(KHR_external_memory_capabilities, VK11); \ CheckExt(KHR_external_semaphore_capabilities, VK11); \ CheckExt(KHR_external_fence_capabilities, VK11); \ CheckExt(EXT_debug_utils, VKXX); \ CheckExt(KHR_device_group_creation, VK11); \ CheckExt(protected_memory, VK11); \ CheckExt(KHR_get_surface_capabilities2, VKXX); \ CheckExt(KHR_get_display_properties2, VKXX); \ CheckExt(EXT_sample_locations, VKXX); \ CheckExt(EXT_calibrated_timestamps, VKXX); \ CheckExt(EXT_full_screen_exclusive, VKXX); \ CheckExt(EXT_headless_surface, VKXX); \ CheckExt(EXT_metal_surface, VKXX); \ CheckExt(KHR_wayland_surface, VKXX); \ CheckExt(KHR_performance_query, VKXX); \ CheckExt(KHR_fragment_shading_rate, VKXX); \ CheckExt(EXT_acquire_drm_display, VKXX); \ CheckExt(KHR_calibrated_timestamps, VKXX); #define CheckDeviceExts() \ CheckExt(EXT_debug_marker, VKXX); \ CheckExt(GGP_frame_token, VKXX); \ CheckExt(KHR_swapchain, VKXX); \ CheckExt(KHR_display_swapchain, VKXX); \ CheckExt(NV_external_memory, VKXX); \ CheckExt(NV_external_memory_win32, VKXX); \ CheckExt(NV_win32_keyed_mutex, VKXX); \ CheckExt(KHR_maintenance1, VK11); \ CheckExt(KHR_maintenance2, VK11); \ CheckExt(KHR_maintenance3, VK11); \ CheckExt(EXT_display_control, VKXX); \ CheckExt(KHR_external_memory, VK11); \ CheckExt(KHR_external_memory_win32, VKXX); \ CheckExt(KHR_external_memory_fd, VKXX); \ CheckExt(KHR_external_semaphore, VK11); \ CheckExt(KHR_external_semaphore_win32, VKXX); \ CheckExt(KHR_external_semaphore_fd, VKXX); \ CheckExt(KHR_external_fence, VK11); \ CheckExt(KHR_external_fence_win32, VKXX); \ CheckExt(KHR_external_fence_fd, VKXX); \ CheckExt(KHR_get_memory_requirements2, VK11); \ CheckExt(AMD_shader_info, VKXX); \ CheckExt(KHR_push_descriptor, VKXX); \ CheckExt(KHR_descriptor_update_template, VK11); \ CheckExt(KHR_bind_memory2, VK11); \ CheckExt(EXT_conservative_rasterization, VKXX); \ CheckExt(EXT_global_priority, VKXX); \ CheckExt(AMD_buffer_marker, VKXX); \ CheckExt(EXT_sampler_filter_minmax, VK12); \ CheckExt(KHR_sampler_ycbcr_conversion, VK11); \ CheckExt(KHR_device_group, VK11); \ CheckExt(MVK_moltenvk, VKXX); \ CheckExt(KHR_draw_indirect_count, VK12); \ CheckExt(EXT_validation_cache, VKXX); \ CheckExt(KHR_shared_presentable_image, VKXX); \ CheckExt(KHR_create_renderpass2, VK12); \ CheckExt(EXT_transform_feedback, VKXX); \ CheckExt(EXT_conditional_rendering, VKXX); \ CheckExt(EXT_sample_locations, VKXX); \ CheckExt(EXT_discard_rectangles, VKXX); \ CheckExt(EXT_calibrated_timestamps, VKXX); \ CheckExt(EXT_host_query_reset, VK12); \ CheckExt(EXT_buffer_device_address, VKXX); \ CheckExt(EXT_hdr_metadata, VKXX); \ CheckExt(AMD_display_native_hdr, VKXX); \ CheckExt(EXT_depth_clip_control, VKXX); \ CheckExt(EXT_depth_clip_enable, VKXX); \ CheckExt(KHR_pipeline_executable_properties, VKXX); \ CheckExt(AMD_negative_viewport_height, VKXX); \ CheckExt(EXT_line_rasterization, VKXX); \ CheckExt(GOOGLE_display_timing, VKXX); \ CheckExt(KHR_timeline_semaphore, VK12); \ CheckExt(KHR_performance_query, VKXX); \ CheckExt(KHR_buffer_device_address, VK12); \ CheckExt(EXT_tooling_info, VK13); \ CheckExt(KHR_separate_depth_stencil_layouts, VK12); \ CheckExt(KHR_shader_non_semantic_info, VK13); \ CheckExt(EXT_inline_uniform_block, VK13); \ CheckExt(EXT_custom_border_color, VKXX); \ CheckExt(EXT_robustness2, VKXX); \ CheckExt(EXT_pipeline_creation_cache_control, VKXX); \ CheckExt(EXT_primitive_topology_list_restart, VKXX); \ CheckExt(EXT_primitives_generated_query, VKXX); \ CheckExt(EXT_private_data, VK13); \ CheckExt(EXT_extended_dynamic_state, VK13); \ CheckExt(EXT_rasterization_order_attachment_access, VKXX); \ CheckExt(KHR_copy_commands2, VK13); \ CheckExt(KHR_synchronization2, VK13); \ CheckExt(KHR_present_wait, VKXX); \ CheckExt(KHR_maintenance4, VK13); \ CheckExt(EXT_color_write_enable, VKXX); \ CheckExt(EXT_extended_dynamic_state2, VK13); \ CheckExt(EXT_multisampled_render_to_single_sampled, VKXX); \ CheckExt(EXT_vertex_input_dynamic_state, VKXX); \ CheckExt(KHR_dynamic_rendering, VK13); \ CheckExt(KHR_fragment_shading_rate, VKXX); \ CheckExt(EXT_attachment_feedback_loop_layout, VKXX); \ CheckExt(EXT_pageable_device_local_memory, VKXX); \ CheckExt(EXT_swapchain_maintenance1, VKXX); \ CheckExt(EXT_provoking_vertex, VKXX); \ CheckExt(EXT_nested_command_buffer, VKXX); \ CheckExt(EXT_attachment_feedback_loop_dynamic_state, VKXX); \ CheckExt(EXT_extended_dynamic_state3, VKXX); \ CheckExt(EXT_mesh_shader, VKXX); \ CheckExt(EXT_scalar_block_layout, VK12); \ CheckExt(KHR_vertex_attribute_divisor, VKXX); \ CheckExt(KHR_line_rasterization, VKXX); \ CheckExt(KHR_calibrated_timestamps, VKXX); \ CheckExt(KHR_deferred_host_operations, VKXX); \ CheckExt(KHR_acceleration_structure, VKXX); \ CheckExt(KHR_ray_query, VKXX); \ CheckExt(EXT_shader_object, VKXX); #define HookInitVulkanInstanceExts_PhysDev() \ HookInitExtension(KHR_surface, GetPhysicalDeviceSurfaceSupportKHR); \ HookInitExtension(KHR_surface, GetPhysicalDeviceSurfaceCapabilitiesKHR); \ HookInitExtension(KHR_surface, GetPhysicalDeviceSurfaceFormatsKHR); \ HookInitExtension(KHR_surface, GetPhysicalDeviceSurfacePresentModesKHR); \ HookInitExtension(KHR_display, GetPhysicalDeviceDisplayPropertiesKHR); \ HookInitExtension(KHR_display, GetPhysicalDeviceDisplayPlanePropertiesKHR); \ HookInitExtension(KHR_display, GetDisplayPlaneSupportedDisplaysKHR); \ HookInitExtension(KHR_display, GetDisplayModePropertiesKHR); \ HookInitExtension(KHR_display, CreateDisplayModeKHR); \ HookInitExtension(KHR_display, GetDisplayPlaneCapabilitiesKHR); \ HookInitExtension(NV_external_memory_capabilities, \ GetPhysicalDeviceExternalImageFormatPropertiesNV); \ HookInitPromotedExtension(KHR_get_physical_device_properties2, GetPhysicalDeviceFeatures2, KHR); \ HookInitPromotedExtension(KHR_get_physical_device_properties2, GetPhysicalDeviceProperties2, KHR); \ HookInitPromotedExtension(KHR_get_physical_device_properties2, \ GetPhysicalDeviceFormatProperties2, KHR); \ HookInitPromotedExtension(KHR_get_physical_device_properties2, \ GetPhysicalDeviceImageFormatProperties2, KHR); \ HookInitPromotedExtension(KHR_get_physical_device_properties2, \ GetPhysicalDeviceQueueFamilyProperties2, KHR); \ HookInitPromotedExtension(KHR_get_physical_device_properties2, \ GetPhysicalDeviceMemoryProperties2, KHR); \ HookInitPromotedExtension(KHR_get_physical_device_properties2, \ GetPhysicalDeviceSparseImageFormatProperties2, KHR); \ HookInitExtension(EXT_direct_mode_display, ReleaseDisplayEXT); \ HookInitExtension(EXT_display_surface_counter, GetPhysicalDeviceSurfaceCapabilities2EXT); \ HookInitPromotedExtension(KHR_external_memory_capabilities, \ GetPhysicalDeviceExternalBufferProperties, KHR); \ HookInitPromotedExtension(KHR_external_semaphore_capabilities, \ GetPhysicalDeviceExternalSemaphoreProperties, KHR); \ HookInitPromotedExtension(KHR_external_fence_capabilities, \ GetPhysicalDeviceExternalFenceProperties, KHR); \ HookInitExtension(KHR_device_group_creation &&KHR_surface, GetPhysicalDevicePresentRectanglesKHR); \ HookInitExtension(KHR_get_surface_capabilities2, GetPhysicalDeviceSurfaceFormats2KHR); \ HookInitExtension(KHR_get_surface_capabilities2, GetPhysicalDeviceSurfaceCapabilities2KHR); \ HookInitExtension(KHR_get_display_properties2, GetPhysicalDeviceDisplayProperties2KHR); \ HookInitExtension(KHR_get_display_properties2, GetPhysicalDeviceDisplayPlaneProperties2KHR); \ HookInitExtension(EXT_sample_locations, GetPhysicalDeviceMultisamplePropertiesEXT); \ HookInitExtension(EXT_calibrated_timestamps, GetPhysicalDeviceCalibrateableTimeDomainsEXT); \ HookInitExtension(KHR_performance_query, \ EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR); \ HookInitExtension(KHR_performance_query, GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR); \ HookInitPromotedExtension(EXT_tooling_info, GetPhysicalDeviceToolProperties, EXT); \ HookInitExtension(KHR_fragment_shading_rate, GetPhysicalDeviceFragmentShadingRatesKHR); \ HookInitExtension(EXT_acquire_drm_display, AcquireDrmDisplayEXT); \ HookInitExtension(EXT_acquire_drm_display, GetDrmDisplayEXT); \ HookInitExtension(KHR_calibrated_timestamps, GetPhysicalDeviceCalibrateableTimeDomainsKHR); \ HookInitExtension_PhysDev_Win32(); \ HookInitExtension_PhysDev_Linux(); \ HookInitExtension_PhysDev_GGP(); \ HookInitExtension_PhysDev_Android(); \ HookInitExtension_PhysDev_Mac(); #define HookInitVulkanInstanceExts() \ HookInitExtension(KHR_surface, DestroySurfaceKHR); \ HookInitExtension(KHR_surface, GetPhysicalDeviceSurfaceSupportKHR); \ HookInitExtension(KHR_surface, GetPhysicalDeviceSurfaceCapabilitiesKHR); \ HookInitExtension(KHR_surface, GetPhysicalDeviceSurfaceFormatsKHR); \ HookInitExtension(KHR_surface, GetPhysicalDeviceSurfacePresentModesKHR); \ HookInitExtension(EXT_debug_report, CreateDebugReportCallbackEXT); \ HookInitExtension(EXT_debug_report, DestroyDebugReportCallbackEXT); \ HookInitExtension(EXT_debug_report, DebugReportMessageEXT); \ HookInitExtension(KHR_display, GetPhysicalDeviceDisplayPropertiesKHR); \ HookInitExtension(KHR_display, GetPhysicalDeviceDisplayPlanePropertiesKHR); \ HookInitExtension(KHR_display, GetDisplayPlaneSupportedDisplaysKHR); \ HookInitExtension(KHR_display, GetDisplayModePropertiesKHR); \ HookInitExtension(KHR_display, CreateDisplayModeKHR); \ HookInitExtension(KHR_display, GetDisplayPlaneCapabilitiesKHR); \ HookInitExtension(KHR_display, CreateDisplayPlaneSurfaceKHR); \ HookInitExtension(NV_external_memory_capabilities, \ GetPhysicalDeviceExternalImageFormatPropertiesNV); \ HookInitPromotedExtension(KHR_get_physical_device_properties2, GetPhysicalDeviceFeatures2, KHR); \ HookInitPromotedExtension(KHR_get_physical_device_properties2, GetPhysicalDeviceProperties2, KHR); \ HookInitPromotedExtension(KHR_get_physical_device_properties2, \ GetPhysicalDeviceFormatProperties2, KHR); \ HookInitPromotedExtension(KHR_get_physical_device_properties2, \ GetPhysicalDeviceImageFormatProperties2, KHR); \ HookInitPromotedExtension(KHR_get_physical_device_properties2, \ GetPhysicalDeviceQueueFamilyProperties2, KHR); \ HookInitPromotedExtension(KHR_get_physical_device_properties2, \ GetPhysicalDeviceMemoryProperties2, KHR); \ HookInitPromotedExtension(KHR_get_physical_device_properties2, \ GetPhysicalDeviceSparseImageFormatProperties2, KHR); \ HookInitExtension(EXT_direct_mode_display, ReleaseDisplayEXT); \ HookInitExtension(EXT_display_surface_counter, GetPhysicalDeviceSurfaceCapabilities2EXT); \ HookInitPromotedExtension(KHR_external_memory_capabilities, \ GetPhysicalDeviceExternalBufferProperties, KHR); \ HookInitPromotedExtension(KHR_external_semaphore_capabilities, \ GetPhysicalDeviceExternalSemaphoreProperties, KHR); \ HookInitPromotedExtension(KHR_external_fence_capabilities, \ GetPhysicalDeviceExternalFenceProperties, KHR); \ HookInitExtension(EXT_debug_utils, CreateDebugUtilsMessengerEXT); \ HookInitExtension(EXT_debug_utils, DestroyDebugUtilsMessengerEXT); \ HookInitExtension(EXT_debug_utils, SubmitDebugUtilsMessageEXT); \ HookInitPromotedExtension(KHR_device_group_creation, EnumeratePhysicalDeviceGroups, KHR); \ /* Not technically accurate - part of KHR_device_group - but these extensions are linked and */ \ /* should always be present/not present together. Keying from the instance extension ensures */ \ /* we'll load this function correctly when populating dispatch tables. */ \ HookInitExtension(KHR_device_group_creation &&KHR_surface, GetPhysicalDevicePresentRectanglesKHR); \ HookInitExtension(KHR_get_surface_capabilities2, GetPhysicalDeviceSurfaceFormats2KHR); \ HookInitExtension(KHR_get_surface_capabilities2, GetPhysicalDeviceSurfaceCapabilities2KHR); \ HookInitExtension(KHR_get_display_properties2, GetPhysicalDeviceDisplayProperties2KHR); \ HookInitExtension(KHR_get_display_properties2, GetPhysicalDeviceDisplayPlaneProperties2KHR); \ HookInitExtension(KHR_get_display_properties2, GetDisplayModeProperties2KHR); \ HookInitExtension(KHR_get_display_properties2, GetDisplayPlaneCapabilities2KHR); \ HookInitExtension(EXT_sample_locations, GetPhysicalDeviceMultisamplePropertiesEXT); \ HookInitExtension(EXT_calibrated_timestamps, GetPhysicalDeviceCalibrateableTimeDomainsEXT); \ HookInitExtension(EXT_headless_surface, CreateHeadlessSurfaceEXT); \ HookInitExtension(KHR_performance_query, \ EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR); \ HookInitExtension(KHR_performance_query, GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR); \ HookInitPromotedExtension(EXT_tooling_info, GetPhysicalDeviceToolProperties, EXT); \ HookInitExtension(KHR_fragment_shading_rate, GetPhysicalDeviceFragmentShadingRatesKHR); \ HookInitExtension(KHR_calibrated_timestamps, GetPhysicalDeviceCalibrateableTimeDomainsKHR); \ HookInitExtension_Instance_Win32(); \ HookInitExtension_Instance_Linux(); \ HookInitExtension_Instance_GGP(); \ HookInitExtension_Instance_Android(); \ HookInitExtension_Instance_Mac(); #define HookInitVulkanDeviceExts() \ HookInitExtension(EXT_debug_marker, DebugMarkerSetObjectTagEXT); \ HookInitExtension(EXT_debug_marker, DebugMarkerSetObjectNameEXT); \ HookInitExtension(EXT_debug_marker, CmdDebugMarkerBeginEXT); \ HookInitExtension(EXT_debug_marker, CmdDebugMarkerEndEXT); \ HookInitExtension(EXT_debug_marker, CmdDebugMarkerInsertEXT); \ HookInitExtension(KHR_swapchain, CreateSwapchainKHR); \ HookInitExtension(KHR_swapchain, DestroySwapchainKHR); \ HookInitExtension(KHR_swapchain, GetSwapchainImagesKHR); \ HookInitExtension(KHR_swapchain, AcquireNextImageKHR); \ HookInitExtension(KHR_swapchain, QueuePresentKHR); \ HookInitExtension(KHR_display_swapchain, CreateSharedSwapchainsKHR); \ HookInitPromotedExtension(KHR_maintenance1, TrimCommandPool, KHR); \ HookInitExtension(EXT_display_control, DisplayPowerControlEXT); \ HookInitExtension(EXT_display_control, RegisterDeviceEventEXT); \ HookInitExtension(EXT_display_control, RegisterDisplayEventEXT); \ HookInitExtension(EXT_display_control, GetSwapchainCounterEXT); \ HookInitExtension(KHR_external_memory_fd, GetMemoryFdKHR); \ HookInitExtension(KHR_external_memory_fd, GetMemoryFdPropertiesKHR); \ HookInitExtension(KHR_external_semaphore_fd, ImportSemaphoreFdKHR); \ HookInitExtension(KHR_external_semaphore_fd, GetSemaphoreFdKHR); \ HookInitExtension(KHR_external_fence_fd, ImportFenceFdKHR); \ HookInitExtension(KHR_external_fence_fd, GetFenceFdKHR); \ HookInitPromotedExtension(KHR_get_memory_requirements2, GetBufferMemoryRequirements2, KHR); \ HookInitPromotedExtension(KHR_get_memory_requirements2, GetImageMemoryRequirements2, KHR); \ HookInitPromotedExtension(KHR_get_memory_requirements2, GetImageSparseMemoryRequirements2, KHR); \ HookInitExtension(AMD_shader_info, GetShaderInfoAMD); \ HookInitExtension(KHR_push_descriptor, CmdPushDescriptorSetKHR); \ HookInitPromotedExtension(KHR_descriptor_update_template, CreateDescriptorUpdateTemplate, KHR); \ HookInitPromotedExtension(KHR_descriptor_update_template, DestroyDescriptorUpdateTemplate, KHR); \ HookInitPromotedExtension(KHR_descriptor_update_template, UpdateDescriptorSetWithTemplate, KHR); \ HookInitExtension(KHR_push_descriptor &&KHR_descriptor_update_template, \ CmdPushDescriptorSetWithTemplateKHR); \ HookInitPromotedExtension(KHR_bind_memory2, BindBufferMemory2, KHR); \ HookInitPromotedExtension(KHR_bind_memory2, BindImageMemory2, KHR); \ HookInitPromotedExtension(KHR_maintenance3, GetDescriptorSetLayoutSupport, KHR); \ HookInitExtension(AMD_buffer_marker, CmdWriteBufferMarkerAMD); \ HookInitExtension(EXT_debug_utils, SetDebugUtilsObjectNameEXT); \ HookInitExtension(EXT_debug_utils, SetDebugUtilsObjectTagEXT); \ HookInitExtension(EXT_debug_utils, QueueBeginDebugUtilsLabelEXT); \ HookInitExtension(EXT_debug_utils, QueueEndDebugUtilsLabelEXT); \ HookInitExtension(EXT_debug_utils, QueueInsertDebugUtilsLabelEXT); \ HookInitExtension(EXT_debug_utils, CmdBeginDebugUtilsLabelEXT); \ HookInitExtension(EXT_debug_utils, CmdEndDebugUtilsLabelEXT); \ HookInitExtension(EXT_debug_utils, CmdInsertDebugUtilsLabelEXT); \ HookInitPromotedExtension(KHR_sampler_ycbcr_conversion, CreateSamplerYcbcrConversion, KHR); \ HookInitPromotedExtension(KHR_sampler_ycbcr_conversion, DestroySamplerYcbcrConversion, KHR); \ HookInitPromotedExtension(KHR_device_group, GetDeviceGroupPeerMemoryFeatures, KHR); \ HookInitPromotedExtension(KHR_device_group, CmdSetDeviceMask, KHR); \ HookInitPromotedExtension(KHR_device_group, CmdDispatchBase, KHR); \ HookInitExtension(KHR_device_group &&KHR_surface, GetDeviceGroupPresentCapabilitiesKHR); \ HookInitExtension(KHR_device_group &&KHR_surface, GetDeviceGroupSurfacePresentModesKHR); \ HookInitExtension(KHR_device_group &&KHR_swapchain, AcquireNextImage2KHR); \ HookInitExtension(protected_memory, GetDeviceQueue2); \ HookInitPromotedExtension(KHR_draw_indirect_count, CmdDrawIndirectCount, KHR); \ HookInitPromotedExtension(KHR_draw_indirect_count, CmdDrawIndexedIndirectCount, KHR); \ HookInitExtension(EXT_validation_cache, CreateValidationCacheEXT); \ HookInitExtension(EXT_validation_cache, DestroyValidationCacheEXT); \ HookInitExtension(EXT_validation_cache, MergeValidationCachesEXT); \ HookInitExtension(EXT_validation_cache, GetValidationCacheDataEXT); \ HookInitExtension(KHR_shared_presentable_image, GetSwapchainStatusKHR); \ HookInitPromotedExtension(KHR_create_renderpass2, CreateRenderPass2, KHR); \ HookInitPromotedExtension(KHR_create_renderpass2, CmdBeginRenderPass2, KHR); \ HookInitPromotedExtension(KHR_create_renderpass2, CmdNextSubpass2, KHR); \ HookInitPromotedExtension(KHR_create_renderpass2, CmdEndRenderPass2, KHR); \ HookInitExtension(EXT_transform_feedback, CmdBindTransformFeedbackBuffersEXT); \ HookInitExtension(EXT_transform_feedback, CmdBeginTransformFeedbackEXT); \ HookInitExtension(EXT_transform_feedback, CmdEndTransformFeedbackEXT); \ HookInitExtension(EXT_transform_feedback, CmdBeginQueryIndexedEXT); \ HookInitExtension(EXT_transform_feedback, CmdEndQueryIndexedEXT); \ HookInitExtension(EXT_transform_feedback, CmdDrawIndirectByteCountEXT); \ HookInitExtension(EXT_conditional_rendering, CmdBeginConditionalRenderingEXT); \ HookInitExtension(EXT_conditional_rendering, CmdEndConditionalRenderingEXT); \ HookInitExtension(EXT_sample_locations, CmdSetSampleLocationsEXT); \ HookInitExtension(EXT_discard_rectangles, CmdSetDiscardRectangleEXT); \ HookInitExtension(EXT_calibrated_timestamps, GetCalibratedTimestampsEXT); \ HookInitPromotedExtension(EXT_host_query_reset, ResetQueryPool, EXT); \ HookInitExtension(EXT_buffer_device_address, GetBufferDeviceAddressEXT); \ HookInitExtension(EXT_hdr_metadata, SetHdrMetadataEXT); \ HookInitExtension(AMD_display_native_hdr, SetLocalDimmingAMD); \ HookInitExtension(KHR_pipeline_executable_properties, GetPipelineExecutablePropertiesKHR); \ HookInitExtension(KHR_pipeline_executable_properties, GetPipelineExecutableStatisticsKHR); \ HookInitExtension(KHR_pipeline_executable_properties, \ GetPipelineExecutableInternalRepresentationsKHR); \ HookInitExtension(EXT_line_rasterization, CmdSetLineStippleEXT); \ HookInitExtension(GOOGLE_display_timing, GetRefreshCycleDurationGOOGLE); \ HookInitExtension(GOOGLE_display_timing, GetPastPresentationTimingGOOGLE); \ HookInitPromotedExtension(KHR_timeline_semaphore, GetSemaphoreCounterValue, KHR); \ HookInitPromotedExtension(KHR_timeline_semaphore, WaitSemaphores, KHR); \ HookInitPromotedExtension(KHR_timeline_semaphore, SignalSemaphore, KHR); \ HookInitExtension(KHR_performance_query, AcquireProfilingLockKHR); \ HookInitExtension(KHR_performance_query, ReleaseProfilingLockKHR); \ HookInitPromotedExtension(KHR_buffer_device_address, GetBufferDeviceAddress, KHR); \ HookInitPromotedExtension(KHR_buffer_device_address, GetBufferOpaqueCaptureAddress, KHR); \ HookInitPromotedExtension(KHR_buffer_device_address, GetDeviceMemoryOpaqueCaptureAddress, KHR); \ HookInitPromotedExtension(EXT_private_data, CreatePrivateDataSlot, EXT); \ HookInitPromotedExtension(EXT_private_data, DestroyPrivateDataSlot, EXT); \ HookInitPromotedExtension(EXT_private_data, SetPrivateData, EXT); \ HookInitPromotedExtension(EXT_private_data, GetPrivateData, EXT); \ HookInitPromotedExtension(EXT_extended_dynamic_state || EXT_shader_object, CmdSetCullMode, EXT); \ HookInitPromotedExtension(EXT_extended_dynamic_state || EXT_shader_object, CmdSetFrontFace, EXT); \ HookInitPromotedExtension(EXT_extended_dynamic_state || EXT_shader_object, \ CmdSetPrimitiveTopology, EXT); \ HookInitPromotedExtension(EXT_extended_dynamic_state || EXT_shader_object, \ CmdSetViewportWithCount, EXT); \ HookInitPromotedExtension(EXT_extended_dynamic_state || EXT_shader_object, \ CmdSetScissorWithCount, EXT); \ HookInitPromotedExtension(EXT_extended_dynamic_state || EXT_shader_object, \ CmdBindVertexBuffers2, EXT); \ HookInitPromotedExtension(EXT_extended_dynamic_state || EXT_shader_object, \ CmdSetDepthTestEnable, EXT); \ HookInitPromotedExtension(EXT_extended_dynamic_state || EXT_shader_object, \ CmdSetDepthWriteEnable, EXT); \ HookInitPromotedExtension(EXT_extended_dynamic_state || EXT_shader_object, CmdSetDepthCompareOp, \ EXT); \ HookInitPromotedExtension(EXT_extended_dynamic_state || EXT_shader_object, \ CmdSetDepthBoundsTestEnable, EXT); \ HookInitPromotedExtension(EXT_extended_dynamic_state || EXT_shader_object, \ CmdSetStencilTestEnable, EXT); \ HookInitPromotedExtension(EXT_extended_dynamic_state || EXT_shader_object, CmdSetStencilOp, EXT); \ HookInitPromotedExtension(KHR_copy_commands2, CmdCopyBuffer2, KHR); \ HookInitPromotedExtension(KHR_copy_commands2, CmdCopyImage2, KHR); \ HookInitPromotedExtension(KHR_copy_commands2, CmdCopyBufferToImage2, KHR); \ HookInitPromotedExtension(KHR_copy_commands2, CmdCopyImageToBuffer2, KHR); \ HookInitPromotedExtension(KHR_copy_commands2, CmdBlitImage2, KHR); \ HookInitPromotedExtension(KHR_copy_commands2, CmdResolveImage2, KHR); \ HookInitPromotedExtension(KHR_synchronization2, CmdSetEvent2, KHR); \ HookInitPromotedExtension(KHR_synchronization2, CmdResetEvent2, KHR); \ HookInitPromotedExtension(KHR_synchronization2, CmdWaitEvents2, KHR); \ HookInitPromotedExtension(KHR_synchronization2, CmdPipelineBarrier2, KHR); \ HookInitPromotedExtension(KHR_synchronization2, CmdWriteTimestamp2, KHR); \ HookInitPromotedExtension(KHR_synchronization2, QueueSubmit2, KHR); \ HookInitExtension(KHR_synchronization2 &&AMD_buffer_marker, CmdWriteBufferMarker2AMD); \ /* No GetQueueCheckpointData2NV without VK_NV_device_diagnostic_checkpoints */ \ HookInitExtension(KHR_present_wait, WaitForPresentKHR); \ HookInitPromotedExtension(KHR_maintenance4, GetDeviceBufferMemoryRequirements, KHR); \ HookInitPromotedExtension(KHR_maintenance4, GetDeviceImageMemoryRequirements, KHR); \ HookInitPromotedExtension(KHR_maintenance4, GetDeviceImageSparseMemoryRequirements, KHR); \ HookInitExtension(EXT_color_write_enable, CmdSetColorWriteEnableEXT); \ HookInitPromotedExtension(EXT_extended_dynamic_state2 || EXT_shader_object, \ CmdSetDepthBiasEnable, EXT); \ HookInitExtension(EXT_extended_dynamic_state2 || EXT_shader_object, CmdSetLogicOpEXT); \ HookInitExtension(EXT_extended_dynamic_state2 || EXT_shader_object, CmdSetPatchControlPointsEXT); \ HookInitPromotedExtension(EXT_extended_dynamic_state2 || EXT_shader_object, \ CmdSetPrimitiveRestartEnable, EXT); \ HookInitPromotedExtension(EXT_extended_dynamic_state2 || EXT_shader_object, \ CmdSetRasterizerDiscardEnable, EXT); \ HookInitExtension(EXT_vertex_input_dynamic_state || EXT_shader_object, CmdSetVertexInputEXT); \ HookInitPromotedExtension(KHR_dynamic_rendering, CmdBeginRendering, KHR); \ HookInitPromotedExtension(KHR_dynamic_rendering, CmdEndRendering, KHR); \ HookInitExtension(KHR_fragment_shading_rate, CmdSetFragmentShadingRateKHR); \ HookInitExtension(EXT_pageable_device_local_memory, SetDeviceMemoryPriorityEXT); \ HookInitExtension(EXT_swapchain_maintenance1, ReleaseSwapchainImagesEXT); \ HookInitExtension(EXT_attachment_feedback_loop_dynamic_state, \ CmdSetAttachmentFeedbackLoopEnableEXT); \ HookInitExtension(EXT_extended_dynamic_state3 || EXT_shader_object, \ CmdSetAlphaToCoverageEnableEXT); \ HookInitExtension(EXT_extended_dynamic_state3 || EXT_shader_object, CmdSetAlphaToOneEnableEXT); \ HookInitExtension(EXT_extended_dynamic_state3 || EXT_shader_object, CmdSetColorBlendAdvancedEXT); \ HookInitExtension(EXT_extended_dynamic_state3 || EXT_shader_object, CmdSetColorBlendEnableEXT); \ HookInitExtension(EXT_extended_dynamic_state3 || EXT_shader_object, CmdSetColorBlendEquationEXT); \ HookInitExtension(EXT_extended_dynamic_state3 || EXT_shader_object, CmdSetColorWriteMaskEXT); \ HookInitExtension(EXT_extended_dynamic_state3 || EXT_shader_object, \ CmdSetConservativeRasterizationModeEXT); \ HookInitExtension(EXT_extended_dynamic_state3 || EXT_shader_object, \ CmdSetCoverageModulationModeNV); \ HookInitExtension(EXT_extended_dynamic_state3 || EXT_shader_object, \ CmdSetCoverageModulationTableEnableNV); \ HookInitExtension(EXT_extended_dynamic_state3 || EXT_shader_object, \ CmdSetCoverageModulationTableNV); \ HookInitExtension(EXT_extended_dynamic_state3 || EXT_shader_object, \ CmdSetCoverageReductionModeNV); \ HookInitExtension(EXT_extended_dynamic_state3 || EXT_shader_object, \ CmdSetCoverageToColorEnableNV); \ HookInitExtension(EXT_extended_dynamic_state3 || EXT_shader_object, \ CmdSetCoverageToColorLocationNV); \ HookInitExtension(EXT_extended_dynamic_state3 || EXT_shader_object, CmdSetDepthClampEnableEXT); \ HookInitExtension(EXT_extended_dynamic_state3 || EXT_shader_object, CmdSetDepthClipEnableEXT); \ HookInitExtension(EXT_extended_dynamic_state3 || EXT_shader_object, \ CmdSetDepthClipNegativeOneToOneEXT); \ HookInitExtension(EXT_extended_dynamic_state3 || EXT_shader_object, \ CmdSetExtraPrimitiveOverestimationSizeEXT); \ HookInitExtension(EXT_extended_dynamic_state3 || EXT_shader_object, \ CmdSetLineRasterizationModeEXT); \ HookInitExtension(EXT_extended_dynamic_state3 || EXT_shader_object, CmdSetLineStippleEnableEXT); \ HookInitExtension(EXT_extended_dynamic_state3 || EXT_shader_object, CmdSetLogicOpEnableEXT); \ HookInitExtension(EXT_extended_dynamic_state3 || EXT_shader_object, CmdSetPolygonModeEXT); \ HookInitExtension(EXT_extended_dynamic_state3 || EXT_shader_object, CmdSetProvokingVertexModeEXT); \ HookInitExtension(EXT_extended_dynamic_state3 || EXT_shader_object, \ CmdSetRasterizationSamplesEXT); \ HookInitExtension(EXT_extended_dynamic_state3 || EXT_shader_object, CmdSetRasterizationStreamEXT); \ HookInitExtension(EXT_extended_dynamic_state3 || EXT_shader_object, \ CmdSetRepresentativeFragmentTestEnableNV); \ HookInitExtension(EXT_extended_dynamic_state3 || EXT_shader_object, \ CmdSetSampleLocationsEnableEXT); \ HookInitExtension(EXT_extended_dynamic_state3 || EXT_shader_object, CmdSetSampleMaskEXT); \ HookInitExtension(EXT_extended_dynamic_state3 || EXT_shader_object, \ CmdSetShadingRateImageEnableNV); \ HookInitExtension(EXT_extended_dynamic_state3 || EXT_shader_object, \ CmdSetTessellationDomainOriginEXT); \ HookInitExtension(EXT_extended_dynamic_state3 || EXT_shader_object, CmdSetViewportSwizzleNV); \ HookInitExtension(EXT_extended_dynamic_state3 || EXT_shader_object, \ CmdSetViewportWScalingEnableNV); \ HookInitExtension(EXT_mesh_shader, CmdDrawMeshTasksEXT); \ HookInitExtension(EXT_mesh_shader, CmdDrawMeshTasksIndirectEXT); \ HookInitExtension(EXT_mesh_shader, CmdDrawMeshTasksIndirectCountEXT); \ HookInitExtension(KHR_calibrated_timestamps, GetCalibratedTimestampsKHR); \ HookInitExtension(KHR_line_rasterization, CmdSetLineStippleKHR); \ HookInitExtensionEXTtoKHR(CmdSetLineStipple); \ HookInitExtension(KHR_deferred_host_operations, CreateDeferredOperationKHR); \ HookInitExtension(KHR_deferred_host_operations, DeferredOperationJoinKHR); \ HookInitExtension(KHR_deferred_host_operations, DestroyDeferredOperationKHR); \ HookInitExtension(KHR_deferred_host_operations, GetDeferredOperationMaxConcurrencyKHR); \ HookInitExtension(KHR_deferred_host_operations, GetDeferredOperationResultKHR); \ HookInitExtension(KHR_acceleration_structure, BuildAccelerationStructuresKHR); \ HookInitExtension(KHR_acceleration_structure, CmdBuildAccelerationStructuresIndirectKHR); \ HookInitExtension(KHR_acceleration_structure, CmdBuildAccelerationStructuresKHR); \ HookInitExtension(KHR_acceleration_structure, CmdCopyAccelerationStructureKHR); \ HookInitExtension(KHR_acceleration_structure, CmdCopyAccelerationStructureToMemoryKHR); \ HookInitExtension(KHR_acceleration_structure, CmdCopyMemoryToAccelerationStructureKHR); \ HookInitExtension(KHR_acceleration_structure, CmdWriteAccelerationStructuresPropertiesKHR); \ HookInitExtension(KHR_acceleration_structure, CopyAccelerationStructureKHR); \ HookInitExtension(KHR_acceleration_structure, CopyAccelerationStructureToMemoryKHR); \ HookInitExtension(KHR_acceleration_structure, CopyMemoryToAccelerationStructureKHR); \ HookInitExtension(KHR_acceleration_structure, CreateAccelerationStructureKHR); \ HookInitExtension(KHR_acceleration_structure, DestroyAccelerationStructureKHR); \ HookInitExtension(KHR_acceleration_structure, GetAccelerationStructureBuildSizesKHR); \ HookInitExtension(KHR_acceleration_structure, GetAccelerationStructureDeviceAddressKHR); \ HookInitExtension(KHR_acceleration_structure, GetDeviceAccelerationStructureCompatibilityKHR); \ HookInitExtension(KHR_acceleration_structure, WriteAccelerationStructuresPropertiesKHR); \ HookInitExtension(EXT_shader_object, CmdBindShadersEXT); \ HookInitExtension(EXT_shader_object, CreateShadersEXT); \ HookInitExtension(EXT_shader_object, DestroyShaderEXT); \ HookInitExtension(EXT_shader_object, GetShaderBinaryDataEXT); \ HookInitExtension_Device_Win32(); \ HookInitExtension_Device_Linux(); \ HookInitExtension_Device_GGP(); \ HookInitExtension_Device_Android(); \ HookInitExtension_Device_Mac(); #define DefineHooks() \ HookDefine3(VkResult, vkEnumeratePhysicalDevices, VkInstance, instance, uint32_t *, \ pPhysicalDeviceCount, VkPhysicalDevice *, pPhysicalDevices); \ HookDefine2(void, vkGetPhysicalDeviceFeatures, VkPhysicalDevice, physicalDevice, \ VkPhysicalDeviceFeatures *, pFeatures); \ HookDefine3(void, vkGetPhysicalDeviceFormatProperties, VkPhysicalDevice, physicalDevice, \ VkFormat, format, VkFormatProperties *, pFormatProperties); \ HookDefine7(VkResult, vkGetPhysicalDeviceImageFormatProperties, VkPhysicalDevice, physicalDevice, \ VkFormat, format, VkImageType, type, VkImageTiling, tiling, VkImageUsageFlags, \ usage, VkImageCreateFlags, flags, VkImageFormatProperties *, pImageFormatProperties); \ HookDefine8(void, vkGetPhysicalDeviceSparseImageFormatProperties, VkPhysicalDevice, \ physicalDevice, VkFormat, format, VkImageType, type, VkSampleCountFlagBits, samples, \ VkImageUsageFlags, usage, VkImageTiling, tiling, uint32_t *, pNumProperties, \ VkSparseImageFormatProperties *, pProperties); \ HookDefine2(void, vkGetPhysicalDeviceProperties, VkPhysicalDevice, physicalDevice, \ VkPhysicalDeviceProperties *, pProperties); \ HookDefine3(void, vkGetPhysicalDeviceQueueFamilyProperties, VkPhysicalDevice, physicalDevice, \ uint32_t *, pCount, VkQueueFamilyProperties *, pQueueFamilyProperties); \ HookDefine2(void, vkGetPhysicalDeviceMemoryProperties, VkPhysicalDevice, physicalDevice, \ VkPhysicalDeviceMemoryProperties *, pMemoryProperties); \ HookDefine4(VkResult, vkCreateDevice, VkPhysicalDevice, physicalDevice, \ const VkDeviceCreateInfo *, pCreateInfo, const VkAllocationCallbacks *, pAllocator, \ VkDevice *, pDevice); \ HookDefine2(void, vkDestroyDevice, VkDevice, device, const VkAllocationCallbacks *, pAllocator); \ HookDefine4(void, vkGetDeviceQueue, VkDevice, device, uint32_t, queueFamilyIndex, uint32_t, \ queueIndex, VkQueue *, pQueue); \ HookDefine4(VkResult, vkQueueSubmit, VkQueue, queue, uint32_t, submitCount, \ const VkSubmitInfo *, pSubmits, VkFence, fence); \ HookDefine1(VkResult, vkQueueWaitIdle, VkQueue, queue); \ HookDefine1(VkResult, vkDeviceWaitIdle, VkDevice, device); \ HookDefine4(VkResult, vkAllocateMemory, VkDevice, device, const VkMemoryAllocateInfo *, \ pAllocInfo, const VkAllocationCallbacks *, pAllocator, VkDeviceMemory *, pMemory); \ HookDefine3(void, vkFreeMemory, VkDevice, device, VkDeviceMemory, mem, \ const VkAllocationCallbacks *, pAllocator); \ HookDefine6(VkResult, vkMapMemory, VkDevice, device, VkDeviceMemory, mem, VkDeviceSize, offset, \ VkDeviceSize, size, VkMemoryMapFlags, flags, void **, ppData); \ HookDefine2(void, vkUnmapMemory, VkDevice, device, VkDeviceMemory, mem); \ HookDefine3(VkResult, vkFlushMappedMemoryRanges, VkDevice, device, uint32_t, memRangeCount, \ const VkMappedMemoryRange *, pMemRanges); \ HookDefine3(VkResult, vkInvalidateMappedMemoryRanges, VkDevice, device, uint32_t, memRangeCount, \ const VkMappedMemoryRange *, pMemRanges); \ HookDefine3(void, vkGetDeviceMemoryCommitment, VkDevice, device, VkDeviceMemory, memory, \ VkDeviceSize *, pCommittedMemoryInBytes); \ HookDefine4(VkResult, vkBindBufferMemory, VkDevice, device, VkBuffer, buffer, VkDeviceMemory, \ mem, VkDeviceSize, memOffset); \ HookDefine4(VkResult, vkBindImageMemory, VkDevice, device, VkImage, image, VkDeviceMemory, mem, \ VkDeviceSize, memOffset); \ HookDefine4(VkResult, vkQueueBindSparse, VkQueue, queue, uint32_t, bindInfoCount, \ const VkBindSparseInfo *, pBindInfo, VkFence, fence); \ HookDefine4(VkResult, vkCreateBuffer, VkDevice, device, const VkBufferCreateInfo *, pCreateInfo, \ const VkAllocationCallbacks *, pAllocator, VkBuffer *, pBuffer); \ HookDefine3(void, vkDestroyBuffer, VkDevice, device, VkBuffer, buffer, \ const VkAllocationCallbacks *, pAllocator); \ HookDefine4(VkResult, vkCreateBufferView, VkDevice, device, const VkBufferViewCreateInfo *, \ pCreateInfo, const VkAllocationCallbacks *, pAllocator, VkBufferView *, pView); \ HookDefine3(void, vkDestroyBufferView, VkDevice, device, VkBufferView, bufferView, \ const VkAllocationCallbacks *, pAllocator); \ HookDefine4(VkResult, vkCreateImage, VkDevice, device, const VkImageCreateInfo *, pCreateInfo, \ const VkAllocationCallbacks *, pAllocator, VkImage *, pImage); \ HookDefine3(void, vkDestroyImage, VkDevice, device, VkImage, image, \ const VkAllocationCallbacks *, pAllocator); \ HookDefine4(void, vkGetImageSubresourceLayout, VkDevice, device, VkImage, image, \ const VkImageSubresource *, pSubresource, VkSubresourceLayout *, pLayout); \ HookDefine3(void, vkGetBufferMemoryRequirements, VkDevice, device, VkBuffer, buffer, \ VkMemoryRequirements *, pMemoryRequirements); \ HookDefine3(void, vkGetImageMemoryRequirements, VkDevice, device, VkImage, image, \ VkMemoryRequirements *, pMemoryRequirements); \ HookDefine4(void, vkGetImageSparseMemoryRequirements, VkDevice, device, VkImage, image, \ uint32_t *, pNumRequirements, VkSparseImageMemoryRequirements *, \ pSparseMemoryRequirements); \ HookDefine4(VkResult, vkCreateImageView, VkDevice, device, const VkImageViewCreateInfo *, \ pCreateInfo, const VkAllocationCallbacks *, pAllocator, VkImageView *, pView); \ HookDefine3(void, vkDestroyImageView, VkDevice, device, VkImageView, imageView, \ const VkAllocationCallbacks *, pAllocator); \ HookDefine4(VkResult, vkCreateShaderModule, VkDevice, device, const VkShaderModuleCreateInfo *, \ pCreateInfo, const VkAllocationCallbacks *, pAllocator, VkShaderModule *, \ pShaderModule); \ HookDefine3(void, vkDestroyShaderModule, VkDevice, device, VkShaderModule, shaderModule, \ const VkAllocationCallbacks *, pAllocator); \ HookDefine6(VkResult, vkCreateGraphicsPipelines, VkDevice, device, VkPipelineCache, \ pipelineCache, uint32_t, count, const VkGraphicsPipelineCreateInfo *, pCreateInfos, \ const VkAllocationCallbacks *, pAllocator, VkPipeline *, pPipelines); \ HookDefine6(VkResult, vkCreateComputePipelines, VkDevice, device, VkPipelineCache, \ pipelineCache, uint32_t, count, const VkComputePipelineCreateInfo *, pCreateInfos, \ const VkAllocationCallbacks *, pAllocator, VkPipeline *, pPipelines); \ HookDefine3(void, vkDestroyPipeline, VkDevice, device, VkPipeline, pipeline, \ const VkAllocationCallbacks *, pAllocator); \ HookDefine4(VkResult, vkCreatePipelineCache, VkDevice, device, \ const VkPipelineCacheCreateInfo *, pCreateInfo, const VkAllocationCallbacks *, \ pAllocator, VkPipelineCache *, pPipelineCache); \ HookDefine3(void, vkDestroyPipelineCache, VkDevice, device, VkPipelineCache, pipelineCache, \ const VkAllocationCallbacks *, pAllocator); \ HookDefine4(VkResult, vkGetPipelineCacheData, VkDevice, device, VkPipelineCache, pipelineCache, \ size_t *, pDataSize, void *, pData); \ HookDefine4(VkResult, vkMergePipelineCaches, VkDevice, device, VkPipelineCache, pipelineCache, \ uint32_t, srcCacheCount, const VkPipelineCache *, pSrcCaches); \ HookDefine4(VkResult, vkCreatePipelineLayout, VkDevice, device, \ const VkPipelineLayoutCreateInfo *, pCreateInfo, const VkAllocationCallbacks *, \ pAllocator, VkPipelineLayout *, pPipelineLayout); \ HookDefine3(void, vkDestroyPipelineLayout, VkDevice, device, VkPipelineLayout, pipelineLayout, \ const VkAllocationCallbacks *, pAllocator); \ HookDefine4(VkResult, vkCreateSemaphore, VkDevice, device, const VkSemaphoreCreateInfo *, \ pCreateInfo, const VkAllocationCallbacks *, pAllocator, VkSemaphore *, pSemaphore); \ HookDefine3(void, vkDestroySemaphore, VkDevice, device, VkSemaphore, semaphore, \ const VkAllocationCallbacks *, pAllocator); \ HookDefine4(VkResult, vkCreateFence, VkDevice, device, const VkFenceCreateInfo *, pCreateInfo, \ const VkAllocationCallbacks *, pAllocator, VkFence *, pFence); \ HookDefine3(void, vkDestroyFence, VkDevice, device, VkFence, fence, \ const VkAllocationCallbacks *, pAllocator); \ HookDefine4(VkResult, vkCreateEvent, VkDevice, device, const VkEventCreateInfo *, pCreateInfo, \ const VkAllocationCallbacks *, pAllocator, VkEvent *, pEvent); \ HookDefine3(void, vkDestroyEvent, VkDevice, device, VkEvent, event, \ const VkAllocationCallbacks *, pAllocator); \ HookDefine2(VkResult, vkGetEventStatus, VkDevice, device, VkEvent, event); \ HookDefine2(VkResult, vkSetEvent, VkDevice, device, VkEvent, event); \ HookDefine2(VkResult, vkResetEvent, VkDevice, device, VkEvent, event); \ HookDefine4(VkResult, vkCreateQueryPool, VkDevice, device, const VkQueryPoolCreateInfo *, \ pCreateInfo, const VkAllocationCallbacks *, pAllocator, VkQueryPool *, pQueryPool); \ HookDefine3(void, vkDestroyQueryPool, VkDevice, device, VkQueryPool, queryPool, \ const VkAllocationCallbacks *, pAllocator); \ HookDefine8(VkResult, vkGetQueryPoolResults, VkDevice, device, VkQueryPool, queryPool, uint32_t, \ firstQuery, uint32_t, queryCount, size_t, dataSize, void *, pData, VkDeviceSize, \ stride, VkQueryResultFlags, flags); \ HookDefine2(VkResult, vkGetFenceStatus, VkDevice, device, VkFence, fence); \ HookDefine3(VkResult, vkResetFences, VkDevice, device, uint32_t, fenceCount, const VkFence *, \ pFences); \ HookDefine5(VkResult, vkWaitForFences, VkDevice, device, uint32_t, fenceCount, const VkFence *, \ pFences, VkBool32, waitAll, uint64_t, timeout); \ HookDefine4(VkResult, vkCreateSampler, VkDevice, device, const VkSamplerCreateInfo *, \ pCreateInfo, const VkAllocationCallbacks *, pAllocator, VkSampler *, pSampler); \ HookDefine3(void, vkDestroySampler, VkDevice, device, VkSampler, sampler, \ const VkAllocationCallbacks *, pAllocator); \ HookDefine4(VkResult, vkCreateDescriptorSetLayout, VkDevice, device, \ const VkDescriptorSetLayoutCreateInfo *, pCreateInfo, const VkAllocationCallbacks *, \ pAllocator, VkDescriptorSetLayout *, pSetLayout); \ HookDefine3(void, vkDestroyDescriptorSetLayout, VkDevice, device, VkDescriptorSetLayout, \ descriptorSetLayout, const VkAllocationCallbacks *, pAllocator); \ HookDefine4(VkResult, vkCreateDescriptorPool, VkDevice, device, \ const VkDescriptorPoolCreateInfo *, pCreateInfo, const VkAllocationCallbacks *, \ pAllocator, VkDescriptorPool *, pDescriptorPool); \ HookDefine3(void, vkDestroyDescriptorPool, VkDevice, device, VkDescriptorPool, descriptorPool, \ const VkAllocationCallbacks *, pAllocator); \ HookDefine3(VkResult, vkResetDescriptorPool, VkDevice, device, VkDescriptorPool, descriptorPool, \ VkDescriptorPoolResetFlags, flags); \ HookDefine3(VkResult, vkAllocateDescriptorSets, VkDevice, device, \ const VkDescriptorSetAllocateInfo *, pAllocateInfo, VkDescriptorSet *, \ pDescriptorSets); \ HookDefine5(void, vkUpdateDescriptorSets, VkDevice, device, uint32_t, writeCount, \ const VkWriteDescriptorSet *, pDescriptorWrites, uint32_t, copyCount, \ const VkCopyDescriptorSet *, pDescriptorCopies); \ HookDefine4(VkResult, vkFreeDescriptorSets, VkDevice, device, VkDescriptorPool, descriptorPool, \ uint32_t, count, const VkDescriptorSet *, pDescriptorSets); \ HookDefine4(VkResult, vkCreateCommandPool, VkDevice, device, const VkCommandPoolCreateInfo *, \ pCreateInfo, const VkAllocationCallbacks *, pAllocator, VkCommandPool *, \ pCommandPool); \ HookDefine3(void, vkDestroyCommandPool, VkDevice, device, VkCommandPool, commandPool, \ const VkAllocationCallbacks *, pAllocator); \ HookDefine3(VkResult, vkResetCommandPool, VkDevice, device, VkCommandPool, commandPool, \ VkCommandPoolResetFlags, flags); \ HookDefine3(VkResult, vkAllocateCommandBuffers, VkDevice, device, \ const VkCommandBufferAllocateInfo *, pCreateInfo, VkCommandBuffer *, pCommandBuffers); \ HookDefine4(void, vkFreeCommandBuffers, VkDevice, device, VkCommandPool, commandPool, uint32_t, \ commandBufferCount, const VkCommandBuffer *, pCommandBuffers); \ HookDefine2(VkResult, vkBeginCommandBuffer, VkCommandBuffer, commandBuffer, \ const VkCommandBufferBeginInfo *, pBeginInfo); \ HookDefine1(VkResult, vkEndCommandBuffer, VkCommandBuffer, commandBuffer); \ HookDefine2(VkResult, vkResetCommandBuffer, VkCommandBuffer, commandBuffer, \ VkCommandBufferResetFlags, flags); \ HookDefine3(void, vkCmdBindPipeline, VkCommandBuffer, commandBuffer, VkPipelineBindPoint, \ pipelineBindPoint, VkPipeline, pipeline); \ HookDefine4(void, vkCmdSetViewport, VkCommandBuffer, commandBuffer, uint32_t, firstViewport, \ uint32_t, viewportCount, const VkViewport *, pViewports); \ HookDefine4(void, vkCmdSetScissor, VkCommandBuffer, commandBuffer, uint32_t, firstScissor, \ uint32_t, scissorCount, const VkRect2D *, pScissors); \ HookDefine2(void, vkCmdSetLineWidth, VkCommandBuffer, commandBuffer, float, lineWidth); \ HookDefine4(void, vkCmdSetDepthBias, VkCommandBuffer, commandBuffer, float, depthBias, float, \ depthBiasClamp, float, slopeScaledDepthBias); \ HookDefine2(void, vkCmdSetBlendConstants, VkCommandBuffer, commandBuffer, const float *, \ blendConst); \ HookDefine3(void, vkCmdSetDepthBounds, VkCommandBuffer, commandBuffer, float, minDepthBounds, \ float, maxDepthBounds); \ HookDefine3(void, vkCmdSetStencilCompareMask, VkCommandBuffer, commandBuffer, \ VkStencilFaceFlags, faceMask, uint32_t, compareMask); \ HookDefine3(void, vkCmdSetStencilWriteMask, VkCommandBuffer, commandBuffer, VkStencilFaceFlags, \ faceMask, uint32_t, writeMask); \ HookDefine3(void, vkCmdSetStencilReference, VkCommandBuffer, commandBuffer, VkStencilFaceFlags, \ faceMask, uint32_t, reference); \ HookDefine8(void, vkCmdBindDescriptorSets, VkCommandBuffer, commandBuffer, VkPipelineBindPoint, \ pipelineBindPoint, VkPipelineLayout, layout, uint32_t, firstSet, uint32_t, setCount, \ const VkDescriptorSet *, pDescriptorSets, uint32_t, dynamicOffsetCount, \ const uint32_t *, pDynamicOffsets); \ HookDefine4(void, vkCmdBindIndexBuffer, VkCommandBuffer, commandBuffer, VkBuffer, buffer, \ VkDeviceSize, offset, VkIndexType, indexType); \ HookDefine5(void, vkCmdBindVertexBuffers, VkCommandBuffer, commandBuffer, uint32_t, firstBinding, \ uint32_t, bindingCount, const VkBuffer *, pBuffers, const VkDeviceSize *, pOffsets); \ HookDefine5(void, vkCmdDraw, VkCommandBuffer, commandBuffer, uint32_t, vertexCount, uint32_t, \ instanceCount, uint32_t, firstVertex, uint32_t, firstInstance); \ HookDefine6(void, vkCmdDrawIndexed, VkCommandBuffer, commandBuffer, uint32_t, indexCount, \ uint32_t, instanceCount, uint32_t, firstIndex, int32_t, vertexOffset, uint32_t, \ firstInstance); \ HookDefine5(void, vkCmdDrawIndirect, VkCommandBuffer, commandBuffer, VkBuffer, buffer, \ VkDeviceSize, offset, uint32_t, count, uint32_t, stride); \ HookDefine5(void, vkCmdDrawIndexedIndirect, VkCommandBuffer, commandBuffer, VkBuffer, buffer, \ VkDeviceSize, offset, uint32_t, count, uint32_t, stride); \ HookDefine4(void, vkCmdDispatch, VkCommandBuffer, commandBuffer, uint32_t, x, uint32_t, y, \ uint32_t, z); \ HookDefine3(void, vkCmdDispatchIndirect, VkCommandBuffer, commandBuffer, VkBuffer, buffer, \ VkDeviceSize, offset); \ HookDefine6(void, vkCmdCopyBufferToImage, VkCommandBuffer, commandBuffer, VkBuffer, srcBuffer, \ VkImage, destImage, VkImageLayout, destImageLayout, uint32_t, regionCount, \ const VkBufferImageCopy *, pRegions); \ HookDefine6(void, vkCmdCopyImageToBuffer, VkCommandBuffer, commandBuffer, VkImage, srcImage, \ VkImageLayout, srcImageLayout, VkBuffer, destBuffer, uint32_t, regionCount, \ const VkBufferImageCopy *, pRegions); \ HookDefine5(void, vkCmdCopyBuffer, VkCommandBuffer, commandBuffer, VkBuffer, srcBuffer, \ VkBuffer, destBuffer, uint32_t, regionCount, const VkBufferCopy *, pRegions); \ HookDefine7(void, vkCmdCopyImage, VkCommandBuffer, commandBuffer, VkImage, srcImage, \ VkImageLayout, srcImageLayout, VkImage, destImage, VkImageLayout, destImageLayout, \ uint32_t, regionCount, const VkImageCopy *, pRegions); \ HookDefine8(void, vkCmdBlitImage, VkCommandBuffer, commandBuffer, VkImage, srcImage, \ VkImageLayout, srcImageLayout, VkImage, destImage, VkImageLayout, destImageLayout, \ uint32_t, regionCount, const VkImageBlit *, pRegions, VkFilter, filter); \ HookDefine7(void, vkCmdResolveImage, VkCommandBuffer, commandBuffer, VkImage, srcImage, \ VkImageLayout, srcImageLayout, VkImage, destImage, VkImageLayout, destImageLayout, \ uint32_t, regionCount, const VkImageResolve *, pRegions); \ HookDefine5(void, vkCmdUpdateBuffer, VkCommandBuffer, commandBuffer, VkBuffer, destBuffer, \ VkDeviceSize, destOffset, VkDeviceSize, dataSize, const uint32_t *, pData); \ HookDefine5(void, vkCmdFillBuffer, VkCommandBuffer, commandBuffer, VkBuffer, destBuffer, \ VkDeviceSize, destOffset, VkDeviceSize, fillSize, uint32_t, data); \ HookDefine6(void, vkCmdPushConstants, VkCommandBuffer, commandBuffer, VkPipelineLayout, layout, \ VkShaderStageFlags, stageFlags, uint32_t, start, uint32_t, length, const void *, \ values); \ HookDefine6(void, vkCmdClearColorImage, VkCommandBuffer, commandBuffer, VkImage, image, \ VkImageLayout, imageLayout, const VkClearColorValue *, pColor, uint32_t, rangeCount, \ const VkImageSubresourceRange *, pRanges); \ HookDefine6(void, vkCmdClearDepthStencilImage, VkCommandBuffer, commandBuffer, VkImage, image, \ VkImageLayout, imageLayout, const VkClearDepthStencilValue *, pDepthStencil, \ uint32_t, rangeCount, const VkImageSubresourceRange *, pRanges); \ HookDefine5(void, vkCmdClearAttachments, VkCommandBuffer, commandBuffer, uint32_t, \ attachmentCount, const VkClearAttachment *, pAttachments, uint32_t, rectCount, \ const VkClearRect *, pRects); \ HookDefine10(void, vkCmdPipelineBarrier, VkCommandBuffer, commandBuffer, VkPipelineStageFlags, \ srcStageMask, VkPipelineStageFlags, destStageMask, VkDependencyFlags, \ dependencyFlags, uint32_t, memoryBarrierCount, const VkMemoryBarrier *, \ pMemoryBarriers, uint32_t, bufferMemoryBarrierCount, const VkBufferMemoryBarrier *, \ pBufferMemoryBarriers, uint32_t, imageMemoryBarrierCount, \ const VkImageMemoryBarrier *, pImageMemoryBarriers); \ HookDefine4(void, vkCmdWriteTimestamp, VkCommandBuffer, commandBuffer, VkPipelineStageFlagBits, \ pipelineStage, VkQueryPool, queryPool, uint32_t, query); \ HookDefine8(void, vkCmdCopyQueryPoolResults, VkCommandBuffer, commandBuffer, VkQueryPool, \ queryPool, uint32_t, firstQuery, uint32_t, queryCount, VkBuffer, dstBuffer, \ VkDeviceSize, dstOffset, VkDeviceSize, stride, VkQueryResultFlags, flags); \ HookDefine4(void, vkCmdBeginQuery, VkCommandBuffer, commandBuffer, VkQueryPool, queryPool, \ uint32_t, query, VkQueryControlFlags, flags); \ HookDefine3(void, vkCmdEndQuery, VkCommandBuffer, commandBuffer, VkQueryPool, queryPool, \ uint32_t, query); \ HookDefine4(void, vkCmdResetQueryPool, VkCommandBuffer, commandBuffer, VkQueryPool, queryPool, \ uint32_t, firstQuery, uint32_t, queryCount); \ HookDefine3(void, vkCmdSetEvent, VkCommandBuffer, commandBuffer, VkEvent, event, \ VkPipelineStageFlags, stageMask); \ HookDefine3(void, vkCmdResetEvent, VkCommandBuffer, commandBuffer, VkEvent, event, \ VkPipelineStageFlags, stageMask); \ HookDefine11(void, vkCmdWaitEvents, VkCommandBuffer, commandBuffer, uint32_t, eventCount, \ const VkEvent *, pEvents, VkPipelineStageFlags, srcStageMask, VkPipelineStageFlags, \ dstStageMask, uint32_t, memoryBarrierCount, const VkMemoryBarrier *, \ pMemoryBarriers, uint32_t, bufferMemoryBarrierCount, const VkBufferMemoryBarrier *, \ pBufferMemoryBarriers, uint32_t, imageMemoryBarrierCount, \ const VkImageMemoryBarrier *, pImageMemoryBarriers); \ HookDefine4(VkResult, vkCreateFramebuffer, VkDevice, device, const VkFramebufferCreateInfo *, \ pCreateInfo, const VkAllocationCallbacks *, pAllocator, VkFramebuffer *, \ pFramebuffer); \ HookDefine3(void, vkDestroyFramebuffer, VkDevice, device, VkFramebuffer, framebuffer, \ const VkAllocationCallbacks *, pAllocator); \ HookDefine4(VkResult, vkCreateRenderPass, VkDevice, device, const VkRenderPassCreateInfo *, \ pCreateInfo, const VkAllocationCallbacks *, pAllocator, VkRenderPass *, pRenderPass); \ HookDefine3(void, vkDestroyRenderPass, VkDevice, device, VkRenderPass, renderPass, \ const VkAllocationCallbacks *, pAllocator); \ HookDefine3(void, vkGetRenderAreaGranularity, VkDevice, device, VkRenderPass, renderPass, \ VkExtent2D *, pGranularity); \ HookDefine3(void, vkCmdBeginRenderPass, VkCommandBuffer, commandBuffer, \ const VkRenderPassBeginInfo *, pRenderPassBegin, VkSubpassContents, contents); \ HookDefine2(void, vkCmdNextSubpass, VkCommandBuffer, commandBuffer, VkSubpassContents, contents); \ HookDefine3(void, vkCmdExecuteCommands, VkCommandBuffer, commandBuffer, uint32_t, \ commandBufferCount, const VkCommandBuffer *, pCommandBuffers); \ HookDefine1(void, vkCmdEndRenderPass, VkCommandBuffer, commandBuffer); \ HookDefine4(VkResult, vkCreateDebugReportCallbackEXT, VkInstance, instance, \ const VkDebugReportCallbackCreateInfoEXT *, pCreateInfo, \ const VkAllocationCallbacks *, pAllocator, VkDebugReportCallbackEXT *, pCallback); \ HookDefine3(void, vkDestroyDebugReportCallbackEXT, VkInstance, instance, \ VkDebugReportCallbackEXT, callback, const VkAllocationCallbacks *, pAllocator); \ HookDefine8(void, vkDebugReportMessageEXT, VkInstance, instance, VkDebugReportFlagsEXT, flags, \ VkDebugReportObjectTypeEXT, objectType, uint64_t, object, size_t, location, int32_t, \ messageCode, const char *, pLayerPrefix, const char *, pMessage); \ HookDefine2(VkResult, vkDebugMarkerSetObjectTagEXT, VkDevice, device, \ VkDebugMarkerObjectTagInfoEXT *, pTagInfo); \ HookDefine2(VkResult, vkDebugMarkerSetObjectNameEXT, VkDevice, device, \ VkDebugMarkerObjectNameInfoEXT *, pNameInfo); \ HookDefine2(void, vkCmdDebugMarkerBeginEXT, VkCommandBuffer, commandBuffer, \ VkDebugMarkerMarkerInfoEXT *, pMarkerInfo); \ HookDefine1(void, vkCmdDebugMarkerEndEXT, VkCommandBuffer, commandBuffer); \ HookDefine2(void, vkCmdDebugMarkerInsertEXT, VkCommandBuffer, commandBuffer, \ VkDebugMarkerMarkerInfoEXT *, pMarkerInfo); \ HookDefine4(VkResult, vkGetPhysicalDeviceSurfaceSupportKHR, VkPhysicalDevice, physicalDevice, \ uint32_t, queueFamilyIndex, VkSurfaceKHR, surface, VkBool32 *, pSupported); \ HookDefine3(VkResult, vkGetPhysicalDeviceSurfaceCapabilitiesKHR, VkPhysicalDevice, physicalDevice, \ VkSurfaceKHR, surface, VkSurfaceCapabilitiesKHR *, pSurfaceProperties); \ HookDefine4(VkResult, vkGetPhysicalDeviceSurfaceFormatsKHR, VkPhysicalDevice, physicalDevice, \ VkSurfaceKHR, surface, uint32_t *, pSurfaceFormatCount, VkSurfaceFormatKHR *, \ pSurfaceFormats); \ HookDefine4(VkResult, vkGetPhysicalDeviceSurfacePresentModesKHR, VkPhysicalDevice, \ physicalDevice, VkSurfaceKHR, surface, uint32_t *, pPresentModeCount, \ VkPresentModeKHR *, pPresentModes); \ HookDefine4(VkResult, vkCreateSwapchainKHR, VkDevice, device, const VkSwapchainCreateInfoKHR *, \ pCreateInfo, const VkAllocationCallbacks *, pAllocator, VkSwapchainKHR *, pSwapchain); \ HookDefine3(void, vkDestroySwapchainKHR, VkDevice, device, VkSwapchainKHR, swapchain, \ const VkAllocationCallbacks *, pAllocator); \ HookDefine4(VkResult, vkGetSwapchainImagesKHR, VkDevice, device, VkSwapchainKHR, swapchain, \ uint32_t *, pCount, VkImage *, pSwapchainImages); \ HookDefine6(VkResult, vkAcquireNextImageKHR, VkDevice, device, VkSwapchainKHR, swapchain, \ uint64_t, timeout, VkSemaphore, semaphore, VkFence, fence, uint32_t *, pImageIndex); \ HookDefine2(VkResult, vkQueuePresentKHR, VkQueue, queue, VkPresentInfoKHR *, pPresentInfo); \ HookDefine3(void, vkDestroySurfaceKHR, VkInstance, instance, VkSurfaceKHR, surface, \ const VkAllocationCallbacks *, pAllocator); \ HookDefine3(VkResult, vkGetPhysicalDeviceDisplayPropertiesKHR, VkPhysicalDevice, physicalDevice, \ uint32_t *, pPropertyCount, VkDisplayPropertiesKHR *, pProperties); \ HookDefine3(VkResult, vkGetPhysicalDeviceDisplayPlanePropertiesKHR, VkPhysicalDevice, \ physicalDevice, uint32_t *, pPropertyCount, VkDisplayPlanePropertiesKHR *, \ pProperties); \ HookDefine4(VkResult, vkGetDisplayPlaneSupportedDisplaysKHR, VkPhysicalDevice, physicalDevice, \ uint32_t, planeIndex, uint32_t *, pDisplayCount, VkDisplayKHR *, pDisplays); \ HookDefine4(VkResult, vkGetDisplayModePropertiesKHR, VkPhysicalDevice, physicalDevice, \ VkDisplayKHR, display, uint32_t *, pPropertyCount, VkDisplayModePropertiesKHR *, \ pProperties); \ HookDefine5(VkResult, vkCreateDisplayModeKHR, VkPhysicalDevice, physicalDevice, VkDisplayKHR, \ display, const VkDisplayModeCreateInfoKHR *, pCreateInfo, \ const VkAllocationCallbacks *, pAllocator, VkDisplayModeKHR *, pMode); \ HookDefine4(VkResult, vkGetDisplayPlaneCapabilitiesKHR, VkPhysicalDevice, physicalDevice, \ VkDisplayModeKHR, mode, uint32_t, planeIndex, VkDisplayPlaneCapabilitiesKHR *, \ pCapabilities); \ HookDefine4(VkResult, vkCreateDisplayPlaneSurfaceKHR, VkInstance, instance, \ const VkDisplaySurfaceCreateInfoKHR *, pCreateInfo, const VkAllocationCallbacks *, \ pAllocator, VkSurfaceKHR *, pSurface); \ HookDefine5(VkResult, vkCreateSharedSwapchainsKHR, VkDevice, device, uint32_t, swapchainCount, \ const VkSwapchainCreateInfoKHR *, pCreateInfos, const VkAllocationCallbacks *, \ pAllocator, VkSwapchainKHR *, pSwapchains); \ HookDefine8(VkResult, vkGetPhysicalDeviceExternalImageFormatPropertiesNV, VkPhysicalDevice, \ physicalDevice, VkFormat, format, VkImageType, type, VkImageTiling, tiling, \ VkImageUsageFlags, usage, VkImageCreateFlags, flags, \ VkExternalMemoryHandleTypeFlagsNV, externalHandleType, \ VkExternalImageFormatPropertiesNV *, pExternalImageFormatProperties); \ HookDefine3(void, vkTrimCommandPool, VkDevice, device, VkCommandPool, commandPool, \ VkCommandPoolTrimFlags, flags); \ HookDefine2(void, vkGetPhysicalDeviceFeatures2, VkPhysicalDevice, physicalDevice, \ VkPhysicalDeviceFeatures2 *, pFeatures); \ HookDefine2(void, vkGetPhysicalDeviceProperties2, VkPhysicalDevice, physicalDevice, \ VkPhysicalDeviceProperties2 *, pProperties); \ HookDefine3(void, vkGetPhysicalDeviceFormatProperties2, VkPhysicalDevice, physicalDevice, \ VkFormat, format, VkFormatProperties2 *, pFormatProperties); \ HookDefine3(VkResult, vkGetPhysicalDeviceImageFormatProperties2, VkPhysicalDevice, \ physicalDevice, const VkPhysicalDeviceImageFormatInfo2 *, pImageFormatInfo, \ VkImageFormatProperties2 *, pImageFormatProperties); \ HookDefine3(void, vkGetPhysicalDeviceQueueFamilyProperties2, VkPhysicalDevice, physicalDevice, \ uint32_t *, pCount, VkQueueFamilyProperties2 *, pQueueFamilyProperties); \ HookDefine2(void, vkGetPhysicalDeviceMemoryProperties2, VkPhysicalDevice, physicalDevice, \ VkPhysicalDeviceMemoryProperties2 *, pMemoryProperties); \ HookDefine4(void, vkGetPhysicalDeviceSparseImageFormatProperties2, VkPhysicalDevice, \ physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2 *, pFormatInfo, \ uint32_t *, pPropertyCount, VkSparseImageFormatProperties2 *, pProperties); \ HookDefine3(VkResult, vkGetPhysicalDeviceSurfaceCapabilities2EXT, VkPhysicalDevice, \ physicalDevice, VkSurfaceKHR, surface, VkSurfaceCapabilities2EXT *, \ pSurfaceCapabilities); \ HookDefine3(VkResult, vkDisplayPowerControlEXT, VkDevice, device, VkDisplayKHR, display, \ const VkDisplayPowerInfoEXT *, pDisplayPowerInfo); \ HookDefine4(VkResult, vkRegisterDeviceEventEXT, VkDevice, device, const VkDeviceEventInfoEXT *, \ pDeviceEventInfo, const VkAllocationCallbacks *, pAllocator, VkFence *, pFence); \ HookDefine5(VkResult, vkRegisterDisplayEventEXT, VkDevice, device, VkDisplayKHR, display, \ const VkDisplayEventInfoEXT *, pDisplayEventInfo, const VkAllocationCallbacks *, \ pAllocator, VkFence *, pFence); \ HookDefine4(VkResult, vkGetSwapchainCounterEXT, VkDevice, device, VkSwapchainKHR, swapchain, \ VkSurfaceCounterFlagBitsEXT, counter, uint64_t *, pCounterValue); \ HookDefine2(VkResult, vkReleaseDisplayEXT, VkPhysicalDevice, physicalDevice, VkDisplayKHR, \ display); \ HookDefine3(void, vkGetPhysicalDeviceExternalBufferProperties, VkPhysicalDevice, physicalDevice, \ const VkPhysicalDeviceExternalBufferInfo *, pExternalBufferInfo, \ VkExternalBufferProperties *, pExternalBufferProperties); \ HookDefine3(VkResult, vkGetMemoryFdKHR, VkDevice, device, const VkMemoryGetFdInfoKHR *, \ pGetFdInfo, int *, pFd); \ HookDefine4(VkResult, vkGetMemoryFdPropertiesKHR, VkDevice, device, \ VkExternalMemoryHandleTypeFlagBits, handleType, int, fd, VkMemoryFdPropertiesKHR *, \ pMemoryFdProperties); \ HookDefine3(void, vkGetPhysicalDeviceExternalSemaphoreProperties, VkPhysicalDevice, \ physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo *, pExternalSemaphoreInfo, \ VkExternalSemaphoreProperties *, pExternalSemaphoreProperties); \ HookDefine2(VkResult, vkImportSemaphoreFdKHR, VkDevice, device, \ const VkImportSemaphoreFdInfoKHR *, pImportSemaphoreFdInfo); \ HookDefine3(VkResult, vkGetSemaphoreFdKHR, VkDevice, device, const VkSemaphoreGetFdInfoKHR *, \ pGetFdInfo, int *, pFd); \ HookDefine3(void, vkGetPhysicalDeviceExternalFenceProperties, VkPhysicalDevice, physicalDevice, \ const VkPhysicalDeviceExternalFenceInfo *, pExternalFenceInfo, \ VkExternalFenceProperties *, pExternalFenceProperties); \ HookDefine2(VkResult, vkImportFenceFdKHR, VkDevice, device, const VkImportFenceFdInfoKHR *, \ pImportFenceFdInfo); \ HookDefine3(VkResult, vkGetFenceFdKHR, VkDevice, device, const VkFenceGetFdInfoKHR *, \ pGetFdInfo, int *, pFd); \ HookDefine3(void, vkGetImageMemoryRequirements2, VkDevice, device, \ const VkImageMemoryRequirementsInfo2 *, pInfo, VkMemoryRequirements2 *, \ pMemoryRequirements); \ HookDefine3(void, vkGetBufferMemoryRequirements2, VkDevice, device, \ const VkBufferMemoryRequirementsInfo2 *, pInfo, VkMemoryRequirements2 *, \ pMemoryRequirements); \ HookDefine4(void, vkGetImageSparseMemoryRequirements2, VkDevice, device, \ const VkImageSparseMemoryRequirementsInfo2 *, pInfo, uint32_t *, \ pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2 *, \ pSparseMemoryRequirements); \ HookDefine6(VkResult, vkGetShaderInfoAMD, VkDevice, device, VkPipeline, pipeline, \ VkShaderStageFlagBits, shaderStage, VkShaderInfoTypeAMD, infoType, size_t *, \ pInfoSize, void *, pInfo); \ HookDefine6(void, vkCmdPushDescriptorSetKHR, VkCommandBuffer, commandBuffer, \ VkPipelineBindPoint, pipelineBindPoint, VkPipelineLayout, layout, uint32_t, set, \ uint32_t, descriptorWriteCount, const VkWriteDescriptorSet *, pDescriptorWrites); \ HookDefine4(VkResult, vkCreateDescriptorUpdateTemplate, VkDevice, device, \ const VkDescriptorUpdateTemplateCreateInfo *, pCreateInfo, \ const VkAllocationCallbacks *, pAllocator, VkDescriptorUpdateTemplate *, \ pDescriptorUpdateTemplate); \ HookDefine3(void, vkDestroyDescriptorUpdateTemplate, VkDevice, device, VkDescriptorUpdateTemplate, \ descriptorUpdateTemplate, const VkAllocationCallbacks *, pAllocator); \ HookDefine4(void, vkUpdateDescriptorSetWithTemplate, VkDevice, device, VkDescriptorSet, \ descriptorSet, VkDescriptorUpdateTemplate, descriptorUpdateTemplate, const void *, \ pData); \ HookDefine5(void, vkCmdPushDescriptorSetWithTemplateKHR, VkCommandBuffer, commandBuffer, \ VkDescriptorUpdateTemplate, descriptorUpdateTemplate, VkPipelineLayout, layout, \ uint32_t, set, const void *, pData); \ HookDefine3(VkResult, vkBindBufferMemory2, VkDevice, device, uint32_t, bindInfoCount, \ const VkBindBufferMemoryInfo *, pBindInfos); \ HookDefine3(VkResult, vkBindImageMemory2, VkDevice, device, uint32_t, bindInfoCount, \ const VkBindImageMemoryInfo *, pBindInfos); \ HookDefine3(void, vkGetDescriptorSetLayoutSupport, VkDevice, device, \ const VkDescriptorSetLayoutCreateInfo *, pCreateInfo, \ VkDescriptorSetLayoutSupport *, pSupport); \ HookDefine5(void, vkCmdWriteBufferMarkerAMD, VkCommandBuffer, commandBuffer, \ VkPipelineStageFlagBits, pipelineStage, VkBuffer, dstBuffer, VkDeviceSize, \ dstOffset, uint32_t, marker); \ HookDefine2(VkResult, vkSetDebugUtilsObjectNameEXT, VkDevice, device, \ const VkDebugUtilsObjectNameInfoEXT *, pNameInfo); \ HookDefine2(VkResult, vkSetDebugUtilsObjectTagEXT, VkDevice, device, \ const VkDebugUtilsObjectTagInfoEXT *, pTagInfo); \ HookDefine2(void, vkQueueBeginDebugUtilsLabelEXT, VkQueue, queue, const VkDebugUtilsLabelEXT *, \ pLabelInfo); \ HookDefine1(void, vkQueueEndDebugUtilsLabelEXT, VkQueue, queue); \ HookDefine2(void, vkQueueInsertDebugUtilsLabelEXT, VkQueue, queue, const VkDebugUtilsLabelEXT *, \ pLabelInfo); \ HookDefine2(void, vkCmdBeginDebugUtilsLabelEXT, VkCommandBuffer, commandBuffer, \ const VkDebugUtilsLabelEXT *, pLabelInfo); \ HookDefine1(void, vkCmdEndDebugUtilsLabelEXT, VkCommandBuffer, commandBuffer); \ HookDefine2(void, vkCmdInsertDebugUtilsLabelEXT, VkCommandBuffer, commandBuffer, \ const VkDebugUtilsLabelEXT *, pLabelInfo); \ HookDefine4(VkResult, vkCreateDebugUtilsMessengerEXT, VkInstance, instance, \ const VkDebugUtilsMessengerCreateInfoEXT *, pCreateInfo, \ const VkAllocationCallbacks *, pAllocator, VkDebugUtilsMessengerEXT *, pMessenger); \ HookDefine3(void, vkDestroyDebugUtilsMessengerEXT, VkInstance, instance, \ VkDebugUtilsMessengerEXT, messenger, const VkAllocationCallbacks *, pAllocator); \ HookDefine4(void, vkSubmitDebugUtilsMessageEXT, VkInstance, instance, \ VkDebugUtilsMessageSeverityFlagBitsEXT, messageSeverity, \ VkDebugUtilsMessageTypeFlagsEXT, messageTypes, \ const VkDebugUtilsMessengerCallbackDataEXT *, pCallbackData); \ HookDefine4(VkResult, vkCreateSamplerYcbcrConversion, VkDevice, device, \ const VkSamplerYcbcrConversionCreateInfo *, pCreateInfo, \ const VkAllocationCallbacks *, pAllocator, VkSamplerYcbcrConversion *, \ pYcbcrConversion); \ HookDefine3(void, vkDestroySamplerYcbcrConversion, VkDevice, device, VkSamplerYcbcrConversion, \ ycbcrConversion, const VkAllocationCallbacks *, pAllocator); \ HookDefine3(VkResult, vkEnumeratePhysicalDeviceGroups, VkInstance, instance, uint32_t *, \ pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties *, \ pPhysicalDeviceGroupProperties); \ HookDefine5(void, vkGetDeviceGroupPeerMemoryFeatures, VkDevice, device, uint32_t, heapIndex, \ uint32_t, localDeviceIndex, uint32_t, remoteDeviceIndex, VkPeerMemoryFeatureFlags *, \ pPeerMemoryFeatures); \ HookDefine2(void, vkCmdSetDeviceMask, VkCommandBuffer, commandBuffer, uint32_t, deviceMask); \ HookDefine7(void, vkCmdDispatchBase, VkCommandBuffer, commandBuffer, uint32_t, baseGroupX, \ uint32_t, baseGroupY, uint32_t, baseGroupZ, uint32_t, groupCountX, uint32_t, \ groupCountY, uint32_t, groupCountZ); \ HookDefine2(VkResult, vkGetDeviceGroupPresentCapabilitiesKHR, VkDevice, device, \ VkDeviceGroupPresentCapabilitiesKHR *, pDeviceGroupPresentCapabilities); \ HookDefine3(VkResult, vkGetDeviceGroupSurfacePresentModesKHR, VkDevice, device, VkSurfaceKHR, \ surface, VkDeviceGroupPresentModeFlagsKHR *, pModes); \ HookDefine4(VkResult, vkGetPhysicalDevicePresentRectanglesKHR, VkPhysicalDevice, physicalDevice, \ VkSurfaceKHR, surface, uint32_t *, pRectCount, VkRect2D *, pRects); \ HookDefine3(VkResult, vkAcquireNextImage2KHR, VkDevice, device, \ const VkAcquireNextImageInfoKHR *, pAcquireInfo, uint32_t *, pImageIndex); \ HookDefine3(void, vkGetDeviceQueue2, VkDevice, device, const VkDeviceQueueInfo2 *, pQueueInfo, \ VkQueue *, pQueue); \ HookDefine3(VkResult, vkGetPhysicalDeviceSurfaceCapabilities2KHR, VkPhysicalDevice, \ physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR *, pSurfaceInfo, \ VkSurfaceCapabilities2KHR *, pSurfaceCapabilities); \ HookDefine4(VkResult, vkGetPhysicalDeviceSurfaceFormats2KHR, VkPhysicalDevice, physicalDevice, \ const VkPhysicalDeviceSurfaceInfo2KHR *, pSurfaceInfo, uint32_t *, \ pSurfaceFormatCount, VkSurfaceFormat2KHR *, pSurfaceFormats); \ HookDefine3(VkResult, vkGetPhysicalDeviceDisplayProperties2KHR, VkPhysicalDevice, \ physicalDevice, uint32_t *, pPropertyCount, VkDisplayProperties2KHR *, pProperties); \ HookDefine3(VkResult, vkGetPhysicalDeviceDisplayPlaneProperties2KHR, VkPhysicalDevice, \ physicalDevice, uint32_t *, pPropertyCount, VkDisplayPlaneProperties2KHR *, \ pProperties); \ HookDefine4(VkResult, vkGetDisplayModeProperties2KHR, VkPhysicalDevice, physicalDevice, \ VkDisplayKHR, display, uint32_t *, pPropertyCount, VkDisplayModeProperties2KHR *, \ pProperties); \ HookDefine3(VkResult, vkGetDisplayPlaneCapabilities2KHR, VkPhysicalDevice, physicalDevice, \ const VkDisplayPlaneInfo2KHR *, pDisplayPlaneInfo, VkDisplayPlaneCapabilities2KHR *, \ pCapabilities); \ HookDefine7(void, vkCmdDrawIndirectCount, VkCommandBuffer, commandBuffer, VkBuffer, buffer, \ VkDeviceSize, offset, VkBuffer, countBuffer, VkDeviceSize, countBufferOffset, \ uint32_t, maxDrawCount, uint32_t, stride); \ HookDefine7(void, vkCmdDrawIndexedIndirectCount, VkCommandBuffer, commandBuffer, VkBuffer, \ buffer, VkDeviceSize, offset, VkBuffer, countBuffer, VkDeviceSize, \ countBufferOffset, uint32_t, maxDrawCount, uint32_t, stride); \ HookDefine4(VkResult, vkCreateValidationCacheEXT, VkDevice, device, \ const VkValidationCacheCreateInfoEXT *, pCreateInfo, const VkAllocationCallbacks *, \ pAllocator, VkValidationCacheEXT *, pValidationCache); \ HookDefine3(void, vkDestroyValidationCacheEXT, VkDevice, device, VkValidationCacheEXT, \ validationCache, const VkAllocationCallbacks *, pAllocator); \ HookDefine4(VkResult, vkMergeValidationCachesEXT, VkDevice, device, VkValidationCacheEXT, \ dstCache, uint32_t, srcCacheCount, const VkValidationCacheEXT *, pSrcCaches); \ HookDefine4(VkResult, vkGetValidationCacheDataEXT, VkDevice, device, VkValidationCacheEXT, \ validationCache, size_t *, pDataSize, void *, pData); \ HookDefine2(VkResult, vkGetSwapchainStatusKHR, VkDevice, device, VkSwapchainKHR, swapchain); \ HookDefine4(VkResult, vkCreateRenderPass2, VkDevice, device, const VkRenderPassCreateInfo2 *, \ pCreateInfo, const VkAllocationCallbacks *, pAllocator, VkRenderPass *, pRenderPass); \ HookDefine3(void, vkCmdBeginRenderPass2, VkCommandBuffer, commandBuffer, \ const VkRenderPassBeginInfo *, pRenderPassBegin, const VkSubpassBeginInfo *, \ pSubpassBeginInfo); \ HookDefine3(void, vkCmdNextSubpass2, VkCommandBuffer, commandBuffer, const VkSubpassBeginInfo *, \ pSubpassBeginInfo, const VkSubpassEndInfo *, pSubpassEndInfo); \ HookDefine2(void, vkCmdEndRenderPass2, VkCommandBuffer, commandBuffer, const VkSubpassEndInfo *, \ pSubpassEndInfo); \ HookDefine6(void, vkCmdBindTransformFeedbackBuffersEXT, VkCommandBuffer, commandBuffer, \ uint32_t, firstBinding, uint32_t, bindingCount, const VkBuffer *, pBuffers, \ const VkDeviceSize *, pOffsets, const VkDeviceSize *, pSizes); \ HookDefine5(void, vkCmdBeginTransformFeedbackEXT, VkCommandBuffer, commandBuffer, uint32_t, \ firstBuffer, uint32_t, bufferCount, const VkBuffer *, pCounterBuffers, \ const VkDeviceSize *, pCounterBufferOffsets); \ HookDefine5(void, vkCmdEndTransformFeedbackEXT, VkCommandBuffer, commandBuffer, uint32_t, \ firstBuffer, uint32_t, bufferCount, const VkBuffer *, pCounterBuffers, \ const VkDeviceSize *, pCounterBufferOffsets); \ HookDefine5(void, vkCmdBeginQueryIndexedEXT, VkCommandBuffer, commandBuffer, VkQueryPool, \ queryPool, uint32_t, query, VkQueryControlFlags, flags, uint32_t, index); \ HookDefine4(void, vkCmdEndQueryIndexedEXT, VkCommandBuffer, commandBuffer, VkQueryPool, \ queryPool, uint32_t, query, uint32_t, index); \ HookDefine7(void, vkCmdDrawIndirectByteCountEXT, VkCommandBuffer, commandBuffer, uint32_t, \ instanceCount, uint32_t, firstInstance, VkBuffer, counterBuffer, VkDeviceSize, \ counterBufferOffset, uint32_t, counterOffset, uint32_t, vertexStride); \ HookDefine2(void, vkCmdBeginConditionalRenderingEXT, VkCommandBuffer, commandBuffer, \ const VkConditionalRenderingBeginInfoEXT *, pConditionalRenderingBegin); \ HookDefine1(void, vkCmdEndConditionalRenderingEXT, VkCommandBuffer, commandBuffer); \ HookDefine2(void, vkCmdSetSampleLocationsEXT, VkCommandBuffer, commandBuffer, \ const VkSampleLocationsInfoEXT *, pSampleLocationsInfo); \ HookDefine3(void, vkGetPhysicalDeviceMultisamplePropertiesEXT, VkPhysicalDevice, physicalDevice, \ VkSampleCountFlagBits, samples, VkMultisamplePropertiesEXT *, pMultisampleProperties); \ HookDefine4(void, vkCmdSetDiscardRectangleEXT, VkCommandBuffer, commandBuffer, uint32_t, \ firstDiscardRectangle, uint32_t, discardRectangleCount, const VkRect2D *, \ pDiscardRectangles); \ HookDefine3(VkResult, vkGetPhysicalDeviceCalibrateableTimeDomainsEXT, VkPhysicalDevice, \ physicalDevice, uint32_t *, pTimeDomainCount, VkTimeDomainKHR *, pTimeDomains); \ HookDefine5(VkResult, vkGetCalibratedTimestampsEXT, VkDevice, device, uint32_t, timestampCount, \ const VkCalibratedTimestampInfoKHR *, pTimestampInfos, uint64_t *, pTimestamps, \ uint64_t *, pMaxDeviation); \ HookDefine4(void, vkResetQueryPool, VkDevice, device, VkQueryPool, queryPool, uint32_t, \ firstQuery, uint32_t, queryCount); \ HookDefine2(VkDeviceAddress, vkGetBufferDeviceAddressEXT, VkDevice, device, \ VkBufferDeviceAddressInfo *, pInfo); \ HookDefine4(void, vkSetHdrMetadataEXT, VkDevice, device, uint32_t, swapchainCount, \ const VkSwapchainKHR *, pSwapchains, const VkHdrMetadataEXT *, pMetadata); \ HookDefine3(void, vkSetLocalDimmingAMD, VkDevice, device, VkSwapchainKHR, swapChain, VkBool32, \ localDimmingEnable); \ HookDefine4(VkResult, vkCreateHeadlessSurfaceEXT, VkInstance, instance, \ const VkHeadlessSurfaceCreateInfoEXT *, pCreateInfo, const VkAllocationCallbacks *, \ pAllocator, VkSurfaceKHR *, pSurface); \ HookDefine4(VkResult, vkGetPipelineExecutablePropertiesKHR, VkDevice, device, \ const VkPipelineInfoKHR *, pPipelineInfo, uint32_t *, pExecutableCount, \ VkPipelineExecutablePropertiesKHR *, pProperties); \ HookDefine4(VkResult, vkGetPipelineExecutableStatisticsKHR, VkDevice, device, \ const VkPipelineExecutableInfoKHR *, pExecutableInfo, uint32_t *, pStatisticCount, \ VkPipelineExecutableStatisticKHR *, pStatistics); \ HookDefine4(VkResult, vkGetPipelineExecutableInternalRepresentationsKHR, VkDevice, device, \ const VkPipelineExecutableInfoKHR *, pExecutableInfo, uint32_t *, \ pInternalRepresentationCount, VkPipelineExecutableInternalRepresentationKHR *, \ pInternalRepresentations); \ HookDefine3(void, vkCmdSetLineStippleEXT, VkCommandBuffer, commandBuffer, uint32_t, \ lineStippleFactor, uint16_t, lineStipplePattern); \ HookDefine3(VkResult, vkGetRefreshCycleDurationGOOGLE, VkDevice, device, VkSwapchainKHR, \ swapchain, VkRefreshCycleDurationGOOGLE *, pDisplayTimingProperties); \ HookDefine4(VkResult, vkGetPastPresentationTimingGOOGLE, VkDevice, device, VkSwapchainKHR, \ swapchain, uint32_t *, pPresentationTimingCount, VkPastPresentationTimingGOOGLE *, \ pPresentationTimings); \ HookDefine3(VkResult, vkGetSemaphoreCounterValue, VkDevice, device, VkSemaphore, semaphore, \ uint64_t *, pValue); \ HookDefine3(VkResult, vkWaitSemaphores, VkDevice, device, const VkSemaphoreWaitInfo *, \ pWaitInfo, uint64_t, timeout); \ HookDefine2(VkResult, vkSignalSemaphore, VkDevice, device, const VkSemaphoreSignalInfo *, \ pSignalInfo); \ HookDefine5(VkResult, vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR, \ VkPhysicalDevice, physicalDevice, uint32_t, queueFamilyIndex, uint32_t *, \ pCounterCount, VkPerformanceCounterKHR *, pCounters, \ VkPerformanceCounterDescriptionKHR *, pCounterDescriptions); \ HookDefine3(void, vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR, VkPhysicalDevice, \ physicalDevice, const VkQueryPoolPerformanceCreateInfoKHR *, \ pPerformanceQueryCreateInfo, uint32_t *, pNumPasses); \ HookDefine2(VkResult, vkAcquireProfilingLockKHR, VkDevice, device, \ const VkAcquireProfilingLockInfoKHR *, pInfo); \ HookDefine1(void, vkReleaseProfilingLockKHR, VkDevice, device); \ HookDefine2(VkDeviceAddress, vkGetBufferDeviceAddress, VkDevice, device, \ VkBufferDeviceAddressInfo *, pInfo); \ HookDefine2(uint64_t, vkGetBufferOpaqueCaptureAddress, VkDevice, device, \ VkBufferDeviceAddressInfo *, pInfo); \ HookDefine2(uint64_t, vkGetDeviceMemoryOpaqueCaptureAddress, VkDevice, device, \ VkDeviceMemoryOpaqueCaptureAddressInfo *, pInfo); \ HookDefine3(VkResult, vkGetPhysicalDeviceToolProperties, VkPhysicalDevice, physicalDevice, \ uint32_t *, pToolCount, VkPhysicalDeviceToolProperties *, pToolProperties); \ HookDefine4(VkResult, vkCreatePrivateDataSlot, VkDevice, device, \ const VkPrivateDataSlotCreateInfo *, pCreateInfo, const VkAllocationCallbacks *, \ pAllocator, VkPrivateDataSlot *, pPrivateDataSlot); \ HookDefine3(void, vkDestroyPrivateDataSlot, VkDevice, device, VkPrivateDataSlot, \ privateDataSlot, const VkAllocationCallbacks *, pAllocator); \ HookDefine5(VkResult, vkSetPrivateData, VkDevice, device, VkObjectType, objectType, uint64_t, \ objectHandle, VkPrivateDataSlot, privateDataSlot, uint64_t, data); \ HookDefine5(void, vkGetPrivateData, VkDevice, device, VkObjectType, objectType, uint64_t, \ objectHandle, VkPrivateDataSlot, privateDataSlot, uint64_t *, pData); \ HookDefine2(void, vkCmdSetCullMode, VkCommandBuffer, commandBuffer, VkCullModeFlags, cullMode); \ HookDefine2(void, vkCmdSetFrontFace, VkCommandBuffer, commandBuffer, VkFrontFace, frontFace); \ HookDefine2(void, vkCmdSetPrimitiveTopology, VkCommandBuffer, commandBuffer, \ VkPrimitiveTopology, primitiveTopology); \ HookDefine3(void, vkCmdSetViewportWithCount, VkCommandBuffer, commandBuffer, uint32_t, \ viewportCount, const VkViewport *, pViewports); \ HookDefine3(void, vkCmdSetScissorWithCount, VkCommandBuffer, commandBuffer, uint32_t, \ scissorCount, const VkRect2D *, pScissors); \ HookDefine7(void, vkCmdBindVertexBuffers2, VkCommandBuffer, commandBuffer, uint32_t, firstBinding, \ uint32_t, bindingCount, const VkBuffer *, pBuffers, const VkDeviceSize *, pOffsets, \ const VkDeviceSize *, pSizes, const VkDeviceSize *, pStrides); \ HookDefine2(void, vkCmdSetDepthTestEnable, VkCommandBuffer, commandBuffer, VkBool32, \ depthTestEnable); \ HookDefine2(void, vkCmdSetDepthWriteEnable, VkCommandBuffer, commandBuffer, VkBool32, \ depthWriteEnable); \ HookDefine2(void, vkCmdSetDepthCompareOp, VkCommandBuffer, commandBuffer, VkCompareOp, \ depthCompareOp); \ HookDefine2(void, vkCmdSetDepthBoundsTestEnable, VkCommandBuffer, commandBuffer, VkBool32, \ depthBoundsTestEnable); \ HookDefine2(void, vkCmdSetStencilTestEnable, VkCommandBuffer, commandBuffer, VkBool32, \ stencilTestEnable); \ HookDefine6(void, vkCmdSetStencilOp, VkCommandBuffer, commandBuffer, VkStencilFaceFlags, \ faceMask, VkStencilOp, failOp, VkStencilOp, passOp, VkStencilOp, depthFailOp, \ VkCompareOp, compareOp); \ HookDefine2(void, vkCmdCopyBuffer2, VkCommandBuffer, commandBuffer, const VkCopyBufferInfo2 *, \ pCopyBufferInfo); \ HookDefine2(void, vkCmdCopyImage2, VkCommandBuffer, commandBuffer, const VkCopyImageInfo2 *, \ pCopyImageInfo); \ HookDefine2(void, vkCmdCopyBufferToImage2, VkCommandBuffer, commandBuffer, \ const VkCopyBufferToImageInfo2 *, pCopyBufferToImageInfo); \ HookDefine2(void, vkCmdCopyImageToBuffer2, VkCommandBuffer, commandBuffer, \ const VkCopyImageToBufferInfo2 *, pCopyImageToBufferInfo); \ HookDefine2(void, vkCmdBlitImage2, VkCommandBuffer, commandBuffer, const VkBlitImageInfo2 *, \ pBlitImageInfo); \ HookDefine2(void, vkCmdResolveImage2, VkCommandBuffer, commandBuffer, \ const VkResolveImageInfo2 *, pResolveImageInfo); \ HookDefine3(void, vkCmdSetEvent2, VkCommandBuffer, commandBuffer, VkEvent, event, \ const VkDependencyInfo *, pDependencyInfo); \ HookDefine3(void, vkCmdResetEvent2, VkCommandBuffer, commandBuffer, VkEvent, event, \ VkPipelineStageFlags2, stageMask); \ HookDefine4(void, vkCmdWaitEvents2, VkCommandBuffer, commandBuffer, uint32_t, eventCount, \ const VkEvent *, pEvents, const VkDependencyInfo *, pDependencyInfos); \ HookDefine2(void, vkCmdPipelineBarrier2, VkCommandBuffer, commandBuffer, \ const VkDependencyInfo *, pDependencyInfo); \ HookDefine4(void, vkCmdWriteTimestamp2, VkCommandBuffer, commandBuffer, VkPipelineStageFlags2, \ stage, VkQueryPool, queryPool, uint32_t, query); \ HookDefine4(VkResult, vkQueueSubmit2, VkQueue, queue, uint32_t, submitCount, \ const VkSubmitInfo2 *, pSubmits, VkFence, fence); \ HookDefine5(void, vkCmdWriteBufferMarker2AMD, VkCommandBuffer, commandBuffer, \ VkPipelineStageFlags2, stage, VkBuffer, dstBuffer, VkDeviceSize, dstOffset, \ uint32_t, marker); \ HookDefine4(VkResult, vkWaitForPresentKHR, VkDevice, device, VkSwapchainKHR, swapchain, \ uint64_t, presentId, uint64_t, timeout); \ HookDefine3(void, vkGetDeviceBufferMemoryRequirements, VkDevice, device, \ const VkDeviceBufferMemoryRequirements *, pInfo, VkMemoryRequirements2 *, \ pMemoryRequirements); \ HookDefine3(void, vkGetDeviceImageMemoryRequirements, VkDevice, device, \ const VkDeviceImageMemoryRequirements *, pInfo, VkMemoryRequirements2 *, \ pMemoryRequirements); \ HookDefine4(void, vkGetDeviceImageSparseMemoryRequirements, VkDevice, device, \ const VkDeviceImageMemoryRequirements *, pInfo, uint32_t *, \ pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2 *, \ pSparseMemoryRequirements); \ HookDefine3(void, vkCmdSetColorWriteEnableEXT, VkCommandBuffer, commandBuffer, uint32_t, \ attachmentCount, const VkBool32 *, pColorWriteEnables); \ HookDefine2(void, vkCmdSetDepthBiasEnable, VkCommandBuffer, commandBuffer, VkBool32, \ depthBiasEnable); \ HookDefine2(void, vkCmdSetLogicOpEXT, VkCommandBuffer, commandBuffer, VkLogicOp, logicOp); \ HookDefine2(void, vkCmdSetPatchControlPointsEXT, VkCommandBuffer, commandBuffer, uint32_t, \ patchControlPoints); \ HookDefine2(void, vkCmdSetPrimitiveRestartEnable, VkCommandBuffer, commandBuffer, VkBool32, \ primitiveRestartEnable); \ HookDefine2(void, vkCmdSetRasterizerDiscardEnable, VkCommandBuffer, commandBuffer, VkBool32, \ rasterizerDiscardEnable); \ HookDefine5(void, vkCmdSetVertexInputEXT, VkCommandBuffer, commandBuffer, uint32_t, \ vertexBindingDescriptionCount, const VkVertexInputBindingDescription2EXT *, \ pVertexBindingDescriptions, uint32_t, vertexAttributeDescriptionCount, \ const VkVertexInputAttributeDescription2EXT *, pVertexAttributeDescriptions); \ HookDefine2(void, vkCmdBeginRendering, VkCommandBuffer, commandBuffer, const VkRenderingInfo *, \ pRenderingInfo); \ HookDefine1(void, vkCmdEndRendering, VkCommandBuffer, commandBuffer); \ HookDefine3(void, vkCmdSetFragmentShadingRateKHR, VkCommandBuffer, commandBuffer, \ const VkExtent2D *, pFragmentSize, const VkFragmentShadingRateCombinerOpKHR *, \ combinerOps); \ HookDefine3(VkResult, vkGetPhysicalDeviceFragmentShadingRatesKHR, VkPhysicalDevice, \ physicalDevice, uint32_t *, pFragmentShadingRateCount, \ VkPhysicalDeviceFragmentShadingRateKHR *, pFragmentShadingRates); \ HookDefine3(void, vkSetDeviceMemoryPriorityEXT, VkDevice, device, VkDeviceMemory, memory, float, \ priority); \ HookDefine3(VkResult, vkAcquireDrmDisplayEXT, VkPhysicalDevice, physicalDevice, int32_t, drmFd, \ VkDisplayKHR, display); \ HookDefine4(VkResult, vkGetDrmDisplayEXT, VkPhysicalDevice, physicalDevice, int32_t, drmFd, \ uint32_t, connectorId, VkDisplayKHR *, display); \ HookDefine2(VkResult, vkReleaseSwapchainImagesEXT, VkDevice, device, \ const VkReleaseSwapchainImagesInfoEXT *, pReleaseInfo); \ HookDefine2(void, vkCmdSetAttachmentFeedbackLoopEnableEXT, VkCommandBuffer, commandBuffer, \ VkImageAspectFlags, aspectMask); \ HookDefine2(void, vkCmdSetAlphaToCoverageEnableEXT, VkCommandBuffer, commandBuffer, VkBool32, \ alphaToCoverageEnable); \ HookDefine2(void, vkCmdSetAlphaToOneEnableEXT, VkCommandBuffer, commandBuffer, VkBool32, \ alphaToOneEnable); \ HookDefine4(void, vkCmdSetColorBlendAdvancedEXT, VkCommandBuffer, commandBuffer, uint32_t, \ firstAttachment, uint32_t, attachmentCount, const VkColorBlendAdvancedEXT *, \ pColorBlendAdvanced); \ HookDefine4(void, vkCmdSetColorBlendEnableEXT, VkCommandBuffer, commandBuffer, uint32_t, \ firstAttachment, uint32_t, attachmentCount, const VkBool32 *, pColorBlendEnables); \ HookDefine4(void, vkCmdSetColorBlendEquationEXT, VkCommandBuffer, commandBuffer, uint32_t, \ firstAttachment, uint32_t, attachmentCount, const VkColorBlendEquationEXT *, \ pColorBlendEquations); \ HookDefine4(void, vkCmdSetColorWriteMaskEXT, VkCommandBuffer, commandBuffer, uint32_t, \ firstAttachment, uint32_t, attachmentCount, const VkColorComponentFlags *, \ pColorWriteMasks); \ HookDefine2(void, vkCmdSetConservativeRasterizationModeEXT, VkCommandBuffer, commandBuffer, \ VkConservativeRasterizationModeEXT, conservativeRasterizationMode); \ HookDefine2(void, vkCmdSetCoverageModulationModeNV, VkCommandBuffer, commandBuffer, \ VkCoverageModulationModeNV, coverageModulationMode); \ HookDefine2(void, vkCmdSetCoverageModulationTableEnableNV, VkCommandBuffer, commandBuffer, \ VkBool32, coverageModulationTableEnable); \ HookDefine3(void, vkCmdSetCoverageModulationTableNV, VkCommandBuffer, commandBuffer, uint32_t, \ coverageModulationTableCount, const float *, pCoverageModulationTable); \ HookDefine2(void, vkCmdSetCoverageReductionModeNV, VkCommandBuffer, commandBuffer, \ VkCoverageReductionModeNV, coverageReductionMode); \ HookDefine2(void, vkCmdSetCoverageToColorEnableNV, VkCommandBuffer, commandBuffer, VkBool32, \ coverageToColorEnable); \ HookDefine2(void, vkCmdSetCoverageToColorLocationNV, VkCommandBuffer, commandBuffer, uint32_t, \ coverageToColorLocation); \ HookDefine2(void, vkCmdSetDepthClampEnableEXT, VkCommandBuffer, commandBuffer, VkBool32, \ depthClampEnable); \ HookDefine2(void, vkCmdSetDepthClipEnableEXT, VkCommandBuffer, commandBuffer, VkBool32, \ depthClipEnable); \ HookDefine2(void, vkCmdSetDepthClipNegativeOneToOneEXT, VkCommandBuffer, commandBuffer, \ VkBool32, negativeOneToOne); \ HookDefine2(void, vkCmdSetExtraPrimitiveOverestimationSizeEXT, VkCommandBuffer, commandBuffer, \ float, extraPrimitiveOverestimationSize); \ HookDefine2(void, vkCmdSetLineRasterizationModeEXT, VkCommandBuffer, commandBuffer, \ VkLineRasterizationModeEXT, lineRasterizationMode); \ HookDefine2(void, vkCmdSetLineStippleEnableEXT, VkCommandBuffer, commandBuffer, VkBool32, \ stippledLineEnable); \ HookDefine2(void, vkCmdSetLogicOpEnableEXT, VkCommandBuffer, commandBuffer, VkBool32, \ logicOpEnable); \ HookDefine2(void, vkCmdSetPolygonModeEXT, VkCommandBuffer, commandBuffer, VkPolygonMode, \ polygonMode); \ HookDefine2(void, vkCmdSetProvokingVertexModeEXT, VkCommandBuffer, commandBuffer, \ VkProvokingVertexModeEXT, provokingVertexMode); \ HookDefine2(void, vkCmdSetRasterizationSamplesEXT, VkCommandBuffer, commandBuffer, \ VkSampleCountFlagBits, rasterizationSamples); \ HookDefine2(void, vkCmdSetRasterizationStreamEXT, VkCommandBuffer, commandBuffer, uint32_t, \ rasterizationStream); \ HookDefine2(void, vkCmdSetRepresentativeFragmentTestEnableNV, VkCommandBuffer, commandBuffer, \ VkBool32, representativeFragmentTestEnable); \ HookDefine2(void, vkCmdSetSampleLocationsEnableEXT, VkCommandBuffer, commandBuffer, VkBool32, \ sampleLocationsEnable); \ HookDefine3(void, vkCmdSetSampleMaskEXT, VkCommandBuffer, commandBuffer, VkSampleCountFlagBits, \ samples, const VkSampleMask *, pSampleMask); \ HookDefine2(void, vkCmdSetShadingRateImageEnableNV, VkCommandBuffer, commandBuffer, VkBool32, \ shadingRateImageEnable); \ HookDefine2(void, vkCmdSetTessellationDomainOriginEXT, VkCommandBuffer, commandBuffer, \ VkTessellationDomainOrigin, domainOrigin); \ HookDefine4(void, vkCmdSetViewportSwizzleNV, VkCommandBuffer, commandBuffer, uint32_t, \ firstViewport, uint32_t, viewportCount, const VkViewportSwizzleNV *, \ pViewportSwizzles); \ HookDefine2(void, vkCmdSetViewportWScalingEnableNV, VkCommandBuffer, commandBuffer, VkBool32, \ viewportWScalingEnable); \ HookDefine4(void, vkCmdDrawMeshTasksEXT, VkCommandBuffer, commandBuffer, uint32_t, groupCountX, \ uint32_t, groupCountY, uint32_t, groupCountZ); \ HookDefine5(void, vkCmdDrawMeshTasksIndirectEXT, VkCommandBuffer, commandBuffer, VkBuffer, \ buffer, VkDeviceSize, offset, uint32_t, drawCount, uint32_t, stride); \ HookDefine7(void, vkCmdDrawMeshTasksIndirectCountEXT, VkCommandBuffer, commandBuffer, VkBuffer, \ buffer, VkDeviceSize, offset, VkBuffer, countBuffer, VkDeviceSize, \ countBufferOffset, uint32_t, maxDrawCount, uint32_t, stride); \ HookDefine3(VkResult, vkGetPhysicalDeviceCalibrateableTimeDomainsKHR, VkPhysicalDevice, \ physicalDevice, uint32_t *, pTimeDomainCount, VkTimeDomainKHR *, pTimeDomains); \ HookDefine5(VkResult, vkGetCalibratedTimestampsKHR, VkDevice, device, uint32_t, timestampCount, \ const VkCalibratedTimestampInfoKHR *, pTimestampInfos, uint64_t *, pTimestamps, \ uint64_t *, pMaxDeviation); \ HookDefine3(void, vkCmdSetLineStippleKHR, VkCommandBuffer, commandBuffer, uint32_t, \ lineStippleFactor, uint16_t, lineStipplePattern); \ HookDefine3(VkResult, vkCreateDeferredOperationKHR, VkDevice, device, \ const VkAllocationCallbacks *, pAllocator, VkDeferredOperationKHR *, \ pDeferredOperation); \ HookDefine2(VkResult, vkDeferredOperationJoinKHR, VkDevice, device, VkDeferredOperationKHR, \ operation); \ HookDefine3(void, vkDestroyDeferredOperationKHR, VkDevice, device, VkDeferredOperationKHR, \ operation, const VkAllocationCallbacks *, pAllocator); \ HookDefine2(uint32_t, vkGetDeferredOperationMaxConcurrencyKHR, VkDevice, device, \ VkDeferredOperationKHR, operation); \ HookDefine2(VkResult, vkGetDeferredOperationResultKHR, VkDevice, device, VkDeferredOperationKHR, \ operation); \ HookDefine5(VkResult, vkBuildAccelerationStructuresKHR, VkDevice, device, \ VkDeferredOperationKHR, deferredOperation, uint32_t, infoCount, \ const VkAccelerationStructureBuildGeometryInfoKHR *, pInfos, \ const VkAccelerationStructureBuildRangeInfoKHR *const *, ppBuildRangeInfos); \ HookDefine6(void, vkCmdBuildAccelerationStructuresIndirectKHR, VkCommandBuffer, commandBuffer, \ uint32_t, infoCount, const VkAccelerationStructureBuildGeometryInfoKHR *, pInfos, \ const VkDeviceAddress *, pIndirectDeviceAddresses, const uint32_t *, \ pIndirectStrides, const uint32_t *const *, ppMaxPrimitiveCounts); \ HookDefine4(void, vkCmdBuildAccelerationStructuresKHR, VkCommandBuffer, commandBuffer, uint32_t, \ infoCount, const VkAccelerationStructureBuildGeometryInfoKHR *, pInfos, \ const VkAccelerationStructureBuildRangeInfoKHR *const *, ppBuildRangeInfos); \ HookDefine2(void, vkCmdCopyAccelerationStructureKHR, VkCommandBuffer, commandBuffer, \ const VkCopyAccelerationStructureInfoKHR *, pInfo); \ HookDefine2(void, vkCmdCopyAccelerationStructureToMemoryKHR, VkCommandBuffer, commandBuffer, \ const VkCopyAccelerationStructureToMemoryInfoKHR *, pInfo); \ HookDefine2(void, vkCmdCopyMemoryToAccelerationStructureKHR, VkCommandBuffer, commandBuffer, \ const VkCopyMemoryToAccelerationStructureInfoKHR *, pInfo); \ HookDefine6(void, vkCmdWriteAccelerationStructuresPropertiesKHR, VkCommandBuffer, commandBuffer, \ uint32_t, accelerationStructureCount, const VkAccelerationStructureKHR *, \ pAccelerationStructures, VkQueryType, queryType, VkQueryPool, queryPool, uint32_t, \ firstQuery); \ HookDefine3(VkResult, vkCopyAccelerationStructureKHR, VkDevice, device, VkDeferredOperationKHR, \ deferredOperation, const VkCopyAccelerationStructureInfoKHR *, pInfo); \ HookDefine3(VkResult, vkCopyAccelerationStructureToMemoryKHR, VkDevice, device, \ VkDeferredOperationKHR, deferredOperation, \ const VkCopyAccelerationStructureToMemoryInfoKHR *, pInfo); \ HookDefine3(VkResult, vkCopyMemoryToAccelerationStructureKHR, VkDevice, device, \ VkDeferredOperationKHR, deferredOperation, \ const VkCopyMemoryToAccelerationStructureInfoKHR *, pInfo); \ HookDefine4(VkResult, vkCreateAccelerationStructureKHR, VkDevice, device, \ const VkAccelerationStructureCreateInfoKHR *, pCreateInfo, \ const VkAllocationCallbacks *, pAllocator, VkAccelerationStructureKHR *, \ pAccelerationStructure); \ HookDefine3(void, vkDestroyAccelerationStructureKHR, VkDevice, device, VkAccelerationStructureKHR, \ accelerationStructure, const VkAllocationCallbacks *, pAllocator); \ HookDefine5(void, vkGetAccelerationStructureBuildSizesKHR, VkDevice, device, \ VkAccelerationStructureBuildTypeKHR, buildType, \ const VkAccelerationStructureBuildGeometryInfoKHR *, pBuildInfo, const uint32_t *, \ pMaxPrimitiveCounts, VkAccelerationStructureBuildSizesInfoKHR *, pSizeInfo); \ HookDefine2(VkDeviceAddress, vkGetAccelerationStructureDeviceAddressKHR, VkDevice, device, \ const VkAccelerationStructureDeviceAddressInfoKHR *, pInfo); \ HookDefine3(void, vkGetDeviceAccelerationStructureCompatibilityKHR, VkDevice, device, \ const VkAccelerationStructureVersionInfoKHR *, pVersionInfo, \ VkAccelerationStructureCompatibilityKHR *, pCompatibility); \ HookDefine7(VkResult, vkWriteAccelerationStructuresPropertiesKHR, VkDevice, device, uint32_t, \ accelerationStructureCount, const VkAccelerationStructureKHR *, \ pAccelerationStructures, VkQueryType, queryType, size_t, dataSize, void *, pData, \ size_t, stride); \ HookDefine4(void, vkCmdBindShadersEXT, VkCommandBuffer, commandBuffer, uint32_t, stageCount, \ const VkShaderStageFlagBits *, pStages, const VkShaderEXT *, pShaders); \ HookDefine5(VkResult, vkCreateShadersEXT, VkDevice, device, uint32_t, createInfoCount, \ const VkShaderCreateInfoEXT *, pCreateInfos, const VkAllocationCallbacks *, \ pAllocator, VkShaderEXT *, pShaders); \ HookDefine3(void, vkDestroyShaderEXT, VkDevice, device, VkShaderEXT, shader, \ const VkAllocationCallbacks *, pAllocator); \ HookDefine4(VkResult, vkGetShaderBinaryDataEXT, VkDevice, device, VkShaderEXT, shader, size_t *, \ pDataSize, void *, pData); \ HookDefine_Win32(); \ HookDefine_Linux(); \ HookDefine_GGP(); \ HookDefine_Android(); \ HookDefine_Mac();