[Mesa-dev] [PATCH 10/14] intel/blorp: Drop blorp_resolve_ccs_attachment
Nanley Chery
nanleychery at gmail.com
Thu Nov 23 00:18:09 UTC 2017
On Mon, Nov 13, 2017 at 08:12:50AM -0800, Jason Ekstrand wrote:
> The only reason why we needed that version was because the Vulkan driver
> needed to be able to create the surface states so it could handle
> indirect clear colors. Now that blorp handles them natively, there's no
> need for the extra entrypoint.
> ---
> src/intel/blorp/blorp.h | 11 -------
> src/intel/blorp/blorp_clear.c | 70 +++++++++++++------------------------------
> 2 files changed, 20 insertions(+), 61 deletions(-)
>
This patch is
Reviewed-by: Nanley Chery <nanley.g.chery at intel.com>
> diff --git a/src/intel/blorp/blorp.h b/src/intel/blorp/blorp.h
> index 690e65f..a95b6a7 100644
> --- a/src/intel/blorp/blorp.h
> +++ b/src/intel/blorp/blorp.h
> @@ -207,17 +207,6 @@ blorp_ccs_resolve(struct blorp_batch *batch,
> enum isl_format format,
> enum blorp_fast_clear_op resolve_op);
>
> -/* Resolves subresources of the image subresource range specified in the
> - * binding table.
> - */
> -void
> -blorp_ccs_resolve_attachment(struct blorp_batch *batch,
> - const uint32_t binding_table_offset,
> - struct blorp_surf * const surf,
> - const uint32_t level, const uint32_t num_layers,
> - const enum isl_format format,
> - const enum blorp_fast_clear_op resolve_op);
> -
> void
> blorp_mcs_partial_resolve(struct blorp_batch *batch,
> struct blorp_surf *surf,
> diff --git a/src/intel/blorp/blorp_clear.c b/src/intel/blorp/blorp_clear.c
> index 56cc3dd..8e7bc9f 100644
> --- a/src/intel/blorp/blorp_clear.c
> +++ b/src/intel/blorp/blorp_clear.c
> @@ -715,17 +715,18 @@ blorp_clear_attachments(struct blorp_batch *batch,
> batch->blorp->exec(batch, ¶ms);
> }
>
> -static void
> -prepare_ccs_resolve(struct blorp_batch * const batch,
> - struct blorp_params * const params,
> - const struct blorp_surf * const surf,
> - const uint32_t level, const uint32_t layer,
> - const enum isl_format format,
> - const enum blorp_fast_clear_op resolve_op)
> +void
> +blorp_ccs_resolve(struct blorp_batch *batch,
> + struct blorp_surf *surf, uint32_t level,
> + uint32_t start_layer, uint32_t num_layers,
> + enum isl_format format,
> + enum blorp_fast_clear_op resolve_op)
> {
> - blorp_params_init(params);
> - brw_blorp_surface_info_init(batch->blorp, ¶ms->dst, surf,
> - level, layer, format, true);
> + struct blorp_params params;
> +
> + blorp_params_init(¶ms);
> + brw_blorp_surface_info_init(batch->blorp, ¶ms.dst, surf,
> + level, start_layer, format, true);
>
> /* From the Ivy Bridge PRM, Vol2 Part1 11.9 "Render Target Resolve":
> *
> @@ -737,7 +738,7 @@ prepare_ccs_resolve(struct blorp_batch * const batch,
> * multiply by 8 and 16. On Sky Lake, we multiply by 8.
> */
> const struct isl_format_layout *aux_fmtl =
> - isl_format_get_layout(params->dst.aux_surf.format);
> + isl_format_get_layout(params.dst.aux_surf.format);
> assert(aux_fmtl->txc == ISL_TXC_CCS);
>
> unsigned x_scaledown, y_scaledown;
> @@ -751,11 +752,11 @@ prepare_ccs_resolve(struct blorp_batch * const batch,
> x_scaledown = aux_fmtl->bw / 2;
> y_scaledown = aux_fmtl->bh / 2;
> }
> - params->x0 = params->y0 = 0;
> - params->x1 = minify(params->dst.aux_surf.logical_level0_px.width, level);
> - params->y1 = minify(params->dst.aux_surf.logical_level0_px.height, level);
> - params->x1 = ALIGN(params->x1, x_scaledown) / x_scaledown;
> - params->y1 = ALIGN(params->y1, y_scaledown) / y_scaledown;
> + params.x0 = params.y0 = 0;
> + params.x1 = minify(params.dst.aux_surf.logical_level0_px.width, level);
> + params.y1 = minify(params.dst.aux_surf.logical_level0_px.height, level);
> + params.x1 = ALIGN(params.x1, x_scaledown) / x_scaledown;
> + params.y1 = ALIGN(params.y1, y_scaledown) / y_scaledown;
>
> if (batch->blorp->isl_dev->info->gen >= 9) {
> assert(resolve_op == BLORP_FAST_CLEAR_OP_RESOLVE_FULL ||
> @@ -764,7 +765,8 @@ prepare_ccs_resolve(struct blorp_batch * const batch,
> /* Broadwell and earlier do not have a partial resolve */
> assert(resolve_op == BLORP_FAST_CLEAR_OP_RESOLVE_FULL);
> }
> - params->fast_clear_op = resolve_op;
> + params.fast_clear_op = resolve_op;
> + params.num_layers = num_layers;
>
> /* Note: there is no need to initialize push constants because it doesn't
> * matter what data gets dispatched to the render target. However, we must
> @@ -772,40 +774,8 @@ prepare_ccs_resolve(struct blorp_batch * const batch,
> * color" message.
> */
>
> - if (!blorp_params_get_clear_kernel(batch->blorp, params, true))
> + if (!blorp_params_get_clear_kernel(batch->blorp, ¶ms, true))
> return;
> -}
> -
> -void
> -blorp_ccs_resolve(struct blorp_batch *batch,
> - struct blorp_surf *surf, uint32_t level,
> - uint32_t start_layer, uint32_t num_layers,
> - enum isl_format format,
> - enum blorp_fast_clear_op resolve_op)
> -{
> - struct blorp_params params;
> -
> - prepare_ccs_resolve(batch, ¶ms, surf, level, start_layer,
> - format, resolve_op);
> - params.num_layers = num_layers;
> -
> - batch->blorp->exec(batch, ¶ms);
> -}
> -
> -void
> -blorp_ccs_resolve_attachment(struct blorp_batch *batch,
> - const uint32_t binding_table_offset,
> - struct blorp_surf * const surf,
> - const uint32_t level, const uint32_t num_layers,
> - const enum isl_format format,
> - const enum blorp_fast_clear_op resolve_op)
> -{
> - struct blorp_params params;
> -
> - prepare_ccs_resolve(batch, ¶ms, surf, level, 0, format, resolve_op);
> - params.use_pre_baked_binding_table = true;
> - params.pre_baked_binding_table_offset = binding_table_offset;
> - params.num_layers = num_layers;
>
> batch->blorp->exec(batch, ¶ms);
> }
> --
> 2.5.0.400.gff86faf
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list