diff --git a/gfx/thebes/gfxUtils.cpp b/gfx/thebes/gfxUtils.cpp index a18908908aec..4e23d2b2ebc0 100644 --- a/gfx/thebes/gfxUtils.cpp +++ b/gfx/thebes/gfxUtils.cpp @@ -391,7 +391,7 @@ IsSafeImageTransformComponent(gfxFloat aValue) return aValue >= -32768 && aValue <= 32767; } -#ifndef MOZ_GFX_OPTIMIZE_MOBILE +#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. @@ -424,6 +424,12 @@ CreateSamplingRestrictedDrawable(gfxDrawable* aDrawable, PROFILER_LABEL("gfxUtils", "CreateSamplingRestricedDrawable", js::ProfileEntry::Category::GRAPHICS); + DrawTarget* destDrawTarget = aContext->GetDrawTarget(); + if ((destDrawTarget->GetBackendType() == BackendType::DIRECT2D1_1) || + (destDrawTarget->GetBackendType() == BackendType::DIRECT2D)) { + return nullptr; + } + gfxRect clipExtents = aContext->GetClipExtents(); // Inflate by one pixel because bilinear filtering will sample at most @@ -756,18 +762,18 @@ gfxUtils::DrawPixelSnapped(gfxContext* aContext, // 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). -#ifndef MOZ_GFX_OPTIMIZE_MOBILE +#if !defined(MOZ_GFX_OPTIMIZE_MOBILE) nsRefPtr restrictedDrawable = CreateSamplingRestrictedDrawable(aDrawable, aContext, aRegion, aFormat); if (restrictedDrawable) { - drawable.swap(restrictedDrawable); - } + drawable.swap(restrictedDrawable); - // We no longer need to tile: Either we never needed to, or we already - // filled a surface with the tiled pattern; this surface can now be - // drawn without tiling. - doTile = false; + // We no longer need to tile: Either we never needed to, or we already + // filled a surface with the tiled pattern; this surface can now be + // drawn without tiling. + doTile = false; + } #endif } } diff --git a/layout/reftests/border-image/reftest.list b/layout/reftests/border-image/reftest.list index cb07f6dbffbd..67a3aedd4e48 100644 --- a/layout/reftests/border-image/reftest.list +++ b/layout/reftests/border-image/reftest.list @@ -17,8 +17,8 @@ fuzzy-if(winWidget,1,1) == multicolor-image-2.html multicolor-image-2-ref.html != different-h-v-2.html different-h-v-ref.html != different-h-v-1.html different-h-v-2.html == center-scaling-1.html center-scaling-1-ref.html -fails-if(Android||B2G) == center-scaling-2.html center-scaling-2-ref.html # Android/B2G: very different scaling (blurriness) on some sides -fails-if(Android||B2G) == center-scaling-3.html center-scaling-3-ref.html # Android/B2G: very different scaling (blurriness) on some sides +fails-if(Android||B2G) fails-if(usesRepeatResampling) == center-scaling-2.html center-scaling-2-ref.html # Android/B2G: very different scaling (blurriness) on some sides +fails-if(Android||B2G) fails-if(usesRepeatResampling) == center-scaling-3.html center-scaling-3-ref.html # Android/B2G: very different scaling (blurriness) on some sides == center-scaling-4t.html center-scaling-4t-ref.html == center-scaling-4r.html center-scaling-4r-ref.html == center-scaling-4b.html center-scaling-4b-ref.html diff --git a/layout/reftests/bugs/reftest.list b/layout/reftests/bugs/reftest.list index 939dd3949217..9cb775eac4f4 100644 --- a/layout/reftests/bugs/reftest.list +++ b/layout/reftests/bugs/reftest.list @@ -1015,7 +1015,7 @@ skip-if(B2G||Mulet) == 421234-1.html 421234-1-ref.html # Initial mulet triage: p == 421436-1b.html 421436-1-ref.html == 421632-1.html 421632-1-ref.html != 421710-1.html about:blank -skip-if(B2G||Mulet) fails-if(Android) == 421885-1.xml 421885-1-ref.xml # Initial mulet triage: parity with B2G/B2G Desktop +skip-if(B2G||Mulet) fails-if(Android) fails-if(usesRepeatResampling) == 421885-1.xml 421885-1-ref.xml # Initial mulet triage: parity with B2G/B2G Desktop == 421955-1.html 421955-1-ref.html skip-if(B2G||Mulet) == 422249-1.html 422249-1-ref.html # Initial mulet triage: parity with B2G/B2G Desktop == 422394-1.html 422394-1-ref.html @@ -1165,13 +1165,13 @@ random == 445004-1.html 445004-1-ref.html # bug 472268 == 445142-1c.html 445142-1-ref.html == 445142-2a.html 445142-2-ref.html == 445142-2b.html 445142-2-ref.html -== 446100-1a.html about:blank -skip-if(B2G||Mulet) fails-if(Android) == 446100-1b.html about:blank # Initial mulet triage: parity with B2G/B2G Desktop -skip-if(B2G||Mulet) fails-if(Android) == 446100-1c.html about:blank # Initial mulet triage: parity with B2G/B2G Desktop -== 446100-1d.html about:blank -== 446100-1e.html about:blank +fails-if(usesRepeatResampling) == 446100-1a.html about:blank +skip-if(B2G||Mulet) fails-if(Android) fails-if(usesRepeatResampling) == 446100-1b.html about:blank # Initial mulet triage: parity with B2G/B2G Desktop +skip-if(B2G||Mulet) fails-if(Android) fails-if(usesRepeatResampling) == 446100-1c.html about:blank # Initial mulet triage: parity with B2G/B2G Desktop +fails-if(usesRepeatResampling) == 446100-1d.html about:blank +fails-if(usesRepeatResampling) == 446100-1e.html about:blank == 446100-1f.html about:blank -skip-if(B2G||Mulet) fails-if(Android) == 446100-1g.html about:blank # Initial mulet triage: parity with B2G/B2G Desktop +fails-if(usesRepeatResampling) skip-if(B2G||Mulet) fails-if(Android) == 446100-1g.html about:blank # Initial mulet triage: parity with B2G/B2G Desktop == 446100-1h.html about:blank skip-if(B2G||Mulet) == 447749-1.html 447749-1-ref.html # Initial mulet triage: parity with B2G/B2G Desktop fuzzy(127,2) == 448193.html 448193-ref.html diff --git a/layout/reftests/image-element/reftest.list b/layout/reftests/image-element/reftest.list index b23664306f71..e2a72aafd1cc 100644 --- a/layout/reftests/image-element/reftest.list +++ b/layout/reftests/image-element/reftest.list @@ -18,7 +18,7 @@ fuzzy-if(d2d&&/^Windows\x20NT\x206\.1/.test(http.oscpu),16,90) == element-paint- == element-paint-transform-repeated.html element-paint-transform-repeated-ref.html fuzzy-if(d2d,255,24) == element-paint-transform-03.html element-paint-transform-03-ref.html == element-paint-native-widget.html element-paint-native-widget-ref.html -== element-paint-subimage-sampling-restriction.html about:blank +fails-if(usesRepeatResampling) == element-paint-subimage-sampling-restriction.html about:blank == element-paint-clippath.html element-paint-clippath-ref.html == element-paint-sharpness-01a.html element-paint-sharpness-01b.html == element-paint-sharpness-01b.html element-paint-sharpness-01c.html diff --git a/layout/reftests/image/reftest.list b/layout/reftests/image/reftest.list index 25bc3161fcdf..c2a230199338 100644 --- a/layout/reftests/image/reftest.list +++ b/layout/reftests/image/reftest.list @@ -1,5 +1,5 @@ fuzzy-if(Android,8,30) == background-image-zoom-1.html background-image-zoom-1-ref.html -== background-image-zoom-2.html about:blank +fails-if(usesRepeatResampling) == background-image-zoom-2.html about:blank == image-seam-1a.html image-seam-1-ref.html == image-seam-1b.html image-seam-1-ref.html fuzzy-if(Android,255,154) == image-seam-2.html image-seam-2-ref.html # Bug 1128229 diff --git a/layout/tools/reftest/reftest.js b/layout/tools/reftest/reftest.js index 827fdae7b4aa..8ab52dc4398b 100644 --- a/layout/tools/reftest/reftest.js +++ b/layout/tools/reftest/reftest.js @@ -763,6 +763,9 @@ function BuildConditionSandbox(aURL) { dump("REFTEST INFO | " + JSON.stringify(CU.waiveXrays(sandbox)) + " \n"); gDumpedConditionSandbox = true; } + + // Graphics features + sandbox.usesRepeatResampling = sandbox.d2d; return sandbox; }