Mesa (main): r600/sb: fall back to unoptimized shader if RA fails

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Jul 26 20:20:33 UTC 2022


Module: Mesa
Branch: main
Commit: bbe840094903f2f1cf8f59293fba182fea23e522
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=bbe840094903f2f1cf8f59293fba182fea23e522

Author: Gert Wollny <gert.wollny at collabora.com>
Date:   Tue Jul 26 12:18:07 2022 +0200

r600/sb: fall back to unoptimized shader if RA fails

Signed-off-by: Gert Wollny <gert.wollny at collabora.com>
Reviewed-by: Filip Gawin <filip at gawin.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17755>

---

 src/gallium/drivers/r600/sb/sb_ra_coalesce.cpp | 12 +++++++-----
 src/gallium/drivers/r600/sb/sb_shader.h        |  2 +-
 2 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/src/gallium/drivers/r600/sb/sb_ra_coalesce.cpp b/src/gallium/drivers/r600/sb/sb_ra_coalesce.cpp
index 7f388af6e81..4a9462d91e6 100644
--- a/src/gallium/drivers/r600/sb/sb_ra_coalesce.cpp
+++ b/src/gallium/drivers/r600/sb/sb_ra_coalesce.cpp
@@ -273,7 +273,7 @@ void coalescer::build_constraint_queue() {
 	}
 }
 
-void coalescer::color_chunks() {
+int coalescer::color_chunks() {
 
 	for (chunk_queue::iterator I = chunks.begin(), E = chunks.end();
 			I != E; ++I) {
@@ -333,9 +333,13 @@ void coalescer::color_chunks() {
 			++pass;
 		}
 
-		assert(color);
+		if (!color) {
+			fprintf(stderr, "r600/SB: unable to color registers\n");
+			return -1;
+		}
 		color_chunk(c, color);
 	}
+	return 0;
 }
 
 void coalescer::init_reg_bitset(sb_bitset &bs, val_set &vs) {
@@ -431,9 +435,7 @@ int coalescer::run() {
 		return r;
 
 	build_chunk_queue();
-	color_chunks();
-
-	return 0;
+	return color_chunks();
 }
 
 void coalescer::color_phi_constraint(ra_constraint* c) {
diff --git a/src/gallium/drivers/r600/sb/sb_shader.h b/src/gallium/drivers/r600/sb/sb_shader.h
index 70bea891b76..19e55246c4f 100644
--- a/src/gallium/drivers/r600/sb/sb_shader.h
+++ b/src/gallium/drivers/r600/sb/sb_shader.h
@@ -209,7 +209,7 @@ public:
 	void build_constraint_queue();
 	void build_chunk_queue();
 	int color_constraints();
-	void color_chunks();
+	int color_chunks();
 
 	ra_constraint* create_constraint(constraint_kind kind);
 



More information about the mesa-commit mailing list