Well, I don't know how to without sacrificing incremental display list building. The idea behind incremental DL building is to retain display lists at the level of stacking contexts: each stacking context is associated with a DL and optionally a layer. This makes it very easy to avoid reconstructing most of the display items in the page when, for example, updating a transform, since most of the stacking contexts on the page remain untouched. If we were to move to a FrameLayerBuilder approach we'd have a nontrivial mapping from layout objects to display items and I don't know how we'd retain DLs at that point.
I guess one thing we could do is to have a fake display item in the canvas's proper place in the display list, and use that to determine whether it is safe to treat the canvas as a stacking context. If we detect that treating the canvas is a stacking context affects the rendering, fall back to readback. This is a performance hazard, of course, but I suspect it wouldn't trigger on much if any real-world content. Patrick On Mar 14, 2015 10:21 PM, "Robert O'Callahan" <rob...@ocallahan.org> wrote: > On Sun, Mar 15, 2015 at 6:10 PM, Patrick Walton <pwal...@mozilla.com> > wrote: > >> We can only layerize stacking contexts, since we have no >> FrameLayerBuilder. >> So we have to promote canvases to stacking contexts if we want to layerize >> them. WebKit does the same thing. >> > > You should fix that. Blink is :-) > > Rob > -- > oIo otoeololo oyooouo otohoaoto oaonoyooonoeo owohooo oioso oaonogoroyo > owoiotoho oao oboroootohoeoro oooro osoiosotoeoro owoiololo oboeo > osouobojoeocoto otooo ojouodogomoeonoto.o oAogoaoiono,o oaonoyooonoeo > owohooo > osoaoyoso otooo oao oboroootohoeoro oooro osoiosotoeoro,o o‘oRoaocoao,o’o > oioso > oaonosowoeoroaoboloeo otooo otohoeo ocooouoroto.o oAonodo oaonoyooonoeo > owohooo > osoaoyoso,o o‘oYooouo ofooooolo!o’o owoiololo oboeo oiono odoaonogoeoro > ooofo > otohoeo ofoioroeo ooofo ohoeololo. > _______________________________________________ dev-servo mailing list dev-servo@lists.mozilla.org https://lists.mozilla.org/listinfo/dev-servo