[Mesa-dev] [PATCH 24/26] i965: Disable aux buffers with non-compatible copies

Pohjolainen, Topi topi.pohjolainen at gmail.com
Mon Oct 31 20:21:42 UTC 2016


On Mon, Oct 31, 2016 at 11:35:36AM -0700, Jason Ekstrand wrote:
>    Instead, I think we just want to start using my "CCS-correct copy
>    patches"

I agree.

> 
>    On Tue, Oct 11, 2016 at 12:26 PM, Topi Pohjolainen
>    <[1]topi.pohjolainen at gmail.com> wrote:
> 
>      Signed-off-by: Topi Pohjolainen <[2]topi.pohjolainen at intel.com>
>      ---
>       src/intel/blorp/blorp.h               |  2 ++
>       src/intel/blorp/blorp_blit.c          |  6 ++++++
>       src/mesa/drivers/dri/i965/brw_blorp.c | 25
>      ++++++++++++++++++++-----
>       3 files changed, 28 insertions(+), 5 deletions(-)
>      diff --git a/src/intel/blorp/blorp.h b/src/intel/blorp/blorp.h
>      index f69e99e..721322c 100644
>      --- a/src/intel/blorp/blorp.h
>      +++ b/src/intel/blorp/blorp.h
>      @@ -94,6 +94,8 @@ struct blorp_surf
>          union isl_color_value clear_color;
>       };
>      +bool blorp_copy_needs_format_override(enum isl_format fmt);
>      +
>       void
>       blorp_blit(struct blorp_batch *batch,
>                  const struct blorp_surf *src_surf,
>      diff --git a/src/intel/blorp/blorp_blit.c
>      b/src/intel/blorp/blorp_blit.c
>      index 0c3ee72..bbeabd9 100644
>      --- a/src/intel/blorp/blorp_blit.c
>      +++ b/src/intel/blorp/blorp_blit.c
>      @@ -1742,6 +1742,12 @@ get_copy_format_for_bpb(unsigned bpb)
>          }
>       }
>      +bool
>      +blorp_copy_needs_format_override(enum isl_format fmt)
>      +{
>      +   return fmt != get_copy_format_for_bpb(isl_
>      format_get_layout(fmt)->bpb);
>      +}
>      +
>       static void
>       surf_convert_to_uncompressed(const struct isl_device *isl_dev,
>                                    struct brw_blorp_surface_info *info,
>      diff --git a/src/mesa/drivers/dri/i965/brw_blorp.c
>      b/src/mesa/drivers/dri/i965/brw_blorp.c
>      index d937c5c..4e3359c 100644
>      --- a/src/mesa/drivers/dri/i965/brw_blorp.c
>      +++ b/src/mesa/drivers/dri/i965/brw_blorp.c
>      @@ -407,12 +407,18 @@ brw_blorp_copy_miptrees(struct brw_context
>      *brw,
>                               unsigned dst_x, unsigned dst_y,
>                               unsigned src_width, unsigned src_height)
>       {
>      -   /* Get ready to blit.  This includes depth resolving the src and
>      dst
>      -    * buffers if necessary.  Note: it's not necessary to do a color
>      resolve on
>      -    * the destination buffer because we use the standard render
>      path to render
>      -    * to destination color buffers, and the standard render path is
>      -    * fast-color-aware.
>      +   /* Get ready to blit.  This includes color/depth resolving the
>      src and dst
>      +    * buffers if necessary.
>           */
>      +   const enum isl_format dst_format =
>      +      translate_tex_format(brw, dst_mt->format, false);
>      +   const bool disable_dst_aux =
>      +      dst_mt->mcs_mt && intel_miptree_is_lossless_compressed(brw,
>      dst_mt) &&
>      +      blorp_copy_needs_format_override(dst_format);
>      +
>      +   if (disable_dst_aux)
>      +      intel_miptree_resolve_color(brw, dst_mt, dst_level,
>      dst_layer, 0);
>      +
>          intel_miptree_resolve_color(brw, src_mt, src_level, src_layer,
>                                      INTEL_MIPTREE_IGNORE_CCS_E);
>          intel_miptree_slice_resolve_depth(brw, src_mt, src_level,
>      src_layer);
>      @@ -437,6 +443,15 @@ brw_blorp_copy_miptrees(struct brw_context
>      *brw,
>          blorp_surf_for_miptree(brw, &dst_surf, dst_mt, true,
>                                 &dst_level, dst_layer, &tmp_surfs[2]);
>      +   /* Copy uses fixed formats that are guaranteed to agree with
>      real surface
>      +    * formats only with respect to size. Semantics may differ which
>      will
>      +    * confuse the hardware if any compression scheme is used.
>      Therefore the
>      +    * copy is performed target compression disabled unless the real
>      format
>      +    * matches exactly the fixed copy format.
>      +    */
>      +   if (disable_dst_aux)
>      +      dst_surf.aux_usage = ISL_AUX_USAGE_NONE;
>      +
>          struct blorp_batch batch;
>          blorp_batch_init(&brw->blorp, &batch, brw);
>          blorp_copy(&batch, &src_surf, src_level, src_layer,
>      --
>      2.5.5
>      _______________________________________________
>      mesa-dev mailing list
>      [3]mesa-dev at lists.freedesktop.org
>      [4]https://lists.freedesktop.org/mailman/listinfo/mesa-dev
> 
> References
> 
>    1. mailto:topi.pohjolainen at gmail.com
>    2. mailto:topi.pohjolainen at intel.com
>    3. mailto:mesa-dev at lists.freedesktop.org
>    4. https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list