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

Matt Turner mattst88 at gmail.com
Tue Nov 8 19:49:58 UTC 2016


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.


More information about the mesa-stable mailing list