[Mesa-dev] [v2 03/19] i965: Don't try to create aux buffer for non-msrt aux-buffer
Ben Widawsky
ben at bwidawsk.net
Fri Feb 12 18:00:57 UTC 2016
On Fri, Feb 12, 2016 at 09:24:42AM +0200, Pohjolainen, Topi wrote:
> On Thu, Feb 11, 2016 at 01:41:47PM -0800, Ben Widawsky wrote:
> > On Thu, Feb 11, 2016 at 08:33:56PM +0200, Topi Pohjolainen wrote:
> > > In addition to simply calling miptree_create() the higher level
> > > call intel_miptree_create() also considers if the buffer should
> > > be associated with an auxiliary buffer based on the given format.
> > >
> > > Here we are allocating an auxiliary buffer which in turn has such
> > > format that would mislead intel_miptree_create_layout() later on
> > > to try to associate the auxiliary buffer with an auxiliary buffer.
> > > To prevent this the actual buffer creation logic was split out
> > > into its own function. Lets invoke that instead.
> > >
> > > v2 (Ben): Do not signal msaa layout with explicit argument but
> > > using layout_flags instead.
> > >
> > > Signed-off-by: Topi Pohjolainen <topi.pohjolainen at intel.com>
> > > ---
> > > src/mesa/drivers/dri/i965/intel_mipmap_tree.c | 20 ++++++++++----------
> > > 1 file changed, 10 insertions(+), 10 deletions(-)
> > >
> > > diff --git a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
> > > index e8b3116..e1cf15b 100644
> > > --- a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
> > > +++ b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
> > > @@ -1541,16 +1541,16 @@ intel_miptree_alloc_non_msrt_mcs(struct brw_context *brw,
> > > if (brw->gen >= 8) {
> > > layout_flags |= MIPTREE_LAYOUT_FORCE_HALIGN16;
> > > }
> > > - mt->mcs_mt = intel_miptree_create(brw,
> > > - mt->target,
> > > - format,
> > > - mt->first_level,
> > > - mt->last_level,
> > > - mcs_width,
> > > - mcs_height,
> > > - mt->logical_depth0,
> > > - 0 /* num_samples */,
> > > - layout_flags);
> > > + mt->mcs_mt = miptree_create(brw,
> > > + mt->target,
> > > + format,
> > > + mt->first_level,
> > > + mt->last_level,
> > > + mcs_width,
> > > + mcs_height,
> > > + mt->logical_depth0,
> > > + 0 /* num_samples */,
> > > + layout_flags);
> > >
> > > return mt->mcs_mt;
> > > }
> >
> > Perhaps I am missing something here, but don't you need to have
> > mt->fast_clear_state = INTEL_FAST_CLEAR_STATE_RESOLVED; ?
>
> You are correct that it gets dropped - but it gets dropped for auxiliary
> miptree where it doesn't make any difference. Fast clear is tracked in the
> parent miptree and it's fast_clear_state is set as before. I toyed earlier
> with the idea of having "lighter, needed members only" data type for
> auxiliary buffers but didn't pursue that after all.
Sounds like you thought it through, and tested it :-)
Reviewed-by: Ben Widawsky <benjamin.widawsky at intel.com>
More information about the mesa-dev
mailing list