mirror of https://gitlab.freedesktop.org/mesa/mesa
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:
parent
c73b3f590b
commit
72326e15f3
|
@ -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)
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue