From: Topi Pohjolainen Date: Fri, 26 Aug 2016 15:44:18 +0000 (+0300) Subject: intel/blorp: Add plumbing for setting color clear layer count X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=a1c7de09dc2b00cc990903ebee52228315e5d4e5;p=mesa.git intel/blorp: Add plumbing for setting color clear layer count Signed-off-by: Topi Pohjolainen Reviewed-by: Jason Ekstrand --- diff --git a/src/intel/blorp/blorp.h b/src/intel/blorp/blorp.h index 12f18332883..238e7c786ba 100644 --- a/src/intel/blorp/blorp.h +++ b/src/intel/blorp/blorp.h @@ -110,14 +110,14 @@ blorp_blit(struct blorp_batch *batch, void blorp_fast_clear(struct blorp_batch *batch, - const struct blorp_surf *surf, - uint32_t level, uint32_t layer, enum isl_format format, + const struct blorp_surf *surf, enum isl_format format, + uint32_t level, uint32_t start_layer, uint32_t num_layers, uint32_t x0, uint32_t y0, uint32_t x1, uint32_t y1); void blorp_clear(struct blorp_batch *batch, const struct blorp_surf *surf, - uint32_t level, uint32_t layer, + uint32_t level, uint32_t start_layer, uint32_t num_layers, uint32_t x0, uint32_t y0, uint32_t x1, uint32_t y1, enum isl_format format, union isl_color_value clear_color, bool color_write_disable[4]); diff --git a/src/intel/blorp/blorp_clear.c b/src/intel/blorp/blorp_clear.c index 831c8ed0a6e..cba48234f96 100644 --- a/src/intel/blorp/blorp_clear.c +++ b/src/intel/blorp/blorp_clear.c @@ -208,12 +208,13 @@ get_fast_clear_rect(const struct isl_device *dev, void blorp_fast_clear(struct blorp_batch *batch, - const struct blorp_surf *surf, - uint32_t level, uint32_t layer, enum isl_format format, + const struct blorp_surf *surf, enum isl_format format, + uint32_t level, uint32_t start_layer, uint32_t num_layers, uint32_t x0, uint32_t y0, uint32_t x1, uint32_t y1) { struct blorp_params params; blorp_params_init(¶ms); + params.num_layers = num_layers; params.x0 = x0; params.y0 = y0; @@ -228,8 +229,8 @@ blorp_fast_clear(struct blorp_batch *batch, blorp_params_get_clear_kernel(batch->blorp, ¶ms, true); - brw_blorp_surface_info_init(batch->blorp, ¶ms.dst, surf, level, layer, - format, true); + brw_blorp_surface_info_init(batch->blorp, ¶ms.dst, surf, level, + start_layer, format, true); batch->blorp->exec(batch, ¶ms); } @@ -238,13 +239,14 @@ blorp_fast_clear(struct blorp_batch *batch, void blorp_clear(struct blorp_batch *batch, const struct blorp_surf *surf, - uint32_t level, uint32_t layer, + uint32_t level, uint32_t start_layer, uint32_t num_layers, uint32_t x0, uint32_t y0, uint32_t x1, uint32_t y1, enum isl_format format, union isl_color_value clear_color, bool color_write_disable[4]) { struct blorp_params params; blorp_params_init(¶ms); + params.num_layers = num_layers; params.x0 = x0; params.y0 = y0; @@ -276,8 +278,8 @@ blorp_clear(struct blorp_batch *batch, blorp_params_get_clear_kernel(batch->blorp, ¶ms, use_simd16_replicated_data); - brw_blorp_surface_info_init(batch->blorp, ¶ms.dst, surf, level, layer, - format, true); + brw_blorp_surface_info_init(batch->blorp, ¶ms.dst, surf, level, + start_layer, format, true); batch->blorp->exec(batch, ¶ms); } diff --git a/src/mesa/drivers/dri/i965/brw_blorp.c b/src/mesa/drivers/dri/i965/brw_blorp.c index fdaf4293c19..dc2be1e72e0 100644 --- a/src/mesa/drivers/dri/i965/brw_blorp.c +++ b/src/mesa/drivers/dri/i965/brw_blorp.c @@ -735,9 +735,9 @@ do_single_blorp_clear(struct brw_context *brw, struct gl_framebuffer *fb, struct blorp_batch batch; blorp_batch_init(&brw->blorp, &batch, brw); - blorp_fast_clear(&batch, &surf, level, layer, + blorp_fast_clear(&batch, &surf, (enum isl_format)brw->render_target_format[format], - x0, y0, x1, y1); + level, layer, 1, x0, y0, x1, y1); blorp_batch_finish(&batch); /* Now that the fast clear has occurred, put the buffer in @@ -754,7 +754,7 @@ do_single_blorp_clear(struct brw_context *brw, struct gl_framebuffer *fb, struct blorp_batch batch; blorp_batch_init(&brw->blorp, &batch, brw); - blorp_clear(&batch, &surf, level, layer, x0, y0, x1, y1, + blorp_clear(&batch, &surf, level, layer, 1, x0, y0, x1, y1, (enum isl_format)brw->render_target_format[format], clear_color, color_write_disable); blorp_batch_finish(&batch);