From c9e0045881ee98bb6fb3d6d9e8e426877124b294 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Tue, 27 Mar 2018 18:38:24 -0400 Subject: [PATCH 1/2] PixelShaderGen: Remove dead code in WriteColor() The outer conditional executes only whenever destination alpha is used. --- Source/Core/VideoCommon/PixelShaderGen.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/Source/Core/VideoCommon/PixelShaderGen.cpp b/Source/Core/VideoCommon/PixelShaderGen.cpp index 97ebe88f37..4e48ba1bbd 100644 --- a/Source/Core/VideoCommon/PixelShaderGen.cpp +++ b/Source/Core/VideoCommon/PixelShaderGen.cpp @@ -1408,10 +1408,7 @@ static void WriteColor(ShaderCode& out, APIType api_type, const pixel_shader_uid // Use dual-source color blending to perform dst alpha in a single pass if (use_dual_source) { - if (uid_data->useDstAlpha) out.Write("\tocol1.a = float(prev.a) / 255.0;\n"); - else - out.Write("\tocol1.a = float(" I_ALPHA ".a) / 255.0;\n"); } } } From f10198500e968fafe0c019467a1eea7fe78630c5 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Tue, 27 Mar 2018 18:44:10 -0400 Subject: [PATCH 2/2] PixelShaderGen: Invert conditional in WriteColor() Puts the true condition body first instead of the false one for better reading. --- Source/Core/VideoCommon/PixelShaderGen.cpp | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/Source/Core/VideoCommon/PixelShaderGen.cpp b/Source/Core/VideoCommon/PixelShaderGen.cpp index 4e48ba1bbd..61c39a54fe 100644 --- a/Source/Core/VideoCommon/PixelShaderGen.cpp +++ b/Source/Core/VideoCommon/PixelShaderGen.cpp @@ -1394,22 +1394,20 @@ static void WriteColor(ShaderCode& out, APIType api_type, const pixel_shader_uid // Colors will be blended against the 8-bit alpha from ocol1 and // the 6-bit alpha from ocol0 will be written to the framebuffer - if (!uid_data->useDstAlpha) - { - out.Write("\tocol0.a = float(prev.a >> 2) / 63.0;\n"); - if (use_dual_source) - out.Write("\tocol1.a = float(prev.a) / 255.0;\n"); - } - else + if (uid_data->useDstAlpha) { out.SetConstantsUsed(C_ALPHA, C_ALPHA); out.Write("\tocol0.a = float(" I_ALPHA ".a >> 2) / 63.0;\n"); // Use dual-source color blending to perform dst alpha in a single pass if (use_dual_source) - { - out.Write("\tocol1.a = float(prev.a) / 255.0;\n"); - } + out.Write("\tocol1.a = float(prev.a) / 255.0;\n"); + } + else + { + out.Write("\tocol0.a = float(prev.a >> 2) / 63.0;\n"); + if (use_dual_source) + out.Write("\tocol1.a = float(prev.a) / 255.0;\n"); } }