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);
 }
 

Reply via email to