Bug 1697981 - Do not allocate CompositorWindow for Software WebRender r=nical

Since Bug 1688096 fix, WebRender and Software WebRender could be used at the same time.

Differential Revision: https://phabricator.services.mozilla.com/D108141
This commit is contained in:
sotaro 2021-03-12 12:52:16 +00:00
Родитель 2a1437011c
Коммит d185ad884c
2 изменённых файлов: 16 добавлений и 9 удалений

Просмотреть файл

@ -1771,9 +1771,16 @@ PWebRenderBridgeParent* CompositorBridgeParent::AllocPWebRenderBridgeParent(
MOZ_ASSERT(mWidget);
#ifdef XP_WIN
if (mWidget && (DeviceManagerDx::Get()->CanUseDComp() ||
gfxVars::UseWebRenderFlipSequentialWin())) {
mWidget->AsWindows()->EnsureCompositorWindow();
if (mWidget && mWidget->AsWindows()) {
const auto options = mWidget->GetCompositorOptions();
if (!options.UseSoftwareWebRender() &&
(DeviceManagerDx::Get()->CanUseDComp() ||
gfxVars::UseWebRenderFlipSequentialWin())) {
mWidget->AsWindows()->EnsureCompositorWindow();
} else if (options.UseSoftwareWebRender() &&
mWidget->AsWindows()->GetCompositorHwnd()) {
mWidget->AsWindows()->DestroyCompositorWindow();
}
}
#endif

Просмотреть файл

@ -307,16 +307,16 @@ bool RenderCompositorANGLE::CreateSwapChain(nsACString& aError) {
mUseTripleBuffering = useTripleBuffering;
} else if (useFlipSequential) {
gfxCriticalNoteOnce << "FLIP_SEQUENTIAL is not supported. Fallback";
if (mWidget->AsWindows()->GetCompositorHwnd()) {
// Destroy compositor window.
mWidget->AsWindows()->DestroyCompositorWindow();
hwnd = mWidget->AsWindows()->GetHwnd();
}
}
}
if (!mSwapChain) {
if (mWidget->AsWindows()->GetCompositorHwnd()) {
// Destroy compositor window.
mWidget->AsWindows()->DestroyCompositorWindow();
hwnd = mWidget->AsWindows()->GetHwnd();
}
DXGI_SWAP_CHAIN_DESC swapDesc{};
swapDesc.BufferDesc.Width = 0;
swapDesc.BufferDesc.Height = 0;