From 247b4901f83b5f61e4228677f1d2c8174fa62023 Mon Sep 17 00:00:00 2001 From: PavelBARABANOV Date: Thu, 22 Oct 2026 02:19:27 +0300 Subject: [PATCH 1/2] [emit_spirv_image] remove the fix for LA/EOW --- src/android/app/src/main/res/values/strings.xml | 2 +- .../backend/spirv/emit_spirv_image.cpp | 13 +++---------- 2 files changed, 4 insertions(+), 11 deletions(-) diff --git a/src/android/app/src/main/res/values/strings.xml b/src/android/app/src/main/res/values/strings.xml index 191506c818..12df552e86 100644 --- a/src/android/app/src/main/res/values/strings.xml +++ b/src/android/app/src/main/res/values/strings.xml @@ -596,7 +596,7 @@ GPU Readback Before NCE Invalidation Temporary. Fix Ender Magnolia (and other UE titles) crashes. May reduce performance. Improvement in progress. Fix Bloom Effects - Reduces bloom blur in LA/EOW (Adreno A6XX - A7XX/ Turnip), removes bloom in Burnout. Warning: may cause graphical artifacts in other games. + Removes bloom in Burnout. Emulate BGR565 Fixes problems with inverted colors in games or strange artifacts or strange shadows. Enable Legacy Rescale Pass diff --git a/src/shader_recompiler/backend/spirv/emit_spirv_image.cpp b/src/shader_recompiler/backend/spirv/emit_spirv_image.cpp index 5d4983b9f7..9dda9553fd 100644 --- a/src/shader_recompiler/backend/spirv/emit_spirv_image.cpp +++ b/src/shader_recompiler/backend/spirv/emit_spirv_image.cpp @@ -586,16 +586,9 @@ Id EmitImageSampleExplicitLod(EmitContext& ctx, IR::Inst* inst, const IR::Value& const bool is_integer{IsTextureInteger(ctx, info)}; const Id result_type{is_integer ? ctx.U32[4] : ctx.F32[4]}; const ImageOperands operands(ctx, false, true, false, lod, offset); - - Id result = Emit(&EmitContext::OpImageSparseSampleExplicitLod, - &EmitContext::OpImageSampleExplicitLod, ctx, inst, result_type, - Texture(ctx, info, index), coords, operands.Mask(), operands.Span()); -#ifdef __ANDROID__ - if (!is_integer && Settings::values.fix_bloom_effects.GetValue()) { - result = ctx.OpVectorTimesScalar(ctx.F32[4], result, ctx.Const(0.98f)); - } -#endif - return is_integer ? ctx.OpBitcast(ctx.F32[4], result) : result; + return Emit(&EmitContext::OpImageSparseSampleExplicitLod, + &EmitContext::OpImageSampleExplicitLod, ctx, inst, ctx.F32[4], + Texture(ctx, info, index), coords, operands.Mask(), operands.Span()); } Id EmitImageSampleDrefImplicitLod(EmitContext& ctx, IR::Inst* inst, const IR::Value& index, From 8ffa544b751db8e1fcb316d0d536acad5a0cad4f Mon Sep 17 00:00:00 2001 From: PavelBARABANOV Date: Sun, 25 Oct 2026 17:53:08 +0300 Subject: [PATCH 2/2] oops --- src/shader_recompiler/backend/spirv/emit_spirv_image.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/shader_recompiler/backend/spirv/emit_spirv_image.cpp b/src/shader_recompiler/backend/spirv/emit_spirv_image.cpp index 9dda9553fd..9e84d199c3 100644 --- a/src/shader_recompiler/backend/spirv/emit_spirv_image.cpp +++ b/src/shader_recompiler/backend/spirv/emit_spirv_image.cpp @@ -6,7 +6,6 @@ #include -#include "common/settings.h" #include "shader_recompiler/backend/spirv/emit_spirv.h" #include "shader_recompiler/backend/spirv/emit_spirv_instructions.h" #include "shader_recompiler/backend/spirv/spirv_emit_context.h" @@ -586,9 +585,10 @@ Id EmitImageSampleExplicitLod(EmitContext& ctx, IR::Inst* inst, const IR::Value& const bool is_integer{IsTextureInteger(ctx, info)}; const Id result_type{is_integer ? ctx.U32[4] : ctx.F32[4]}; const ImageOperands operands(ctx, false, true, false, lod, offset); - return Emit(&EmitContext::OpImageSparseSampleExplicitLod, - &EmitContext::OpImageSampleExplicitLod, ctx, inst, ctx.F32[4], - Texture(ctx, info, index), coords, operands.Mask(), operands.Span()); + Id result = Emit(&EmitContext::OpImageSparseSampleExplicitLod, + &EmitContext::OpImageSampleExplicitLod, ctx, inst, result_type, + Texture(ctx, info, index), coords, operands.Mask(), operands.Span()); + return is_integer ? ctx.OpBitcast(ctx.F32[4], result) : result; } Id EmitImageSampleDrefImplicitLod(EmitContext& ctx, IR::Inst* inst, const IR::Value& index,