aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDave Airlie <[email protected]>2016-12-23 06:24:21 +0000
committerDave Airlie <[email protected]>2016-12-26 22:20:35 +0000
commit3fd306b4232656914267bca824b7dde4be0e2ffb (patch)
tree1a485a532c2f2d36f9b587fb7ae561924a885400
parent097c9dc2d4abc57bac5195fa0bed327828a4a895 (diff)
radv: handle queue present directly to winsys
Don't call the QueueSubmit interface, just call direct to the winsys, so we can pass the wait semaphores. Noticed while debugging doom, doesn't fix anything. Reviewed-by: Bas Nieuwenhuizen <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
-rw-r--r--src/amd/vulkan/radv_wsi.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/amd/vulkan/radv_wsi.c b/src/amd/vulkan/radv_wsi.c
index 1f1ab1c800b..2eb8e458c78 100644
--- a/src/amd/vulkan/radv_wsi.c
+++ b/src/amd/vulkan/radv_wsi.c
@@ -362,7 +362,15 @@ VkResult radv_QueuePresentKHR(
1, &swapchain->fences[0]);
}
- radv_QueueSubmit(_queue, 0, NULL, swapchain->fences[0]);
+ RADV_FROM_HANDLE(radv_fence, fence, swapchain->fences[0]);
+ struct radeon_winsys_fence *base_fence = fence->fence;
+ struct radeon_winsys_ctx *ctx = queue->device->hw_ctx;
+ queue->device->ws->cs_submit(ctx, queue->queue_idx,
+ &queue->device->empty_cs[queue->queue_family_index],
+ 1,
+ (struct radeon_winsys_sem **)pPresentInfo->pWaitSemaphores,
+ pPresentInfo->waitSemaphoreCount, NULL, 0, false, base_fence);
+ fence->submitted = true;
result = swapchain->queue_present(swapchain,
pPresentInfo->pImageIndices[i]);