venus: require exportable bit for ext fence sync fd

Signed-off-by: Juston Li <justonli@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20088>
This commit is contained in:
Juston Li
2022-12-20 14:18:08 -08:00
committed by Marge Bot
parent 75e369335f
commit 31e7471be2
2 changed files with 9 additions and 7 deletions

View File

@@ -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

View File

@@ -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;