From eac5e938c0cda785426177059e6e7d92b43590ba Mon Sep 17 00:00:00 2001 From: Lionel Landwerlin Date: Fri, 1 Jul 2022 10:51:39 +0300 Subject: [PATCH] blorp: defined operations for debug purposes We add a mapping for blorp_op -> intel_snapshot Signed-off-by: Lionel Landwerlin Reviewed-by: Ivan Briano Part-of: --- src/gallium/drivers/iris/iris_blorp.c | 4 ++- src/intel/blorp/blorp.c | 55 ++++++++++++++++++++++++++++++-- src/intel/blorp/blorp.h | 16 ++++++++++ src/intel/blorp/blorp_blit.c | 4 +-- src/intel/blorp/blorp_clear.c | 30 ++++++++--------- src/intel/blorp/blorp_priv.h | 7 +++- src/intel/vulkan/genX_blorp_exec.c | 2 +- src/intel/vulkan_hasvk/genX_blorp_exec.c | 2 +- 8 files changed, 96 insertions(+), 24 deletions(-) diff --git a/src/gallium/drivers/iris/iris_blorp.c b/src/gallium/drivers/iris/iris_blorp.c index 2a43ca8..774cad8 100644 --- a/src/gallium/drivers/iris/iris_blorp.c +++ b/src/gallium/drivers/iris/iris_blorp.c @@ -465,7 +465,9 @@ blorp_measure_start(struct blorp_batch *blorp_batch, if (batch->measure == NULL) return; - iris_measure_snapshot(ice, batch, params->snapshot_type, NULL, NULL, NULL); + iris_measure_snapshot(ice, batch, + blorp_op_to_intel_measure_snapshot(params->op), + NULL, NULL, NULL); } diff --git a/src/intel/blorp/blorp.c b/src/intel/blorp/blorp.c index 118e716..23b75a7 100644 --- a/src/intel/blorp/blorp.c +++ b/src/intel/blorp/blorp.c @@ -30,6 +30,55 @@ #include "compiler/brw_nir.h" #include "dev/intel_debug.h" +enum intel_measure_snapshot_type +blorp_op_to_intel_measure_snapshot(enum blorp_op op) +{ + enum intel_measure_snapshot_type vals[] = { +#define MAP(name) [BLORP_OP_##name] = INTEL_SNAPSHOT_##name + MAP(BLIT), + MAP(COPY), + MAP(CCS_AMBIGUATE), + MAP(CCS_COLOR_CLEAR), + MAP(CCS_PARTIAL_RESOLVE), + MAP(CCS_RESOLVE), + MAP(HIZ_AMBIGUATE), + MAP(HIZ_CLEAR), + MAP(HIZ_RESOLVE), + MAP(MCS_COLOR_CLEAR), + MAP(MCS_PARTIAL_RESOLVE), + MAP(SLOW_COLOR_CLEAR), + MAP(SLOW_DEPTH_CLEAR), +#undef MAP + }; + assert(op < ARRAY_SIZE(vals)); + + return vals[op]; +} + +const char *blorp_op_to_name(enum blorp_op op) +{ + const char *names[] = { +#define MAP(name) [BLORP_OP_##name] = #name + MAP(BLIT), + MAP(COPY), + MAP(CCS_AMBIGUATE), + MAP(CCS_COLOR_CLEAR), + MAP(CCS_PARTIAL_RESOLVE), + MAP(CCS_RESOLVE), + MAP(HIZ_AMBIGUATE), + MAP(HIZ_CLEAR), + MAP(HIZ_RESOLVE), + MAP(MCS_COLOR_CLEAR), + MAP(MCS_PARTIAL_RESOLVE), + MAP(SLOW_COLOR_CLEAR), + MAP(SLOW_DEPTH_CLEAR), +#undef MAP + }; + assert(op < ARRAY_SIZE(names)); + + return names[op]; +} + const char * blorp_shader_type_to_name(enum blorp_shader_type type) { @@ -417,13 +466,13 @@ blorp_hiz_op(struct blorp_batch *batch, struct blorp_surf *surf, params.full_surface_hiz_op = true; switch (op) { case ISL_AUX_OP_FULL_RESOLVE: - params.snapshot_type = INTEL_SNAPSHOT_HIZ_RESOLVE; + params.op = BLORP_OP_HIZ_RESOLVE; break; case ISL_AUX_OP_AMBIGUATE: - params.snapshot_type = INTEL_SNAPSHOT_HIZ_AMBIGUATE; + params.op = BLORP_OP_HIZ_AMBIGUATE; break; case ISL_AUX_OP_FAST_CLEAR: - params.snapshot_type = INTEL_SNAPSHOT_HIZ_CLEAR; + params.op = BLORP_OP_HIZ_CLEAR; break; case ISL_AUX_OP_PARTIAL_RESOLVE: case ISL_AUX_OP_NONE: diff --git a/src/intel/blorp/blorp.h b/src/intel/blorp/blorp.h index 3682a36..f53ed24 100644 --- a/src/intel/blorp/blorp.h +++ b/src/intel/blorp/blorp.h @@ -35,6 +35,22 @@ struct brw_stage_prog_data; extern "C" { #endif +enum blorp_op { + BLORP_OP_BLIT, + BLORP_OP_COPY, + BLORP_OP_CCS_AMBIGUATE, + BLORP_OP_CCS_COLOR_CLEAR, + BLORP_OP_CCS_PARTIAL_RESOLVE, + BLORP_OP_CCS_RESOLVE, + BLORP_OP_HIZ_AMBIGUATE, + BLORP_OP_HIZ_CLEAR, + BLORP_OP_HIZ_RESOLVE, + BLORP_OP_MCS_COLOR_CLEAR, + BLORP_OP_MCS_PARTIAL_RESOLVE, + BLORP_OP_SLOW_COLOR_CLEAR, + BLORP_OP_SLOW_DEPTH_CLEAR, +}; + struct blorp_batch; struct blorp_params; diff --git a/src/intel/blorp/blorp_blit.c b/src/intel/blorp/blorp_blit.c index 3859dc9..6bd68b5 100644 --- a/src/intel/blorp/blorp_blit.c +++ b/src/intel/blorp/blorp_blit.c @@ -2528,7 +2528,7 @@ blorp_blit(struct blorp_batch *batch, { struct blorp_params params; blorp_params_init(¶ms); - params.snapshot_type = INTEL_SNAPSHOT_BLIT; + params.op = BLORP_OP_BLIT; const bool compute = batch->flags & BLORP_BATCH_USE_COMPUTE; if (compute) { assert(blorp_blit_supports_compute(batch->blorp, @@ -2869,7 +2869,7 @@ blorp_copy(struct blorp_batch *batch, return; blorp_params_init(¶ms); - params.snapshot_type = INTEL_SNAPSHOT_COPY; + params.op = BLORP_OP_COPY; const bool compute = batch->flags & BLORP_BATCH_USE_COMPUTE; if (compute) { diff --git a/src/intel/blorp/blorp_clear.c b/src/intel/blorp/blorp_clear.c index 31060c2..4c65ba2 100644 --- a/src/intel/blorp/blorp_clear.c +++ b/src/intel/blorp/blorp_clear.c @@ -476,9 +476,9 @@ blorp_fast_clear(struct blorp_batch *batch, assert(params.num_samples != 0); if (params.num_samples == 1) - params.snapshot_type = INTEL_SNAPSHOT_CCS_COLOR_CLEAR; + params.op = BLORP_OP_CCS_COLOR_CLEAR; else - params.snapshot_type = INTEL_SNAPSHOT_MCS_COLOR_CLEAR; + params.op = BLORP_OP_MCS_COLOR_CLEAR; /* If a swizzle was provided, we need to swizzle the clear color so that * the hardware color format conversion will work properly. @@ -518,7 +518,7 @@ blorp_clear(struct blorp_batch *batch, { struct blorp_params params; blorp_params_init(¶ms); - params.snapshot_type = INTEL_SNAPSHOT_SLOW_COLOR_CLEAR; + params.op = BLORP_OP_SLOW_COLOR_CLEAR; const bool compute = batch->flags & BLORP_BATCH_USE_COMPUTE; if (compute) @@ -746,7 +746,7 @@ blorp_clear_stencil_as_rgba(struct blorp_batch *batch, struct blorp_params params; blorp_params_init(¶ms); - params.snapshot_type = INTEL_SNAPSHOT_SLOW_DEPTH_CLEAR; + params.op = BLORP_OP_SLOW_DEPTH_CLEAR; if (!blorp_params_get_clear_kernel(batch, ¶ms, true, false)) return false; @@ -827,7 +827,7 @@ blorp_clear_depth_stencil(struct blorp_batch *batch, struct blorp_params params; blorp_params_init(¶ms); - params.snapshot_type = INTEL_SNAPSHOT_SLOW_DEPTH_CLEAR; + params.op = BLORP_OP_SLOW_DEPTH_CLEAR; params.x0 = x0; params.y0 = y0; @@ -1015,7 +1015,7 @@ blorp_hiz_clear_depth_stencil(struct blorp_batch *batch, { struct blorp_params params; blorp_params_init(¶ms); - params.snapshot_type = INTEL_SNAPSHOT_HIZ_CLEAR; + params.op = BLORP_OP_HIZ_CLEAR; /* This requires WM_HZ_OP which only exists on gfx8+ */ assert(ISL_GFX_VER(batch->blorp->isl_dev) >= 8); @@ -1081,7 +1081,7 @@ blorp_gfx8_hiz_clear_attachments(struct blorp_batch *batch, struct blorp_params params; blorp_params_init(¶ms); - params.snapshot_type = INTEL_SNAPSHOT_HIZ_CLEAR; + params.op = BLORP_OP_HIZ_CLEAR; params.num_layers = 1; params.hiz_op = ISL_AUX_OP_FAST_CLEAR; params.x0 = x0; @@ -1136,7 +1136,7 @@ blorp_clear_attachments(struct blorp_batch *batch, if (clear_color) { params.dst.enabled = true; - params.snapshot_type = INTEL_SNAPSHOT_SLOW_COLOR_CLEAR; + params.op = BLORP_OP_SLOW_COLOR_CLEAR; memcpy(¶ms.wm_inputs.clear_color, color_value.f32, sizeof(float) * 4); @@ -1150,7 +1150,7 @@ blorp_clear_attachments(struct blorp_batch *batch, if (clear_depth) { params.depth.enabled = true; - params.snapshot_type = INTEL_SNAPSHOT_SLOW_DEPTH_CLEAR; + params.op = BLORP_OP_SLOW_DEPTH_CLEAR; params.z = depth_value; params.depth_format = isl_format_get_depth_format(depth_format, false); @@ -1158,7 +1158,7 @@ blorp_clear_attachments(struct blorp_batch *batch, if (stencil_mask) { params.stencil.enabled = true; - params.snapshot_type = INTEL_SNAPSHOT_SLOW_DEPTH_CLEAR; + params.op = BLORP_OP_SLOW_DEPTH_CLEAR; params.stencil_mask = stencil_mask; params.stencil_ref = stencil_value; @@ -1185,13 +1185,13 @@ blorp_ccs_resolve(struct blorp_batch *batch, blorp_params_init(¶ms); switch(resolve_op) { case ISL_AUX_OP_AMBIGUATE: - params.snapshot_type = INTEL_SNAPSHOT_CCS_AMBIGUATE; + params.op = BLORP_OP_CCS_AMBIGUATE; break; case ISL_AUX_OP_FULL_RESOLVE: - params.snapshot_type = INTEL_SNAPSHOT_CCS_RESOLVE; + params.op = BLORP_OP_CCS_RESOLVE; break; case ISL_AUX_OP_PARTIAL_RESOLVE: - params.snapshot_type = INTEL_SNAPSHOT_CCS_PARTIAL_RESOLVE; + params.op = BLORP_OP_CCS_PARTIAL_RESOLVE; break; default: assert(false); @@ -1365,7 +1365,7 @@ blorp_mcs_partial_resolve(struct blorp_batch *batch, { struct blorp_params params; blorp_params_init(¶ms); - params.snapshot_type = INTEL_SNAPSHOT_MCS_PARTIAL_RESOLVE; + params.op = BLORP_OP_MCS_PARTIAL_RESOLVE; assert(batch->blorp->isl_dev->info->ver >= 7); @@ -1413,7 +1413,7 @@ blorp_ccs_ambiguate(struct blorp_batch *batch, struct blorp_params params; blorp_params_init(¶ms); - params.snapshot_type = INTEL_SNAPSHOT_CCS_AMBIGUATE; + params.op = BLORP_OP_CCS_AMBIGUATE; assert(ISL_GFX_VER(batch->blorp->isl_dev) >= 7); diff --git a/src/intel/blorp/blorp_priv.h b/src/intel/blorp/blorp_priv.h index eea50fc..d57e6f4 100644 --- a/src/intel/blorp/blorp_priv.h +++ b/src/intel/blorp/blorp_priv.h @@ -220,6 +220,7 @@ enum blorp_shader_pipeline { struct blorp_params { + enum blorp_op op; uint32_t x0; uint32_t y0; uint32_t x1; @@ -255,9 +256,13 @@ struct blorp_params uint32_t pre_baked_binding_table_offset; enum blorp_shader_type shader_type; enum blorp_shader_pipeline shader_pipeline; - enum intel_measure_snapshot_type snapshot_type; }; +enum intel_measure_snapshot_type +blorp_op_to_intel_measure_snapshot(enum blorp_op op); + +const char *blorp_op_to_name(enum blorp_op op); + void blorp_params_init(struct blorp_params *params); struct brw_blorp_base_key diff --git a/src/intel/vulkan/genX_blorp_exec.c b/src/intel/vulkan/genX_blorp_exec.c index fb038e7..9409941 100644 --- a/src/intel/vulkan/genX_blorp_exec.c +++ b/src/intel/vulkan/genX_blorp_exec.c @@ -42,7 +42,7 @@ static void blorp_measure_start(struct blorp_batch *_batch, struct anv_cmd_buffer *cmd_buffer = _batch->driver_batch; trace_intel_begin_blorp(&cmd_buffer->trace); anv_measure_snapshot(cmd_buffer, - params->snapshot_type, + blorp_op_to_intel_measure_snapshot(params->op), NULL, 0); } diff --git a/src/intel/vulkan_hasvk/genX_blorp_exec.c b/src/intel/vulkan_hasvk/genX_blorp_exec.c index 40582ab..f86ef97 100644 --- a/src/intel/vulkan_hasvk/genX_blorp_exec.c +++ b/src/intel/vulkan_hasvk/genX_blorp_exec.c @@ -42,7 +42,7 @@ static void blorp_measure_start(struct blorp_batch *_batch, struct anv_cmd_buffer *cmd_buffer = _batch->driver_batch; trace_intel_begin_blorp(&cmd_buffer->trace); anv_measure_snapshot(cmd_buffer, - params->snapshot_type, + blorp_op_to_intel_measure_snapshot(params->op), NULL, 0); } -- 2.7.4