summaryrefslogtreecommitdiff
path: root/gfx
diff options
context:
space:
mode:
authorMoonchild <moonchild@palemoon.org>2021-03-10 18:58:26 +0000
committerMoonchild <moonchild@palemoon.org>2021-03-10 18:58:26 +0000
commit515c1193c5663e46a313acb7a39ed2f3d209f69e (patch)
treec291e0ee9c44ec2c1fa2b1a56782cd630c571469 /gfx
parent108ec40998d1b571f073d1e57de5fbf368bfe17c (diff)
downloaduxp-515c1193c5663e46a313acb7a39ed2f3d209f69e.tar.gz
Issue #1053 - Remove mobile-specific graphics "optimizations" (=compromises)
Diffstat (limited to 'gfx')
-rw-r--r--gfx/cairo/cairo/src/cairo-image-surface.c10
-rw-r--r--gfx/cairo/cairo/src/cairoint.h6
-rw-r--r--gfx/cairo/libpixman/src/pixman-private.h6
-rw-r--r--gfx/layers/Layers.cpp4
-rw-r--r--gfx/layers/RotatedBuffer.cpp12
-rw-r--r--gfx/layers/client/ClientPaintedLayer.cpp2
-rw-r--r--gfx/layers/client/ClientTiledPaintedLayer.cpp2
-rw-r--r--gfx/layers/client/TiledContentClient.cpp13
-rw-r--r--gfx/layers/composite/ContentHost.cpp4
-rw-r--r--gfx/layers/composite/TiledContentHost.cpp2
-rw-r--r--gfx/thebes/gfxFontMissingGlyphs.cpp8
-rw-r--r--gfx/thebes/gfxPrefs.h8
-rw-r--r--gfx/thebes/gfxUtils.cpp66
13 files changed, 0 insertions, 143 deletions
diff --git a/gfx/cairo/cairo/src/cairo-image-surface.c b/gfx/cairo/cairo/src/cairo-image-surface.c
index ad0737157f..cc496ece53 100644
--- a/gfx/cairo/cairo/src/cairo-image-surface.c
+++ b/gfx/cairo/cairo/src/cairo-image-surface.c
@@ -4064,13 +4064,7 @@ _cairo_image_surface_glyphs (void *abstract_surface,
composite_glyphs_info_t glyph_info;
cairo_clip_t local_clip;
cairo_bool_t have_clip = FALSE;
-#ifdef MOZ_GFX_OPTIMIZE_MOBILE
- // For performance reasons we don't want to use two passes for overlapping glyphs
- // on mobile
- cairo_bool_t overlap = FALSE;
-#else
cairo_bool_t overlap;
-#endif
cairo_status_t status;
cairo_rectangle_int_t rect;
@@ -4084,11 +4078,7 @@ _cairo_image_surface_glyphs (void *abstract_surface,
scaled_font,
glyphs, num_glyphs,
clip,
-#ifdef MOZ_GFX_OPTIMIZE_MOBILE
- NULL);
-#else
&overlap);
-#endif
if (unlikely (status))
return status;
diff --git a/gfx/cairo/cairo/src/cairoint.h b/gfx/cairo/cairo/src/cairoint.h
index 3627cd288b..2f638f2d7f 100644
--- a/gfx/cairo/cairo/src/cairoint.h
+++ b/gfx/cairo/cairo/src/cairoint.h
@@ -903,13 +903,7 @@ typedef struct _cairo_traps {
#endif
#define CAIRO_GSTATE_OPERATOR_DEFAULT CAIRO_OPERATOR_OVER
-#ifdef MOZ_GFX_OPTIMIZE_MOBILE
-// Skia uses a tolerance of 0.5 we'll use something more
-// tolerant for now
-#define CAIRO_GSTATE_TOLERANCE_DEFAULT 0.3
-#else
#define CAIRO_GSTATE_TOLERANCE_DEFAULT 0.1
-#endif
#define CAIRO_GSTATE_FILL_RULE_DEFAULT CAIRO_FILL_RULE_WINDING
#define CAIRO_GSTATE_LINE_WIDTH_DEFAULT 2.0
#define CAIRO_GSTATE_LINE_CAP_DEFAULT CAIRO_LINE_CAP_BUTT
diff --git a/gfx/cairo/libpixman/src/pixman-private.h b/gfx/cairo/libpixman/src/pixman-private.h
index 6af073b55a..2313e65583 100644
--- a/gfx/cairo/libpixman/src/pixman-private.h
+++ b/gfx/cairo/libpixman/src/pixman-private.h
@@ -9,13 +9,7 @@
#ifndef MOZILLA_VERSION
#error "Need mozilla headers"
#endif
-#ifdef MOZ_GFX_OPTIMIZE_MOBILE
-#define LOW_QUALITY_INTERPOLATION
-#define LOWER_QUALITY_INTERPOLATION
-#define BILINEAR_INTERPOLATION_BITS 4
-#else
#define BILINEAR_INTERPOLATION_BITS 7
-#endif
#define BILINEAR_INTERPOLATION_RANGE (1 << BILINEAR_INTERPOLATION_BITS)
/*
diff --git a/gfx/layers/Layers.cpp b/gfx/layers/Layers.cpp
index 482d809a1f..991e8ed2f0 100644
--- a/gfx/layers/Layers.cpp
+++ b/gfx/layers/Layers.cpp
@@ -1399,11 +1399,7 @@ ContainerLayer::DefaultComputeEffectiveTransforms(const Matrix4x4& aTransformToS
checkClipRect = true;
checkMaskLayers = true;
} else {
-#ifdef MOZ_GFX_OPTIMIZE_MOBILE
- if (!contTransform.PreservesAxisAlignedRectangles()) {
-#else
if (gfx::ThebesMatrix(contTransform).HasNonIntegerTranslation()) {
-#endif
checkClipRect = true;
}
/* In 2D case, only translation and/or positive scaling can be done w/o using IntermediateSurface.
diff --git a/gfx/layers/RotatedBuffer.cpp b/gfx/layers/RotatedBuffer.cpp
index 92252fb044..f0114bddf5 100644
--- a/gfx/layers/RotatedBuffer.cpp
+++ b/gfx/layers/RotatedBuffer.cpp
@@ -139,21 +139,13 @@ RotatedBuffer::DrawBufferQuadrant(gfx::DrawTarget* aTarget,
transform *= oldTransform;
transform *= inverseMask;
-#ifdef MOZ_GFX_OPTIMIZE_MOBILE
- SurfacePattern source(snapshot, ExtendMode::CLAMP, transform, SamplingFilter::POINT);
-#else
SurfacePattern source(snapshot, ExtendMode::CLAMP, transform);
-#endif
aTarget->SetTransform(*aMaskTransform);
aTarget->MaskSurface(source, aMask, Point(0, 0), DrawOptions(aOpacity, aOperator));
aTarget->SetTransform(oldTransform);
} else {
-#ifdef MOZ_GFX_OPTIMIZE_MOBILE
- DrawSurfaceOptions options(SamplingFilter::POINT);
-#else
DrawSurfaceOptions options;
-#endif
aTarget->DrawSurface(snapshot, IntRectToRect(fillRect),
GetSourceRectangle(aXSide, aYSide),
options,
@@ -466,9 +458,6 @@ RotatedContentBuffer::BeginPaint(PaintedLayer* aLayer,
}
if (mode == SurfaceMode::SURFACE_COMPONENT_ALPHA) {
-#if defined(MOZ_GFX_OPTIMIZE_MOBILE)
- mode = SurfaceMode::SURFACE_SINGLE_CHANNEL_ALPHA;
-#else
if (!aLayer->GetParent() ||
!aLayer->GetParent()->SupportsComponentAlphaChildren() ||
!aLayer->AsShadowableLayer() ||
@@ -477,7 +466,6 @@ RotatedContentBuffer::BeginPaint(PaintedLayer* aLayer,
} else {
result.mContentType = gfxContentType::COLOR;
}
-#endif
}
if ((aFlags & PAINT_WILL_RESAMPLE) &&
diff --git a/gfx/layers/client/ClientPaintedLayer.cpp b/gfx/layers/client/ClientPaintedLayer.cpp
index 871f10559b..150eadebf2 100644
--- a/gfx/layers/client/ClientPaintedLayer.cpp
+++ b/gfx/layers/client/ClientPaintedLayer.cpp
@@ -39,7 +39,6 @@ ClientPaintedLayer::PaintThebes()
"Can only draw in drawing phase");
uint32_t flags = RotatedContentBuffer::PAINT_CAN_DRAW_ROTATED;
-#ifndef MOZ_IGNORE_PAINT_WILL_RESAMPLE
if (ClientManager()->CompositorMightResample()) {
flags |= RotatedContentBuffer::PAINT_WILL_RESAMPLE;
}
@@ -48,7 +47,6 @@ ClientPaintedLayer::PaintThebes()
flags |= RotatedContentBuffer::PAINT_WILL_RESAMPLE;
}
}
-#endif
PaintState state =
mContentClient->BeginPaintBuffer(this, flags);
mValidRegion.Sub(mValidRegion, state.mRegionToInvalidate);
diff --git a/gfx/layers/client/ClientTiledPaintedLayer.cpp b/gfx/layers/client/ClientTiledPaintedLayer.cpp
index 599fb972c4..8936dad8fe 100644
--- a/gfx/layers/client/ClientTiledPaintedLayer.cpp
+++ b/gfx/layers/client/ClientTiledPaintedLayer.cpp
@@ -462,7 +462,6 @@ ClientTiledPaintedLayer::RenderLayer()
TILING_LOG("TILING %p: Initial low-precision valid region %s\n", this, Stringify(mLowPrecisionValidRegion).c_str());
nsIntRegion neededRegion = mVisibleRegion.ToUnknownRegion();
-#ifndef MOZ_IGNORE_PAINT_WILL_RESAMPLE
// This is handled by PadDrawTargetOutFromRegion in TiledContentClient for mobile
if (MayResample()) {
// If we're resampling then bilinear filtering can read up to 1 pixel
@@ -477,7 +476,6 @@ ClientTiledPaintedLayer::RenderLayer()
padded.IntersectRect(padded, wholeTiles);
neededRegion = padded;
}
-#endif
nsIntRegion invalidRegion;
invalidRegion.Sub(neededRegion, mValidRegion);
diff --git a/gfx/layers/client/TiledContentClient.cpp b/gfx/layers/client/TiledContentClient.cpp
index 164e76da8c..5dad3ec65e 100644
--- a/gfx/layers/client/TiledContentClient.cpp
+++ b/gfx/layers/client/TiledContentClient.cpp
@@ -308,30 +308,17 @@ ClientTiledLayerBuffer::GetContentType(SurfaceMode* aMode) const
SurfaceMode mode = mPaintedLayer.GetSurfaceMode();
if (mode == SurfaceMode::SURFACE_COMPONENT_ALPHA) {
-#if defined(MOZ_GFX_OPTIMIZE_MOBILE)
- mode = SurfaceMode::SURFACE_SINGLE_CHANNEL_ALPHA;
-#else
if (!mPaintedLayer.GetParent() ||
!mPaintedLayer.GetParent()->SupportsComponentAlphaChildren()) {
mode = SurfaceMode::SURFACE_SINGLE_CHANNEL_ALPHA;
} else {
content = gfxContentType::COLOR;
}
-#endif
} else if (mode == SurfaceMode::SURFACE_OPAQUE) {
-#if defined(MOZ_GFX_OPTIMIZE_MOBILE)
- if (IsLowPrecision()) {
- // If we're in low-res mode, drawing can sample from outside the visible
- // region. Make sure that we only sample transparency if that happens.
- mode = SurfaceMode::SURFACE_SINGLE_CHANNEL_ALPHA;
- content = gfxContentType::COLOR_ALPHA;
- }
-#else
if (mPaintedLayer.MayResample()) {
mode = SurfaceMode::SURFACE_SINGLE_CHANNEL_ALPHA;
content = gfxContentType::COLOR_ALPHA;
}
-#endif
}
if (aMode) {
diff --git a/gfx/layers/composite/ContentHost.cpp b/gfx/layers/composite/ContentHost.cpp
index b1d92a6c9e..86d33fdb64 100644
--- a/gfx/layers/composite/ContentHost.cpp
+++ b/gfx/layers/composite/ContentHost.cpp
@@ -71,7 +71,6 @@ ContentHostTexture::Composite(LayerComposite* aLayer,
nsIntRegion tmpRegion;
const nsIntRegion* renderRegion;
-#ifndef MOZ_IGNORE_PAINT_WILL_RESAMPLE
if (PaintWillResample()) {
// If we're resampling, then the texture image will contain exactly the
// entire visible region's bounds, and we should draw it all in one quad
@@ -81,9 +80,6 @@ ContentHostTexture::Composite(LayerComposite* aLayer,
} else {
renderRegion = aVisibleRegion;
}
-#else
- renderRegion = aVisibleRegion;
-#endif
nsIntRegion region(*renderRegion);
nsIntPoint origin = GetOriginOffset();
diff --git a/gfx/layers/composite/TiledContentHost.cpp b/gfx/layers/composite/TiledContentHost.cpp
index 7458c74971..a80c47fb98 100644
--- a/gfx/layers/composite/TiledContentHost.cpp
+++ b/gfx/layers/composite/TiledContentHost.cpp
@@ -425,7 +425,6 @@ TiledContentHost::Composite(LayerComposite* aLayer,
nsIntRegion tmpRegion;
const nsIntRegion* renderRegion = aVisibleRegion;
-#ifndef MOZ_IGNORE_PAINT_WILL_RESAMPLE
if (PaintWillResample()) {
// If we're resampling, then the texture image will contain exactly the
// entire visible region's bounds, and we should draw it all in one quad
@@ -433,7 +432,6 @@ TiledContentHost::Composite(LayerComposite* aLayer,
tmpRegion = aVisibleRegion->GetBounds();
renderRegion = &tmpRegion;
}
-#endif
// Render the low and high precision buffers.
RenderLayerBuffer(mLowPrecisionTiledBuffer,
diff --git a/gfx/thebes/gfxFontMissingGlyphs.cpp b/gfx/thebes/gfxFontMissingGlyphs.cpp
index 92ea5e9672..391166b587 100644
--- a/gfx/thebes/gfxFontMissingGlyphs.cpp
+++ b/gfx/thebes/gfxFontMissingGlyphs.cpp
@@ -155,7 +155,6 @@ static const Float BOX_BORDER_OPACITY = 0.5;
* Quartz cairo backend which doesn't generally support masking with surfaces.
* So for now we just paint a bunch of rectangles...
*/
-#ifndef MOZ_GFX_OPTIMIZE_MOBILE
static void
DrawHexChar(uint32_t aDigit, const Point& aPt, DrawTarget& aDrawTarget,
const Pattern &aPattern)
@@ -182,7 +181,6 @@ DrawHexChar(uint32_t aDigit, const Point& aPt, DrawTarget& aDrawTarget,
RefPtr<Path> path = builder->Finish();
aDrawTarget.Fill(path, aPattern);
}
-#endif // MOZ_GFX_OPTIMIZE_MOBILE
void
gfxFontMissingGlyphs::DrawMissingGlyph(uint32_t aChar,
@@ -209,15 +207,10 @@ gfxFontMissingGlyphs::DrawMissingGlyph(uint32_t aChar,
if (!borderStrokeRect.IsEmpty()) {
ColorPattern adjustedColor = color;
color.mColor.a *= BOX_BORDER_OPACITY;
-#ifdef MOZ_GFX_OPTIMIZE_MOBILE
- aDrawTarget.FillRect(borderStrokeRect, adjustedColor);
-#else
StrokeOptions strokeOptions(BOX_BORDER_WIDTH);
aDrawTarget.StrokeRect(borderStrokeRect, adjustedColor, strokeOptions);
-#endif
}
-#ifndef MOZ_GFX_OPTIMIZE_MOBILE
Point center = aRect.Center();
Float halfGap = HEX_CHAR_GAP / 2.f;
Float top = -(MINIFONT_HEIGHT + halfGap);
@@ -266,7 +259,6 @@ gfxFontMissingGlyphs::DrawMissingGlyph(uint32_t aChar,
Point(third, halfGap), aDrawTarget, color);
}
}
-#endif
}
Float
diff --git a/gfx/thebes/gfxPrefs.h b/gfx/thebes/gfxPrefs.h
index c38352c0d5..5a2bde0792 100644
--- a/gfx/thebes/gfxPrefs.h
+++ b/gfx/thebes/gfxPrefs.h
@@ -460,15 +460,7 @@ private:
DECL_GFX_PREF(Live, "layers.bench.enabled", LayersBenchEnabled, bool, false);
DECL_GFX_PREF(Once, "layers.bufferrotation.enabled", BufferRotationEnabled, bool, true);
DECL_GFX_PREF(Live, "layers.child-process-shutdown", ChildProcessShutdown, bool, true);
-#ifdef MOZ_GFX_OPTIMIZE_MOBILE
- // If MOZ_GFX_OPTIMIZE_MOBILE is defined, we force component alpha off
- // and ignore the preference.
- DECL_GFX_PREF(Skip, "layers.componentalpha.enabled", ComponentAlphaEnabled, bool, false);
-#else
- // If MOZ_GFX_OPTIMIZE_MOBILE is not defined, we actually take the
- // preference value, defaulting to true.
DECL_GFX_PREF(Once, "layers.componentalpha.enabled", ComponentAlphaEnabled, bool, true);
-#endif
DECL_GFX_PREF(Live, "layers.composer2d.enabled", Composer2DCompositionEnabled, bool, false);
DECL_GFX_PREF(Once, "layers.d3d11.force-warp", LayersD3D11ForceWARP, bool, false);
DECL_GFX_PREF(Live, "layers.deaa.enabled", LayersDEAAEnabled, bool, false);
diff --git a/gfx/thebes/gfxUtils.cpp b/gfx/thebes/gfxUtils.cpp
index 401bceaa99..adc48b972f 100644
--- a/gfx/thebes/gfxUtils.cpp
+++ b/gfx/thebes/gfxUtils.cpp
@@ -378,7 +378,6 @@ gfxUtils::ConvertBGRAtoRGBA(uint8_t* aData, uint32_t aLength)
libyuv::ABGRToARGB(aData, aLength, aData, aLength, aLength / 4, 1);
}
-#if !defined(MOZ_GFX_OPTIMIZE_MOBILE)
/**
* This returns the fastest operator to use for solid surfaces which have no
* alpha channel or their alpha channel is uniformly opaque.
@@ -448,66 +447,7 @@ CreateSamplingRestrictedDrawable(gfxDrawable* aDrawable,
RefPtr<gfxDrawable> drawable = new gfxSurfaceDrawable(surface, size, gfxMatrix::Translation(-needed.TopLeft()));
return drawable.forget();
}
-#endif // !MOZ_GFX_OPTIMIZE_MOBILE
-/* These heuristics are based on Source/WebCore/platform/graphics/skia/ImageSkia.cpp:computeResamplingMode() */
-#ifdef MOZ_GFX_OPTIMIZE_MOBILE
-static SamplingFilter ReduceResamplingFilter(SamplingFilter aSamplingFilter,
- int aImgWidth, int aImgHeight,
- float aSourceWidth, float aSourceHeight)
-{
- // Images smaller than this in either direction are considered "small" and
- // are not resampled ever (see below).
- const int kSmallImageSizeThreshold = 8;
-
- // The amount an image can be stretched in a single direction before we
- // say that it is being stretched so much that it must be a line or
- // background that doesn't need resampling.
- const float kLargeStretch = 3.0f;
-
- if (aImgWidth <= kSmallImageSizeThreshold
- || aImgHeight <= kSmallImageSizeThreshold) {
- // Never resample small images. These are often used for borders and
- // rules (think 1x1 images used to make lines).
- return SamplingFilter::POINT;
- }
-
- if (aImgHeight * kLargeStretch <= aSourceHeight || aImgWidth * kLargeStretch <= aSourceWidth) {
- // Large image tiling detected.
-
- // Don't resample if it is being tiled a lot in only one direction.
- // This is trying to catch cases where somebody has created a border
- // (which might be large) and then is stretching it to fill some part
- // of the page.
- if (fabs(aSourceWidth - aImgWidth)/aImgWidth < 0.5 || fabs(aSourceHeight - aImgHeight)/aImgHeight < 0.5)
- return SamplingFilter::POINT;
-
- // The image is growing a lot and in more than one direction. Resampling
- // is slow and doesn't give us very much when growing a lot.
- return aSamplingFilter;
- }
-
- /* Some notes on other heuristics:
- The Skia backend also uses nearest for backgrounds that are stretched by
- a large amount. I'm not sure this is common enough for us to worry about
- now. It also uses nearest for backgrounds/avoids high quality for images
- that are very slightly scaled. I'm also not sure that very slightly
- scaled backgrounds are common enough us to worry about.
-
- We don't currently have much support for doing high quality interpolation.
- The only place this currently happens is on Quartz and we don't have as
- much control over it as would be needed. Webkit avoids using high quality
- resampling during load. It also avoids high quality if the transformation
- is not just a scale and translation
-
- WebKit bug #40045 added code to avoid resampling different parts
- of an image with different methods by using a resampling hint size.
- It currently looks unused in WebKit but it's something to watch out for.
- */
-
- return aSamplingFilter;
-}
-#else
static SamplingFilter ReduceResamplingFilter(SamplingFilter aSamplingFilter,
int aImgWidth, int aImgHeight,
int aSourceWidth, int aSourceHeight)
@@ -515,7 +455,6 @@ static SamplingFilter ReduceResamplingFilter(SamplingFilter aSamplingFilter,
// Just pass the filter through unchanged
return aSamplingFilter;
}
-#endif
#ifdef MOZ_WIDGET_COCOA
// Only prescale a temporary surface if we're going to repeat it often.
@@ -667,10 +606,6 @@ gfxUtils::DrawPixelSnapped(gfxContext* aContext,
}
#endif
- // On Mobile, we don't ever want to do this; it has the potential for
- // allocating very large temporary surfaces, especially since we'll
- // do full-page snapshots often (see bug 749426).
-#if !defined(MOZ_GFX_OPTIMIZE_MOBILE)
RefPtr<gfxDrawable> restrictedDrawable =
CreateSamplingRestrictedDrawable(aDrawable, aContext,
aRegion, aFormat);
@@ -682,7 +617,6 @@ gfxUtils::DrawPixelSnapped(gfxContext* aContext,
// drawn without tiling.
extendMode = ExtendMode::CLAMP;
}
-#endif
}
}