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