panvk: Allocate stack for each thread

Rather than a single stack for all threads to share -- that can't work! :-) We
use the same helper that the GLES driver does. Fixes anything using scratch or
spilling, including:

dEQP-VK.glsl.indexing.varying_array.vec3_static_write_dynamic_read

Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com>
Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16283>
This commit is contained in:
Alyssa Rosenzweig 2022-04-25 16:29:15 -04:00 committed by Marge Bot
parent 7a7403f6aa
commit 86d32eed38
2 changed files with 5 additions and 1 deletions

View file

@ -17,6 +17,7 @@ include = [
"dEQP-VK.glsl.builtin.precision.frexp.*",
"dEQP-VK.glsl.builtin.precision.ldexp.*",
"dEQP-VK.glsl.builtin_var.*",
"dEQP-VK.glsl.indexing.varying_array.*",
"dEQP-VK.glsl.conversions.*",
"dEQP-VK.glsl.derivate.*.constant.*",
"dEQP-VK.glsl.derivate.*.linear.*",

View file

@ -165,8 +165,11 @@ panvk_per_arch(cmd_close_batch)(struct panvk_cmd_buffer *cmdbuf)
}
if (batch->tlsinfo.tls.size) {
unsigned size = panfrost_get_total_stack_size(batch->tlsinfo.tls.size,
pdev->thread_tls_alloc,
pdev->core_count);
batch->tlsinfo.tls.ptr =
pan_pool_alloc_aligned(&cmdbuf->tls_pool.base, batch->tlsinfo.tls.size, 4096).gpu;
pan_pool_alloc_aligned(&cmdbuf->tls_pool.base, size, 4096).gpu;
}
if (batch->tlsinfo.wls.size) {