Mesa (staging/22.0): r600: Disable SB in the presence of indirection on temp arrays.
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Thu Apr 21 16:23:33 UTC 2022
Module: Mesa
Branch: staging/22.0
Commit: 59959aab3d53ff8ce280b32c56579b71cbe717bb
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=59959aab3d53ff8ce280b32c56579b71cbe717bb
Author: Emma Anholt <emma at anholt.net>
Date: Thu Jan 6 09:43:49 2022 -0800
r600: Disable SB in the presence of indirection on temp arrays.
Prevents several regressions when NIR-to-TGSI is enabled where it was
allocating arrays on top of each other.
Fixes vec3 fails on RV770,
dEQP-GLES3.functional.shaders.metamorphic.bubblesort_flag.variant_1 and 2
in general, and fixes another piglit but breaks two others. Still, this
seems to be a win.
Cc: mesa-stable
Reviewed-by: Gert Wollny <gert.wollny at collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14429>
(cherry picked from commit f315ea9eff6d8479b995355647ec297d5d9a5651)
Conflicts:
src/gallium/drivers/r600/ci/r600-rv770-fails.txt
src/gallium/drivers/r600/ci/r600-turks-fails.txt
---
.pick_status.json | 2 +-
src/gallium/drivers/r600/r600_shader.c | 6 ++++++
2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/.pick_status.json b/.pick_status.json
index eeead9d618c..aa8854a7aff 100644
--- a/.pick_status.json
+++ b/.pick_status.json
@@ -7564,7 +7564,7 @@
"description": "r600: Disable SB in the presence of indirection on temp arrays.",
"nominated": true,
"nomination_type": 0,
- "resolution": 5,
+ "resolution": 1,
"because_sha": null
},
{
diff --git a/src/gallium/drivers/r600/r600_shader.c b/src/gallium/drivers/r600/r600_shader.c
index aa3e71fc551..d42d3d925dd 100644
--- a/src/gallium/drivers/r600/r600_shader.c
+++ b/src/gallium/drivers/r600/r600_shader.c
@@ -258,6 +258,12 @@ int r600_pipe_shader_create(struct pipe_context *ctx,
use_sb &= !shader->shader.uses_images;
use_sb &= !shader->shader.uses_helper_invocation;
+ /* sb has bugs in array reg allocation
+ * (dEQP-GLES2.functional.shaders.struct.local.struct_array_dynamic_index_fragment
+ * with NTT)
+ */
+ use_sb &= !(shader->shader.indirect_files & (1 << TGSI_FILE_TEMPORARY));
+
/* Check if the bytecode has already been built. */
if (!shader->shader.bc.bytecode) {
r = r600_bytecode_build(&shader->shader.bc);
More information about the mesa-commit
mailing list