From: Dave Airlie <airl...@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 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev