From c2fdd6a2c2db44a7dc7a09f38a0945dbb96b3a4e Mon Sep 17 00:00:00 2001 From: Yiwei Zhang Date: Thu, 17 Nov 2022 21:53:57 +0000 Subject: [PATCH] venus: add VN_PERF_NO_CMD_BATCHING Make it easier to debug object lifetime issues in Venus. Signed-off-by: Yiwei Zhang Part-of: --- src/virtio/vulkan/vn_command_buffer.c | 6 ++++++ src/virtio/vulkan/vn_common.c | 1 + src/virtio/vulkan/vn_common.h | 1 + 3 files changed, 8 insertions(+) diff --git a/src/virtio/vulkan/vn_command_buffer.c b/src/virtio/vulkan/vn_command_buffer.c index b0fc2f810de..f2a6f545551 100644 --- a/src/virtio/vulkan/vn_command_buffer.c +++ b/src/virtio/vulkan/vn_command_buffer.c @@ -18,6 +18,9 @@ #include "vn_image.h" #include "vn_render_pass.h" +static void +vn_cmd_submit(struct vn_command_buffer *cmd); + #define VN_CMD_ENQUEUE(cmd_name, commandBuffer, ...) \ do { \ struct vn_command_buffer *_cmd = \ @@ -28,6 +31,9 @@ vn_encode_##cmd_name(&_cmd->cs, 0, commandBuffer, ##__VA_ARGS__); \ else \ _cmd->state = VN_COMMAND_BUFFER_STATE_INVALID; \ + \ + if (VN_PERF(NO_CMD_BATCHING)) \ + vn_cmd_submit(_cmd); \ } while (0) static bool diff --git a/src/virtio/vulkan/vn_common.c b/src/virtio/vulkan/vn_common.c index 5c2424ee9eb..49756e0f216 100644 --- a/src/virtio/vulkan/vn_common.c +++ b/src/virtio/vulkan/vn_common.c @@ -39,6 +39,7 @@ static const struct debug_control vn_perf_options[] = { { "no_event_feedback", VN_PERF_NO_EVENT_FEEDBACK }, { "no_fence_feedback", VN_PERF_NO_FENCE_FEEDBACK }, { "no_memory_suballoc", VN_PERF_NO_MEMORY_SUBALLOC }, + { "no_cmd_batching", VN_PERF_NO_CMD_BATCHING }, { NULL, 0 }, /* clang-format on */ }; diff --git a/src/virtio/vulkan/vn_common.h b/src/virtio/vulkan/vn_common.h index 1f5ae05b98c..e19ffb74e74 100644 --- a/src/virtio/vulkan/vn_common.h +++ b/src/virtio/vulkan/vn_common.h @@ -110,6 +110,7 @@ enum vn_perf { VN_PERF_NO_EVENT_FEEDBACK = 1ull << 3, VN_PERF_NO_FENCE_FEEDBACK = 1ull << 4, VN_PERF_NO_MEMORY_SUBALLOC = 1ull << 5, + VN_PERF_NO_CMD_BATCHING = 1ull << 6, }; typedef uint64_t vn_object_id;