mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 07:28:11 +02:00
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 <markjanes@swizzler.org> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22723>
This commit is contained in:
parent
e2dfab5c96
commit
82f6a477f3
4 changed files with 21 additions and 20 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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];
|
||||
};
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue