blorp: defined operations for debug purposes

We add a mapping for blorp_op -> intel_snapshot

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Ivan Briano <ivan.briano@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17467>
This commit is contained in:
Lionel Landwerlin 2022-07-01 10:51:39 +03:00 committed by Marge Bot
parent b12d95f513
commit eac5e938c0
8 changed files with 96 additions and 24 deletions

View file

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

View file

@ -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:

View file

@ -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;

View file

@ -2528,7 +2528,7 @@ blorp_blit(struct blorp_batch *batch,
{
struct blorp_params params;
blorp_params_init(&params);
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(&params);
params.snapshot_type = INTEL_SNAPSHOT_COPY;
params.op = BLORP_OP_COPY;
const bool compute = batch->flags & BLORP_BATCH_USE_COMPUTE;
if (compute) {

View file

@ -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(&params);
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(&params);
params.snapshot_type = INTEL_SNAPSHOT_SLOW_DEPTH_CLEAR;
params.op = BLORP_OP_SLOW_DEPTH_CLEAR;
if (!blorp_params_get_clear_kernel(batch, &params, true, false))
return false;
@ -827,7 +827,7 @@ blorp_clear_depth_stencil(struct blorp_batch *batch,
struct blorp_params params;
blorp_params_init(&params);
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(&params);
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(&params);
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(&params.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(&params);
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(&params);
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(&params);
params.snapshot_type = INTEL_SNAPSHOT_CCS_AMBIGUATE;
params.op = BLORP_OP_CCS_AMBIGUATE;
assert(ISL_GFX_VER(batch->blorp->isl_dev) >= 7);

View file

@ -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

View file

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

View file

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