From 0a153f4ee472f8f17575bbfe05f1c96fb5ecf1ea Mon Sep 17 00:00:00 2001 From: Fredrik Höglund Date: Tue, 25 Oct 2016 20:31:41 +0200 Subject: radv: mark the fence as submitted and signalled in vkAcquireNextImageKHR This stops the debug layers from complaining when fences are used to throttle image acquisition. Cc: "13.0" Signed-off-by: Dave Airlie --- src/amd/vulkan/radv_device.c | 6 ------ src/amd/vulkan/radv_private.h | 7 +++++++ src/amd/vulkan/radv_wsi.c | 14 +++++++++++--- 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c index af5a151f033..7410bbcf456 100644 --- a/src/amd/vulkan/radv_device.c +++ b/src/amd/vulkan/radv_device.c @@ -44,12 +44,6 @@ #include "util/debug.h" struct radv_dispatch_table dtable; -struct radv_fence { - struct radeon_winsys_fence *fence; - bool submitted; - bool signalled; -}; - static VkResult radv_physical_device_init(struct radv_physical_device *device, struct radv_instance *instance, diff --git a/src/amd/vulkan/radv_private.h b/src/amd/vulkan/radv_private.h index caf27f2c2de..cfdda365480 100644 --- a/src/amd/vulkan/radv_private.h +++ b/src/amd/vulkan/radv_private.h @@ -1206,6 +1206,13 @@ void radv_initialise_cmask(struct radv_cmd_buffer *cmd_buffer, struct radv_image *image, uint32_t value); void radv_initialize_dcc(struct radv_cmd_buffer *cmd_buffer, struct radv_image *image, uint32_t value); + +struct radv_fence { + struct radeon_winsys_fence *fence; + bool submitted; + bool signalled; +}; + #define RADV_DEFINE_HANDLE_CASTS(__radv_type, __VkType) \ \ static inline struct __radv_type * \ diff --git a/src/amd/vulkan/radv_wsi.c b/src/amd/vulkan/radv_wsi.c index 948be63c2c0..a946bd4a8c5 100644 --- a/src/amd/vulkan/radv_wsi.c +++ b/src/amd/vulkan/radv_wsi.c @@ -318,13 +318,21 @@ VkResult radv_AcquireNextImageKHR( VkSwapchainKHR _swapchain, uint64_t timeout, VkSemaphore semaphore, - VkFence fence, + VkFence _fence, uint32_t* pImageIndex) { RADV_FROM_HANDLE(wsi_swapchain, swapchain, _swapchain); + RADV_FROM_HANDLE(radv_fence, fence, _fence); - return swapchain->acquire_next_image(swapchain, timeout, semaphore, - pImageIndex); + VkResult result = swapchain->acquire_next_image(swapchain, timeout, semaphore, + pImageIndex); + + if (fence && result == VK_SUCCESS) { + fence->submitted = true; + fence->signalled = true; + } + + return result; } VkResult radv_QueuePresentKHR( -- cgit v1.2.3