From: Dave Airlie Date: Wed, 10 Jan 2018 04:38:07 +0000 (+0000) Subject: r600/sb: hit the scheduler with a big hammer to avoid lds splits. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=71a50de4fcf8202b500d51916100e8e905de3c44;p=mesa.git 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 --- 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;