From 2c07b2dc0ea28193c92e305f447a53629fed0aad Mon Sep 17 00:00:00 2001 From: Elias Naur Date: Mon, 3 May 2021 10:15:19 +0200 Subject: [PATCH] headless: clear background to transparent, not white The clear background is the most useful, and the old behaviour can be achieved by filling the entire viewport with a white paint.ColorOp. Signed-off-by: Elias Naur --- gpu/headless/headless.go | 2 +- gpu/headless/headless_test.go | 2 +- gpu/internal/rendertest/clip_test.go | 62 +++++++++--------- .../rendertest/refs/TestBuildOffscreen.png | Bin 364 -> 112 bytes .../rendertest/refs/TestBuildOffscreen_1.png | Bin 929 -> 413 bytes .../rendertest/refs/TestClipOffset.png | Bin 383 -> 183 bytes .../rendertest/refs/TestClipPaintOffset.png | Bin 383 -> 173 bytes .../rendertest/refs/TestClipRotate.png | Bin 546 -> 232 bytes .../rendertest/refs/TestClipScale.png | Bin 383 -> 183 bytes .../refs/TestComplicatedTransform.png | Bin 1081 -> 491 bytes .../refs/TestDashedPathFlatCapEllipse.png | Bin 6107 -> 5159 bytes .../refs/TestDashedPathFlatCapZ.png | Bin 3681 -> 2891 bytes .../refs/TestDashedPathFlatCapZNoDash.png | Bin 2262 -> 1573 bytes .../refs/TestDashedPathFlatCapZNoPath.png | Bin 1553 -> 765 bytes .../rendertest/refs/TestDeferredPaint.png | Bin 420 -> 318 bytes .../rendertest/refs/TestDepthOverlap.png | Bin 375 -> 303 bytes .../rendertest/refs/TestLinearGradient.png | Bin 716 -> 0 bytes .../refs/TestLinearGradientAngled.png | Bin 1329 -> 1646 bytes .../rendertest/refs/TestNegativeOverlaps.png | Bin 364 -> 112 bytes .../rendertest/refs/TestNoClipFromPaint.png | Bin 374 -> 163 bytes .../refs/TestOffsetScaleTexture.png | Bin 458 -> 273 bytes .../rendertest/refs/TestOffsetTexture.png | Bin 463 -> 283 bytes .../rendertest/refs/TestPaintAbsolute.png | Bin 920 -> 651 bytes gpu/internal/rendertest/refs/TestPaintArc.png | Bin 2221 -> 1390 bytes .../refs/TestPaintClippedBorder.png | Bin 582 -> 0 bytes .../refs/TestPaintClippedCircle.png | Bin 571 -> 276 bytes .../rendertest/refs/TestPaintClippedCirle.png | Bin 571 -> 0 bytes .../rendertest/refs/TestPaintClippedRect.png | Bin 382 -> 189 bytes .../refs/TestPaintClippedTexture.png | Bin 392 -> 219 bytes .../rendertest/refs/TestPaintOffset.png | Bin 387 -> 216 bytes .../rendertest/refs/TestPaintRect.png | Bin 374 -> 211 bytes .../rendertest/refs/TestPaintRotate.png | Bin 1436 -> 871 bytes .../rendertest/refs/TestPaintShear.png | Bin 511 -> 256 bytes .../rendertest/refs/TestPaintTexture.png | Bin 408 -> 280 bytes .../rendertest/refs/TestRepeatedPaintsZ.png | Bin 376 -> 216 bytes .../rendertest/refs/TestReuseStencil.png | Bin 383 -> 141 bytes .../rendertest/refs/TestRotateClipTexture.png | Bin 1122 -> 597 bytes .../rendertest/refs/TestRotateTexture.png | Bin 864 -> 374 bytes .../refs/TestStrokedPathBevelFlat.png | Bin 3398 -> 2758 bytes .../refs/TestStrokedPathBevelRound.png | Bin 3407 -> 2769 bytes .../refs/TestStrokedPathBevelSquare.png | Bin 3415 -> 2756 bytes .../refs/TestStrokedPathFlatMiter.png | Bin 2258 -> 1585 bytes .../refs/TestStrokedPathFlatMiterInf.png | Bin 2262 -> 1573 bytes .../refs/TestStrokedPathRoundRound.png | Bin 3409 -> 2782 bytes .../refs/TestStrokedPathZeroWidth.png | Bin 390 -> 119 bytes .../rendertest/refs/TestTexturedStroke.png | Bin 732 -> 390 bytes .../refs/TestTexturedStrokeClipped.png | Bin 732 -> 390 bytes .../rendertest/refs/TestTransformMacro.png | Bin 375 -> 219 bytes .../rendertest/refs/TestTransformOrder.png | Bin 384 -> 252 bytes gpu/internal/rendertest/render_test.go | 22 +++---- gpu/internal/rendertest/transform_test.go | 46 ++++++------- gpu/internal/rendertest/util_test.go | 57 +++++++++++----- 52 files changed, 106 insertions(+), 85 deletions(-) delete mode 100644 gpu/internal/rendertest/refs/TestLinearGradient.png delete mode 100644 gpu/internal/rendertest/refs/TestPaintClippedBorder.png delete mode 100644 gpu/internal/rendertest/refs/TestPaintClippedCirle.png diff --git a/gpu/headless/headless.go b/gpu/headless/headless.go index a9b9e344..859fdef3 100644 --- a/gpu/headless/headless.go +++ b/gpu/headless/headless.go @@ -110,7 +110,7 @@ func (w *Window) Release() { func (w *Window) Frame(frame *op.Ops) error { return contextDo(w.ctx, func() error { w.dev.BindFramebuffer(w.fbo) - w.gpu.Clear(color.NRGBA{A: 0xff, R: 0xff, G: 0xff, B: 0xff}) + w.gpu.Clear(color.NRGBA{}) w.gpu.Collect(w.size, frame) return w.gpu.Frame() }) diff --git a/gpu/headless/headless_test.go b/gpu/headless/headless_test.go index 516ea0b9..eee55232 100644 --- a/gpu/headless/headless_test.go +++ b/gpu/headless/headless_test.go @@ -78,7 +78,7 @@ func TestClipping(t *testing.T) { t.Fatal(err) } } - bg := color.NRGBA{A: 0xff, R: 0xff, G: 0xff, B: 0xff} + var bg color.NRGBA tests := []struct { x, y int color color.NRGBA diff --git a/gpu/internal/rendertest/clip_test.go b/gpu/internal/rendertest/clip_test.go index c8d73508..c98839d4 100644 --- a/gpu/internal/rendertest/clip_test.go +++ b/gpu/internal/rendertest/clip_test.go @@ -19,8 +19,8 @@ func TestPaintRect(t *testing.T) { }, func(r result) { r.expect(0, 0, colornames.Red) r.expect(49, 0, colornames.Red) - r.expect(50, 0, colornames.White) - r.expect(10, 50, colornames.White) + r.expect(50, 0, transparent) + r.expect(10, 50, transparent) }) } @@ -29,11 +29,11 @@ func TestPaintClippedRect(t *testing.T) { clip.RRect{Rect: f32.Rect(25, 25, 60, 60)}.Add(o) paint.FillShape(o, red, clip.Rect(image.Rect(0, 0, 50, 50)).Op()) }, func(r result) { - r.expect(0, 0, colornames.White) - r.expect(24, 35, colornames.White) + r.expect(0, 0, transparent) + r.expect(24, 35, transparent) r.expect(25, 35, colornames.Red) - r.expect(50, 0, colornames.White) - r.expect(10, 50, colornames.White) + r.expect(50, 0, transparent) + r.expect(10, 50, transparent) }) } @@ -44,9 +44,9 @@ func TestPaintClippedCircle(t *testing.T) { clip.Rect(image.Rect(0, 0, 30, 50)).Add(o) paint.Fill(o, red) }, func(r result) { - r.expect(21, 21, colornames.White) + r.expect(21, 21, transparent) r.expect(25, 30, colornames.Red) - r.expect(31, 30, colornames.White) + r.expect(31, 30, transparent) }) } @@ -76,9 +76,9 @@ func TestPaintArc(t *testing.T) { paint.FillShape(o, red, clip.Rect(image.Rect(0, 0, 128, 128)).Op()) }, func(r result) { - r.expect(0, 0, colornames.White) + r.expect(0, 0, transparent) r.expect(0, 25, colornames.Red) - r.expect(0, 15, colornames.White) + r.expect(0, 15, transparent) }) } @@ -98,10 +98,10 @@ func TestPaintAbsolute(t *testing.T) { paint.FillShape(o, red, clip.Rect(image.Rect(0, 0, 128, 128)).Op()) }, func(r result) { - r.expect(0, 0, colornames.White) + r.expect(0, 0, transparent) r.expect(30, 30, colornames.Red) - r.expect(79, 79, colornames.White) - r.expect(90, 90, colornames.White) + r.expect(79, 79, transparent) + r.expect(90, 90, transparent) }) } @@ -113,8 +113,8 @@ func TestPaintTexture(t *testing.T) { }, func(r result) { r.expect(0, 0, colornames.Blue) r.expect(79, 10, colornames.Green) - r.expect(80, 0, colornames.White) - r.expect(10, 80, colornames.White) + r.expect(80, 0, transparent) + r.expect(10, 80, transparent) }) } @@ -158,7 +158,7 @@ func TestPaintClippedTexture(t *testing.T) { scale(80.0/512, 80.0/512).Add(o) paint.PaintOp{}.Add(o) }, func(r result) { - r.expect(40, 40, colornames.White) + r.expect(40, 40, transparent) r.expect(25, 35, colornames.Blue) }) } @@ -177,7 +177,7 @@ func TestStrokedPathBevelFlat(t *testing.T) { paint.Fill(o, red) }, func(r result) { - r.expect(0, 0, colornames.White) + r.expect(0, 0, transparent) r.expect(10, 50, colornames.Red) }) } @@ -196,7 +196,7 @@ func TestStrokedPathBevelRound(t *testing.T) { paint.Fill(o, red) }, func(r result) { - r.expect(0, 0, colornames.White) + r.expect(0, 0, transparent) r.expect(10, 50, colornames.Red) }) } @@ -215,7 +215,7 @@ func TestStrokedPathBevelSquare(t *testing.T) { paint.Fill(o, red) }, func(r result) { - r.expect(0, 0, colornames.White) + r.expect(0, 0, transparent) r.expect(10, 50, colornames.Red) }) } @@ -234,7 +234,7 @@ func TestStrokedPathRoundRound(t *testing.T) { paint.Fill(o, red) }, func(r result) { - r.expect(0, 0, colornames.White) + r.expect(0, 0, transparent) r.expect(10, 50, colornames.Red) }) } @@ -272,7 +272,7 @@ func TestStrokedPathFlatMiter(t *testing.T) { } }, func(r result) { - r.expect(0, 0, colornames.White) + r.expect(0, 0, transparent) r.expect(40, 10, colornames.Black) r.expect(40, 12, colornames.Red) }) @@ -311,7 +311,7 @@ func TestStrokedPathFlatMiterInf(t *testing.T) { } }, func(r result) { - r.expect(0, 0, colornames.White) + r.expect(0, 0, transparent) r.expect(40, 10, colornames.Black) r.expect(40, 12, colornames.Red) }) @@ -353,10 +353,10 @@ func TestStrokedPathZeroWidth(t *testing.T) { } }, func(r result) { - r.expect(0, 0, colornames.White) + r.expect(0, 0, transparent) r.expect(10, 50, colornames.Black) r.expect(30, 50, colornames.Black) - r.expect(65, 50, colornames.White) + r.expect(65, 50, transparent) }) } @@ -406,7 +406,7 @@ func TestDashedPathFlatCapEllipse(t *testing.T) { } }, func(r result) { - r.expect(0, 0, colornames.White) + r.expect(0, 0, transparent) r.expect(0, 62, colornames.Red) r.expect(0, 65, colornames.Black) }) @@ -451,10 +451,10 @@ func TestDashedPathFlatCapZ(t *testing.T) { stk.Load() } }, func(r result) { - r.expect(0, 0, colornames.White) + r.expect(0, 0, transparent) r.expect(40, 10, colornames.Black) r.expect(40, 12, colornames.Red) - r.expect(46, 12, colornames.White) + r.expect(46, 12, transparent) }) } @@ -494,7 +494,7 @@ func TestDashedPathFlatCapZNoDash(t *testing.T) { stk.Load() } }, func(r result) { - r.expect(0, 0, colornames.White) + r.expect(0, 0, transparent) r.expect(40, 10, colornames.Black) r.expect(40, 12, colornames.Red) r.expect(46, 12, colornames.Red) @@ -536,10 +536,10 @@ func TestDashedPathFlatCapZNoPath(t *testing.T) { stk.Load() } }, func(r result) { - r.expect(0, 0, colornames.White) + r.expect(0, 0, transparent) r.expect(40, 10, colornames.Black) - r.expect(40, 12, colornames.White) - r.expect(46, 12, colornames.White) + r.expect(40, 12, transparent) + r.expect(46, 12, transparent) }) } diff --git a/gpu/internal/rendertest/refs/TestBuildOffscreen.png b/gpu/internal/rendertest/refs/TestBuildOffscreen.png index 9ed91358c5102f5423f4aee5bc3e241445ea011c..fb50427e4abfbeab0128c74e31584ab47426ed58 100644 GIT binary patch literal 112 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H0wgodS2_SGb59q?kczms2Mrm4yh97V`seb< fF90&}frjmj4Gj#8E6=|Z1u64%^>bP0l+XkKZXy*1 literal 364 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1SEZ8zRh7^U^Mo0aSW-L^X6h8=K%wTqX!IM z-T$<@=XZvmqeA*^@#ohW*Jm?aV_3r&!MuSjf%kw^gDJxZ7RUnz-2eZJSXdY~s>`MV OISihzelF{r5}E+9Ep1l- diff --git a/gpu/internal/rendertest/refs/TestBuildOffscreen_1.png b/gpu/internal/rendertest/refs/TestBuildOffscreen_1.png index 881341152ee24a98dacf18b20250b4c27284210e..8ff717bad956c1fcd6e2a9e6faa830e9f0d355b0 100644 GIT binary patch delta 398 zcmZ3;K9_ldWIYQ514E|yN(Tl8#uQH%$B>F!Z*T4HJ>($L`cPT1af`>2wjQ?=8O&aV z%oiA@#j*%a(rgh^IC#XSgmZ#(cWiaj-pBuUi_Q`5Ic}_MDxI+~q zib-iy73Y>rGd&Y2efBZ$e2vSC4Qp)qQ@xUU_Fwv%{iAAK)X{p;x)qPEKYXoe(xdt> z;<){B^O=28#|7$_YznQJyztfc literal 929 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1SEZ8zRh7^V9xM#aSW-L^X9gF-lHfP_rk~D zT~0H3bSb#{cd_U&2P*FpS<@8SaNQw&_AJ>Aj6RDz`~y84#T-=bNO;Ssy8JYs*`oMk z-s_p~m(T3GA2Z)js%HKFvzyM`bexu2US59v`t|?zyLRoGb^dwZV-u;~&6_v>mzz6p zo}8@gRIjD6b^-HJ;v?6FO+LBg_S<)#GVkV<8_ir3wp!mlY?~do!0|$fwyjZb%NJkE z+G@b_*urebghjtn8#KCZz5Nzvesyx$ZduofH=l}}XJ@=*^0oHA_4I$H_rG5@QJogX z^PXA7(@2Jozx3<&w!?{&R4y>(ephptwQSyV*>A7%E9Wi${lGb&iN$fk@vHZ_ni`^) z?e#jppZVG6%FQ>==r=sJ2oy1u>Wy(1>D&ERx$kk^{`ucG)a{o)UU)B#dh1K7DUWtgdEVed02E=hLE{*I&<+ zx%v9*si&JxcA8yo<9YM2++k^uBoABKGhR04*uUo6tS7(zdh5Xdv(am>Rqb6?p7{1t zkzR(`?5DB`X0sP|Z@qYWaYx$b$^*&^?LXJrzb|%g{j#gAPi@xse+BQ-Hd|IOpZ{z& zn|F)D?b;ffzYXm!%?cOx|Mh>t%6mh6y+-fx$A9AjrTULoxn_!2dGd!{%3if5mf6E^ zi#ks*!wjYaA`HtI3|Jd98GJx~9I`@h+=036|Nnh^Zb$#U`7#5@VeoYIb6Mw<&;$Tx Cj*xEv diff --git a/gpu/internal/rendertest/refs/TestClipOffset.png b/gpu/internal/rendertest/refs/TestClipOffset.png index 59371e421b591a7e1a4519e0c54c2f0bfe826af4..6396fb4f2ca971e734f2f4bc6328cc622669d8d1 100644 GIT binary patch literal 183 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSb)GJcAr-gYUTWlIP~dPqnE(5I zjxkH4NI7@MFCm~j5_rICYPw_czC9k5&v!m$VRB&LU|>{WU}<0wU|>SyFc1g!-@b95 UNuzF-&L@z1Pgg&ebxsLQ03$ghasU7T literal 383 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1SEZ8zRh7^V080zaSW-L^XAq;P8LN0hJ&9C z{!h6pQ#P^6=X$*0tjgZsb3S)}zRo{m9YX};2Brko16&QF4B8A~3~PuN_;z&n^{V=^ zGxOi75vldfGrx*6ao@X%RZoIr$Z$V?E$R#m|NqDR;9xq-9nl61SO!m5KbLh*2~7Zf C$ZR|S diff --git a/gpu/internal/rendertest/refs/TestClipPaintOffset.png b/gpu/internal/rendertest/refs/TestClipPaintOffset.png index f9988440947dd18557f702afc1bf83e36afe2b56..0fe37e6fa6f11d23f7c2d9e553a7f2b47cf25fbe 100644 GIT binary patch literal 173 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSC7v#hAr-gYUUKAOP~c#2eEYxN z?*prBi$>aqH44&t%8b#Q$!Jxt)7?%J47rx|RT2rfP0pu`vy85}Sb4q9e0EJU& ASO5S3 diff --git a/gpu/internal/rendertest/refs/TestClipRotate.png b/gpu/internal/rendertest/refs/TestClipRotate.png index e6c0e4e5791c995de879fb8be7e990f3e6641bc7..e6c15e3305b386a277aae8260e3ccfc62ff7524c 100644 GIT binary patch literal 232 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRS>pfi@Ln>~)y}psR!9jr8k-7IW z*V{lAcPC~R507~h_ccbV&j%_)0W}$uj*5E4p0qnzs5U#h~#P!8IFj@*NBVAe-xDe_;aV{G*7;d-E&WVD`I&h-tX||kzhx>4b#VNcZIr-97pv3 jDXn|NjA8|L&IfMuWi$3L%b3i41XAGX>gTe~DWM4fue3uF literal 546 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1SEZ8zRh7^V0`K6;uumf=gpl!ug3ulZVyWe zGT%AH#Fj|L_U|@uR#&!ItXaD&{^LA;`5F$1f0GkbZnWp#o@TNC3+I`23=xbQm=ahI za5acBXfuQ{tRYpP%%Abx^QTW!XTFhlll#J1V=;gF@#FjN+uQ0c7q*)p`0g>^k3IiB zfBy8#>U?bhJEPtD{j*m#@_i`%d)I_Fqhaya@?w($#&tl^1&mw;r+*a-Fy_VA$JYN* ze))l6?f>-~8KeGpHv$Rk#Y|iNH7WvGHzqLT=bOu#-Tx(io8kTY+q?2k7ro7n)o(wW zenPguDpv1psjW@Ix$OV_f%{w5o6M;AyRm=aeX|+We;?L&{Joy=>+4bNlY0;5{rak3 zJ;UGkPW_87uXj)X{WU}<0wU|>SyFc1g!-@b95 UNuzF-&L@z1Pgg&ebxsLQ03$ghasU7T literal 383 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1SEZ8zRh7^V080zaSW-L^XAq;P8LN0hJ&9C z{!h6pQ#P^6=X$*0tjgZsb3S)}zRo{m9YX};2Brko16&QF4B8A~3~PuN_;z&n^{V=^ zGxOi75vldfGrx*6ao@X%RZoIr$Z$V?E$R#m|NqDR;9xq-9nl61SO!m5KbLh*2~7Zf C$ZR|S diff --git a/gpu/internal/rendertest/refs/TestComplicatedTransform.png b/gpu/internal/rendertest/refs/TestComplicatedTransform.png index c1f3aeb95fa8df4fcf611dc251f58905004d1158..4a92e3c78f7091b335854170793757da373c2df7 100644 GIT binary patch literal 491 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7xzrVBF;C;uunK>+NmDZjnTp;~(dn z&3@V>!Q1t4lVic;^+{qm+cw{NXTRRTUbCRjYWi>9|32`BZ*ol8ROyvAXAFn>U+$F!+XQd*>hx6 z-ui0Y56U!NH}(B`Yx(smZ{se_Q+?}w=~n#pJq#`v`nOG=W8-^kx$)xegoDTKoUE#v zx#jVHKK&-vm3RD}mTJuoiE3MUmdkyy4^tp>8*{xF~X?V%H!kYjq=;=erZ@y0%D zS7+OHCS3-v5j9w|;JPQD746 za9~jqXyia+mMmUd_OIo9unP`(sIFfd=Y`$foAK!BWbS90N=m@kAR3gt6gm9#kI&Bt Q%{-7EPgg&ebxsLQ04>KKwsghds;?mdu^!Tk8r+%K|R^~Na zGv%uk&msm5ktYuvu3b+p-1zkBO~$9vZ>QY-&Zfw;W8Itgr(dno(b*#D*gS#Z)YYQ2 z=YM9u{JtsjYQR*-`}4bb_R5E^n>O9Z`|#((^X2ya|IB{-mH8R1AGRNbUbX}mZK>@v z^uEngkp1r1y<<=OC-1C!_fOQB=lvJ<$bS)k)2`Y`OgR{%b$$A02WE%G7cKsLEqJzj z=Gj+iuV4Eze0);k-R-!4UiU866)~Zg?k`_nH?!)O`+ug67e+5mXBUMtxVsw}Dq73i z)<5{iyuk6d70ZsjQ@5H*%GUn)Tg?8hp5YhIuQyc}PHMe)<@M}YRNub-qduFymz1#nOIe(tJ-T4o2LjGVnFE5nMvq0&FgQm)?(?WwjX$YuN@DbW@Y zmM_gRo6+y2=Mv#ph2`w;R2j}Sw>QPMoK?K+ck@-DUD)Kaq8DFIo7V58a^&Sr@1h5x z0=!?Yoiw_#{@|AdRcBV4zbG)D^4TGLZod2R%L+5!7&fna$9`eK?_GNpg`Jttzg}8A zvCTTk(B#F!*NyX{Cz-skm}~x2cKOfzx;1ah57kLn-Q8VR%y0AUJAcW&DdxT#YkitE zzOS48S>ayw^;z?~7C2roVZNY{@ryA-U_}7KJ6@gB$9IJ13y3j1Z#?hBazLUcGMuk- zs^boZIqavL*gMub8qMu#b`)XwXwq@A__`qDk;@8vpA|067ZetJzCG(v_udb7_Af3c z9J`w~>8t1)$@ME3o9u2cdU0~IuD|)?xPL2-%Q|1#tb1{8licHbrP&RV2cnqIFkF*j nJRry*Gwg^v_KXY+|Nq}L_$6gg%k>agBrtfo`njxgN@xNA0u$0u diff --git a/gpu/internal/rendertest/refs/TestDashedPathFlatCapEllipse.png b/gpu/internal/rendertest/refs/TestDashedPathFlatCapEllipse.png index 03843489480091ad0ef5e3bc219b5c666ac22324..79bae3842d74b1eac858919856ac82870bab4aae 100644 GIT binary patch literal 5159 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 NR8Cd4>YZ8W{{ZkuvV{Nu diff --git a/gpu/internal/rendertest/refs/TestDashedPathFlatCapZ.png b/gpu/internal/rendertest/refs/TestDashedPathFlatCapZ.png index 10695941055117b058a526352e31bc4ca1b90ce6..12212e99858cefa8421f1f67e9d98b1b83cee7d1 100644 GIT binary patch literal 2891 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 literal 3681 zcmV-n4xaIeP)5ZNFPUh0NY)e^6JKxN9pG?Ti zJKxNHywA-0zTf+P^VLBJK^XL4r`>_xjxYg~5hj2#!URwTJpybtVPhC!8#PLmj~pqV zve{HQA*#@3Lrjd?J|;%KiF8VdDPm)FmvEf!KGG!&Bg+9i^%NWq-6icehJnx5y=tKS z2JpPF8GjS$66va%nqaTmxf8Qy-G2W%18oARBR?PSzKdXDaj&=AwGY72?RT^o=FAcP zO-;Q;v!2nuV2NoB#B4SjmEY|g)xePU(jL=(*aQWlu)U}!wNH}(qTL>OgeZ9Ep$_Cc zuWKJ2t+tPj)}7*cSw3>4PVV=2a38y!`2B2sy*n-rfE$Pl=w%OUzt_J3Jm1*VPz*ycDt;7fK5y!*RRVBIF1w*8QG)W zK|oQFpjipEwQNFys(tB&Sh!H-z*zJG0=!-!+S$BW;(%pYcT$p0`w9n*jmGyb)CtJX zm%~kfY~CzHoNnRicPAyW2?;tUVW8dDBBTlM`P6t{vinlJ?{*7bx6L0=)PATFP+Cfc z4U-5^W1hG;w!U6&AaOuX`=L%i8wa|WN3=z%Pp+?5BUc&-MFM<2^6Rh45nEX3j)(~K zx>^pXBIF2=VxFidi31_#k-Tn11S`2>WivM3zZpV{0Iye#d7`4&{rhF@yWMPIq3jQ6 zd))wp5CJ76fiaK6p~gH~pKKcKhZX@mPqu9fjCmXmcK?30O=&6FwTosa+aV+fP{K-{ zC%L(SF;AO6Fej`}fY&R;^0l?n5!=w$)ReF?0os@cU=tGLESuZSHZ+jjT$Op#MubY%4$2_7x zFuC@vOaLL|`gMT=ZOkLS2Z}!sI4CKh+{s(Pf&?5qNN(Ja_pe`P6B7fgD;l3{epsz2 z@AYEhL~Ps$zaK!O!{O=QKTFiUI;SBo53j$Dh6dVw4Gy%QfZKsoU11o(?yq0Z*44=| zPjWJwm}rLTN*7=q0+i~CNPuAXCrwf_4U#{wn)WS4Kv5AHI#eP+9qUe-#Mafx4I~aM zrF}~gKnN)=CPRm^45Rb9>(;40nMPIp4qx@I2YNH89U(x3l~9scnjjO`GEk9_AxJTV2_@RhQ?{_=Avv$p~m) zU5SqmjClqO2qg~8M1U0Yw6Ctj$Fl+761yC)>_rEl`eo10bhNko5u;bCr?&04Q>7) zB)x6`C=qb_G#N7{a31I6$!c{);=tm0o?t-vL+!v!L%??WwA}ckkL1@y+7x+qHqp-d zuc(man>Oj%mzS&UH90^27 z!)gT7)sc1U1Z_^3K(1VoWUUnyyPVDuqPd?9{0i{fx6AG8>&f`>g6fA47hFZ#CFX&p z2sm+q%$Ol)UwWL^tRXyKQBm>o%P%uF+b|&CW^0yg(U2kPsCD;lvSkaoe3^3RZvyKO zz;PrkO*SSX0nNat>FJS?kpMhtX*Kcjy8J;_7VRDf1?vz%h+sgbOpypU1-vBYv7Z_{ zcK`nUJkOJ(M|A|e`KBelSTa2U)z#`ii4gMJZ+@3+m(6y!Xz^DASJTtw;F9O%5!SS6 zm<;#MnZD^p`=i7vd z2`DHag9gb)KRTL}m!CX&a>k4qE|=@o#~!QF=8DIUH(_`aB+N>{FTd!Rl79UR^AFMDM>`xp?%Bgj7Qd`aF7M2r zuhwlW2(uC(efgf4*aCcLvoXMApj@29sCw7DJd%?`nwlv0^Uh#00`}}7-+iYXHC0u4 z9()kMT%blVIA4A#pXRs_m^Wu80uCII^ERT2S(aV4Y+3)v$fO}du4$*gIh|@w&H6A6 z0p;an@L(lJ-;|rX?CrN1hDk|DX{e|m&pe|NuwsS!C8hOY4g&u8Lsqd!Kr7%8y>7}| zZ^@r1RaTNGpA;HoXLsY25Hr9We@n8ZMX7!Bz+c70auSgFzypze`Uuit!|>T>IC>P% zKM%XrR{822w4Z=B)YXxdD~a9yPq9~XfUA1*)}P zcm4Vh=78$!TwjkDU&Mg}(!8LW+S*rl?C28_u{kz&h<2jN;K2~*uZ1RPvad`mT)VdQ z(xpX<7P(xm{QP`!;exsV+{TSo$!m5E^awa{g1B6Yo%!P7hZ(y)H8s^Q{n^u|CSlN< zl0sTqsP)hgP>O;$4jVTrN9TZr$B&N!+ye(P&CTfB7ZDLyx)e=K5Em#5VNmh`7cZi; zRNCc%jlgx_L*Sm}%Q0^rjvt3KUon!}hcm{3+PlZH#OEWUM;{a`i;Doib{f7}m;3K_ zP!2;|uUz@RapNL^6WRjH3onr7X1X0S3^Yv8#f!@Bp<~DL4j)cUO&$5kCy0rWr7KoI z8UXhO7|r;ZGlGTjct}wZ*V?*Z!2*V1PM$nTq(3Z}lS5Xm3V|eZ@GzW!+*~E)SvGa5 zi(%Z!$+`xiJLv5Y#+o3%A6vF4M|*zw0US4X#}4G=pt4f_PR3!5{GeellI>775X?v|ASh+er86DQ*S`-R}g zW)rrmD!Ij)HL@f??(x9oQsv^CBw*DlFpRL-Y{I{1&gkx=oKo7aT&cT%b+ut?2!MeE zDF1ojtoZMLb?rX4TnDRt1D@|}VJ)hlLxA*r_BHFGHAccf0?wXQb|nHryw(*Q3>*ir ztl)t;4m>|NHumDBOAt#jjJS4*w3Ha*bUK{QmX?-2gf#LzBQ~f97`vV0d4^#ao(CbE zc!_X%pFVyAHof&Yzd%t511`slY00000NkvXXu0mjf-p>a6 diff --git a/gpu/internal/rendertest/refs/TestDashedPathFlatCapZNoDash.png b/gpu/internal/rendertest/refs/TestDashedPathFlatCapZNoDash.png index 23a13c3b1013304c74b3b15320a9995aa346b9b8..d315f0f8161e098aeb2979d663358de4bd5054ab 100644 GIT binary patch literal 1573 zcma)+|2xwO0LMSmObcnE%~UF_Z>lX+D%)@^hPIXOVVg=6-Q0Cov}r^7;!d>aiHMfNg}pmA~uZ7#=czFJ^g;q^ZxR@-+#dCGKJ)Cy9l`m003KJz}|yj zn)9z0LcZjmxHuUASgMG7eM3`w)OXmI9O4l#@XY9hsPf2LnFW+^aMZqK_6L?YI))xb z`8qg3koQvqjPVqR@6jRx^nRve=HGGgFv6|h3d-3CtHN~;ZWM-_yr&y`)8>wp)Xsi9 zHajjoJbY)u>cS7&{;00uY43?fkLmHv3s;|C;!m(JjC=#@n)Gm(SQ+$H zc0Q)vt?0)r0(mN1Y26CvqSw*_#QCh%dcXgF=(*@`a@pQ{f9!D@N8ElD@>$()Z@x!m|U&*3YLcm?MPyMdsPz`5QVCuk7%I<>xgkgB<%+t`1( z2miSkQB^5*%sGK;Dml(?ao?v~FAdMMovAF5n}0CXf**&3PJ47X54uj_+}Re)rXez< zH&P;EcsvP$y^0tjyC;%mD(w+t3U3bnY;l()X3q;oH zQy+MrTao@6zPG)V3GK5yombL{hiZe2kItOgz}0(yM7JPS>6Sa1-OSZUSC&g3ny82& zxR(@4Fk`9ayDnq?8R=0XnLH`wb}8bjfyB?I&g{%GQbaP^5zN5@Z9D^9Fy8-a_GL-< z{0DI-y>87-hMt`8>dh^y9X843c?J*VgvS#itgYU_v~B1t#J7u#PlXk6jIj$fIdrlA ze1!9IqP*?XC+%>T>CK3L`NPPkJj35mRWSJlRXMElNQy8C1{+G@1dA$?ELL4;rmJNQ zK{kOoRMQZdEbAL6#6N6Swt=Y;$^ox&T5^h4!Mt0y5H}#dx`my+34eFgjKPlF9(pS; z>Ql2zMX8z=33`hz9pA_7LhH*-rdW7!MGHX+O(f;b&FYK>==)RCcF34IpIEl%TXU!` zJ2!Arda1oOZ{7~r02;{0H{HVqa~Le-yDHUVc3QhQkmF@f-6eTT~6q3`i)r{%=s7Q1!3~s zvKFE(q8aCFO4gsU-1#fFQ%7l0{!|xchru+TcV@D%e!>Gc!Cv?ey7%vj+GxdK#Pvep z)zoL&6%q1;4Mp?7^PXqX=n&4}$qyF#R!G9jcTd+|8x4CtXzHOT5y`|paJRh<&}GAP@(PYtKN$f{U*&kM^j&bN;yc<>KSv>*S}zT)?q zP8}QB#+>P`d$7`H1L(ZH&wrTx%G$4?!E5ZuGpt(%#2@^vr(%%=;XO delta 2261 zcmV;`2rBob4Av2l8Gix*002x}_M89!2%SkpK~#90?45sz6z3VozccUN9IPCcqns@X zQOF-QBo+Eclm;aE!ygbKL8XYbrj%m9{!t`{Gzf_aO+gS%Ac1Jp8oa91RIhh|wj2~% z!{riE4ME7|;1mlou|w@yR);icjxNuzR&y4%zu|*d3Sbh_qp%qd7pXS z*=09FL`cOan>&D{D+R!;6aceQ0LH4M6PN zHwr);-8Tn7Ox-sGKz!Xd0YI$X*B(IJ-PapH0^HXaKr-Cd6+mL#*AhUI+}964!ra#k zK=Rzz2|yy<*9JgR-PZ#^g5B2uK(gKE29S97SplT(OECdR-7ks*KKq()Q5&-4y6VPet_=Q;j#;OFch?I}0{s1c6 zCtyfd0GBOmApo^V`H1QaU@rIXkzY!-Ja7@%4}S>h`wHM);4B>x)_63S0nY=L>B8`Z}e2MD+o% zu=^1J{?{bca~lQz3Ooro(*1*ewVCr^A?ls-5piFRu9dD`qgP%jBPs+5F$S~)Ka#$G z7k@ZvSwjFhPT67pUp@5{ojy&&!-@kpAHeuHojgfPmqw=4q!53ztS4o)Sq2;fMgqGd z0Cw%7?rxfzVhP`50Io~t&(pKdMvB<15FY^>W!5(Xe*kVp%3T29jW_74ue|5sld%B4 z{gw_Kh?WuHOW>C>>mA@N%NnjM@c=DbMt?_+cvVXS83@32>En-S%^EL}LjZ092V~X@ z;5Wd3ZF`Q>`-&CR)<(B(asLk`nFiqQT{?KMP)3RXW`y_?k=aL=N~6SSl0$cfjq+we*G!-dQ@I=MKFp=?$Q_msYPX`76X7 zAzqag{|CUog>WNnsN>M_`FUxYv z+fdrMldfLnj`+c)9{}I|B7kWj4qKK0)&iHpi(4PS(W5ju$sO^cq#1y&u79w_ld{1F zu+4At!;9O;ANNiY=1V64pL`Owc)X!uFVF<+2JVE~P;anp8x0O}hg%zI1K`pndg!6R z;z?kytUNCPW1%+G+xG3F(NXSjYbHGa+`LIoKV9%wh?!#Lc?lQ~mmMMKop%iFcIJ}? z0H&sB_wGVVBSc<^w`8-w+kdjgB6a`NDO1+B)k^~a@4Z**DTVlp{LI!*fZGiXWp%&3 zo%gM)I*A*=g$tg)MF5}Kwj)2jQ1;fj5Onq|bDVV(>yLSkj$-fL;NCFNi>})U{4w&A zrpJ$C^Jb3tREYH#wcFZo?wmiICHk%F_5!CZ>xV?8V-6q2_U+L1vwx&D5Zm1A>kHZ* za-1`^Er6GSTzIY9+Dg;YY!NCE6M$UK>wJm;1~QqYz$#!Qe6eBUM!J2QCp?8>0`Tdl z)YKI8ovpIM{L`{ZJ&zF7+shN1T5+6&^Lf1ec5v@J(Yr*yvaDz9P%v$6cpWeAKz8~{$942GW(odsUDtd-&P-?tBqjSPWt zNI8Ik0lfL9KXifL%k=+gDEqO0Kc09(byR#(4xqa`81@nU8Q23n8czQgUQitptJDI> z3J12*f$K@M3IzVcO9O-`b@ z*|T_J!fj}HW_I=>FeF44fZql6_v4XA6a}M=6lUDe5T>U5;Z33*;OFwwwFRwRi-#Xp z7mPMi2;lnlV1IZ`PP^6N`t#g#39LVC00t$16=49$xbjmeg>T4I%zzfT42FMsZo>xe zOdteiX3*4x(NScxn4T^?>Nwth$MMGbeBns{A^)yF_D?5`jhL7y?TkDMlnw}<+21cj z;T081;S3lY42A>p_B-lcTVL@2_*%|@CE-gzNtHqX1Aha-@N0SN1T`VSQn(IiX~D>d zSJ@{fz6acp`?B&Q|9SZ>GLYkp95(_J@@`gs)rNnJD1OmNUT*%M=ZfR7f`jwLvA@$P z9vu9MDBk*qO)GPwD1|fN&YfU*LcRs>sC#XF#q+V0bwcEpEb&?qUyY5(nU{(r%St$T!r2v?f0$^4OfLSR3W~Bg_l>%T^3V>ND j0A{5CnDzev00960jorV`TfWw%00000NkvXXu0mjfSb$Lf diff --git a/gpu/internal/rendertest/refs/TestDashedPathFlatCapZNoPath.png b/gpu/internal/rendertest/refs/TestDashedPathFlatCapZNoPath.png index 35158fc4aaefe26987d01f41fd416efac1864310..94c160ef51d703bb49f52a3c54a99a07a05fe041 100644 GIT binary patch literal 765 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H0wgodS2{2-Fdgx9aSW-r^>&W0M@XQI`}q~g zV&8gCiLkbC^$9MIN(M=6=stRY*oV47OBGUDBS& zlicQLWovtJxsO?4Ya!2L>+LsWug%MUXtv*=N9TDahj*Pi^Ap3K=_QkZO!n_Ty8|Cs z$_h;TXZCKwag7gC{uXa%6<*M|`p=P$ievX!x3dc^nC&m&HtTTrJ5GfIjB$w)?=1qK z+?&Ckv1GnvkEdQhbV+9fyT#G;p2&9_Q*WjwNhfIccN!SUL>2Cw!DewXTNJSE9Cql^M(zt(w@Rrjs$j%?7YOQ?AgaWeae)&Wy43H>mOXU8oZCb>(n zu3I0Zsm5q#)M9vaX6Sm!Zid?@6MS?k=gNCDsNEAbbjyy+R{wMVx3a|I)cQGZD;wO5 zBo>R-L_R8Qu(~9XyhQ852de|lJ^61|dK`YtAa3|cW^KUX+YE1ggwOu}8d<<7buy91 z;=%`$1I#_!ue3`&un@fbdHx%A@dbT4$9UbP;IMKFDCW`+0y@yBN; zC9(@EoV0M8?#z3hsU$gNZdQd@0>|T^9gIO|CZ%uIXT0~faURFBWJ!x5*PS*ew(Dmvfp6uX^~mLd!kh)LHvX269(S{DvXnl zN4&qhx#6|1_zK3HgWGyp+>+kiN?Nl$i>*ARNF^1DBUhPamXgOPJup*}E5b!IYQLgXZrtwaQJdi& zl_3*04`H#I4jQ-QIZuVy%=6PPxx4q@`_Db+{r-IZ`JDIpoY(oB&n-`PXLVIQRRDnc zp@U9G6dnG@Sd^l=`pvTdz;qmP+V2z3lCs@yYK0pJR}oV8L2a*Oo#@@Sd8sKHYu8s2 z*RYL^ZyFn`O7YnTGo|?b_*?Adjg^E}fr(GdO_v=FV_G^?y+?&N%?ol$?B0uOUa2?m zXZgtVr|+DizHK4Wr3Iu}t>k?{nxv@-R!Xnsso>Y^0^R@Uaa6%|@!Pk&2R|@#4F3<- z7QXkKg_^G}&Ac5VwxXImlU|HZ#T$UZsl^97Pl%x%A7YPn<3)CXRt%sG7LFFt_ zO%^m-Y;hWJrMPvl4RRWj)lx%-MoTSRK&TA21`bBPt7P?%MxarFBpPgyM(e{wBvF~( zKuUo+UP?}ZVQDlGrXt^!=pRX2p^h>M1w55mZGdBuFqM8GsUBM7NkYK|sg*9g6_H~4 zn@DG%#S+O8U@o)LhJBGRrTz{Q8d~IgB!CH-_j<5mFMQ8<4xiY8z!${Yt;jJNGNaPxfDJ-_TfM$*9g0n?;g% z+q7X-~-^)LIqc?Bz1pe(C>=~u8+&DP%Pp13rPNyx#xroaP{j~c&zDmZ}#RTpIpWPayn zUt8SOCBSiDlHw;f8ky**1($Tbro;BF%%lO3^t!*R>^zr?BAeaMS&dosKCbSW=QA(s ze#RYp>h?tSI*KyF`kA**__DyyToBf|8`xf6p8fcdFz>XAdy6XVmid@bu_puF` zs#i{{X&+L9i-jh7Dina?@r9~y|q+c?gxwDri2kHw?2}H%3v->jQ7bg525AJ?kx&xQ6)+2k6;FI50 zHxOy5lej#a*C!VnioGXmTRNjy3P5po>=?V98JDvL2(!y`=Z_vuH?%kFdMCy#VJ+Qe zdMctpq_kt#LiX8KvWDl5wesGohpt;F+4u>Q<8dtGnXuA*xmC;H=)$7)7+X<>9j^w@G$EA=I?AIqeFFDjZDACvTM%JEdlfJ1Dl@=<#Lnp-F)?W02~_@7s~^6NSp`;BLknq4Hb093Zj@Q zIzTE1Fqiw_Yy~s3Ipj=SV{1Nv8nwr;TC|eiS}RW**lg=8oEvZd$!HoYOtf+zyvFpV jMFxSO|F0h!0IaS`DT@S{qNv8 diff --git a/gpu/internal/rendertest/refs/TestDeferredPaint.png b/gpu/internal/rendertest/refs/TestDeferredPaint.png index 1446810f306880fe6d4f07b7ecfae8b812de0d5b..b562f12ae570ac7289b82a8a01a6798be2c4fcc1 100644 GIT binary patch literal 318 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7xzrU}W`laSW-r_4aNcSA&9p>&2Ph z_CLQarn8pg{LgpFUy=-1%9aM*xqh|2?(bo~cfJfv4h$R&j0y}a4GcHj`Td!0A1EkV zd7HC=L4bh?CUqcvnm^OzZL5r>KYg-q^JAC~QjH`}UCx0b@pmhIkIgG8|8S*khqVMF w*l`f+8q{^>Td9hkw%Vwu)(CSqSc(A!%sEjgc;x$zopr0KPg*EdT%j literal 420 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1SEZ8zRh7^V9fS(aSW-L^X9H$U$cRLLtsSV zf9>l01TG&g+b5K>9^h&aWzc2_V_3rw!MK4b;riL{ zpJS^Z7eD{+TFKXmLHq(e(L_`pSz2MQ8iZv+rNO`*#1rYg0zB z(~&K^aaMHc*YBm}mst{!g~96j-*MJI-uEtV7R=8WDhLVu2L|~6|CamtncrBZvjaH{ Mp00i_>zopr0CdoYs{jB1 diff --git a/gpu/internal/rendertest/refs/TestDepthOverlap.png b/gpu/internal/rendertest/refs/TestDepthOverlap.png index 6c5d99807533f09e3c365fcd8fba2a135965032a..9d416b9fa6767e124baa30c79662b80008d35af6 100644 GIT binary patch literal 303 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRS-#lF$Ln>~)y>d{HL4kw$V8YXq zb>9})m$6&z@Lamt_{O`QZA}aU3``CT91M&K3@i<_;xv?(=6{N2;HH@c2)8%r^Ic45 VscSL5`-=exJYD@<);T3K0RX!VGJF64 literal 375 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1SEZ8zRh7^V6^jeaSW-L^X76O=K%u|mV*IG zd(OqXK1t@d8(6U6PTc!lw_^7FzsUS=9YX};2Brko16&QF4B8A~3~T5waJ%ZjM#;So lJopFF5pcijGcf%B-)zdtwC~E?KfnNG@O1TaS?83{1OPHjXA}Sc diff --git a/gpu/internal/rendertest/refs/TestLinearGradient.png b/gpu/internal/rendertest/refs/TestLinearGradient.png deleted file mode 100644 index e6cb0946c254915c8343b655aefe7706ce404165..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 716 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1SEZ8zRh7^V4Cdd;uumf=gqD6S&tk<96nlm zW^unxKUn)e{k8OzvfZ;Hd;I38{7X)>JTXtc`OFcnLyjj@-zp_-zPaZ5>+J`#wpMBG z@`^5ry>4>0!sgxVgF9Ak&7B=ID|XHLp5Kq3y?b3`ESLXg`f+J-`9GUGDxPfKZhxsI zfUQB2A&p@MV*-eAE%);`_rC3ae$KKF7u5f`W!I)#iM_MU7HR%ow&&XHn_gcx+RFrg z4O?Z_es#WmQPtbk<>|*a_22#J6_S5+Y4Vq+&5w^3)!tcNw=Zeux2Jb&D`m|#>Su@N z_Ps7&l6bWI$oh`;9sKo-Cd>zT7>pUtFc^Rs-j%!08u~DOl-hXeyIP|KKLfuX(^m-t zX`V|Z#WKullO615im4s{_vzW6bn*ULNwZbStMdQ$$0r+dp1D5NP=R;*zxKcDV(v^0 zJ=S2-!}wDBlKT&v2Dp#FjFnQ%MSr^4na)0HJaE-8!Ak4Q`%mJ>KfZL_JF|yndf)Qh ze`ZfU@YnFcFO>o*<~%>9kFqaKIDc>>hfEqng!udO_H1wFm-BoOcYwPd#Mto8w$ASN zf7ZAB_s{<4z7%f=^BP!kO7XJ&hwIPABMX8(j$+0j6#2)(!0`XS^4a*%jL}`g;fOnfn0}$@ql3NOZf+Nio-7)I-^b+ER#q0j7>S68 z*zdC0syk@&rjm16v`tov=c{f>t-|K$VFyfWi*C?Ur1ejFym+%2x{5fjhj}{Vs^||Z z=|#KK3mgbjCRJ0WUrrglo3b$GnzwWDuec`VT%$QIv5sr}luIb$;y%ep4`le)8uycO zVuOO(AUAVSSh>iJmkDPOb9aPt1TnQnERG>&Um2K-Z*e>unn<8Co!`sR0t0k2*$GqZK(rq5p-3r-g_8 z6!zV6&5h2M<>;sF&AR5kuJW>bBAfPgb}NliS*`5)eFwwcj~T%kan!DvT{E)-bBTs6 zdvCirx9oDC?y*-7s;dp}_cS`WYA@A0+B$aU>_6o6?SbWr5B2{XkuO;PnPayx+{!Nc zi}gortXE#YkxnoJ)-ki68$Ms0Kc|T+C|cR>vSas-&9oWCrH!512jZV^z0yC9?lRZk z{M4|vQ@dB3b8`X!o_L%D;B`Frlo9}?Fq_)!trtp~XOIMcwh-8|jd~IHPwu#Fr*Qkx@^W};@-4zt9hDWGk+t7x#@kN!k&`?Ok_|aAX zd94q30!WCMh-(LsU(BZfU<`W=-vf}_sBi_4HS9eK89n^U=?wt3$uc`np!KWGGijMn ze~&DuBNYIJluQB;$xYAx0e~rMjs?J;n|1mm01H|<4S>&M^#?zMY{lcZD~+(ii|`H)p{Fg=$snG} z$EPbntQqrBMWcYFQ1tTw*m!ySzyY!3{Y#}NSY@SWXTWfma?2+#zzPon-w%dF$d8DP z=-v8HY2OZ_RecC5)dXC2j?u!x!VpQy`dg%zWOIC}!a_+rhe;JZk(}l*Dug#B98O?` zXjYQJ@rx3cNs>4LQKBJ98pnTB*e3ar!x|OoBs{gRr%)g{re=DIUP{iW86Cnqk`wB{ z4v}$)Z%667T9W$k*(+7Gc8+wD+HiI7S-Y%UOL751E+T&*mspzgTH>25NsE_p)efIs zaj*|@uKcV%G9c6qWSMd|>~6XEdm_{|a}q)HZ7CC?8^j5i6#RloqLUEh zRjDt?lj1B)7XO>b(-^c})Hf~sM_BYxp)*A5*aE0K!Wx0PbGW2#Xv$yc2vWc<1i2?r zjY$Hp45I7k!4Q2-9178A1R+>mlLMG6rw4(I5i>Da?2YBE7dk-Rsl%O+XL{WOq_uAo z7Hjbv)=;Jmb`W2(g|H@rS%OJZ9yU%7odL0(*SXkEW;{sRIRq`u)}I}O{W YpI55%J&FD3{|GK9;1Kf;(^b literal 1329 zcmW-hdr%Ws6vpq8#07#OU=+asD_Zj)#;eB<+vqXUeIJO4ci0R2szNVui&i1xFRKSIc%~ME`UH;eN zq7#?;_PTdgEN62S9_~*|7cUH4IVErKluKlli}OnExMytZ=U>QtnA>)4v?5GhZGO~?3M zoie3%R%F#ppX+$}p%XE&^{HTm%hM|wjr+PHd-ZoOBFgpGch5C>g%$@4y$u*C6;hf6 z$w&h~%6n;OaT>91Z;O%ula_|NICHO7c@oT7g8WSt%S_k@Kxka;aD_GD5NOHegK5kU zh>SWppoD>Vw2{FFCIe}HIEmdVkPcdc_=X)i<>4Kw4b~1HygQ9S1iGMj3A2p-f4%qLbMZv1buksjr+NwzItG zfsMZ6jisy{hN&@^>clFPE0G-YGnvp4%|zTGn2Bfkau#06e6vUH&uWgx}aRbYx-u4Bjbe?-wuS$;$-ebKHr+z<9f85e% zaIDy*o>gf7S;wuGlz?=V@^W(7TI+Zy$3&)cPOEG`HXI(}4p;f*4;@X~n9OR9amz6W zG@a(6lgVXS)|6|ggv*I>>oe!xMZ(dm$z>(hUwlZTa6hM%6l}GCN!G+!N9VadAM!V0 z1_wElW~2>A_RbI%O7l?>E=KR{ViP5wxk^l!o_S_a^UmlygS9gq?g_H-169-5BgXfp zv;_A2N&2R~LZ`?#1M zMXmeIg2Ag{VaEL3T{TaJd6&X6j)y*?UUf&89C^oiJ3jI{vo5pvW8L)qR$~2<&r@p) zJ?VARYfY6q700{m$MxK%vFcmPLXHmD|7-3-6Vn>k)P8~-1ln%L^MC3nq)zYAW-ajA zgl1UvXiEZn2vL``&|h$Ib3i=%S43^g@+ixP)sZOfjhl_x;6BVXzZbVd@Mj=VLD5t! zgN5>p+7GlE6S4|AopXr_$Eem`fYXBKuDJ|82Z;iB&B6hd7Ox_qPis7T6#5h|(nbQx zSc5gfy6sLA5r9gn!PHRXJNZG8<^*_v>Yhcmpi=7zAABC<8$bFCw7W->!mhIn33SV) zV=&&P|2WlEq+w~qd)3}}ttB1O<3 zEDPTZ`^A&M-{FFXhOS zHT3I)NS*Cv$m2t-UW=w42|55_mAD5S+8ArN0h3*LI*PbP0l+XkKZXy*1 literal 364 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1SEZ8zRh7^U^Mo0aSW-L^X6h8=K%wTqX!IM z-T$<@=XZvmqeA*^@#ohW*Jm?aV_3r&!MuSjf%kw^gDJxZ7RUnz-2eZJSXdY~s>`MV OISihzelF{r5}E+9Ep1l- diff --git a/gpu/internal/rendertest/refs/TestNoClipFromPaint.png b/gpu/internal/rendertest/refs/TestNoClipFromPaint.png index b382f8737ff9296da870a41d11d2fb0e9baa6b7f..e774064b7252ed8a2b0d3603e4a8dae6d5bfaf16 100644 GIT binary patch literal 163 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H0wgodS2_TxEKe85kcwMxFEDa4IB>9RxcqPK z|6q=$=$6p9XQ9_#$*4OtFfcN)a0n=nzyO+y4jOpvWIr;dbeCtY1xb0j`njxgN@xNA DWRD?0 literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1SEZ8zRh7^V6^pgaSW-L^X5(<=K%*E)`LOk z_CLMi`dq=9OHSwK*~)b$##M*><7^XlGbOMd;A#+M&}Il@Si=y(xPc}Do1dFsox6*M h7EsI8`+!0C|9>h2+y5Q=lRg1C44$rjF6*2UngB2EWfA}Y diff --git a/gpu/internal/rendertest/refs/TestOffsetScaleTexture.png b/gpu/internal/rendertest/refs/TestOffsetScaleTexture.png index 47df5779f5e4d136663d79309f6075183257cd95..515a4d244e92c059c7af2b82bfc80b2dc7a81d2f 100644 GIT binary patch literal 273 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSH#}V&Ln>~)y?vUq!9c*_VDH|W ztw)zg?B1}W;=95Ml@n>t^#0A$XzK+k1p$SHpK?E6+a;f<`**!l?!?D7^X{KNYHVQ6 z$icv3>BDa5=_*d`jHPkDKd&PLpuVDs*A!8EL5ta^4 z0bvC-2OosM-DT_c#nsop|1SFf&&IVoPTya9ZSIQov$OWRpOvL|V3zxNdpk#LdT(FJ zdi3qv-!qAPsWp4w?aVPc@cf|v1u?&^pLhOZIf}(1PJ!9Cxvl;%o;$TtZ}+lKY}g#b zDX@9QR~@m~)y?v0k*+9Vc;QK3+ zf}F%foDEAHy*%}ov~BgjVVr(J>5G6+hA>b$2&i2-=C}X-rH8-GEAzJsy63vw@45K< zLyZ3U1GiWd7+4w@1Q?hc7&sUh6&S({zVX)Vf2aBG&`wjvFBU=E56V@aFSl4+(P?XZ z=?{++L=_86OG9KNkEc%C15ua&$PA$DjG0F#97*yp?^cXs1e*&KgIU6W9~=<+mv>Al T{=l1Zc923(S3j3^P68kyzh5hEHKYWv)J)0&u@^4F~U48^Sczp}~AWiVt+VmiXo!6_iD zpyuGyFasfA?N?iCp)>vTHTV4IPk)wHuf5!t{-M^px8J%haK1I;?fUti>lPrXhZ(T3 zG|Qy0*8czVv~?!?;$G>-(;%NmwDxKpTjjadlyFv9N;Kcd;X9Eg5lp3g$>!tN13)!0`Y7`gyj`IM#I-03(XQ M)78&qol`;+0C&=qga7~l diff --git a/gpu/internal/rendertest/refs/TestPaintAbsolute.png b/gpu/internal/rendertest/refs/TestPaintAbsolute.png index f8680aacab6519a33c38e8133213d6c8a0074e21..dd0976076b3fae51cd2b498c05831ba32966c5bf 100644 GIT binary patch delta 637 zcmbQi-px8evYw5Bf#I-S;%Np3rXWuj$B>F!Z}05Q3JDZ(cvza2rOR^Lra>X%31bZl zw{9&n>&ERL1>dl6cSooyZ2RY`BkE(2vGB+A1&V@>DK4GQ^13AjIt^zkDs2A#OCi;dlv#tKdY27N}h2dW1cPUZf8sJh_WxBuIIb}zUzO}d0Fz@mYt+kk<2 z0%JzZYThv31@8n43{OY#By3WC@Yf~V@+M77QfqcHU$OnaJ~gt3v1k9`yJxn@ zF-y#66sg~KsaceH#p|j=!oABIYHz(tSjI2?j=}V7y7WHAo`ucYlGjries8|f?#>o) z{plKRE3X>G0Iyz%ns3-o0qCn>F0m+md2l{b&8= zVxNb{Rn^1I8QSAb8s0X1_FI$2(A*I0w>phMpQ+D!i3tDnm{ Hr-UW|luZ&S literal 920 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1SEZ8zRh7^V2<~6aSW-L^XATZuSJ0p$3GtL z==hhR^;JyNk;_#~X$waTOW;MfC=U_cMWF&0)n1%871{ccYfsZUhm7mHT7QSdI+#Bw zNRVhVewER+zxdqe-v%dg*yPTYpZi!FfBK=@V#OBY7C8rNHil#d10snH59j?W)w#Ca zk?q*V^9Ob^ACO?^VFVIBkqu8%zp$94GH%;;LHNcL))OgUYQ|hw|Ab(%gfuqWM&HPW z5H2v~!eran%XnZ4>x?-r{t1^w6y&CNa()po^JVPoPtD=6ZSf6mIP1%9f8c_M!faRn z3oXkSxVc|&&blCSVDEE*Sxj^0&t9$YeFf)+-QDvRSei0kyM9sFMEv#3)m(RWugZS; z`}V=x38vN$9v(bEiQhcc#E@&-Nw#p->-%58_xSjMmh0+lz;fH;d%P^ zaQi#50dn5gq^*6 z?F2_v-@gx8>_CUCKYcUOVDu+FLzaY0x)}IHqxP9|!*p>=+pkZ5)@{GT_u-3* zyL(*CrXR_EY$u*SedhM<``tfF7yT>JIq-L{B^b?3sf&sFET z`5R~KU=SDIv{!fMoRrN*c6`#zxdDt}VNV_$&?#3_?(R0SU;lhU=KALhfhqU2CVLiF zExG(mf8~^)#-?9?o6a;@-`T=bS$f%AV=rsLo9Y?0NB&Pu;9)q%KxbkK!}ke;xQywjuA}^Wy0pw+bYo#!Z<=b zNr$7Y964rQig}DOZPGMoNjWw&w2o?I+x>I@+wb%Fe!kB)^MHplNtvPy03b139KF9S z{7(tcH+Ss`6#;;=U^v?QaHX^5PmZtmC3mOQZf=BT{gmAglV`A2v;te0q@s|aNy~7m z%G9}Z8M<1n1nHWwDYxc^Rij;Ycqu4t+VAkjwacPXMYCj|gNA;kj(17&WSem^o3^@e za&EZAd~%oP0=tAal=6Bq>FMr-4v6D}Jw#kbPG!k1q9nv0IfZ|kZeF~c)*32%z+bY% z9?I>#q1dQXW?92UjNDgJ451qulDa-kW|o*8Cmu}>=z4$tJ%rb)I;?GyOI*?(K6-Ut zG+v1AiRf5#U#Q!fT@C{iaEXw=?ZOd)N!FO~=FGL;xQFIcRdwf6=eV=j@)a?R;N zl!w*k%WsZlQ;)Kr*!uf?tT>;~xpj*FiJ=5s2DS=2n)ok5>J%qlh8d^Va*SK0X&sIe zFWel%n~m1t*OZTF{nZ~<2&ADkeIPf(7HW&WaX#ukHLhufr7{$ZVgDKCA{AW z+X&M)BNgH7k@+0tNEOD^wRsHrpQAq@ zRli~4JSLn{U0aaV?M7iheaf`iaD2;Y&vf)`c9sqtMT(3FdUV{tj9WXJ*&Y@54E+L~ zBc9YVWr?Sw%!i0J8sx+V(P%Dz=_=n33}Eb^z1B<~GCI~GeI@KBe%Ir%=HG-9NHe9e zvV<&mPhy9KWaJTNZfQ+d4H#}zsjw=JzVykDIwQP$XD6|a0AIEUFGWAlDYh}D($0ln zBVQ@43(FItFq%UzPJ2;V55&u#K5PM3TwKo~{iMMBzKR_zlLM!QR+H3$C;;&zeicgO z2XW9^0bue9qT~sSfA|l`)eDlm!JXHXT~V?|)MVRaKi|;%-kPl~-VZ1E%#gA;bCkb| zuBZA=d769u2nOp`$Ms_8yK#1wz^9ih_`Upk=-Uf`MTPIG7bUoX9gx5QU+OwMKk_z- zp#m2GH~fLY={vx5YN2a(i1_dfUVv+;XX}=uz6%56qs3?h(&9VEGjE=$pH@@V zVp^H4Rll^cKOQq1AJN7Ifg&|Hrk6Vpm_jue7tzL?NP5?vUadURn;LHeI~Z9Pv0Qjs zAn!Dmb^@!n8*-%(@&bm{`i|*KqV<~_Y6br8&|?x@jo>i40jgUF_i1jbEU%hPtW^J% z_D&O(qCr24)$ZJTPlDpU;?mQKV!;0vc9IRCv75kc^kv`P^~@s)_!5{rVZ4XCwBscmX& z+ay(Md|{gxwKg?>8k&X$immhQ&q1V)Uh!7F=@;4jjPMSL3Ryux}r(yb?Qi>YTu~!lj#l)m2PQ zVPpjFzKivB`agnze7^9iAkcqH|CH7*y%cB8;Mg(Tcq4Z2)+dwg1<^=8Pv+;zn{N_P zB!WPI3rp#rf`3r{XW5pbNQ2DJ(|}Gwn}Ar1oIP9Xuqqc&Tt9o3hII^$3fR~neSKAq zvUUN|dS4$c!T~fSU~!RjcFG<*T?7EMh{Z+y_t;{n7ce?X_U^57>~s+T(1J!s4cTwY zAgF7yhlX(b?O0hc>Xe|2l@(gt(2z;Ru|SQ0@4v^16MqKgBFBjnv}l{6SirBpqN~f; zTx!tOMH8?i$^@iRc;N*k5{9QEMM2-^!H<6!0=pZGcZ8YupJ7zB34$= z(t>0XZa22J%3m$(Zz!%S?24!xL_#Xs>qRVvy?fQ|qP0;_1HSr-9(^m2OwwfRMZFr3 z$)LR*k$(t^AHy=ttN{R8TM-VUxmo3IT9Is;cF)0z{STH3G z)Dti_XHp`{v0zFXs3*XJjh+Ql(m=gN*zHEK@w7rCEXAozW830^%O(4wpt7sZG-~9m z5#8^Q*TbrZ*fDScjNt+p!v!#g3t$Wvz!)xoF@H4$R9+Bq^oG{}#&7|Q;Q|;_Q-Edr zf((Mi{yOXsTMsUPF3&q?l@7 zL4+U}gwKahKV|TVFo<{F!GHg;PNEuBq+;R&({+Lz>3s50oa*|CVW|GgNyBkkGZH1Y5Dg?B*vq{8!-hZE7PQLXPtrP61 z5Mar>76$UtOW403&p(gvzQfv@`Q}hLlcbES2tZ z(I8b5F0Pn9W0w5=fR8>huQ&ABXUXs|SzcE61fP7KzGZlrJoAjA-cTv+s()z|S4>B~ z$jwdi^2^2w*t3Vc_a2GIb=Z%1oQB%7$3_AOA;~0p@<~GkxZR|;mn0H8?@b~>!&crf z*scNyA!}>osi$-n(A`ZU5d-%r5+Q+rT?9x^ta|lT-30XZl2pp@-AbiMPmf&$5JGY} z^2sM;=T1!m+-@>BXx@YJ@_%_+oRq`17a$RhlE)rvP=MP_LLme9Lyl0WaP;jUKsq%V z86hW6sunOfXw)9mMXCoj5g?JxlCiPEQzVrL=;>kkh|YYTCSWT8MU)IS>FP40)vZk` zMbogP0Bye!E1g?iu7e>QhR>(QdTLO+V$5P7`!o5rIg8Fb{6B~`1vVXcnWl57+NYt* z%etMc>BaJLt9m%Nj1-W|X$o!xxmnuDcpYN1Fhf@y$0ldbG~8A*GaE(}hCl=ulfG7jT|v6n{6}gn$2ST)>VUn4DDm z+eIs#CNdQ#@Gycw9pVIoG?W_nR}kpe&K-APY6@;QZHgQI z3X=LI+uJcZie0-D7S3w`@XIgw`Dfjtg~K$UVz>a{#~&F6AI-H`d|C$zSzDu0&Ofb$$YsP&e>7hkA7`dq-p zbaWsTg4e71jb3kKH-x!>3OYJ4F`;g@48NbgrJUx{E+v35TmWOZ0LE|ujQKwR0RR6XoCfGq06wb#0000L%-F${t5EleTS(-##NVZwHug(DtP2ynl<+twVtUXd3+BH}Rp|^f7!%kU zBpK3(Vnk##WO`X%fBm(J|Cyz1|H~@hrB~$rm;ahQ=W<%`|9=H5!ZkCut^yJ=_nY(9 zycGX%-{!yVJBNUVImypn_RnYBAoKa^k@vO923gGu7beq?d;K=yx_Y>!z^MCkAJTnv_E?7tk iLs}{Rrq96e|9^N~T-)DWS|@<%gTd3)&t;ucLK6V^ThF2Z diff --git a/gpu/internal/rendertest/refs/TestPaintClippedCircle.png b/gpu/internal/rendertest/refs/TestPaintClippedCircle.png index 9aa298e91a2e29d0f32ea857d01462be7a8e13c2..bdf1fced94025d6c64c057e343c4e6c2138ac6f5 100644 GIT binary patch literal 276 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSw>@1PLn>~)y=BdHC_td?qI^zC zH`lavp5Y6#g;=Vk9ZyDNC^q#689jF}oAA>k@0~9bP!j}vSX^whIwkVtwn??B;^j*_ zy`D{#(OUWZ^jyjR57eDERm$#R_{FlJ&b)@Pr~XH`|6%b19kK7Z_bq0aB{k{l_J`aF zcl!U&WvF5=5OR3W;Kjfs&=B6hpu@y^!H8jg#Q< evziF{-&tPQ6CSqfFYKEDQtj#L=d#Wzp$Pzp@l|gC literal 571 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1SEZ8zRh7^U}ExgaSW-L^X8V}sYd}K4i9HP zynjw#?A9*Mzzc70>=0rt6&H(IVidJ&vPav?WiuqFls`PM=kwOa<3|sBA2NUV zu)y+Qo#~w3SJfX&K3E^WK=ZHOiq}adzdoz(x2STy$@k*-jhstqD}!$GW!#?O_rL0@ z?1#2ZvKO{xHeXq#bD(a%naA2wd5*rH*RQ_UbnihR%Nm^nInzLbOl!g*YEmYFxjn}> zMl3lSq}s2Pa5UfX{{2FmXJ>+z_FTX4(}u6TrF7L4!3CLhww!s}Bi0Ltt@in7{Gfb& z_?`FvRDVvq!tiU3yPyH{0UicphBFL9mhoGXf#LuEH{F36y}?FPfQf>^)78&qol`;+ E06tdIp#T5? diff --git a/gpu/internal/rendertest/refs/TestPaintClippedCirle.png b/gpu/internal/rendertest/refs/TestPaintClippedCirle.png deleted file mode 100644 index 9aa298e91a2e29d0f32ea857d01462be7a8e13c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 571 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1SEZ8zRh7^U}ExgaSW-L^X8V}sYd}K4i9HP zynjw#?A9*Mzzc70>=0rt6&H(IVidJ&vPav?WiuqFls`PM=kwOa<3|sBA2NUV zu)y+Qo#~w3SJfX&K3E^WK=ZHOiq}adzdoz(x2STy$@k*-jhstqD}!$GW!#?O_rL0@ z?1#2ZvKO{xHeXq#bD(a%naA2wd5*rH*RQ_UbnihR%Nm^nInzLbOl!g*YEmYFxjn}> zMl3lSq}s2Pa5UfX{{2FmXJ>+z_FTX4(}u6TrF7L4!3CLhww!s}Bi0Ltt@in7{Gfb& z_?`FvRDVvq!tiU3yPyH{0UicphBFL9mhoGXf#LuEH{F36y}?FPfQf>^)78&qol`;+ E06tdIp#T5? diff --git a/gpu/internal/rendertest/refs/TestPaintClippedRect.png b/gpu/internal/rendertest/refs/TestPaintClippedRect.png index 4bd3e5cbbb6c7b40f9e49d9356b1652c33078dfa..c1dd7a0a37d603e2d32bceed462e05bbc3513272 100644 GIT binary patch literal 189 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSEuJopAr-gYUOLFhV8Fq0(D?87 zoU9Y>24_qZUa0});b2XOu(Q?6M%Po;_hr=u7?>OwI2afe7+4w@aB&!j10Uvczw%%* T;uAh~3Z%i))z4*}Q$iB}f`B57 literal 382 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1SEZ8zRh7^V086#aSW-L^XAq;P8UT1)`O*n z|EK)*~)y|t0|fB_G)qt@i= z;-$V%yFv@h8xlD9!)K+K`=(!-JN=WxJ~?dx1||mv4hBXA29^c}bj|~PHT9>n59Hck l^j#p2Lk(0n1M#3?wz$E3Hvhk~_ho@JdAj~{hCtqz z)@6ALsxJ~1{_p+0$ly)p{p2@=IcFbV{JXQ_d;gwS{5EqL3>lM{j<9ra3J5ExIrucp zz$#F@ru$`S-SxYEhwRPpC_^^r#+|;+n$mbpMOKd8-T_mwkCB1l|Nkc)+&`377gqp7 On8DN4&t;ucLK6VM;Big> diff --git a/gpu/internal/rendertest/refs/TestPaintOffset.png b/gpu/internal/rendertest/refs/TestPaintOffset.png index aa5d7d8f3a32a7c0814e4124d5d03027b3cbea96..82394d578be43e01cdda1dd8107aa8548086b8b7 100644 GIT binary patch literal 216 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRS^F3W0Ln>~)y`(6_V8Fq$aq<8E z##6U$HRwFXFdHZh1=3gEC#dgDdHCtubBjg>0R|=q1`Y;B1qPM|N;wSpfWduM=0_y>;22lpA0y%m2j#p$% zi01osJdYW_Qo@E2sp9U@HO+a!dxNEMIf_Vg@OliN8L^BE4FCTxZsTBTIvH#S3|t0J LS3j3^P6~)z2wNtV8Fw?G3AeC zxx}~GTGEGJTAfU3RO3D0$HI1iL4tuffq|!i(SU(s4g*o(fV`f<8m1IRYuTG1^`5SN JF6*2UngI9pC!hcT literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1SEZ8zRh7^V6^pgaSW-L^X5(<=K%*E)`LOk z_CHio zf4b3xOXu#L3)--m=f+Z>+Ola)bLU=n!^j&Wo z>JD6HZ?2DJ>|!#TdvedbZ%Z5QHk>}+@^ALV;;_#Zx6GOPnBNJp{*)tbTl8%B!E8+rthd z9>`^OUf(yHeTMnQE#7~V4%8lQUf;KE5o$vs>T&K$Xv&loK!dcd1ex_;TTeH?m5 zT20Bq-urn=jI|neH>d`CudtbAdS(SjnXm3&t%50mj4`t!lAc=beIC=bpdmNddq3Bl zv@Kj;e06FWw-{+PEN>7E_Ks#Ko^P?o@?>tp{VSL1g>RhC5Z%Ey!+7hK)dx5`%cCw4B?Z@AmTm0Pk2b(v&Wl%dD<8Z6CuepjY-z_fZWqYrJP- z^W!!X-`<#2`$8WqX#8CpXtuFrkN=8)Oc8Sff?rgZvwhiPoASriU`D}*@YKbt#OvLB zRxp&QT@kU`V7tfCwZL?p-GNVg5BEK2tChI5dh_e$f1X{~#<^vu_JJbaa<)6HGPgfX z^%wjSH21Ck|H3V&)i>uRe74t{P{H-0dYS$I&@oe zntJ*2Gs-%D9(v78JTUS3mu2;$7B$rh$_rj!ToZCrvtjF}_t%B_lg_+5y}*ArEWN@L eEumHT5ZV8u=!`01N-)|*N6 z_{3(#$RVkDSKMN0+)y~JI*@!K<{=g0w^9q386{^y(UrSie5Gof2EDVeadb%a0u({U}0!A~LWHO@lixL=IlpODZR#mMaHh{lN&9+j7UGvvCJa&u(>HEvMK+MX#Q3*`%dq@N(}C52CYg2M0NVrufPD|(!t8(*`J#LQ(jPLeYV=zb^ zIyk3C6eiBp;5rIMCtTs^)QN?^e4r3G-sFm@i{8b}J{a$^ieKkcNU++_Y$33rJ2)5M zObb)jwo>FV2}Gsy9gXzBk}S4Ke}&#eq+OG~Iub<#=Wu4qOgk?dbnt4nJ*cfMC`5f=R(aSmTF8l}j4T&taTBH#X0p|dz+bP^f0{5Rk2 zV!4#+MPYb0G&Stm^mS1%Hh%j;?ZbfB(lRKd3G#8t$WCH2nl7&J+HbS?`4oduTjxwB zFOvSW#h6fO-~$IpDp!`K87|dx@XN*AuC|9N>b^X;gTrn>U>i+ zT~LVa0gWrs-3RX31ru!^-nuAYG;b8Q`gRF6z%&De0&`$|NAP@ a005Z`5lZT15yMS(s0$DYB$oy!YRW&pIfuOf diff --git a/gpu/internal/rendertest/refs/TestPaintShear.png b/gpu/internal/rendertest/refs/TestPaintShear.png index 0a7d553c420c4f289899b03b95cfe328a39d45c6..6d1a4c9299357c1329d0f9d284ca731c79468069 100644 GIT binary patch literal 256 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRS$30yfLn>~)z1GOtU?9M9@U6{C zn|x8nR>=)a(|?y_`JWBnA8h?jh*8ObrK7>##bE0nRl$w}mIZt|jj93&#NqNlro(|n zNuZHq52uR)lb{7Vh&_i{FoFq$fO6*=Ids4XBn?vg!9WDffCEAuV6-PUs}txpqQQ=* YjFVhvKW)oczz)*m>FVdQ&MBb@03bU+NB{r; literal 511 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1SEZ8zRh7^U_9pO;uumf=gsBVtlJI}4uRn% z=^r;u-MW*7D|eQ~M4huS&gW|{oZnM(SmxRD+*tkVuT$$@S5;PWKC_EFeOq%)w!zP; zy?get70+Mu^zFd~*+2iL32goIGbLclp5Ms^d!OECWh?&8a3CRXKBK{m8?p>+n|JXa zNbrhhGLX1m&cMUAow4EIiEWGq64%lg*phECA4qVpW|Ww7w~m2r`8NTE=Fe3k4F^4C z84?QIjx$Keyfa{EPM*tn;DLiWqd~=%&kPbaS5`9cd@DC&Xr9Zk5cn<1!0`XS(9|V=>|_(FfDy~!>FVdQ&MBb@05$Kk Ap#T5? diff --git a/gpu/internal/rendertest/refs/TestPaintTexture.png b/gpu/internal/rendertest/refs/TestPaintTexture.png index 33feacd3819325766bb54ed0fe02e8528372c623..91202317af9888aad16a5941e45057a4b829fa5a 100644 GIT binary patch literal 280 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRS_dQ)4Ln>~)y>pTCfC7)}#p!Ws+T->Y2|Kngrv{an^LB{Ts5ah5@z literal 408 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1SEZ8zRh7^V2t;4aSW-L^X9f=SBnFW!^NTx z_a2{J{r-aEyx#wBRS&7J4tO3_UHjIG?f$Htzv~UYv(^7%zqgJdf^h>=0_y>;22loW zhA@UTSOt<}o7Z2AEjKE+f30$dErXD9h=FtWS6r7pJ9kg_K1XT1rX%dXW}Uc(mw;Pf ys;$3W?pvaNnT??1VH$9IkAR9B>I@A3|1Ucy^|d$2;x{nF89ZJ6T-G@yGywpG_I=F& diff --git a/gpu/internal/rendertest/refs/TestRepeatedPaintsZ.png b/gpu/internal/rendertest/refs/TestRepeatedPaintsZ.png index 1da622452b0c735191ec80a978f0ff6d8936ad26..da201dca6d51eb2ef4172bca7dc80755017c2fea 100644 GIT binary patch literal 216 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRS^F3W0Ln>~)y>XD2!GME#2^AJbYjEEB-lt4Ko-F8Izcfuyk+=2rH;Dq;EzOaqyv7 wVB5EO`Dq{Zxgl0i!9X=ynQ=p!f#LuEPqwTKGq1(I28Jkur>mdKI;Vst0I|(z*8l(j diff --git a/gpu/internal/rendertest/refs/TestReuseStencil.png b/gpu/internal/rendertest/refs/TestReuseStencil.png index 7ea05a002ade8facefd7ef5a07cb1867c6c48d3e..349db1fce85e0cedb8fab999e78f5da2266fb2ea 100644 GIT binary patch literal 141 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H0wgodS2_Tx5KkA!kcwMxZ#yzFCjv*Dd-rlzLlMWPNeZU+tWnlvIlr3u-&qXpV zS?b6&S5)!XR&fVbA#IMi*B$(yo(ej(!%3--u}ZeqA>>@l@$)tl2>B3WOoOZd5e`Q*S=cb?k3)7(?P z`0f&(@Ti8Wcd7NaSwj7a%dGEzx~<+V@*rZzS&ajSXCGbr?A80{R_~O|5`MZHPp|l~ zrG{}`k>Z^+kq2q(TJ_4l+Ar^lKF%BQul?kvQ(fK#${?A~PN(P3JG|U}@4e4W*NIc&|5oCC9s~ZUn{S1(PsKhUnzNqz=P1khrpYZzQx`GK> zcT0?XUKchp^+X?vR*&B_d&=dLAJ^{}O$d-zPxkHYpHwt?%5zE9jMEv)d){1iKjK}V z^>gtr4NK`IIalkYB=29ZS4wPls4aiO4UZ)}j351Vj46vBO~13OD+Q#?)78&qol`;+ E0K8ob!2kdN literal 1122 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1SEZ8zRh7^VA1q+aSW-L^X8U+#^iFD;~(=? zt^~Z+cr(GGDpD~lV4A0gpsj>03%^*|#|c__r&W6z7FAsAKIxk8)FQ{UDB8jH&4K`z z0Ev$aUY~d~Yi;8{<#ZKfmsl-8uK>*+b`*S5<^2K1@t6+mXFP=0{$} zUcKY}-U~1MvYa>}Bc#dkV@1jPvho6@1FOS@`0{TFah;s1UG!?okD6WOc~)<~Gn}53 zv#mDSPXF=aq6ZBslZ}j(&u(4zE>pt$x8#N$8tnX9?meQ%{o?!OyXRXJB^4wDyiVa+ zVte53?xLTYid-(G{(pb>@m|3lh0k6{{-1FFX;J3fsg_^ZR)jshptv$*O7o<*$E}`q z$J&$`nh3r6{^j-T*@|D-D!%!gn-|*mW$pz-C9k1uFn6LOLamnFgqyA$I{`+c`?nS&-+I+V(?Y($c zyLy|@;rFHgf2YNI3qGBHdgae6_xIoC-S@|}>-Yc1#xCxQXFW?3iDfLh|9snxs&}%M z+y6OV3c6Dloj=uf;RBC=%XfMfJr%kVk-Ow`=GBgCrJi43y?*r~)IZ*Tjaa57^D^;e z%j;$b^=|0j_xJt7_~`UwX%G1iS*fKd=rYRHetuEkqxWw5qPvgJcV9X?arVCQ>eQ+0 zJ~MjRPgR?y9-Pt5?ZPIpko+s3KmUAl{pRnfzu(pe@B8twDmBlK ztvb^;>T%MX)JX5s-sksM*R3vC{pokS_M%e^FSo?(T9RqiR`f{uWY*eWRo_a}w2XgV z&7EnpMq=j%g}VLkUd}k$$*}ENRPi_V@0XWP^2)VU5Sv{6eaY=```eb{3C=rpcFwu8 zQ~BqgWp8)RnPc|xVLBGzjyyx*2wA{XbbX;+cTk& zac2RewIELo!|c?rcdp(~J2kzy`tu8Ekp=073=+%@LyY(<$iVRb|Fy7h#U_D|O@Ujht% z1$#frT#IYHb?TP%%|a#~g^O#fXGw71tku8i7Bl;#9NCE*Q~gG-dW%~gZD>Y_N%>B-W-oK74-KBtl9KX`~1&- zftuo+Kfb*WyLSD3!P9^4({pc^J>eW-rmtMD|FB_Ms%Cgkn`QOP&(odU7T=5bk>OOa zKb(Wbfgy(J0!tFllmB1xST61s^?9Ed@VP9#zuB}cj^m(qVuj|E3YRM%Ol6sl=3B6I l-7n)1k%#*aH>1J6fY~?WFXx54OJ6~%JYD@<);T3K0RSGBk(>Yk literal 864 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1SEZ8zRh7^U{?2ZaSW-L^JbQB-eLn8_p>Xe zzo_fG7;1e|Xoz ztLsAN{?j=fAR--q=z7v+IfIpTp*Q)>L?#4f#g)~5wT@!f-#tg1BVXk~#NTCAYn^QO zJ-*`lHOf@qcN^a}fr6EF?(ZM$nY_6<>Fs*kwf~+U*&T6jx@%hVr(L!WEMAFSz5Moz z!`xfBK3_|2o4DrPO>kwLer9tuNB-~Ajr+bhv*-WbP<_Hsd}*nLOi+(z%fW9u_)8_W zmPE_ma&Dd`al8I}ODKyBUwh`)YWDxvD@rD`w!FUIw#A725Xnf{5ed|5HY{}L6a|-UASD77W+@_~~&g{dPDra-G?^pl-d6GZh zw^p8^*q6~YaLV`8J>Aon>1FsS{WmQ1+x+s<$@~AF%U|nQn9FkOc#sh5{d zer)$lprvP_!Rj8yw|iIc81_ZC&rCm|GyB+$y(@lRE1zea&3njI(2eictMkhiAHH#L z=P&Kp>(i6(-n?+RIFNtI&G8|5a&C!oL&&r$3(q z?=AOvXJfnCo?R#9^3s;`jWGzqC(o zd~;h)YpaR`rjS cf#LuE;7vPyxu>|h0&@<7r>mdKI;Vst0MVvvWB>pF diff --git a/gpu/internal/rendertest/refs/TestStrokedPathBevelFlat.png b/gpu/internal/rendertest/refs/TestStrokedPathBevelFlat.png index 861b57f7de58d870b19df2ecad8c4c40f4bd1e85..9d442f5ad9f4525b8a783720bb4d6afa498820be 100644 GIT binary patch literal 2758 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 K=E{w%6aNL52FM)% literal 3398 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 RYu2JF@O1UrS-FFe`X3;H+vorQ literal 3407 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 diff --git a/gpu/internal/rendertest/refs/TestStrokedPathFlatMiter.png b/gpu/internal/rendertest/refs/TestStrokedPathFlatMiter.png index 7ad77e3ac26cbe3742bff59c286895561d5dcecc..ae6472a73c9cc76c361460884e8d42e5b8e16f60 100644 GIT binary patch delta 1579 zcmZXVZ&XqT0L335L?$)YCXzUH;b5t+9IZq z#>(>LmSc$~i6Uyo6L_q%v+cun&OP_T@0@!--uu|~rb`J4 z!~p=%8ud{J0AMX~n>VKB_fK6p`sEv0?q{H;+WNIAHSrs_1yBVP-(_FLetFh;%}uHI zS!aw`x#5~OEkNiU^6=^xN$t)X&B~Ckz70(F+2NoqU$bLd5Vf|ao36ckMa5W%wB~TK zO-`aK7xfsgNn>Gsjef3K{}X*~DiH4je(_o~zUveB^se1bqJ~Xz3(MRADQgHQv7wjn z4SnKMMpdDdWdzcx@VyA997ZdF|b(~doc)>{v~0F zI$>5sWqs!lN6!`+mbDY5K@?VObID1c{{rxTlUD~$=hX@93F27+i}cpgC~}W3Gb?60S){3ddxhhhaKm% zGVB2%7P}=zxuJUJL>StEV~&$n=wjI0HOpPr@>Ck~hae&@H~R@mIM8pY(L6lO(OM*I z6W<=Jw1{yjgiE0h2-}=S2>p*K4Z_H2lHR4^HKS_rF%?&fJ0Et35bqyK+VJV4GRkKR z9ks%orQEOK^bz%Yl|K)y5$B8~!g~qLv9EK{#!brYk(2UMg(>Q4)6Ij=Xqmp{1o-7D z8+eg&%wP9ig;{1p;G9vJ{P47ePH@{DT?CR3V|7W|MJ~o`oFN+8Ek4L` zZVJwn^xe0)8hvC8(&4@KiRL|`_ixGI^DYs?AqDny#?yKvODUWfUcuGmpWYJ6oRyQv zqGgeW?vo_rHf6)&E(h;g*vX5fi~&&FZe98e%aK9d4AjDQyCP3@fKt!xgrHPoAvXLM zx?`%;S+B6(bG@vPbY_nQ#YPN*Lv4%6Y}WUQZ~-BwD_|^^w@!!FE|#}6CqlD*?&o>} zveS_5ae1aO?pR_XLuCs8rq;Ey!6ujPoan@Q;KIA94ky^^lGB6F2ARk+T$8yIn(Ri% ztQLtk$P7C71fPAkU)_I|&ZEn7`=RqlWmhrb*Diea`nfY(mGowEK_xVzjn~?$+K$Hr z5mCxDfq7;75&MMfbD~FS=!xHCj`WOaH?1vhwTSMUpW-Vk9zpKm&TRToE!Z>irsL~< za7P&owFV2pmP7U?w{0GpPujant*1gNN0siab)WC2$G(%vk;tb(?8C zF*dUtd^B_mzO;Dkygl)>m+l8Amb;ldd(;sHU_Xd5tO))cj~P0|`X!9Y{e#u3szZBw zp=iF1X}SI_Z_NOfKzI?sV?Rjv{RiG*MWhQ~oC#W*zS;1C;XYjl+~+Om$v1khTZpvM zLT=hxAiV8m8nBN6Tqr_4njW{k+dghfiTL>EHvysiI%*Wc#uFfGkC(iUqfZrtALvX5 zlJ-D(v(X8}nN>6m^ITsQ4MZK;-`KUB3}geF7GGLD)2T)9WmLkgd&T4HdKQ?w1exIK zS2_0#e8!;46Q$tS$Jxjn#r$Y4uJP-u0)65OvdNYGiGz2g<(-KRz00GzUnghUCJ)`s z>79pKfdFhbqa_n0rwx3r=ou{;qGr5}DQK-j?6jFY^Va7)`SloieO)$R6a3Co-AJ)- zsYlUL{#>gVvL}mR(Mq6IiUzOlsz5sKC@K%~&n~G#RduBXy?ib|l~wI|$Npo;lQQU8 zYTfH^&5fT%ZxtX}xfYIJ{=-4``h><@Ki#yIc}$sWSv5LzGZ$J(I3cXQF41cXqVg}H z&eAbDwWFqa9ftY>gxo;=Mz8f^hdhN_i?Ut_#o)30BmnR8YI`Yv`QL{4BPepk(+?y2 SXM$hd0uUFIu=z$bTkt2|9~o-^ delta 2257 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 diff --git a/gpu/internal/rendertest/refs/TestStrokedPathFlatMiterInf.png b/gpu/internal/rendertest/refs/TestStrokedPathFlatMiterInf.png index 23a13c3b1013304c74b3b15320a9995aa346b9b8..d315f0f8161e098aeb2979d663358de4bd5054ab 100644 GIT binary patch literal 1573 zcma)+|2xwO0LMSmObcnE%~UF_Z>lX+D%)@^hPIXOVVg=6-Q0Cov}r^7;!d>aiHMfNg}pmA~uZ7#=czFJ^g;q^ZxR@-+#dCGKJ)Cy9l`m003KJz}|yj zn)9z0LcZjmxHuUASgMG7eM3`w)OXmI9O4l#@XY9hsPf2LnFW+^aMZqK_6L?YI))xb z`8qg3koQvqjPVqR@6jRx^nRve=HGGgFv6|h3d-3CtHN~;ZWM-_yr&y`)8>wp)Xsi9 zHajjoJbY)u>cS7&{;00uY43?fkLmHv3s;|C;!m(JjC=#@n)Gm(SQ+$H zc0Q)vt?0)r0(mN1Y26CvqSw*_#QCh%dcXgF=(*@`a@pQ{f9!D@N8ElD@>$()Z@x!m|U&*3YLcm?MPyMdsPz`5QVCuk7%I<>xgkgB<%+t`1( z2miSkQB^5*%sGK;Dml(?ao?v~FAdMMovAF5n}0CXf**&3PJ47X54uj_+}Re)rXez< zH&P;EcsvP$y^0tjyC;%mD(w+t3U3bnY;l()X3q;oH zQy+MrTao@6zPG)V3GK5yombL{hiZe2kItOgz}0(yM7JPS>6Sa1-OSZUSC&g3ny82& zxR(@4Fk`9ayDnq?8R=0XnLH`wb}8bjfyB?I&g{%GQbaP^5zN5@Z9D^9Fy8-a_GL-< z{0DI-y>87-hMt`8>dh^y9X843c?J*VgvS#itgYU_v~B1t#J7u#PlXk6jIj$fIdrlA ze1!9IqP*?XC+%>T>CK3L`NPPkJj35mRWSJlRXMElNQy8C1{+G@1dA$?ELL4;rmJNQ zK{kOoRMQZdEbAL6#6N6Swt=Y;$^ox&T5^h4!Mt0y5H}#dx`my+34eFgjKPlF9(pS; z>Ql2zMX8z=33`hz9pA_7LhH*-rdW7!MGHX+O(f;b&FYK>==)RCcF34IpIEl%TXU!` zJ2!Arda1oOZ{7~r02;{0H{HVqa~Le-yDHUVc3QhQkmF@f-6eTT~6q3`i)r{%=s7Q1!3~s zvKFE(q8aCFO4gsU-1#fFQ%7l0{!|xchru+TcV@D%e!>Gc!Cv?ey7%vj+GxdK#Pvep z)zoL&6%q1;4Mp?7^PXqX=n&4}$qyF#R!G9jcTd+|8x4CtXzHOT5y`|paJRh<&}GAP@(PYtKN$f{U*&kM^j&bN;yc<>KSv>*S}zT)?q zP8}QB#+>P`d$7`H1L(ZH&wrTx%G$4?!E5ZuGpt(%#2@^vr(%%=;XO delta 2261 zcmV;`2rBob4Av2l8Gix*002x}_M89!2%SkpK~#90?45sz6z3VozccUN9IPCcqns@X zQOF-QBo+Eclm;aE!ygbKL8XYbrj%m9{!t`{Gzf_aO+gS%Ac1Jp8oa91RIhh|wj2~% z!{riE4ME7|;1mlou|w@yR);icjxNuzR&y4%zu|*d3Sbh_qp%qd7pXS z*=09FL`cOan>&D{D+R!;6aceQ0LH4M6PN zHwr);-8Tn7Ox-sGKz!Xd0YI$X*B(IJ-PapH0^HXaKr-Cd6+mL#*AhUI+}964!ra#k zK=Rzz2|yy<*9JgR-PZ#^g5B2uK(gKE29S97SplT(OECdR-7ks*KKq()Q5&-4y6VPet_=Q;j#;OFch?I}0{s1c6 zCtyfd0GBOmApo^V`H1QaU@rIXkzY!-Ja7@%4}S>h`wHM);4B>x)_63S0nY=L>B8`Z}e2MD+o% zu=^1J{?{bca~lQz3Ooro(*1*ewVCr^A?ls-5piFRu9dD`qgP%jBPs+5F$S~)Ka#$G z7k@ZvSwjFhPT67pUp@5{ojy&&!-@kpAHeuHojgfPmqw=4q!53ztS4o)Sq2;fMgqGd z0Cw%7?rxfzVhP`50Io~t&(pKdMvB<15FY^>W!5(Xe*kVp%3T29jW_74ue|5sld%B4 z{gw_Kh?WuHOW>C>>mA@N%NnjM@c=DbMt?_+cvVXS83@32>En-S%^EL}LjZ092V~X@ z;5Wd3ZF`Q>`-&CR)<(B(asLk`nFiqQT{?KMP)3RXW`y_?k=aL=N~6SSl0$cfjq+we*G!-dQ@I=MKFp=?$Q_msYPX`76X7 zAzqag{|CUog>WNnsN>M_`FUxYv z+fdrMldfLnj`+c)9{}I|B7kWj4qKK0)&iHpi(4PS(W5ju$sO^cq#1y&u79w_ld{1F zu+4At!;9O;ANNiY=1V64pL`Owc)X!uFVF<+2JVE~P;anp8x0O}hg%zI1K`pndg!6R z;z?kytUNCPW1%+G+xG3F(NXSjYbHGa+`LIoKV9%wh?!#Lc?lQ~mmMMKop%iFcIJ}? z0H&sB_wGVVBSc<^w`8-w+kdjgB6a`NDO1+B)k^~a@4Z**DTVlp{LI!*fZGiXWp%&3 zo%gM)I*A*=g$tg)MF5}Kwj)2jQ1;fj5Onq|bDVV(>yLSkj$-fL;NCFNi>})U{4w&A zrpJ$C^Jb3tREYH#wcFZo?wmiICHk%F_5!CZ>xV?8V-6q2_U+L1vwx&D5Zm1A>kHZ* za-1`^Er6GSTzIY9+Dg;YY!NCE6M$UK>wJm;1~QqYz$#!Qe6eBUM!J2QCp?8>0`Tdl z)YKI8ovpIM{L`{ZJ&zF7+shN1T5+6&^Lf1ec5v@J(Yr*yvaDz9P%v$6cpWeAKz8~{$942GW(odsUDtd-&P-?tBqjSPWt zNI8Ik0lfL9KXifL%k=+gDEqO0Kc09(byR#(4xqa`81@nU8Q23n8czQgUQitptJDI> z3J12*f$K@M3IzVcO9O-`b@ z*|T_J!fj}HW_I=>FeF44fZql6_v4XA6a}M=6lUDe5T>U5;Z33*;OFwwwFRwRi-#Xp z7mPMi2;lnlV1IZ`PP^6N`t#g#39LVC00t$16=49$xbjmeg>T4I%zzfT42FMsZo>xe zOdteiX3*4x(NScxn4T^?>Nwth$MMGbeBns{A^)yF_D?5`jhL7y?TkDMlnw}<+21cj z;T081;S3lY42A>p_B-lcTVL@2_*%|@CE-gzNtHqX1Aha-@N0SN1T`VSQn(IiX~D>d zSJ@{fz6acp`?B&Q|9SZ>GLYkp95(_J@@`gs)rNnJD1OmNUT*%M=ZfR7f`jwLvA@$P z9vu9MDBk*qO)GPwD1|fN&YfU*LcRs>sC#XF#q+V0bwcEpEb&?qUyY5(nU{(r%St$T!r2v?f0$^4OfLSR3W~Bg_l>%T^3V>ND j0A{5CnDzev00960jorV`TfWw%00000NkvXXu0mjfSb$Lf diff --git a/gpu/internal/rendertest/refs/TestStrokedPathRoundRound.png b/gpu/internal/rendertest/refs/TestStrokedPathRoundRound.png index da3be5f08847d779921ad4e11d8b5177bf2794a2..8ef5a942f2c0f5ffe9ea7552135cd3abe085d95d 100644 GIT binary patch literal 2782 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�RRg-y=PAJm-tI%i*AxJM z4k3Wgjca0L78kesjL=A~_fmzDr_ss|M)yxiu7I=|FH2gWKkX!YZWV;B>@vU^PybWwAu!XESMf+zmwlC%CEtl%{pD;x=w+YT`gOeKLq zI<|b-WGh+4(3a;Jw8s0C^G6eDivHY=d?Ub(=qS9xZh%5n+l)PjbjVFrJ1bq7Y@bW! zv#^GDP}4?}{z?r#2&`tZ;NQBLa)81QoHsT$>Qe+*Iz%d*6jT`O===&esYGsYKpLoS ze33e49XZo07j}e4qD|URaEd!=O{w(JDxtj%;nxijzuRjfsIh7 zH_%U>QQuKIZfJfuX^(1ekKqwgvHc}#4g$V?9;)|KZSsrCY=Imuuo`-3Ecvxlja3kU z)J)EskV_sOvlmz;X8|3Z@5LEx9UD`W@xPiM7F2QfrAhb;V!)Ku2#ijHhH|s%_@gzn}+7qP^1~~x zPSfff0z`FykCW4?x^LQvJX;h{26_t3(X?6o(HH$b_eOr=cA)9<%8wr?N!@*sJ74k- z^sFu;1HkyVC@VhM*}FF=TASGRe+}tVZ-3|f=8fbM1@C;bSzNP{9ozwEQ|$RMrVk=^ z@WV3sp^PrI6<*@VMZPtv`^Ry*$ufK+;i~>q!TB-GYYfT0X=Qb5dIu=7DGF zh90sXdOCN$9M#%+y@Dgpo_$?(-+FLtc-Y13I;;!{j81g7ggnEwi^JgGZ}z1NMH2Dl z=F-MgYR4+GzV5p^0!rFye|0JAFuXZ>*I7AE3c%)FdoqB{*vS<*bD~n*+eH4Yb{++V zFVrCq{k(lm|T+Qx0wjKVa^2eUkWjO-g>Lt0-Q{KMnZ$Qr&&8(8sy zf4f$W%Dirt&{5LR3QHCUe`9BQ&Mq3k*tVClMfdi_ueL8m;b`%jfkCY4su6)zdlHef4HB&M_fIc8VK+3t1R8n}a>Ook%0MZbOG^seC^Xa1Fn`BjA%vtlKM zwBP5Zx*7F7;<9SW9yHT7n?L@|gr8Iu_xn%HGhp9 zdHv^BO<+7oCS6$)hJY3`QR1w3DC1Hl%zersnuYvX zn^F?0^BX;*`0Im_8dH+sS_i?Gm3ME_hkQ%Q@ES!_f$+)xf1|+O8Y3F&&j-iHBXu}e zK+w}oV+Vgi7b3#s?7r^3U!|OXN^d-Ipp)w#|76XzXbNI=zbPpVp~Pf2czZw2g$D!_ zObncV-O5VT4d?w#A!myCYY{FH5z084VAEL8t*{Kg{uDtIZlI(=|I$jXD%bl18Ks7~ zTBzqsE`W}h^J>-nOm`yHuRgM=63hlQ;F;PSJyYLkGb9~ndwn82>fKRR!T|)p<_f^J kATJ#MCw1(#pQNKdf69g8uhfg~Pn-+@+StOV$`Bv-A9}_=ZvX%Q diff --git a/gpu/internal/rendertest/refs/TestStrokedPathZeroWidth.png b/gpu/internal/rendertest/refs/TestStrokedPathZeroWidth.png index 1d47f68d3c090f477fc6c20ac3dfee0effab06e0..0fc6fe8761ea4b068c587d2d7eefba6671170c55 100644 GIT binary patch literal 119 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H0wgodS2_SGJ5LwKkcwMxFBmd1FmN2+@Y9@E suI$5vD~`fINf>Alf2P0;;~>#1bbFYR=c?^y2nGpyy85}Sb4q9e0IGW!F#rGn literal 390 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1SEZ8zRh7^VD$BLaSW-L^XAS*UM52U*1$cx z{#kGHVRvBI^WfQ1zc8u4SFT$=7fk=cSRT%>h9QD+15*O)0j>s725p8g>I>|SvtPgU zU+Kx^X=(4*uKzJhtYL4YgZ!+&QQWk%lR6&x#>2qy|Nl&FF2>_!GCjcXW$<+Mb6Mw< G&;$UK+-+w7 diff --git a/gpu/internal/rendertest/refs/TestTexturedStroke.png b/gpu/internal/rendertest/refs/TestTexturedStroke.png index c7f944317187b3625a9f63b400daa94c6d5552b3..637c93294a8284b771fee032ee2368d5662cef83 100644 GIT binary patch literal 390 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7xzrVD$BLaSW-r_4bZ!-XRBphKo>c#>-*nc)z)|Z+5?6S@D z)XzWnWIunOy~VKfOp5%%Uk{Hb{o-YQ5#Jww>R{X>yPw6o80?PCR8VM`Wzmpjf1CY+ z5c`EU>AxAO9x?3t%hBK)TXp$*^ovUgdPh1K1Q^Wu6TUv?a$sN*XkcJbU|{4xVk%sl zD&Bm}eqFaCHd&~`2|5h_xpxHDiRwT#A6U!=wDQ6Ghm4F@jxg?Uba7w^e#9_OCnNj! zChNNsG~*f8FWvK2M?h%&-M9iXHEsZhAAvqywAX(^ObMIe<9CT RVdYIAc~4hAmvv4FO#tb{gC+m~ literal 732 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1SEZ8zRh7^U|Q_y;uumf=gl2QFX>#FhL8Vi zl;ackIEv@RNSq0~Aicx$z{$>>^1WwN1k7!l6xO+UD~$+Dig&s%Nw z$2w2?f8cUuWxCMj>n6S(pXF;AcAsM~U_QXZV9aoaMvU8w`4e1Yk5|Zqikh4I|KE4! zUftQJV)kaA-qiZp&FSHDf0}vI`o&hOYvq%ce$Lhm4=*ef>~4*!?Vf6tVzWRZ~VYgl*y#M1EhPS7wYj@4qUV&D7n=a$o*mosH#OD#X7 za>jP>o?|PQf4}N=)+d9Vf9rn#2-tV_^|p#jo0ot2-T(jNX`?F7KU1@e#FMPGr>bV8 mqk9DIBPuYy88a~a|G!{m)0;_$=Sc!nErX}4pUXO@geCy>j3F@q diff --git a/gpu/internal/rendertest/refs/TestTexturedStrokeClipped.png b/gpu/internal/rendertest/refs/TestTexturedStrokeClipped.png index c7f944317187b3625a9f63b400daa94c6d5552b3..637c93294a8284b771fee032ee2368d5662cef83 100644 GIT binary patch literal 390 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7xzrVD$BLaSW-r_4bZ!-XRBphKo>c#>-*nc)z)|Z+5?6S@D z)XzWnWIunOy~VKfOp5%%Uk{Hb{o-YQ5#Jww>R{X>yPw6o80?PCR8VM`Wzmpjf1CY+ z5c`EU>AxAO9x?3t%hBK)TXp$*^ovUgdPh1K1Q^Wu6TUv?a$sN*XkcJbU|{4xVk%sl zD&Bm}eqFaCHd&~`2|5h_xpxHDiRwT#A6U!=wDQ6Ghm4F@jxg?Uba7w^e#9_OCnNj! zChNNsG~*f8FWvK2M?h%&-M9iXHEsZhAAvqywAX(^ObMIe<9CT RVdYIAc~4hAmvv4FO#tb{gC+m~ literal 732 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1SEZ8zRh7^U|Q_y;uumf=gl2QFX>#FhL8Vi zl;ackIEv@RNSq0~Aicx$z{$>>^1WwN1k7!l6xO+UD~$+Dig&s%Nw z$2w2?f8cUuWxCMj>n6S(pXF;AcAsM~U_QXZV9aoaMvU8w`4e1Yk5|Zqikh4I|KE4! zUftQJV)kaA-qiZp&FSHDf0}vI`o&hOYvq%ce$Lhm4=*ef>~4*!?Vf6tVzWRZ~VYgl*y#M1EhPS7wYj@4qUV&D7n=a$o*mosH#OD#X7 za>jP>o?|PQf4}N=)+d9Vf9rn#2-tV_^|p#jo0ot2-T(jNX`?F7KU1@e#FMPGr>bV8 mqk9DIBPuYy88a~a|G!{m)0;_$=Sc!nErX}4pUXO@geCy>j3F@q diff --git a/gpu/internal/rendertest/refs/TestTransformMacro.png b/gpu/internal/rendertest/refs/TestTransformMacro.png index 07570593132d2989da68a6ba5826a9c922e89c19..a9cce29f429254a6b654cffeac6b21c695a64cc8 100644 GIT binary patch literal 219 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSi#%N%Ln>~)y>*b6!GME#*xM3Jhg0Y~q-*!_43UEFjtcS$|k=K@@=b iOid@D`> literal 375 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1SEZ8zRh7^V6^jeaSW-L^XB$O-Ub5!7DtD7 z`=2gnPT$a&9;7}kO#EN*L?Hz=2cL!+42FzJOh;HcI0b|iwx#{9`TuQVa3s2f8bkVK zRHYbt@e8b-`FE+o{Y?~^0dgUJTd1L8FCzoP|NqZpSQ)r3Nk;+$l)=;0&t;ucLK6Ub CjAq^d diff --git a/gpu/internal/rendertest/refs/TestTransformOrder.png b/gpu/internal/rendertest/refs/TestTransformOrder.png index 27c91fb0fdaef6bce02a091a66c5bb4031962e5e..720ca3c702f872d89276bb5c415f01b305feafe8 100644 GIT binary patch literal 252 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRRo-U3d6}R4Aa^zxA;9zik{lDJq z1@}Y8*#~zokY)rbfPs>&tHhtk%E^WNTKx7%y>J7A00WZ)0|x`60s{-(ISdGpFppV| VooT@>)16;Hf}XB^F6*2UngH+7E9?LO literal 384 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1SEZ8zRh7^V08C%aSW-L^XBeF&I1ZO3>TyB z)Ti!tc@VhA+(Dr459iJ2bJWkRmM_@Nl)!p`t3i}On<0#04MPOu2D}0}{k~DzIal;~ z{w~jA#;=sHVf0av^KRaU3$=G|Z($_lIW+ftV`X6Y|NrGK4yNOcq04|F%i!ti=d#Wz Gp$P!N)oXwN diff --git a/gpu/internal/rendertest/render_test.go b/gpu/internal/rendertest/render_test.go index 3e027eb3..027dfc61 100644 --- a/gpu/internal/rendertest/render_test.go +++ b/gpu/internal/rendertest/render_test.go @@ -56,7 +56,7 @@ func TestTransformMacro(t *testing.T) { }, func(r result) { r.expect(5, 15, colornames.Red) r.expect(15, 15, colornames.Black) - r.expect(11, 51, colornames.White) + r.expect(11, 51, transparent) }) } @@ -80,7 +80,7 @@ func TestRepeatedPaintsZ(t *testing.T) { }, func(r result) { r.expect(5, 5, colornames.Red) r.expect(11, 15, colornames.Black) - r.expect(11, 51, colornames.White) + r.expect(11, 51, transparent) }) } @@ -99,7 +99,7 @@ func TestNoClipFromPaint(t *testing.T) { r.expect(1, 1, colornames.Black) r.expect(20, 20, colornames.Black) r.expect(49, 49, colornames.Black) - r.expect(51, 51, colornames.White) + r.expect(51, 51, transparent) }) } @@ -197,16 +197,16 @@ func TestBuildOffscreen(t *testing.T) { func(ops *op.Ops) { draw(-100, ops) }, func(r result) { - r.expect(5, 5, colornames.White) - r.expect(20, 20, colornames.White) + r.expect(5, 5, transparent) + r.expect(20, 20, transparent) }), frame( func(ops *op.Ops) { draw(0, ops) }, func(r result) { - r.expect(2, 2, colornames.White) + r.expect(2, 2, transparent) r.expect(20, 20, colornames.Black) - r.expect(38, 38, colornames.White) + r.expect(38, 38, transparent) })) } @@ -216,10 +216,10 @@ func TestNegativeOverlaps(t *testing.T) { clip.Rect(image.Rect(0, 120, 100, 122)).Add(ops) paint.PaintOp{}.Add(ops) }, func(r result) { - r.expect(60, 60, colornames.White) - r.expect(60, 110, colornames.White) - r.expect(60, 120, colornames.White) - r.expect(60, 122, colornames.White) + r.expect(60, 60, transparent) + r.expect(60, 110, transparent) + r.expect(60, 120, transparent) + r.expect(60, 122, transparent) }) } diff --git a/gpu/internal/rendertest/transform_test.go b/gpu/internal/rendertest/transform_test.go index 286ab677..43364b86 100644 --- a/gpu/internal/rendertest/transform_test.go +++ b/gpu/internal/rendertest/transform_test.go @@ -18,10 +18,10 @@ func TestPaintOffset(t *testing.T) { op.Offset(f32.Pt(10, 20)).Add(o) paint.FillShape(o, red, clip.Rect(image.Rect(0, 0, 50, 50)).Op()) }, func(r result) { - r.expect(0, 0, colornames.White) + r.expect(0, 0, transparent) r.expect(59, 30, colornames.Red) - r.expect(60, 30, colornames.White) - r.expect(10, 70, colornames.White) + r.expect(60, 30, transparent) + r.expect(10, 70, transparent) }) } @@ -33,8 +33,8 @@ func TestPaintRotate(t *testing.T) { }, func(r result) { r.expect(40, 40, colornames.Red) r.expect(50, 19, colornames.Red) - r.expect(59, 19, colornames.White) - r.expect(21, 21, colornames.White) + r.expect(59, 19, transparent) + r.expect(21, 21, transparent) }) } @@ -44,7 +44,7 @@ func TestPaintShear(t *testing.T) { op.Affine(a).Add(o) paint.FillShape(o, red, clip.Rect(image.Rect(0, 0, 40, 40)).Op()) }, func(r result) { - r.expect(10, 30, colornames.White) + r.expect(10, 30, transparent) }) } @@ -54,10 +54,10 @@ func TestClipPaintOffset(t *testing.T) { op.Offset(f32.Pt(20, 20)).Add(o) paint.FillShape(o, red, clip.Rect(image.Rect(0, 0, 100, 100)).Op()) }, func(r result) { - r.expect(0, 0, colornames.White) - r.expect(19, 19, colornames.White) + r.expect(0, 0, transparent) + r.expect(19, 19, transparent) r.expect(20, 20, colornames.Red) - r.expect(30, 30, colornames.White) + r.expect(30, 30, transparent) }) } @@ -67,11 +67,11 @@ func TestClipOffset(t *testing.T) { clip.RRect{Rect: f32.Rect(10, 10, 30, 30)}.Add(o) paint.FillShape(o, red, clip.Rect(image.Rect(0, 0, 100, 100)).Op()) }, func(r result) { - r.expect(0, 0, colornames.White) - r.expect(29, 29, colornames.White) + r.expect(0, 0, transparent) + r.expect(29, 29, transparent) r.expect(30, 30, colornames.Red) r.expect(49, 49, colornames.Red) - r.expect(50, 50, colornames.White) + r.expect(50, 50, transparent) }) } @@ -82,10 +82,10 @@ func TestClipScale(t *testing.T) { clip.RRect{Rect: f32.Rect(10, 10, 20, 20)}.Add(o) paint.FillShape(o, red, clip.Rect(image.Rect(0, 0, 1000, 1000)).Op()) }, func(r result) { - r.expect(19+10, 19+10, colornames.White) + r.expect(19+10, 19+10, transparent) r.expect(20+10, 20+10, colornames.Red) r.expect(39+10, 39+10, colornames.Red) - r.expect(40+10, 40+10, colornames.White) + r.expect(40+10, 40+10, transparent) }) } @@ -95,9 +95,9 @@ func TestClipRotate(t *testing.T) { clip.RRect{Rect: f32.Rect(30, 30, 50, 50)}.Add(o) paint.FillShape(o, red, clip.Rect(image.Rect(0, 40, 100, 100)).Op()) }, func(r result) { - r.expect(39, 39, colornames.White) + r.expect(39, 39, transparent) r.expect(41, 41, colornames.Red) - r.expect(50, 50, colornames.White) + r.expect(50, 50, transparent) }) } @@ -108,8 +108,8 @@ func TestOffsetTexture(t *testing.T) { scale(50.0/512, 50.0/512).Add(o) paint.PaintOp{}.Add(o) }, func(r result) { - r.expect(14, 20, colornames.White) - r.expect(66, 20, colornames.White) + r.expect(14, 20, transparent) + r.expect(66, 20, transparent) r.expect(16, 64, colornames.Green) r.expect(64, 16, colornames.Green) }) @@ -124,7 +124,7 @@ func TestOffsetScaleTexture(t *testing.T) { paint.PaintOp{}.Add(o) }, func(r result) { r.expect(114, 64, colornames.Blue) - r.expect(116, 64, colornames.White) + r.expect(116, 64, transparent) }) } @@ -152,7 +152,7 @@ func TestRotateClipTexture(t *testing.T) { scale(60.0/512, 60.0/512).Add(o) paint.PaintOp{}.Add(o) }, func(r result) { - r.expect(0, 0, colornames.White) + r.expect(0, 0, transparent) r.expect(37, 39, colornames.Green) r.expect(36, 39, colornames.Green) r.expect(35, 39, colornames.Green) @@ -174,7 +174,7 @@ func TestComplicatedTransform(t *testing.T) { scale(50.0/512, 50.0/512).Add(o) paint.PaintOp{}.Add(o) }, func(r result) { - r.expect(20, 5, colornames.White) + r.expect(20, 5, transparent) }) } @@ -192,9 +192,9 @@ func TestTransformOrder(t *testing.T) { paint.FillShape(o, red, clip.Rect(image.Rect(0, 0, 20, 20)).Op()) }, func(r result) { // centered and with radius 40 - r.expect(64-41, 64, colornames.White) + r.expect(64-41, 64, transparent) r.expect(64-39, 64, colornames.Red) r.expect(64+39, 64, colornames.Red) - r.expect(64+41, 64, colornames.White) + r.expect(64+41, 64, transparent) }) } diff --git a/gpu/internal/rendertest/util_test.go b/gpu/internal/rendertest/util_test.go index 812963f0..6c5b9731 100644 --- a/gpu/internal/rendertest/util_test.go +++ b/gpu/internal/rendertest/util_test.go @@ -31,12 +31,13 @@ var ( ) var ( - red = f32color.RGBAToNRGBA(colornames.Red) - green = f32color.RGBAToNRGBA(colornames.Green) - blue = f32color.RGBAToNRGBA(colornames.Blue) - magenta = f32color.RGBAToNRGBA(colornames.Magenta) - black = f32color.RGBAToNRGBA(colornames.Black) - white = f32color.RGBAToNRGBA(colornames.White) + red = f32color.RGBAToNRGBA(colornames.Red) + green = f32color.RGBAToNRGBA(colornames.Green) + blue = f32color.RGBAToNRGBA(colornames.Blue) + magenta = f32color.RGBAToNRGBA(colornames.Magenta) + black = f32color.RGBAToNRGBA(colornames.Black) + white = f32color.RGBAToNRGBA(colornames.White) + transparent = color.RGBA{} ) func init() { @@ -163,21 +164,32 @@ func verifyRef(t *testing.T, img *image.RGBA, frame int) (ok bool) { t.Error("could not decode ref:", err) return } - ref, ok := r.(*image.RGBA) - if !ok { - t.Errorf("image is a %T, expected *image.RGBA", r) - return - } - if len(ref.Pix) != len(img.Pix) { - t.Error("not equal to ref (len)") + if img.Bounds() != r.Bounds() { + t.Errorf("reference image is %v, expected %v", r.Bounds(), img.Bounds()) return false } + var ref *image.RGBA + switch r := r.(type) { + case *image.RGBA: + ref = r + case *image.NRGBA: + ref = image.NewRGBA(r.Bounds()) + bnd := r.Bounds() + for x := bnd.Min.X; x < bnd.Max.X; x++ { + for y := bnd.Min.Y; y < bnd.Max.Y; y++ { + ref.SetRGBA(x, y, f32color.NRGBAToRGBA(r.NRGBAAt(x, y))) + } + } + default: + t.Fatalf("reference image is a %T, expected *image.NRGBA or *image.RGBA", r) + } bnd := img.Bounds() for x := bnd.Min.X; x < bnd.Max.X; x++ { for y := bnd.Min.Y; y < bnd.Max.Y; y++ { - c1, c2 := ref.RGBAAt(x, y), img.RGBAAt(x, y) - if !colorsClose(c1, c2) { - t.Error("not equal to ref at", x, y, " ", c1, c2) + exp := ref.RGBAAt(x, y) + got := img.RGBAAt(x, y) + if !colorsClose(exp, got) { + t.Error("not equal to ref at", x, y, " ", got, exp) return false } } @@ -230,6 +242,7 @@ func yiqEqApprox(c1, c2 color.RGBA, d2 float64) bool { } func (r result) expect(x, y int, col color.RGBA) { + r.t.Helper() if r.img == nil { return } @@ -244,9 +257,17 @@ type result struct { img *image.RGBA } -func saveImage(file string, img image.Image) error { +func saveImage(file string, img *image.RGBA) error { + // Only NRGBA images are losslessly encoded by png.Encode. + nrgba := image.NewNRGBA(img.Bounds()) + bnd := img.Bounds() + for x := bnd.Min.X; x < bnd.Max.X; x++ { + for y := bnd.Min.Y; y < bnd.Max.Y; y++ { + nrgba.SetNRGBA(x, y, f32color.RGBAToNRGBA(img.RGBAAt(x, y))) + } + } var buf bytes.Buffer - if err := png.Encode(&buf, img); err != nil { + if err := png.Encode(&buf, nrgba); err != nil { return err } return ioutil.WriteFile(file, buf.Bytes(), 0666)