diff --git a/.pick_status.json b/.pick_status.json index 1a713f4fb2d..dbeb547ce24 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -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" }, 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& ready, std::list& 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;