[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, &params);
>  }
>  
> -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, &params->dst, surf,
> -                               level, layer, format, true);
> +   struct blorp_params params;
> +
> +   blorp_params_init(&params);
> +   brw_blorp_surface_info_init(batch->blorp, &params.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, &params, 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, &params, surf, level, start_layer,
> -                       format, resolve_op);
> -   params.num_layers = num_layers;
> -
> -   batch->blorp->exec(batch, &params);
> -}
> -
> -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, &params, 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, &params);
>  }
> -- 
> 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