Re: [Mesa-dev] [PATCH] i965/miptree: Fix can_blit_slice()
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: > > Reported-by: Dylan Baker > > --- > > 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 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH] i965/miptree: Fix can_blit_slice()
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 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: > Reported-by: Dylan Baker > --- > 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 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH] i965/miptree: Fix can_blit_slice()
On Mon, Jul 23, 2018 at 08:20:15PM +0100, Chris Wilson wrote: > Quoting Nanley Chery (2018-07-23 18:17:15) > > 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: > > Reported-by: Dylan Baker > > --- > > 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; > > I see the difference, but do we copy the whole slice or a region of it? I think it depends on the caller. -Nanley > -Chris ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH] i965/miptree: Fix can_blit_slice()
Quoting Nanley Chery (2018-07-23 18:17:15) > 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: > Reported-by: Dylan Baker > --- > 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; I see the difference, but do we copy the whole slice or a region of it? -Chris ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
[Mesa-dev] [PATCH] i965/miptree: Fix can_blit_slice()
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: Reported-by: Dylan Baker --- 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; -- 2.18.0 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev