panvk: Get flush_id once per submit

Get flush_id once per command buffer in the submit and use it for all
subqueues instead of getting a new flush_id for every subqueue.

Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Lars-Ivar Hesselberg Simonsen <lars-ivar.simonsen@arm.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34448>
This commit is contained in:
Ludvig Lindau
2025-04-08 10:49:54 +00:00
committed by Marge Bot
parent 30d78dc942
commit 6393ebbdbb

View File

@@ -928,6 +928,8 @@ panvk_queue_submit_init_cmdbufs(struct panvk_queue_submit *submit,
struct panvk_cmd_buffer *cmdbuf = container_of( struct panvk_cmd_buffer *cmdbuf = container_of(
vk_submit->command_buffers[i], struct panvk_cmd_buffer, vk); vk_submit->command_buffers[i], struct panvk_cmd_buffer, vk);
uint32_t flush_id = panthor_kmod_get_flush_id(dev->kmod.dev);
for (uint32_t j = 0; j < ARRAY_SIZE(cmdbuf->state.cs); j++) { for (uint32_t j = 0; j < ARRAY_SIZE(cmdbuf->state.cs); j++) {
struct cs_builder *b = panvk_get_cs_builder(cmdbuf, j); struct cs_builder *b = panvk_get_cs_builder(cmdbuf, j);
if (cs_is_empty(b)) if (cs_is_empty(b))
@@ -938,10 +940,13 @@ panvk_queue_submit_init_cmdbufs(struct panvk_queue_submit *submit,
.queue_index = j, .queue_index = j,
.stream_size = cs_root_chunk_size(b), .stream_size = cs_root_chunk_size(b),
.stream_addr = cs_root_chunk_gpu_addr(b), .stream_addr = cs_root_chunk_gpu_addr(b),
.latest_flush = panthor_kmod_get_flush_id(dev->kmod.dev), .latest_flush = flush_id,
}; };
} }
if (util_bitcount(submit->utrace.queue_mask) > 0)
flush_id = panthor_kmod_get_flush_id(dev->kmod.dev);
u_foreach_bit(j, submit->utrace.queue_mask) { u_foreach_bit(j, submit->utrace.queue_mask) {
struct u_trace *ut = &cmdbuf->utrace.uts[j]; struct u_trace *ut = &cmdbuf->utrace.uts[j];
@@ -971,7 +976,7 @@ panvk_queue_submit_init_cmdbufs(struct panvk_queue_submit *submit,
.queue_index = j, .queue_index = j,
.stream_size = cs_root_chunk_size(&clone_builder), .stream_size = cs_root_chunk_size(&clone_builder),
.stream_addr = cs_root_chunk_gpu_addr(&clone_builder), .stream_addr = cs_root_chunk_gpu_addr(&clone_builder),
.latest_flush = panthor_kmod_get_flush_id(dev->kmod.dev), .latest_flush = flush_id,
}; };
ut = &clone_ut; ut = &clone_ut;