If you think a bug might affect users in the 57 release, please set the correct tracking and status flags for Release Management.

[APZ] Sometimes seeing checkerboarding when displayport changes size

RESOLVED FIXED in Firefox 45

Status

()

Core
Layout
P2
normal
RESOLVED FIXED
2 years ago
2 years ago

People

(Reporter: mstange, Assigned: mstange)

Tracking

Trunk
mozilla45
Points:
---

Firefox Tracking Flags

(firefox43 affected, firefox45 fixed)

Details

(URL)

MozReview Requests

()

Submitter Diff Changes Open Issues Last Updated
Loading...
Error loading review requests:

Attachments

(1 attachment)

(Assignee)

Description

2 years ago
STR:

1. Go to http://lea.verou.me/2015/06/conical-gradients-today/
2. Scroll down to the bottom of the page very quickly.
3. Quickly scroll up and down again.
4. Repeat step 3 until you see the page turn white briefly.

Actual results:
After seeing orange checkerboarding, suddenly the whole page turns white and then gets refreshed with the painted page contents.

Expected results:
The white flash shouldn't happen. We know that the page background is light orange, and we are using that color as the checkerboarding color usually, just not in some cases when scrolling to the page bottom.
Blocks: 1013364
(Assignee)

Comment 1

2 years ago
I've seen these white flashes in many places, and I think we need to fix this before we ship APZ.
Blocks: 1178298
No longer blocks: 1013364
Do you have any other URLs on which you've seen this? I can't reproduce it on the URL you provided in comment 0. I can hit checkerboarding easily enough, but it's always the orange color that is the page background.
for comment 2
Flags: needinfo?(mstange)
(Assignee)

Comment 4

2 years ago
I can't reproduce it on the URL from comment 0 anymore either. So maybe we fixed something!
I also can't reproduce it with the URL from bug 1217786 anymore.
I can still reproduce it with the testcase in bug 1221094, on the first scroll after the page loads.
Flags: needinfo?(mstange)
Hm, so with the testcase on bug 1221094 I can reproduce a flash of white on the first scroll. I copied the page and added a background-color:orange to the body, and when I scroll I don't see the flash of white. The text still disappears for a split second, but the background is orange throughout. I also turned on the minimap and the flash seems to correspond with an increase in the size of the displayport as we go from panning slowly to panning fast.

I'll update this bug to cover this issue, assuming we don't already have a bug for it somewhere else.
Summary: [APZ] Sometimes seeing white checkerboarding, even when the page background isn't white → [APZ] Sometimes seeing checkerboarding when displayport changes size
(Assignee)

Comment 6

2 years ago
When the flash happens, the layer's content client changes from SingleTiled to MultiTiled, and the corresponding content host disappears for a few composites.

Matt, do you want to fix this?

> LayerManager (0x129251640)
>   ContainerLayerComposite (0x112c62800) [shadow-visible=< (x=0, y=0, w=1988, h=978); >] [visible=< (x=0, y=0, w=1988, h=978); >] [opaqueContent] [metrics0={ [cb=(x=0.000000, y=0.000000, w=1988.000000, h=978.000000)] [sr=(x=0.000000, y=0.000000, w=994.000000, h=489.000000)] [s=(0,0)] [dp=(x=0.000000, y=0.000000, w=994.000000, h=489.000000)] [cdp=(x=0.000000, y=0.000000, w=0.000000, h=0.000000)] [color=rgba(0, 0, 0, 0.000000)] [scrollId=9] [z=2] }]
>     PaintedLayerComposite (0x112c67400) [shadow-visible=< (x=0, y=0, w=1988, h=2); >] [bounds=(x=0, y=-2, w=1988, h=980)] [visible=< (x=0, y=0, w=1988, h=978); >] { hitregion=< (x=0, y=0, w=1988, h=978); >} [opaqueContent] [valid=< (x=0, y=0, w=1988, h=978); >]
>       TiledContentHost (0x112c8fae0)
>     RefLayerComposite (0x112c64400) [shadow-clip=(x=0, y=2, w=1988, h=976)] [shadow-transform=[ 1 0; 0 1; 0 2; ]] [shadow-visible=< (x=0, y=0, w=1988, h=976); >] [clip=(x=0, y=2, w=1988, h=976)] [transform=[ 1 0; 0 1; 0 2; ]] [visible=< (x=0, y=0, w=1988, h=976); >] [id=8]
>       ContainerLayerComposite (0x11f454400) [shadow-visible=< (x=0, y=0, w=1988, h=976); >] [visible=< (x=0, y=0, w=1988, h=976); >] [opaqueContent]
>         PaintedLayerComposite (0x119f1f000) [not visible] { hitregion=< (x=0, y=0, w=1988, h=976); >} [opaqueContent]
>         PaintedLayerComposite (0x12083c800) [shadow-clip=(x=0, y=0, w=0, h=0)] [shadow-transform=[ 1 0; 0 1; 0 -20; ]] [clip=(x=0, y=0, w=0, h=0)] [not visible] [metrics0={ [cb=(x=0.000000, y=0.000000, w=1988.000000, h=976.000000)] [sr=(x=0.000000, y=0.000000, w=994.000000, h=17321.599609)] [s=(0,0)] [dp=(x=0.000000, y=0.000000, w=994.000000, h=768.000000)] [cdp=(x=0.000000, y=0.000000, w=0.000000, h=0.000000)] [color=rgba(255, 255, 255, 1.000000)] [scrollId=6] [rcd] [clip=(x=0, y=0, w=1988, h=976)] [z=2] }]
>         ColorLayerComposite (0x1239cf400) [shadow-clip=(x=0, y=0, w=1988, h=976)] [shadow-transform=[ 1 0; 0 1; 0 -20; ]] [shadow-visible=< (x=0, y=20, w=1988, h=14); (x=0, y=34, w=504, h=962); (x=1492, y=34, w=496, h=962); >] [bounds=(x=0, y=0, w=1988, h=34643)] [visible=< (x=0, y=0, w=1988, h=1536); >] { hitregion=< (x=0, y=0, w=1988, h=34644); >} [opaqueContent] [metrics0={ [cb=(x=0.000000, y=0.000000, w=1988.000000, h=976.000000)] [sr=(x=0.000000, y=0.000000, w=994.000000, h=17321.599609)] [s=(0,0)] [dp=(x=0.000000, y=0.000000, w=994.000000, h=768.000000)] [cdp=(x=0.000000, y=0.000000, w=0.000000, h=0.000000)] [color=rgba(255, 255, 255, 1.000000)] [scrollId=6] [rcd] [clip=(x=0, y=0, w=1988, h=976)] [z=2] }] [color=rgba(255, 255, 255, 1.000000)] [bounds=(x=0, y=0, w=1988, h=1536)]
>         ContainerLayerComposite (0x12009c400) [shadow-clip=(x=0, y=0, w=1988, h=976)] [shadow-transform=[ 1 0; 0 1; 505 12; ]] [shadow-visible=< (x=-1, y=2, w=988, h=962); >] [transform=[ 1 0; 0 1; 505 32; ]] [visible=< (x=-1, y=2, w=988, h=1475); >] [metrics0={ [cb=(x=0.000000, y=0.000000, w=1988.000000, h=976.000000)] [sr=(x=0.000000, y=0.000000, w=994.000000, h=17321.599609)] [s=(0,0)] [dp=(x=0.000000, y=0.000000, w=994.000000, h=768.000000)] [cdp=(x=0.000000, y=0.000000, w=0.000000, h=0.000000)] [color=rgba(255, 255, 255, 1.000000)] [scrollId=6] [rcd] [clip=(x=0, y=0, w=1988, h=976)] [z=2] }]
>           PaintedLayerComposite (0x12083a400) [shadow-visible=< (x=-1, y=2, w=988, h=962); >] [bounds=(x=-2, y=2, w=989, h=1475)] [visible=< (x=-1, y=2, w=988, h=1359); (x=-1, y=1365, w=933, h=35); (x=-1, y=1403, w=974, h=35); (x=-1, y=1442, w=475, h=35); >] { hitregion=< (x=0, y=0, w=978, h=34580); >} [opaqueContent] [valid=< (x=-1, y=2, w=988, h=1359); (x=-1, y=1365, w=933, h=35); (x=-1, y=1403, w=974, h=35); (x=-1, y=1442, w=475, h=35); >]
>  !!! --->   TiledContentHost (0x1125998e0)
>         ContainerLayerComposite (0x1285e6000) [shadow-clip=(x=0, y=0, w=1988, h=976)] [shadow-visible=< (x=1956, y=0, w=32, h=976); >] [clip=(x=0, y=0, w=1988, h=976)] [visible=< (x=1956, y=0, w=32, h=976); >]
>           PaintedLayerComposite (0x1287f8c00) [shadow-visible=< (x=1956, y=0, w=32, h=976); >] [bounds=(x=1956, y=0, w=32, h=976)] [visible=< (x=1956, y=0, w=32, h=976); >] { hitregion=< (x=1956, y=0, w=32, h=976); >} [valid=< (x=1956, y=0, w=32, h=976); >]
>             TiledContentHost (0x1125997c0)
>           ContainerLayerComposite (0x1285e6c00) [shadow-clip=(x=0, y=0, w=1988, h=976)] [shadow-transform=[ 1 0; 0 1; 0 0.546513; ]] [shadow-visible=< (x=1960, y=2, w=26, h=52); >] [clip=(x=0, y=0, w=1988, h=976)] [visible=< (x=1960, y=2, w=26, h=52); >] [vscrollbar=6]
>             PaintedLayerComposite (0x1285f1800) [shadow-transform=[ 1 0; 0 1; 1960 2; ]] [shadow-visible=< (x=0, y=0, w=26, h=52); >] [transform=[ 1 0; 0 1; 1960 2; ]] [bounds=(x=0, y=0, w=26, h=52)] [visible=< (x=0, y=0, w=26, h=52); >] { hitregion=< (x=0, y=0, w=26, h=52); > dispatchtocontentregion=< (x=0, y=0, w=26, h=52); >} [valid=< (x=0, y=0, w=26, h=52); >]
>               TiledContentHost (0x112599340)
>     PaintedLayerComposite (0x124eb9c00) [not visible] { hitregion=< (x=0, y=2, w=100, h=32); (x=32, y=34, w=68, h=4); >} [opaqueContent]
> 
> Painting --- compositing layer tree:
> LayerManager (0x129251640)
>   ContainerLayerComposite (0x112c62800) [shadow-visible=< (x=0, y=0, w=1988, h=978); >] [visible=< (x=0, y=0, w=1988, h=978); >] [opaqueContent] [metrics0={ [cb=(x=0.000000, y=0.000000, w=1988.000000, h=978.000000)] [sr=(x=0.000000, y=0.000000, w=994.000000, h=489.000000)] [s=(0,0)] [dp=(x=0.000000, y=0.000000, w=994.000000, h=489.000000)] [cdp=(x=0.000000, y=0.000000, w=0.000000, h=0.000000)] [color=rgba(0, 0, 0, 0.000000)] [scrollId=9] [z=2] }]
>     PaintedLayerComposite (0x112c67400) [shadow-visible=< (x=0, y=0, w=1988, h=978); >] [bounds=(x=0, y=-2, w=1988, h=980)] [visible=< (x=0, y=0, w=1988, h=978); >] { hitregion=< (x=0, y=0, w=1988, h=978); >} [opaqueContent] [valid=< (x=0, y=0, w=1988, h=978); >]
>       TiledContentHost (0x112c8fae0)
>     RefLayerComposite (0x112c64400) [shadow-clip=(x=0, y=2, w=1988, h=976)] [shadow-transform=[ 1 0; 0 1; 0 2; ]] [shadow-visible=< (x=0, y=0, w=1988, h=976); >] [clip=(x=0, y=2, w=1988, h=976)] [transform=[ 1 0; 0 1; 0 2; ]] [visible=< (x=0, y=0, w=1988, h=976); >] [id=8]
>       ContainerLayerComposite (0x11f454400) [shadow-visible=< (x=0, y=0, w=1988, h=976); >] [visible=< (x=0, y=0, w=1988, h=976); >] [opaqueContent]
>         PaintedLayerComposite (0x119f1f000) [not visible] { hitregion=< (x=0, y=0, w=1988, h=976); >} [opaqueContent]
>         PaintedLayerComposite (0x12083c800) [shadow-clip=(x=0, y=0, w=0, h=0)] [shadow-transform=[ 1 0; 0 1; 0 -86; ]] [clip=(x=0, y=0, w=0, h=0)] [not visible] [metrics0={ [cb=(x=0.000000, y=0.000000, w=1988.000000, h=976.000000)] [sr=(x=0.000000, y=0.000000, w=994.000000, h=17321.599609)] [s=(0,0)] [dp=(x=0.000000, y=0.000000, w=994.000000, h=768.000000)] [cdp=(x=0.000000, y=0.000000, w=0.000000, h=0.000000)] [color=rgba(255, 255, 255, 1.000000)] [scrollId=6] [rcd] [clip=(x=0, y=0, w=1988, h=976)] [z=2] }]
>         ColorLayerComposite (0x1239cf400) [shadow-clip=(x=0, y=0, w=1988, h=976)] [shadow-transform=[ 1 0; 0 1; 0 -86; ]] [shadow-visible=< (x=0, y=0, w=1988, h=1536); >] [bounds=(x=0, y=0, w=1988, h=34643)] [visible=< (x=0, y=0, w=1988, h=1536); >] { hitregion=< (x=0, y=0, w=1988, h=34644); >} [opaqueContent] [metrics0={ [cb=(x=0.000000, y=0.000000, w=1988.000000, h=976.000000)] [sr=(x=0.000000, y=0.000000, w=994.000000, h=17321.599609)] [s=(0,0)] [dp=(x=0.000000, y=0.000000, w=994.000000, h=768.000000)] [cdp=(x=0.000000, y=0.000000, w=0.000000, h=0.000000)] [color=rgba(255, 255, 255, 1.000000)] [scrollId=6] [rcd] [clip=(x=0, y=0, w=1988, h=976)] [z=2] }] [color=rgba(255, 255, 255, 1.000000)] [bounds=(x=0, y=0, w=1988, h=1536)]
>         ContainerLayerComposite (0x12009c400) [shadow-clip=(x=0, y=0, w=1988, h=976)] [shadow-transform=[ 1 0; 0 1; 505 -54; ]] [shadow-visible=< (x=-1, y=2, w=988, h=1475); >] [transform=[ 1 0; 0 1; 505 32; ]] [visible=< (x=-1, y=2, w=988, h=1475); >] [metrics0={ [cb=(x=0.000000, y=0.000000, w=1988.000000, h=976.000000)] [sr=(x=0.000000, y=0.000000, w=994.000000, h=17321.599609)] [s=(0,0)] [dp=(x=0.000000, y=0.000000, w=994.000000, h=768.000000)] [cdp=(x=0.000000, y=0.000000, w=0.000000, h=0.000000)] [color=rgba(255, 255, 255, 1.000000)] [scrollId=6] [rcd] [clip=(x=0, y=0, w=1988, h=976)] [z=2] }]
>  ! ---->  PaintedLayerComposite (0x12083a400) [shadow-visible=< (x=-1, y=2, w=988, h=1359); (x=-1, y=1365, w=933, h=35); (x=-1, y=1403, w=974, h=35); (x=-1, y=1442, w=475, h=35); >] [bounds=(x=-2, y=2, w=989, h=1475)] [visible=< (x=-1, y=2, w=988, h=1359); (x=-1, y=1365, w=933, h=35); (x=-1, y=1403, w=974, h=35); (x=-1, y=1442, w=475, h=35); >] { hitregion=< (x=0, y=0, w=978, h=34580); >} [opaqueContent] [valid=< (x=-1, y=2, w=988, h=1359); (x=-1, y=1365, w=933, h=35); (x=-1, y=1403, w=974, h=35); (x=-1, y=1442, w=475, h=35); >]
>         ContainerLayerComposite (0x1285e6000) [shadow-clip=(x=0, y=0, w=1988, h=976)] [shadow-visible=< (x=1956, y=0, w=32, h=976); >] [clip=(x=0, y=0, w=1988, h=976)] [visible=< (x=1956, y=0, w=32, h=976); >]
>           PaintedLayerComposite (0x1287f8c00) [shadow-visible=< (x=1956, y=0, w=32, h=976); >] [bounds=(x=1956, y=0, w=32, h=976)] [visible=< (x=1956, y=0, w=32, h=976); >] { hitregion=< (x=1956, y=0, w=32, h=976); >} [valid=< (x=1956, y=0, w=32, h=976); >]
>             TiledContentHost (0x1125997c0)
>           ContainerLayerComposite (0x1285e6c00) [shadow-clip=(x=0, y=0, w=1988, h=976)] [shadow-transform=[ 1 0; 0 1; 0 2.35001; ]] [shadow-visible=< (x=1960, y=2, w=26, h=52); >] [clip=(x=0, y=0, w=1988, h=976)] [visible=< (x=1960, y=2, w=26, h=52); >] [vscrollbar=6]
>             PaintedLayerComposite (0x1285f1800) [shadow-transform=[ 1 0; 0 1; 1960 2; ]] [shadow-visible=< (x=0, y=0, w=26, h=52); >] [transform=[ 1 0; 0 1; 1960 2; ]] [bounds=(x=0, y=0, w=26, h=52)] [visible=< (x=0, y=0, w=26, h=52); >] { hitregion=< (x=0, y=0, w=26, h=52); > dispatchtocontentregion=< (x=0, y=0, w=26, h=52); >} [valid=< (x=0, y=0, w=26, h=52); >]
>               TiledContentHost (0x112599340)
>     PaintedLayerComposite (0x124eb9c00) [not visible] { hitregion=< (x=0, y=2, w=100, h=32); (x=32, y=34, w=68, h=4); >} [opaqueContent]
Flags: needinfo?(matt.woodrow)
(Assignee)

Comment 7

2 years ago
So the ContentHost is forcefully detached from CompositableParent::Destroy, which is called from the child process from the SingleTiledContentClient destructor (or rather its inherited CompositableClient destructor). The SingleTiledContentClient is destroyed in ClientTiledPaintedLayer::ClearCachedResources(), which is called from ClientTiledPaintedLayer::RenderLayer() because !mContentClient->SupportsLayerSize(layerSize, ClientManager()).
(Assignee)

Comment 8

2 years ago
Created attachment 8693002 [details]
MozReview Request: Bug 1198021 - When the ContentClient of a ClientTiledPaintedLayer changes, don't destroy the old content client until after the layer transaction has been sent. r?nical

Bug 1198021 - When the ContentClient of a ClientTiledPaintedLayer changes, don't destroy the old content client until after the layer transaction has been sent. r?nical
Attachment #8693002 - Flags: review?(nical.bugzilla)
(Assignee)

Updated

2 years ago
Assignee: nobody → mstange
Status: NEW → ASSIGNED
Flags: needinfo?(matt.woodrow)

Updated

2 years ago
Attachment #8693002 - Flags: review?(nical.bugzilla) → review+
Comment on attachment 8693002 [details]
MozReview Request: Bug 1198021 - When the ContentClient of a ClientTiledPaintedLayer changes, don't destroy the old content client until after the layer transaction has been sent. r?nical

https://reviewboard.mozilla.org/r/26369/#review23883
Blocks: 1229125
(Assignee)

Updated

2 years ago
No longer blocks: 1229125
Priority: -- → P2
(Assignee)

Comment 10

2 years ago
https://hg.mozilla.org/integration/mozilla-inbound/rev/830117f932295a398962749c7bf1759d6c445518
Bug 1198021 - When the ContentClient of a ClientTiledPaintedLayer changes, don't destroy the old content client until after the layer transaction has been sent. r=nical

Comment 11

2 years ago
bugherder
https://hg.mozilla.org/mozilla-central/rev/830117f93229
Status: ASSIGNED → RESOLVED
Last Resolved: 2 years ago
status-firefox45: --- → fixed
Resolution: --- → FIXED
Target Milestone: --- → mozilla45
You need to log in before you can comment on or make changes to this bug.