tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

commit 20a1fb35a4d5c2f2ea6c865ecebc8e4bee6f86c9
parent 43d777d4902a727270600b08cd0028da228f9160
Author: Cristina Horotan <chorotan@mozilla.com>
Date:   Tue, 23 Dec 2025 05:31:40 +0200

Revert "Bug 2007373 - Do not fallback directly from SWGL + D3D11/OGL composting to SWGL when creating RenderCompositor. r=gfx-reviewers,lsalzman" for causing leakcheck

This reverts commit 43d777d4902a727270600b08cd0028da228f9160.

Diffstat:
Mgfx/webrender_bindings/RenderCompositor.cpp | 13+++++++++++--
Mgfx/webrender_bindings/RenderCompositorD3D11SWGL.cpp | 3---
Mgfx/webrender_bindings/RenderCompositorLayersSWGL.cpp | 9---------
Mgfx/webrender_bindings/RenderCompositorLayersSWGL.h | 1-
Mgfx/webrender_bindings/RenderCompositorOGLSWGL.cpp | 6------
5 files changed, 11 insertions(+), 21 deletions(-)

diff --git a/gfx/webrender_bindings/RenderCompositor.cpp b/gfx/webrender_bindings/RenderCompositor.cpp @@ -220,9 +220,18 @@ UniquePtr<RenderCompositor> RenderCompositor::Create( return RenderCompositorNativeSWGL::Create(aWidget, aError); } #endif - if (RenderCompositorLayersSWGL::MayCreate(aWidget)) { - return RenderCompositorLayersSWGL::Create(aWidget, aError); + UniquePtr<RenderCompositor> comp = + RenderCompositorLayersSWGL::Create(aWidget, aError); + if (comp) { + return comp; } +#if defined(MOZ_WIDGET_ANDROID) + // On Android, we do not want to fallback from RenderCompositorOGLSWGL to + // RenderCompositorSWGL. + if (aWidget->GetCompositorOptions().AllowSoftwareWebRenderOGL()) { + return nullptr; + } +#endif return RenderCompositorSWGL::Create(aWidget, aError); } diff --git a/gfx/webrender_bindings/RenderCompositorD3D11SWGL.cpp b/gfx/webrender_bindings/RenderCompositorD3D11SWGL.cpp @@ -46,14 +46,12 @@ UniquePtr<RenderCompositor> RenderCompositorD3D11SWGL::Create( const RefPtr<widget::CompositorWidget>& aWidget, nsACString& aError) { if (!aWidget->GetCompositorOptions().AllowSoftwareWebRenderD3D11() || !gfx::gfxConfig::IsEnabled(gfx::Feature::D3D11_COMPOSITING)) { - aError.Assign("RcD3D11SWGL(not allowed)"_ns); return nullptr; } void* ctx = wr_swgl_create_context(); if (!ctx) { gfxCriticalNote << "Failed SWGL context creation for WebRender"; - aError.Assign("RcD3D11SWGL(create swgl ctx failed)"_ns); return nullptr; } @@ -62,7 +60,6 @@ UniquePtr<RenderCompositor> RenderCompositorD3D11SWGL::Create( if (!compositor->Initialize(&log)) { gfxCriticalNote << "Failed to initialize CompositorD3D11 for SWGL: " << log.get(); - aError.Assign("RcD3D11SWGL(create CompositorD3D11 failed)"_ns); return nullptr; } return MakeUnique<RenderCompositorD3D11SWGL>(compositor, aWidget, ctx); diff --git a/gfx/webrender_bindings/RenderCompositorLayersSWGL.cpp b/gfx/webrender_bindings/RenderCompositorLayersSWGL.cpp @@ -28,15 +28,6 @@ using namespace gfx; namespace wr { -bool RenderCompositorLayersSWGL::MayCreate( - const RefPtr<widget::CompositorWidget>& aWidget) { -#ifdef XP_WIN - return aWidget->GetCompositorOptions().AllowSoftwareWebRenderD3D11(); -#else - return aWidget->GetCompositorOptions().AllowSoftwareWebRenderOGL(); -#endif -} - UniquePtr<RenderCompositor> RenderCompositorLayersSWGL::Create( const RefPtr<widget::CompositorWidget>& aWidget, nsACString& aError) { #ifdef XP_WIN diff --git a/gfx/webrender_bindings/RenderCompositorLayersSWGL.h b/gfx/webrender_bindings/RenderCompositorLayersSWGL.h @@ -23,7 +23,6 @@ class SurfaceD3D11SWGL; class RenderCompositorLayersSWGL : public RenderCompositor { public: - static bool MayCreate(const RefPtr<widget::CompositorWidget>& aWidget); static UniquePtr<RenderCompositor> Create( const RefPtr<widget::CompositorWidget>& aWidget, nsACString& aError); diff --git a/gfx/webrender_bindings/RenderCompositorOGLSWGL.cpp b/gfx/webrender_bindings/RenderCompositorOGLSWGL.cpp @@ -55,13 +55,11 @@ UniquePtr<RenderCompositor> RenderCompositorOGLSWGL::Create( RenderThread::Get()->SingletonGLForCompositorOGL(); if (!context) { gfxCriticalNote << "SingletonGL does not exist for SWGL"; - aError.Assign("RcOGLSWGL(no singleton gl)"_ns); return nullptr; } auto programs = RenderThread::Get()->GetProgramsForCompositorOGL(); if (!programs) { gfxCriticalNote << "Failed to get Programs for CompositorOGL for SWGL"; - aError.Assign("RcOGLSWGL(no programs)"_ns); return nullptr; } @@ -73,7 +71,6 @@ UniquePtr<RenderCompositor> RenderCompositorOGLSWGL::Create( if (!compositorOGL->Initialize(context, programs, &log)) { gfxCriticalNote << "Failed to initialize CompositorOGL for SWGL: " << log.get(); - aError.Assign("RcOGLSWGL(create CompositorOGL failed)"_ns); return nullptr; } compositor = compositorOGL; @@ -84,21 +81,18 @@ UniquePtr<RenderCompositor> RenderCompositorOGLSWGL::Create( if (!compositorOGL->Initialize(&log)) { gfxCriticalNote << "Failed to initialize CompositorOGL for SWGL: " << log.get(); - aError.Assign("RcOGLSWGL(create CompositorOGL failed)"_ns); return nullptr; } compositor = compositorOGL; #endif if (!compositor) { - aError.Assign("RcOGLSWGL(no CompositorOGL)"_ns); return nullptr; } void* ctx = wr_swgl_create_context(); if (!ctx) { gfxCriticalNote << "Failed SWGL context creation for WebRender"; - aError.Assign("RcOGLSWGL(create swgl ctx failed)"_ns); return nullptr; }