On Tue, May 22, 2018 at 01:09:18PM +0200, Juan A. Suarez Romero wrote:
> On Thu, 2018-05-03 at 14:22 -0700, Nanley Chery wrote:
> > On Thu, May 03, 2018 at 12:40:49PM -0700, Jason Ekstrand wrote:
> > > Good catch. Rb
> > > 
> > 
> > Thanks!
> > 
> > > On May 3, 2018 12:04:59 Nanley Chery <nanleych...@gmail.com> wrote:
> > > 
> > > > Before this patch, the aux_state was actually AUX_INVALID because the BO
> > > > was never defined. This was fine on single slice miptrees because we
> > > > would fast-clear the resource right after creation. For multi-slice
> > > > miptrees on SKL+ however, this results in undefined behavior when
> > > > accessing a non-base slice. Here's a specific example:
> > > > 
> > > > 1) Fast clear level 0
> > > >   * Undefined CCS_D buffer allocated in "PASS_THROUGH" state.
> > > >   * Level 0 transitions to the CLEAR state.
> > > > 2) Render to level 1
> > > >   * Level 1 may have a 2-bit pattern of 2's.
> > > >   * Rendering with a 2 in the CCS is undefined.
> > > > 
> > > > Cc: <mesa-sta...@lists.freedesktop.org>
> 
> 
> This patch does not apply cleanly in 18.0, so I've resolved the trivial
> conflict:
> 
> 
> https://github.com/Igalia/release-mesa/commit/3b7134c5350df5fcc04b71d9598154bbc6
> 451256
> 

Looks good to me. Thanks for getting this into 18.0.

-Nanley

>       J.A.
> 
> 
> > > > ---
> > > > src/mesa/drivers/dri/i965/intel_mipmap_tree.c | 10 ++++------
> > > > 1 file changed, 4 insertions(+), 6 deletions(-)
> > > > 
> > > > diff --git a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
> > > > b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
> > > > index 377efae32c9..182a896e23a 100644
> > > > --- a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
> > > > +++ b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
> > > > @@ -1806,13 +1806,11 @@ intel_miptree_alloc_ccs(struct brw_context *brw,
> > > >     * A CCS value of 0 indicates that the corresponding block is in the
> > > >     * pass-through state which is what we want.
> > > >     *
> > > > -    * For CCS_D, on the other hand, we don't care as we're about to 
> > > > perform a
> > > > -    * fast-clear operation.  In that case, being hot in caches more 
> > > > useful.
> > > > +    * For CCS_D, do the same thing. On gen9+, this avoids having any 
> > > > undefined
> > > > +    * bits in the aux buffer.
> > > >     */
> > > > -   const uint32_t alloc_flags = mt->aux_usage == ISL_AUX_USAGE_CCS_E ?
> > > > -                                BO_ALLOC_ZEROED : BO_ALLOC_BUSY;
> > > > -   mt->aux_buf = intel_alloc_aux_buffer(brw, "ccs-miptree",
> > > > -                                        &temp_ccs_surf, alloc_flags, 
> > > > mt);
> > > > +   mt->aux_buf = intel_alloc_aux_buffer(brw, "ccs-miptree", 
> > > > &temp_ccs_surf,
> > > > +                                        BO_ALLOC_ZEROED, mt);
> > > >    if (!mt->aux_buf) {
> > > >       free(aux_state);
> > > >       return false;
> > > > --
> > > > 2.16.2
> > > > 
> > > > _______________________________________________
> > > > mesa-dev mailing list
> > > > mesa-dev@lists.freedesktop.org
> > > > https://lists.freedesktop.org/mailman/listinfo/mesa-dev
> > > 
> > > 
> > > 
> > 
> > _______________________________________________
> > mesa-stable mailing list
> > mesa-sta...@lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/mesa-stable
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to