From 31bcdb8f2f6d64c6bae1e102fc43144150c7060a Mon Sep 17 00:00:00 2001 From: magumagu Date: Mon, 15 Dec 2014 20:08:54 -0800 Subject: [PATCH] D3D+OGL: choose blendenable over logicopenable. No sane game should turn on both logicopenable and blendenable in the same blend mode, but not every game is sane. Fixes issue 6009. --- Source/Core/VideoBackends/D3D/Render.cpp | 4 ++-- Source/Core/VideoBackends/OGL/Render.cpp | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Source/Core/VideoBackends/D3D/Render.cpp b/Source/Core/VideoBackends/D3D/Render.cpp index 86f93fc9ad..0f5aaa8853 100644 --- a/Source/Core/VideoBackends/D3D/Render.cpp +++ b/Source/Core/VideoBackends/D3D/Render.cpp @@ -615,7 +615,7 @@ void Renderer::SetBlendMode(bool forceUpdate) (target_has_alpha) ? D3D11_BLEND_INV_DEST_ALPHA : D3D11_BLEND_ZERO }; - if (bpmem.blendmode.logicopenable && !forceUpdate) + if (bpmem.blendmode.logicopenable && !bpmem.blendmode.blendenable && !forceUpdate) return; if (bpmem.blendmode.subtract) @@ -1234,7 +1234,7 @@ void Renderer::SetLogicOpMode() D3D11_BLEND_ONE//15 }; - if (bpmem.blendmode.logicopenable) + if (bpmem.blendmode.logicopenable && !bpmem.blendmode.blendenable) { gx_state.blend.blend_enable = true; gx_state.blend.blend_op = d3dLogicOps[bpmem.blendmode.logicmode]; diff --git a/Source/Core/VideoBackends/OGL/Render.cpp b/Source/Core/VideoBackends/OGL/Render.cpp index f26a1460ce..9ee86471ff 100644 --- a/Source/Core/VideoBackends/OGL/Render.cpp +++ b/Source/Core/VideoBackends/OGL/Render.cpp @@ -1882,7 +1882,7 @@ void Renderer::SetLogicOpMode() GL_SET }; - if (bpmem.blendmode.logicopenable) + if (bpmem.blendmode.logicopenable && !bpmem.blendmode.blendenable) { glEnable(GL_COLOR_LOGIC_OP); glLogicOp(glLogicOpCodes[bpmem.blendmode.logicmode]);