diff --git a/renderdoc/driver/vulkan/vk_core.cpp b/renderdoc/driver/vulkan/vk_core.cpp index 4d2312383..dce138483 100644 --- a/renderdoc/driver/vulkan/vk_core.cpp +++ b/renderdoc/driver/vulkan/vk_core.cpp @@ -724,6 +724,9 @@ static const VkExtensionProperties supportedExtensions[] = { VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME, VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION, }, #endif + { + VK_KHR_MAINTENANCE1_EXTENSION_NAME, VK_KHR_MAINTENANCE1_SPEC_VERSION, + }, { VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME, VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION, diff --git a/renderdoc/driver/vulkan/vk_core.h b/renderdoc/driver/vulkan/vk_core.h index 2dcf07dc2..29699d61b 100644 --- a/renderdoc/driver/vulkan/vk_core.h +++ b/renderdoc/driver/vulkan/vk_core.h @@ -1403,4 +1403,8 @@ public: VkImageUsageFlags usage, VkImageCreateFlags flags, VkExternalMemoryHandleTypeFlagsNV externalHandleType, VkExternalImageFormatPropertiesNV *pExternalImageFormatProperties); + + // VK_KHR_maintenance1 + void vkTrimCommandPoolKHR(VkDevice device, VkCommandPool commandPool, + VkCommandPoolTrimFlagsKHR flags); }; diff --git a/renderdoc/driver/vulkan/vk_hookset_defs.h b/renderdoc/driver/vulkan/vk_hookset_defs.h index 57cb986b1..4c8ce4db1 100644 --- a/renderdoc/driver/vulkan/vk_hookset_defs.h +++ b/renderdoc/driver/vulkan/vk_hookset_defs.h @@ -265,7 +265,8 @@ CheckExt(VK_KHR_display_swapchain); \ CheckExt(VK_NV_external_memory); \ CheckExt(VK_NV_external_memory_win32); \ - CheckExt(VK_NV_win32_keyed_mutex); + CheckExt(VK_NV_win32_keyed_mutex); \ + CheckExt(VK_KHR_maintenance1); #define HookInitVulkanInstanceExts() \ HookInitExtension(VK_KHR_surface, DestroySurfaceKHR); \ @@ -299,6 +300,7 @@ HookInitExtension(VK_KHR_swapchain, AcquireNextImageKHR); \ HookInitExtension(VK_KHR_swapchain, QueuePresentKHR); \ HookInitExtension(VK_KHR_display_swapchain, CreateSharedSwapchainsKHR); \ + HookInitExtension(VK_KHR_maintenance1, TrimCommandPoolKHR); \ HookInitDevice_PlatformSpecific() #define DefineHooks() \ @@ -651,6 +653,8 @@ VkImageUsageFlags, usage, VkImageCreateFlags, flags, \ VkExternalMemoryHandleTypeFlagsNV, externalHandleType, \ VkExternalImageFormatPropertiesNV *, pExternalImageFormatProperties); \ + HookDefine3(void, vkTrimCommandPoolKHR, VkDevice, device, VkCommandPool, commandPool, \ + VkCommandPoolTrimFlagsKHR, flags); \ HookDefine_PlatformSpecific() struct VkLayerInstanceDispatchTableExtended : VkLayerInstanceDispatchTable diff --git a/renderdoc/driver/vulkan/wrappers/vk_cmd_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_cmd_funcs.cpp index e3e766456..618fc5e59 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_cmd_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_cmd_funcs.cpp @@ -377,6 +377,12 @@ VkResult WrappedVulkan::vkResetCommandPool(VkDevice device, VkCommandPool cmdPoo return ObjDisp(device)->ResetCommandPool(Unwrap(device), Unwrap(cmdPool), flags); } +void WrappedVulkan::vkTrimCommandPoolKHR(VkDevice device, VkCommandPool commandPool, + VkCommandPoolTrimFlagsKHR flags) +{ + return ObjDisp(device)->TrimCommandPoolKHR(Unwrap(device), Unwrap(commandPool), flags); +} + // Command buffer functions VkResult WrappedVulkan::vkAllocateCommandBuffers(VkDevice device,