Module: Mesa Branch: main Commit: 5416d1bc4b2e16663f1860a607eb4be813837dd4 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=5416d1bc4b2e16663f1860a607eb4be813837dd4
Author: Gert Wollny <[email protected]> Date: Wed Sep 7 08:21:13 2022 +0200 r600/sfn: Don't assert when setting one value Instead add a method to validate the vec4 registers Signed-off-by: Gert Wollny <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18619> --- src/gallium/drivers/r600/sfn/sfn_virtualvalues.h | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/gallium/drivers/r600/sfn/sfn_virtualvalues.h b/src/gallium/drivers/r600/sfn/sfn_virtualvalues.h index 5c008e49ae8..52f817fc628 100644 --- a/src/gallium/drivers/r600/sfn/sfn_virtualvalues.h +++ b/src/gallium/drivers/r600/sfn/sfn_virtualvalues.h @@ -278,16 +278,25 @@ public: void set_value(int i, PRegister reg) { if (reg->chan() < 4) { - for (int k = 0; k < 4; ++k) { - assert(i == k || m_values[k]->value()->chan() > 3 || - m_values[k]->value()->sel() == reg->sel()); - } m_sel = reg->sel(); } m_swz[i] = reg->chan(); m_values[i]->set_value(reg); } + void validate() { + int sel = -1; + for (int k = 0; k < 4; ++k) { + if (sel < 0) { + if (m_values[k]->value()->chan() < 4) + sel = m_values[k]->value()->sel(); + } else { + assert(m_values[k]->value()->chan() > 3 || + m_values[k]->value()->sel() == sel); + } + } + } + bool ready(int block_id, int index) const; private: int m_sel;
