Closed
Bug 1428993
Opened 8 years ago
Closed 8 years ago
Graphical glitch with retained display lists
Categories
(Core :: Web Painting, defect, P2)
Core
Web Painting
Tracking
()
RESOLVED
FIXED
mozilla59
| Tracking | Status | |
|---|---|---|
| firefox59 | --- | fixed |
People
(Reporter: birtles, Assigned: mikokm)
References
Details
Attachments
(5 files, 1 obsolete file)
See forthcoming test.
If you hover the quarter-circles in the bottom of the test they should enlarge and cover the white area but most of the time they incorrectly go underneath the white area. Reproduces for me in Nightly on Linux and Windows. Does not reproduce if I disable retained display lists.
| Reporter | ||
Comment 1•8 years ago
|
||
| Reporter | ||
Comment 2•8 years ago
|
||
| Reporter | ||
Comment 3•8 years ago
|
||
Reproduces slightly more readily on the red circle than the green.
| Reporter | ||
Comment 4•8 years ago
|
||
Sorry, the CSS file is massive. I reduced the HTML file pretty far, but the CSS could use a lot more reduction. The more I reduced the HTML, however, the less likely it would reproduce so I thought I'd post the test in its complex-but-reproduces-very-easily state.
| Reporter | ||
Comment 5•8 years ago
|
||
Just updating the test title
Attachment #8940979 -
Attachment is obsolete: true
| Assignee | ||
Comment 6•8 years ago
|
||
Thank you for the report. I can reproduce this locally on macOS.
Assignee: nobody → mikokm
Status: NEW → ASSIGNED
| Assignee | ||
Comment 7•8 years ago
|
||
Simplified testcase
Updated•8 years ago
|
Priority: -- → P2
| Comment hidden (mozreview-request) |
Comment 9•8 years ago
|
||
| mozreview-review | ||
Comment on attachment 8943025 [details]
Bug 1428993 - Part 2: Override dirty rect for stacking contexts between OOF frame placeholder and the containing block
https://reviewboard.mozilla.org/r/213288/#review219088
::: layout/painting/RetainedDisplayListBuilder.cpp:646
(Diff revision 1)
>
> + // If the current frame is an OOF frame, DisplayListBuildingData needs to be
> + // set on all the ancestor stacking contexts of the placeholder frame, up
> + // to the containing block of the OOF frame. This is done to ensure that the
> + // content that might be behind the OOF frame is built for merging.
> + nsIFrame* placeholder = previousFrame->HasAnyStateBits(NS_FRAME_OUT_OF_FLOW)
We could move this whole placeholder handling block into a helper, and put it before the TransformFrameRectToAncestor call to avoid needing previousFrame.
::: layout/painting/RetainedDisplayListBuilder.cpp:647
(Diff revision 1)
> + // If the current frame is an OOF frame, DisplayListBuildingData needs to be
> + // set on all the ancestor stacking contexts of the placeholder frame, up
> + // to the containing block of the OOF frame. This is done to ensure that the
> + // content that might be behind the OOF frame is built for merging.
> + nsIFrame* placeholder = previousFrame->HasAnyStateBits(NS_FRAME_OUT_OF_FLOW)
> + ? do_QueryFrame(previousFrame->GetPlaceholderFrame())
Do we need do_QueryFrame here? We should only need it when we're casting to a derived type, nsPlaceholderFrame -> nsIFrame should just work.
Attachment #8943025 -
Flags: review?(matt.woodrow) → review+
| Comment hidden (mozreview-request) |
| Comment hidden (mozreview-request) |
Comment 12•8 years ago
|
||
| mozreview-review | ||
Comment on attachment 8943365 [details]
Bug 1428993 - Part 1: Split RetainedDisplayListBuilder::ComputeRebuildRegion() and PreProcessDisplayList() into multiple functions
https://reviewboard.mozilla.org/r/213684/#review219452
Attachment #8943365 -
Flags: review?(matt.woodrow) → review+
Comment 13•8 years ago
|
||
Pushed by mikokm@gmail.com:
https://hg.mozilla.org/integration/autoland/rev/7f88ebf8d0d1
Part 1: Split RetainedDisplayListBuilder::ComputeRebuildRegion() and PreProcessDisplayList() into multiple functions r=mattwoodrow
https://hg.mozilla.org/integration/autoland/rev/080c07796f4c
Part 2: Override dirty rect for stacking contexts between OOF frame placeholder and the containing block r=mattwoodrow
Comment 14•8 years ago
|
||
Backed out for failing reftest at layout/reftests/display-list/1428993-1.html on Android
Push that caused the failures: https://treeherder.mozilla.org/#/jobs?repo=autoland&revision=080c07796f4ce4cf9f9c334736fd882b687d0c72
Failure log: https://treeherder.mozilla.org/logviewer.html#?job_id=157208870&repo=autoland&lineNumber=4771
Backout: https://hg.mozilla.org/integration/autoland/rev/c480ace58f385f656603e2801659899091e9ad6d
Flags: needinfo?(mikokm)
| Comment hidden (mozreview-request) |
| Comment hidden (mozreview-request) |
Comment 17•8 years ago
|
||
Pushed by mikokm@gmail.com:
https://hg.mozilla.org/integration/autoland/rev/2eb0a49e3192
Part 1: Split RetainedDisplayListBuilder::ComputeRebuildRegion() and PreProcessDisplayList() into multiple functions r=mattwoodrow
https://hg.mozilla.org/integration/autoland/rev/2c2e56a87ad1
Part 2: Override dirty rect for stacking contexts between OOF frame placeholder and the containing block r=mattwoodrow
| Assignee | ||
Comment 18•8 years ago
|
||
The failing reftest layout/reftests/display-list/1428993-1.html is now disabled on Android due to weird behavior around the button edges. The second added reftest layout/reftests/display-list/1428993-2.html tests the same functionality.
Flags: needinfo?(mikokm)
Comment 19•8 years ago
|
||
| bugherder | ||
https://hg.mozilla.org/mozilla-central/rev/2eb0a49e3192
https://hg.mozilla.org/mozilla-central/rev/2c2e56a87ad1
Status: ASSIGNED → RESOLVED
Closed: 8 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla59
| Reporter | ||
Comment 20•8 years ago
|
||
Attachment 8940980 [details] still doesn't seem to be fixed for me in the latest nightly.
Flags: needinfo?(nerli)
| Reporter | ||
Comment 21•8 years ago
|
||
Sorry, I meant to direct that needinfo to Miko!
Flags: needinfo?(nerli) → needinfo?(mikokm)
| Assignee | ||
Comment 22•8 years ago
|
||
(In reply to Brian Birtles (:birtles) from comment #20)
> Attachment 8940980 [details] still doesn't seem to be fixed for me in the
> latest nightly.
Thank you again Brian.
It seems that there are some additional problems that the simplified testcase did not catch. I will investigate this again, and file a new bug for possible follow-up work.
Flags: needinfo?(mikokm)
| Reporter | ||
Comment 23•8 years ago
|
||
Thanks Miko!
Please CC me on any follow-up bugs.
You need to log in
before you can comment on or make changes to this bug.
Description
•