From eb25c7a4e284cf5a8986978d4f35cb105c073712 Mon Sep 17 00:00:00 2001 From: Gert Wollny Date: Sun, 22 Oct 2023 21:31:08 +0200 Subject: [PATCH] r600/sfn: keep workgroup and invocation ID registers for whole shader For some reason one must not overwrite these values "too early", so pin them for the whole shader. Fixes: 79ca45 (r600/sfn: rewrite NIR backend) Related: https://gitlab.freedesktop.org/mesa/mesa/-/issues/10004 Signed-off-by: Gert Wollny Part-of: --- src/gallium/drivers/r600/sfn/sfn_shader_cs.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/gallium/drivers/r600/sfn/sfn_shader_cs.cpp b/src/gallium/drivers/r600/sfn/sfn_shader_cs.cpp index 4cd2d4c9243..9ae839dcdbe 100644 --- a/src/gallium/drivers/r600/sfn/sfn_shader_cs.cpp +++ b/src/gallium/drivers/r600/sfn/sfn_shader_cs.cpp @@ -52,7 +52,9 @@ ComputeShader::do_allocate_reserved_registers() for (int i = 0; i < 3; ++i) { m_local_invocation_id[i] = vf.allocate_pinned_register(thread_id_sel, i); + m_local_invocation_id[i]->set_flag(Register::pin_end); m_workgroup_id[i] = vf.allocate_pinned_register(wg_id_sel, i); + m_workgroup_id[i]->set_flag(Register::pin_end); } return 2; }