From ca38fb1a85baa54e629b05f692fd0fe365b5ac9c Mon Sep 17 00:00:00 2001 From: baldurk Date: Tue, 24 Apr 2018 19:09:20 +0100 Subject: [PATCH] Implement extension VK_KHR_maintenance3. * Not much to do here - this extension only exposes some queries, which we just need to ensure we can pass along and unwrap. --- renderdoc/driver/vulkan/vk_core.cpp | 3 +++ renderdoc/driver/vulkan/vk_core.h | 5 +++++ renderdoc/driver/vulkan/vk_hookset_defs.h | 5 +++++ renderdoc/driver/vulkan/wrappers/vk_get_funcs.cpp | 8 ++++++++ 4 files changed, 21 insertions(+) diff --git a/renderdoc/driver/vulkan/vk_core.cpp b/renderdoc/driver/vulkan/vk_core.cpp index ab56f000c..628bbabf4 100644 --- a/renderdoc/driver/vulkan/vk_core.cpp +++ b/renderdoc/driver/vulkan/vk_core.cpp @@ -640,6 +640,9 @@ static const VkExtensionProperties supportedExtensions[] = { { VK_KHR_MAINTENANCE2_EXTENSION_NAME, VK_KHR_MAINTENANCE2_SPEC_VERSION, }, + { + VK_KHR_MAINTENANCE3_EXTENSION_NAME, VK_KHR_MAINTENANCE3_SPEC_VERSION, + }, { VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME, VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION, }, diff --git a/renderdoc/driver/vulkan/vk_core.h b/renderdoc/driver/vulkan/vk_core.h index bc915e316..89f61a99f 100644 --- a/renderdoc/driver/vulkan/vk_core.h +++ b/renderdoc/driver/vulkan/vk_core.h @@ -1672,4 +1672,9 @@ public: IMPLEMENT_FUNCTION_SERIALISED(VkResult, vkBindImageMemory2KHR, VkDevice device, uint32_t bindInfoCount, const VkBindImageMemoryInfoKHR *pBindInfos); + + // VK_KHR_maintenance3 + void vkGetDescriptorSetLayoutSupportKHR(VkDevice device, + const VkDescriptorSetLayoutCreateInfo *pCreateInfo, + VkDescriptorSetLayoutSupport *pSupport); }; diff --git a/renderdoc/driver/vulkan/vk_hookset_defs.h b/renderdoc/driver/vulkan/vk_hookset_defs.h index a515a6244..26b6519d1 100644 --- a/renderdoc/driver/vulkan/vk_hookset_defs.h +++ b/renderdoc/driver/vulkan/vk_hookset_defs.h @@ -299,6 +299,7 @@ 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); \ @@ -381,6 +382,7 @@ CmdPushDescriptorSetWithTemplateKHR); \ HookInitExtension(KHR_bind_memory2, BindBufferMemory2KHR); \ HookInitExtension(KHR_bind_memory2, BindImageMemory2KHR); \ + HookInitExtension(KHR_maintenance3, GetDescriptorSetLayoutSupportKHR); \ HookInitDevice_PlatformSpecific() #define DefineHooks() \ @@ -814,6 +816,9 @@ const VkBindBufferMemoryInfoKHR *, pBindInfos); \ HookDefine3(VkResult, vkBindImageMemory2KHR, VkDevice, device, uint32_t, bindInfoCount, \ const VkBindImageMemoryInfoKHR *, pBindInfos); \ + HookDefine3(void, vkGetDescriptorSetLayoutSupportKHR, VkDevice, device, \ + const VkDescriptorSetLayoutCreateInfo *, pCreateInfo, \ + VkDescriptorSetLayoutSupport *, pSupport); \ HookDefine_PlatformSpecific() struct VkLayerInstanceDispatchTableExtended : VkLayerInstanceDispatchTable diff --git a/renderdoc/driver/vulkan/wrappers/vk_get_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_get_funcs.cpp index e988bada3..5de158631 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_get_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_get_funcs.cpp @@ -477,4 +477,12 @@ VkResult WrappedVulkan::vkGetShaderInfoAMD(VkDevice device, VkPipeline pipeline, { return ObjDisp(device)->GetShaderInfoAMD(Unwrap(device), Unwrap(pipeline), shaderStage, infoType, pInfoSize, pInfo); +} + +void WrappedVulkan::vkGetDescriptorSetLayoutSupportKHR(VkDevice device, + const VkDescriptorSetLayoutCreateInfo *pCreateInfo, + VkDescriptorSetLayoutSupport *pSupport) +{ + VkDescriptorSetLayoutCreateInfo unwrapped = UnwrapInfo(pCreateInfo); + return ObjDisp(device)->GetDescriptorSetLayoutSupportKHR(Unwrap(device), &unwrapped, pSupport); } \ No newline at end of file