From d7662e54ccc1ba30bcda697521952af982ce7c02 Mon Sep 17 00:00:00 2001 From: kd-11 Date: Wed, 28 Jun 2017 01:03:09 +0300 Subject: [PATCH] rsx/fp: Do not swizzle shadow lookups --- rpcs3/Emu/RSX/Common/FragmentProgramDecompiler.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/rpcs3/Emu/RSX/Common/FragmentProgramDecompiler.cpp b/rpcs3/Emu/RSX/Common/FragmentProgramDecompiler.cpp index 64bbb5589c..df22f41a5c 100644 --- a/rpcs3/Emu/RSX/Common/FragmentProgramDecompiler.cpp +++ b/rpcs3/Emu/RSX/Common/FragmentProgramDecompiler.cpp @@ -553,10 +553,14 @@ bool FragmentProgramDecompiler::handle_tex_srb(u32 opcode) SetDst(getFunction(FUNCTION::FUNCTION_TEXTURE_SAMPLE1D_PROJ)); return true; case rsx::texture_dimension_extended::texture_dimension_2d: - SetDst(getFunction(FUNCTION::FUNCTION_TEXTURE_SAMPLE2D_PROJ)); //Note shadow comparison only returns a true/false result! if (DstExpectsSca() && (m_prog.shadow_textures & (1 << dst.tex_num))) + { m_shadow_sampled_textures |= (1 << dst.tex_num); + SetDst(getFunction(FUNCTION::FUNCTION_TEXTURE_SAMPLE2D_PROJ), false); //No swizzle mask on shadow lookup + } + else + SetDst(getFunction(FUNCTION::FUNCTION_TEXTURE_SAMPLE2D_PROJ)); return true; case rsx::texture_dimension_extended::texture_dimension_cubemap: SetDst(getFunction(FUNCTION::FUNCTION_TEXTURE_SAMPLECUBE_PROJ));