Module: Mesa Branch: main Commit: 82f6a477f3f013975cc7c1755162746f85546b6f URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=82f6a477f3f013975cc7c1755162746f85546b6f
Author: Felix DeGrood <[email protected]> Date: Wed Apr 26 18:52:21 2023 +0000 intel: refactor INTEL_MEASURE pointer dumping Refactor framebuffer to renderpass to mirror previous INTEL_MEASURE changes. We dump hashes/pointers for shaders and framebuffer/renderpass. Reduce from 64bit to 32bit pointers. We don't benefit from the extra precision and reduced output size is convenient. Reviewed-by: Mark Janes <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22723> --- src/gallium/drivers/iris/iris_measure.c | 10 +++++----- src/intel/common/intel_measure.c | 18 +++++++++--------- src/intel/common/intel_measure.h | 5 +++-- src/intel/vulkan/anv_measure.c | 8 ++++---- 4 files changed, 21 insertions(+), 20 deletions(-) diff --git a/src/gallium/drivers/iris/iris_measure.c b/src/gallium/drivers/iris/iris_measure.c index ba1aa5b1e0a..d4de10c8a2d 100644 --- a/src/gallium/drivers/iris/iris_measure.c +++ b/src/gallium/drivers/iris/iris_measure.c @@ -121,7 +121,7 @@ iris_init_batch_measure(struct iris_context *ice, struct iris_batch *batch) config->batch_size * sizeof(uint64_t), 8, IRIS_MEMZONE_OTHER, BO_ALLOC_ZEROED); measure->base.timestamps = iris_bo_map(NULL, measure->bo, MAP_READ); - measure->base.framebuffer = + measure->base.renderpass = (uintptr_t)util_hash_crc32(&ice->state.framebuffer, sizeof(ice->state.framebuffer)); } @@ -155,7 +155,7 @@ measure_start_snapshot(struct iris_context *ice, if (measure_batch->frame == 0) measure_batch->frame = screen_frame; - uintptr_t framebuffer = measure_batch->framebuffer; + uintptr_t renderpass = measure_batch->renderpass; if (measure_batch->index == config->batch_size) { /* Snapshot buffer is full. The batch must be flushed before additional @@ -199,7 +199,7 @@ measure_start_snapshot(struct iris_context *ice, snapshot->count = (unsigned) count; snapshot->event_count = measure_batch->event_count; snapshot->event_name = event_name; - snapshot->framebuffer = framebuffer; + snapshot->renderpass = renderpass; if (type == INTEL_SNAPSHOT_COMPUTE) { snapshot->cs = (uintptr_t) ice->shaders.prog[MESA_SHADER_COMPUTE]; @@ -269,7 +269,7 @@ iris_measure_renderpass(struct iris_context *ice) return; uint32_t framebuffer_crc = util_hash_crc32(&ice->state.framebuffer, sizeof(ice->state.framebuffer)); - if (framebuffer_crc == batch->framebuffer) + if (framebuffer_crc == batch->renderpass) return; bool filtering = config->flags & INTEL_MEASURE_RENDERPASS; if (filtering && batch->index % 2 == 1) { @@ -279,7 +279,7 @@ iris_measure_renderpass(struct iris_context *ice) batch->event_count = 0; } - batch->framebuffer = framebuffer_crc; + batch->renderpass = framebuffer_crc; } void diff --git a/src/intel/common/intel_measure.c b/src/intel/common/intel_measure.c index a076a4ac00f..e8d5dfb046b 100644 --- a/src/intel/common/intel_measure.c +++ b/src/intel/common/intel_measure.c @@ -213,9 +213,9 @@ intel_measure_init(struct intel_measure_device *device) } if (!config.cpu_measure) - fputs("draw_start,draw_end,frame,batch," + fputs("draw_start,draw_end,frame,batch,renderpass," "event_index,event_count,type,count,vs,tcs,tes," - "gs,fs,cs,ms,ts,framebuffer,idle_us,time_us\n", + "gs,fs,cs,ms,ts,idle_us,time_us\n", config.file); else fputs("draw_start,frame,batch,event_index,event_count," @@ -305,7 +305,7 @@ intel_measure_state_changed(const struct intel_measure_batch *batch, } if (config.flags & INTEL_MEASURE_RENDERPASS) { - return ((last_snap->framebuffer != batch->framebuffer) || + return ((last_snap->renderpass != batch->renderpass) || /* compute workloads are always in their own renderpass */ (cs != 0)); } @@ -616,15 +616,15 @@ print_combined_results(struct intel_measure_device *measure_device, uint64_t duration_time_ns = intel_device_info_timebase_scale(info, duration_ts); const struct intel_measure_snapshot *begin = &start_result->snapshot; - fprintf(config.file, "%"PRIu64",%"PRIu64",%u,%u,%u,%u,%s,%u," - "0x%"PRIxPTR",0x%"PRIxPTR",0x%"PRIxPTR",0x%"PRIxPTR",0x%"PRIxPTR"," - "0x%"PRIxPTR",0x%"PRIxPTR",0x%"PRIxPTR",0x%"PRIxPTR",%.3lf,%.3lf\n", + fprintf(config.file, "%"PRIu64",%"PRIu64",%u,%u,%u,%u,%u,%s,%u," + "0x%x,0x%x,0x%x,0x%x,0x%x,0x%x,0x%x,0x%x,%.3lf,%.3lf\n", start_result->start_ts, current_result->end_ts, start_result->frame, start_result->batch_count, - start_result->event_index, event_count, + begin->renderpass, start_result->event_index, event_count, begin->event_name, begin->count, - begin->vs, begin->tcs, begin->tes, begin->gs, begin->fs, begin->cs, - begin->ms, begin->ts, begin->framebuffer, + (uint32_t)begin->vs, (uint32_t)begin->tcs, (uint32_t)begin->tes, + (uint32_t)begin->gs, (uint32_t)begin->fs, (uint32_t)begin->cs, + (uint32_t)begin->ms, (uint32_t)begin->ts, (double)duration_idle_ns / 1000.0, (double)duration_time_ns / 1000.0); } diff --git a/src/intel/common/intel_measure.h b/src/intel/common/intel_measure.h index 727a207d2e8..5ce2b5b46b7 100644 --- a/src/intel/common/intel_measure.h +++ b/src/intel/common/intel_measure.h @@ -112,7 +112,8 @@ struct intel_measure_snapshot { enum intel_measure_snapshot_type type; unsigned count, event_count; const char* event_name; - uintptr_t framebuffer, vs, tcs, tes, gs, fs, cs, ms, ts; + uint32_t renderpass; + uintptr_t vs, tcs, tes, gs, fs, cs, ms, ts; /* for vulkan secondary command buffers */ struct intel_measure_batch *secondary; }; @@ -153,7 +154,7 @@ struct intel_measure_batch { struct list_head link; unsigned index; unsigned frame, batch_count, event_count; - uintptr_t framebuffer; + uint32_t renderpass; uint64_t *timestamps; struct intel_measure_snapshot snapshots[0]; }; diff --git a/src/intel/vulkan/anv_measure.c b/src/intel/vulkan/anv_measure.c index ce56af18b5d..235c5f4290d 100644 --- a/src/intel/vulkan/anv_measure.c +++ b/src/intel/vulkan/anv_measure.c @@ -164,8 +164,8 @@ anv_measure_start_snapshot(struct anv_cmd_buffer *cmd_buffer, snapshot->count = (unsigned) count; snapshot->event_count = measure->base.event_count; snapshot->event_name = event_name; - snapshot->framebuffer = (type == INTEL_SNAPSHOT_COMPUTE) ? 0 - : measure->base.framebuffer; + snapshot->renderpass = (type == INTEL_SNAPSHOT_COMPUTE) ? 0 + : measure->base.renderpass; if (type == INTEL_SNAPSHOT_COMPUTE && cmd_buffer->state.compute.pipeline) { snapshot->cs = (uintptr_t) cmd_buffer->state.compute.pipeline->cs; @@ -327,7 +327,7 @@ anv_measure_reset(struct anv_cmd_buffer *cmd_buffer) assert(cmd_buffer->device != NULL); measure->base.index = 0; - measure->base.framebuffer = 0; + measure->base.renderpass = 0; measure->base.frame = 0; measure->base.event_count = 0; list_inithead(&measure->base.link); @@ -478,7 +478,7 @@ _anv_measure_beginrenderpass(struct anv_cmd_buffer *cmd_buffer) measure->base.event_count = 0; } - measure->base.framebuffer = + measure->base.renderpass = (uintptr_t) p_atomic_inc_return(&measure_device->render_pass_count); }
