From b901ff322aaedaa61b0e3ff62f178f8107bcf5ce Mon Sep 17 00:00:00 2001 From: Michael Cheng Date: Thu, 12 Mar 2026 13:18:45 -0700 Subject: [PATCH] intel/blorp: add explicit clear op enums for stencil and linear paths Add dedicated BLORP op enums so clear paths can be represented precisely. This is enum-only groundwork; behavior and trace output are wired in follow-up commits. Signed-off-by: Michael Cheng Reviewed-by: Nanley Chery Part-of: --- src/intel/blorp/blorp.c | 10 ++++++++++ src/intel/blorp/blorp.h | 5 +++++ src/intel/blorp/blorp_priv.h | 5 +++++ src/intel/common/intel_measure.c | 5 +++++ src/intel/common/intel_measure.h | 5 +++++ src/intel/vulkan/genX_blorp_exec.c | 5 +++++ 6 files changed, 35 insertions(+) diff --git a/src/intel/blorp/blorp.c b/src/intel/blorp/blorp.c index 3ff96316785..29405390110 100644 --- a/src/intel/blorp/blorp.c +++ b/src/intel/blorp/blorp.c @@ -37,14 +37,19 @@ blorp_op_to_intel_measure_snapshot(enum blorp_op op) MAP(CCS_COLOR_CLEAR), MAP(CCS_PARTIAL_RESOLVE), MAP(CCS_RESOLVE), + MAP(FAST_STENCIL_CLEAR), MAP(HIZ_AMBIGUATE), MAP(HIZ_CLEAR), + MAP(HIZ_STENCIL_CLEAR), MAP(HIZ_RESOLVE), MAP(HIZ_PARTIAL_RESOLVE), MAP(MCS_AMBIGUATE), MAP(MCS_COLOR_CLEAR), MAP(MCS_PARTIAL_RESOLVE), + MAP(LINEAR_SURFACE_CLEAR), MAP(SLOW_COLOR_CLEAR), + MAP(SLOW_STENCIL_CLEAR), + MAP(SLOW_DEPTH_STENCIL_CLEAR), MAP(SLOW_DEPTH_CLEAR), #undef MAP }; @@ -63,14 +68,19 @@ const char *blorp_op_to_name(enum blorp_op op) MAP(CCS_COLOR_CLEAR), MAP(CCS_PARTIAL_RESOLVE), MAP(CCS_RESOLVE), + MAP(FAST_STENCIL_CLEAR), MAP(HIZ_AMBIGUATE), MAP(HIZ_CLEAR), + MAP(HIZ_STENCIL_CLEAR), MAP(HIZ_RESOLVE), MAP(HIZ_PARTIAL_RESOLVE), MAP(MCS_AMBIGUATE), MAP(MCS_COLOR_CLEAR), MAP(MCS_PARTIAL_RESOLVE), + MAP(LINEAR_SURFACE_CLEAR), MAP(SLOW_COLOR_CLEAR), + MAP(SLOW_STENCIL_CLEAR), + MAP(SLOW_DEPTH_STENCIL_CLEAR), MAP(SLOW_DEPTH_CLEAR), #undef MAP }; diff --git a/src/intel/blorp/blorp.h b/src/intel/blorp/blorp.h index 0ec501a80d4..db3731c151a 100644 --- a/src/intel/blorp/blorp.h +++ b/src/intel/blorp/blorp.h @@ -45,14 +45,19 @@ enum blorp_op { BLORP_OP_CCS_COLOR_CLEAR, BLORP_OP_CCS_PARTIAL_RESOLVE, BLORP_OP_CCS_RESOLVE, + BLORP_OP_FAST_STENCIL_CLEAR, BLORP_OP_HIZ_AMBIGUATE, BLORP_OP_HIZ_CLEAR, + BLORP_OP_HIZ_STENCIL_CLEAR, BLORP_OP_HIZ_RESOLVE, BLORP_OP_HIZ_PARTIAL_RESOLVE, BLORP_OP_MCS_AMBIGUATE, BLORP_OP_MCS_COLOR_CLEAR, BLORP_OP_MCS_PARTIAL_RESOLVE, + BLORP_OP_LINEAR_SURFACE_CLEAR, BLORP_OP_SLOW_COLOR_CLEAR, + BLORP_OP_SLOW_STENCIL_CLEAR, + BLORP_OP_SLOW_DEPTH_STENCIL_CLEAR, BLORP_OP_SLOW_DEPTH_CLEAR, }; diff --git a/src/intel/blorp/blorp_priv.h b/src/intel/blorp/blorp_priv.h index d6343e1ecc5..5155f995444 100644 --- a/src/intel/blorp/blorp_priv.h +++ b/src/intel/blorp/blorp_priv.h @@ -561,13 +561,18 @@ blorp_op_type_is_clear(enum blorp_op op) case BLORP_OP_CCS_COLOR_CLEAR: case BLORP_OP_CCS_PARTIAL_RESOLVE: case BLORP_OP_CCS_RESOLVE: + case BLORP_OP_FAST_STENCIL_CLEAR: case BLORP_OP_HIZ_AMBIGUATE: case BLORP_OP_HIZ_CLEAR: case BLORP_OP_HIZ_RESOLVE: + case BLORP_OP_HIZ_STENCIL_CLEAR: case BLORP_OP_MCS_AMBIGUATE: case BLORP_OP_MCS_COLOR_CLEAR: case BLORP_OP_MCS_PARTIAL_RESOLVE: + case BLORP_OP_LINEAR_SURFACE_CLEAR: case BLORP_OP_SLOW_COLOR_CLEAR: + case BLORP_OP_SLOW_STENCIL_CLEAR: + case BLORP_OP_SLOW_DEPTH_STENCIL_CLEAR: case BLORP_OP_SLOW_DEPTH_CLEAR: return true; default: diff --git a/src/intel/common/intel_measure.c b/src/intel/common/intel_measure.c index 02f5b70cfaa..2f0c8a3cc73 100644 --- a/src/intel/common/intel_measure.c +++ b/src/intel/common/intel_measure.c @@ -240,15 +240,20 @@ intel_measure_snapshot_string(enum intel_measure_snapshot_type type) [INTEL_SNAPSHOT_COMPUTE] = "compute", [INTEL_SNAPSHOT_COPY] = "copy", [INTEL_SNAPSHOT_DRAW] = "draw", + [INTEL_SNAPSHOT_FAST_STENCIL_CLEAR] = "fast stencil clear", [INTEL_SNAPSHOT_HIZ_AMBIGUATE] = "hiz ambiguate", [INTEL_SNAPSHOT_HIZ_CLEAR] = "hiz clear", [INTEL_SNAPSHOT_HIZ_RESOLVE] = "hiz resolve", [INTEL_SNAPSHOT_HIZ_PARTIAL_RESOLVE] = "hiz partial resolve", + [INTEL_SNAPSHOT_HIZ_STENCIL_CLEAR] = "hiz + stencil clear", + [INTEL_SNAPSHOT_LINEAR_SURFACE_CLEAR]= "linear surface clear", [INTEL_SNAPSHOT_MCS_AMBIGUATE] = "mcs ambiguate", [INTEL_SNAPSHOT_MCS_COLOR_CLEAR] = "mcs color clear", [INTEL_SNAPSHOT_MCS_PARTIAL_RESOLVE] = "mcs partial resolve", [INTEL_SNAPSHOT_SLOW_COLOR_CLEAR] = "slow color clear", [INTEL_SNAPSHOT_SLOW_DEPTH_CLEAR] = "slow depth clear", + [INTEL_SNAPSHOT_SLOW_DEPTH_STENCIL_CLEAR] = "slow depth/stencil clear", + [INTEL_SNAPSHOT_SLOW_STENCIL_CLEAR] = "slow stencil clear", [INTEL_SNAPSHOT_SECONDARY_BATCH] = "secondary command buffer", [INTEL_SNAPSHOT_END] = "end", }; diff --git a/src/intel/common/intel_measure.h b/src/intel/common/intel_measure.h index 6638b21c81d..507f2fd9777 100644 --- a/src/intel/common/intel_measure.h +++ b/src/intel/common/intel_measure.h @@ -41,14 +41,19 @@ enum intel_measure_snapshot_type { INTEL_SNAPSHOT_COMPUTE, INTEL_SNAPSHOT_COPY, INTEL_SNAPSHOT_DRAW, + INTEL_SNAPSHOT_FAST_STENCIL_CLEAR, INTEL_SNAPSHOT_HIZ_AMBIGUATE, INTEL_SNAPSHOT_HIZ_CLEAR, INTEL_SNAPSHOT_HIZ_RESOLVE, INTEL_SNAPSHOT_HIZ_PARTIAL_RESOLVE, + INTEL_SNAPSHOT_HIZ_STENCIL_CLEAR, INTEL_SNAPSHOT_MCS_AMBIGUATE, INTEL_SNAPSHOT_MCS_COLOR_CLEAR, INTEL_SNAPSHOT_MCS_PARTIAL_RESOLVE, INTEL_SNAPSHOT_SLOW_COLOR_CLEAR, + INTEL_SNAPSHOT_LINEAR_SURFACE_CLEAR, + INTEL_SNAPSHOT_SLOW_STENCIL_CLEAR, + INTEL_SNAPSHOT_SLOW_DEPTH_STENCIL_CLEAR, INTEL_SNAPSHOT_SLOW_DEPTH_CLEAR, INTEL_SNAPSHOT_SECONDARY_BATCH, INTEL_SNAPSHOT_END, diff --git a/src/intel/vulkan/genX_blorp_exec.c b/src/intel/vulkan/genX_blorp_exec.c index d811e9c4271..410246dcd56 100644 --- a/src/intel/vulkan/genX_blorp_exec.c +++ b/src/intel/vulkan/genX_blorp_exec.c @@ -515,13 +515,18 @@ get_color_aux_op(const struct blorp_params *params) */ case BLORP_OP_HIZ_AMBIGUATE: case BLORP_OP_HIZ_CLEAR: + case BLORP_OP_HIZ_STENCIL_CLEAR: case BLORP_OP_HIZ_RESOLVE: case BLORP_OP_HIZ_PARTIAL_RESOLVE: + case BLORP_OP_FAST_STENCIL_CLEAR: + case BLORP_OP_SLOW_STENCIL_CLEAR: + case BLORP_OP_SLOW_DEPTH_STENCIL_CLEAR: case BLORP_OP_SLOW_DEPTH_CLEAR: assert(params->fast_clear_op == ISL_AUX_OP_NONE); return ISL_AUX_OP_NONE; /* The remaining operations are considered regular draws. */ + case BLORP_OP_LINEAR_SURFACE_CLEAR: case BLORP_OP_SLOW_COLOR_CLEAR: case BLORP_OP_BLIT: case BLORP_OP_COPY: