anv: Use current_frame from vk device to delimit u_trace frames

Signed-off-by: Danylo Piliaiev <dpiliaiev@igalia.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29220>
This commit is contained in:
Danylo Piliaiev 2024-05-15 15:32:16 +02:00 committed by Marge Bot
parent c73b3f590b
commit 72326e15f3
5 changed files with 18 additions and 10 deletions

View File

@ -168,7 +168,8 @@ void iris_utrace_flush(struct iris_batch *batch, uint64_t submission_id)
{
struct intel_ds_flush_data *flush_data = malloc(sizeof(*flush_data));
intel_ds_flush_data_init(flush_data, &batch->ds, submission_id);
intel_ds_queue_flush_data(&batch->ds, &batch->trace, flush_data, false);
intel_ds_queue_flush_data(&batch->ds, &batch->trace, flush_data,
U_TRACE_FRAME_UNKNOWN, false);
}
void iris_utrace_init(struct iris_context *ice)

View File

@ -663,10 +663,11 @@ void intel_ds_flush_data_fini(struct intel_ds_flush_data *data)
void intel_ds_queue_flush_data(struct intel_ds_queue *queue,
struct u_trace *ut,
struct intel_ds_flush_data *data,
uint32_t frame_nr,
bool free_data)
{
simple_mtx_lock(&queue->device->trace_context_mutex);
u_trace_flush(ut, data, U_TRACE_FRAME_UNKNOWN, free_data);
u_trace_flush(ut, data, frame_nr, free_data);
simple_mtx_unlock(&queue->device->trace_context_mutex);
}

View File

@ -194,6 +194,7 @@ void intel_ds_flush_data_fini(struct intel_ds_flush_data *data);
void intel_ds_queue_flush_data(struct intel_ds_queue *queue,
struct u_trace *ut,
struct intel_ds_flush_data *data,
uint32_t frame_nr,
bool free_data);
void intel_ds_device_process(struct intel_ds_device *device, bool eof);

View File

@ -264,7 +264,7 @@ anv_device_utrace_flush_cmd_buffers(struct anv_queue *queue,
for (uint32_t i = 0; i < cmd_buffer_count; i++) {
if (cmd_buffers[i]->usage_flags & VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT) {
intel_ds_queue_flush_data(&queue->ds, &cmd_buffers[i]->trace,
&submit->ds, false);
&submit->ds, device->vk.current_frame, false);
} else {
num_traces += cmd_buffers[i]->trace.num_traces;
u_trace_clone_append(u_trace_begin_iterator(&cmd_buffers[i]->trace),
@ -306,7 +306,7 @@ anv_device_utrace_flush_cmd_buffers(struct anv_queue *queue,
num_traces += cmd_buffers[i]->trace.num_traces;
if (cmd_buffers[i]->usage_flags & VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT) {
intel_ds_queue_flush_data(&queue->ds, &cmd_buffers[i]->trace,
&submit->ds, false);
&submit->ds, device->vk.current_frame, false);
} else {
num_traces += cmd_buffers[i]->trace.num_traces;
u_trace_clone_append(u_trace_begin_iterator(&cmd_buffers[i]->trace),
@ -323,7 +323,8 @@ anv_device_utrace_flush_cmd_buffers(struct anv_queue *queue,
anv_genX(device->info, emit_simple_shader_end)(&submit->simple_state);
}
intel_ds_queue_flush_data(&queue->ds, &submit->ds.trace, &submit->ds, true);
intel_ds_queue_flush_data(&queue->ds, &submit->ds.trace, &submit->ds,
device->vk.current_frame, true);
if (submit->batch.status != VK_SUCCESS) {
result = submit->batch.status;
@ -333,7 +334,8 @@ anv_device_utrace_flush_cmd_buffers(struct anv_queue *queue,
for (uint32_t i = 0; i < cmd_buffer_count; i++) {
assert(cmd_buffers[i]->usage_flags & VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT);
intel_ds_queue_flush_data(&queue->ds, &cmd_buffers[i]->trace,
&submit->ds, i == (cmd_buffer_count - 1));
&submit->ds, device->vk.current_frame,
i == (cmd_buffer_count - 1));
}
}
@ -637,7 +639,8 @@ anv_queue_trace(struct anv_queue *queue, const char *label, bool frame, bool beg
goto error_reloc_list;
}
intel_ds_queue_flush_data(&queue->ds, &submit->ds.trace, &submit->ds, true);
intel_ds_queue_flush_data(&queue->ds, &submit->ds.trace, &submit->ds,
device->vk.current_frame, true);
pthread_mutex_lock(&device->mutex);
device->kmd_backend->queue_exec_trace(queue, submit);

View File

@ -149,7 +149,7 @@ anv_device_utrace_flush_cmd_buffers(struct anv_queue *queue,
for (uint32_t i = 0; i < cmd_buffer_count; i++) {
if (cmd_buffers[i]->usage_flags & VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT) {
intel_ds_queue_flush_data(&queue->ds, &cmd_buffers[i]->trace,
&flush->ds, false);
&flush->ds, device->vk.current_frame, false);
} else {
u_trace_clone_append(u_trace_begin_iterator(&cmd_buffers[i]->trace),
u_trace_end_iterator(&cmd_buffers[i]->trace),
@ -160,7 +160,8 @@ anv_device_utrace_flush_cmd_buffers(struct anv_queue *queue,
}
anv_genX(device->info, emit_so_memcpy_fini)(&flush->memcpy_state);
intel_ds_queue_flush_data(&queue->ds, &flush->ds.trace, &flush->ds, true);
intel_ds_queue_flush_data(&queue->ds, &flush->ds.trace, &flush->ds,
device->vk.current_frame, true);
if (flush->batch.status != VK_SUCCESS) {
result = flush->batch.status;
@ -170,7 +171,8 @@ anv_device_utrace_flush_cmd_buffers(struct anv_queue *queue,
for (uint32_t i = 0; i < cmd_buffer_count; i++) {
assert(cmd_buffers[i]->usage_flags & VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT);
intel_ds_queue_flush_data(&queue->ds, &cmd_buffers[i]->trace,
&flush->ds, i == (cmd_buffer_count - 1));
&flush->ds, device->vk.current_frame,
i == (cmd_buffer_count - 1));
}
}