Open Bug 865844 Opened 7 years ago Updated 1 year ago

test_WebGLContextLost from bug 844323 causes assertion failures

Categories

(Core :: Graphics: Layers, defect)

defect
Not set

Tracking

()

People

(Reporter: justin.lebar+bug, Unassigned)

References

Details

Attachments

(1 file)

See bug 844323 comment 45; this test (currently disabled) causes assertion failures.

It's not clear to me yet whether this issue needs to block the landing of bug 844323, but I kind of hope not, since that landing is blocking a lot of other, important B2G work.
It appears that in RenderFrameParent we hit the path where we can't get a LayerManagerComposite, here: https://mxr.mozilla.org/mozilla-central/source/layout/ipc/RenderFrameParent.cpp#609

with nsContentUtils::LayerManagerForDocument(doc) returning a BasicLayerManager here:
https://mxr.mozilla.org/mozilla-central/source/layout/ipc/RenderFrameParent.cpp#481

I don't know yet if we are supposed to get into this code path sometimes or if it always means we ran into an error.
we don't seem to ever hit the supposedly correct path 
https://mxr.mozilla.org/mozilla-central/source/layout/ipc/RenderFrameParent.cpp#607

where we have a LayerManagerComposite
Assignee: nobody → nical.bugzilla
While looking at this bug it turned out that we were always falling back on the "oh darn, we don't have a LayerManagerComposite" code path in RenderFrameParent, so here is a patch that actually queries compositing info (layers backend and max texture size) without needing a layer manager composite.

This doesn't solve the problem, though.
Now it seems that we are in a different setup in this test than in the regular linux config: we do some IPC stuff and use PuppetWidget but we don't initialize OMTC. And then we still try to use the ClientLayerManager stuff but without a proper omtc setup it crashes in the Client code.
Attachment #744629 - Flags: review?(ncameron)
So, I don't know why test_WebGLContextLost uses a different setup than the Cipc/Ripc tests. My understanding is that it also means to run stuff in a b2g-like setup with IPC going on, except that Ripc/Cipc has "browser.tabs.remote" prefed on while test_WebGLContextLost has "dom.mozBrowserFramesEnabled" instead.

As a result, Cipc/Ripc initialize OMTC, while test_WebGLContextLost doesn't, even though it uses PuppetWidget that require OMTC. Hence the crash.
Attachment #744629 - Flags: review?(ncameron) → review?(bas)
> As a result, Cipc/Ripc initialize OMTC, while test_WebGLContextLost doesn't,
> even though it uses PuppetWidget that require OMTC. Hence the crash.

Actually I take back what I said about OMTC init. It is more about the order of things happening. OMTC is setup in both cases.
Comment on attachment 744629 [details] [diff] [review]
Make some global compositing information accessible without a compositor.

Review of attachment 744629 [details] [diff] [review]:
-----------------------------------------------------------------

this is a bit outdated, and doesn't fix the problem entirely
Attachment #744629 - Flags: review?(bas)
Nical is swamped a bit, I'll find somebody else.
Assignee: nical.bugzilla → milan
Assignee: milan → nical.bugzilla
Assignee: nical.bugzilla → nobody
You need to log in before you can comment on or make changes to this bug.