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

Side by Side Diff: Source/WebCore/rendering/RenderLayerCompositor.cpp

Issue 10342008: Revert 114283 - Avoid using backing store for compositing layers that just need to clip (Closed) Base URL: http://svn.webkit.org/repository/webkit/branches/chromium/1123/
Patch Set: Created 8 years, 7 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2009, 2010 Apple Inc. All rights reserved. 2 * Copyright (C) 2009, 2010 Apple Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 566 matching lines...) Expand 10 before | Expand all | Expand 10 after
577 setCompositingLayersNeedRebuild(); 577 setCompositingLayersNeedRebuild();
578 } 578 }
579 579
580 void RenderLayerCompositor::layerWillBeRemoved(RenderLayer* parent, RenderLayer* child) 580 void RenderLayerCompositor::layerWillBeRemoved(RenderLayer* parent, RenderLayer* child)
581 { 581 {
582 if (!child->isComposited() || parent->renderer()->documentBeingDestroyed()) 582 if (!child->isComposited() || parent->renderer()->documentBeingDestroyed())
583 return; 583 return;
584 584
585 setCompositingParent(child, 0); 585 setCompositingParent(child, 0);
586 586
587 RenderLayer* compLayer = parent->enclosingCompositingLayerForRepaint(); 587 RenderLayer* compLayer = parent->enclosingCompositingLayer();
588 if (compLayer) { 588 if (compLayer) {
589 ASSERT(compLayer->backing()); 589 ASSERT(compLayer->backing());
590 LayoutRect compBounds = child->backing()->compositedBounds(); 590 LayoutRect compBounds = child->backing()->compositedBounds();
591 591
592 LayoutPoint offset; 592 LayoutPoint offset;
593 child->convertToLayerCoords(compLayer, offset); 593 child->convertToLayerCoords(compLayer, offset);
594 compBounds.moveBy(offset); 594 compBounds.moveBy(offset);
595 595
596 compLayer->setBackingNeedsRepaintInRect(compBounds); 596 compLayer->setBackingNeedsRepaintInRect(compBounds);
597 597
(...skipping 598 matching lines...) Expand 10 before | Expand all | Expand 10 after
1196 1196
1197 1197
1198 void RenderLayerCompositor::repaintCompositedLayersAbsoluteRect(const IntRect& a bsRect) 1198 void RenderLayerCompositor::repaintCompositedLayersAbsoluteRect(const IntRect& a bsRect)
1199 { 1199 {
1200 recursiveRepaintLayerRect(rootRenderLayer(), absRect); 1200 recursiveRepaintLayerRect(rootRenderLayer(), absRect);
1201 } 1201 }
1202 1202
1203 void RenderLayerCompositor::recursiveRepaintLayerRect(RenderLayer* layer, const IntRect& rect) 1203 void RenderLayerCompositor::recursiveRepaintLayerRect(RenderLayer* layer, const IntRect& rect)
1204 { 1204 {
1205 // FIXME: This method does not work correctly with transforms. 1205 // FIXME: This method does not work correctly with transforms.
1206 if (layer->isComposited() && !layer->backing()->paintsIntoCompositedAncestor ()) 1206 if (layer->isComposited())
1207 layer->setBackingNeedsRepaintInRect(rect); 1207 layer->setBackingNeedsRepaintInRect(rect);
1208 1208
1209 #if !ASSERT_DISABLED 1209 #if !ASSERT_DISABLED
1210 LayerListMutationDetector mutationChecker(layer); 1210 LayerListMutationDetector mutationChecker(layer);
1211 #endif 1211 #endif
1212 1212
1213 if (layer->hasCompositingDescendant()) { 1213 if (layer->hasCompositingDescendant()) {
1214 if (Vector<RenderLayer*>* negZOrderList = layer->negZOrderList()) { 1214 if (Vector<RenderLayer*>* negZOrderList = layer->negZOrderList()) {
1215 size_t listSize = negZOrderList->size(); 1215 size_t listSize = negZOrderList->size();
1216 for (size_t i = 0; i < listSize; ++i) { 1216 for (size_t i = 0; i < listSize; ++i) {
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
1391 bool RenderLayerCompositor::requiresCompositingLayer(const RenderLayer* layer) c onst 1391 bool RenderLayerCompositor::requiresCompositingLayer(const RenderLayer* layer) c onst
1392 { 1392 {
1393 RenderObject* renderer = layer->renderer(); 1393 RenderObject* renderer = layer->renderer();
1394 // The compositing state of a reflection should match that of its reflected layer. 1394 // The compositing state of a reflection should match that of its reflected layer.
1395 if (layer->isReflection()) { 1395 if (layer->isReflection()) {
1396 renderer = renderer->parent(); // The RenderReplica's parent is the obje ct being reflected. 1396 renderer = renderer->parent(); // The RenderReplica's parent is the obje ct being reflected.
1397 layer = toRenderBoxModelObject(renderer)->layer(); 1397 layer = toRenderBoxModelObject(renderer)->layer();
1398 } 1398 }
1399 // The root layer always has a compositing layer, but it may not have backin g. 1399 // The root layer always has a compositing layer, but it may not have backin g.
1400 return requiresCompositingForTransform(renderer) 1400 return requiresCompositingForTransform(renderer)
1401 || requiresCompositingForVideo(renderer) 1401 || requiresCompositingForVideo(renderer)
1402 || requiresCompositingForCanvas(renderer) 1402 || requiresCompositingForCanvas(renderer)
1403 || requiresCompositingForPlugin(renderer) 1403 || requiresCompositingForPlugin(renderer)
1404 || requiresCompositingForFrame(renderer) 1404 || requiresCompositingForFrame(renderer)
1405 || (canRender3DTransforms() && renderer->style()->backfaceVisibility() = = BackfaceVisibilityHidden) 1405 || (canRender3DTransforms() && renderer->style()->backfaceVisibilit y() == BackfaceVisibilityHidden)
1406 || clipsCompositingDescendants(layer) 1406 || clipsCompositingDescendants(layer)
1407 || requiresCompositingForAnimation(renderer) 1407 || requiresCompositingForAnimation(renderer)
1408 || requiresCompositingForFilters(renderer) 1408 || requiresCompositingForFilters(renderer)
1409 || requiresCompositingForPosition(renderer, layer); 1409 || requiresCompositingForPosition(renderer, layer);
1410 } 1410 }
1411 1411
1412 bool RenderLayerCompositor::canBeComposited(const RenderLayer* layer) const 1412 bool RenderLayerCompositor::canBeComposited(const RenderLayer* layer) const
1413 { 1413 {
1414 return m_hasAcceleratedCompositing && layer->isSelfPaintingLayer(); 1414 return m_hasAcceleratedCompositing && layer->isSelfPaintingLayer();
1415 } 1415 }
1416 1416
1417 bool RenderLayerCompositor::requiresOwnBackingStore(const RenderLayer* layer, co nst RenderLayer* compositingAncestorLayer) const
1418 {
1419 RenderObject* renderer = layer->renderer();
1420 if (compositingAncestorLayer
1421 && !(compositingAncestorLayer->backing()->graphicsLayer()->drawsContent( )
1422 || compositingAncestorLayer->backing()->paintsIntoWindow()
1423 || compositingAncestorLayer->backing()->paintsIntoCompositedAncestor ()))
1424 return true;
1425
1426 return layer->isRootLayer()
1427 || layer->transform() // note: excludes perspective and transformStyle3D .
1428 || requiresCompositingForVideo(renderer)
1429 || requiresCompositingForCanvas(renderer)
1430 || requiresCompositingForPlugin(renderer)
1431 || requiresCompositingForFrame(renderer)
1432 || (canRender3DTransforms() && renderer->style()->backfaceVisibility() = = BackfaceVisibilityHidden)
1433 || requiresCompositingForAnimation(renderer)
1434 || requiresCompositingForFilters(renderer)
1435 || requiresCompositingForPosition(renderer, layer)
1436 || renderer->isTransparent()
1437 || renderer->hasMask()
1438 || renderer->hasReflection()
1439 || renderer->hasFilter()
1440 || layer->mustOverlapCompositedLayers();
1441 }
1442
1443 #if !LOG_DISABLED 1417 #if !LOG_DISABLED
1444 const char* RenderLayerCompositor::reasonForCompositing(const RenderLayer* layer ) 1418 const char* RenderLayerCompositor::reasonForCompositing(const RenderLayer* layer )
1445 { 1419 {
1446 RenderObject* renderer = layer->renderer(); 1420 RenderObject* renderer = layer->renderer();
1447 if (layer->isReflection()) { 1421 if (layer->isReflection()) {
1448 renderer = renderer->parent(); 1422 renderer = renderer->parent();
1449 layer = toRenderBoxModelObject(renderer)->layer(); 1423 layer = toRenderBoxModelObject(renderer)->layer();
1450 } 1424 }
1451 1425
1452 if (renderer->hasTransform() && renderer->style()->hasPerspective()) 1426 if (renderer->hasTransform() && renderer->style()->hasPerspective())
(...skipping 833 matching lines...) Expand 10 before | Expand all | Expand 10 after
2286 if (Page* page = frame->page()) 2260 if (Page* page = frame->page())
2287 return page->scrollingCoordinator(); 2261 return page->scrollingCoordinator();
2288 } 2262 }
2289 2263
2290 return 0; 2264 return 0;
2291 } 2265 }
2292 2266
2293 } // namespace WebCore 2267 } // namespace WebCore
2294 2268
2295 #endif // USE(ACCELERATED_COMPOSITING) 2269 #endif // USE(ACCELERATED_COMPOSITING)
OLDNEW
« no previous file with comments | « Source/WebCore/rendering/RenderLayerCompositor.h ('k') | Source/WebCore/rendering/RenderObject.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698