mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-07 00:38:48 +02:00
venus: clean up globalFencing
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21379>
This commit is contained in:
parent
344be4405c
commit
05791b6ae0
3 changed files with 14 additions and 48 deletions
|
|
@ -725,28 +725,6 @@ vn_AcquireImageANDROID(VkDevice device,
|
|||
struct vn_device *dev = vn_device_from_handle(device);
|
||||
VkResult result = VK_SUCCESS;
|
||||
|
||||
if (dev->instance->experimental.globalFencing == VK_FALSE) {
|
||||
/* Fallback when VkVenusExperimentalFeatures100000MESA::globalFencing is
|
||||
* VK_FALSE, out semaphore and fence are filled with already signaled
|
||||
* payloads, and the native fence fd is waited inside until signaled.
|
||||
*/
|
||||
if (nativeFenceFd >= 0) {
|
||||
int ret = sync_wait(nativeFenceFd, -1);
|
||||
/* Android loader expects the ICD to always close the fd */
|
||||
close(nativeFenceFd);
|
||||
if (ret)
|
||||
return vn_error(dev->instance, VK_ERROR_SURFACE_LOST_KHR);
|
||||
}
|
||||
|
||||
if (semaphore != VK_NULL_HANDLE)
|
||||
vn_semaphore_signal_wsi(dev, vn_semaphore_from_handle(semaphore));
|
||||
|
||||
if (fence != VK_NULL_HANDLE)
|
||||
vn_fence_signal_wsi(dev, vn_fence_from_handle(fence));
|
||||
|
||||
return VK_SUCCESS;
|
||||
}
|
||||
|
||||
int semaphore_fd = -1;
|
||||
int fence_fd = -1;
|
||||
if (nativeFenceFd >= 0) {
|
||||
|
|
@ -835,7 +813,6 @@ vn_QueueSignalReleaseImageANDROID(VkQueue _queue,
|
|||
struct vn_device *dev = queue->device;
|
||||
const VkAllocationCallbacks *alloc = &dev->base.base.alloc;
|
||||
const bool has_sync_fd_fence_export =
|
||||
dev->instance->experimental.globalFencing == VK_TRUE &&
|
||||
(dev->physical_device->renderer_sync_fd_fence_features &
|
||||
VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT);
|
||||
VkDevice device = vn_device_to_handle(dev);
|
||||
|
|
|
|||
|
|
@ -874,10 +874,8 @@ vn_physical_device_init_external_fence_handles(
|
|||
physical_dev->external_fence_handles = 0;
|
||||
|
||||
#ifdef ANDROID
|
||||
if (physical_dev->instance->experimental.globalFencing) {
|
||||
physical_dev->external_fence_handles =
|
||||
VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT;
|
||||
}
|
||||
physical_dev->external_fence_handles =
|
||||
VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
@ -923,10 +921,8 @@ vn_physical_device_init_external_semaphore_handles(
|
|||
physical_dev->external_timeline_semaphore_handles = 0;
|
||||
|
||||
#ifdef ANDROID
|
||||
if (physical_dev->instance->experimental.globalFencing) {
|
||||
physical_dev->external_binary_semaphore_handles =
|
||||
VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT;
|
||||
}
|
||||
physical_dev->external_binary_semaphore_handles =
|
||||
VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
@ -952,18 +948,16 @@ vn_physical_device_get_native_extensions(
|
|||
exts->ANDROID_native_buffer = true;
|
||||
}
|
||||
|
||||
/* we have a very poor implementation */
|
||||
if (instance->experimental.globalFencing) {
|
||||
if ((physical_dev->renderer_sync_fd_fence_features &
|
||||
VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT))
|
||||
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;
|
||||
|
||||
if ((physical_dev->renderer_sync_fd_semaphore_features &
|
||||
VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT) &&
|
||||
(physical_dev->renderer_sync_fd_semaphore_features &
|
||||
VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT))
|
||||
exts->KHR_external_semaphore_fd = true;
|
||||
|
||||
if ((physical_dev->renderer_sync_fd_semaphore_features &
|
||||
VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT) &&
|
||||
(physical_dev->renderer_sync_fd_semaphore_features &
|
||||
VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT))
|
||||
exts->KHR_external_semaphore_fd = true;
|
||||
}
|
||||
#else /* ANDROID */
|
||||
if (can_external_mem) {
|
||||
exts->KHR_external_memory_fd = true;
|
||||
|
|
|
|||
|
|
@ -273,8 +273,7 @@ vn_queue_submission_prepare(struct vn_queue_submission *submit)
|
|||
* - explicit fencing: sync file export
|
||||
* - implicit fencing: dma-fence attached to the wsi bo
|
||||
*
|
||||
* Under globalFencing, we enforce above via a synchronous submission if
|
||||
* any of the below applies:
|
||||
* We enforce above via a synchronous submission if seeing any of below:
|
||||
* - struct wsi_memory_signal_submit_info
|
||||
* - fence is an external fence
|
||||
* - has an external signal semaphore
|
||||
|
|
@ -1371,7 +1370,6 @@ vn_ImportFenceFdKHR(VkDevice device,
|
|||
VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT;
|
||||
const int fd = pImportFenceFdInfo->fd;
|
||||
|
||||
assert(dev->instance->experimental.globalFencing);
|
||||
assert(sync_file);
|
||||
|
||||
if (!vn_sync_valid_fd(fd))
|
||||
|
|
@ -1399,7 +1397,6 @@ vn_GetFenceFdKHR(VkDevice device,
|
|||
struct vn_sync_payload *payload = fence->payload;
|
||||
VkResult result;
|
||||
|
||||
assert(dev->instance->experimental.globalFencing);
|
||||
assert(sync_file);
|
||||
assert(dev->physical_device->renderer_sync_fd_fence_features &
|
||||
VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT);
|
||||
|
|
@ -1829,7 +1826,6 @@ vn_ImportSemaphoreFdKHR(
|
|||
VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT;
|
||||
const int fd = pImportSemaphoreFdInfo->fd;
|
||||
|
||||
assert(dev->instance->experimental.globalFencing);
|
||||
assert(sync_file);
|
||||
|
||||
if (!vn_sync_valid_fd(fd))
|
||||
|
|
@ -1856,7 +1852,6 @@ vn_GetSemaphoreFdKHR(VkDevice device,
|
|||
pGetFdInfo->handleType == VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT;
|
||||
struct vn_sync_payload *payload = sem->payload;
|
||||
|
||||
assert(dev->instance->experimental.globalFencing);
|
||||
assert(sync_file);
|
||||
assert((dev->physical_device->renderer_sync_fd_semaphore_features &
|
||||
VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT));
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue