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

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

Issue 233063004: Suppress layer creation for descendants of GPU-rasterized layers (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Move assert disabler in ~CompositedLayerMapping Created 6 years, 8 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 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
82 { 82 {
83 return m_compositingTriggers & LegacyOverflowScrollTrigger; 83 return m_compositingTriggers & LegacyOverflowScrollTrigger;
84 } 84 }
85 85
86 bool CompositingReasonFinder::isMainFrame() const 86 bool CompositingReasonFinder::isMainFrame() const
87 { 87 {
88 // FIXME: LocalFrame::isMainFrame() is probably better. 88 // FIXME: LocalFrame::isMainFrame() is probably better.
89 return !m_renderView.document().ownerElement(); 89 return !m_renderView.document().ownerElement();
90 } 90 }
91 91
92 CompositingReasons CompositingReasonFinder::suppressWillChangeAndAnimationForGpu Rasterization(const RenderLayer* layer, CompositingReasons styleReasons) const
93 {
94 CompositingReasons adjustedReasons = styleReasons;
95 adjustedReasons &= ~(CompositingReasonWillChangeCompositingHint | Compositin gReasonWillChangeGpuRasterizationHint);
96
97 // We can suppress layer creation for animations before animations start, bu t not
98 // once they're already running on the compositor.
99 if (!layer->renderer()->style()->isRunningAnimationOnCompositor())
100 adjustedReasons &= ~CompositingReasonActiveAnimation;
101
102 return adjustedReasons;
103 }
104
92 CompositingReasons CompositingReasonFinder::directReasons(const RenderLayer* lay er, bool* needToRecomputeCompositingRequirements) const 105 CompositingReasons CompositingReasonFinder::directReasons(const RenderLayer* lay er, bool* needToRecomputeCompositingRequirements) const
93 { 106 {
94 CompositingReasons styleReasons = layer->styleDeterminedCompositingReasons() ; 107 CompositingReasons styleReasons = layer->styleDeterminedCompositingReasons() ;
95 ASSERT(styleDeterminedReasons(layer->renderer()) == styleReasons); 108 ASSERT(styleDeterminedReasons(layer->renderer()) == styleReasons);
96 return styleReasons | nonStyleDeterminedDirectReasons(layer, needToRecompute CompositingRequirements); 109 return styleReasons | nonStyleDeterminedDirectReasons(layer, needToRecompute CompositingRequirements);
97 } 110 }
98 111
99 // This information doesn't appear to be incorporated into CompositingReasons. 112 // This information doesn't appear to be incorporated into CompositingReasons.
100 bool CompositingReasonFinder::requiresCompositingForScrollableFrame() const 113 bool CompositingReasonFinder::requiresCompositingForScrollableFrame() const
101 { 114 {
(...skipping 18 matching lines...) Expand all
120 133
121 if (requiresCompositingForBackfaceVisibilityHidden(renderer)) 134 if (requiresCompositingForBackfaceVisibilityHidden(renderer))
122 directReasons |= CompositingReasonBackfaceVisibilityHidden; 135 directReasons |= CompositingReasonBackfaceVisibilityHidden;
123 136
124 if (requiresCompositingForAnimation(renderer)) 137 if (requiresCompositingForAnimation(renderer))
125 directReasons |= CompositingReasonActiveAnimation; 138 directReasons |= CompositingReasonActiveAnimation;
126 139
127 if (requiresCompositingForFilters(renderer)) 140 if (requiresCompositingForFilters(renderer))
128 directReasons |= CompositingReasonFilters; 141 directReasons |= CompositingReasonFilters;
129 142
130 if (requiresCompositingForWillChange(renderer)) 143 if (requiresCompositingForWillChangeCompositingHint(renderer))
131 directReasons |= CompositingReasonWillChange; 144 directReasons |= CompositingReasonWillChangeCompositingHint;
145
146 if (requiresCompositingForWillChangeGpuRasterizationHint(renderer))
147 directReasons |= CompositingReasonWillChangeGpuRasterizationHint;
132 148
133 ASSERT(!(directReasons & ~CompositingReasonComboAllStyleDeterminedReasons)); 149 ASSERT(!(directReasons & ~CompositingReasonComboAllStyleDeterminedReasons));
134 return directReasons; 150 return directReasons;
135 } 151 }
136 152
137 bool CompositingReasonFinder::requiresCompositingForTransform(RenderObject* rend erer) const 153 bool CompositingReasonFinder::requiresCompositingForTransform(RenderObject* rend erer) const
138 { 154 {
139 if (!(m_compositingTriggers & ThreeDTransformTrigger)) 155 if (!(m_compositingTriggers & ThreeDTransformTrigger))
140 return false; 156 return false;
141 157
(...skipping 11 matching lines...) Expand all
153 } 169 }
154 170
155 bool CompositingReasonFinder::requiresCompositingForFilters(RenderObject* render er) const 171 bool CompositingReasonFinder::requiresCompositingForFilters(RenderObject* render er) const
156 { 172 {
157 if (!(m_compositingTriggers & FilterTrigger)) 173 if (!(m_compositingTriggers & FilterTrigger))
158 return false; 174 return false;
159 175
160 return renderer->hasFilter(); 176 return renderer->hasFilter();
161 } 177 }
162 178
163 bool CompositingReasonFinder::requiresCompositingForWillChange(const RenderObjec t* renderer) const 179 bool CompositingReasonFinder::requiresCompositingForWillChangeCompositingHint(co nst RenderObject* renderer) const
164 { 180 {
165 if (renderer->style()->hasWillChangeCompositingHint()) 181 return renderer->style()->hasWillChangeCompositingHint();
166 return true; 182 }
167 183
184 bool CompositingReasonFinder::requiresCompositingForWillChangeGpuRasterizationHi nt(const RenderObject* renderer) const
185 {
168 if (!(m_compositingTriggers & GPURasterizationTrigger)) 186 if (!(m_compositingTriggers & GPURasterizationTrigger))
169 return false; 187 return false;
170 188
171 return renderer->style()->hasWillChangeGpuRasterizationHint(); 189 return renderer->style()->hasWillChangeGpuRasterizationHint();
172 } 190 }
173 191
174 CompositingReasons CompositingReasonFinder::nonStyleDeterminedDirectReasons(cons t RenderLayer* layer, bool* needToRecomputeCompositingRequirements) const 192 CompositingReasons CompositingReasonFinder::nonStyleDeterminedDirectReasons(cons t RenderLayer* layer, bool* needToRecomputeCompositingRequirements) const
175 { 193 {
176 CompositingReasons directReasons = CompositingReasonNone; 194 CompositingReasons directReasons = CompositingReasonNone;
177 RenderObject* renderer = layer->renderer(); 195 RenderObject* renderer = layer->renderer();
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
336 *needToRecomputeCompositingRequirements = true; 354 *needToRecomputeCompositingRequirements = true;
337 } 355 }
338 return false; 356 return false;
339 } 357 }
340 } 358 }
341 359
342 return true; 360 return true;
343 } 361 }
344 362
345 } 363 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698