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

Author: Juston Li <[email protected]>
Date:   Wed Dec 21 11:46:42 2022 -0800

venus: add NO_TIMELINE_SEM_FEEDBACK perf option

Signed-off-by: Juston Li <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20500>

---

 src/virtio/vulkan/vn_common.c   | 1 +
 src/virtio/vulkan/vn_common.h   | 1 +
 src/virtio/vulkan/vn_device.c   | 6 ++++--
 src/virtio/vulkan/vn_feedback.c | 3 +--
 4 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/src/virtio/vulkan/vn_common.c b/src/virtio/vulkan/vn_common.c
index 79d205d7cc2..bcc0d8e6ade 100644
--- a/src/virtio/vulkan/vn_common.c
+++ b/src/virtio/vulkan/vn_common.c
@@ -41,6 +41,7 @@ static const struct debug_control vn_perf_options[] = {
    { "no_fence_feedback", VN_PERF_NO_FENCE_FEEDBACK },
    { "no_memory_suballoc", VN_PERF_NO_MEMORY_SUBALLOC },
    { "no_cmd_batching", VN_PERF_NO_CMD_BATCHING },
+   { "no_timeline_sem_feedback", VN_PERF_NO_TIMELINE_SEM_FEEDBACK },
    { NULL, 0 },
    /* clang-format on */
 };
diff --git a/src/virtio/vulkan/vn_common.h b/src/virtio/vulkan/vn_common.h
index 881fff746f8..25342f32c48 100644
--- a/src/virtio/vulkan/vn_common.h
+++ b/src/virtio/vulkan/vn_common.h
@@ -112,6 +112,7 @@ enum vn_perf {
    VN_PERF_NO_FENCE_FEEDBACK = 1ull << 4,
    VN_PERF_NO_MEMORY_SUBALLOC = 1ull << 5,
    VN_PERF_NO_CMD_BATCHING = 1ull << 6,
+   VN_PERF_NO_TIMELINE_SEM_FEEDBACK = 1ull << 7,
 };
 
 typedef uint64_t vn_object_id;
diff --git a/src/virtio/vulkan/vn_device.c b/src/virtio/vulkan/vn_device.c
index eb0d5e21ace..79bf32c7548 100644
--- a/src/virtio/vulkan/vn_device.c
+++ b/src/virtio/vulkan/vn_device.c
@@ -346,7 +346,8 @@ vn_device_feedback_pool_init(struct vn_device *dev)
    static const uint32_t pool_size = 4096;
    const VkAllocationCallbacks *alloc = &dev->base.base.alloc;
 
-   if (VN_PERF(NO_EVENT_FEEDBACK) && VN_PERF(NO_FENCE_FEEDBACK))
+   if (VN_PERF(NO_EVENT_FEEDBACK) && VN_PERF(NO_FENCE_FEEDBACK) &&
+       VN_PERF(NO_TIMELINE_SEM_FEEDBACK))
       return VK_SUCCESS;
 
    return vn_feedback_pool_init(dev, &dev->feedback_pool, pool_size, alloc);
@@ -355,7 +356,8 @@ vn_device_feedback_pool_init(struct vn_device *dev)
 static inline void
 vn_device_feedback_pool_fini(struct vn_device *dev)
 {
-   if (VN_PERF(NO_EVENT_FEEDBACK) && VN_PERF(NO_FENCE_FEEDBACK))
+   if (VN_PERF(NO_EVENT_FEEDBACK) && VN_PERF(NO_FENCE_FEEDBACK) &&
+       VN_PERF(NO_TIMELINE_SEM_FEEDBACK))
       return;
 
    vn_feedback_pool_fini(&dev->feedback_pool);
diff --git a/src/virtio/vulkan/vn_feedback.c b/src/virtio/vulkan/vn_feedback.c
index 284bf2f4d0b..27f5c0b1dd6 100644
--- a/src/virtio/vulkan/vn_feedback.c
+++ b/src/virtio/vulkan/vn_feedback.c
@@ -519,8 +519,7 @@ vn_feedback_cmd_pools_init(struct vn_device *dev)
       .flags = VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT,
    };
 
-   /* TODO will also condition on timeline semaphore feedback */
-   if (VN_PERF(NO_FENCE_FEEDBACK))
+   if (VN_PERF(NO_FENCE_FEEDBACK) && VN_PERF(NO_TIMELINE_SEM_FEEDBACK))
       return VK_SUCCESS;
 
    assert(dev->queue_family_count);

Reply via email to