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

Side by Side Diff: Source/core/rendering/RenderLayer.cpp

Issue 183763016: Reduce compositing update in Silk's toggle_drawer by 20% (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Fix the glitch Created 6 years, 9 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 | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights reserved. 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights reserved.
3 * 3 *
4 * Portions are Copyright (C) 1998 Netscape Communications Corporation. 4 * Portions are Copyright (C) 1998 Netscape Communications Corporation.
5 * 5 *
6 * Other contributors: 6 * Other contributors:
7 * Robert O'Callahan <roc+@cs.cmu.edu> 7 * Robert O'Callahan <roc+@cs.cmu.edu>
8 * David Baron <dbaron@fas.harvard.edu> 8 * David Baron <dbaron@fas.harvard.edu>
9 * Christian Biesinger <cbiesinger@web.de> 9 * Christian Biesinger <cbiesinger@web.de>
10 * Randall Jesup <rjesup@wgate.com> 10 * Randall Jesup <rjesup@wgate.com>
(...skipping 692 matching lines...) Expand 10 before | Expand all | Expand 10 after
703 } 703 }
704 } 704 }
705 705
706 void RenderLayer::setHasVisibleContent() 706 void RenderLayer::setHasVisibleContent()
707 { 707 {
708 if (m_hasVisibleContent && !m_visibleContentStatusDirty) { 708 if (m_hasVisibleContent && !m_visibleContentStatusDirty) {
709 ASSERT(!parent() || parent()->hasVisibleDescendant()); 709 ASSERT(!parent() || parent()->hasVisibleDescendant());
710 return; 710 return;
711 } 711 }
712 712
713 m_hasVisibleContent = true;
713 m_visibleContentStatusDirty = false; 714 m_visibleContentStatusDirty = false;
714 m_hasVisibleContent = true; 715
716 {
717 DisableCompositingQueryAsserts disabler;
ojan 2014/03/05 18:29:51 Are there tests that you know hit this? It'd be ni
abarth-chromium 2014/03/05 23:12:19 I haven't tried, but I'm sure it's hit by many tes
718 if (RenderLayer* compositingLayer = enclosingCompositingLayer())
719 compositingLayer->compositedLayerMapping()->setNeedsGeometryUpdate() ;
720 }
721
715 repainter().computeRepaintRects(renderer()->containerForRepaint()); 722 repainter().computeRepaintRects(renderer()->containerForRepaint());
716 if (!m_stackingNode->isNormalFlowOnly()) { 723 if (!m_stackingNode->isNormalFlowOnly()) {
717 // We don't collect invisible layers in z-order lists if we are not in c ompositing mode. 724 // We don't collect invisible layers in z-order lists if we are not in c ompositing mode.
718 // As we became visible, we need to dirty our stacking containers ancest ors to be properly 725 // As we became visible, we need to dirty our stacking containers ancest ors to be properly
719 // collected. FIXME: When compositing, we could skip this dirtying phase . 726 // collected. FIXME: When compositing, we could skip this dirtying phase .
720 for (RenderLayerStackingNode* sc = m_stackingNode->ancestorStackingConta inerNode(); sc; sc = sc->ancestorStackingContainerNode()) { 727 for (RenderLayerStackingNode* sc = m_stackingNode->ancestorStackingConta inerNode(); sc; sc = sc->ancestorStackingContainerNode()) {
721 sc->dirtyZOrderLists(); 728 sc->dirtyZOrderLists();
722 if (sc->layer()->hasVisibleContent()) 729 if (sc->layer()->hasVisibleContent())
723 break; 730 break;
724 } 731 }
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
868 r = r->parent(); 875 r = r->parent();
869 if (r == renderer()) 876 if (r == renderer())
870 r = 0; 877 r = 0;
871 } while (r && !r->nextSibling()); 878 } while (r && !r->nextSibling());
872 if (r) 879 if (r)
873 r = r->nextSibling(); 880 r = r->nextSibling();
874 } 881 }
875 } 882 }
876 } 883 }
877 m_visibleContentStatusDirty = false; 884 m_visibleContentStatusDirty = false;
885
886 DisableCompositingQueryAsserts disabler;
887 if (RenderLayer* compositingLayer = enclosingCompositingLayer())
888 compositingLayer->compositedLayerMapping()->setNeedsGeometryUpdate() ;
ojan 2014/03/05 18:29:51 Technically, you only need to do this if m_hasVisi
abarth-chromium 2014/03/05 23:12:19 That's right. I'll add that branch.
878 } 889 }
879 } 890 }
880 891
881 void RenderLayer::dirty3DTransformedDescendantStatus() 892 void RenderLayer::dirty3DTransformedDescendantStatus()
882 { 893 {
883 RenderLayerStackingNode* stackingNode = m_stackingNode->ancestorStackingCont ainerNode(); 894 RenderLayerStackingNode* stackingNode = m_stackingNode->ancestorStackingCont ainerNode();
884 if (!stackingNode) 895 if (!stackingNode)
885 return; 896 return;
886 897
887 stackingNode->layer()->m_3DTransformedDescendantStatusDirty = true; 898 stackingNode->layer()->m_3DTransformedDescendantStatusDirty = true;
(...skipping 2612 matching lines...) Expand 10 before | Expand all | Expand 10 after
3500 CompositedLayerMappingPtr RenderLayer::compositedLayerMapping() const 3511 CompositedLayerMappingPtr RenderLayer::compositedLayerMapping() const
3501 { 3512 {
3502 ASSERT(isAllowedToQueryCompositingState()); 3513 ASSERT(isAllowedToQueryCompositingState());
3503 return m_compositedLayerMapping.get(); 3514 return m_compositedLayerMapping.get();
3504 } 3515 }
3505 3516
3506 CompositedLayerMappingPtr RenderLayer::ensureCompositedLayerMapping() 3517 CompositedLayerMappingPtr RenderLayer::ensureCompositedLayerMapping()
3507 { 3518 {
3508 if (!m_compositedLayerMapping) { 3519 if (!m_compositedLayerMapping) {
3509 m_compositedLayerMapping = adoptPtr(new CompositedLayerMapping(this)); 3520 m_compositedLayerMapping = adoptPtr(new CompositedLayerMapping(this));
3521 m_compositedLayerMapping->setNeedsGeometryUpdate();
3510 3522
3511 updateOrRemoveFilterEffectRenderer(); 3523 updateOrRemoveFilterEffectRenderer();
3512 3524
3513 if (RuntimeEnabledFeatures::cssCompositingEnabled()) 3525 if (RuntimeEnabledFeatures::cssCompositingEnabled())
3514 compositedLayerMapping()->setBlendMode(m_blendInfo.blendMode()); 3526 compositedLayerMapping()->setBlendMode(m_blendInfo.blendMode());
3515 } 3527 }
3516 return m_compositedLayerMapping.get(); 3528 return m_compositedLayerMapping.get();
3517 } 3529 }
3518 3530
3519 void RenderLayer::clearCompositedLayerMapping(bool layerBeingDestroyed) 3531 void RenderLayer::clearCompositedLayerMapping(bool layerBeingDestroyed)
3520 { 3532 {
3533 if (!layerBeingDestroyed)
3534 m_compositedLayerMapping->setNeedsGeometryUpdate();
3535
3521 m_compositedLayerMapping.clear(); 3536 m_compositedLayerMapping.clear();
3522 3537
3523 if (!layerBeingDestroyed) 3538 if (!layerBeingDestroyed)
3524 updateOrRemoveFilterEffectRenderer(); 3539 updateOrRemoveFilterEffectRenderer();
3525 } 3540 }
3526 3541
3527 bool RenderLayer::hasCompositedMask() const 3542 bool RenderLayer::hasCompositedMask() const
3528 { 3543 {
3529 return m_compositedLayerMapping && m_compositedLayerMapping->hasMaskLayer(); 3544 return m_compositedLayerMapping && m_compositedLayerMapping->hasMaskLayer();
3530 } 3545 }
(...skipping 335 matching lines...) Expand 10 before | Expand all | Expand 10 after
3866 DisableCompositingQueryAsserts disabler; 3881 DisableCompositingQueryAsserts disabler;
3867 if (paintsWithFilters()) 3882 if (paintsWithFilters())
3868 didPaintWithFilters = true; 3883 didPaintWithFilters = true;
3869 updateFilters(oldStyle, renderer()->style()); 3884 updateFilters(oldStyle, renderer()->style());
3870 } 3885 }
3871 3886
3872 // FIXME: Remove incremental compositing updates after fixing the chicken/eg g issues 3887 // FIXME: Remove incremental compositing updates after fixing the chicken/eg g issues
3873 // https://code.google.com/p/chromium/issues/detail?id=343756 3888 // https://code.google.com/p/chromium/issues/detail?id=343756
3874 DisableCompositingQueryAsserts disabler; 3889 DisableCompositingQueryAsserts disabler;
3875 3890
3891 if (RenderLayer* compositingLayer = enclosingCompositingLayer())
3892 compositingLayer->compositedLayerMapping()->setNeedsGeometryUpdate();
3893
3876 const RenderStyle* newStyle = renderer()->style(); 3894 const RenderStyle* newStyle = renderer()->style();
3877 3895
3878 compositor()->updateLayerCompositingState(this, RenderLayerCompositor::UseCh ickenEggHacks); 3896 compositor()->updateLayerCompositingState(this, RenderLayerCompositor::UseCh ickenEggHacks);
3879 // FIXME: this compositing logic should be pushed into the compositing code, not here. 3897 // FIXME: this compositing logic should be pushed into the compositing code, not here.
3880 if (needsCompositingLayersRebuiltForClip(oldStyle, newStyle) 3898 if (needsCompositingLayersRebuiltForClip(oldStyle, newStyle)
3881 || needsCompositingLayersRebuiltForOverflow(oldStyle, newStyle) 3899 || needsCompositingLayersRebuiltForOverflow(oldStyle, newStyle)
3882 || needsCompositingLayersRebuiltForFilters(oldStyle, newStyle, didPaintW ithFilters) 3900 || needsCompositingLayersRebuiltForFilters(oldStyle, newStyle, didPaintW ithFilters)
3883 || needsCompositingLayersRebuiltForBlending(oldStyle, newStyle)) { 3901 || needsCompositingLayersRebuiltForBlending(oldStyle, newStyle)) {
3884 compositor()->setCompositingLayersNeedRebuild(); 3902 compositor()->setCompositingLayersNeedRebuild();
3885 } 3903 }
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
4034 } 4052 }
4035 } 4053 }
4036 4054
4037 void showLayerTree(const WebCore::RenderObject* renderer) 4055 void showLayerTree(const WebCore::RenderObject* renderer)
4038 { 4056 {
4039 if (!renderer) 4057 if (!renderer)
4040 return; 4058 return;
4041 showLayerTree(renderer->enclosingLayer()); 4059 showLayerTree(renderer->enclosingLayer());
4042 } 4060 }
4043 #endif 4061 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698