Closed Bug 1416991 Opened 7 years ago Closed 6 years ago

Rendering regression on rescam.org

Categories

(Core :: Web Painting, defect, P2)

defect

Tracking

()

RESOLVED FIXED
mozilla59
Tracking Status
firefox-esr52 --- unaffected
firefox57 --- unaffected
firefox58 --- disabled
firefox59 --- fixed

People

(Reporter: cg+zbmvyynohtmvyyn, Assigned: mozbugz)

References

Details

(Keywords: nightly-community, regression)

Attachments

(1 file)

User Agent: Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0
Build ID: 20171113220112

Steps to reproduce:

go to rescam.org


Actual results:

Graphics very glitchy, for example on faq page is impossible to see questions


Expected results:

normal rendering.

This worked until 59.0a1

mozregression result:
2017-11-14T09:18:59: DEBUG : Using url: https://hg.mozilla.org/integration/mozilla-inbound/json-pushes?changeset=d5e1ed773fefe2eb9d52402dd74b5fea19b8b4a4&full=1
2017-11-14T09:19:00: DEBUG : Found commit message:
Bug 1416055 - Enable retained display lists for Nightly builds. r=miko

2017-11-14T09:19:00: INFO : The bisection is done.
Blocks: 1416055
Has Regression Range: --- → yes
Component: Untriaged → Layout: Web Painting
Product: Firefox → Core
Some debugging information:

Using my WIP retained-vs-non-retained checker, I got the following output: (extracts)
> non-retained: 0x12f252020 > 0x12e064c60 > 0x12e0bd020 > 0x12e0c1020 > 0x12e762660 > 0x12e762060
> > WrapList p=0x131963920 f=0x12f250250(HTMLButtonControl(button)(1) id:next class:next) key=68 - Cannot find corresponding item in:
> retained: 0x131a38ca0 > 0x12e0c2420 > 0x12e0c2020 > 0x12e0c1820 > 0x12e0be460 > 0x12e0be360
> 
> ***+ non-retained: (correct)
>   BackgroundColor p=0x12e7656a0 f=0x178bd69b8(HTMLScroll(body)(2)) key=4
>   WrapList p=0x12f252020 f=0x178bd6cd0(Block(div)(1) id:app) key=68
>     nsDisplayPerspective p=0x12e749460 f=0x178bd6cd0(Block(div)(1) id:app) key=322
>       nsDisplayTransform p=0x12e7657a0 f=0x178bd7840(Block(div)(9) id:sprited-video class:sprited-video) key=65
>         Opacity p=0x130dfe1a0 f=0x178bd7840(Block(div)(9) id:sprited-video class:sprited-video) key=36
>           LayerEventRegions p=0x130dfe2a0 f=0x178bd7840(Block(div)(9) id:sprited-video class:sprited-video) key=27
>     ...
> 5:  nsDisplayPerspective p=0x12e064c60 f=0x178bd6cd0(Block(div)(1) id:app) key=1090
>       nsDisplayTransform p=0x12e0bd020 f=0x12f245a30(Block(div)(27) id:layer3D class:layer3d) key=65
>         nsDisplayTransform p=0x12e0c1020 f=0x12f24fd28(Block(div)(5) class:caption-wrapper) key=65
>           nsDisplayTransform p=0x12e762660 f=0x12f250130(Block(div)(7) id:next-wrapper class:next-wrapper) key=65
>             Opacity p=0x12e762060 f=0x12f250130(Block(div)(7) id:next-wrapper class:next-wrapper) key=36
> 1:            WrapList p=0x131963920 f=0x12f250250(HTMLButtonControl(button)(1) id:next class:next) key=68
> 
> ***+ retained: (incorrect)
>   WrapList p=0x131a38ca0 f=0x178bd6cd0(Block(div)(1) id:app) key=68
> 4:  nsDisplayPerspective p=0x12da49d60 f=0x178bd6cd0(Block(div)(1) id:app) key=322
>       nsDisplayTransform p=0x12f282420 f=0x12f245a30(Block(div)(27) id:layer3D class:layer3d) key=65
>         nsDisplayTransform p=0x12f281c20 f=0x12f24fd28(Block(div)(5) class:caption-wrapper) key=65
>           nsDisplayTransform p=0x12f252520 f=0x12f250130(Block(div)(7) id:next-wrapper class:next-wrapper) key=65
>             Opacity p=0x12f252420 f=0x12f250130(Block(div)(7) id:next-wrapper class:next-wrapper) key=36
> 3:            WrapList p=0x12f251a20 f=0x12f250250(HTMLButtonControl(button)(1) id:next class:next) key=68
>     ...
>     nsDisplayPerspective p=0x12e0c2420 f=0x178bd6cd0(Block(div)(1) id:app) key=1090
>       nsDisplayTransform p=0x12e0c2020 f=0x12f245a30(Block(div)(27) id:layer3D class:layer3d) key=65
>         nsDisplayTransform p=0x12e0c1820 f=0x12f24fd28(Block(div)(5) class:caption-wrapper) key=65
>           nsDisplayTransform p=0x12e0be460 f=0x12f250130(Block(div)(7) id:next-wrapper class:next-wrapper) key=65
> 2:          Opacity p=0x12e0be360 f=0x12f250130(Block(div)(7) id:next-wrapper class:next-wrapper) key=36

The WrapList in the non-retained tree at '1' would be expected in the retained tree under '2' (by following the trail of display items with same frame and key).
However the Wraplist is now at '3', under a perspective '4' with the same frame but a different key from '5'!

As distinct keys are assigned during building, a partial build could explain that a perspective got assigned a different key, if other perspectives under the same wraplist didn't need rebuilding, or somehow were processed in a different order.

Some thoughts from Matt:
nsDisplayPerspective gets made unique by a fairly arbitrary extra bit (or two) in the key.
The ‘moved’ wraplist is still under the same transform.
So I think just the arbitrary index is different, thanks to partial building.
I think we either need to disable partial building for perspective (or possibly only if we detect the possibility of multiple perspectives?), or find a way to make nsDisplayPerspective::mIndex be unaffected by a partial build.
Does this seem likely to affect other sites? 
And, should we mark the bug as NEW at this point? 
Might it affect 58 as well if we are testing retained display lists on 58 beta?
Flags: needinfo?(matt.woodrow)
Yeah it probably will affect other sites, though it seems to only occur with fairly complex 3d content, so it's probably rare (and why we don't have other reports yet).

It will affect the 58 beta now with the shield study, and we might see more reports soon with the larger audience.

Gerald, are you still looking at this?
Status: UNCONFIRMED → NEW
Ever confirmed: true
Flags: needinfo?(matt.woodrow)
Priority: -- → P2
(In reply to Matt Woodrow (:mattwoodrow) from comment #3)
> Yeah it probably will affect other sites, though it seems to only occur with
> fairly complex 3d content, so it's probably rare (and why we don't have
> other reports yet).

I think we possibly have the same issue with https://www.geloofhet.nl/nl/home 's  menu, see bug 1422199 comment 1.


> It will affect the 58 beta now with the shield study, and we might see more
> reports soon with the larger audience.
> 
> Gerald, are you still looking at this?

No I'm not, sorry if I gave that impression. (I only ran the RDL checker, to capture the display list issues in comment 1.)
Comment on attachment 8936850 [details]
Bug 1416991 - Fix perspective indexing in partial DL builds -

https://reviewboard.mozilla.org/r/207574/#review213456
Attachment #8936850 - Flags: review?(matt.woodrow) → review+
Pushed by gsquelart@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/132d000b6888
Fix perspective indexing in partial DL builds - r=mattwoodrow
https://hg.mozilla.org/mozilla-central/rev/132d000b6888
Status: NEW → RESOLVED
Closed: 6 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla59
AIUI this only shows up with retain display lists, which is off by default in 58.
Depends on: 1484412
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: