Module: Mesa
Branch: main
Commit: 05791b6ae08dfd4c9c17e05495321da09ad9ebc7
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=05791b6ae08dfd4c9c17e05495321da09ad9ebc7

Author: Yiwei Zhang <[email protected]>
Date:   Wed Feb 15 08:56:00 2023 -0800

venus: clean up globalFencing

Signed-off-by: Yiwei Zhang <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21379>

---

 src/virtio/vulkan/vn_android.c         | 23 -----------------------
 src/virtio/vulkan/vn_physical_device.c | 34 ++++++++++++++--------------------
 src/virtio/vulkan/vn_queue.c           |  7 +------
 3 files changed, 15 insertions(+), 49 deletions(-)

diff --git a/src/virtio/vulkan/vn_android.c b/src/virtio/vulkan/vn_android.c
index 94f9a35af86..5046f09f31e 100644
--- a/src/virtio/vulkan/vn_android.c
+++ b/src/virtio/vulkan/vn_android.c
@@ -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);
diff --git a/src/virtio/vulkan/vn_physical_device.c 
b/src/virtio/vulkan/vn_physical_device.c
index 2365627eafe..c6101dc683f 100644
--- a/src/virtio/vulkan/vn_physical_device.c
+++ b/src/virtio/vulkan/vn_physical_device.c
@@ -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_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_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;
+
 #else  /* ANDROID */
    if (can_external_mem) {
       exts->KHR_external_memory_fd = true;
diff --git a/src/virtio/vulkan/vn_queue.c b/src/virtio/vulkan/vn_queue.c
index 3d8f58e4700..fd825679b52 100644
--- a/src/virtio/vulkan/vn_queue.c
+++ b/src/virtio/vulkan/vn_queue.c
@@ -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));

Reply via email to