[Mesa-dev] [PATCH] i965/miptree: Fix can_blit_slice()

Nanley Chery nanleychery at gmail.com
Fri Jul 27 22:42:28 UTC 2018


On Tue, Jul 24, 2018 at 03:28:09PM +0300, Andres Gomez wrote:
> Hi Nanley,
> 
> I'm observing regressions for SKL and BDW which doesn't seem to be
> solved with this new patch, in git master. Therefore, I've gone ahead
> and reported:
> https://bugs.freedesktop.org/show_bug.cgi?id=107359
> 

Hi Andres,

Thank you for the bug report. It turned out to be a HW issue. I'll send
a fix soon.

-Nanley

> On Mon, 2018-07-23 at 10:17 -0700, Nanley Chery wrote:
> > Satisfy the BLT engine's row pitch limitation on the destination
> > miptree. The destination miptree is untiled, so its row_pitch will be
> > slightly less than or equal to the source miptree's row_pitch. Use the
> > source miptree's row_pitch in can_blit_slice instead of its blt_pitch.
> > 
> > Fixes 0288fe8d0417730bdd5b3477130dd1dc32bdbcd3
> > ("i965/miptree: Use the correct BLT pitch")
> > 
> > Cc: <mesa-stable at lists.freedesktop.org>
> > Reported-by: Dylan Baker <dylan at pnwbakers.com>
> > ---
> >  src/mesa/drivers/dri/i965/intel_mipmap_tree.c | 9 +++++++--
> >  1 file changed, 7 insertions(+), 2 deletions(-)
> > 
> > diff --git a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
> > index a18d5ac3624..d8e823e4826 100644
> > --- a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
> > +++ b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
> > @@ -3544,8 +3544,13 @@ static bool
> >  can_blit_slice(struct intel_mipmap_tree *mt,
> >                 unsigned int level, unsigned int slice)
> >  {
> > -   /* See intel_miptree_blit() for details on the 32k pitch limit. */
> > -   if (intel_miptree_blt_pitch(mt) >= 32768)
> > +   /* The blit destination is untiled, so its row_pitch will be slightly less
> > +    * than or equal to the source's row_pitch. The BLT engine only supports
> > +    * linear row pitches up to but not including 32k.
> > +    *
> > +    * See intel_miptree_blit() for details on the 32k pitch limit.
> > +    */
> > +   if (mt->surf.row_pitch >= 32768)
> >        return false;
> >  
> >     return true;
> -- 
> Br,
> 
> Andres


More information about the mesa-dev mailing list