diff options
author | Jason Ekstrand <[email protected]> | 2017-11-16 09:46:50 -0800 |
---|---|---|
committer | Jason Ekstrand <[email protected]> | 2017-12-04 10:04:19 -0800 |
commit | ac95335b614c0be8ef025013dc01a67131a8dcfd (patch) | |
tree | f254379f20f0238349b8ed6b54d7fddd3eb834dd /src/intel/vulkan | |
parent | d25a0f21e17c52633d3190273f8f7135e715f807 (diff) |
anv/wsi: Use the common QueuePresent code
Reviewed-by: Dave Airlie <[email protected]>
Reviewed-by: Chad Versace <[email protected]>
Diffstat (limited to 'src/intel/vulkan')
-rw-r--r-- | src/intel/vulkan/anv_wsi.c | 63 |
1 files changed, 6 insertions, 57 deletions
diff --git a/src/intel/vulkan/anv_wsi.c b/src/intel/vulkan/anv_wsi.c index b654db97bc1..4d9f7df5c7f 100644 --- a/src/intel/vulkan/anv_wsi.c +++ b/src/intel/vulkan/anv_wsi.c @@ -287,62 +287,11 @@ VkResult anv_QueuePresentKHR( const VkPresentInfoKHR* pPresentInfo) { ANV_FROM_HANDLE(anv_queue, queue, _queue); - VkResult result = VK_SUCCESS; - - const VkPresentRegionsKHR *regions = - vk_find_struct_const(pPresentInfo->pNext, PRESENT_REGIONS_KHR); - - for (uint32_t i = 0; i < pPresentInfo->swapchainCount; i++) { - ANV_FROM_HANDLE(wsi_swapchain, swapchain, pPresentInfo->pSwapchains[i]); - VkResult item_result; - - const VkPresentRegionKHR *region = NULL; - if (regions && regions->pRegions) - region = ®ions->pRegions[i]; - - assert(anv_device_from_handle(swapchain->device) == queue->device); - - if (swapchain->fences[0] == VK_NULL_HANDLE) { - item_result = anv_CreateFence(anv_device_to_handle(queue->device), - &(VkFenceCreateInfo) { - .sType = VK_STRUCTURE_TYPE_FENCE_CREATE_INFO, - .flags = 0, - }, &swapchain->alloc, &swapchain->fences[0]); - if (pPresentInfo->pResults != NULL) - pPresentInfo->pResults[i] = item_result; - result = result == VK_SUCCESS ? item_result : result; - if (item_result != VK_SUCCESS) - continue; - } else { - anv_ResetFences(anv_device_to_handle(queue->device), - 1, &swapchain->fences[0]); - } - - anv_QueueSubmit(_queue, 0, NULL, swapchain->fences[0]); - - item_result = swapchain->queue_present(swapchain, - _queue, - pPresentInfo->waitSemaphoreCount, - pPresentInfo->pWaitSemaphores, - pPresentInfo->pImageIndices[i], - region); - /* TODO: What if one of them returns OUT_OF_DATE? */ - if (pPresentInfo->pResults != NULL) - pPresentInfo->pResults[i] = item_result; - result = result == VK_SUCCESS ? item_result : result; - if (item_result != VK_SUCCESS) - continue; - - VkFence last = swapchain->fences[2]; - swapchain->fences[2] = swapchain->fences[1]; - swapchain->fences[1] = swapchain->fences[0]; - swapchain->fences[0] = last; - - if (last != VK_NULL_HANDLE) { - anv_WaitForFences(anv_device_to_handle(queue->device), - 1, &last, true, 1); - } - } + struct anv_physical_device *pdevice = + &queue->device->instance->physicalDevice; - return VK_SUCCESS; + return wsi_common_queue_present(&pdevice->wsi_device, + anv_device_to_handle(queue->device), + _queue, 0, + pPresentInfo); } |