Bug 1378130 - backport of fix for bounds violation in Skia's AAA path rendering. r=jrmuizel
☠☠ backed out by 8062a6549a1d ☠ ☠
authorLee Salzman <lsalzman@mozilla.com>
Mon, 14 Aug 2017 12:21:47 -0400
changeset 374557 a0249586bdc192829723a4049ce18ca51cef69d1
parent 374556 22e03ad3b3713355a236d46f46b4a7dfc0656980
child 374558 ddc59dc7b92d474397727426cb003ce7b17425cb
push id93707
push userlsalzman@mozilla.com
push dateMon, 14 Aug 2017 16:22:01 +0000
treeherdermozilla-inbound@a0249586bdc1 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersjrmuizel
bugs1378130
milestone57.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1378130 - backport of fix for bounds violation in Skia's AAA path rendering. r=jrmuizel MozReview-Commit-ID: 5NeeQpGYsoZ
gfx/skia/skia/src/core/SkScan_AAAPath.cpp
layout/reftests/bugs/reftest.list
--- a/gfx/skia/skia/src/core/SkScan_AAAPath.cpp
+++ b/gfx/skia/skia/src/core/SkScan_AAAPath.cpp
@@ -1491,20 +1491,20 @@ static void aaa_walk_edges(SkAnalyticEdg
             if (isRite) {
                 if (useDeferred) {
                     deferred_blit(leftE, currE, left, leftDY, y, nextY, isIntegralNextY,
                             leftEnds, currEnds, blitter, maskRow, isUsingMask, noRealBlitter,
                             leftClip, rightClip, yShift);
                 } else {
                     SkFixed rite = currE->fX;
                     currE->goY(nextY, yShift);
-                    leftE->fX = SkTMax(leftClip, leftE->fX);
+                    SkFixed nextLeft = SkTMax(leftClip, leftE->fX);
                     rite = SkTMin(rightClip, rite);
-                    currE->fX = SkTMin(rightClip, currE->fX);
-                    blit_trapezoid_row(blitter, y >> 16, left, rite, leftE->fX, currE->fX,
+                    SkFixed nextRite = SkTMin(rightClip, currE->fX);
+                    blit_trapezoid_row(blitter, y >> 16, left, rite, nextLeft, nextRite,
                             leftDY, currE->fDY, fullAlpha, maskRow, isUsingMask,
                             noRealBlitter || (fullAlpha == 0xFF && (
                                     edges_too_close(prevRite, left, leftE->fX) ||
                                     edges_too_close(currE, currE->fNext, nextY)
                             )),
                             true);
                     prevRite = SkFixedCeilToInt(SkTMax(rite, currE->fX));
                 }
--- a/layout/reftests/bugs/reftest.list
+++ b/layout/reftests/bugs/reftest.list
@@ -1133,17 +1133,17 @@ fails-if(!styloVsGecko) == 428810-3e-rtl
 == 431341-1.html 431341-1-ref.html
 == 431341-2.html 431341-2-ref.html
 == 431520-1.html 431520-1-ref.html
 == 431948-1.html 431948-1-ref.html
 == 433640-1.html 433640-1-ref.html
 == 433700.html 433700-ref.html
 == 436356-1.html 436356-1-ref.html
 == 436356-2.html 436356-2-ref.html
-fuzzy-if(skiaContent,3,1) == 438537-1.html 438537-1-ref.html
+fuzzy-if(skiaContent,4,2) == 438537-1.html 438537-1-ref.html
 == 438981-1.xhtml about:blank
 == 438987-1.html 438987-1-ref.html
 fuzzy-if(skiaContent,1,3280) == 438987-2a.html 438987-2-ref.html
 fuzzy-if(skiaContent,1,3280) == 438987-2b.html 438987-2-ref.html
 fuzzy-if(skiaContent,1,3280) == 438987-2c.html 438987-2-ref.html
 != about:blank 438987-2-ref.html # check that backgrounds work at all
 == 439004-1.html 439004-1-ref.html
 == 439639-1.html 439639-1-ref.html
@@ -1658,17 +1658,17 @@ fuzzy-if(skiaContent,1,500) == 634232-1.
 fuzzy-if(skiaContent,3,120000) == 635302-1.html 635302-1-ref.html
 fuzzy(1,68) fuzzy-if(gtkWidget,1,70) fails-if(Android) fuzzy-if(skiaContent&&!Android,1,300) == 635373-1.html 635373-1-ref.html
 random-if(d2d) fails-if(Android) fuzzy-if(winWidget&&!d2d,20,118) fuzzy-if(skiaContent&&!Android,2,550) == 635373-2.html 635373-2-ref.html
 random-if(d2d) fails-if(Android) fuzzy-if(winWidget&&!d2d,20,116) fuzzy-if(skiaContent&&!Android,2,650) == 635373-3.html 635373-3-ref.html
 HTTP(..) == 635639-1.html 635639-1-ref.html
 HTTP(..) == 635639-2.html 635639-2-ref.html
 random == 637597-1.html 637597-1-ref.html # bug 637597 was never really fixed!
 fuzzy-if(Android,8,500) == 637852-1.html 637852-1-ref.html
-fuzzy-if(Android,8,500) fuzzy-if(skiaContent,2,1) fuzzy-if(webrender,3,19) == 637852-2.html 637852-2-ref.html
+fuzzy-if(Android,8,500) fuzzy-if(skiaContent,3,1) fuzzy-if(webrender,3,19) == 637852-2.html 637852-2-ref.html
 fuzzy-if(Android,8,500) == 637852-3.html 637852-3-ref.html
 fails-if(webrender&&asyncPan) == 641770-1.html 641770-1-ref.html # bug 1374326 for webrender+APZ
 == 641856-1.html 641856-1-ref.html
 == 645491-1.html 645491-1-ref.html
 == 645647-1.html 645647-1-ref.html
 == 645647-2.html 645647-2-ref.html
 == 645768-1.html 645768-1-ref.html
 fails-if(layersGPUAccelerated&&cocoaWidget) fuzzy-if(!layersGPUAccelerated,41,260) fuzzy-if(skiaContent,57,11000) == 650228-1.html 650228-1-ref.html # Quartz alpha blending doesn't match GL alpha blending