summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gfx/thebes/gfxPrefs.h1
-rw-r--r--layout/base/nsDisplayList.cpp5
-rw-r--r--modules/libpref/init/all.js6
3 files changed, 12 insertions, 0 deletions
diff --git a/gfx/thebes/gfxPrefs.h b/gfx/thebes/gfxPrefs.h
index 71485ff22a..359a258c7c 100644
--- a/gfx/thebes/gfxPrefs.h
+++ b/gfx/thebes/gfxPrefs.h
@@ -436,6 +436,7 @@ private:
DECL_GFX_PREF(Live, "image.decode-immediately.enabled", ImageDecodeImmediatelyEnabled, bool, false);
DECL_GFX_PREF(Live, "image.downscale-during-decode.enabled", ImageDownscaleDuringDecodeEnabled, bool, true);
DECL_GFX_PREF(Live, "image.infer-src-animation.threshold-ms", ImageInferSrcAnimationThresholdMS, uint32_t, 2000);
+ DECL_GFX_PREF(Once, "image.layerize.always", ImageLayerizeAlways, bool, false);
DECL_GFX_PREF(Once, "image.mem.decode_bytes_at_a_time", ImageMemDecodeBytesAtATime, uint32_t, 200000);
DECL_GFX_PREF(Live, "image.mem.discardable", ImageMemDiscardable, bool, false);
DECL_GFX_PREF(Once, "image.mem.surfacecache.discard_factor", ImageMemSurfaceCacheDiscardFactor, uint32_t, 1);
diff --git a/layout/base/nsDisplayList.cpp b/layout/base/nsDisplayList.cpp
index 8035269e30..cb55bb2da0 100644
--- a/layout/base/nsDisplayList.cpp
+++ b/layout/base/nsDisplayList.cpp
@@ -3513,6 +3513,11 @@ nsDisplayImageContainer::CanOptimizeToImageLayer(LayerManager* aManager,
return false;
}
+ if (gfxPrefs::ImageLayerizeAlways()) {
+ // If the user decides to trade off quality for performance, so be it!
+ return true;
+ }
+
const int32_t factor = mFrame->PresContext()->AppUnitsPerDevPixel();
const LayoutDeviceRect destRect =
LayoutDeviceRect::FromAppUnits(GetDestRect(), factor);
diff --git a/modules/libpref/init/all.js b/modules/libpref/init/all.js
index beab06aff5..1b2793ed3b 100644
--- a/modules/libpref/init/all.js
+++ b/modules/libpref/init/all.js
@@ -4346,6 +4346,12 @@ pref("image.http.accept", "image/webp,image/png,image/*;q=0.8,*/*;q=0.5");
// disable.
pref("image.infer-src-animation.threshold-ms", 2000);
+// Whether to always optimize to image layers. Setting this to true will increase
+// performance of downscaled large images at the expense of visual quality,
+// because we can't use HQ downscaling in image layers.
+// Aliasing may occur past downscaling beyond 34% in that case.
+pref("image.layerize.always", false);
+
//
// Image memory management prefs
//