diff options
author | Sagar Ghuge <[email protected]> | 2019-10-15 11:15:22 -0700 |
---|---|---|
committer | Sagar Ghuge <[email protected]> | 2019-10-29 14:46:15 -0700 |
commit | 53d472df24d4bc05359120df0615321318922d6d (patch) | |
tree | 5c0336d9022c8bb991f627955b7efdcfa90cc2f0 | |
parent | ce208be2d8793029c5abbde51c972ad1f4166701 (diff) |
intel/blorp: Add helper function for stencil buffer resolve
On Gen12+, Stencil buffer's lossless compression should be resolved
with WM_HZ_OP packet.
Signed-off-by: Sagar Ghuge <[email protected]>
Reviewed-by: Nanley Chery <[email protected]>
-rw-r--r-- | src/intel/blorp/blorp.c | 30 | ||||
-rw-r--r-- | src/intel/blorp/blorp.h | 4 |
2 files changed, 34 insertions, 0 deletions
diff --git a/src/intel/blorp/blorp.c b/src/intel/blorp/blorp.c index 086bfb1c596..f93662ccae8 100644 --- a/src/intel/blorp/blorp.c +++ b/src/intel/blorp/blorp.c @@ -366,3 +366,33 @@ blorp_hiz_op(struct blorp_batch *batch, struct blorp_surf *surf, batch->blorp->exec(batch, ¶ms); } } + +void +blorp_hiz_stencil_op(struct blorp_batch *batch, struct blorp_surf *stencil, + uint32_t level, uint32_t start_layer, + uint32_t num_layers, enum isl_aux_op op) +{ + struct blorp_params params; + blorp_params_init(¶ms); + + params.hiz_op = op; + params.full_surface_hiz_op = true; + + for (uint32_t a = 0; a < num_layers; a++) { + const uint32_t layer = start_layer + a; + + brw_blorp_surface_info_init(batch->blorp, ¶ms.stencil, stencil, level, + layer, stencil->surf->format, true); + params.x1 = minify(params.stencil.surf.logical_level0_px.width, + params.stencil.view.base_level); + params.y1 = minify(params.stencil.surf.logical_level0_px.height, + params.stencil.view.base_level); + params.dst.surf.samples = params.stencil.surf.samples; + params.dst.surf.logical_level0_px = + params.stencil.surf.logical_level0_px; + params.dst.view = params.stencil.view; + params.num_samples = params.stencil.surf.samples; + + batch->blorp->exec(batch, ¶ms); + } +} diff --git a/src/intel/blorp/blorp.h b/src/intel/blorp/blorp.h index ead261b6230..afee0a96a8c 100644 --- a/src/intel/blorp/blorp.h +++ b/src/intel/blorp/blorp.h @@ -246,6 +246,10 @@ blorp_hiz_op(struct blorp_batch *batch, struct blorp_surf *surf, uint32_t level, uint32_t start_layer, uint32_t num_layers, enum isl_aux_op op); +void +blorp_hiz_stencil_op(struct blorp_batch *batch, struct blorp_surf *stencil, + uint32_t level, uint32_t start_layer, + uint32_t num_layers, enum isl_aux_op op); #ifdef __cplusplus } /* end extern "C" */ #endif /* __cplusplus */ |