v3dv: signal semaphore/fence if needed after acquiring a swapchain image

Fixes:
dEQP-VK.wsi.*.swapchain.acquire.too_many
dEQP-VK.wsi.*.swapchain.acquire.too_many_timeout

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766>
This commit is contained in:
Iago Toral Quiroga
2020-09-07 11:09:23 +02:00
committed by Marge Bot
parent e14cdd6eba
commit 0df0449b65

View File

@@ -243,10 +243,23 @@ VkResult v3dv_AcquireNextImage2KHR(
uint32_t* pImageIndex)
{
V3DV_FROM_HANDLE(v3dv_device, device, _device);
V3DV_FROM_HANDLE(v3dv_fence, fence, pAcquireInfo->fence);
V3DV_FROM_HANDLE(v3dv_semaphore, semaphore, pAcquireInfo->semaphore);
struct v3dv_physical_device *pdevice = &device->instance->physicalDevice;
return wsi_common_acquire_next_image2(&pdevice->wsi_device, _device,
pAcquireInfo, pImageIndex);
VkResult result;
result = wsi_common_acquire_next_image2(&pdevice->wsi_device, _device,
pAcquireInfo, pImageIndex);
if (result == VK_SUCCESS || result == VK_SUBOPTIMAL_KHR) {
if (fence)
drmSyncobjSignal(device->render_fd, &fence->sync, 1);
if (semaphore)
drmSyncobjSignal(device->render_fd, &semaphore->sync, 1);
}
return result;
}
VkResult v3dv_QueuePresentKHR(