From 5416d1bc4b2e16663f1860a607eb4be813837dd4 Mon Sep 17 00:00:00 2001 From: Gert Wollny Date: Wed, 7 Sep 2022 08:21:13 +0200 Subject: [PATCH] r600/sfn: Don't assert when setting one value Instead add a method to validate the vec4 registers Signed-off-by: Gert Wollny Part-of: --- .../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;