From 71a50de4fcf8202b500d51916100e8e905de3c44 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Wed, 10 Jan 2018 04:38:07 +0000 Subject: [PATCH] r600/sb: hit the scheduler with a big hammer to avoid lds splits. 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. Acked-By: Roland Scheidegger Signed-off-by: Dave Airlie --- 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 26e4811b1ce..1feef585dfb 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.30.2