DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL usage on D3D compositor makes HWND unreusable
Categories
(Core :: Graphics: Layers, defect, P1)
Tracking
()
Tracking | Status | |
---|---|---|
firefox67 | --- | unaffected |
firefox68 | --- | verified |
firefox69 | --- | verified |
People
(Reporter: sotaro, Assigned: bas.schouten)
References
(Regression)
Details
(Keywords: regression)
Attachments
(1 file)
Bug 1547775 enables DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL usage, it makes makes HWND unreusable.
STR
[1] Start Firefox by disabling WebRender.
[2] Open about:support
[3] Push "Terminate GPU Process" button or "Trigger Device Reset" button several times.
Expected result: Compositor fallback to BasicCompositor and rendering update works as expected.
Actual results: Firefox does not update rendering anymore until restarting Firefox.
Reporter | ||
Comment 1•5 years ago
|
||
On WebRender case, CompositorWindow and DirectComposition are used to avoid the problem.
Reporter | ||
Updated•5 years ago
|
Reporter | ||
Updated•5 years ago
|
Reporter | ||
Comment 2•5 years ago
|
||
:jbonisteel, how do we handle this bug? m-c is already in soft freeze.
Comment 3•5 years ago
|
||
I think we should probably back out bug 1547775 until we have a solution to this problem.
Updated•5 years ago
|
Updated•5 years ago
|
Assignee | ||
Comment 4•5 years ago
|
||
(In reply to Jeff Muizelaar [:jrmuizel] from comment #3)
I think we should probably back out bug 1547775 until we have a solution to this problem.
Maybe we should just use DComp to composite D3D11 layers, I feel that wouldn't be particularly hard, it would probably help us in other ways. I'm a little confused as to why this would happen. So I'll look for a workaround for current painting as well :).
Assignee | ||
Comment 5•5 years ago
|
||
Assignee | ||
Updated•5 years ago
|
Assignee | ||
Comment 6•5 years ago
|
||
This fix should be simple enough to go to central in soft-freeze, since we already use WebRender using the CompositorWindow. I will follow-up with a bug & patch that implements DirectComposite for the next train. I have it running locally and just need to clean it up.
Updated•5 years ago
|
Assignee | ||
Comment 7•5 years ago
|
||
Note that I expect Tresize to regress a little with this patch. It is also a little worse on WebRender confirmed to central as far as I can tell, I believe that to basically be the additional window resizing.
Pushed by bschouten@mozilla.com: https://hg.mozilla.org/integration/mozilla-inbound/rev/e96752781d2d Use the CompositorWindow to draw to when using DoubleBuffering. r=sotaro
Comment 9•5 years ago
|
||
bugherder |
Assignee | ||
Comment 10•5 years ago
|
||
I also believe this will regress Twinopen a little to a point closer to webrender, still better, but worse than it is now. This is unavoidable, but I believe still well off-set by the benefits of bug 1547775, and since we've already decided to accept these numbers for WebRender I believe this should be fine.
Updated•5 years ago
|
Comment 11•5 years ago
|
||
Hi guys, I tried to verify this bug using these steps:
STR
[1] Start Firefox by disabling WebRender.
[2] Open about:support
[3] Push "Terminate GPU Process" button or "Trigger Device Reset" button several times.
Expected result: Compositor fallback to BasicCompositor and rendering update works as expected.
But on Beta 68.0b13 (64-bit) I do not have the 2 buttons mentioned in steps 3, is there a preference in about config for it ?
also can someone explain a bit the expected results ? should we see > Composition - Basic ? after terminating the GPU process ? or where can we check the expected results ?
Updated•5 years ago
|
Reporter | ||
Comment 12•5 years ago
|
||
(In reply to Rares Doghi from comment #11)
Hi guys, I tried to verify this bug using these steps:
STR
[1] Start Firefox by disabling WebRender.
[2] Open about:support
[3] Push "Terminate GPU Process" button or "Trigger Device Reset" button several times.Expected result: Compositor fallback to BasicCompositor and rendering update works as expected.
But on Beta 68.0b13 (64-bit) I do not have the 2 buttons mentioned in steps 3, is there a preference in about config for it ?
There is no config for it. It is defined by type of build
https://searchfox.org/mozilla-central/source/toolkit/content/aboutSupport.js#367
"Terminate GPU Process" could be done like the following.
[1] Check gpu process id from Graphic section of "about:support".
[2] Kill gpu process from Windows Task Manager.
[3] Re-load "about:support" and check new gpu process id.
also can someone explain a bit the expected results ? should we see > Composition - Basic ? after terminating the GPU process ? or where can we check the expected results ?
Yes, we should see "Composition - Basic" and "GPU_PROCESS 'failed by runtime' " in "about:support". We need to reload "about:support" after killing gpu process.
Assignee | ||
Updated•5 years ago
|
Comment 13•5 years ago
|
||
Hi, this issue is Verified as fixed using the steps from Comment 12 (Thank you Sotaro), after ending 2 processes from task manager for Firefox Beta 68.0, about:Support would show Basic composition instead of Webrender as for Nightly I had to click Terminate GPU 4 times before it actually changed to Basic.
@Sotaro is this intended, do we have to click Terminate GPU multiple times for the Basic composition to show in about:support ?
If it's normal behavior then this issue is Verified as fixed in Nightly 69 and Beta 68 and we can mark it accordingly.
Comment 14•5 years ago
|
||
https://searchfox.org/mozilla-central/rev/f711552789d6308796e34170ddaabead044adc1e/modules/libpref/init/all.js#4737-4739
With Stable and Beta you kill 2 GPU processes before Basic (initial process and the retry), with Nightly 4 GPU processes (the initial one and 3 retries).
Comment 15•5 years ago
|
||
Great, Thank you Jan. I will mark this issue accordingly.
Updated•5 years ago
|
Updated•3 years ago
|
Description
•