From 31e7471be2e2d7eb3518feecb9691135c4171e7c Mon Sep 17 00:00:00 2001 From: Juston Li Date: Tue, 20 Dec 2022 14:18:08 -0800 Subject: [PATCH] venus: require exportable bit for ext fence sync fd Signed-off-by: Juston Li Part-of: --- src/virtio/vulkan/vn_physical_device.c | 5 ++++- src/virtio/vulkan/vn_queue.c | 11 +++++------ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/virtio/vulkan/vn_physical_device.c b/src/virtio/vulkan/vn_physical_device.c index c16c080cf31..d00357b68f7 100644 --- a/src/virtio/vulkan/vn_physical_device.c +++ b/src/virtio/vulkan/vn_physical_device.c @@ -961,7 +961,10 @@ vn_physical_device_get_native_extensions( /* we have a very poor implementation */ if (instance->experimental.globalFencing) { - exts->KHR_external_fence_fd = true; + if ((physical_dev->renderer_sync_fd_fence_features & + VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT)) + exts->KHR_external_fence_fd = true; + exts->KHR_external_semaphore_fd = true; } #endif diff --git a/src/virtio/vulkan/vn_queue.c b/src/virtio/vulkan/vn_queue.c index 666555dac68..28e405237a8 100644 --- a/src/virtio/vulkan/vn_queue.c +++ b/src/virtio/vulkan/vn_queue.c @@ -1241,18 +1241,17 @@ vn_GetFenceFdKHR(VkDevice device, assert(dev->instance->experimental.globalFencing); assert(sync_file); + assert(dev->physical_device->renderer_sync_fd_fence_features & + VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT); + int fd = -1; if (payload->type == VN_SYNC_TYPE_DEVICE_ONLY) { result = vn_create_sync_file(dev, fence->ring_idx, &fd); if (result != VK_SUCCESS) return vn_error(dev->instance, result); - /* perform reset operation on the host fence */ - if (dev->physical_device->renderer_sync_fd_fence_features & - VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT) { - vn_async_vkResetFenceResource100000MESA(dev->instance, device, - pGetFdInfo->fence); - } + vn_async_vkResetFenceResource100000MESA(dev->instance, device, + pGetFdInfo->fence); vn_sync_payload_release(dev, &fence->temporary); fence->payload = &fence->permanent;