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

Issue 390193003: [not for review] Add Draw entries to window Performance Timeline (Closed)

Created:
6 years, 5 months ago by Mike B
Modified:
5 years, 11 months ago
CC:
abarth-chromium, arv+blink, blink-reviews, blink-reviews-bindings_chromium.org, Inactive, dglazkov+blink, jamesr
Base URL:
https://chromium.googlesource.com/chromium/blink.git@master
Project:
blink
Visibility:
Public.

Description

[not for review] Add Draw entries to window Performance Timeline [not for review] Spec: http://www.w3.org/TR/performance-timeline/ "Entries" in the performance timeline can be extended by browser vendors. This CL is to create a type to use for recording timing events when a frame is drawn to the screen. This will be used to let app developers calculate their effective frames per second and time-to-frame events. BUG=120796 R=nduca@google.com ** For related cc changes, see https://codereview.chromium.org/397443002 Sub-cl 1: https://codereview.chromium.org/392743004

Patch Set 1 #

Patch Set 2 : Code refactoring in RenderView #

Total comments: 4

Patch Set 3 : Update to rect offset logic #

Patch Set 4 : Update to handle cross-frame invalidation logic #

Patch Set 5 : Git pull #

Total comments: 2

Patch Set 6 : sync with https://codereview.chromium.org/397443002/ #

Patch Set 7 : namespace change WebCore -> blink #

Patch Set 8 : Add support for 'commit' as well as 'draw' records #

Patch Set 9 : Rename api to Smoothness Timing #

Patch Set 10 : Git pull syncup #

Unified diffs Side-by-side diffs Delta from patch set Stats (+275 lines, -66 lines) Patch
M Source/core/core.gypi View 1 2 3 4 5 6 7 8 9 2 chunks +3 lines, -0 lines 0 comments Download
M Source/core/events/EventTypeNames.in View 1 2 3 4 5 6 7 8 1 chunk +1 line, -0 lines 0 comments Download
M Source/core/frame/Frame.h View 1 2 3 4 5 6 7 2 chunks +6 lines, -0 lines 0 comments Download
M Source/core/frame/Frame.cpp View 1 2 3 4 5 6 7 2 chunks +13 lines, -0 lines 0 comments Download
M Source/core/frame/UseCounter.h View 1 2 3 4 5 6 7 8 9 2 chunks +2 lines, -3 lines 0 comments Download
M Source/core/rendering/RenderView.h View 1 2 3 4 5 6 7 8 9 1 chunk +1 line, -0 lines 0 comments Download
M Source/core/rendering/RenderView.cpp View 1 2 3 4 5 6 7 8 9 1 chunk +23 lines, -0 lines 0 comments Download
M Source/core/timing/Performance.h View 1 2 3 4 5 6 7 8 9 2 chunks +12 lines, -0 lines 0 comments Download
M Source/core/timing/Performance.cpp View 1 2 3 4 5 6 7 8 9 7 chunks +52 lines, -1 line 0 comments Download
M Source/core/timing/Performance.idl View 1 2 3 4 5 6 7 8 1 chunk +5 lines, -0 lines 0 comments Download
M Source/core/timing/PerformanceEntry.h View 1 2 3 4 5 6 7 8 9 1 chunk +1 line, -0 lines 0 comments Download
M Source/core/timing/PerformanceEntry.cpp View 1 2 3 4 5 6 7 8 9 1 chunk +1 line, -0 lines 0 comments Download
A + Source/core/timing/PerformanceSmoothnessTiming.h View 1 2 3 4 5 6 7 8 9 1 chunk +27 lines, -27 lines 0 comments Download
A + Source/core/timing/PerformanceSmoothnessTiming.cpp View 1 2 3 4 5 6 7 8 9 2 chunks +18 lines, -31 lines 0 comments Download
A + Source/core/timing/PerformanceSmoothnessTiming.idl View 1 2 3 4 5 6 7 8 1 chunk +3 lines, -4 lines 0 comments Download
M Source/web/WebViewImpl.h View 1 2 3 4 5 6 7 8 9 1 chunk +2 lines, -0 lines 0 comments Download
M Source/web/WebViewImpl.cpp View 1 2 3 4 5 6 7 8 9 5 chunks +95 lines, -0 lines 0 comments Download
M public/platform/WebLayer.h View 1 2 3 4 5 6 7 8 1 chunk +2 lines, -0 lines 0 comments Download
M public/web/WebWidget.h View 1 2 3 4 5 6 7 8 9 1 chunk +8 lines, -0 lines 0 comments Download

Messages

Total messages: 6 (0 generated)
chrishtr
https://codereview.chromium.org/390193003/diff/20001/Source/core/rendering/RenderView.cpp File Source/core/rendering/RenderView.cpp (right): https://codereview.chromium.org/390193003/diff/20001/Source/core/rendering/RenderView.cpp#newcode463 Source/core/rendering/RenderView.cpp:463: LayoutRect repaintRect = repaintRectPtr ? *repaintRectPtr : viewRect(); You ...
6 years, 5 months ago (2014-07-16 20:00:25 UTC) #1
enne (OOO)
https://codereview.chromium.org/390193003/diff/80001/Source/core/frame/Frame.cpp File Source/core/frame/Frame.cpp (right): https://codereview.chromium.org/390193003/diff/80001/Source/core/frame/Frame.cpp#newcode61 Source/core/frame/Frame.cpp:61: int64_t generateFrameID() style nit: FrameID => FrameId Does Blink ...
6 years, 5 months ago (2014-07-22 20:45:27 UTC) #2
Rick Byers
I love how simple this has become. Compared to the initial prototypes, almost all of ...
6 years, 4 months ago (2014-08-02 00:56:36 UTC) #3
abarth-chromium
I think we should discuss whether we want to implement this feature on blink-dev. Last ...
6 years, 4 months ago (2014-08-02 17:22:59 UTC) #4
nduca
yes adam, i have not gotten to your concerns yet. i am well aware you ...
6 years, 4 months ago (2014-08-02 17:39:41 UTC) #5
chrishtr
6 years, 4 months ago (2014-08-04 16:04:33 UTC) #6
On Fri, Aug 1, 2014 at 5:56 PM, <rbyers@chromium.org> wrote:

> I love how simple this has become.  Compared to the initial prototypes,
> almost
> all of the logic is now centralized (eg. I like
> enclosingLayerForPaintInvalidationCrossingFrameBoundaries,
> RenderLayer::mapRectToPaintInvalidationBacking and
> rectForPaintInvalidation).
> It looks like there's some good opportunities to simplify the touch hit
> rect
> code now (although it has to deal with a number of things you don't, and
> also
> different performance issues that might not be satisfied by the
> abstractions
> here).
>
> The one piece of general purpose logic that's still up at the WebViewImpl
> layer
> (which seems too high for me) is the general notion of given a
> RenderObject, get
> it's bounding box in the space of it's GraphicsLayer (and the GraphicsLayer
> itself).  It might be worth putting that logic somewhere more common.
>  Although
> I guess your code works only for RenderView, not arbitrary RenderObjects
> (and if
> code was doing this with a large number of RenderObjects, it would
> probably want
> to avoid recomputing transforms).  So maybe it's not sufficiently general
> purpose to bother moving.
>


FYI I am doing precisely this refactoring this week. The same information
is needed for optimizing paint, and as a side-effect it should be usable
for this use case and clean up the logic to be independent of frame
boundaries.


>
> If a frame is inside of some non-composited scrolling area (eg. an
> overflow:scroll div on a low-dpi device) I believe you're rects will be
> incorrect between the time the scroll offset changes and something else
> triggers
> layout.
>
> Also, have you tested to see how your code deals with cases like frames
> inside
> of nodes with arbitrary CSS 3d transforms applied to them?  Since you're
> sharing
> logic with repaint I assume the computations would be correct, but may
> still be
> worth testing.  Presumably you're going to get bounding box rects in this
> case
> (since the frame may be an arbitrary quadrilateral in the co-ordinate
> space of
> it's backing graphics layer).  Will that cause any issues downstream?  Eg.
> two
> non-overlapping frames may have overlapping rects.
>
>
> https://codereview.chromium.org/390193003/
>

To unsubscribe from this group and stop receiving emails from it, send an email
to blink-reviews+unsubscribe@chromium.org.

Powered by Google App Engine
This is Rietveld 408576698