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: 79ca456b48
   r600/sfn: rewrite NIR backend

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Filip Gawin <filip@gawin.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18212>
(cherry picked from commit 1f5dccb760)
This commit is contained in:
Gert Wollny
2022-08-23 15:35:06 +02:00
committed by Dylan Baker
parent e201b751fc
commit b84c8968c7
2 changed files with 3 additions and 2 deletions

View File

@@ -10300,7 +10300,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"
},

View File

@@ -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;