From dcdd35e0b879b852afdf127d425f80ee697d3b46 Mon Sep 17 00:00:00 2001 From: Raph Levien Date: Sat, 2 May 2020 09:50:36 -0700 Subject: [PATCH] Implement solid color cmd Avoids empty fill segment list, which was a minor bug. Also increase tolerance to 0.25 to juice performance. --- piet-gpu/shader/kernel2f.spv | Bin 21220 -> 21048 bytes piet-gpu/shader/kernel3.comp | 8 +++++++- piet-gpu/shader/kernel3.spv | Bin 24976 -> 26532 bytes piet-gpu/shader/kernel4.comp | 5 +++++ piet-gpu/shader/kernel4.spv | Bin 19572 -> 20832 bytes piet-gpu/src/render_ctx.rs | 2 +- 6 files changed, 13 insertions(+), 2 deletions(-) diff --git a/piet-gpu/shader/kernel2f.spv b/piet-gpu/shader/kernel2f.spv index 960741ee7a3b86336e30a2b0921c73e671476087..36e7b9475cc5d71b962abffe64ffda55eb72107c 100644 GIT binary patch delta 4543 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 delta 4702 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 VVD;b7jA3on{P%5BH~XBA{|8p;_f7x+ literal 24976 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

TD_Gnd@){QDE{TlY2h*^$`vDfi?k zH1&L291T|U@5vK)3^;L)BiFAS$MNL(yBz->B>Qt5zV46n@ZB&AuI3f(_(sEROgo{` z+^hNgnNSztL^R{|*Y17kpFe3k39fxMEoW>F*qk=)%UQQ$=})F>$$@N08`Lwwvr_ieYM$-neK|OJwI_BpSetoWYk6$10GD|$ zhpVljCGQpBz>JDy9Vsq_-8FXo35p)#eN;wImUiHSS{aIuLK*T?!MnZ zeuHv=aF;vIe{t@W&A?mIyf&wKuWU-c1k?uMu4Tj7r5 z8f9K@1gq!XcoSGH^RfoD_}>Or%e`?sSgpJ_-U82=(4N>kz}j42=OT~oZQwHR+u>^E zz3~os@@h})JHgt_>zc@8yAxdIy$h~Z-WzwrlUI9U?*VHwuWKuh?LA=UkhOg;*!9l& zlj{@z_kpb~=kNVswVb~XfQ`@jlk1cC4}z^B<9!IMfA&ePkN%#q57V@J{=_+d+k$tX zd2L7Y{P}O`wx@aicBIew`xv-9fA_WV``h@J3jQGYp@ygCkHa0OJb#~ntLOZE60DYa zS%X^E;ZtC>oWDl6QPfUV8* zw+;O_X==tlO#cYY_?$nvK8gPp*cvk4x54^npXB=J?-~0JO}pn$obxvoybH~1Cz|JP z3jNMB&)=@}Ie(9W%k%fcfJ+VIlYjgdrRUX?-QwMT)*EG{14!#8=jhe2{%u4M$gc+yME%V-z4z==$KTM@vmSp3tGOQeP4o|N=BGV#_$OGKHHlNx2H=BfUI)@r(?MWs zI)vUmU6;OVLcOP{(T^#5z-kj|e#3euI>G9$wK?T}2V2V|@J96N)+$e} z+oB&%^E$NE>h(JeY^_JoTdVJs4T*EC)Vf|P&)T)FkEWhlHvp@p)~$)33|F^SbIPsN zS~ddj(2QlR^3>{k@MxOXk+iJqQDAF5rls@eWb|7SSJt{IT)%Q%H$ziTt($|@QtKx8 zZvj`gR&&a&)mpX!Z`q7xt@6}56@4bn>sVT9odLGid$Yg> zsdYQBT55eR{@cUVt<{`zYn_U1NANE6>eebxt=?ZJ(7a~RQtROE$@k849k!^fN!A}66*zlbHJ>ia9&V4U5^*m4Z2CFT>&$(KYTAm>X zfYq{A2ZGgx@z3+;Ao%_?$I+hHgTdO&>)hnA9SSb<9tKw{fBzf~PhRbbJp!!FysnWv zwxhsh-lO4aFD>dl2A;gy6MHOJn|WPpd2BPmW!~f9YHNzTv*5|AJ+a4wwVBsFlgBn2 z?Aqja`bl85*yn(qW9%n`)$(n63fLHR_x%RynG5zTxF3!w*DpDr2X=nRc`8^f_IY6I zjD0>>En}VrHby;To(^`*o0>7@`kB*vVnJi~ei7$>nXirJbsEk4Wgh+MH1C(^)93y; zgShg3Ij4?(cI@V=+CCP&o89UJ`WOC z?(;|+e@Po(-Nvsd__g5c8lE*6f;(<`4u;Xxa}HhvR?9iCCbg{7#bC9ZgH>R)@*G?O zzli2I+7tU?ur~M0xyfU@6kO(gDO{~Q2QPysulB^g9IVZ}u8};p%fMycSHRWE=i(Z8 z@@h})CG_P)&_ser4xfwXvR3Z~s~PXU Xya#N2_F1lv@$Th&8@u}~cAx(j&fb}+ literal 19572 zcmZ{r34m5r-NrA@fGCK9JBos+;D-CYfvC8kptzQX!^{99!_qJ)mTQRGu4!qDEt)M_ zrj|>lmZni!R<>xXnw4d{mTTqr`@QddW)Ab^&GVh-dH&1!pL5T>_q>i@%Npa?tg1oP zQ2w`fOVzkWR%@VC)v#(vqn|c?*7QkBdpjoWvF9#2jHsH9`m9^6Sq-Ldr7djhT0~b} ziQ&_<^@vv=Nn5XO#4(j3U$SKO(%y5rJ7;%yE$W=z z(bd!0-rIFnr+z~Vzph2?-OD;khrxK1H4J8KCRR;d*fF)Mr@g!L_|Cad)WHp1ym;>1 zrJcPM%3$VN_||@EUhSQWdOLfXv1-ntr>&!F*;2J3jacW?GjC4Y?Doaoi}4*?4QHK- zoU?m6+d3vL?d@6C-n&y-)lSQH-F1KbTdH-;L7CR>df_#zw`cK!vUYW^vi4E%K3}kN zRP$QeIggR&HtJNf_W5nyb7!C3)zLe@S-<-Ks((ZDzPtnL@2jl8{tfVN)<3w~xEXtR zS9f<~<*iB0tH1WvYBZcN^lQ{D_bTgFv+g-Hx`$O`(CeH7tFG(m zuX%HPQ}dS1xTBUWT+&ywnpau#I5_$BYt$_FTGV-VW3AmyTf=Lgfi=|m`)e4FZ?lHh zYTIU9-}rK`{_)qUwuh5@c5mCfVnY$qOxf5=+u_s9Ijovg`!^qif#s|ow^I?fTOH@3 zy>XO#y`|cr^w~Mcis77CKAQzkbIOlNyifkI!@( zW2<}h*Epn_1+R0iwvOsvSx5Qm>o}r139XF%UxlWCay?HZu32kKbt<@Px%Z{Dnyub; z_AYb{-bO#Ox4rw2Wz9Vx_gaEx@4aaka2bClJ@GzH4erYh?xWb?XEpimP2N(S2Uyy$ zwN&q?PaRi+%Q~)U^1i&+HhG=5rMe!TJU4@r=eDL_-+boBTB;}d{93E$z)RYC+7{Bg2G0-RuMXgAa1;CeTdE=OjI%blf8IPP@Oqzn3mSV! z&1-4%oxzwb)reYi{PmkT`sTPvlh<=>t;RI@?&dIdJUnyW9h_SBZu<4D-2qKr=WVGD zDdLVU;%2NCH@G?uUhmO*4nrE6h?j`fv zYW@s-F2^d4dyU-B!#UV-P;2IT0p34WOZ6hWgT3c^ysR&0vUWcVjoGUYZX9I#^m?2@ z9B#@yt?;gT{_BFh?apoVYJP*O&Ebvn^I4sZSBpMdp>-@-?Cm9{rJ4x$W1{T@u=}WK zYpqU%_m9gyg12#eZQ9qYPOJUhcjZK!M+de(xz69YTE3QQK0NbS+VpSKaqenTk0(uYfnd%dORA;Iq3Hbu2!+IiG9b&H1!cH-MKjQ|ETOcwzH*iTu6>Z{uy$t`mwZ)iCddqZk{c;ca9Uy_;L6Qr&l+Rx!0pl?vY^gsu@43wwW{W>x0$xHQwJ< ziQfclyqfcHj$>(qXy$W`^;J*4&A{r$n$O=n$u|~kJ~eIQ=o9A}%g55RZA+iH31H*Y zob$xmrY_%+-ZcpK<6;frdw`u|_ Ak~@~?`;2uUcuktx7UcF^@0!~j>tK2{{fwPT zpIE;q#;O_XSzDXj*u&}7^fUG-`ota$Hdf8p>Gb8e$H3L}Gxj+8#2ybeR?XO1wN380 zC(x_uHx_;hz5d4U0QdgAiRKl4I@oEa?AX@x;!1{zQ2e;6SKbPLRz1Q*;HFup-_e!w&v|m=+o6l5hbzRNf3)=6m zxqC&vs^-mo-da6g^Kta4=UK4tQr9K#Lf6H2p4>d^&^re;*G2AoPfhz)VCUgJl256* zd&9hWCpPXgHo1Ps)0@Nhp?T%L|B`ne*u3r&{V%Dx_ulu(6>!%)>-hmV|1@;-$$fvS z8Gluc%lmaT+J)G&9v|141u_4p!1|`1>)_U-p8UR#`KJ-@efff`E}E$k3ZSq z7ar`mPlFxTd+*x(2JX1(iGK+^alxWv<*vgh7Q*+k+c+;?&O?}6XD_a%GAe+ZM> z0K4N21Dhk`4Tn3Pdg9jySJeemlYet~Io>vK-^1>yeD~Z_e&6KIV|#k? zbxnesIDAjI^VpFJuVBu81J!Ik&wFw2jJI|#EXA6Z!5U@J+H?;0q&VS-1o>M1=s%Fg8Sa^%pQNa=k{>#{WAr>4*T;3 zH{S~dH{Nr5;tz#;b`PHdcEQ564=VU7xaalQx5D2ud$`{s&+Xx^kLUK1du9)}9?$II z_rpE6hfjceZV%Vrb9=bo5zp=6zGpnEhimto9=;0hIX&F>lxOvDziFP=!>!-*ddWSn zm)tXZ$vv}|+;e-l^?P=Su6|)1_ffF1>Id=k`K+nM z|5~tG#`y$T&3E}sYT1_Dp9HHL@3Sd4-sk-Wn(y%$%*c29XKGE|%g#8TVQt3g_c@x{ z61ea7&)1s1KHqYEwcP|(TgjZ{UjnQ7J<#9hUoHM$2CL2BMdi2PD>OBmmz~X6-xbo-glGzi;R6I{arLK?O(0!_OD|1n{o$DKjXyK;F{eBcC8%4_lH%8SB0N23YMz{QY*_PgCHK`}>Ltyio<6(NQ*Em6` z%ay*x|M6YDik@v+eVcwL{defiuRU}89yoLKohf&Yp2;2sPoh_Mj=p2njP)M=0PH=z zsJ^E^0;~Bgc7LzH=f_~!&`Pl~Q{O%s+f1n|99P#!pTWj2FMR$2SNBbTHzCZp;|2oY}`+sV?y>**w4HnoO z=JGo)x9-ERwSbSHSJzI8h9>q5V2$P-40c?5$6b?tD9uazTD9HYaXo*o4K~NQaOXG- ztd?~c4tBh99oB)X-$H$NQ}YP0aq7N{<4BzK+t-L)Bb3cb2^&r?mU`5qbr zSIfJ?_tzG1b?3JNzGdx``ROwjO+D|babV-r9mjK-nse2EJh*%(ZVgv^jCIR6+rX`* z9A{g&dd8UmHdftnJnyMxobAAl9lkwSpR1UQ&+HChebnQ#Be;y&spg591lLFXvO3Ss zU~_59yKxsV(`mdLwU_Tk&!O5K(>itq`+TN`-QcM~`|faK-p6>Z-yUFn)DyEO*tunG z_5$mtp6|upU~4*rrhPbP8T0Q`>)U{>ML*ZmnzZ?B`JB1e?H$uSx-Zy0>wc8)2Uc_c z7_UvOe0F_iyvK*)vp<-Wef!P#!~t-1<9&|g#`}J8eEU3W2VxuetQ~}=eiLK(>>dnO z>m;|&uH5&Q?=17#C*Ndjz7xxD)D$%Je4`El<5EqgY0EciDp;G1H&{j2@S|(Y#qWnc zj^%gxP_Sd=S@S*|hNgZIKJvrCYJQuuSEj+eFZnJX0oPAGd+$gvE{(mXz1(|GV9;(p zzePuZZ=;v{tvniDek-TL)ofn4H0G9ijzKqP=5;K5;J0!HntHyKGr`8G=UaK4xM=xS z9*^djp0TXedh~UFShsffN4}MwbbIk>t!(5&8a_8#52b%}>@AT^0JLuKK^XaY8yj@_&wRhYF z^xZTs?F(zWz2mwji@@f{H)=6hE$grZ?0DrmycMpV?`sd(ICY;<`I$7ww;plw^@5#e znQs|fJ>SK%z-pstsq<{Gb>{oJ9J~QdJ++?$R!^R{fz74vJv)l|z8$RY+MP=;cb)zB zkLQ8??>5x6FQr$rcE6n$fYnmF@A3=b>eea02<*2p@9}rQ^-(wH`SfbZc`?|W*{9}M z30F_fOTcB$OZBIzn{x%dnmK(py%X#>`JL`we-~UmKJNw_SNgmMu0E4I*707jaq7|D z2ljnri}rpre>d2C?v1@14cd5zna4Q&toJf{?WyGou$u39=WM+nfUC#n%G#%__bN2? zJE+%h#RtL0sr%dUYI-mCq_z*y)ZCNetnY`xj-RnU0v@=2A4OBooIeIuv*li23pSUw zpF&g5cj7v*aq6kzda%09vyAKhX|Q!@bFHtTSIbzR0XtT? z)}Mu|$LDikYc7304_A-RjbL+^J~zSD^BwyF*gfF8-!aUgPjY+_Jg}CV(bVJfCGfyn zZb4Iz&#hoNsSY8m_M;DPmh15G_X_t!pUeGj0i zr-pBWt#2aDcZ$)3uyN{Hi{FABPg}zMHGQpDo0?~ttLc4@+snIaZf`!%HqV0R)AIY~4`8*G*vzL*tvov|fIBz;9`HwS z2Tgx-dQN)|u5SEk^m60d>8;1!c+Zf30_&6Wf@jD-!`1Wq<}YA1*Vylr{0!P0n)&RL z@2}t!Xyxylzroe>`{wUppNq*fZTWrk53n}d8~wh~C->rcuF9?tRYh6#qT5wfQ^61KY$MxUO=N^v0*R^mSzPr|it9eCRuhwwu(?-^sOEZ&yXW{SEQE0~Nuibs) zzaP=I0bIL(E6%>&5NuAH_JypQe^=g!rp@{I_bYkky9rp$XUjRb_M5`h<1@PU$@@#6 z&Ct{ztnb$tu$q6XeyG;A0Gmr&a%~BAyq;pbv2gX|8V6R}fW=6zt>EUdCb&Sk1qgC)Wh9`Lwwv{tZtpd3OX~&mxxd-3d+I-&T&ZGg!^Pp(kz^uyN&D z?uw?KJ+~X!SoN&;?qF+}Lgsno-UIC4>fO8gTcetO|KaZLL-TL({%vLi&1*PqZ~TVR z`~M^4^RO;`{w{wixcs}N{|$P{&m6#)4B-AZGVFQb1a&G?lxRRYa((n4M*kj~_W!c~#d%gn zfj6Xitxxk=8AMXfL}9!Ut93&z}MG2HD3;Q9M>rGx&o}8 zXX684wam*J)Z%{?SS`=S2f=FPv+*H#_JsDtUJcgf`Z^bRY##=fc|QVIE1!*z!jo5f zVm}7fW?t7s9^1#kW!_J~)yik%lknu#p4d-;wVBtomB;pJuye@T-T-#Jv;XA!#Q!s3 zYs>!oELbi3?{i?|SJE6$u214W54MJkcOzK;+$Xs{`n$(&qG@;kiL?JkgU8UkHlw-! zHlg2~=KkA)KKt)xaJm0(8^G@z!0##e{on^`o|?Y|cO2I!^STABp8a<#SS|Ci2DSKq z8LXE5_Z6^OCoS)!+rjNL$I+hHJHXmpU*{r^?JjVc_p5NVa{t{8PhRbb{Tf)Cd0i8E zZ1;l8y!XM?%Ki6sc=Bpb>^H#L%}g1iRkOS%0}c@qY+xZSKEK>Ayu& zGkz8Qw`s;_|H<`9{CB|CkntV{>!151*GK=+^pDWAyZ^-5f8)Sg)4aB#x&Ow}kEgl+ zwxQ4ddlX#mzsCyxIQWU0r>5`2&Ep!R?jL~Fv%h`_R!iNEp%(uifz`6VehgOYq-B5o z1l&$@9PNqyDOj89Z>{p!eg;-ctv?4_zd7`m>!ZJG^b4AH*H4`F8v@>*<~5P#`c0tU zj^_I9K%X&wUF(jKI-UfpXFZ+*tGOPT-_zjC?#ksH-JRZAH=%!?R@VAgxPE1=e}k*1*1v<*QtQUxf6&ye)tqu`wU!rX zV`%EuDo?GWzwnSoD{FlnuAW-`F{zeX zw*(JDQ@2)g%JW;k1-vz8b!(NU)`QTe(7X<&S?huHlWEp^2)(tQLO+B!*EM|Y0et-d ze3JouOu@GTkFR<5|C;d09vHej{bw*@=L*e8J1 z@_S_>*cf&1`wHsW4(wj=emJIFzvSE=?EI2*2e4Y~JA$n<_MO0L8FLcY81;;~GuSa# z)?>=`GpEnQF16j~MV#m5FlNb-H9uom%Rt@0}4I`d`Qjn zJnR8CZ}~jziKd?CVK1;+o(IQN%i8P%R?G9SFIcU79`=K0A81eP{$Oq16Kj{pb|ARS zdyqC-`8*s9Pu_-|we_1l8C{!sT?2XYP6azw*5FXE>yo`8*C+mmfz9E!a4NYE2df$1 zxG!MibDyVy^)bG2FKfH^`3P|C^K^2}pm`lb^FAL{wZYcY PietGpuRenderContext {