From: Ian Elliott Date: Fri, 20 Nov 2015 21:13:17 +0000 (-0700) Subject: layers: Convert most of the layers to the new WSI. X-Git-Tag: upstream/1.1.92~4398 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=cff001a8790f13cfc4dfc9f9d37c9d05230a3b82;p=platform%2Fupstream%2FVulkan-Tools.git layers: Convert most of the layers to the new WSI. --- diff --git a/layers/apidump.h b/layers/apidump.h index 0cf6f3b..e0fcf68 100644 --- a/layers/apidump.h +++ b/layers/apidump.h @@ -68,9 +68,6 @@ static void createDeviceRegisterExtensions(const VkDeviceCreateInfo* pCreateInfo uint32_t i; VkLayerDispatchTable *pDisp = device_dispatch_table(device); PFN_vkGetDeviceProcAddr gpa = pDisp->GetDeviceProcAddr; - pDisp->GetPhysicalDeviceSurfaceCapabilitiesKHR = (PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR) gpa(device, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"); - pDisp->GetPhysicalDeviceSurfaceFormatsKHR = (PFN_vkGetPhysicalDeviceSurfaceFormatsKHR) gpa(device, "vkGetPhysicalDeviceSurfaceFormatsKHR"); - pDisp->GetPhysicalDeviceSurfacePresentModesKHR = (PFN_vkGetPhysicalDeviceSurfacePresentModesKHR) gpa(device, "vkGetPhysicalDeviceSurfacePresentModesKHR"); pDisp->CreateSwapchainKHR = (PFN_vkCreateSwapchainKHR) gpa(device, "vkCreateSwapchainKHR"); pDisp->DestroySwapchainKHR = (PFN_vkDestroySwapchainKHR) gpa(device, "vkDestroySwapchainKHR"); pDisp->GetSwapchainImagesKHR = (PFN_vkGetSwapchainImagesKHR) gpa(device, "vkGetSwapchainImagesKHR"); @@ -91,6 +88,9 @@ static void createInstanceRegisterExtensions(const VkInstanceCreateInfo* pCreate VkLayerInstanceDispatchTable *pDisp = instance_dispatch_table(instance); PFN_vkGetInstanceProcAddr gpa = pDisp->GetInstanceProcAddr; pDisp->GetPhysicalDeviceSurfaceSupportKHR = (PFN_vkGetPhysicalDeviceSurfaceSupportKHR) gpa(instance, "vkGetPhysicalDeviceSurfaceSupportKHR"); + pDisp->GetPhysicalDeviceSurfaceCapabilitiesKHR = (PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR) gpa(instance, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"); + pDisp->GetPhysicalDeviceSurfaceFormatsKHR = (PFN_vkGetPhysicalDeviceSurfaceFormatsKHR) gpa(instance, "vkGetPhysicalDeviceSurfaceFormatsKHR"); + pDisp->GetPhysicalDeviceSurfacePresentModesKHR = (PFN_vkGetPhysicalDeviceSurfacePresentModesKHR) gpa(instance, "vkGetPhysicalDeviceSurfacePresentModesKHR"); instanceExtMap[pDisp].wsi_enabled = false; for (i = 0; i < pCreateInfo->enabledExtensionNameCount; i++) { if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_KHR_SURFACE_EXTENSION_NAME) == 0) diff --git a/layers/draw_state.cpp b/layers/draw_state.cpp index 6c3661c..5837492 100644 --- a/layers/draw_state.cpp +++ b/layers/draw_state.cpp @@ -1815,9 +1815,6 @@ static void createDeviceRegisterExtensions(const VkDeviceCreateInfo* pCreateInfo VkLayerDispatchTable *pDisp = dev_data->device_dispatch_table; 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"); @@ -1825,7 +1822,7 @@ static void createDeviceRegisterExtensions(const VkDeviceCreateInfo* pCreateInfo pDisp->QueuePresentKHR = (PFN_vkQueuePresentKHR) gpa(device, "vkQueuePresentKHR"); for (i = 0; i < pCreateInfo->enabledExtensionNameCount; i++) { - if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_EXT_KHR_DEVICE_SWAPCHAIN_EXTENSION_NAME) == 0) { + if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_KHR_SWAPCHAIN_EXTENSION_NAME) == 0) { dev_data->device_extensions.wsi_enabled = true; } if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], DEBUG_MARKER_EXTENSION_NAME) == 0) { @@ -4438,10 +4435,11 @@ VKAPI_ATTR VkResult VKAPI_CALL vkBindImageMemory( VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateSwapchainKHR( VkDevice device, const VkSwapchainCreateInfoKHR *pCreateInfo, + const VkAllocationCallbacks *pAllocator, VkSwapchainKHR *pSwapchain) { layer_data* dev_data = get_my_data_ptr(get_dispatch_key(device), layer_data_map); - VkResult result = dev_data->device_dispatch_table->CreateSwapchainKHR(device, pCreateInfo, pSwapchain); + VkResult result = dev_data->device_dispatch_table->CreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain); if (VK_SUCCESS == result) { SWAPCHAIN_NODE *swapchain_data = new SWAPCHAIN_NODE; @@ -4453,9 +4451,10 @@ VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateSwapchainKHR( return result; } -VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkDestroySwapchainKHR( +VK_LAYER_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroySwapchainKHR( VkDevice device, - VkSwapchainKHR swapchain) + VkSwapchainKHR swapchain, + const VkAllocationCallbacks *pAllocator) { layer_data* dev_data = get_my_data_ptr(get_dispatch_key(device), layer_data_map); @@ -4473,7 +4472,7 @@ VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkDestroySwapchainKHR( dev_data->device_extensions.swapchainMap.erase(swapchain); } loader_platform_thread_unlock_mutex(&globalLock); - return dev_data->device_dispatch_table->DestroySwapchainKHR(device, swapchain); + return dev_data->device_dispatch_table->DestroySwapchainKHR(device, swapchain, pAllocator); } VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainImagesKHR( @@ -4500,19 +4499,19 @@ VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainImagesKHR( return result; } -VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkQueuePresentKHR(VkQueue queue, VkPresentInfoKHR* pPresentInfo) +VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkQueuePresentKHR(VkQueue queue, const VkPresentInfoKHR* pPresentInfo) { layer_data* dev_data = get_my_data_ptr(get_dispatch_key(queue), layer_data_map); bool skip_call = false; if (pPresentInfo) { for (uint32_t i = 0; i < pPresentInfo->swapchainCount; ++i) { - auto swapchain_data = dev_data->device_extensions.swapchainMap.find(pPresentInfo->swapchains[i]); - if (swapchain_data != dev_data->device_extensions.swapchainMap.end() && pPresentInfo->imageIndices[i] < swapchain_data->second->images.size()) { - VkImage image = swapchain_data->second->images[pPresentInfo->imageIndices[i]]; + auto swapchain_data = dev_data->device_extensions.swapchainMap.find(pPresentInfo->pSwapchains[i]); + if (swapchain_data != dev_data->device_extensions.swapchainMap.end() && pPresentInfo->pImageIndices[i] < swapchain_data->second->images.size()) { + VkImage image = swapchain_data->second->images[pPresentInfo->pImageIndices[i]]; auto image_data = dev_data->imageLayoutMap.find(image); if (image_data != dev_data->imageLayoutMap.end()) { - if (image_data->second->layout != VK_IMAGE_LAYOUT_PRESENT_SOURCE_KHR) { + if (image_data->second->layout != VK_IMAGE_LAYOUT_PRESENT_SRC_KHR) { skip_call |= log_msg(dev_data->report_data, VK_DBG_REPORT_ERROR_BIT, VK_OBJECT_TYPE_QUEUE, (uint64_t)queue, 0, DRAWSTATE_INVALID_IMAGE_LAYOUT, "DS", "Images passed to present must be in layout PRESENT_SOURCE_KHR but is in %d", image_data->second->layout); } diff --git a/layers/generic.h b/layers/generic.h index 9f73eaa..2eb3eec 100644 --- a/layers/generic.h +++ b/layers/generic.h @@ -76,9 +76,6 @@ static void createDeviceRegisterExtensions(const VkDeviceCreateInfo* pCreateInfo uint32_t i; VkLayerDispatchTable *pDisp = device_dispatch_table(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"); @@ -87,7 +84,7 @@ static void createDeviceRegisterExtensions(const VkDeviceCreateInfo* pCreateInfo deviceExtMap[pDisp].wsi_enabled = false; for (i = 0; i < pCreateInfo->enabledExtensionNameCount; i++) { - if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_EXT_KHR_DEVICE_SWAPCHAIN_EXTENSION_NAME) == 0) + if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_KHR_SWAPCHAIN_EXTENSION_NAME) == 0) deviceExtMap[pDisp].wsi_enabled = true; } @@ -99,9 +96,12 @@ static void createInstanceRegisterExtensions(const VkInstanceCreateInfo* pCreate VkLayerInstanceDispatchTable *pDisp = instance_dispatch_table(instance); PFN_vkGetInstanceProcAddr gpa = pDisp->GetInstanceProcAddr; pDisp->GetPhysicalDeviceSurfaceSupportKHR = (PFN_vkGetPhysicalDeviceSurfaceSupportKHR) gpa(instance, "vkGetPhysicalDeviceSurfaceSupportKHR"); + pDisp->GetPhysicalDeviceSurfaceCapabilitiesKHR = (PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR) gpa(instance, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"); + pDisp->GetPhysicalDeviceSurfaceFormatsKHR = (PFN_vkGetPhysicalDeviceSurfaceFormatsKHR) gpa(instance, "vkGetPhysicalDeviceSurfaceFormatsKHR"); + pDisp->GetPhysicalDeviceSurfacePresentModesKHR = (PFN_vkGetPhysicalDeviceSurfacePresentModesKHR) gpa(instance, "vkGetPhysicalDeviceSurfacePresentModesKHR"); instanceExtMap[pDisp].wsi_enabled = false; for (i = 0; i < pCreateInfo->enabledExtensionNameCount; i++) { - if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_EXT_KHR_SWAPCHAIN_EXTENSION_NAME) == 0) + if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_KHR_SURFACE_EXTENSION_NAME) == 0) instanceExtMap[pDisp].wsi_enabled = true; } diff --git a/layers/image.cpp b/layers/image.cpp index 662dd0a..811467f 100644 --- a/layers/image.cpp +++ b/layers/image.cpp @@ -263,7 +263,7 @@ bool is_depth_format(VkFormat format) static inline uint32_t validate_VkImageLayoutKHR(VkImageLayout input_value) { return ((validate_VkImageLayout(input_value) == 1) || - (input_value == VK_IMAGE_LAYOUT_PRESENT_SOURCE_KHR)); + (input_value == VK_IMAGE_LAYOUT_PRESENT_SRC_KHR)); } VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateImage(VkDevice device, const VkImageCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImage* pImage) diff --git a/layers/mem_tracker.cpp b/layers/mem_tracker.cpp index e6bc5aa..dc14eb3 100644 --- a/layers/mem_tracker.cpp +++ b/layers/mem_tracker.cpp @@ -254,7 +254,7 @@ add_object_create_info( memset(pCI, 0, sizeof(MT_OBJ_BINDING_INFO)); pCI->mem = MEMTRACKER_SWAP_CHAIN_IMAGE_KEY; pCI->create_info.image.usage = - const_cast(static_cast(pCreateInfo))->imageUsageFlags; + const_cast(static_cast(pCreateInfo))->imageUsage; break; } } @@ -1081,9 +1081,6 @@ createDeviceRegisterExtensions( layer_data *my_device_data = get_my_data_ptr(get_dispatch_key(device), layer_data_map); VkLayerDispatchTable *pDisp = my_device_data->device_dispatch_table; PFN_vkGetDeviceProcAddr gpa = pDisp->GetDeviceProcAddr; - pDisp->GetPhysicalDeviceSurfaceCapabilitiesKHR = (PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR) gpa(device, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"); - pDisp->GetPhysicalDeviceSurfaceFormatsKHR = (PFN_vkGetPhysicalDeviceSurfaceFormatsKHR) gpa(device, "vkGetPhysicalDeviceSurfaceFormatsKHR"); - pDisp->GetPhysicalDeviceSurfacePresentModesKHR = (PFN_vkGetPhysicalDeviceSurfacePresentModesKHR) gpa(device, "vkGetPhysicalDeviceSurfacePresentModesKHR"); pDisp->CreateSwapchainKHR = (PFN_vkCreateSwapchainKHR) gpa(device, "vkCreateSwapchainKHR"); pDisp->DestroySwapchainKHR = (PFN_vkDestroySwapchainKHR) gpa(device, "vkDestroySwapchainKHR"); pDisp->GetSwapchainImagesKHR = (PFN_vkGetSwapchainImagesKHR) gpa(device, "vkGetSwapchainImagesKHR"); @@ -2585,10 +2582,11 @@ VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkDbgDestroyMsgCallback( VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateSwapchainKHR( VkDevice device, const VkSwapchainCreateInfoKHR *pCreateInfo, + const VkAllocationCallbacks *pAllocator, VkSwapchainKHR *pSwapchain) { layer_data *my_data = get_my_data_ptr(get_dispatch_key(device), layer_data_map); - VkResult result = my_data->device_dispatch_table->CreateSwapchainKHR(device, pCreateInfo, pSwapchain); + VkResult result = my_data->device_dispatch_table->CreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain); if (VK_SUCCESS == result) { loader_platform_thread_lock_mutex(&globalLock); @@ -2599,13 +2597,13 @@ VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateSwapchainKHR( return result; } -VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkDestroySwapchainKHR( - VkDevice device, - VkSwapchainKHR swapchain) +VK_LAYER_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroySwapchainKHR( + VkDevice device, + VkSwapchainKHR swapchain, + const VkAllocationCallbacks *pAllocator) { layer_data *my_data = get_my_data_ptr(get_dispatch_key(device), layer_data_map); VkBool32 skipCall = VK_FALSE; - VkResult result = VK_ERROR_VALIDATION_FAILED; loader_platform_thread_lock_mutex(&globalLock); if (my_data->swapchainMap.find(swapchain) != my_data->swapchainMap.end()) { MT_SWAP_CHAIN_INFO* pInfo = my_data->swapchainMap[swapchain]; @@ -2623,9 +2621,8 @@ VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkDestroySwapchainKHR( } loader_platform_thread_unlock_mutex(&globalLock); if (VK_FALSE == skipCall) { - result = my_data->device_dispatch_table->DestroySwapchainKHR(device, swapchain); + my_data->device_dispatch_table->DestroySwapchainKHR(device, swapchain, pAllocator); } - return result; } VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainImagesKHR( @@ -2672,6 +2669,7 @@ VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkAcquireNextImageKHR( VkSwapchainKHR swapchain, uint64_t timeout, VkSemaphore semaphore, + VkFence fence, uint32_t *pImageIndex) { layer_data *my_data = get_my_data_ptr(get_dispatch_key(device), layer_data_map); @@ -2690,7 +2688,7 @@ VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkAcquireNextImageKHR( loader_platform_thread_unlock_mutex(&globalLock); if (VK_FALSE == skipCall) { result = my_data->device_dispatch_table->AcquireNextImageKHR(device, - swapchain, timeout, semaphore, pImageIndex); + swapchain, timeout, semaphore, fence, pImageIndex); } return result; } diff --git a/layers/object_track.h b/layers/object_track.h index 0b80fce..38e9305 100644 --- a/layers/object_track.h +++ b/layers/object_track.h @@ -190,9 +190,6 @@ static void createDeviceRegisterExtensions(const VkDeviceCreateInfo* pCreateInfo layer_data *my_device_data = get_my_data_ptr(get_dispatch_key(device), layer_data_map); VkLayerDispatchTable *pDisp = get_dispatch_table(ObjectTracker_device_table_map, device); PFN_vkGetDeviceProcAddr gpa = pDisp->GetDeviceProcAddr; - pDisp->GetPhysicalDeviceSurfaceCapabilitiesKHR = (PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR) gpa(device, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"); - pDisp->GetPhysicalDeviceSurfaceFormatsKHR = (PFN_vkGetPhysicalDeviceSurfaceFormatsKHR) gpa(device, "vkGetPhysicalDeviceSurfaceFormatsKHR"); - pDisp->GetPhysicalDeviceSurfacePresentModesKHR = (PFN_vkGetPhysicalDeviceSurfacePresentModesKHR) gpa(device, "vkGetPhysicalDeviceSurfacePresentModesKHR"); pDisp->CreateSwapchainKHR = (PFN_vkCreateSwapchainKHR) gpa(device, "vkCreateSwapchainKHR"); pDisp->DestroySwapchainKHR = (PFN_vkDestroySwapchainKHR) gpa(device, "vkDestroySwapchainKHR"); pDisp->GetSwapchainImagesKHR = (PFN_vkGetSwapchainImagesKHR) gpa(device, "vkGetSwapchainImagesKHR"); @@ -214,6 +211,9 @@ static void createInstanceRegisterExtensions(const VkInstanceCreateInfo* pCreate VkLayerInstanceDispatchTable *pDisp = get_dispatch_table(ObjectTracker_instance_table_map, instance); PFN_vkGetInstanceProcAddr gpa = pDisp->GetInstanceProcAddr; pDisp->GetPhysicalDeviceSurfaceSupportKHR = (PFN_vkGetPhysicalDeviceSurfaceSupportKHR) gpa(instance, "vkGetPhysicalDeviceSurfaceSupportKHR"); + pDisp->GetPhysicalDeviceSurfaceCapabilitiesKHR = (PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR) gpa(instance, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"); + pDisp->GetPhysicalDeviceSurfaceFormatsKHR = (PFN_vkGetPhysicalDeviceSurfaceFormatsKHR) gpa(instance, "vkGetPhysicalDeviceSurfaceFormatsKHR"); + pDisp->GetPhysicalDeviceSurfacePresentModesKHR = (PFN_vkGetPhysicalDeviceSurfacePresentModesKHR) gpa(instance, "vkGetPhysicalDeviceSurfacePresentModesKHR"); instanceExtMap[pDisp].wsi_enabled = false; for (i = 0; i < pCreateInfo->enabledExtensionNameCount; i++) { if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_KHR_SURFACE_EXTENSION_NAME) == 0) @@ -967,10 +967,11 @@ explicit_FreeCommandBuffers( loader_platform_thread_unlock_mutex(&objLock); } -VkResult +void explicit_DestroySwapchainKHR( - VkDevice device, - VkSwapchainKHR swapchain) + VkDevice device, + VkSwapchainKHR swapchain, + const VkAllocationCallbacks *pAllocator) { loader_platform_thread_lock_mutex(&objLock); // A swapchain's images are implicitly deleted when the swapchain is deleted. @@ -987,8 +988,7 @@ explicit_DestroySwapchainKHR( destroy_swapchain(device, swapchain); loader_platform_thread_unlock_mutex(&objLock); - VkResult result = get_dispatch_table(ObjectTracker_device_table_map, device)->DestroySwapchainKHR(device, swapchain); - return result; + get_dispatch_table(ObjectTracker_device_table_map, device)->DestroySwapchainKHR(device, swapchain, pAllocator); } void diff --git a/layers/screenshot.cpp b/layers/screenshot.cpp index b627c44..202cb85 100644 --- a/layers/screenshot.cpp +++ b/layers/screenshot.cpp @@ -320,17 +320,13 @@ 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->enabledExtensionNameCount; i++) { - if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_EXT_KHR_DEVICE_SWAPCHAIN_EXTENSION_NAME) == 0) + if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_KHR_SWAPCHAIN_EXTENSION_NAME) == 0) deviceExtMap[pDisp].wsi_enabled = true; } } @@ -500,10 +496,11 @@ VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateCommandPool( VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateSwapchainKHR( VkDevice device, const VkSwapchainCreateInfoKHR *pCreateInfo, + const VkAllocationCallbacks *pAllocator, VkSwapchainKHR *pSwapchain) { VkLayerDispatchTable* pTable = screenshot_device_table_map[device]; - VkResult result = get_dispatch_table(screenshot_device_table_map, device)->CreateSwapchainKHR(device, pCreateInfo, pSwapchain); + VkResult result = get_dispatch_table(screenshot_device_table_map, device)->CreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain); loader_platform_thread_lock_mutex(&globalLock); if (screenshotEnvQueried && screenshotFrames.empty()) { @@ -580,7 +577,7 @@ VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainImagesKHR( return result; } -VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkQueuePresentKHR(VkQueue queue, VkPresentInfoKHR* pPresentInfo) +VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkQueuePresentKHR(VkQueue queue, const VkPresentInfoKHR* pPresentInfo) { static int frameNumber = 0; if (frameNumber == 10) {fflush(stdout); /* *((int*)0)=0; */ } @@ -632,8 +629,8 @@ VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkQueuePresentKHR(VkQueue queue, VkImage image; VkSwapchainKHR swapchain; // We'll dump only one image: the first - swapchain = pPresentInfo->swapchains[0]; - image = swapchainMap[swapchain]->imageList[pPresentInfo->imageIndices[0]]; + swapchain = pPresentInfo->pSwapchains[0]; + image = swapchainMap[swapchain]->imageList[pPresentInfo->pImageIndices[0]]; writePPM(fileName.c_str(), image); screenshotFrames.erase(it); diff --git a/vk-layer-generate.py b/vk-layer-generate.py index 6873fe9..8101669 100755 --- a/vk-layer-generate.py +++ b/vk-layer-generate.py @@ -758,10 +758,12 @@ class GenericLayerSubcommand(Subcommand): self.layer_name = "Generic" instance_extensions=[('msg_callback_get_proc_addr', []), ('wsi_enabled', - ['vkGetPhysicalDeviceSurfaceSupportKHR'])] + ['vkGetPhysicalDeviceSurfaceSupportKHR', + 'vkGetPhysicalDeviceSurfaceCapabilitiesKHR', + 'vkGetPhysicalDeviceSurfaceFormatsKHR', + 'vkGetPhysicalDeviceSurfacePresentModesKHR'])] extensions=[('wsi_enabled', - ['vkGetSurfacePropertiesKHR', 'vkGetSurfaceFormatsKHR', - 'vkGetSurfacePresentModesKHR', 'vkCreateSwapchainKHR', + ['vkCreateSwapchainKHR', 'vkDestroySwapchainKHR', 'vkGetSwapchainImagesKHR', 'vkAcquireNextImageKHR', 'vkQueuePresentKHR'])] body = [self._generate_layer_initialization(True), @@ -1169,10 +1171,12 @@ class APIDumpSubcommand(Subcommand): def generate_body(self): self.layer_name = "APIDump" instance_extensions=[('wsi_enabled', - ['vkGetPhysicalDeviceSurfaceSupportKHR'])] + ['vkGetPhysicalDeviceSurfaceSupportKHR', + 'vkGetPhysicalDeviceSurfaceCapabilitiesKHR', + 'vkGetPhysicalDeviceSurfaceFormatsKHR', + 'vkGetPhysicalDeviceSurfacePresentModesKHR'])] extensions=[('wsi_enabled', - ['vkGetSurfacePropertiesKHR', 'vkGetSurfaceFormatsKHR', - 'vkGetSurfacePresentModesKHR', 'vkCreateSwapchainKHR', + ['vkCreateSwapchainKHR', 'vkDestroySwapchainKHR', 'vkGetSwapchainImagesKHR', 'vkAcquireNextImageKHR', 'vkQueuePresentKHR'])] body = [self.generate_init(), @@ -1698,13 +1702,15 @@ class ObjectTrackerSubcommand(Subcommand): def generate_body(self): self.layer_name = "ObjectTracker" extensions=[('wsi_enabled', - ['vkGetSurfacePropertiesKHR', 'vkGetSurfaceFormatsKHR', - 'vkGetSurfacePresentModesKHR', 'vkCreateSwapchainKHR', + ['vkCreateSwapchainKHR', 'vkDestroySwapchainKHR', 'vkGetSwapchainImagesKHR', 'vkAcquireNextImageKHR', 'vkQueuePresentKHR'])] instance_extensions=[('msg_callback_get_proc_addr', []), ('wsi_enabled', - ['vkGetPhysicalDeviceSurfaceSupportKHR'])] + ['vkGetPhysicalDeviceSurfaceSupportKHR', + 'vkGetPhysicalDeviceSurfaceCapabilitiesKHR', + 'vkGetPhysicalDeviceSurfaceFormatsKHR', + 'vkGetPhysicalDeviceSurfacePresentModesKHR'])] body = [self.generate_maps(), self.generate_procs(), self.generate_destroy_instance(), diff --git a/vk_helper.py b/vk_helper.py index 5fc067f..c875c2c 100755 --- a/vk_helper.py +++ b/vk_helper.py @@ -861,7 +861,10 @@ class StructWrapperGen: sh_funcs.append('%sstringstream index_ss;' % (indent)) idx_ss_decl = True if (stp_list[index]['name'] == 'pQueueFamilyIndices'): - sh_funcs.append('%sif (pStruct->sharingMode == VK_SHARING_MODE_CONCURRENT) {' % (indent)) + if (typedef_fwd_dict[s] == 'VkSwapchainCreateInfoKHR'): + sh_funcs.append('%sif (pStruct->imageSharingMode == VK_SHARING_MODE_CONCURRENT) {' % (indent)) + else: + sh_funcs.append('%sif (pStruct->sharingMode == VK_SHARING_MODE_CONCURRENT) {' % (indent)) indent += ' ' sh_funcs.append('%sif (pStruct->%s) {' % (indent, stp_list[index]['name'])) indent += ' ' @@ -1017,18 +1020,6 @@ class StructWrapperGen: sh_funcs.append(" return final_str;") sh_funcs.append("}") sh_funcs.append('%s' % lineinfo.get()) - #### TODO: Get the following function moved to be in "vk_enum_string_helper.h" - # Add function to return a string value for input VkSurfaceFormatKHR* - sh_funcs.append("static inline const char* string_VkColorSpaceKHR(VkColorSpaceKHR input_value)\n{") - sh_funcs.append(" switch ((VkColorSpaceKHR)input_value)") - sh_funcs.append(" {") - sh_funcs.append(" case VK_COLORSPACE_SRGB_NONLINEAR_KHR:") - sh_funcs.append(" return \"VK_COLORSPACE_SRGB_NONLINEAR_KHR\";") - sh_funcs.append(" default:") - sh_funcs.append(" return \"Unhandled VkColorSpaceKHR\";") - sh_funcs.append(" }") - sh_funcs.append("}") - sh_funcs.append('%s' % lineinfo.get()) # Add function to return a string value for input VkSurfaceFormatKHR* sh_funcs.append("string string_convert_helper(VkSurfaceFormatKHR toString, const string prefix)\n{") sh_funcs.append(' string final_str = prefix + "format = " + string_VkFormat(toString.format) + "format = " + string_VkColorSpaceKHR(toString.colorSpace);') diff --git a/vulkan.py b/vulkan.py index d990774..4ac1d9a 100755 --- a/vulkan.py +++ b/vulkan.py @@ -1048,11 +1048,13 @@ ext_khr_device_swapchain = Extension( Proto("VkResult", "CreateSwapchainKHR", [Param("VkDevice", "device"), Param("const VkSwapchainCreateInfoKHR*", "pCreateInfo"), + Param("const VkAllocationCallbacks*", "pAllocator"), Param("VkSwapchainKHR*", "pSwapchain")]), Proto("void", "DestroySwapchainKHR", [Param("VkDevice", "device"), - Param("VkSwapchainKHR", "swapchain")]), + Param("VkSwapchainKHR", "swapchain"), + Param("const VkAllocationCallbacks*", "pAllocator")]), Proto("VkResult", "GetSwapchainImagesKHR", [Param("VkDevice", "device"), @@ -1065,11 +1067,12 @@ ext_khr_device_swapchain = Extension( Param("VkSwapchainKHR", "swapchain"), Param("uint64_t", "timeout"), Param("VkSemaphore", "semaphore"), + Param("VkFence", "fence"), Param("uint32_t*", "pImageIndex")]), Proto("VkResult", "QueuePresentKHR", [Param("VkQueue", "queue"), - Param("VkPresentInfoKHR*", "pPresentInfo")]), + Param("const VkPresentInfoKHR*", "pPresentInfo")]), ], ) lunarg_debug_report = Extension(