[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