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

Unified Diff: Source/core/page/scrolling/ScrollingCoordinator.cpp

Issue 19614004: Compositor hit test performance improvement (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Merge with trunk Created 7 years, 5 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 side-by-side diff with in-line comments
Download patch
Index: Source/core/page/scrolling/ScrollingCoordinator.cpp
diff --git a/Source/core/page/scrolling/ScrollingCoordinator.cpp b/Source/core/page/scrolling/ScrollingCoordinator.cpp
index 0f5faec87e07500fae5a511398ccf52c3717d382..6d24bf271475ef03841d400c3298098dd5fc7fcd 100644
--- a/Source/core/page/scrolling/ScrollingCoordinator.cpp
+++ b/Source/core/page/scrolling/ScrollingCoordinator.cpp
@@ -316,6 +316,8 @@ bool ScrollingCoordinator::scrollableAreaScrollLayerDidChange(ScrollableArea* sc
static void convertLayerRectsToEnclosingCompositedLayer(const LayerHitTestRects& layerRects, LayerHitTestRects& compositorRects)
{
+ TRACE_EVENT0("input", "ScrollingCoordinator::convertLayerRectsToEnclosingCompositedLayer");
+
// We have a set of rects per RenderLayer, we need to map them to their bounding boxes in their
// enclosing composited layer.
for (LayerHitTestRects::const_iterator layerIter = layerRects.begin(); layerIter != layerRects.end(); ++layerIter) {
@@ -342,10 +344,9 @@ static void convertLayerRectsToEnclosingCompositedLayer(const LayerHitTestRects&
compIter = compositorRects.add(compositedLayer, Vector<LayoutRect>()).iterator;
// Transform each rect to the co-ordinate space of it's enclosing composited layer.
- // Ideally we'd compute a transformation matrix once and re-use it for each rect, but
- // there doesn't appear to be any easy way to do it (mapLocalToContainer will flatten
- // the TransformState, so we can't use setQuad/mappedQuad over and over again). Perhaps
- // RenderGeometryMap?
+ // Ideally we'd compute a transformation matrix once and re-use it for each rect.
+ // RenderGeometryMap can be used for this (but needs to be updated to support crossing
+ // iframe boundaries), but in practice doesn't appear to provide much performance benefit.
for (size_t i = 0; i < layerIter->value.size(); ++i) {
FloatQuad localQuad(layerIter->value[i]);
TransformState transformState(TransformState::ApplyTransformDirection, localQuad);

Powered by Google App Engine
This is Rietveld 408576698