r600: limit pre-evergreen predicate ready size
Some checks are pending
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run

With the current stack configuration the rv770 seems to be unable
to go beyond three with the "vs-output-array-float-index-wr-before-gs.shader_test"
test. Anyway, the value four seems to be sufficient for the other tests.

This issue was triggered on rv770, for instance, with:
"piglit/bin/shader_runner tests/spec/glsl-1.50/execution/variable-indexing/gs-output-array-float-index-wr.shader_test -auto -fbo"
"piglit/bin/shader_runner tests/spec/glsl-1.50/execution/variable-indexing/vs-output-array-float-index-wr-before-gs.shader_test -auto -fbo"

Fixes: 713edb5998 ("r600/sfn: handle the IF predicate in the scheduler")
Signed-off-by: Patrick Lerda <patrick9876@free.fr>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38213>
This commit is contained in:
Patrick Lerda 2025-11-02 20:25:31 +01:00 committed by Marge Bot
parent 92a4ae0ab2
commit ae049f6fea

View file

@ -1269,7 +1269,8 @@ BlockScheduler::collect_ready_alu_vec(std::list<AluInstr *>& ready,
++i; ++i;
} }
if (predicate && *predicate && available.empty() && ready.size() < 16 && if (predicate && *predicate && available.empty() &&
ready.size() < (m_chip_class >= ISA_CC_EVERGREEN ? 16 : 3) &&
(*predicate)->ready()) { (*predicate)->ready()) {
assert((*predicate)->alu_slots() == 1); assert((*predicate)->alu_slots() == 1);
ready.push_back(*predicate); ready.push_back(*predicate);