[Mesa-dev] [PATCH 16/21] r600/sb: hit the scheduler with a big hammer to avoid lds splits.

Dave Airlie airlied at gmail.com
Wed Jan 10 06:48:55 UTC 2018


From: Dave Airlie <airlied at redhat.com>

This tries to avoid an lds queue read getting scheduled separately
from an lds ret read, the non-sb code uses the same style of hammer,
this isn't foolproof.

We can do better, but it's a bit tricky, as you have to scan ahead
and either schedule more lds oq moves and more lds reads and that
could lead to you running out of space anyways.
---
 src/gallium/drivers/r600/sb/sb_sched.cpp | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/src/gallium/drivers/r600/sb/sb_sched.cpp b/src/gallium/drivers/r600/sb/sb_sched.cpp
index 26e4811b1c..1feef585df 100644
--- a/src/gallium/drivers/r600/sb/sb_sched.cpp
+++ b/src/gallium/drivers/r600/sb/sb_sched.cpp
@@ -2034,6 +2034,9 @@ bool alu_clause_tracker::check_clause_limits() {
 	// ...and index registers
 	reserve_slots += (current_idx[0] != NULL) + (current_idx[1] != NULL);
 
+	if (gt.get_consumes_lds_oqa() && !outstanding_lds_oqa_reads)
+		reserve_slots += 60;
+
 	if (slot_count + slots > MAX_ALU_SLOTS - reserve_slots)
 		return false;
 
-- 
2.14.3



More information about the mesa-dev mailing list