From 1190eb1c6a485c5ab20817b28849a0aef2d3980c Mon Sep 17 00:00:00 2001 From: wuggy Date: Thu, 17 Sep 2026 23:27:05 -0700 Subject: [PATCH] WebRender preference (gfx.webrender.enable, false by default) --- gfx/layers/composite/ColorLayerComposite.cpp | 3 ++- gfx/thebes/gfxPrefs.h | 2 ++ modules/libpref/init/all.js | 3 +++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/gfx/layers/composite/ColorLayerComposite.cpp b/gfx/layers/composite/ColorLayerComposite.cpp index 03058b6b60..7f19357ea8 100644 --- a/gfx/layers/composite/ColorLayerComposite.cpp +++ b/gfx/layers/composite/ColorLayerComposite.cpp @@ -14,6 +14,7 @@ #include "mozilla/layers/CompositorTypes.h" // for DiagnosticFlags::COLOR #include "mozilla/layers/Effects.h" // for Effect, EffectChain, etc #include "mozilla/mozalloc.h" // for operator delete, etc +#include "gfxPrefs.h" // for gfxPrefs::WebRenderEnabled namespace mozilla { namespace layers { @@ -34,7 +35,7 @@ ColorLayerComposite::RenderLayer(const IntRect& aClipRect) // Masked or 3D layers continue through the established effect path until // equivalent WebRender primitives are available for those cases. CompositorOGL* compositorOGL = mCompositor->AsCompositorOGL(); - if (compositorOGL && + if (gfxPrefs::WebRenderEnabled() && compositorOGL && !effectChain.mSecondaryEffects[EffectTypes::MASK] && GetEffectiveMixBlendMode() == CompositionOp::OP_OVER && transform.Is2D() && !clipRect.IsEmpty()) { diff --git a/gfx/thebes/gfxPrefs.h b/gfx/thebes/gfxPrefs.h index adab38e25b..121b132a1d 100644 --- a/gfx/thebes/gfxPrefs.h +++ b/gfx/thebes/gfxPrefs.h @@ -409,6 +409,8 @@ private: DECL_GFX_PREF(Once, "gfx.use-iosurface-textures", UseIOSurfaceTextures, bool, false); + DECL_GFX_PREF(Live, "gfx.webrender.enabled", WebRenderEnabled, bool, false); + // These times should be in milliseconds DECL_GFX_PREF(Once, "gfx.touch.resample.delay-threshold", TouchResampleVsyncDelayThreshold, int32_t, 20); DECL_GFX_PREF(Once, "gfx.touch.resample.max-predict", TouchResampleMaxPredict, int32_t, 8); diff --git a/modules/libpref/init/all.js b/modules/libpref/init/all.js index 2bcf534e75..71f9ed86da 100644 --- a/modules/libpref/init/all.js +++ b/modules/libpref/init/all.js @@ -727,6 +727,9 @@ pref("layout.scroll.root-frame-containers", false); pref("gfx.layerscope.enabled", false); pref("gfx.layerscope.port", 23456); +// Enable the incremental C WebRender path for supported compositor primitives. +pref("gfx.webrender.enabled", false); + // Log severe performance warnings to the error console and profiles. // This should be use to quickly find which slow paths are used by test cases. pref("gfx.perf-warnings.enabled", false);