u_trace/anv/iris: drop cs argument for recording traces

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Danylo Piliaiev <dpiliaiev@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16605>
This commit is contained in:
Lionel Landwerlin 2022-05-19 13:09:25 +03:00 committed by Marge Bot
parent 12773d4070
commit 1c077ca9c0
10 changed files with 74 additions and 56 deletions

View File

@ -708,7 +708,7 @@ iris_finish_batch(struct iris_batch *batch)
finish_seqno(batch);
trace_intel_end_batch(&batch->trace, batch, batch->name);
trace_intel_end_batch(&batch->trace, batch->name);
/* Emit MI_BATCH_BUFFER_END to finish our batch. */
uint32_t *map = batch->map_next;

View File

@ -253,7 +253,7 @@ iris_get_command_space(struct iris_batch *batch, unsigned bytes)
{
if (!batch->begin_trace_recorded) {
batch->begin_trace_recorded = true;
trace_intel_begin_batch(&batch->trace, batch);
trace_intel_begin_batch(&batch->trace);
}
iris_require_command_space(batch, bytes);
void *map = batch->map_next;

View File

@ -453,7 +453,7 @@ blorp_measure_start(struct blorp_batch *blorp_batch,
struct iris_context *ice = blorp_batch->blorp->driver_ctx;
struct iris_batch *batch = blorp_batch->driver_batch;
trace_intel_begin_blorp(&batch->trace, batch);
trace_intel_begin_blorp(&batch->trace);
if (batch->measure == NULL)
return;
@ -468,7 +468,7 @@ blorp_measure_end(struct blorp_batch *blorp_batch,
{
struct iris_batch *batch = blorp_batch->driver_batch;
trace_intel_end_blorp(&batch->trace, batch,
trace_intel_end_blorp(&batch->trace,
params->x1 - params->x0,
params->y1 - params->y0,
params->hiz_op,

View File

@ -6067,7 +6067,7 @@ iris_upload_dirty_render_state(struct iris_context *ice,
}
if (dirty & IRIS_DIRTY_RENDER_BUFFER)
trace_framebuffer_state(&batch->trace, batch, &ice->state.framebuffer);
trace_framebuffer_state(&batch->trace, NULL, &ice->state.framebuffer);
for (int stage = 0; stage <= MESA_SHADER_FRAGMENT; stage++) {
if (stage_dirty & (IRIS_STAGE_DIRTY_BINDINGS_VS << stage)) {
@ -6860,7 +6860,7 @@ iris_upload_render_state(struct iris_context *ice,
{
bool use_predicate = ice->state.predicate == IRIS_PREDICATE_STATE_USE_BIT;
trace_intel_begin_draw(&batch->trace, batch);
trace_intel_begin_draw(&batch->trace);
if (ice->state.dirty & IRIS_DIRTY_VERTEX_BUFFER_FLUSHES)
flush_vbos(ice, batch);
@ -7074,7 +7074,7 @@ iris_upload_render_state(struct iris_context *ice,
iris_batch_sync_region_end(batch);
trace_intel_end_draw(&batch->trace, batch, 0);
trace_intel_end_draw(&batch->trace, 0);
}
static void
@ -7119,7 +7119,7 @@ iris_upload_compute_walker(struct iris_context *ice,
const struct brw_cs_dispatch_info dispatch =
brw_cs_get_dispatch_info(devinfo, cs_prog_data, grid->block);
trace_intel_begin_compute(&batch->trace, batch);
trace_intel_begin_compute(&batch->trace);
if (stage_dirty & IRIS_STAGE_DIRTY_CS) {
iris_emit_cmd(batch, GENX(CFE_STATE), cfe) {
@ -7160,7 +7160,7 @@ iris_upload_compute_walker(struct iris_context *ice,
assert(brw_cs_push_const_total_size(cs_prog_data, dispatch.threads) == 0);
}
trace_intel_end_compute(&batch->trace, batch, grid->grid[0], grid->grid[1], grid->grid[2]);
trace_intel_end_compute(&batch->trace, grid->grid[0], grid->grid[1], grid->grid[2]);
}
#else /* #if GFX_VERx10 >= 125 */
@ -7184,7 +7184,7 @@ iris_upload_gpgpu_walker(struct iris_context *ice,
const struct brw_cs_dispatch_info dispatch =
brw_cs_get_dispatch_info(devinfo, cs_prog_data, grid->block);
trace_intel_begin_compute(&batch->trace, batch);
trace_intel_begin_compute(&batch->trace);
if ((stage_dirty & IRIS_STAGE_DIRTY_CS) ||
cs_prog_data->local_size[0] == 0 /* Variable local group size */) {
@ -7312,7 +7312,7 @@ iris_upload_gpgpu_walker(struct iris_context *ice,
iris_emit_cmd(batch, GENX(MEDIA_STATE_FLUSH), msf);
trace_intel_end_compute(&batch->trace, batch, grid->grid[0], grid->grid[1], grid->grid[2]);
trace_intel_end_compute(&batch->trace, grid->grid[0], grid->grid[1], grid->grid[2]);
}
#endif /* #if GFX_VERx10 >= 125 */
@ -8143,7 +8143,7 @@ iris_emit_raw_pipe_control(struct iris_batch *batch,
(flags & (PIPE_CONTROL_CACHE_FLUSH_BITS | PIPE_CONTROL_CACHE_INVALIDATE_BITS)) != 0;
if (trace_pc)
trace_intel_begin_stall(&batch->trace, batch);
trace_intel_begin_stall(&batch->trace);
iris_emit_cmd(batch, GENX(PIPE_CONTROL), pc) {
#if GFX_VERx10 >= 125
@ -8191,7 +8191,7 @@ iris_emit_raw_pipe_control(struct iris_batch *batch,
}
if (trace_pc) {
trace_intel_end_stall(&batch->trace, batch, flags,
trace_intel_end_stall(&batch->trace, flags,
iris_utrace_pipe_flush_bit_to_ds_stall_flag,
reason);
}

View File

@ -40,11 +40,11 @@
#include <unistd.h>
static void
iris_utrace_record_ts(struct u_trace *trace, void *_batch,
iris_utrace_record_ts(struct u_trace *trace, void *cs,
void *timestamps, unsigned idx,
bool end_of_pipe)
{
struct iris_batch *batch = _batch;
struct iris_batch *batch = container_of(trace, struct iris_batch, trace);
struct iris_resource *res = (void *) timestamps;
struct iris_bo *bo = res->bo;

View File

@ -152,7 +152,8 @@ def generate_code(args):
from u_trace import utrace_generate_perfetto_utils
utrace_generate(cpath=args.utrace_src, hpath=args.utrace_hdr,
ctx_param='struct intel_ds_device *dev')
ctx_param='struct intel_ds_device *dev',
need_cs_param=False)
utrace_generate_perfetto_utils(hpath=args.perfetto_hdr)

View File

@ -220,10 +220,12 @@ anv_utrace_destroy_ts_buffer(struct u_trace_context *utctx, void *timestamps)
}
static void
anv_utrace_record_ts(struct u_trace *ut, void *cs, void *timestamps, unsigned idx,
anv_utrace_record_ts(struct u_trace *ut, void *cs,
void *timestamps, unsigned idx,
bool end_of_pipe)
{
struct anv_cmd_buffer *cmd_buffer = cs;
struct anv_cmd_buffer *cmd_buffer =
container_of(ut, struct anv_cmd_buffer, trace);
struct anv_device *device = cmd_buffer->device;
struct anv_bo *bo = timestamps;

View File

@ -40,7 +40,7 @@ static void blorp_measure_start(struct blorp_batch *_batch,
const struct blorp_params *params)
{
struct anv_cmd_buffer *cmd_buffer = _batch->driver_batch;
trace_intel_begin_blorp(&cmd_buffer->trace, cmd_buffer);
trace_intel_begin_blorp(&cmd_buffer->trace);
anv_measure_snapshot(cmd_buffer,
params->snapshot_type,
NULL, 0);
@ -50,7 +50,7 @@ static void blorp_measure_end(struct blorp_batch *_batch,
const struct blorp_params *params)
{
struct anv_cmd_buffer *cmd_buffer = _batch->driver_batch;
trace_intel_end_blorp(&cmd_buffer->trace, cmd_buffer,
trace_intel_end_blorp(&cmd_buffer->trace,
params->x1 - params->x0,
params->y1 - params->y0,
params->hiz_op,

View File

@ -1646,7 +1646,7 @@ genX(BeginCommandBuffer)(
if (cmd_buffer->vk.level == VK_COMMAND_BUFFER_LEVEL_PRIMARY)
cmd_buffer->usage_flags &= ~VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT;
trace_intel_begin_cmd_buffer(&cmd_buffer->trace, cmd_buffer);
trace_intel_begin_cmd_buffer(&cmd_buffer->trace);
genX(cmd_buffer_emit_state_base_address)(cmd_buffer);
@ -1887,8 +1887,7 @@ genX(EndCommandBuffer)(
emit_isp_disable(cmd_buffer);
trace_intel_end_cmd_buffer(&cmd_buffer->trace, cmd_buffer,
cmd_buffer->vk.level);
trace_intel_end_cmd_buffer(&cmd_buffer->trace, cmd_buffer->vk.level);
anv_cmd_buffer_end_batch_buffer(cmd_buffer);
@ -2367,7 +2366,7 @@ genX(cmd_buffer_apply_pipe_flushes)(struct anv_cmd_buffer *cmd_buffer)
bool trace_flush =
(bits & (ANV_PIPE_FLUSH_BITS | ANV_PIPE_STALL_BITS | ANV_PIPE_INVALIDATE_BITS)) != 0;
if (trace_flush)
trace_intel_begin_stall(&cmd_buffer->trace, cmd_buffer);
trace_intel_begin_stall(&cmd_buffer->trace);
if ((GFX_VER >= 8 && GFX_VER <= 9) &&
(bits & ANV_PIPE_CS_STALL_BIT) &&
@ -2388,7 +2387,7 @@ genX(cmd_buffer_apply_pipe_flushes)(struct anv_cmd_buffer *cmd_buffer)
bits);
if (trace_flush) {
trace_intel_end_stall(&cmd_buffer->trace, cmd_buffer, bits,
trace_intel_end_stall(&cmd_buffer->trace, bits,
anv_pipe_flush_bit_to_ds_stall_flag, NULL);
}
}
@ -4222,7 +4221,7 @@ void genX(CmdDraw)(
anv_measure_snapshot(cmd_buffer,
INTEL_SNAPSHOT_DRAW,
"draw", count);
trace_intel_begin_draw(&cmd_buffer->trace, cmd_buffer);
trace_intel_begin_draw(&cmd_buffer->trace);
genX(cmd_buffer_flush_state)(cmd_buffer);
@ -4252,7 +4251,7 @@ void genX(CmdDraw)(
update_dirty_vbs_for_gfx8_vb_flush(cmd_buffer, SEQUENTIAL);
trace_intel_end_draw(&cmd_buffer->trace, cmd_buffer, count);
trace_intel_end_draw(&cmd_buffer->trace, count);
}
void genX(CmdDrawMultiEXT)(
@ -4277,7 +4276,7 @@ void genX(CmdDrawMultiEXT)(
anv_measure_snapshot(cmd_buffer,
INTEL_SNAPSHOT_DRAW,
"draw_multi", count);
trace_intel_begin_draw_multi(&cmd_buffer->trace, cmd_buffer);
trace_intel_begin_draw_multi(&cmd_buffer->trace);
genX(cmd_buffer_flush_state)(cmd_buffer);
@ -4310,7 +4309,7 @@ void genX(CmdDrawMultiEXT)(
update_dirty_vbs_for_gfx8_vb_flush(cmd_buffer, SEQUENTIAL);
trace_intel_end_draw_multi(&cmd_buffer->trace, cmd_buffer, count);
trace_intel_end_draw_multi(&cmd_buffer->trace, count);
}
void genX(CmdDrawIndexed)(
@ -4336,7 +4335,7 @@ void genX(CmdDrawIndexed)(
INTEL_SNAPSHOT_DRAW,
"draw indexed",
count);
trace_intel_begin_draw_indexed(&cmd_buffer->trace, cmd_buffer);
trace_intel_begin_draw_indexed(&cmd_buffer->trace);
genX(cmd_buffer_flush_state)(cmd_buffer);
@ -4364,7 +4363,7 @@ void genX(CmdDrawIndexed)(
update_dirty_vbs_for_gfx8_vb_flush(cmd_buffer, RANDOM);
trace_intel_end_draw_indexed(&cmd_buffer->trace, cmd_buffer, count);
trace_intel_end_draw_indexed(&cmd_buffer->trace, count);
}
void genX(CmdDrawMultiIndexedEXT)(
@ -4391,7 +4390,7 @@ void genX(CmdDrawMultiIndexedEXT)(
INTEL_SNAPSHOT_DRAW,
"draw indexed_multi",
count);
trace_intel_begin_draw_indexed_multi(&cmd_buffer->trace, cmd_buffer);
trace_intel_begin_draw_indexed_multi(&cmd_buffer->trace);
genX(cmd_buffer_flush_state)(cmd_buffer);
@ -4479,7 +4478,7 @@ void genX(CmdDrawMultiIndexedEXT)(
update_dirty_vbs_for_gfx8_vb_flush(cmd_buffer, RANDOM);
trace_intel_end_draw_indexed_multi(&cmd_buffer->trace, cmd_buffer, count);
trace_intel_end_draw_indexed_multi(&cmd_buffer->trace, count);
}
/* Auto-Draw / Indirect Registers */
@ -4515,7 +4514,7 @@ void genX(CmdDrawIndirectByteCountEXT)(
INTEL_SNAPSHOT_DRAW,
"draw indirect byte count",
instanceCount);
trace_intel_begin_draw_indirect_byte_count(&cmd_buffer->trace, cmd_buffer);
trace_intel_begin_draw_indirect_byte_count(&cmd_buffer->trace);
genX(cmd_buffer_flush_state)(cmd_buffer);
@ -4563,8 +4562,7 @@ void genX(CmdDrawIndirectByteCountEXT)(
update_dirty_vbs_for_gfx8_vb_flush(cmd_buffer, SEQUENTIAL);
trace_intel_end_draw_indirect_byte_count(&cmd_buffer->trace, cmd_buffer,
instanceCount);
trace_intel_end_draw_indirect_byte_count(&cmd_buffer->trace, instanceCount);
#endif /* GFX_VERx10 >= 75 */
}
@ -4625,7 +4623,7 @@ void genX(CmdDrawIndirect)(
INTEL_SNAPSHOT_DRAW,
"draw indirect",
drawCount);
trace_intel_begin_draw_indirect(&cmd_buffer->trace, cmd_buffer);
trace_intel_begin_draw_indirect(&cmd_buffer->trace);
genX(cmd_buffer_flush_state)(cmd_buffer);
@ -4660,7 +4658,7 @@ void genX(CmdDrawIndirect)(
offset += stride;
}
trace_intel_end_draw_indirect(&cmd_buffer->trace, cmd_buffer, drawCount);
trace_intel_end_draw_indirect(&cmd_buffer->trace, drawCount);
}
void genX(CmdDrawIndexedIndirect)(
@ -4682,7 +4680,7 @@ void genX(CmdDrawIndexedIndirect)(
INTEL_SNAPSHOT_DRAW,
"draw indexed indirect",
drawCount);
trace_intel_begin_draw_indexed_indirect(&cmd_buffer->trace, cmd_buffer);
trace_intel_begin_draw_indexed_indirect(&cmd_buffer->trace);
genX(cmd_buffer_flush_state)(cmd_buffer);
@ -4718,7 +4716,7 @@ void genX(CmdDrawIndexedIndirect)(
offset += stride;
}
trace_intel_end_draw_indexed_indirect(&cmd_buffer->trace, cmd_buffer, drawCount);
trace_intel_end_draw_indexed_indirect(&cmd_buffer->trace, drawCount);
}
static struct mi_value
@ -4849,7 +4847,7 @@ void genX(CmdDrawIndirectCount)(
INTEL_SNAPSHOT_DRAW,
"draw indirect count",
0);
trace_intel_begin_draw_indirect_count(&cmd_buffer->trace, cmd_buffer);
trace_intel_begin_draw_indirect_count(&cmd_buffer->trace);
genX(cmd_buffer_flush_state)(cmd_buffer);
@ -4891,7 +4889,7 @@ void genX(CmdDrawIndirectCount)(
mi_value_unref(&b, max);
trace_intel_end_draw_indirect_count(&cmd_buffer->trace, cmd_buffer, maxDrawCount);
trace_intel_end_draw_indirect_count(&cmd_buffer->trace, maxDrawCount);
}
void genX(CmdDrawIndexedIndirectCount)(
@ -4917,7 +4915,7 @@ void genX(CmdDrawIndexedIndirectCount)(
INTEL_SNAPSHOT_DRAW,
"draw indexed indirect count",
0);
trace_intel_begin_draw_indexed_indirect_count(&cmd_buffer->trace, cmd_buffer);
trace_intel_begin_draw_indexed_indirect_count(&cmd_buffer->trace);
genX(cmd_buffer_flush_state)(cmd_buffer);
@ -4960,8 +4958,7 @@ void genX(CmdDrawIndexedIndirectCount)(
mi_value_unref(&b, max);
trace_intel_end_draw_indexed_indirect_count(&cmd_buffer->trace,
cmd_buffer, maxDrawCount);
trace_intel_end_draw_indexed_indirect_count(&cmd_buffer->trace, maxDrawCount);
}
@ -5492,7 +5489,7 @@ void genX(CmdDispatchBase)(
prog_data->local_size[0] * prog_data->local_size[1] *
prog_data->local_size[2]);
trace_intel_begin_compute(&cmd_buffer->trace, cmd_buffer);
trace_intel_begin_compute(&cmd_buffer->trace);
if (prog_data->uses_num_work_groups) {
struct anv_state state =
@ -5518,7 +5515,7 @@ void genX(CmdDispatchBase)(
emit_cs_walker(cmd_buffer, pipeline, false, prog_data, groupCountX,
groupCountY, groupCountZ);
trace_intel_end_compute(&cmd_buffer->trace, cmd_buffer,
trace_intel_end_compute(&cmd_buffer->trace,
groupCountX, groupCountY, groupCountZ);
}
@ -5553,7 +5550,7 @@ void genX(CmdDispatchIndirect)(
INTEL_SNAPSHOT_COMPUTE,
"compute indirect",
0);
trace_intel_begin_compute(&cmd_buffer->trace, cmd_buffer);
trace_intel_begin_compute(&cmd_buffer->trace);
if (prog_data->uses_num_work_groups) {
cmd_buffer->state.compute.num_workgroups = addr;
@ -5628,7 +5625,7 @@ void genX(CmdDispatchIndirect)(
emit_cs_walker(cmd_buffer, pipeline, true, prog_data, 0, 0, 0);
trace_intel_end_compute(&cmd_buffer->trace, cmd_buffer, 0, 0, 0);
trace_intel_end_compute(&cmd_buffer->trace, 0, 0, 0);
}
struct anv_state
@ -6510,7 +6507,7 @@ void genX(CmdBeginRendering)(
}
anv_measure_beginrenderpass(cmd_buffer);
trace_intel_begin_render_pass(&cmd_buffer->trace, cmd_buffer);
trace_intel_begin_render_pass(&cmd_buffer->trace);
gfx->rendering_flags = pRenderingInfo->flags;
gfx->render_area = pRenderingInfo->renderArea;

View File

@ -210,13 +210,19 @@ void ${trace.tp_perfetto}(
#endif
% endif
void __trace_${trace_name}(
struct u_trace *ut, void *cs
struct u_trace *ut
% if need_cs_param:
, void *cs
% endif
% for arg in trace.args:
, ${arg.type} ${arg.var}
% endfor
);
static inline void trace_${trace_name}(
struct u_trace *ut, void *cs
struct u_trace *ut
% if need_cs_param:
, void *cs
% endif
% for arg in trace.args:
, ${arg.type} ${arg.var}
% endfor
@ -228,7 +234,10 @@ static inline void trace_${trace_name}(
% endif
return;
__trace_${trace_name}(
ut, cs
ut
% if need_cs_param:
, cs
% endif
% for arg in trace.args:
, ${arg.var}
% endfor
@ -349,13 +358,16 @@ static const struct u_tracepoint __tp_${trace_name} = {
% endif
};
void __trace_${trace_name}(
struct u_trace *ut, void *cs
struct u_trace *ut
% if need_cs_param:
, void *cs
% endif
% for arg in trace.args:
, ${arg.type} ${arg.var}
% endfor
) {
struct trace_${trace_name} *__entry =
(struct trace_${trace_name} *)u_trace_append(ut, cs, &__tp_${trace_name});
(struct trace_${trace_name} *)u_trace_append(ut, ${cs_param_value + ","} &__tp_${trace_name});
% if len(trace.tp_struct) == 0:
(void)__entry;
% endif
@ -367,13 +379,18 @@ void __trace_${trace_name}(
% endfor
"""
def utrace_generate(cpath, hpath, ctx_param):
def utrace_generate(cpath, hpath, ctx_param, need_cs_param=True):
cs_param_value = 'NULL'
if need_cs_param:
cs_param_value = 'cs'
if cpath is not None:
hdr = os.path.basename(cpath).rsplit('.', 1)[0] + '.h'
with open(cpath, 'w') as f:
f.write(Template(src_template).render(
hdr=hdr,
ctx_param=ctx_param,
need_cs_param=need_cs_param,
cs_param_value=cs_param_value,
HEADERS=[h for h in HEADERS if h.scope & HeaderScope.SOURCE],
TRACEPOINTS=TRACEPOINTS))
@ -383,6 +400,7 @@ def utrace_generate(cpath, hpath, ctx_param):
f.write(Template(hdr_template).render(
hdrname=hdr.rstrip('.h').upper(),
ctx_param=ctx_param,
need_cs_param=need_cs_param,
HEADERS=[h for h in HEADERS if h.scope & HeaderScope.HEADER],
FORWARD_DECLS=FORWARD_DECLS,
TRACEPOINTS=TRACEPOINTS))