Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1753)

Unified Diff: Source/core/rendering/CompositedLayerMapping.cpp

Issue 23511004: mix-blend-mode implementation for accelerated layers - blink part (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: rebased Created 7 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: Source/core/rendering/CompositedLayerMapping.cpp
diff --git a/Source/core/rendering/CompositedLayerMapping.cpp b/Source/core/rendering/CompositedLayerMapping.cpp
index e1e41cd4f92137e54b6eb5ffaf030b81b69590bd..21343769146fcc623a4b89492e1772c9a100271a 100644
--- a/Source/core/rendering/CompositedLayerMapping.cpp
+++ b/Source/core/rendering/CompositedLayerMapping.cpp
@@ -217,6 +217,8 @@ void CompositedLayerMapping::createPrimaryGraphicsLayer()
if (RuntimeEnabledFeatures::cssCompositingEnabled())
updateLayerBlendMode(renderer()->style());
+ if (RuntimeEnabledFeatures::cssCompositingEnabled())
enne (OOO) 2013/11/07 22:59:07 Put these under the same conditional.
rosca 2013/11/08 15:36:32 Done.
+ updateIsRootForIsolatedGroup();
}
void CompositedLayerMapping::destroyGraphicsLayers()
@@ -273,8 +275,15 @@ void CompositedLayerMapping::updateFilters(const RenderStyle* style)
}
}
-void CompositedLayerMapping::updateLayerBlendMode(const RenderStyle*)
+void CompositedLayerMapping::updateLayerBlendMode(const RenderStyle* style)
+{
+ setBlendMode(style->blendMode());
+}
+
+void CompositedLayerMapping::updateIsRootForIsolatedGroup()
{
+ m_graphicsLayer->setIsRootForIsolatedGroup(m_owningLayer->hasCompositedBlendingDescendants()
enne (OOO) 2013/11/07 22:59:07 Whoa there. If you have a tree of RenderLayers cr
rosca 2013/11/08 15:36:32 No. hasCompositedBlendingDescendants is true only
+ && m_owningLayer->stackingNode()->isStackingContext());
}
void CompositedLayerMapping::updateContentsOpaque()
@@ -521,6 +530,8 @@ void CompositedLayerMapping::updateGraphicsLayerGeometry()
if (RuntimeEnabledFeatures::cssCompositingEnabled())
updateLayerBlendMode(renderer()->style());
+ if (RuntimeEnabledFeatures::cssCompositingEnabled())
+ updateIsRootForIsolatedGroup();
bool isSimpleContainer = isSimpleContainerCompositingLayer();
@@ -1552,8 +1563,15 @@ void CompositedLayerMapping::setRequiresOwnBackingStore(bool requiresOwnBacking)
compositor()->repaintInCompositedAncestor(m_owningLayer, compositedBounds());
}
-void CompositedLayerMapping::setBlendMode(BlendMode)
+void CompositedLayerMapping::setBlendMode(BlendMode blendMode)
{
+ if (m_ancestorClippingLayer) {
+ ASSERT(childForSuperlayers() == m_ancestorClippingLayer.get());
+ m_graphicsLayer->setBlendMode(BlendModeNormal);
+ } else {
+ ASSERT(childForSuperlayers() == m_graphicsLayer.get());
+ }
+ childForSuperlayers()->setBlendMode(blendMode);
}
void CompositedLayerMapping::setContentsNeedDisplay()

Powered by Google App Engine
This is Rietveld 408576698