[Mesa-dev] [PATCH 06/36] i965/blorp: Create the isl_surf up-front

Pohjolainen, Topi topi.pohjolainen at intel.com
Thu Jun 30 05:41:33 UTC 2016


On Wed, Jun 29, 2016 at 05:37:25PM -0700, Jason Ekstrand wrote:
> ---
>  src/mesa/drivers/dri/i965/brw_blorp.c | 25 ++++++++++++++-----------
>  src/mesa/drivers/dri/i965/brw_blorp.h |  5 +++++
>  2 files changed, 19 insertions(+), 11 deletions(-)

Patches five and six are:

Reviewed-by: Topi Pohjolainen <topi.pohjolainen at intel.com>

> 
> diff --git a/src/mesa/drivers/dri/i965/brw_blorp.c b/src/mesa/drivers/dri/i965/brw_blorp.c
> index 8e36080..c934913 100644
> --- a/src/mesa/drivers/dri/i965/brw_blorp.c
> +++ b/src/mesa/drivers/dri/i965/brw_blorp.c
> @@ -51,6 +51,16 @@ brw_blorp_surface_info_init(struct brw_context *brw,
>     intel_miptree_check_level_layer(mt, level, layer);
>  
>     info->mt = mt;
> +
> +   intel_miptree_get_isl_surf(brw, mt, &info->surf);
> +
> +   if (mt->mcs_mt) {
> +      intel_miptree_get_aux_isl_surf(brw, mt, &info->aux_surf,
> +                                     &info->aux_usage);
> +   } else {
> +      info->aux_usage = ISL_AUX_USAGE_NONE;
> +   }
> +
>     info->level = level;
>     info->layer = layer;
>     info->width = minify(mt->physical_width0, level - mt->first_level);
> @@ -282,8 +292,7 @@ brw_blorp_emit_surface_state(struct brw_context *brw,
>  {
>     const struct surface_state_info ss_info = surface_state_infos[brw->gen];
>  
> -   struct isl_surf surf;
> -   intel_miptree_get_isl_surf(brw, surface->mt, &surf);
> +   struct isl_surf surf = surface->surf;
>  
>     /* Stomp surface dimensions and tiling (if needed) with info from blorp */
>     surf.dim = ISL_SURF_DIM_2D;
> @@ -326,16 +335,10 @@ brw_blorp_emit_surface_state(struct brw_context *brw,
>  
>     union isl_color_value clear_color = { .u32 = { 0, 0, 0, 0 } };
>  
> -   struct isl_surf *aux_surf = NULL, aux_surf_s;
> +   const struct isl_surf *aux_surf = NULL;
>     uint64_t aux_offset = 0;
> -   enum isl_aux_usage aux_usage = ISL_AUX_USAGE_NONE;
>     if (surface->mt->mcs_mt) {
> -      /* We should probably to similar stomping to above but most of the aux
> -       * surf gets ignored when we fill out the surface state anyway so
> -       * there's no point.
> -       */
> -      intel_miptree_get_aux_isl_surf(brw, surface->mt, &aux_surf_s, &aux_usage);
> -      aux_surf = &aux_surf_s;
> +      aux_surf = &surface->aux_surf;
>        assert(surface->mt->mcs_mt->offset == 0);
>        aux_offset = surface->mt->mcs_mt->bo->offset64;
>  
> @@ -373,7 +376,7 @@ brw_blorp_emit_surface_state(struct brw_context *brw,
>  
>     isl_surf_fill_state(&brw->isl_dev, dw, .surf = &surf, .view = &view,
>                         .address = surface->mt->bo->offset64 + offset,
> -                       .aux_surf = aux_surf, .aux_usage = aux_usage,
> +                       .aux_surf = aux_surf, .aux_usage = surface->aux_usage,
>                         .aux_address = aux_offset,
>                         .mocs = mocs, .clear_color = clear_color,
>                         .x_offset_sa = tile_x, .y_offset_sa = tile_y);
> diff --git a/src/mesa/drivers/dri/i965/brw_blorp.h b/src/mesa/drivers/dri/i965/brw_blorp.h
> index bacdecb..0c5b7de 100644
> --- a/src/mesa/drivers/dri/i965/brw_blorp.h
> +++ b/src/mesa/drivers/dri/i965/brw_blorp.h
> @@ -71,6 +71,11 @@ struct brw_blorp_surface_info
>  {
>     struct intel_mipmap_tree *mt;
>  
> +   struct isl_surf surf;
> +
> +   struct isl_surf aux_surf;
> +   enum isl_aux_usage aux_usage;
> +
>     /**
>      * The miplevel to use.
>      */
> -- 
> 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