From 9d3dc80f4a4ce1bca5fe7113fc13537dcda34e5f 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: (cherry picked from commit eb25c7a4e284cf5a8986978d4f35cb105c073712) --- .pick_status.json | 2 +- src/gallium/drivers/r600/sfn/sfn_shader_cs.cpp | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index 3959c68..513a0af 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -9024,7 +9024,7 @@ "description": "r600/sfn: keep workgroup and invocation ID registers for whole shader", "nominated": false, "nomination_type": 3, - "resolution": 4, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/gallium/drivers/r600/sfn/sfn_shader_cs.cpp b/src/gallium/drivers/r600/sfn/sfn_shader_cs.cpp index 4cd2d4c..9ae839d 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; } -- 2.7.4