summaryrefslogtreecommitdiffstats
path: root/src/amd
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 /src/amd
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]>
Diffstat (limited to 'src/amd')
-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]);