From 7a2dc37d368063661c1dae9b590df8171a5dea7d Mon Sep 17 00:00:00 2001 From: Ishi Tatsuyuki Date: Tue, 30 Mar 2021 12:59:49 +0900 Subject: [PATCH 1/6] Remove manual blend stack spilling and rely on scratch memory instead v2: Add a panic when the nested blend depth exceeds the limit. v3: Rebase and partially remove code introduced in 22507de. --- piet-gpu/shader/coarse.comp | 17 ----------------- piet-gpu/shader/coarse.spv | Bin 57588 -> 55948 bytes piet-gpu/shader/kernel4.comp | 29 +++++++++++------------------ piet-gpu/shader/kernel4.spv | Bin 37584 -> 34572 bytes piet-gpu/shader/kernel4_idx.spv | Bin 37688 -> 34676 bytes piet-gpu/src/lib.rs | 2 ++ piet-gpu/src/render_ctx.rs | 4 ++++ 7 files changed, 17 insertions(+), 35 deletions(-) diff --git a/piet-gpu/shader/coarse.comp b/piet-gpu/shader/coarse.comp index 731da97..39c07c6 100644 --- a/piet-gpu/shader/coarse.comp +++ b/piet-gpu/shader/coarse.comp @@ -148,12 +148,6 @@ void main() { uint part_start_ix = 0; uint ready_ix = 0; - // Leave room for the fine rasterizer scratch allocation. - Alloc scratch_alloc = slice_mem(cmd_alloc, 0, Alloc_size); - cmd_ref.offset += Alloc_size; - - uint num_begin_slots = 0; - uint begin_slot = 0; bool mem_ok = mem_error == NO_ERROR; while (true) { for (uint i = 0; i < N_SLICE; i++) { @@ -373,8 +367,6 @@ void main() { if (clip_depth < 32) { clip_one_mask &= ~(1 << clip_depth); } - begin_slot++; - num_begin_slots = max(num_begin_slots, begin_slot); } clip_depth++; break; @@ -386,7 +378,6 @@ void main() { } Cmd_Solid_write(cmd_alloc, cmd_ref); cmd_ref.offset += 4; - begin_slot--; Cmd_EndClip_write(cmd_alloc, cmd_ref); cmd_ref.offset += 4; } @@ -414,13 +405,5 @@ void main() { } if (bin_tile_x + tile_x < conf.width_in_tiles && bin_tile_y + tile_y < conf.height_in_tiles) { Cmd_End_write(cmd_alloc, cmd_ref); - if (num_begin_slots > 0) { - // Write scratch allocation: one state per BeginClip per rasterizer chunk. - uint scratch_size = num_begin_slots * TILE_WIDTH_PX * TILE_HEIGHT_PX * CLIP_STATE_SIZE * 4; - MallocResult scratch = malloc(scratch_size); - // Ignore scratch.failed; we don't use the allocation and kernel4 - // checks for memory overflow before using it. - alloc_write(scratch_alloc, scratch_alloc.offset, scratch.alloc); - } } } diff --git a/piet-gpu/shader/coarse.spv b/piet-gpu/shader/coarse.spv index 5570675da63893e21c5db0bbe1ee5128bd9c62b0..4406d8f724bb521bcbe6652e5ecd7159a63a5c46 100644 GIT binary patch literal 55948 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 z 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 2) + CLIP_STATE_SIZE * (clip_depth * TILE_WIDTH_PX * TILE_HEIGHT_PX + - gl_LocalInvocationID.x + TILE_WIDTH_PX * gl_LocalInvocationID.y); for (uint k = 0; k < CHUNK; k++) { - uvec2 offset = chunk_offset(k); - uint srgb = packsRGB(vec4(rgba[k])); - mediump float alpha = clamp(abs(area[k]), 0.0, 1.0); - write_mem(scratch_alloc, base_ix + 0 + CLIP_STATE_SIZE * (offset.x + offset.y * TILE_WIDTH_PX), srgb); - write_mem(scratch_alloc, base_ix + 1 + CLIP_STATE_SIZE * (offset.x + offset.y * TILE_WIDTH_PX), floatBitsToUint(alpha)); + // We reject any inputs that might overflow in render_ctx.rs. + // The following is a sanity check so we don't corrupt memory should there be malformed inputs. + uint d = min(clip_depth, MAX_BLEND_STACK - 1); + blend_stack[d][k] = packsRGB(vec4(rgba[k])); + blend_alpha_stack[d][k] = clamp(abs(area[k]), 0.0, 1.0); rgba[k] = vec4(0.0); } clip_depth++; @@ -223,14 +220,10 @@ void main() { break; case Cmd_EndClip: clip_depth--; - base_ix = (scratch_alloc.offset >> 2) + CLIP_STATE_SIZE * (clip_depth * TILE_WIDTH_PX * TILE_HEIGHT_PX + - gl_LocalInvocationID.x + TILE_WIDTH_PX * gl_LocalInvocationID.y); for (uint k = 0; k < CHUNK; k++) { - uvec2 offset = chunk_offset(k); - uint srgb = read_mem(scratch_alloc, base_ix + 0 + CLIP_STATE_SIZE * (offset.x + offset.y * TILE_WIDTH_PX)); - uint alpha = read_mem(scratch_alloc, base_ix + 1 + CLIP_STATE_SIZE * (offset.x + offset.y * TILE_WIDTH_PX)); - mediump vec4 bg = unpacksRGB(srgb); - mediump vec4 fg = rgba[k] * area[k] * uintBitsToFloat(alpha); + uint d = min(clip_depth, MAX_BLEND_STACK - 1); + mediump vec4 bg = unpacksRGB(blend_stack[d][k]); + mediump vec4 fg = rgba[k] * area[k] * blend_alpha_stack[d][k]; rgba[k] = bg * (1.0 - fg.a) + fg; } cmd_ref.offset += 4; diff --git a/piet-gpu/shader/kernel4.spv b/piet-gpu/shader/kernel4.spv index 3e8849421bbf8d7eff0607ce84765fa4ab90e61c..5129b3feed13abbd901598c9c1877920498e89e9 100644 GIT binary patch literal 34572 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 diff --git a/piet-gpu/shader/kernel4_idx.spv b/piet-gpu/shader/kernel4_idx.spv index 17d2f475168c2d3a0c4cdf724b41622f609489f3..953eae12634cefc40bc72f7f66b2ecb73c362c80 100644 GIT binary patch literal 34676 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 POQ(Wu&+|;|dG>z*L#Hyh literal 37688 zcmb822Y_8wxwbdVBtSqQbd(Z$=)Kp_LMQa5PA17D8AxX0WD-IV5?bg*I*3A~cT|di z6hR`2U_tDPg4inxA`16;&e`u|&H3;Bxp&KQz3=;d>sxDmYwdE*J_BtFueC^3EmRGw z7OlQAq-q?)tA$aj%KD+@s)p^bF-Lanb@bsK6S}64@9Un{-`m&G-7}$UR(H>&YVm4l z!+-PvhaIrV^!^E(Y_;`f23oReYs53wQq>}r;oB)wJG*-{+_rF4y-Zn}_Ugkai&Dh4 zY2$yGtFJ)Xv5Y>TF@&Dpo*6ye6MOrnc6?$+=alY=-CcdyhiM;u@WG=G*sEjwv}qmF z`%jwE)iI^Jr>kQ^cVE}|{_dGw1957#z7gQQuFeVnV_59YYc=XJ=IZbTIa|D17e0MT z_xKMUUt6`7u_(q}dr+MAY8~SYl}Z=gudQs`V8SL-kG{?|A8~82Qz5=?!}CMCve8UYcuX1 zy;FMooPgt3^H?zcA=M~2{WtuyxejU`eUrv@c8oVdbF6!z#rFdTo1W{@n(IAipRw*~ z{5sd8n{oG@+BvDQZ5*qbM>*F0;Pl_{)25%AN8`du9c>}-g0@Rn2f@?!1IM0`6k|Vt z_8I$u;Ea7tGw!G<(LJ`Yyb#f* z1E2r*!nWW7LBGvmx>qOACS&xb(;VYc6}Ov4EYHOcocusU$I(`G7cq}7VtO%fe9a5z z|30cQeJIE{dyAMe>X?l!^1lz+7^itlOm5W!b3eI`**LZTk1=NzF;6ODo?gdnoO1ui zn4c_So>s&>tB&d3`#*$i%>9fa=9vRAhg9c)59hvgSl6V1{i)_r?$7h!wO?aD$~}7f zx+nPr=N?sakIv))%WG@2h0#vx=$bHz4HvBqt*2|2%RtMetBa`X`2YW@Eg0;ebMFG$ zXKgP8H~00B>T+;@@AN}Q?>=(o#4UXWYpXt`ebPAa(CRAi#J=9C3p^Z8dvzuHbe%Z# zyPkSR&ou6G4bR5Il783Ke$BpzRyV>2yk<_^D$i7(Mfbi#MZ86-Td2oRp3!qcM>ESl zCN^zt)y)9UsUbWq-b+1^bF#6IM$VkE#f}S3?1n}bHlEqNg{__2-T2R9BRaNwz~edp zx~EQR*zSin$Jt&z3ZB;4*EyA1-^W|{v+x7EruOy`%X_EXqw#E7KkG(csMfps`doIr zhcx_Mcl;YM9NTkn5Bqz8y6peOLAgLqr@9eDEh3b@SQ4+r_SS3hpyKW+LCtpBSm_FuN} z*PH%Z~?_}`oUew1pQ$8WdT-)Z6RHvPAb|NAZWg}9h4 z$ZcEI4sY%kKHGxF&*-8&###pv*@!zGze^iVALHaj8 zt~A;o3STgm_UhwnVnPw&DVb&-Z{lg7trzK-f}V2w6S zo6j4QySgV$?q6U`ymoAjdDJ(V=tI!Q5i0kd=tI$`^^cztL;7Dty*a9w2FC1nS)DyS zy)h)#V(9&SojucQgP+mw8OX)%GuTqZXlg+AL5~tjTXkQZBilR#_FkW{x_*zLmHXuB z7XFnM{%jqi`Rp{b`Wl>X_&WRf_Nk2fd`r7;wD9l3XPwkBqr0b{kuBQzUXOioK=1g@ zDf{-!r0VbP?QwTB=kZ#@zlq-fH}`IP^(XLx{Whff2YmdL?rD7SIIa0zNqhAcTH~3d z@qHPq%s+l+a{dc}%lWsp@D<@aP4T5pbDyr%V*l_U-d3#&_j8iDUk^N?alZ5Y5V)~_ z*p58B4y@1C=Xz3*U7RA5!fOZ+xH0!*=qx7g}?C?bU(c3DbJL zL^b+90=}UCw(2;z58uvZR?%)YxRbBS((ZD&&!6E}z!$`6udW)z+p25f$VvD ze(lv4TKE@R_`@yykwLtzdJLYqJ_DY5QiqSdjk$hxkZ*hSb@=rD&c4j|C3siQgof|S z;1l_h#f!DMcpV*0(~p0Rb{~R|tMSs{@ikr+JfX%b zfK9CZ><3Ps#tz{2>J$15d~ecT^})-0_YdN2)rm#h^TFkP;(|fG?bSttcw2QTd?FW6 z=W|($?Mis^dqcyoLyGT^>Or~R6ZpZRp|w{J4Qk(BJu-;1UhwAU5I$=Rvb9%F4B~Co z)A02DJeYe_-FJKS8hl*m^!lFDR=rvHz6&nzDgTC-xqBbJ;4>X>5xBsY_F?cc_aAPt zuhPO-ZQ&cW@J(9yrh|A}bs#+RJOW&f{m4PS?bR{xa_kdY>=Rq~WOzB3=`HpdgE;#L zKCa#ivs!GYz_U-T8f0s)t{KGJs(J8SzwZ?LJW=nFdj|P(4Ji0%&WX$2OdMiAqkD+2 zYQhHgbGe7QpUFMMe!lh)`Y)^tzS@Vq`z*D`TFq)e^O-`e^yAjj(7bmW z*S2j9+}`*syC&Gfex9RVqrsZKtJ|2vc54>cXT#|07I?h^`@9&R4GX+Ufj2Gi76sn2 zz*`k~n*#4p;GGNXb7=bAwZOX-*k{xD>|WqK3cP25M;CaX0`FVk{R`}~ZsPl#8+=%S z4=?Z$1wN|4M;G{*0v}u8;|lCEbo%Nj@Yn)(7I=JtClt7=z!M8Rslby9++E<~3w-VX zZa$Z<*&JSDulbzrUTf~fw#IY&vT*mBwv}q^^Sg)ol?A@4z*iU8=ll5IP~e*eaC_q! ze{q~XO!0imvwV3z<=MSeYdy#GGqir5W5!c+UTRAen&+k3(uKz5qoFNVXrAl(nS;dh zxm<0PLbE@$5ryWnxZ2tcjqlIud7ImPILE^iJKQ!N=2@++f!iC;=W8}B+M3*TGY|5Y z@imtpY4Enj^DeLv$LGu7$pxNW;JF39xxky5EDp!BTY--#@R0>Rs=z)Ir0o?2_8B1h zX9|2%f#((Y)&k#N;5!O@XMyi3@ZAOWxgq^NRbZbBqQ6k!mkRu?0>50~R|@?70{@`E zKP>Q%3cRqJj>Fvg{1EK3L-2y3EjTK9hLVQwBQ@IwWDxWJDN;P&ciu;+rY zmZc~AT7x)lYw_}&FP_^YC>|r=p4S%jIVbuDp!T;NbJZ<&0&G1^& zwg%UsWvFc*-L@;j9ZNK0=({Sl@uTazCfr!j;ybcMcYGV8HRsk|Z35O;Z3S$bQjegl z#u)t)TR%1X-JDv@K5S>KZKxA#Td=Xz%-?p@BPa_|jJG|tzUs!?fm+RYwl$vb))Q|x zu<_KijiT0O+uf<s4A{16+K#Pl_In&yZd?7dkEKrAPOxp&9QQbCZ5G>) zr&hDQzG{=HlhqE=9qw%qHAg|F*MN4j?%|Xk!)g1RZ)EW0&u;W%U|L0Ph zuV(&-Hs0N-Mc2=RR5UUPG_A>3GZP!^@E0>6{mzSNxKUDRsE zv8`>kqke$mu|6}k?ZcE+!Ou_|b2ZvNTVuJp{eP9(v1;3~=FinyV$ZL+{$H=LF*4ql z!5-oN1}{X>e_?=gcmE{bP_)<=tL^4o{}DBJ56aiAxpS0nQ}a~KuUh-78^4hk@G6@exZ_5wWMkjLM-(M~Yoi_d$U&pxw+>t_C4TFp z?L2JmuJPLdu9gzNjnHNu{=Hq|w=rBTC4QTs-8;H-=lE?7S4)ZCj%aV(yUu{$PH?r9 z`0a&u-L)(4mUw%^)lydGu6Z8Z+>rV~2Qpb}?)~#2`kB`YG;pZ7&*c}^n)XX-9RKU! zuA}Fg>vRj;J)d>D6>i_^#*_O_LCtu#*Vr~*-~8;+#7i_jH;Buk{l6==^*Q}+igE9y z=AVXUzjD7@S2KU^uZJPVmRo;GBT2FS@AMW{-_4o_iV@WT=jXcm+~?tba=mTeX>z5J(w zYxn&`+Ajw8-9)&x8$I0dEmUyF-&Sz1@xGrZ{e3?XuD|am!mWKj5$-CHEaixc+{}5$WNl&vzW*_UAi}aIXh`R}p?2cHeV^8_)L~;nu$A z2)BQ~(+IcrT}R1%*AadjcHeh|Tl>DFqL_kBmnecus&8~(oY2)Fi~N6CHX5pI9J^9Z;0okz)i=Mk>I?>xe-ediHw zKK$M#+}igZ;oANFCER$v`v`aaefJS=?YobX`@SRG&q97bA|J(F&}W%DC_dkKzucL7 zpwAU|*7_)zp9}7X`z-PRcz)sc0GhV5h-JIagKevx_+J1U-_H_>|3$d^?7H29VB4zi z!VSuMvReEf0js5-N5N`7|2RgUeZEY|7=2E%t7{Sm@k1_V}1)w zJ!|%Du$s?XY4;s?+8I}_pLX}!_b5J-mV4oqT93~U;H~@RhiK|q{~v*UmQ~MqehfC2 zw#51g*#64B{ZqJle0~PDztZRDaP{=}D%k$i)88+^#?m&1`OPB_zXUrDZO-3kIW^aD z9`@J4YSZ9;Zu}KkP2bn3H??wZjzgQzuFl)Oz3#jXe~#L=iT_VD^*igiy#rRWoiW}5s~P`a+UnZe{Tu!t ziih_1YP+@Z&DHy0W0)uLyA<0QN35Uc(ZW2(JOsB-pP}X2#$sy+dmd=>d0OuIHxAnn z@I-3cXv=kJC|H|^?fgeA^Ik+7CG%bstmeGm#xP7fhvU|^7)8x-i=A)gp`N%)fQ@U6 z6~r9x@=dL}oM}`aqGk!IC8_zRT8jT`r(T+x+etN?+Ux%^)L!qFr8bw#QTvR#JhkI6 zPV%=hIQjE4g*^HD2sruk^M%~}`CZd0;Azyh(PpmvjG`{~^GD8|)xh>^?fQ?PUW4Lc zKGv-5*2%|OU}NOmSsSdDb4R{9#aPA`r|n3vZQZ{<+iU>#^N+e?llwW@z8#0{tfUG0!DlnDn&a`anA~`qQ#&4ObG0S) zRum8IThw;z^tT<@7-fIk!_|%NXF0jp&vAYy;9T7sJApmVwCxC%=f1i#cqx2rZ#(V! z?Lw{17|vxku>EWEbD!LOavru(;ESkjqfH+_YpOf`Vf4KRSS{C=bMfC3uCD*?)N-+( z8?&$W2AeBubF~lkz7!90wO?(w&f4w|Hb(Z<0bsT4EBR=Ov5YOYtz$X}?EPU5}Y<7_}WiE#IED^N4j6_!esQ+`o-|D#}Y9R4w|?XRFuzi;|DSReKHbb!k?V{4u^op62B&#mK( z0~<@*66`)>PXK#O^I1syU&!xxYR7pTwRZdTy4D3YFX0nwZtgwLC&4|>)%7v{WUzY1 z-3`vTwI2_+pNom%TAcvaM?Gz(fXzqNZz@~*Z%i$>{Z`cWZ*6<8Ycs(5WN*7BGvVrY;j<|GM6jCYsP{nm=9Dcd#9oU_4YoO9r=r@B72n+sNV@5s*u8%sUszwF2CdSYG*R=bFjc9((E z&T-21v!4~H9p{qNj?-tiE5Uj8xB@KKHWu5};5>U=1(thH@x9eG;1j5Aqs_i9r&bqV zOP#%S9oT-Y-CLigzJcQ5xIRi_L3bxOz&23<{thY8b+b186 zJ?nNm*fEyteFt1U&ntI=)f|u40J-t*qINvi=Jy`zdnq2;@2>6E>F)t>>viPwXzIql zpIR>d0`)c&=j!$4L2#Z|z6h4*dF3JSQux^3cG`{cFts*gc+L9~*#5OWLM_kp%A;VP zS8StApZloQ#g9>EZ#@on?$*xz3F;>)9?t!#+HRe-dKzqu?5(eW)v~wbU#1w#*kapy zZ+aH&^G9Mm2RD}E`YN?N&k6IvJ}0Q>IpJ$y^*QWK<2?^Hrn)hnp;mL9d@lP2*tut4 z*yaVeddBoku}dr@%f_!dJ`kI%5$rySqnXzCfm5@5$Sl45)9_UF4TZ8_JL1UIz$8GR{u=B3TC z+s=1j+R|<~SS|f615SV1yhhm0cV*hrZaJ`XPP^sdX{Rmie5a-@?N$WaU-(L3eZp6+ z`PrO5UPC?%*GD}*9|1d_@KtJ_Hmkz*QO|m<1~!(q_^l2;m^o;hQ};Il>=?Br{u*HC znpkVX^;3_}T43`ZzBagQvkqJz^?Y_*7i=tT=Gga*YR2$$$a>(%=r=J(!u84iSs&bb z&D{V^Jw6-OKIIEOEtWCkQ8IR-2m^K5eCx4rR)oh=3TY%Hf zdCK+kc_P&$ygY|cB^->u;H!M&fB=lj;^+VXjI8?bxO+-Xby+k&5=eVK#p(A49z zJ=i|x(>8P40Zl!5+7WC!^~`rCu)610u5CNR9fzO)wRTt9RBB=NjYS|_)AU^BOQuHF-_mgj11YPNs8ZvOw(kYGn?cZ`SKLa6bPg=10-g6Z2zWwTtR;y3QYmr=8=J>t{bJ;O97( zqSiJR-L=-%3D#!qI*zBFK=IJtRoksIo{3;%WF04g)v}KAaTH@2Tb#C&!M06)yTP*= zm%3w(ttAowcekX<)Uio%|$laMt%Cu-x?>h3yjX$<(&dW?$!1t7j~q z0;?sjUb8QUtLuLmwcO9?{?_vfuz$O%uKiMKHSv|y*)Lat&9}Atdxl|YPH1t9N3uQH`m-geCK@&+;`sU`WW+8uzJRE8`!x1W<2A#9j=~dkvqU%m((-1 zJHf`%me_ZJjWwqp|J`8y)H9}gz>dkWJ14n*u7T@e9<4K{d%?~z`}aPuTFwb=YPQcB zyB_xEz2Sav_I6@EfTo_9p9iaz=foG_Y3DfQ`jzLzGQ~OZFt(f%4}sf)!VbAEgUZ0@Z+Kc1!jD#gP&KUdqWlgIgBW90n!8dxpohx{3ev5YNF+pmLd zn|<*Ouwzr#$G!RjSUqjN2~HcoD|rzA3^$8+ciRgYm%-}#G`>Fr8@D`%UV(p)l5^<$V9z1-jO_% z1lCVIWBM`JF*$bUB-hV%a?Q-Ob>{RFuyf3Q|0!54=a4ov+h-rRX7=Yf^fPeIg~a?h zntEcs3RWwh%YFe*JI5*4uRMpAB`4|Ub!`5ItGxFA3QhehjKzDw8(_8h;Ed(haDQ`? z-#PsTuI6u@qWu=Gu4aG!j_Y^u*57gc9!)*-`UBXu>S^~!aO>}}{)DEU{{9TMFZIOw z3)pzt;`dkZ8|-Cm@%x(^MVonhjap6oCUwr)zk^+CYtPxYsNbe|nB#xecI)Ko9k4NS z&i)ImmUCAA4~nsjEl%72fNkqI{!J~<_vP<_{k~jX`@7U?X-mo*ZOx(griI|{VRd~x zul##pb$?6bx!eZM-v~!*uQgIO;5Ve!3>UwlwZ``1d%ou1g)D+*Ok>zaAIIAGEic%) zxW^U)-$<>l{e9-4mbokrHV@9l^M48WY&ufc$Fci&%j)_3<=-wlW|}o^dY4MpV6`$g>%ons zEq)`x=0;m`vp(3dX>;uEfepZ}^{H^zVneW6azO+7KT2dkBzTX%q`o%53GSKfb?bYO-239NYSEJzN{c3l(n)@kxXAii#n*Djd+7sS-zuF5; zJ$cw0Y+LoT8x3x~U+sgYp8oa)+n0J`?FTlVw)pK2c28@I-vMCfsm(ll9;%5Cq|W{7 zAh3JM+WXZQ>O&|VuF0Xb-8yS>7}yxOUmXrs%l%4zFvVEL7N_k|VB0#5BdO)NUmXp; zg?`nwA3?2_w#S0Y>&bC&weni~QMm2OYwgG2>e(Y7uYJnvNe7yGayk~QR$fm!;l|Py zzj0u5uPwPB4|Z(Y9J|-rE^w|F6ToukIFVX^KOeZiCxJ&$>!VGdW2n`Whi-70hvVUD z<#qK0cxxV}ps6PhQ){0x4?Sq=nO`qht<1wTxUsaw?-OA2pe=dm13NZt$wNOld6*8C zJI5K+`X>)F!RA39ZTd{6R!<&I0-GCcv#90y4&r36-$AHrKapB3ZBGTe56y+w+fRbM z-m2^4v(IT@^|U!1oHjmV%!beATBWX!_l-Gflzg5z18f}i#5oh}T)el~<}9#U+MErx zow{Q`g<37`&jC9Qx#OG*c7D#qah(gcP5Ig9Jh*y3`o`(C)Q9p^pN^4vG>1K&a$b=Tka_k)e0>$u zv*IcZ5UhSMpA9a7KLl2@cyPKgljgX-fTrDX>H9GFa%%PT z`3Sh#XY;ouUxM4GdU?J+3fGp;PLF|&=MnAkT5}B1zFcdLDW9>PK(oF6+KoM)`I&Qb zqTMxheO(vpjQ2^fX6j&|isx~#-XV194{~Ln?T!+)PZ{&xO;ux&D~&x38B^WY0$eR3Yi_0iw{zev&k9&yDPoA3RWr+6$w zaXiDRm#wjVE=O@ZD^T0se@{xJ5Vd-$GJ{V9r?V-&lN zVzu=7HL!h#KM!_Z`J2vffS;qxr|9e0)buO&h0i-9C?2a)lDpMvY))3E*#8>T$=3_u zGG8yY@KRSHdvea`!2PI`BVQ6Ma?mb z-7j8K{pKE&CR?)P;m9&1vP*R^VF?$$2w zI$+1Q9(B&ApMv%Gd`f>m1FMJs9BiCi8(szLqwf99ar}bvD#bC1%Q5=>ipNMw#<+fs z9peTR$F&i4*8X*{w(wsUT>ZB-&lrCNH%>nLy#ZF6PtnIQ{)S?|=Gb_0v9a{eGwJWZ zBPjZ4ORjzoc3kGlc5;0a{|{j8=0KbrYzE$n;;}g;IoP7cn^12_F$Y^y=lbwxuyYN6 zv*5$QZxvj>f41;{6R!^S)23DI-F(-~$ zE&hK8t7Y%}1FYt`lDxeQHW#*cPI9sH(Ld|*4tNAbA8q=W6ZQ1>F1YOPKXA2w*FNrp z_bKVmoXCx3KJ-t23&BUg_0gt}IaN=8?O?}{oDG4SM{}mXT%Y(a0yaiI6D$f>v%Sys z!zi}TeOIoJ?cGO<*LL@qID2e+Y&%mtcA#XB?O5Y&sdu8d$9AF4o?4O^u6elsy_fLe z=>GR!!mU?q;r{ntV%OjQ-b=W(|Gk&+5#Tjyo_s9@cUh&nL z&mNQOV|(|}$lC566K9W&!nPO1V|PmS*d8_Bje1Xtdu(s&?5Pcjkv(ATf7>VAJ+no@ z)%|b##O}W@W!su({u{yVr`$6eqp4@lYywuBkDobp3~I^IW?;4Kna#m!<(}CR?%Zte z80BKer+?OPYw!sC^wFk|b5u`%+kw?GhwZ`6D{Cm%NB>d8+5xQHH4tYF_QQ4%#bbX; z*5H5|??Zhc#WgsXI%}{qF_Kg3Q3ZDm_AI#ey<7M`1=oN7g6r>p7b)>?haX(?%y$>K z<0{u|S2Xpk*=}I9`S_Vb$E=nd?k=We&GrDRm20*a++5h+ImyM&NB^wZXz&R9^wFk| zIZ;o4`-&;)Z$GeFd7d8tPk-h_ZY=YmfBHKJY=8P_)5n~ur@t{^$B>*I0ydA?BXWJ> ze<;`(&vIT5CHCQ9wZkYm_m2RpKZB3gf+N9d`XtU#VB@6C(O|W-IR>m|n=!=MmpI3Q zjit@;`tMf!D8=#Sx+2%le%!YotL^S-arX3~j*H@P7$tl9@ERXNeFVileH3-}^jKnK z&sk3>xO;R`!L@f6`~>innkV0#aQi9u=r}a>?9uUHwd_&Hpq5;Afz`5SCW6(Q7(3T`e)A^4<3P^KHBtgj_T=eDp)Pg6Fp!x=d>7gFU5Ig56Shhy?LKj+g%fJ z*5p`hAE$U6N6DIew8qC!e~jXqbWmqarW2!FlM@T>nw(s4{Z1|TY2edqo;B%*+fTVB zGtkttCNsfmSrf;gmK@Cjt7T120;`p4athqJnPbN&7dt-vvnHPekHAkKZTdJz_4GFz ztd=><0Xwg(fm|Q`&GQ+x-8B$r4aQ-cNbwj?$r?b#Wk2joi#X{7+C{zeqO=V zFQ|FOcMjY*Wsc{fsVB$hg4N8i_YGe{PfYLk7HC%&MpG0 z&1c_wExQD)b}=PBmxA@lm@WgW<+^0PJ_Wa}HuEV@K7F=1f#NZll6-d8xRd&Lius&E zZ9dK4b;L+MeUAQg&6B??;kGODcNLm?_S`jKwW}$9X5I$>Yr*Qt=k;L6Vt(vXF19~? z&8Ks?0qnEBKH8k8TIT8JglQCysg%sKr^cPsy%gv93F^%AW@2QXekQ%O=9%Y>aNCvh zya`P`^PC4(%RD#6|8sEl%<~qoV{vZwDHq$HzRuG*+y>r?S|4rBQ!VrK`Za^%(MQQV zr`NcXx}V}aXHsXL_Yx!XJOusznrEJO!fjX1^DZ>?%=2!rTIM+h|9jx-ndg0A$Ku@V zQ!chYeVwOscmVAEPakd0Q!Voxh3#aD$BC58b5@NzsZXLf&r_%~&qs)ndG3b(Xw5Uv zFT!nC&htSu_001juv+H1EB+6|)icj8fgOu;vroC${`7U8qp&{)_Va^2+MK6a=IJxS z=@gGsDVgUdYurhF8pV0erp`RSLX6DQ=ig^*o_Rh2w_Q2UC(+b1&!@m@ndfNypN6Yv zp3i_Ci*vJ2x!C^nb)L@Qt6-ne_0i@$)iO`7`Dal)=1?-vGiuyPeI~_uo=u&3zCeu3 z^BD9OYo2+24Q{(~p3kGHXP#dNt7V=?Fn(_)iP2|EmSp z|CcTN^@8jFn}X~AyB7Y3g6sd6g6sdc7XJ5w>;HDa^?#>@zguwq-!HiS3oX1LKW*Ul znr9z;7k~5m0L3-+e)=++dhVUy1FOx)=GvNbwfKJ@td@QA1F%~8%=9C;YiWDeL@stc z^mm`w_fNnhsP)mNk87%){(c57`};Xut^BO@3wZi-P36XNJ@rq2uYv7PA8q=$C)Cs5 zufS!0zlN*5QTq&|{cpkP&pjbGmis~f^!IzP{pq7kANQ1c`uiie?C;NTwLjH9_V-tC z`g2dojrBKb{nOu@VEfZYn?CMI_4M}-aM|Bma5c|+eeCa_;PmI7lpD+asDJwV7uf#v z(WZ}kT0Q;!8(jAH9$f7|wU7OAnh*5no|YTS{j7ibTNpk9vp(AN@tjake?!3Tp?vNc z3RjDL5wL3>`=W3)Kfj(!?8U&gQTM#@-x;wu#dFE?#y;ixCFT-f*EKOe1XqiFNwDh> z`%-YV^tm+HHtOkfIM_ai(#}5R`X%NvU~`?A%fi)czZm**VB6xCcx}Iw`co9I=T}gBJzteJ zt5Lje$@N*Qg^#SceHwRlxN)9fjH`gxq^PYyag4@Oi~qV{{r$UJ+ph;-hoY{({i(%& zL$Ln-9j5-9z)4Z#-KMsUDT%cycms+){-#F%Ex_uVQ;hHU)e?V8uziMa1=dIIe72@I zhda1B8gH9g)6cf%TCL3WRrq<7xxNx^uCJy}uD7RMnd@Cz_^6s^Y&*b>lU(l%SKEo= z+>ECd|6RfQ`?u|meK)w8`PSe5)Z)K8SpPY-{~mBPbC(!_ce29Fz9^R^_@@X^Lvw{!M62?c1*3=U$kRuP1pP` z=)HH$}?58G-_ zK03i($JCRLabV+>`52F;o_S6H+twpmSFM%#m{@DNCLfa^w%1>~v0W?s)RuWo1~=!` z+$Y^|HB0M0agUk92knKc-%+%i2DjZgb-Pc%)yj5#aCM(Yyg$yve>&WF+8nn$bq;~JBNEH&fz|4_lkRDCNXl39!FoN6W>~Eq@ z1lzZ@zoR>e`ecfS_ET!Rb@F>E*ckUS|3&fpBv{Q{`a2W(EQ+y=Ew=4E?5BgBdt%Lj z8_RLcrk3Y-b7z2Eb9JBR=Yh`z8$+AV7W<-|1y=VwFjr@T&8g2O_M^`^XzIq1&js5~ z-M-DQnla4pMPOr;pG7W4Q`hGb>PsmXQq=9|JnG9R>go4WU}KM?jn}}-!TPA%uj{6! zzxFG^YPlv{1y-|oFeNhDZ0j0p&o$v{IX3mgy9V5h*E|=mg{$e?j_(kP=ZNQJ#-oqz z)jth(eG=~mu<^`+`|dMf_m+OPm+Rx+aUZ$<)`|C7u<=|6= MAX_BLEND_STACK { + panic!("Maximum clip/blend stack size {} exceeded", MAX_BLEND_STACK); + } self.clip_stack.push(ClipElement { bbox: None, begin_ix, From afe72804e1c304e43f9a584ac0d62792c16841b9 Mon Sep 17 00:00:00 2001 From: Ishi Tatsuyuki Date: Sat, 26 Jun 2021 11:42:33 +0900 Subject: [PATCH 2/6] Add command line parameters to winit So that I don't need to modify lib.rs every time I want to benchmark... --- piet-gpu/bin/winit.rs | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/piet-gpu/bin/winit.rs b/piet-gpu/bin/winit.rs index b7b838b..006b6e7 100644 --- a/piet-gpu/bin/winit.rs +++ b/piet-gpu/bin/winit.rs @@ -1,6 +1,8 @@ use piet_gpu_hal::{Error, ImageLayout, Instance, Session, SubmittedCmdBuf}; -use piet_gpu::{render_scene, PietGpuRenderContext, Renderer, HEIGHT, WIDTH}; +use piet_gpu::{render_scene, PietGpuRenderContext, Renderer, HEIGHT, WIDTH, render_svg}; + +use clap::{App, Arg}; use winit::{ event::{Event, WindowEvent}, @@ -11,6 +13,17 @@ use winit::{ const NUM_FRAMES: usize = 2; fn main() -> Result<(), Error> { + let matches = App::new("piet-gpu test") + .arg(Arg::with_name("INPUT").index(1)) + .arg(Arg::with_name("flip").short("f").long("flip")) + .arg( + Arg::with_name("scale") + .short("s") + .long("scale") + .takes_value(true), + ) + .get_matches(); + let event_loop = EventLoop::new(); let window = WindowBuilder::new() .with_inner_size(winit::dpi::LogicalSize { @@ -36,7 +49,18 @@ fn main() -> Result<(), Error> { .collect::, Error>>()?; let mut ctx = PietGpuRenderContext::new(); - render_scene(&mut ctx); + if let Some(input) = matches.value_of("INPUT") { + let mut scale = matches + .value_of("scale") + .map(|scale| scale.parse().unwrap()) + .unwrap_or(8.0); + if matches.is_present("flip") { + scale = -scale; + } + render_svg(&mut ctx, input, scale); + } else { + render_scene(&mut ctx); + } let n_paths = ctx.path_count(); let n_pathseg = ctx.pathseg_count(); let n_trans = ctx.trans_count(); From 0095a38556129a4927139c0dc723986a9ce7ddc7 Mon Sep 17 00:00:00 2001 From: Daniel McNab <36049421+DJMcNab@users.noreply.github.com> Date: Sun, 11 Jul 2021 18:11:12 +0100 Subject: [PATCH 3/6] Highlight shaders as glsl --- .gitattributes | 1 + 1 file changed, 1 insertion(+) create mode 100644 .gitattributes diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9fe4566 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +**/shaders/* linguist-language=glsl From 98862ab1c7c4b02c3c3d01e2384e299e890ee50b Mon Sep 17 00:00:00 2001 From: Daniel McNab <36049421+DJMcNab@users.noreply.github.com> Date: Sun, 11 Jul 2021 18:11:35 +0100 Subject: [PATCH 4/6] Fix name of folder --- .gitattributes | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitattributes b/.gitattributes index 9fe4566..ee5ae03 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1 +1 @@ -**/shaders/* linguist-language=glsl +**/shader/* linguist-language=glsl From 29a8975a9ab36b6e38927007f4179f75d7f3c28d Mon Sep 17 00:00:00 2001 From: Raph Levien Date: Thu, 15 Jul 2021 11:18:48 -0700 Subject: [PATCH 5/6] Retain subdivision results Don't recompute the parameters from quadratic subdivision, but rather retain them across the two phases (summing the subdivision estimate, and generating the subdivisions). The motivation for this is that the values were subtly different (differing by 1 or 2 least signficant bits) across the two phases. It *might* also be faster depending on ALU/memory relative performance. Fixes #107 --- piet-gpu/shader/path_coarse.comp | 10 +++++++++- piet-gpu/shader/path_coarse.spv | Bin 43040 -> 43256 bytes 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/piet-gpu/shader/path_coarse.comp b/piet-gpu/shader/path_coarse.comp index 147c8a5..20c8142 100644 --- a/piet-gpu/shader/path_coarse.comp +++ b/piet-gpu/shader/path_coarse.comp @@ -30,6 +30,7 @@ layout(set = 0, binding = 1) readonly buffer ConfigBuf { #define Q_ACCURACY (ACCURACY * 0.1) #define REM_ACCURACY (ACCURACY - Q_ACCURACY) #define MAX_HYPOT2 (432.0 * Q_ACCURACY * Q_ACCURACY) +#define MAX_QUADS 16 vec2 eval_quad(vec2 p0, vec2 p1, vec2 p2, float t) { float mt = 1.0 - t; @@ -69,6 +70,9 @@ SubdivResult estimate_subdiv(vec2 p0, vec2 p1, vec2 p2, float sqrt_tol) { float x0 = (d01.x * dd.x + d01.y * dd.y) / cross; float x2 = (d12.x * dd.x + d12.y * dd.y) / cross; float scale = abs(cross / (length(dd) * (x2 - x0))); + if (abs(cross) < 1e-9) { + //return SubdivResult(0.0, 0.0, 0.0); + } float a0 = approx_parabola_integral(x0); float a2 = approx_parabola_integral(x2); @@ -113,6 +117,8 @@ void main() { float err = err_v.x * err_v.x + err_v.y * err_v.y; // The number of quadratics. uint n_quads = max(uint(ceil(pow(err * (1.0 / MAX_HYPOT2), 1.0 / 6.0))), 1); + n_quads = min(n_quads, MAX_QUADS); + SubdivResult keep_params[MAX_QUADS]; // Iterate over quadratics and tote up the estimated number of segments. float val = 0.0; vec2 qp0 = cubic.p0; @@ -123,6 +129,7 @@ void main() { vec2 qp1 = eval_cubic(cubic.p0, cubic.p1, cubic.p2, cubic.p3, t - 0.5 * step); qp1 = 2.0 * qp1 - 0.5 * (qp0 + qp2); SubdivResult params = estimate_subdiv(qp0, qp1, qp2, sqrt(REM_ACCURACY)); + keep_params[i] = params; val += params.val; qp0 = qp2; @@ -144,12 +151,13 @@ void main() { vec2 qp2 = eval_cubic(cubic.p0, cubic.p1, cubic.p2, cubic.p3, t); vec2 qp1 = eval_cubic(cubic.p0, cubic.p1, cubic.p2, cubic.p3, t - 0.5 * step); qp1 = 2.0 * qp1 - 0.5 * (qp0 + qp2); - SubdivResult params = estimate_subdiv(qp0, qp1, qp2, sqrt(REM_ACCURACY)); + SubdivResult params = keep_params[i]; float u0 = approx_parabola_inv_integral(params.a0); float u2 = approx_parabola_inv_integral(params.a2); float uscale = 1.0 / (u2 - u0); float target = float(n_out) * v_step; while (n_out == n || target < val_sum + params.val) { + if (n_out == 1000) break; vec2 p1; if (n_out == n) { p1 = cubic.p3; diff --git a/piet-gpu/shader/path_coarse.spv b/piet-gpu/shader/path_coarse.spv index 08d61a4c18edb959915940955b08ce509c202f96..47a5816d193b56576dbcfa719c9d7c9d6be8cb2f 100644 GIT binary patch literal 43256 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 apAPOm+mY4uy={89ZS>RTyPcZvcK;8^^>HEq literal 43040 zcmai-2Y_8w*|jgsBvk3WhTeOZPJmEC?+6T&WD)|COh_gnbV3QBg7n^{iHI~2kq!n# z1e9K-NEJkS6ZoI!-m{XO^YeY*)y-aOz3+bayUW?<+%uD;ZQ3QKYc!^5%-EQ|@kZZ9 z^D}#6T9ig(rbgdpJz(H216Ll?J7ncG*IHGFSsHCkKYeD!rw?^IWkl!jks4;iJR7>& z?38{KeJySLZ(8d6A?@@!U|`399d;NnaEp$?qegX%={>Z&tD}4P$gYkd!$)@w?j1g^ zOTXz0zu_YXcaI%XI`qM#>|Z`3eQes@-7}cl4CQ`$h7KLm)!RUsj@%oKkzI#$bn3V4 z*wxnO|ASUrA6t84=Ba$!8$W`N8Gabq*tVTHV7y%;I(iP0_ic`IyJn!ByT**|riWI) zj^9tyL~Sl=&c)Eq;oV(BY~QCb7ktFzL|T2!i8iIr85;}0dwa$XKA?l1mmSkPdhFod zl{Pi`mBy~t%)ZrbKK#<3xy}!tGVYlg{osd;9^TvaKgMAq@UiW})Mczi;8S9?H5P@B z>+HsN#>P_M(OsQG{>QM`jkyGM8FNYal$bL#mV*x+-re0XqK9=JI=W{>$I$N1VPjk( zOwAa}>Z91?eH$xK@7URUK>x9Wh7aDkYbdli*Xn+z#P8Es1wPpq>`qnlGm0G^?i!6+ zZ3=haj#_;R_bM2*hP)NiJvfRSI);x&>)VX!wb47ebL1FBKJoQZV+DH-Vn?|n2s0(8 z4rlTIU*KxRC#TLZn+tE;K3rF%+UTq>X|fhW(fc&k0^4Ypu3^oYF$Xn2<-Du|ul#oH z9M&4Anx9?-+sT`Ick(Mqj{}|lLdG^L8Ma<@!{@-&_ zh9=Xt#zsZ#jVH%$Z)^tMl}pdba7=PPQ|4l(#sIiJ9m7Ws=^CFQRjsC6Zq0tSz_*om zdt*y*vkA3(eQRpxCVk2MOzEq=F%Yhgy7|cc3>wrkdC#ah@4e*I+VitCc7)sR|DGCp zuXc*_vOVoG=R1H~x%X-840eR&K2h^i=DRDr@@wWR_tP_a_%QDPjzP_Q$8m`FjGm%- z4ISFiHDnn3K7L+DBfG};Qqgju#@^Ib{Ep^1mFb^y)>W6nlx&;Bn_69I+|bpVW$0=v zO>L>B!_&n1*n|EuAA5pZ^U>DW3!L+1A9M0L9@;Z{L^VO?ukL5c{Pb;fz)N54o+;{n zMs)VVTYk+oHEwrjFH=IqIU3%x%J%>J`j(zkud`#yxCVh+w-4esL5?l^cX#|*Qy ze#+45+;3~R89fV~pW$K-7x95&4i_=EzJ`nD*>By9IoJbus-OmM2DVL)?W?$>#8upb z#Z_FkOY>aS-}z4;UJRY1Mvd+n-!ZClbmyR+?oKYx-mYPzJG+-{rQXcz5d8G*!xPNm zKiFp654JmOa=X5bBf-0j9W-S4xblA9-qbNQ?|H7Ney(9BV+wbVcQ(f|W8*k**O=bn zta(?*m}bDKCdafL=h66OUXBr0^D;r)jMb-cEO^YpqkB7gdtAb1yA!BeYuw&A1w3UR zwl{tO->z#!&*($Vt#6YfwVqq5=b-40!RMK-(WAXw@$S>~cP!}580L98+>iKtYJEND zuBCQSMpXQ|8o$2A@2c^8YW$HJe{?F|)_4*=j$$6KPGxClwl}8XP%Y=O4UYfhHSJro zPhaCRw)`ir>5ppmS!;aumjC24Xs()lo*JL8Enmja $`4S;|=hTPGj_GyaR6D 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 From 62df7c0bd50472ebb67496ea698b90861681669b Mon Sep 17 00:00:00 2001 From: Raph Levien Date: Mon, 19 Jul 2021 08:39:44 -0700 Subject: [PATCH 6/6] Remove leftover debug stuff In response to review by Elias. --- piet-gpu/shader/path_coarse.comp | 4 ---- piet-gpu/shader/path_coarse.spv | Bin 43256 -> 43040 bytes 2 files changed, 4 deletions(-) diff --git a/piet-gpu/shader/path_coarse.comp b/piet-gpu/shader/path_coarse.comp index 20c8142..ea525f5 100644 --- a/piet-gpu/shader/path_coarse.comp +++ b/piet-gpu/shader/path_coarse.comp @@ -70,9 +70,6 @@ SubdivResult estimate_subdiv(vec2 p0, vec2 p1, vec2 p2, float sqrt_tol) { float x0 = (d01.x * dd.x + d01.y * dd.y) / cross; float x2 = (d12.x * dd.x + d12.y * dd.y) / cross; float scale = abs(cross / (length(dd) * (x2 - x0))); - if (abs(cross) < 1e-9) { - //return SubdivResult(0.0, 0.0, 0.0); - } float a0 = approx_parabola_integral(x0); float a2 = approx_parabola_integral(x2); @@ -157,7 +154,6 @@ void main() { float uscale = 1.0 / (u2 - u0); float target = float(n_out) * v_step; while (n_out == n || target < val_sum + params.val) { - if (n_out == 1000) break; vec2 p1; if (n_out == n) { p1 = cubic.p3; diff --git a/piet-gpu/shader/path_coarse.spv b/piet-gpu/shader/path_coarse.spv index 47a5816d193b56576dbcfa719c9d7c9d6be8cb2f..b1f54e28d607a0edd6c38f5654b190be904cc5ba 100644 GIT binary patch literal 43040 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 F{{WHSL1zE} literal 43256 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 apAPOm+mY4uy={89ZS>RTyPcZvcK;8^^>HEq