Module: Mesa Branch: staging/22.2 Commit: 3c238c91ba4b4a3122704b91797c322f0c3b8f6f URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=3c238c91ba4b4a3122704b91797c322f0c3b8f6f
Author: Gert Wollny <[email protected]> Date: Tue Aug 23 15:35:06 2022 +0200 r600/sfn: Don't scan the whole block for ready instructions Limit the number of tested instructions and the number of ready instructions that might be taken into account. This reduces the time needed to run the scheduler significantly. Fixes: 79ca456b4837b3bc21cf9ef3c03c505c4b4909f6 r600/sfn: rewrite NIR backend Signed-off-by: Gert Wollny <[email protected]> Reviewed-by: Filip Gawin <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18212> (cherry picked from commit 1f5dccb76057666ff810d889a38e057b078f2448) --- .pick_status.json | 2 +- src/gallium/drivers/r600/sfn/sfn_scheduler.cpp | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 1cdea0d15d3..3b15e223cf5 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -2893,7 +2893,7 @@ "description": "r600/sfn: Don't scan the whole block for ready instructions", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "79ca456b4837b3bc21cf9ef3c03c505c4b4909f6" }, diff --git a/src/gallium/drivers/r600/sfn/sfn_scheduler.cpp b/src/gallium/drivers/r600/sfn/sfn_scheduler.cpp index ea742f953cc..abeac5615da 100644 --- a/src/gallium/drivers/r600/sfn/sfn_scheduler.cpp +++ b/src/gallium/drivers/r600/sfn/sfn_scheduler.cpp @@ -913,7 +913,8 @@ bool BlockSheduler::collect_ready_type(std::list<T *>& ready, std::list<T *>& av auto i = available.begin(); auto e = available.end(); - while (i != e) { + int lookahead = 16; + while (i != e && ready.size() < 16 && lookahead-- > 0) { if ((*i)->ready()) { ready.push_back(*i); auto old_i = i;
