On 17-01-05 17:55:15, Topi Pohjolainen Topi Pohjolainen wrote:
On Wed, Jan 04, 2017 at 06:36:05PM -0800, Ben Widawsky wrote:
On 17-01-04 10:41:58, Topi Pohjolainen Topi Pohjolainen wrote:
> On Mon, Jan 02, 2017 at 06:37:22PM -0800, Ben Widawsky wrote:
> > v2: Try to keep the assert as recommended by Topi. This requires
> > modifying the num_samples check to be <= 1 because internally created
> > buffers set num_samples = 0.
> >
> > Cc: Topi Pohjolainen <topi.pohjolai...@intel.com>
> > Signed-off-by: Ben Widawsky <b...@bwidawsk.net>
> > Acked-by: Daniel Stone <dani...@collabora.com>
> > ---
> >  src/mesa/drivers/dri/i965/intel_mipmap_tree.c | 16 +++++++++-------
> >  1 file changed, 9 insertions(+), 7 deletions(-)
> >
> > diff --git a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c 
b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
> > index 749d346386..6c34b302e1 100644
> > --- a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
> > +++ b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
> > @@ -157,7 +157,7 @@ intel_miptree_supports_non_msrt_fast_clear(struct 
brw_context *brw,
> >     if (mt->aux_disable & INTEL_AUX_DISABLE_MCS)
> >        return false;
> >
> > -   if (mt->is_scanout)
> > +   if (mt->is_scanout && mt->msaa_layout != INTEL_MSAA_LAYOUT_CMS)
> >        return false;
> >
> >     /* This function applies only to non-multisampled render targets. */
> > @@ -526,8 +526,12 @@ intel_miptree_create_layout(struct brw_context *brw,
> >        layout_flags |= MIPTREE_LAYOUT_FORCE_HALIGN16;
> >     } else {
> >        const UNUSED bool is_lossless_compressed_aux =
> > -         brw->gen >= 9 && num_samples == 1 &&
> > -         mt->format == MESA_FORMAT_R_UINT32;
> > +         brw->gen >= 9 &&
> > +         /* Is lossless compressed texture */
> > +         ((num_samples == 1 && mt->format == MESA_FORMAT_R_UINT32) ||
> > +          /* Is lossless compressed scanout */
>
> Does MIPTREE_LAYOUT_FOR_SCANOUT find its way here?
>

Yes? How would you like it, assert? I think it should be fine to add this.

I was about to suggest this instead:

       const UNUSED bool is_lossless_compressed_tex_aux =
          num_samples == 1 && mt->format == MESA_FORMAT_R_UINT32;
       const UNUSED bool is_lossless_compressed_scanout_aux =
          (layout_flags & MIPTREE_LAYOUT_FOR_SCANOUT) && num_samples == 0 &&
          (mt->format == MESA_FORMAT_B8G8R8X8_UNORM ||
           mt->format == MESA_FORMAT_R8G8B8X8_UNORM);
       const UNUSED bool is_lossless_compressed_aux =
          brw->gen >= 9 &&
          (is_lossless_compressed_tex_aux ||
           is_lossless_compressed_scanout_aux);


But then I realized that this already existing is_lossless_compressed_aux
logic is dead code. We don't currently allocate miptree for mcs_buf at all.
So would you mind adding a small patch removing the existing before adding
the scanout assert? Sorry for the churn :(


Oops. Sure.


> > +         (num_samples == 0 && (mt->format == MESA_FORMAT_B8G8R8X8_UNORM ||
> > +                               mt->format == MESA_FORMAT_R8G8B8X8_UNORM)));
> >
> >        /* For now, nothing else has this requirement */
> >        assert(is_lossless_compressed_aux ||
> > @@ -752,11 +756,9 @@ intel_miptree_create(struct brw_context *brw,
> >         * resolves.
> >         */
> >        const bool lossless_compression_disabled = INTEL_DEBUG & 
DEBUG_NO_RBC;
> > -      assert(!mt->is_scanout);
> >        const bool is_lossless_compressed =
> >           unlikely(!lossless_compression_disabled) &&
> > -         brw->gen >= 9 && !mt->is_scanout &&
> > -         intel_miptree_supports_lossless_compressed(brw, mt);
> > +         brw->gen >= 9 && intel_miptree_supports_lossless_compressed(brw, 
mt);
> >
> >        if (is_lossless_compressed) {
> >           intel_miptree_alloc_non_msrt_mcs(brw, mt, is_lossless_compressed);
> > @@ -1058,7 +1060,7 @@ intel_miptree_release(struct intel_mipmap_tree **mt)
> >        intel_miptree_release(&(*mt)->stencil_mt);
> >        intel_miptree_release(&(*mt)->r8stencil_mt);
> >        intel_miptree_hiz_buffer_free((*mt)->hiz_buf);
> > -      if ((*mt)->mcs_buf && !(*mt)->is_scanout) {
> > +      if ((*mt)->mcs_buf) {
> >           drm_intel_bo_unreference((*mt)->mcs_buf->bo);
> >           free((*mt)->mcs_buf);
> >        }
> > --
> > 2.11.0
> >
> > _______________________________________________
> > mesa-dev mailing list
> > mesa-dev@lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/mesa-dev
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to