From 0d740a07716a6381782af89fffe51fffcbb6b10b Mon Sep 17 00:00:00 2001 From: Jon Ashburn Date: Wed, 16 Sep 2015 18:08:32 -0600 Subject: layers: Fix several bugs in WSI extension handling in layers Layers weren't intercepting the WSI device extensions proerly, or weren't NOT intercepting them if the extension wasn't enabled. Fixes to APIDump, Generic, ScreenShot, MemTracker, ObjectTracker --- layers/screenshot.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'layers/screenshot.cpp') diff --git a/layers/screenshot.cpp b/layers/screenshot.cpp index e8d4b602..bc2b8208 100644 --- a/layers/screenshot.cpp +++ b/layers/screenshot.cpp @@ -312,6 +312,15 @@ static void createDeviceRegisterExtensions(const VkDeviceCreateInfo* pCreateInfo { uint32_t i; VkLayerDispatchTable *pDisp = get_dispatch_table(screenshot_device_table_map, device); + PFN_vkGetDeviceProcAddr gpa = pDisp->GetDeviceProcAddr; + pDisp->GetSurfacePropertiesKHR = (PFN_vkGetSurfacePropertiesKHR) gpa(device, "vkGetSurfacePropertiesKHR"); + pDisp->GetSurfaceFormatsKHR = (PFN_vkGetSurfaceFormatsKHR) gpa(device, "vkGetSurfaceFormatsKHR"); + pDisp->GetSurfacePresentModesKHR = (PFN_vkGetSurfacePresentModesKHR) gpa(device, "vkGetSurfacePresentModesKHR"); + pDisp->CreateSwapchainKHR = (PFN_vkCreateSwapchainKHR) gpa(device, "vkCreateSwapchainKHR"); + pDisp->DestroySwapchainKHR = (PFN_vkDestroySwapchainKHR) gpa(device, "vkDestroySwapchainKHR"); + pDisp->GetSwapchainImagesKHR = (PFN_vkGetSwapchainImagesKHR) gpa(device, "vkGetSwapchainImagesKHR"); + pDisp->AcquireNextImageKHR = (PFN_vkAcquireNextImageKHR) gpa(device, "vkAcquireNextImageKHR"); + pDisp->QueuePresentKHR = (PFN_vkQueuePresentKHR) gpa(device, "vkQueuePresentKHR"); deviceExtMap[pDisp].wsi_enabled = false; for (i = 0; i < pCreateInfo->extensionCount; i++) { if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_EXT_KHR_DEVICE_SWAPCHAIN_EXTENSION_NAME) == 0) @@ -671,7 +680,7 @@ VK_LAYER_EXPORT PFN_vkVoidFunction VKAPI vkGetDeviceProcAddr( return (PFN_vkVoidFunction) vkCreateCommandPool; VkLayerDispatchTable *pDisp = get_dispatch_table(screenshot_device_table_map, dev); - if (deviceExtMap.size() == 0 || deviceExtMap[pDisp].wsi_enabled) + if (deviceExtMap.size() != 0 && deviceExtMap[pDisp].wsi_enabled) { if (!strcmp(funcName, "vkCreateSwapchainKHR")) return (PFN_vkVoidFunction) vkCreateSwapchainKHR; -- cgit v1.2.3