From 379d9e4b88dc528a62bfa8fd10f592fc2fac9c01 Mon Sep 17 00:00:00 2001 From: lightningterror Date: Wed, 3 Oct 2018 07:41:10 +0200 Subject: [PATCH] GSdx-d3d: optimize colclip 0 port from OpenGL. Commits: https://github.com/PCSX2/pcsx2/commit/7979dec5b089ef7435f344c7d3eead521efe1f3c https://github.com/PCSX2/pcsx2/commit/15b934eb2a85b680e9e61dad7fc6138b60321bc7 --- plugins/GSdx/GSRendererDX.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/plugins/GSdx/GSRendererDX.cpp b/plugins/GSdx/GSRendererDX.cpp index a3f25cfd1e..e92411f490 100644 --- a/plugins/GSdx/GSRendererDX.cpp +++ b/plugins/GSdx/GSRendererDX.cpp @@ -533,7 +533,16 @@ void GSRendererDX::DrawPrims(GSTexture* rt, GSTexture* ds, GSTextureCache::Sourc bool colclip_wrap = m_env.COLCLAMP.CLAMP == 0 && !tex && PRIM->PRIM != GS_POINTLIST; if (colclip_wrap) { - m_ps_sel.colclip = 1; + if ((m_context->ALPHA.A == m_context->ALPHA.B) || !om_bsel.abe) // Optimize-away colclip + { + // No addition neither substraction so no risk of overflow the [0:255] range. + colclip_wrap = false; + } + else + { + m_ps_sel.colclip = 1; + // fprintf(stderr, "COLCLIP ENABLED (blending is %d/%d/%d/%d)\n", m_context->ALPHA.A, m_context->ALPHA.B, m_context->ALPHA.C, m_context->ALPHA.D); + } } m_ps_sel.clr1 = om_bsel.IsCLR1();