From 02010acd42f39b01de09b708f8cce7b592eba358 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20Miko=C5=82ajczyk?= Date: Fri, 29 May 2026 00:06:36 +0200 Subject: [PATCH] image_get_lod: respect dmask value when writing lod (#4488) --- .../frontend/translate/vector_memory.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/shader_recompiler/frontend/translate/vector_memory.cpp b/src/shader_recompiler/frontend/translate/vector_memory.cpp index e7030eca1..73f28160d 100644 --- a/src/shader_recompiler/frontend/translate/vector_memory.cpp +++ b/src/shader_recompiler/frontend/translate/vector_memory.cpp @@ -703,8 +703,12 @@ void Translator::IMAGE_GET_LOD(const GcnInst& inst) { ir.GetVectorReg(addr_reg), ir.GetVectorReg(addr_reg + 1), ir.GetVectorReg(addr_reg + 2), ir.GetVectorReg(addr_reg + 3)); const IR::Value lod = ir.ImageQueryLod(handle, body, info); - ir.SetVectorReg(dst_reg++, IR::F32{ir.CompositeExtract(lod, 0)}); - ir.SetVectorReg(dst_reg++, IR::F32{ir.CompositeExtract(lod, 1)}); + if (mimg.dmask & 1) { + ir.SetVectorReg(dst_reg++, IR::F32{ir.CompositeExtract(lod, 0)}); + } + if (mimg.dmask & 2) { + ir.SetVectorReg(dst_reg++, IR::F32{ir.CompositeExtract(lod, 1)}); + } } } // namespace Shader::Gcn