diff --git a/src/gallium/drivers/r600/sfn/sfn_shader_fs.cpp b/src/gallium/drivers/r600/sfn/sfn_shader_fs.cpp index 6e71cf713f2..82dbfbf3f15 100644 --- a/src/gallium/drivers/r600/sfn/sfn_shader_fs.cpp +++ b/src/gallium/drivers/r600/sfn/sfn_shader_fs.cpp @@ -256,7 +256,7 @@ FragmentShader::do_allocate_reserved_registers() } if (m_sv_values.test(es_helper_invocation)) { - m_helper_invocation = value_factory().allocate_pinned_register(next_register++, 0); + m_helper_invocation = value_factory().temp_register(0, false); } return next_register; diff --git a/src/gallium/drivers/r600/sfn/sfn_valuefactory.cpp b/src/gallium/drivers/r600/sfn/sfn_valuefactory.cpp index de38efc94cb..e19479ea724 100644 --- a/src/gallium/drivers/r600/sfn/sfn_valuefactory.cpp +++ b/src/gallium/drivers/r600/sfn/sfn_valuefactory.cpp @@ -149,6 +149,7 @@ ValueFactory::allocate_pinned_register(int sel, int chan) auto reg = new Register(sel, chan, pin_fully); reg->set_flag(Register::pin_start); + reg->set_flag(Register::ssa); m_pinned_registers.push_back(reg); return reg; } @@ -162,6 +163,7 @@ ValueFactory::allocate_pinned_vec4(int sel, bool is_ssa) RegisterVec4 retval(sel, is_ssa, {0, 1, 2, 3}, pin_fully); for (int i = 0; i < 4; ++i) { retval[i]->set_flag(Register::pin_start); + retval[i]->set_flag(Register::ssa); m_pinned_registers.push_back(retval[i]); } return retval;