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

Issue 1238123004: Slimming Paint phase 2 compositing algorithm plumbing & skeleton display list API. (Closed)

Created:
5 years, 5 months ago by chrishtr
Modified:
5 years, 3 months ago
CC:
blink-layers+watch_chromium.org, blink-reviews, Rik, danakj, dglazkov+blink, dshwang, drott+blinkwatch_chromium.org, krit, f(malita), jbroman, Justin Novosad, pdr+graphicswatchlist_chromium.org, rwlbuis, Stephen Chennney, Ian Vollick
Target Ref:
refs/heads/master
Project:
blink
Visibility:
Public.

Description

Slimming Paint phase 2 compositing algorithm plumbing & skeleton display list API. BUG=481592

Patch Set 1 #

Patch Set 2 : #

Total comments: 1

Patch Set 3 : #

Patch Set 4 : #

Patch Set 5 : gc #

Patch Set 6 : #

Patch Set 7 : #

Patch Set 8 : #

Patch Set 9 : #

Patch Set 10 : #

Patch Set 11 : #

Patch Set 12 : #

Patch Set 13 : #

Patch Set 14 : #

Patch Set 15 : #

Total comments: 2

Patch Set 16 : #

Patch Set 17 : #

Patch Set 18 : #

Total comments: 16
Unified diffs Side-by-side diffs Delta from patch set Stats (+303 lines, -9 lines) Patch
A Source/core/compositing/DisplayListCompositingBuilder.h View 1 2 3 4 5 6 7 1 chunk +39 lines, -0 lines 0 comments Download
A Source/core/compositing/DisplayListCompositingBuilder.cpp View 1 2 3 4 5 6 7 8 9 10 11 12 1 chunk +41 lines, -0 lines 2 comments Download
M Source/core/core.gypi View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 chunk +2 lines, -0 lines 0 comments Download
M Source/core/dom/DocumentLifecycle.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 chunk +2 lines, -0 lines 2 comments Download
M Source/core/dom/DocumentLifecycle.cpp View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 2 chunks +3 lines, -0 lines 0 comments Download
M Source/core/frame/FrameView.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 chunk +1 line, -0 lines 0 comments Download
M Source/core/frame/FrameView.cpp View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 3 chunks +42 lines, -5 lines 0 comments Download
M Source/core/layout/compositing/CompositedDeprecatedPaintLayerMapping.cpp View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 chunk +2 lines, -0 lines 0 comments Download
M Source/platform/blink_platform.gypi View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 chunk +1 line, -0 lines 0 comments Download
M Source/platform/graphics/ContentLayerDelegate.h View 1 2 3 4 5 6 7 8 9 10 3 chunks +10 lines, -0 lines 2 comments Download
M Source/platform/graphics/ContentLayerDelegate.cpp View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 3 chunks +21 lines, -0 lines 2 comments Download
M Source/platform/graphics/GraphicsLayer.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 4 chunks +12 lines, -0 lines 0 comments Download
M Source/platform/graphics/GraphicsLayer.cpp View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 2 chunks +26 lines, -0 lines 0 comments Download
M Source/platform/graphics/paint/DisplayItem.h View 1 2 3 4 5 6 2 chunks +2 lines, -1 line 0 comments Download
M Source/platform/graphics/paint/DisplayItemList.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 2 chunks +7 lines, -2 lines 2 comments Download
M Source/platform/graphics/paint/DisplayItemList.cpp View 1 2 3 4 1 chunk +2 lines, -1 line 0 comments Download
M Source/platform/graphics/paint/DisplayItemTransformTreeBuilder.h View 1 2 3 4 3 chunks +5 lines, -0 lines 2 comments Download
M Source/platform/graphics/paint/DisplayItemTransformTreeBuilder.cpp View 1 2 3 4 2 chunks +10 lines, -0 lines 2 comments Download
A Source/platform/graphics/paint/DisplayList.h View 1 2 3 4 5 6 7 8 9 10 1 chunk +36 lines, -0 lines 2 comments Download
M Source/web/LinkHighlight.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 chunk +1 line, -0 lines 0 comments Download
M public/platform/DEPS View 1 chunk +1 line, -0 lines 0 comments Download
M public/platform/WebContentLayerClient.h View 1 2 3 4 5 6 7 8 2 chunks +7 lines, -0 lines 0 comments Download
A public/platform/WebDisplayList.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 chunk +30 lines, -0 lines 0 comments Download

Messages

Total messages: 18 (3 generated)
chrishtr
https://codereview.chromium.org/1238123004/diff/20001/public/platform/WebDisplayList.h File public/platform/WebDisplayList.h (right): https://codereview.chromium.org/1238123004/diff/20001/public/platform/WebDisplayList.h#newcode24 public/platform/WebDisplayList.h:24: virtual const WebVector<WebDisplayItem>& webDisplayItems() const = 0; This really ...
5 years, 5 months ago (2015-07-22 18:23:28 UTC) #1
jbroman
https://codereview.chromium.org/1238123004/diff/260001/public/platform/WebContentLayerClient.h File public/platform/WebContentLayerClient.h (right): https://codereview.chromium.org/1238123004/diff/260001/public/platform/WebContentLayerClient.h#newcode74 public/platform/WebContentLayerClient.h:74: virtual const WebDisplayList* displayList() const { return 0; }; ...
5 years, 5 months ago (2015-07-22 21:20:07 UTC) #3
chrishtr
https://codereview.chromium.org/1238123004/diff/260001/public/platform/WebContentLayerClient.h File public/platform/WebContentLayerClient.h (right): https://codereview.chromium.org/1238123004/diff/260001/public/platform/WebContentLayerClient.h#newcode74 public/platform/WebContentLayerClient.h:74: virtual const WebDisplayList* displayList() const { return 0; }; ...
5 years, 5 months ago (2015-07-22 22:09:59 UTC) #4
chrishtr
Please review. The patch is still rough, please focus for the moment on the structure ...
5 years, 5 months ago (2015-07-23 14:29:44 UTC) #6
jbroman
At a high level, seems reasonable. I would suggest leaving diffs out of the initially ...
5 years, 5 months ago (2015-07-23 19:44:05 UTC) #7
chrishtr
On 2015/07/23 at 19:44:05, jbroman wrote: > At a high level, seems reasonable. I would ...
5 years, 5 months ago (2015-07-23 20:52:24 UTC) #8
Ian Vollick
https://codereview.chromium.org/1238123004/diff/320001/Source/core/dom/DocumentLifecycle.h File Source/core/dom/DocumentLifecycle.h (right): https://codereview.chromium.org/1238123004/diff/320001/Source/core/dom/DocumentLifecycle.h#newcode68 Source/core/dom/DocumentLifecycle.h:68: // TODO(chrishtr): add lifecycle states for scrolling update and ...
5 years, 5 months ago (2015-07-23 22:53:06 UTC) #10
chrishtr
https://codereview.chromium.org/1238123004/diff/320001/Source/core/dom/DocumentLifecycle.h File Source/core/dom/DocumentLifecycle.h (right): https://codereview.chromium.org/1238123004/diff/320001/Source/core/dom/DocumentLifecycle.h#newcode68 Source/core/dom/DocumentLifecycle.h:68: // TODO(chrishtr): add lifecycle states for scrolling update and ...
5 years, 5 months ago (2015-07-23 23:57:39 UTC) #11
pdr.
https://codereview.chromium.org/1238123004/diff/320001/Source/core/compositing/DisplayListCompositingBuilder.cpp File Source/core/compositing/DisplayListCompositingBuilder.cpp (right): https://codereview.chromium.org/1238123004/diff/320001/Source/core/compositing/DisplayListCompositingBuilder.cpp#newcode15 Source/core/compositing/DisplayListCompositingBuilder.cpp:15: DisplayItemTransformTreeBuilder transformTreeBuilder; Can you talk a bit about how ...
5 years, 5 months ago (2015-07-24 05:37:51 UTC) #12
chrishtr
Thank you for these questions, they are insightful and important. I have tried to give ...
5 years, 5 months ago (2015-07-24 14:53:45 UTC) #13
chrishtr
On 2015/07/24 at 14:53:45, chrishtr wrote: > Thank you for these questions, they are insightful ...
5 years, 5 months ago (2015-07-24 14:56:37 UTC) #14
chrishtr
5 years, 5 months ago (2015-07-24 15:01:57 UTC) #15
enne (OOO)
https://codereview.chromium.org/1238123004/diff/320001/Source/platform/graphics/ContentLayerDelegate.h File Source/platform/graphics/ContentLayerDelegate.h (right): https://codereview.chromium.org/1238123004/diff/320001/Source/platform/graphics/ContentLayerDelegate.h#newcode70 Source/platform/graphics/ContentLayerDelegate.h:70: // This is only set on a root graphics ...
5 years, 5 months ago (2015-07-24 18:19:24 UTC) #16
weiliangc
Thanks for putting this together! My main question is that since right now we have ...
5 years, 5 months ago (2015-07-24 19:17:15 UTC) #17
chrishtr
5 years, 5 months ago (2015-07-24 19:27:22 UTC) #18
https://codereview.chromium.org/1238123004/diff/320001/Source/platform/graphi...
File Source/platform/graphics/ContentLayerDelegate.cpp (right):

https://codereview.chromium.org/1238123004/diff/320001/Source/platform/graphi...
Source/platform/graphics/ContentLayerDelegate.cpp:98:
m_painter->displayList()->displayItemInternal(i).appendToWebDisplayItemList(webDisplayItemList);
On 2015/07/24 at 19:17:15, weiliangc wrote:
> Is it possible that this line changes the order of DisplayItems in the global
DisplayItemList, thus invalidate the indices we saved in the offset of
WebDisplayList on each layer?
> 
> Since we'd have to convert DisplayItem to WebDisplayItem, maybe we could let
Layers own the partial WebDisplayItemList? WDYT?

I think we should end up with representation in which there is exactly one
display list array that everyone on the same thread shares. The copying in this
CL is necessary only before the blink/cc merge.

As for whether there is a bug in this sample implementation...maybe. :)

https://codereview.chromium.org/1238123004/diff/320001/Source/platform/graphi...
File Source/platform/graphics/paint/DisplayItemList.h (right):

https://codereview.chromium.org/1238123004/diff/320001/Source/platform/graphi...
Source/platform/graphics/paint/DisplayItemList.h:69: void
commitNewDisplayItems(DisplayListDiff* = 0);
On 2015/07/24 at 19:17:15, weiliangc wrote:
> What owns the DisplayListDiff? Root Graphics Layer?

The caller of commitNewDisplayItems owns it locally. In this CL the diff is not
part of the API to cc, the API is still:

1. a vector of cc::Layer*'s, on which one stores the usual bits, including
crucially raster invalidation rects. These rects are derived from the
DisplayListDiff as interpreted by the DisplayListCompositingBuilder.

2. property trees (stored on the LTH probably)

https://codereview.chromium.org/1238123004/diff/320001/Source/platform/graphi...
File Source/platform/graphics/paint/DisplayItemTransformTreeBuilder.h (right):

https://codereview.chromium.org/1238123004/diff/320001/Source/platform/graphi...
Source/platform/graphics/paint/DisplayItemTransformTreeBuilder.h:31: void
build(const DisplayItemList& displayList, const DisplayListDiff&);
On 2015/07/24 at 19:17:15, weiliangc wrote:
> Would it make sense to make DisplayItemTransformTreeBuilder look more like
DisplayListCompositngBuilder?
> Such as, set const & to displayList and displayListDiff in constructor,
build(), and hide and processDisplayItem() function?

Common patterns good yes. :)

https://codereview.chromium.org/1238123004/diff/320001/Source/platform/graphi...
File Source/platform/graphics/paint/DisplayList.h (right):

https://codereview.chromium.org/1238123004/diff/320001/Source/platform/graphi...
Source/platform/graphics/paint/DisplayList.h:29: Vector<unsigned> offsets;
On 2015/07/24 at 19:17:15, weiliangc wrote:
> Maybe we should have more check to what we put into offset? Can we have
function that adds and sequence of indices and modifies offsets there while
hiding offset?

Yes. Getting these right is important.

Powered by Google App Engine
This is Rietveld 408576698