diff options
author | Moonchild <moonchild@palemoon.org> | 2021-03-10 18:58:26 +0000 |
---|---|---|
committer | Moonchild <moonchild@palemoon.org> | 2021-03-10 18:58:26 +0000 |
commit | 515c1193c5663e46a313acb7a39ed2f3d209f69e (patch) | |
tree | c291e0ee9c44ec2c1fa2b1a56782cd630c571469 /gfx | |
parent | 108ec40998d1b571f073d1e57de5fbf368bfe17c (diff) | |
download | uxp-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.c | 10 | ||||
-rw-r--r-- | gfx/cairo/cairo/src/cairoint.h | 6 | ||||
-rw-r--r-- | gfx/cairo/libpixman/src/pixman-private.h | 6 | ||||
-rw-r--r-- | gfx/layers/Layers.cpp | 4 | ||||
-rw-r--r-- | gfx/layers/RotatedBuffer.cpp | 12 | ||||
-rw-r--r-- | gfx/layers/client/ClientPaintedLayer.cpp | 2 | ||||
-rw-r--r-- | gfx/layers/client/ClientTiledPaintedLayer.cpp | 2 | ||||
-rw-r--r-- | gfx/layers/client/TiledContentClient.cpp | 13 | ||||
-rw-r--r-- | gfx/layers/composite/ContentHost.cpp | 4 | ||||
-rw-r--r-- | gfx/layers/composite/TiledContentHost.cpp | 2 | ||||
-rw-r--r-- | gfx/thebes/gfxFontMissingGlyphs.cpp | 8 | ||||
-rw-r--r-- | gfx/thebes/gfxPrefs.h | 8 | ||||
-rw-r--r-- | gfx/thebes/gfxUtils.cpp | 66 |
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 } } |