diff options
Diffstat (limited to 'src/amd/vulkan')
-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( |