summaryrefslogtreecommitdiff
path: root/Source
diff options
context:
space:
mode:
authormagumagu <magumagu9@gmail.com>2014-12-15 20:08:54 -0800
committermagumagu <magumagu9@gmail.com>2014-12-15 20:16:25 -0800
commit31bcdb8f2f6d64c6bae1e102fc43144150c7060a (patch)
tree03c39c8d478e4dd4523ff875d8f6ce75a2a57af3 /Source
parent7b5b76caa478b0643a81d8bcf2ad4c6385ef78c0 (diff)
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.
Diffstat (limited to 'Source')
-rw-r--r--Source/Core/VideoBackends/D3D/Render.cpp4
-rw-r--r--Source/Core/VideoBackends/OGL/Render.cpp2
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]);