[Mesa-dev] [PATCH] mesa: Fix pixel shader scratch space allocation on Gen9+ platforms.

Kenneth Graunke kenneth at whitecape.org
Tue Nov 8 20:04:21 UTC 2016


On Tuesday, November 8, 2016 11:49:58 AM PST Matt Turner wrote:
> On Tue, Nov 8, 2016 at 10:25 AM, Kenneth Graunke <kenneth at whitecape.org> wrote:
> > We had missed a bit of errata - PS scratch needs to be computed as if
> > there were 4 subslices per slice, rather than 3.
> >
> >                           Skylake      Broxton        Kabylake
> >                       GT1 GT2 GT3 GT4  2x6 3x6  GT1 GT1.5 GT2 GT3 GT4
> > Actual Slices          1   1   2   3    1   1    1    1    1   2   3
> > Total Subslices        3   3   6   9    2   3    2    3    3   6   9
> > Subsl. for PS Scratch  4   4   8   12   4   4    4    4    4   8   12
> >
> > Note that Skylake GT1-3 already worked because we allocated 64 * 9
> > (trying to use a value that would work on GT4, with 9 subslices),
> > and the actual required values were 64 * 4 or 64 * 8.  However, all
> > others (Skylake GT4, Broxton, and Kabylake GT1-4) underallocated,
> > which can lead to scratch writes trashing random process memory,
> > and rendering corruption or GPU hangs.
> >
> > Fixes GPU hangs and rendering corruption on Skylake GT4 in shaders that
> > spill.  Particularly, dEQP-GLES31.functional.ubo.all_per_block_buffers.*
> > now runs successfully with no hangs and renders correctly.  This may
> > fix problems on Broxton and Kabylake as well.
> >
> > Cc: "13.0" <mesa-stable at lists.freedesktop.org>
> > Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
> > ---
> >  src/intel/common/gen_device_info.c | 33 +++++++++++++++++++--------------
> >  1 file changed, 19 insertions(+), 14 deletions(-)
> >
> > diff --git a/src/intel/common/gen_device_info.c b/src/intel/common/gen_device_info.c
> > index 30df0b2..1dc1769 100644
> > --- a/src/intel/common/gen_device_info.c
> > +++ b/src/intel/common/gen_device_info.c
> > @@ -335,7 +335,6 @@ static const struct gen_device_info gen_device_info_chv = {
> >     .max_gs_threads = 336,                           \
> >     .max_tcs_threads = 336,                          \
> >     .max_tes_threads = 336,                          \
> > -   .max_wm_threads = 64 * 9,                        \
> 
> Is this intentional? I don't see CHV called out in the commit message,
> and the new code at the bottom is for gen >= 9, while CHV is 8.

Sorry, I should have used a bigger -U setting when sending these out.
This change is to the GEN9_FEATURES macro which is directly below the
chv struct...and diff doesn't handle the header nicely.

--Ken
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 801 bytes
Desc: This is a digitally signed message part.
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20161108/920a7d8c/attachment.sig>


More information about the mesa-dev mailing list