Mesa (master): aco: don't reorder barriers in the scheduler

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu May 28 10:52:05 UTC 2020


Module: Mesa
Branch: master
Commit: 1f2fd9c62ee167cae34d34664e6bd972169a3307
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=1f2fd9c62ee167cae34d34664e6bd972169a3307

Author: Rhys Perry <pendingchaos02 at gmail.com>
Date:   Fri May  1 11:04:27 2020 +0100

aco: don't reorder barriers in the scheduler

Unless we're reordering it around a barrier of the same type

No shader-db changes.

Signed-off-by: Rhys Perry <pendingchaos02 at gmail.com>
Reviewed-by: Daniel Schürmann <daniel at schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4880>

---

 src/amd/compiler/aco_scheduler.cpp | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/amd/compiler/aco_scheduler.cpp b/src/amd/compiler/aco_scheduler.cpp
index c1d4e9b3ce8..cb22491bf64 100644
--- a/src/amd/compiler/aco_scheduler.cpp
+++ b/src/amd/compiler/aco_scheduler.cpp
@@ -484,7 +484,10 @@ HazardResult perform_hazard_query(hazard_query *query, Instruction *instr)
        instr->opcode == aco_opcode::s_setprio)
       return hazard_fail_unreorderable;
 
-   if (query->barrier_interaction && (query->barrier_interaction & parse_barrier(instr)))
+   barrier_interaction bar = parse_barrier(instr);
+   if (query->barrier_interaction && (query->barrier_interaction & bar))
+      return hazard_fail_barrier;
+   if (bar && query->barriers && (query->barriers & ~bar))
       return hazard_fail_barrier;
    if (query->barriers && (query->barriers & get_barrier_interaction(instr)))
       return hazard_fail_barrier;



More information about the mesa-commit mailing list