On Thu, Feb 11, 2016 at 01:48:18PM -0800, Ben Widawsky wrote:
> On Thu, Feb 11, 2016 at 08:33:58PM +0200, Topi Pohjolainen wrote:
> > Signed-off-by: Topi Pohjolainen <topi.pohjolai...@intel.com>
> > ---
> >  src/mesa/drivers/dri/i965/intel_mipmap_tree.c | 26 
> > ++++++++++++++++++++++++++
> >  src/mesa/drivers/dri/i965/intel_mipmap_tree.h |  4 ++++
> >  2 files changed, 30 insertions(+)
> > 
> > diff --git a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c 
> > b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
> > index 5f739d9..31de1ff 100644
> > --- a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
> > +++ b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
> > @@ -266,6 +266,32 @@ intel_miptree_supports_non_msrt_fast_clear(struct 
> > brw_context *brw,
> >        return true;
> >  }
> >  
> > +/* On Gen9 support for color buffer compression was extended to single
> > + * sampled surfaces. This is a helper considering both auxiliary buffer
> > + * type and number of samples telling if the given miptree represents
> > + * the new single sampled case - also called lossless compression.
> > + */
> > +bool
> > +intel_miptree_is_lossless_compressed(const struct brw_context *brw,
> > +                                     const struct intel_mipmap_tree *mt)
> > +{
> > +   /* Only available from Gen9 onwards. */
> > +   if (brw->gen < 9)
> > +      return false;
> > +
> > +   /* Compression always requires auxiliary buffer. */
> > +   if (!mt->mcs_mt)
> > +      return false;
> > +
> > +   /* Single sample compression is represented re-using msaa compression
> > +    * layout type: "Compressed Multisampled Surfaces".
> > +    */
> > +   if (mt->msaa_layout != INTEL_MSAA_LAYOUT_CMS)
> > +      return false;
> > +
> > +   /* And finally distinguish between msaa and single sample case. */
> > +   return mt->num_samples <= 1;
> > +}
> >  
> >  /**
> >   * Determine depth format corresponding to a depth+stencil format,
> > diff --git a/src/mesa/drivers/dri/i965/intel_mipmap_tree.h 
> > b/src/mesa/drivers/dri/i965/intel_mipmap_tree.h
> > index 64f73ea..13d4d7e 100644
> > --- a/src/mesa/drivers/dri/i965/intel_mipmap_tree.h
> > +++ b/src/mesa/drivers/dri/i965/intel_mipmap_tree.h
> > @@ -667,6 +667,10 @@ intel_get_non_msrt_mcs_alignment(struct 
> > intel_mipmap_tree *mt,
> >                                   unsigned *width_px, unsigned *height);
> >  
> >  bool
> > +intel_miptree_is_lossless_compressed(const struct brw_context *brw,
> > +                                     const struct intel_mipmap_tree *mt);
> > +
> > +bool
> >  intel_miptree_alloc_non_msrt_mcs(struct brw_context *brw,
> >                                   struct intel_mipmap_tree *mt);
> >  
> 
> So I take it this was one of the big changes from my feedback earlier. Do you
> prefer this result, or what? I can live with the old thing if you want it.

I think I like this better, it avoids the CSS/CCS confusion. And in principle,
both MCS and CCS_E are about compression, and the fact that hardware
implements them separately only needs to be reflected in surface setup and
color resolve logic. No need to go further.
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to