From 4ec5c2fb59e1d3f38d82fc3fb2215cc79ee429e4 Mon Sep 17 00:00:00 2001 From: Patrick Lerda Date: Fri, 31 Jan 2025 12:58:51 +0100 Subject: [PATCH] r600: fix emit_image_size() range base compatibility This change fixes a regression introduced with 8b5d41cacb51. Indeed, lookup_resid was not updated. This change was tested on palm and cayman. Here are the tests fixed: khr-gl4[3-5]/shader_image_size/advanced-nonms-cs-float: fail pass khr-gl4[3-5]/shader_image_size/advanced-nonms-cs-int: fail pass khr-gl4[3-5]/shader_image_size/advanced-nonms-cs-uint: fail pass khr-gl4[3-5]/shader_image_size/advanced-nonms-fs-float: fail pass khr-gl4[3-5]/shader_image_size/advanced-nonms-fs-int: fail pass khr-gl4[3-5]/shader_image_size/advanced-nonms-fs-uint: fail pass khr-gl4[3-5]/shader_image_size/basic-nonms-cs-float: fail pass khr-gl4[3-5]/shader_image_size/basic-nonms-cs-int: fail pass khr-gl4[3-5]/shader_image_size/basic-nonms-cs-uint: fail pass khr-gl4[3-5]/shader_image_size/basic-nonms-fs-float: fail pass khr-gl4[3-5]/shader_image_size/basic-nonms-fs-int: fail pass khr-gl4[3-5]/shader_image_size/basic-nonms-fs-uint: fail pass Fixes: 8b5d41cacb51 ("r600/sfn: Use range_base for atomics and images") Signed-off-by: Patrick Lerda Part-of: (cherry picked from commit fd874bdd0c03593a51dce50c7a46c6578eecb66d) --- .pick_status.json | 2 +- src/gallium/drivers/r600/sfn/sfn_instr_mem.cpp | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index e34bd677f86..b8292c19709 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -104,7 +104,7 @@ "description": "r600: fix emit_image_size() range base compatibility", "nominated": true, "nomination_type": 2, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "8b5d41cacb51af551875bdeaa4faed0b61c15992", "notes": null diff --git a/src/gallium/drivers/r600/sfn/sfn_instr_mem.cpp b/src/gallium/drivers/r600/sfn/sfn_instr_mem.cpp index a19d3632caa..8a484fcfe21 100644 --- a/src/gallium/drivers/r600/sfn/sfn_instr_mem.cpp +++ b/src/gallium/drivers/r600/sfn/sfn_instr_mem.cpp @@ -915,7 +915,8 @@ RatInstr::emit_image_size(nir_intrinsic_instr *intrin, Shader& shader) shader.set_flag(Shader::sh_txs_cube_array_comp); if (const_offset) { - unsigned lookup_resid = const_offset[0].u32 + shader.image_size_const_offset(); + unsigned lookup_resid = (res_id - R600_IMAGE_REAL_RESOURCE_OFFSET) + + shader.image_size_const_offset(); shader.emit_instruction( new AluInstr(op1_mov, dest[2],