ac/surface: remove RADEON_SURF_HAS_TILE_MODE_INDEX
[mesa.git] / src / amd / vulkan / radv_wsi.c
index 51fe159aaf80e5a5daf0c22cfcf543f46817439a..adc431111222f58cb7df6320f657bc980cd39014 100644 (file)
@@ -26,7 +26,7 @@
 #include "radv_private.h"
 #include "radv_meta.h"
 #include "wsi_common.h"
-#include "util/vk_util.h"
+#include "vk_util.h"
 
 static const struct wsi_callbacks wsi_cbs = {
    .get_phys_device_format_properties = radv_GetPhysicalDeviceFormatProperties,
@@ -185,8 +185,8 @@ radv_wsi_image_create(VkDevice device_h,
 
        VkDeviceMemory memory_h;
 
-       const VkDedicatedAllocationMemoryAllocateInfoNV ded_alloc = {
-               .sType = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV,
+       const VkMemoryDedicatedAllocateInfoKHR ded_alloc = {
+               .sType = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR,
                .pNext = NULL,
                .buffer = VK_NULL_HANDLE,
                .image = image_h
@@ -442,7 +442,6 @@ VkResult radv_AcquireNextImageKHR(
                fence->submitted = true;
                fence->signalled = true;
        }
-
        return result;
 }
 
@@ -452,7 +451,6 @@ VkResult radv_QueuePresentKHR(
 {
        RADV_FROM_HANDLE(radv_queue, queue, _queue);
        VkResult result = VK_SUCCESS;
-
        const VkPresentRegionsKHR *regions =
                 vk_find_struct_const(pPresentInfo->pNext, PRESENT_REGIONS_KHR);
 
@@ -461,6 +459,20 @@ VkResult radv_QueuePresentKHR(
                struct radeon_winsys_cs *cs;
                const VkPresentRegionKHR *region = NULL;
                VkResult item_result;
+               struct radv_winsys_sem_info sem_info;
+
+               item_result = radv_alloc_sem_info(&sem_info,
+                                                 pPresentInfo->waitSemaphoreCount,
+                                                 pPresentInfo->pWaitSemaphores,
+                                                 0,
+                                                 NULL);
+               if (pPresentInfo->pResults != NULL)
+                       pPresentInfo->pResults[i] = item_result;
+               result = result == VK_SUCCESS ? item_result : result;
+               if (item_result != VK_SUCCESS) {
+                       radv_free_sem_info(&sem_info);
+                       continue;
+               }
 
                assert(radv_device_from_handle(swapchain->device) == queue->device);
                if (swapchain->fences[0] == VK_NULL_HANDLE) {
@@ -472,8 +484,10 @@ VkResult radv_QueuePresentKHR(
                        if (pPresentInfo->pResults != NULL)
                                pPresentInfo->pResults[i] = item_result;
                        result = result == VK_SUCCESS ? item_result : result;
-                       if (item_result != VK_SUCCESS)
+                       if (item_result != VK_SUCCESS) {
+                               radv_free_sem_info(&sem_info);
                                continue;
+                       }
                } else {
                        radv_ResetFences(radv_device_to_handle(queue->device),
                                         1, &swapchain->fences[0]);
@@ -487,11 +501,12 @@ VkResult radv_QueuePresentKHR(
                RADV_FROM_HANDLE(radv_fence, fence, swapchain->fences[0]);
                struct radeon_winsys_fence *base_fence = fence->fence;
                struct radeon_winsys_ctx *ctx = queue->hw_ctx;
+
                queue->device->ws->cs_submit(ctx, queue->queue_idx,
                                             &cs,
                                             1, NULL, NULL,
-                                            (struct radeon_winsys_sem **)pPresentInfo->pWaitSemaphores,
-                                            pPresentInfo->waitSemaphoreCount, NULL, 0, false, base_fence);
+                                            &sem_info,
+                                            false, base_fence);
                fence->submitted = true;
 
                if (regions && regions->pRegions)
@@ -504,8 +519,10 @@ VkResult radv_QueuePresentKHR(
                if (pPresentInfo->pResults != NULL)
                        pPresentInfo->pResults[i] = item_result;
                result = result == VK_SUCCESS ? item_result : result;
-               if (item_result != VK_SUCCESS)
+               if (item_result != VK_SUCCESS) {
+                       radv_free_sem_info(&sem_info);
                        continue;
+               }
 
                VkFence last = swapchain->fences[2];
                swapchain->fences[2] = swapchain->fences[1];
@@ -517,6 +534,7 @@ VkResult radv_QueuePresentKHR(
                                           1, &last, true, 1);
                }
 
+               radv_free_sem_info(&sem_info);
        }
 
        return VK_SUCCESS;