diff options
author | Fredrik Höglund <[email protected]> | 2016-10-25 20:31:41 +0200 |
---|---|---|
committer | Dave Airlie <[email protected]> | 2016-10-26 12:25:35 +1000 |
commit | 0a153f4ee472f8f17575bbfe05f1c96fb5ecf1ea (patch) | |
tree | ad97fd431fb7e0a785d328392cf81cbac4fe36c4 | |
parent | f2770fb3d5e7a4a456f8f14726f72a1e37496419 (diff) |
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" <[email protected]>
Signed-off-by: Dave Airlie <[email protected]>
-rw-r--r-- | src/amd/vulkan/radv_device.c | 6 | ||||
-rw-r--r-- | src/amd/vulkan/radv_private.h | 7 | ||||
-rw-r--r-- | 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( |