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

Side by Side Diff: Source/core/rendering/compositing/CompositingReasonFinder.cpp

Issue 270383002: Remove will-change: contents GPU rasterization hint (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 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 | Annotate | Revision Log
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "config.h" 5 #include "config.h"
6 #include "core/rendering/compositing/CompositingReasonFinder.h" 6 #include "core/rendering/compositing/CompositingReasonFinder.h"
7 7
8 #include "CSSPropertyNames.h" 8 #include "CSSPropertyNames.h"
9 #include "HTMLNames.h" 9 #include "HTMLNames.h"
10 #include "core/frame/FrameView.h" 10 #include "core/frame/FrameView.h"
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
44 44
45 Settings& settings = m_renderView.document().page()->settings(); 45 Settings& settings = m_renderView.document().page()->settings();
46 if (settings.acceleratedCompositingForVideoEnabled()) 46 if (settings.acceleratedCompositingForVideoEnabled())
47 m_compositingTriggers |= VideoTrigger; 47 m_compositingTriggers |= VideoTrigger;
48 if (settings.acceleratedCompositingForCanvasEnabled()) 48 if (settings.acceleratedCompositingForCanvasEnabled())
49 m_compositingTriggers |= CanvasTrigger; 49 m_compositingTriggers |= CanvasTrigger;
50 if (settings.compositedScrollingForFramesEnabled()) 50 if (settings.compositedScrollingForFramesEnabled())
51 m_compositingTriggers |= ScrollableInnerFrameTrigger; 51 m_compositingTriggers |= ScrollableInnerFrameTrigger;
52 if (settings.acceleratedCompositingForFiltersEnabled()) 52 if (settings.acceleratedCompositingForFiltersEnabled())
53 m_compositingTriggers |= FilterTrigger; 53 m_compositingTriggers |= FilterTrigger;
54 if (settings.acceleratedCompositingForGpuRasterizationHintEnabled())
55 m_compositingTriggers |= GPURasterizationTrigger;
56 54
57 // We map both these settings to universal overlow scrolling. 55 // We map both these settings to universal overlow scrolling.
58 // FIXME: Replace these settings with a generic compositing setting for High DPI. 56 // FIXME: Replace these settings with a generic compositing setting for High DPI.
59 if (settings.acceleratedCompositingForOverflowScrollEnabled() || settings.co mpositorDrivenAcceleratedScrollingEnabled()) 57 if (settings.acceleratedCompositingForOverflowScrollEnabled() || settings.co mpositorDrivenAcceleratedScrollingEnabled())
60 m_compositingTriggers |= OverflowScrollTrigger; 58 m_compositingTriggers |= OverflowScrollTrigger;
61 59
62 // FIXME: acceleratedCompositingForFixedPositionEnabled should be renamed ac celeratedCompositingForViewportConstrainedPositionEnabled(). 60 // FIXME: acceleratedCompositingForFixedPositionEnabled should be renamed ac celeratedCompositingForViewportConstrainedPositionEnabled().
63 // Or the sticky and fixed position elements should be behind different flag s. 61 // Or the sticky and fixed position elements should be behind different flag s.
64 if (settings.acceleratedCompositingForFixedPositionEnabled()) 62 if (settings.acceleratedCompositingForFixedPositionEnabled())
65 m_compositingTriggers |= ViewportConstrainedPositionedTrigger; 63 m_compositingTriggers |= ViewportConstrainedPositionedTrigger;
(...skipping 11 matching lines...) Expand all
77 { 75 {
78 return m_compositingTriggers & LegacyOverflowScrollTrigger; 76 return m_compositingTriggers & LegacyOverflowScrollTrigger;
79 } 77 }
80 78
81 bool CompositingReasonFinder::isMainFrame() const 79 bool CompositingReasonFinder::isMainFrame() const
82 { 80 {
83 // FIXME: LocalFrame::isMainFrame() is probably better. 81 // FIXME: LocalFrame::isMainFrame() is probably better.
84 return !m_renderView.document().ownerElement(); 82 return !m_renderView.document().ownerElement();
85 } 83 }
86 84
87 CompositingReasons CompositingReasonFinder::suppressWillChangeAndAnimationForGpu Rasterization(const RenderLayer* layer, CompositingReasons styleReasons) const
88 {
89 CompositingReasons adjustedReasons = styleReasons;
90 adjustedReasons &= ~(CompositingReasonWillChangeCompositingHint | Compositin gReasonWillChangeGpuRasterizationHint);
91
92 // We can suppress layer creation for animations before animations start, bu t not
93 // once they're already running on the compositor.
94 if (!layer->renderer()->style()->isRunningAnimationOnCompositor())
95 adjustedReasons &= ~CompositingReasonActiveAnimation;
96
97 return adjustedReasons;
98 }
99
100 CompositingReasons CompositingReasonFinder::directReasons(const RenderLayer* lay er, bool* needToRecomputeCompositingRequirements) const 85 CompositingReasons CompositingReasonFinder::directReasons(const RenderLayer* lay er, bool* needToRecomputeCompositingRequirements) const
101 { 86 {
102 CompositingReasons styleReasons = layer->styleDeterminedCompositingReasons() ; 87 CompositingReasons styleReasons = layer->styleDeterminedCompositingReasons() ;
103 ASSERT(styleDeterminedReasons(layer->renderer()) == styleReasons); 88 ASSERT(styleDeterminedReasons(layer->renderer()) == styleReasons);
104 return styleReasons | nonStyleDeterminedDirectReasons(layer, needToRecompute CompositingRequirements); 89 return styleReasons | nonStyleDeterminedDirectReasons(layer, needToRecompute CompositingRequirements);
105 } 90 }
106 91
107 // This information doesn't appear to be incorporated into CompositingReasons. 92 // This information doesn't appear to be incorporated into CompositingReasons.
108 bool CompositingReasonFinder::requiresCompositingForScrollableFrame() const 93 bool CompositingReasonFinder::requiresCompositingForScrollableFrame() const
109 { 94 {
(...skipping 21 matching lines...) Expand all
131 116
132 if (requiresCompositingForAnimation(renderer)) 117 if (requiresCompositingForAnimation(renderer))
133 directReasons |= CompositingReasonActiveAnimation; 118 directReasons |= CompositingReasonActiveAnimation;
134 119
135 if (requiresCompositingForFilters(renderer)) 120 if (requiresCompositingForFilters(renderer))
136 directReasons |= CompositingReasonFilters; 121 directReasons |= CompositingReasonFilters;
137 122
138 if (requiresCompositingForWillChangeCompositingHint(renderer)) 123 if (requiresCompositingForWillChangeCompositingHint(renderer))
139 directReasons |= CompositingReasonWillChangeCompositingHint; 124 directReasons |= CompositingReasonWillChangeCompositingHint;
140 125
141 if (requiresCompositingForWillChangeGpuRasterizationHint(renderer))
142 directReasons |= CompositingReasonWillChangeGpuRasterizationHint;
143
144 ASSERT(!(directReasons & ~CompositingReasonComboAllStyleDeterminedReasons)); 126 ASSERT(!(directReasons & ~CompositingReasonComboAllStyleDeterminedReasons));
145 return directReasons; 127 return directReasons;
146 } 128 }
147 129
148 bool CompositingReasonFinder::requiresCompositingForTransform(RenderObject* rend erer) const 130 bool CompositingReasonFinder::requiresCompositingForTransform(RenderObject* rend erer) const
149 { 131 {
150 // Note that we ask the renderer if it has a transform, because the style ma y have transforms, 132 // Note that we ask the renderer if it has a transform, because the style ma y have transforms,
151 // but the renderer may be an inline that doesn't suppport them. 133 // but the renderer may be an inline that doesn't suppport them.
152 return renderer->hasTransform() && renderer->style()->transform().has3DOpera tion(); 134 return renderer->hasTransform() && renderer->style()->transform().has3DOpera tion();
153 } 135 }
154 136
155 bool CompositingReasonFinder::requiresCompositingForBackfaceVisibilityHidden(Ren derObject* renderer) const 137 bool CompositingReasonFinder::requiresCompositingForBackfaceVisibilityHidden(Ren derObject* renderer) const
156 { 138 {
157 return renderer->style()->backfaceVisibility() == BackfaceVisibilityHidden; 139 return renderer->style()->backfaceVisibility() == BackfaceVisibilityHidden;
158 } 140 }
159 141
160 bool CompositingReasonFinder::requiresCompositingForFilters(RenderObject* render er) const 142 bool CompositingReasonFinder::requiresCompositingForFilters(RenderObject* render er) const
161 { 143 {
162 if (!(m_compositingTriggers & FilterTrigger)) 144 if (!(m_compositingTriggers & FilterTrigger))
163 return false; 145 return false;
164 146
165 return renderer->hasFilter(); 147 return renderer->hasFilter();
166 } 148 }
167 149
168 bool CompositingReasonFinder::requiresCompositingForWillChangeCompositingHint(co nst RenderObject* renderer) const 150 bool CompositingReasonFinder::requiresCompositingForWillChangeCompositingHint(co nst RenderObject* renderer) const
169 { 151 {
170 return renderer->style()->hasWillChangeCompositingHint(); 152 return renderer->style()->hasWillChangeCompositingHint();
171 } 153 }
172 154
173 bool CompositingReasonFinder::requiresCompositingForWillChangeGpuRasterizationHi nt(const RenderObject* renderer) const
174 {
175 if (!(m_compositingTriggers & GPURasterizationTrigger))
176 return false;
177
178 return renderer->style()->hasWillChangeGpuRasterizationHint();
179 }
180
181 CompositingReasons CompositingReasonFinder::nonStyleDeterminedDirectReasons(cons t RenderLayer* layer, bool* needToRecomputeCompositingRequirements) const 155 CompositingReasons CompositingReasonFinder::nonStyleDeterminedDirectReasons(cons t RenderLayer* layer, bool* needToRecomputeCompositingRequirements) const
182 { 156 {
183 CompositingReasons directReasons = CompositingReasonNone; 157 CompositingReasons directReasons = CompositingReasonNone;
184 RenderObject* renderer = layer->renderer(); 158 RenderObject* renderer = layer->renderer();
185 159
186 if (hasOverflowScrollTrigger()) { 160 if (hasOverflowScrollTrigger()) {
187 if (requiresCompositingForOutOfFlowClipping(layer)) 161 if (requiresCompositingForOutOfFlowClipping(layer))
188 directReasons |= CompositingReasonOutOfFlowClipping; 162 directReasons |= CompositingReasonOutOfFlowClipping;
189 163
190 if (requiresCompositingForOverflowScrollingParent(layer)) 164 if (requiresCompositingForOverflowScrollingParent(layer))
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
340 *needToRecomputeCompositingRequirements = true; 314 *needToRecomputeCompositingRequirements = true;
341 } 315 }
342 return false; 316 return false;
343 } 317 }
344 } 318 }
345 319
346 return true; 320 return true;
347 } 321 }
348 322
349 } 323 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698