summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon/RenderState.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Core/VideoCommon/RenderState.cpp')
-rw-r--r--Source/Core/VideoCommon/RenderState.cpp19
1 files changed, 14 insertions, 5 deletions
diff --git a/Source/Core/VideoCommon/RenderState.cpp b/Source/Core/VideoCommon/RenderState.cpp
index 2750d43695..2e84646ce4 100644
--- a/Source/Core/VideoCommon/RenderState.cpp
+++ b/Source/Core/VideoCommon/RenderState.cpp
@@ -108,12 +108,21 @@ void BlendingState::Generate(const BPMemory& bp)
// The logicop bit has the lowest priority
else if (bp.blendmode.logicopenable)
{
- logicopenable = true;
- logicmode = bp.blendmode.logicmode;
-
- if (dstalpha)
+ if (bp.blendmode.logicmode == BlendMode::NOOP)
{
- // TODO: Not supported by backends.
+ // Fast path for Kirby's Return to Dreamland, they use it with dstAlpha.
+ colorupdate = false;
+ alphaupdate = alphaupdate && dstalpha;
+ }
+ else
+ {
+ logicopenable = true;
+ logicmode = bp.blendmode.logicmode;
+
+ if (dstalpha)
+ {
+ // TODO: Not supported by backends.
+ }
}
}
}