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