Changeset 162117 in webkit
- Timestamp:
- Jan 15, 2014 11:33:49 PM (10 years ago)
- Location:
- trunk
- Files:
-
- 26 added
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r162115 r162117 1 2014-01-15 Mihnea Ovidenie <mihnea@adobe.com> 2 3 [CSS Regions] Enable accelerated compositing for fixed elements in named flows 4 https://bugs.webkit.org/show_bug.cgi?id=125144 5 6 Reviewed by David Hyatt. 7 8 Added new tests and made the existing tests for fixed positioned elements use the 9 non-compositing mode. 10 11 * compositing/regions/abs-in-named-flow-from-fixed-in-named-flow-expected.txt: Added. 12 * compositing/regions/abs-in-named-flow-from-fixed-in-named-flow.html: Added. 13 * compositing/regions/fixed-in-diff-named-flows-zIndex-expected.html: Added. 14 * compositing/regions/fixed-in-diff-named-flows-zIndex.html: Added. 15 * compositing/regions/fixed-in-named-flow-clip-descendant-expected.txt: Added. 16 * compositing/regions/fixed-in-named-flow-clip-descendant.html: Added. 17 * compositing/regions/fixed-in-named-flow-expected.txt: Added. 18 * compositing/regions/fixed-in-named-flow-from-abs-in-named-flow-expected.txt: Added. 19 * compositing/regions/fixed-in-named-flow-from-abs-in-named-flow.html: Added. 20 * compositing/regions/fixed-in-named-flow-from-outflow-expected.txt: Added. 21 * compositing/regions/fixed-in-named-flow-from-outflow.html: Added. 22 * compositing/regions/fixed-in-named-flow-got-transformed-parent-expected.txt: Added. 23 * compositing/regions/fixed-in-named-flow-got-transformed-parent.html: Added. 24 * compositing/regions/fixed-in-named-flow-lost-transformed-parent-expected.txt: Added. 25 * compositing/regions/fixed-in-named-flow-lost-transformed-parent.html: Added. 26 * compositing/regions/fixed-in-named-flow-overlap-composited-expected.txt: Added. 27 * compositing/regions/fixed-in-named-flow-overlap-composited.html: Added. 28 * compositing/regions/fixed-in-named-flow-position-changed-expected.html: Added. 29 * compositing/regions/fixed-in-named-flow-position-changed.html: Added. 30 * compositing/regions/fixed-in-named-flow-transformed-parent-expected.txt: Added. 31 * compositing/regions/fixed-in-named-flow-transformed-parent.html: Added. 32 * compositing/regions/fixed-in-named-flow-zIndex-expected.html: Added. 33 * compositing/regions/fixed-in-named-flow-zIndex.html: Added. 34 * compositing/regions/fixed-in-named-flow.html: Added. 35 * compositing/regions/fixed-transformed-in-named-flow-expected.txt: Added. 36 * compositing/regions/fixed-transformed-in-named-flow.html: Added. 37 * fast/regions/repaint/element-in-named-flow-absolute-from-fixed.html: 38 * fast/regions/repaint/element-in-named-flow-fixed-from-absolute.html: 39 * fast/regions/repaint/element-inflow-fixed-from-outflow-static.html: 40 * fast/regions/repaint/element-outflow-static-from-inflow-fixed.html: 41 1 42 2014-01-15 Mihai Maerean <mmaerean@adobe.com> 2 43 -
trunk/LayoutTests/fast/regions/repaint/element-in-named-flow-absolute-from-fixed.html
r160708 r162117 20 20 <div id="region"></div> 21 21 <script> 22 if (window.internals) 23 window.internals.settings.setAcceleratedCompositingForFixedPositionEnabled(false); 24 22 25 function repaintTest() { 23 26 document.getElementById("target").style.position = "absolute"; -
trunk/LayoutTests/fast/regions/repaint/element-in-named-flow-fixed-from-absolute.html
r160708 r162117 20 20 <div id="region"></div> 21 21 <script> 22 if (window.internals) 23 window.internals.settings.setAcceleratedCompositingForFixedPositionEnabled(false); 24 22 25 function repaintTest() { 23 26 document.getElementById("target").style.position = "fixed"; -
trunk/LayoutTests/fast/regions/repaint/element-inflow-fixed-from-outflow-static.html
r160708 r162117 23 23 <div id="region"></div> 24 24 <script> 25 if (window.internals) 26 window.internals.settings.setAcceleratedCompositingForFixedPositionEnabled(false); 27 25 28 function repaintTest() { 26 29 var target = document.getElementById("target"); -
trunk/LayoutTests/fast/regions/repaint/element-outflow-static-from-inflow-fixed.html
r160708 r162117 23 23 <div id="region"></div> 24 24 <script> 25 if (window.internals) 26 window.internals.settings.setAcceleratedCompositingForFixedPositionEnabled(false); 27 25 28 function repaintTest() { 26 29 var target = document.getElementById("target"); -
trunk/Source/WebCore/ChangeLog
r162116 r162117 1 2014-01-15 Mihnea Ovidenie <mihnea@adobe.com> 2 3 [CSS Regions] Enable accelerated compositing for fixed elements in named flows 4 https://bugs.webkit.org/show_bug.cgi?id=125144 5 6 Reviewed by David Hyatt. 7 8 Add support for compositing for fixed positioned element that are collected 9 inside a named flow. Prior to this patch, the fixed positioned elements were 10 positioned and sized properly but only in the non-compositing scenario. 11 12 Tests: compositing/regions/abs-in-named-flow-from-fixed-in-named-flow.html 13 compositing/regions/fixed-in-diff-named-flows-zIndex.html 14 compositing/regions/fixed-in-named-flow-clip-descendant.html 15 compositing/regions/fixed-in-named-flow-from-abs-in-named-flow.html 16 compositing/regions/fixed-in-named-flow-from-outflow.html 17 compositing/regions/fixed-in-named-flow-got-transformed-parent.html 18 compositing/regions/fixed-in-named-flow-lost-transformed-parent.html 19 compositing/regions/fixed-in-named-flow-overlap-composited.html 20 compositing/regions/fixed-in-named-flow-position-changed.html 21 compositing/regions/fixed-in-named-flow-transformed-parent.html 22 compositing/regions/fixed-in-named-flow-zIndex.html 23 compositing/regions/fixed-in-named-flow.html 24 compositing/regions/fixed-transformed-in-named-flow.html 25 26 * rendering/RenderFlowThread.cpp: 27 (WebCore::RenderFlowThread::regionForCompositedLayer): 28 * rendering/RenderLayerCompositor.cpp: 29 (WebCore::RenderLayerCompositor::computeCompositingRequirementsForNamedFlowFixed): 30 (WebCore::RenderLayerCompositor::computeCompositingRequirements): 31 (WebCore::RenderLayerCompositor::rebuildCompositingLayerTreeForNamedFlowFixed): 32 (WebCore::RenderLayerCompositor::rebuildCompositingLayerTree): 33 (WebCore::RenderLayerCompositor::updateLayerTreeGeometry): 34 (WebCore::RenderLayerCompositor::requiresCompositingForPosition): 35 * rendering/RenderLayerCompositor.h: 36 * rendering/RenderNamedFlowFragment.h: 37 * rendering/RenderNamedFlowThread.h: 38 1 39 2014-01-15 Benjamin Poulain <bpoulain@apple.com> 2 40 -
trunk/Source/WebCore/rendering/RenderFlowThread.cpp
r161626 r162117 29 29 30 30 #include "config.h" 31 32 31 #include "RenderFlowThread.h" 33 32 … … 272 271 RenderNamedFlowFragment* RenderFlowThread::regionForCompositedLayer(RenderLayer& childLayer) 273 272 { 273 if (childLayer.renderer().fixedPositionedWithNamedFlowContainingBlock()) 274 return 0; 275 274 276 if (childLayer.renderBox()) { 275 277 RenderRegion* startRegion = 0; -
trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp
r162030 r162117 1023 1023 } 1024 1024 1025 void RenderLayerCompositor::computeCompositingRequirementsForNamedFlowFixed(RenderLayer& layer, OverlapMap* overlapMap, CompositingState& childState, bool& layersChanged, bool& anyDescendantHas3DTransform) 1026 { 1027 if (!layer.isRootLayer()) 1028 return; 1029 1030 if (!layer.renderer().view().hasRenderNamedFlowThreads()) 1031 return; 1032 1033 Vector<RenderLayer*> fixedLayers; 1034 layer.renderer().view().flowThreadController().collectFixedPositionedLayers(fixedLayers); 1035 1036 for (size_t i = 0; i < fixedLayers.size(); ++i) { 1037 RenderLayer* fixedLayer = fixedLayers.at(i); 1038 computeCompositingRequirements(&layer, *fixedLayer, overlapMap, childState, layersChanged, anyDescendantHas3DTransform); 1039 } 1040 } 1041 1025 1042 // Recurse through the layers in z-index and overflow order (which is equivalent to painting order) 1026 1043 // For the z-order children of a compositing layer: … … 1149 1166 } 1150 1167 } 1151 1168 1169 if (layer.isRootLayer()) 1170 computeCompositingRequirementsForNamedFlowFixed(layer, overlapMap, childState, layersChanged, anyDescendantHas3DTransform); 1171 1152 1172 // If we just entered compositing mode, the root will have become composited (as long as accelerated compositing is enabled). 1153 1173 if (layer.isRootLayer()) { … … 1309 1329 #endif 1310 1330 1331 void RenderLayerCompositor::rebuildCompositingLayerTreeForNamedFlowFixed(RenderLayer& layer, Vector<GraphicsLayer*>& childGraphicsLayersOfEnclosingLayer, int depth) 1332 { 1333 if (!layer.isRootLayer()) 1334 return; 1335 1336 if (!layer.renderer().view().hasRenderNamedFlowThreads()) 1337 return; 1338 1339 Vector<RenderLayer*> fixedLayers; 1340 layer.renderer().view().flowThreadController().collectFixedPositionedLayers(fixedLayers); 1341 1342 for (size_t i = 0; i < fixedLayers.size(); ++i) { 1343 RenderLayer* fixedLayer = fixedLayers.at(i); 1344 rebuildCompositingLayerTree(*fixedLayer, childGraphicsLayersOfEnclosingLayer, depth); 1345 } 1346 } 1347 1311 1348 void RenderLayerCompositor::rebuildCompositingLayerTree(RenderLayer& layer, Vector<GraphicsLayer*>& childLayersOfEnclosingLayer, int depth) 1312 1349 { … … 1318 1355 if (layer.isFlowThreadCollectingGraphicsLayersUnderRegions()) 1319 1356 return; 1320 1357 1321 1358 RenderLayerBacking* layerBacking = layer.backing(); 1322 1359 if (layerBacking) { … … 1381 1418 } 1382 1419 } 1383 1420 1421 if (layer.isRootLayer()) 1422 rebuildCompositingLayerTreeForNamedFlowFixed(layer, childList, depth + 1); 1423 1384 1424 if (layerBacking) { 1385 1425 bool parented = false; … … 1599 1639 void RenderLayerCompositor::updateLayerTreeGeometry(RenderLayer& layer, int depth) 1600 1640 { 1601 // FIXME: fixed positioned elements inside a named flow are not composited yet.1602 if (layer.isOutOfFlowRenderFlowThread())1603 return;1604 1605 1641 if (RenderLayerBacking* layerBacking = layer.backing()) { 1606 1642 // The compositing state of all our children has been updated already, so now … … 2502 2538 // Don't promote fixed position elements that are descendants of a non-view container, e.g. transformed elements. 2503 2539 // They will stay fixed wrt the container rather than the enclosing frame. 2504 if (container != &m_renderView ) {2540 if (container != &m_renderView && !renderer.fixedPositionedWithNamedFlowContainingBlock()) { 2505 2541 if (viewportConstrainedNotCompositedReason) 2506 2542 *viewportConstrainedNotCompositedReason = RenderLayer::NotCompositedForNonViewContainer; -
trunk/Source/WebCore/rendering/RenderLayerCompositor.h
r161768 r162117 342 342 343 343 void computeRegionCompositingRequirements(RenderNamedFlowFragment*, OverlapMap*, CompositingState&, bool& layersChanged, bool& anyDescendantHas3DTransform); 344 344 345 void computeCompositingRequirementsForNamedFlowFixed(RenderLayer&, OverlapMap*, CompositingState&, bool& layersChanged, bool& anyDescendantHas3DTransform); 346 345 347 // Recurses down the tree, parenting descendant compositing layers and collecting an array of child layers for the current compositing layer. 346 348 void rebuildCompositingLayerTree(RenderLayer&, Vector<GraphicsLayer*>& childGraphicsLayersOfEnclosingLayer, int depth); … … 349 351 // layers for the current compositing layer corresponding to the anonymous region (that belongs to the region's parent). 350 352 void rebuildRegionCompositingLayerTree(RenderNamedFlowFragment*, Vector<GraphicsLayer*>& childList, int depth); 353 354 void rebuildCompositingLayerTreeForNamedFlowFixed(RenderLayer&, Vector<GraphicsLayer*>& childList, int depth); 351 355 352 356 // Recurses down the tree, updating layer geometry only. -
trunk/Source/WebCore/rendering/RenderNamedFlowFragment.h
r161553 r162117 67 67 // This method returns that renderer holding the layer. 68 68 // The return value may be null. 69 RenderLayerModelObject* layerOwner() const { return parent() && parent()->isRenderLayerModelObject() ? 70 toRenderLayerModelObject(parent()): nullptr; }69 RenderLayerModelObject* layerOwner() const { return parent() && parent()->isRenderLayerModelObject() ? toRenderLayerModelObject(parent()) 70 : nullptr; } 71 71 72 72 bool hasCustomRegionStyle() const { return m_hasCustomRegionStyle; } -
trunk/Source/WebCore/rendering/RenderNamedFlowThread.h
r161768 r162117 154 154 155 155 #endif // RenderNamedFlowThread_h 156
Note: See TracChangeset
for help on using the changeset viewer.