Closed Bug 1532299 Opened 8 months ago Closed 6 months ago

OOP iframes show up blank most of the time with WebRender

Categories

(Core :: Graphics: WebRender, defect, P2)

defect

Tracking

()

RESOLVED FIXED
mozilla68
Fission Milestone M2
Tracking Status
firefox68 --- fixed

People

(Reporter: hsivonen, Assigned: rhunt)

References

(Blocks 2 open bugs)

Details

Attachments

(1 file)

Steps to reproduce:

  1. Set fission.oopif.attribute to true
  2. Set gfx.webrender.picture-caching to false (bug 1527380)
  3. Set gfx.webrender.all to true
  4. Navigate to https://hsivonen.fi/fission-host.html

Actual results:
The iframes fail to show content (a button) most of the time. Occasasionally, though, the do show content. I haven't been able to identify what user actual triggers them to show content.

Expected results:
Expected out-of-process iframes to show content all the time.

Component: Graphics → Graphics: WebRender

Most of the time content shows up when I press tab to move focus from the location bar to the main content area. However, if I tab into an out-of-process iframe (local patches applied), the visuals aren't updated until I also click the same iframe.

Ryan can you look at this?

Assignee: nobody → rhunt
Flags: needinfo?(rhunt)
Priority: -- → P2
Fission Milestone: --- → M2
Status: NEW → ASSIGNED

I tried to reproduce this, and I'm not sure I'm able to. Henri, can you still reproduce this?

Flags: needinfo?(rhunt) → needinfo?(hsivonen)

I see the iframes usually show up blank on initial load. As soon as you start scrolling or interacting with the page they render. I suspect anything that triggers a repaint in the root content process will do it.

I still see this. E.g. on Windows 10, today only the first iframe at https://hsivonen.fi/fission-host.html paints right away and the last two paint only after moving keyboard focus.

Flags: needinfo?(hsivonen)
Blocks: rendering-fission
No longer blocks: graphics-fission
Summary: Out-of-process iframes show up blank most of the time with WebRender → OOP iframes show up blank most of the time with WebRender

I'm now able to reproduce this.

I have a fix for this.

There's a race condition after initializing an OOP-iframe between the first
paint and when we receive a layers ID for the child browser. If we paint
before getting a layers ID, then the nsDisplayRemote for the subdocument
will not reference the child browser. Then when the child browser paints,
it will never be linked in the final layer tree/display list.

This patch triggers an invalidation of the subdocument frame when we
get the layers ID for the OOP-iframe to prevent this.

Pushed by rhunt@eqrion.net:
https://hg.mozilla.org/integration/autoland/rev/d9a39f64659c
Invalidate subdocument frame when we acquire layers ID for OOP-iframe. r=kats
Status: ASSIGNED → RESOLVED
Closed: 6 months ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla68
You need to log in before you can comment on or make changes to this bug.