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

Side by Side Diff: third_party/WebKit/Source/platform/graphics/paint/TransformPaintPropertyNode.h

Issue 2729243002: Improve performance of GeometryMapper cache. (Closed)
Patch Set: none Created 3 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
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 #ifndef TransformPaintPropertyNode_h 5 #ifndef TransformPaintPropertyNode_h
6 #define TransformPaintPropertyNode_h 6 #define TransformPaintPropertyNode_h
7 7
8 #include "platform/PlatformExport.h" 8 #include "platform/PlatformExport.h"
9 #include "platform/geometry/FloatPoint3D.h" 9 #include "platform/geometry/FloatPoint3D.h"
10 #include "platform/graphics/CompositingReasons.h" 10 #include "platform/graphics/CompositingReasons.h"
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
181 m_directCompositingReasons == o.m_directCompositingReasons && 181 m_directCompositingReasons == o.m_directCompositingReasons &&
182 m_compositorElementId == o.m_compositorElementId && 182 m_compositorElementId == o.m_compositorElementId &&
183 !!m_scroll == !!o.m_scroll; 183 !!m_scroll == !!o.m_scroll;
184 } 184 }
185 185
186 String toTreeString() const; 186 String toTreeString() const;
187 #endif 187 #endif
188 188
189 String toString() const; 189 String toString() const;
190 190
191 // Clears all transform caches (see getTransformCache()).
192 static void clearCache();
193
191 private: 194 private:
192 TransformPaintPropertyNode( 195 TransformPaintPropertyNode(
193 PassRefPtr<const TransformPaintPropertyNode> parent, 196 PassRefPtr<const TransformPaintPropertyNode> parent,
194 const TransformationMatrix& matrix, 197 const TransformationMatrix& matrix,
195 const FloatPoint3D& origin, 198 const FloatPoint3D& origin,
196 bool flattensInheritedTransform, 199 bool flattensInheritedTransform,
197 unsigned renderingContextId, 200 unsigned renderingContextId,
198 CompositingReasons directCompositingReasons, 201 CompositingReasons directCompositingReasons,
199 CompositorElementId compositorElementId, 202 CompositorElementId compositorElementId,
200 PassRefPtr<ScrollPaintPropertyNode> scroll = nullptr) 203 PassRefPtr<ScrollPaintPropertyNode> scroll = nullptr)
201 : m_parent(parent), 204 : m_parent(parent),
202 m_matrix(matrix), 205 m_matrix(matrix),
203 m_origin(origin), 206 m_origin(origin),
204 m_flattensInheritedTransform(flattensInheritedTransform), 207 m_flattensInheritedTransform(flattensInheritedTransform),
205 m_renderingContextId(renderingContextId), 208 m_renderingContextId(renderingContextId),
206 m_directCompositingReasons(directCompositingReasons), 209 m_directCompositingReasons(directCompositingReasons),
207 m_compositorElementId(compositorElementId), 210 m_compositorElementId(compositorElementId),
208 m_scroll(scroll) {} 211 m_scroll(scroll) {}
209 212
213 struct TransformCacheEntry {
214 const TransformPaintPropertyNode* ancestorNode;
215 TransformationMatrix toAncestor;
216 TransformCacheEntry(const TransformPaintPropertyNode* ancestorNodeArg,
217 const TransformationMatrix& toAncestorArg)
218 : ancestorNode(ancestorNodeArg), toAncestor(toAncestorArg) {}
219 };
220
221 // For access to getCachedTransform() and setCachedTransform.
222 friend class GeometryMapper;
223 friend class GeometryMapperTest;
224
225 Vector<TransformCacheEntry>* getTransformCacheEntries();
226
227 // Returns the "transformed rect" (see GeometryMapper.h) of |this| in the
228 // space of |ancestorTransform|, if there is one cached. Otherwise returns
229 // null.
230 const TransformationMatrix* getCachedTransform(
231 const TransformPaintPropertyNode* ancestorTransform) const;
232
233 // Stores the "transformed rect" of |this| in the space of |ancestors|,
234 // into a local cache.
235 void setCachedTransform(const TransformPaintPropertyNode* ancestorTransform,
236 const TransformationMatrix& toAncestor) const;
237
210 RefPtr<const TransformPaintPropertyNode> m_parent; 238 RefPtr<const TransformPaintPropertyNode> m_parent;
211 TransformationMatrix m_matrix; 239 TransformationMatrix m_matrix;
212 FloatPoint3D m_origin; 240 FloatPoint3D m_origin;
213 bool m_flattensInheritedTransform; 241 bool m_flattensInheritedTransform;
214 unsigned m_renderingContextId; 242 unsigned m_renderingContextId;
215 CompositingReasons m_directCompositingReasons; 243 CompositingReasons m_directCompositingReasons;
216 CompositorElementId m_compositorElementId; 244 CompositorElementId m_compositorElementId;
217 RefPtr<ScrollPaintPropertyNode> m_scroll; 245 RefPtr<ScrollPaintPropertyNode> m_scroll;
246
247 std::unique_ptr<Vector<TransformCacheEntry>> m_transformCache;
248 unsigned m_cacheGeneration;
218 }; 249 };
219 250
220 // Redeclared here to avoid ODR issues. 251 // Redeclared here to avoid ODR issues.
221 // See platform/testing/PaintPrinters.h. 252 // See platform/testing/PaintPrinters.h.
222 void PrintTo(const TransformPaintPropertyNode&, std::ostream*); 253 void PrintTo(const TransformPaintPropertyNode&, std::ostream*);
223 254
224 } // namespace blink 255 } // namespace blink
225 256
226 #endif // TransformPaintPropertyNode_h 257 #endif // TransformPaintPropertyNode_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698