Closed
Bug 1494538
Opened 6 years ago
Closed 6 years ago
Update accelerated features when GPU process is disabled
Categories
(Core :: Graphics: WebRender, defect, P2)
Core
Graphics: WebRender
Tracking
()
RESOLVED
FIXED
mozilla64
Tracking | Status | |
---|---|---|
firefox64 | --- | fixed |
People
(Reporter: sotaro, Assigned: sotaro)
References
Details
Attachments
(1 file, 2 obsolete files)
3.33 KB,
patch
|
sotaro
:
review+
|
Details | Diff | Splinter Review |
When GPU process is disabled, it does not update accelerated features. Then current gecko always fallback to BasicCompositor in this case.
Assignee | ||
Comment 1•6 years ago
|
||
During fallback to BasicCompositor, some graphic errors are printed by trying D3D Compositor. They are like the following. (#0) Error Failed to connect GPU process (#1) Error [D3D11] failed to get compositor device. (#2) Error [D3D11] Failed to init compositor with reason: FEATURE_FAILURE_D3D11_NO_DEVICE (#3) CP+[GFX1-]: Could not get a DXGI adapter (#4) CP+[GFX1-]: Could not get a DXGI adapter (#5) CP+[GFX1-]: Could not get a DXGI adapter (#6) Error [D3D11] failed to get compositor device. (#7) Error [D3D11] Failed to init compositor with reason: FEATURE_FAILURE_D3D11_NO_DEVICE
Assignee | ||
Updated•6 years ago
|
Assignee: nobody → sotaro.ikeda.g
Assignee | ||
Comment 2•6 years ago
|
||
Assignee | ||
Updated•6 years ago
|
Attachment #9012481 -
Attachment description: patch - Rebuild accelerated features during disabling GPU process → patch - Update accelerated features when GPU process is disabled
Assignee | ||
Comment 3•6 years ago
|
||
https://treeherder.mozilla.org/#/jobs?repo=try&revision=8578834b0d1fcc3168eac75b7674730f2cb53bd2
Assignee | ||
Updated•6 years ago
|
Attachment #9012481 -
Flags: review?(matt.woodrow)
Updated•6 years ago
|
Blocks: stage-wr-trains
Priority: -- → P2
Comment 4•6 years ago
|
||
Isn't it intentional that we fallback to BasicCompositor when the GPU process has failed repeatedly? The assumption is that something in the graphics driver is crashing, so we don't want to run it in the parent process, since then it would crash the whole browser. Is that different from what this is trying to do?
Assignee | ||
Comment 5•6 years ago
|
||
Yea, it seems like intentional to fallback to BasicCompositor. In this case, it seems better to make it explicitly. gecko does not make it explicitly and tries to allocate D3D compositor and then failed and fallbacks to BasicCompositor.
Assignee | ||
Updated•6 years ago
|
Attachment #9012481 -
Flags: review?(matt.woodrow)
Assignee | ||
Comment 6•6 years ago
|
||
During disabling GPU process, GPUProcessManager only disables HW_COMPOSITING if the GPU process is disabled by DeviceReset in GPU Process. GPUProcessManager::OnRemoteProcessDeviceReset() https://dxr.mozilla.org/mozilla-central/source/gfx/ipc/GPUProcessManager.cpp#505
Assignee | ||
Comment 7•6 years ago
|
||
(In reply to Sotaro Ikeda [:sotaro] from comment #6) > During disabling GPU process, GPUProcessManager only disables HW_COMPOSITING > if the GPU process is disabled by DeviceReset in GPU Process. But gecko virtually disabling HW_COMPOSITING because compositor device does not exist in parent process.
Assignee | ||
Comment 8•6 years ago
|
||
It seems that some code expects to initialize D3DDevice. nsWindow::GetLayerManager() calls gfxWindowsPlatform::UpdateRenderMode() before creating Compositor. But it does not work as to create D3DDevice. https://dxr.mozilla.org/mozilla-central/source/widget/windows/nsWindow.cpp#3956 But the UpdateRenderMode() does not create D3DDevice. The D3DDevice is created only when device reset happens. It is done by gfxWindowsPlatform::HandleDeviceReset(). https://dxr.mozilla.org/mozilla-central/source/gfx/thebes/gfxWindowsPlatform.cpp#404 HandleDeviceReset() was added by Bug 1183910. Then always fallback to BasicCompositor during disabling GPU process seems to continued about 3 years.
Assignee | ||
Comment 9•6 years ago
|
||
Then it seems better just explicitly fallback to software for now in this case.
Assignee | ||
Comment 10•6 years ago
|
||
Attachment #9012481 -
Attachment is obsolete: true
Assignee | ||
Updated•6 years ago
|
Attachment #9012823 -
Flags: review?(matt.woodrow)
Comment 11•6 years ago
|
||
Comment on attachment 9012823 [details] [diff] [review] patch - Fallback to sofware when GPU process is disabled on Windows Review of attachment 9012823 [details] [diff] [review]: ----------------------------------------------------------------- ::: gfx/ipc/GPUProcessManager.cpp @@ +196,5 @@ > // crash, then we need to tell the content processes again, because they > // need to rebind to the UI process. > HandleProcessLost(); > + > + // On windos, always fallback to software. Windows
Attachment #9012823 -
Flags: review?(matt.woodrow) → review+
Assignee | ||
Comment 12•6 years ago
|
||
Attachment #9012823 -
Attachment is obsolete: true
Attachment #9013189 -
Flags: review+
Comment 13•6 years ago
|
||
Pushed by sikeda@mozilla.com: https://hg.mozilla.org/integration/mozilla-inbound/rev/948d251c50ee Fallback to sofware when GPU process is disabled on Windows r=mattwoodrow
Comment 14•6 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/948d251c50ee
Status: NEW → RESOLVED
Closed: 6 years ago
status-firefox64:
--- → fixed
Resolution: --- → FIXED
Target Milestone: --- → mozilla64
You need to log in
before you can comment on or make changes to this bug.
Description
•