RenderLayerBacking::updateCompositedBounds() has code to constrain composited layer positions to the document rect. This is bad for fixed-position elements, because this constrained rect will change every time the scroll offset changes. This means that whenever layout happens (which causes us to update compositing layers), we'll recompute the fixed layer bounds, and change it if we scrolled, and that will result in jiggles.
Created attachment 187984 [details] Patch
Comment on attachment 187984 [details] Patch Attachment 187984 [details] did not pass chromium-ews (chromium-xvfb): Output: http://queues.webkit.org/results/16522575 New failing tests: compositing/geometry/limit-layer-bounds-fixed.html platform/chromium/virtual/softwarecompositing/geometry/limit-layer-bounds-fixed.html
Comment on attachment 187984 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=187984&action=review > LayoutTests/ChangeLog:11 > + Constrain fixed layers to the viewport, not the document > + https://bugs.webkit.org/show_bug.cgi?id=109646 > + > + Reviewed by NOBODY (OOPS!). > + > + Test with a big fixed element in a compositing layer. > + > + * compositing/geometry/limit-layer-bounds-fixed-expected.txt: Added. > + * compositing/geometry/limit-layer-bounds-fixed.html: Added. Wouldn't it be better to test this with a ref-test?
(In reply to comment #3) > Wouldn't it be better to test this with a ref-test? No; the visible appearance is the unchanged (unless we ref-test the layerTreeAsText output, which is weird!).
(In reply to comment #4) > No; the visible appearance is the unchanged (unless we ref-test the layerTreeAsText output, which is weird!). I think I fail to see how the output verify the change. Would you mind explaining a bit how the layers differed before the change?
Comment on attachment 187984 [details] Patch Looks good! You should address Benjamin's question though.
(In reply to comment #5) > (In reply to comment #4) > > No; the visible appearance is the unchanged (unless we ref-test the layerTreeAsText output, which is weird!). > > I think I fail to see how the output verify the change. Would you mind explaining a bit how the layers differed before the change? The (bounds 300.00 200.00) for the fixed layer are different (smaller) with the patch.
*** Bug 108556 has been marked as a duplicate of this bug. ***
http://trac.webkit.org/changeset/143073
The new test appears to be failing on WK2 EFL: http://build.webkit.org/results/EFL%20Linux%2064-bit%20Debug%20WK2/r143117%20(9569)/compositing/geometry/limit-layer-bounds-fixed-pretty-diff.html
EFL might not do compositing for fixed pos. It should just get a new baseline.