[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-dev
mailing list