From 8db77e180efb1ed178a696d79d885a6e788aa7eb Mon Sep 17 00:00:00 2001 From: Elias Naur Date: Thu, 18 Mar 2021 19:21:07 +0100 Subject: [PATCH] support stroked fills for clips, images This change completes general support for stroked fills for clips and images. Annotated_size increases from 28 to 32, because of the linewidth field added to AnnoImage. Stroked image fills are presumably rare, and if memory pressure turns out to be a bottleneck, we could replace the linewidth field with a separate AnnoLinewidth elements. Updates #70 Signed-off-by: Elias Naur --- piet-gpu-types/src/annotated.rs | 17 +++-- piet-gpu/shader/annotated.h | 123 +++++++++++++++++++++----------- piet-gpu/shader/backdrop.comp | 2 +- piet-gpu/shader/backdrop.spv | Bin 11696 -> 11696 bytes piet-gpu/shader/binning.comp | 4 +- piet-gpu/shader/binning.spv | Bin 15760 -> 15756 bytes piet-gpu/shader/coarse.comp | 49 +++++++------ piet-gpu/shader/coarse.spv | Bin 54164 -> 57852 bytes piet-gpu/shader/elements.comp | 34 ++++++--- piet-gpu/shader/elements.spv | Bin 65588 -> 69644 bytes piet-gpu/shader/tile_alloc.comp | 4 +- piet-gpu/shader/tile_alloc.spv | Bin 14692 -> 14704 bytes piet-gpu/src/lib.rs | 2 +- 13 files changed, 149 insertions(+), 86 deletions(-) diff --git a/piet-gpu-types/src/annotated.rs b/piet-gpu-types/src/annotated.rs index da17481..1bf3e9a 100644 --- a/piet-gpu-types/src/annotated.rs +++ b/piet-gpu-types/src/annotated.rs @@ -3,28 +3,33 @@ use piet_gpu_derive::piet_gpu; piet_gpu! { #[gpu_write] mod annotated { - struct AnnoFillImage { + struct AnnoImage { bbox: [f32; 4], + linewidth: f32, index: u32, offset: [i16; 2], } struct AnnoColor { bbox: [f32; 4], - rgba_color: u32, // For stroked fills. // For the nonuniform scale case, this needs to be a 2x2 matrix. // That's expected to be uncommon, so we could special-case it. linewidth: f32, + rgba_color: u32, } - struct AnnoClip { + struct AnnoBeginClip { + bbox: [f32; 4], + linewidth: f32, + } + struct AnnoEndClip { bbox: [f32; 4], } enum Annotated { Nop, Color(TagFlags, AnnoColor), - FillImage(AnnoFillImage), - BeginClip(AnnoClip), - EndClip(AnnoClip), + Image(TagFlags, AnnoImage), + BeginClip(TagFlags, AnnoBeginClip), + EndClip(AnnoEndClip), } } } diff --git a/piet-gpu/shader/annotated.h b/piet-gpu/shader/annotated.h index bcadd44..6b18155 100644 --- a/piet-gpu/shader/annotated.h +++ b/piet-gpu/shader/annotated.h @@ -2,7 +2,7 @@ // Code auto-generated by piet-gpu-derive -struct AnnoFillImageRef { +struct AnnoImageRef { uint offset; }; @@ -10,7 +10,11 @@ struct AnnoColorRef { uint offset; }; -struct AnnoClipRef { +struct AnnoBeginClipRef { + uint offset; +}; + +struct AnnoEndClipRef { uint offset; }; @@ -18,22 +22,23 @@ struct AnnotatedRef { uint offset; }; -struct AnnoFillImage { +struct AnnoImage { vec4 bbox; + float linewidth; uint index; ivec2 offset; }; -#define AnnoFillImage_size 24 +#define AnnoImage_size 28 -AnnoFillImageRef AnnoFillImage_index(AnnoFillImageRef ref, uint index) { - return AnnoFillImageRef(ref.offset + index * AnnoFillImage_size); +AnnoImageRef AnnoImage_index(AnnoImageRef ref, uint index) { + return AnnoImageRef(ref.offset + index * AnnoImage_size); } struct AnnoColor { vec4 bbox; - uint rgba_color; float linewidth; + uint rgba_color; }; #define AnnoColor_size 24 @@ -42,22 +47,33 @@ AnnoColorRef AnnoColor_index(AnnoColorRef ref, uint index) { return AnnoColorRef(ref.offset + index * AnnoColor_size); } -struct AnnoClip { +struct AnnoBeginClip { + vec4 bbox; + float linewidth; +}; + +#define AnnoBeginClip_size 20 + +AnnoBeginClipRef AnnoBeginClip_index(AnnoBeginClipRef ref, uint index) { + return AnnoBeginClipRef(ref.offset + index * AnnoBeginClip_size); +} + +struct AnnoEndClip { vec4 bbox; }; -#define AnnoClip_size 16 +#define AnnoEndClip_size 16 -AnnoClipRef AnnoClip_index(AnnoClipRef ref, uint index) { - return AnnoClipRef(ref.offset + index * AnnoClip_size); +AnnoEndClipRef AnnoEndClip_index(AnnoEndClipRef ref, uint index) { + return AnnoEndClipRef(ref.offset + index * AnnoEndClip_size); } #define Annotated_Nop 0 #define Annotated_Color 1 -#define Annotated_FillImage 2 +#define Annotated_Image 2 #define Annotated_BeginClip 3 #define Annotated_EndClip 4 -#define Annotated_size 28 +#define Annotated_size 32 AnnotatedRef Annotated_index(AnnotatedRef ref, uint index) { return AnnotatedRef(ref.offset + index * Annotated_size); @@ -68,7 +84,7 @@ struct AnnotatedTag { uint flags; }; -AnnoFillImage AnnoFillImage_read(Alloc a, AnnoFillImageRef ref) { +AnnoImage AnnoImage_read(Alloc a, AnnoImageRef ref) { uint ix = ref.offset >> 2; uint raw0 = read_mem(a, ix + 0); uint raw1 = read_mem(a, ix + 1); @@ -76,21 +92,24 @@ AnnoFillImage AnnoFillImage_read(Alloc a, AnnoFillImageRef ref) { uint raw3 = read_mem(a, ix + 3); uint raw4 = read_mem(a, ix + 4); uint raw5 = read_mem(a, ix + 5); - AnnoFillImage s; + uint raw6 = read_mem(a, ix + 6); + AnnoImage s; s.bbox = vec4(uintBitsToFloat(raw0), uintBitsToFloat(raw1), uintBitsToFloat(raw2), uintBitsToFloat(raw3)); - s.index = raw4; - s.offset = ivec2(int(raw5 << 16) >> 16, int(raw5) >> 16); + s.linewidth = uintBitsToFloat(raw4); + s.index = raw5; + s.offset = ivec2(int(raw6 << 16) >> 16, int(raw6) >> 16); return s; } -void AnnoFillImage_write(Alloc a, AnnoFillImageRef ref, AnnoFillImage s) { +void AnnoImage_write(Alloc a, AnnoImageRef ref, AnnoImage s) { uint ix = ref.offset >> 2; write_mem(a, ix + 0, floatBitsToUint(s.bbox.x)); write_mem(a, ix + 1, floatBitsToUint(s.bbox.y)); write_mem(a, ix + 2, floatBitsToUint(s.bbox.z)); write_mem(a, ix + 3, floatBitsToUint(s.bbox.w)); - write_mem(a, ix + 4, s.index); - write_mem(a, ix + 5, (uint(s.offset.x) & 0xffff) | (uint(s.offset.y) << 16)); + write_mem(a, ix + 4, floatBitsToUint(s.linewidth)); + write_mem(a, ix + 5, s.index); + write_mem(a, ix + 6, (uint(s.offset.x) & 0xffff) | (uint(s.offset.y) << 16)); } AnnoColor AnnoColor_read(Alloc a, AnnoColorRef ref) { @@ -103,8 +122,8 @@ AnnoColor AnnoColor_read(Alloc a, AnnoColorRef ref) { uint raw5 = read_mem(a, ix + 5); AnnoColor s; s.bbox = vec4(uintBitsToFloat(raw0), uintBitsToFloat(raw1), uintBitsToFloat(raw2), uintBitsToFloat(raw3)); - s.rgba_color = raw4; - s.linewidth = uintBitsToFloat(raw5); + s.linewidth = uintBitsToFloat(raw4); + s.rgba_color = raw5; return s; } @@ -114,22 +133,44 @@ void AnnoColor_write(Alloc a, AnnoColorRef ref, AnnoColor s) { write_mem(a, ix + 1, floatBitsToUint(s.bbox.y)); write_mem(a, ix + 2, floatBitsToUint(s.bbox.z)); write_mem(a, ix + 3, floatBitsToUint(s.bbox.w)); - write_mem(a, ix + 4, s.rgba_color); - write_mem(a, ix + 5, floatBitsToUint(s.linewidth)); + write_mem(a, ix + 4, floatBitsToUint(s.linewidth)); + write_mem(a, ix + 5, s.rgba_color); } -AnnoClip AnnoClip_read(Alloc a, AnnoClipRef ref) { +AnnoBeginClip AnnoBeginClip_read(Alloc a, AnnoBeginClipRef ref) { uint ix = ref.offset >> 2; uint raw0 = read_mem(a, ix + 0); uint raw1 = read_mem(a, ix + 1); uint raw2 = read_mem(a, ix + 2); uint raw3 = read_mem(a, ix + 3); - AnnoClip s; + uint raw4 = read_mem(a, ix + 4); + AnnoBeginClip s; + s.bbox = vec4(uintBitsToFloat(raw0), uintBitsToFloat(raw1), uintBitsToFloat(raw2), uintBitsToFloat(raw3)); + s.linewidth = uintBitsToFloat(raw4); + return s; +} + +void AnnoBeginClip_write(Alloc a, AnnoBeginClipRef ref, AnnoBeginClip s) { + uint ix = ref.offset >> 2; + write_mem(a, ix + 0, floatBitsToUint(s.bbox.x)); + write_mem(a, ix + 1, floatBitsToUint(s.bbox.y)); + write_mem(a, ix + 2, floatBitsToUint(s.bbox.z)); + write_mem(a, ix + 3, floatBitsToUint(s.bbox.w)); + write_mem(a, ix + 4, floatBitsToUint(s.linewidth)); +} + +AnnoEndClip AnnoEndClip_read(Alloc a, AnnoEndClipRef ref) { + uint ix = ref.offset >> 2; + uint raw0 = read_mem(a, ix + 0); + uint raw1 = read_mem(a, ix + 1); + uint raw2 = read_mem(a, ix + 2); + uint raw3 = read_mem(a, ix + 3); + AnnoEndClip s; s.bbox = vec4(uintBitsToFloat(raw0), uintBitsToFloat(raw1), uintBitsToFloat(raw2), uintBitsToFloat(raw3)); return s; } -void AnnoClip_write(Alloc a, AnnoClipRef ref, AnnoClip s) { +void AnnoEndClip_write(Alloc a, AnnoEndClipRef ref, AnnoEndClip s) { uint ix = ref.offset >> 2; write_mem(a, ix + 0, floatBitsToUint(s.bbox.x)); write_mem(a, ix + 1, floatBitsToUint(s.bbox.y)); @@ -146,16 +187,16 @@ AnnoColor Annotated_Color_read(Alloc a, AnnotatedRef ref) { return AnnoColor_read(a, AnnoColorRef(ref.offset + 4)); } -AnnoFillImage Annotated_FillImage_read(Alloc a, AnnotatedRef ref) { - return AnnoFillImage_read(a, AnnoFillImageRef(ref.offset + 4)); +AnnoImage Annotated_Image_read(Alloc a, AnnotatedRef ref) { + return AnnoImage_read(a, AnnoImageRef(ref.offset + 4)); } -AnnoClip Annotated_BeginClip_read(Alloc a, AnnotatedRef ref) { - return AnnoClip_read(a, AnnoClipRef(ref.offset + 4)); +AnnoBeginClip Annotated_BeginClip_read(Alloc a, AnnotatedRef ref) { + return AnnoBeginClip_read(a, AnnoBeginClipRef(ref.offset + 4)); } -AnnoClip Annotated_EndClip_read(Alloc a, AnnotatedRef ref) { - return AnnoClip_read(a, AnnoClipRef(ref.offset + 4)); +AnnoEndClip Annotated_EndClip_read(Alloc a, AnnotatedRef ref) { + return AnnoEndClip_read(a, AnnoEndClipRef(ref.offset + 4)); } void Annotated_Nop_write(Alloc a, AnnotatedRef ref) { @@ -167,18 +208,18 @@ void Annotated_Color_write(Alloc a, AnnotatedRef ref, uint flags, AnnoColor s) { AnnoColor_write(a, AnnoColorRef(ref.offset + 4), s); } -void Annotated_FillImage_write(Alloc a, AnnotatedRef ref, AnnoFillImage s) { - write_mem(a, ref.offset >> 2, Annotated_FillImage); - AnnoFillImage_write(a, AnnoFillImageRef(ref.offset + 4), s); +void Annotated_Image_write(Alloc a, AnnotatedRef ref, uint flags, AnnoImage s) { + write_mem(a, ref.offset >> 2, (flags << 16) | Annotated_Image); + AnnoImage_write(a, AnnoImageRef(ref.offset + 4), s); } -void Annotated_BeginClip_write(Alloc a, AnnotatedRef ref, AnnoClip s) { - write_mem(a, ref.offset >> 2, Annotated_BeginClip); - AnnoClip_write(a, AnnoClipRef(ref.offset + 4), s); +void Annotated_BeginClip_write(Alloc a, AnnotatedRef ref, uint flags, AnnoBeginClip s) { + write_mem(a, ref.offset >> 2, (flags << 16) | Annotated_BeginClip); + AnnoBeginClip_write(a, AnnoBeginClipRef(ref.offset + 4), s); } -void Annotated_EndClip_write(Alloc a, AnnotatedRef ref, AnnoClip s) { +void Annotated_EndClip_write(Alloc a, AnnotatedRef ref, AnnoEndClip s) { write_mem(a, ref.offset >> 2, Annotated_EndClip); - AnnoClip_write(a, AnnoClipRef(ref.offset + 4), s); + AnnoEndClip_write(a, AnnoEndClipRef(ref.offset + 4), s); } diff --git a/piet-gpu/shader/backdrop.comp b/piet-gpu/shader/backdrop.comp index 3c94017..8461275 100644 --- a/piet-gpu/shader/backdrop.comp +++ b/piet-gpu/shader/backdrop.comp @@ -53,7 +53,7 @@ void main() { break; } // Fall through. - case Annotated_FillImage: + case Annotated_Image: case Annotated_BeginClip: PathRef path_ref = PathRef(conf.tile_alloc.offset + element_ix * Path_size); Path path = Path_read(conf.tile_alloc, path_ref); diff --git a/piet-gpu/shader/backdrop.spv b/piet-gpu/shader/backdrop.spv index 8acb87f25b66486e15c9b97b239538a0ed441b42..9233dd05b0a317bda9720128ae2cdcf25a01080a 100644 GIT binary patch delta 14 VcmdlGy&-zT5XX2VNBZ;GHq`_+8G#} zIgav=GydVsWsp(82R@-%YQ#69h!#J z?Z@5cIv;BRnnBykuKTOd1bY?EiFtb4c6=9tLmFqZX3IF{pgm|_;7VW zd%+ubRA+Z~r~V^Rjs4X{T}Pt(cMc3JO{vk{a|EeJsbV=@;N5zFN9pe#y@I*5Q$D+r~E$ z-2SDp}omXyr+t-{_il?8LHZcULMGPt>OGZmrC3+}6D{`xvw8W1OY*nF)45TjBHg z`xkHrxC=WU{@22%ZoK?Jq3M6T!1g&AK7>7lR>PjchE~BBQ2j&!QQ^?TvYdQQiZ#XW$p$BH;Wq>TYVcsDS(w)+Tg z?Cb5#+{&`wtt@l5F}V5M%HUeJF}QxWF!*x#`6Ye^{DOiHvcMZy%Jf%qp6o^uZ7*sYsXh)?^EBLrHiY&G@Y=%n9(L2XPok-t*-eu_ zld9<^?9+ukMC_;GpP~8a|7_vcE>EplKEUT7*EWTme;#}`Z4U)Zr{m3FW7H3mRQ@TN z$sJ5gvb?Zcz)n?e@w>q0j>5kHR%^y*DSZ)Ar(IpFz;3WX>XGDD@HMnZvIng8-lET! z!1hxgq>Q=P30g1Bg7im$Uk1BkPq3wJjGu0U80-(>BANj)@K?YN>_E=ut6(*^!==}! z7V%#Ls|Ei$cn$65VkN%;Hb(s^`e)w)__(Y(ze!VbS;dj)cJOLi3@Q)bx4|xP6nO_& zEsE5q=Ke=+Ej-H)hl6=Y$_L23-A_@wD9*MJ?%>`Cu9Dc>Ky1G|!RFC=@b1EXpXQ_g z2Zdj2;U40>m2*;_?tr>U-Z5gtnXe%abtfXro{>SDOfGye+G8yapHasRx>V^1#RwRhhO3-mv>)Y-mg&a zqea?ZgH0QU_BUWJetR2hYBl3rMOV~?&_<5mf*mPJ`yE&p|k6^Wj=NE9Wj%~z;S*K z<{R`kl!LVB@^`RvHtKQgKWGPN#+gNKjQ;fu@dVgmU3_zRef|@!?t1(i>*IQ;|BI&P za)28*oz#^D*ShJkT-rfyEnYF{De&`Hr*{Y()AVQcG+h6k)FgiftaddxmisWgl55SF z|A5uH{LG9cc{X2?=a8SJ#rb+3Y`A*t)_=k3-V_l><@wP1T&gFrYM%9F;3~L01xq_j zNDI2Ybhb!>nmoJjsdIr#H705e%r*P?|d(sy74_&dCY7U*qJ$ixq7ONhv&@7JfO3oCz8qo`eLw;2UL9yP0a%; zelAsVtma~Sc^(U1T`cG|Sb6y7frkp8FCw{z`Zz2(vmE%s=tG!K^D$sSGa$E->?LR> z34Q{+{GoCp+!%EyAU~dFZYLm)zKg)udLzY^e-eVC0sd@W3a&F)obknQW7H$b%fQY! za-0lTixYAR*naA6ieIK`F~+GGv*`_&K~adE!}?Bg=(JDsNHGKwSl5^#C2*TEg^eZ}Ro6t3oP zBnnstw;#T2@(sKkK}Rg*3b2|p^n*R;#nzkwchz<=hzI!faJ4A@Ot6o|>l>u0S-d!k zUs>e?#6(f;SvXhHtTuvH!OL5+8tyyVSbY&U)VQp_XR)Qm?w<`_LmQ&SG}JuaXEqk} z_hje5nz@^=mp8(Fy{MbFgF4;>RyTwHsmS9Jcr#e7dRS-(sMCS`7f3CVycMjrmZFwX)Z4&n;eR`L5ryktf&U$FwV1>Pu!WlYJgj_0%3AXO zrA(&d0<0b5%DNDI7Rl`3|6KZAyEunh2k;KM2<$J>wU@sWt`=WG`qUzR*!T=Fgm)p7 zKh;Oz2B~{7Zo>L_ru1#3sd=Wvk!Lfwd>P8aHwyOtiXvBSK~Rh;b*eebNUoL7$2yo+ Oeq6!(Cb~|`I{ycsIyT7w delta 4627 zcmZvfdvI0N6~^~XasxsF28h-`fmEQrs8XK@L8DZlDk6PJi;V$;WPlqKn9ig;htblv+A39P`mVN>+GF z=j56zuf4Lpx#{o`DOJ*_G%^itYrmqYqnf6tlzMBmp)=PGu3tK^s(xcr_Yq>`)S9a4 zNCD4^6+@S6tLfl06KkJ(d&`WrqT|d>vu4eyPj22_J!9aK!5Xd;hv&Ck)S7Lnq_pme zzIFW@*3h{%-2)$3JFsq`wy|&J(5BkPJZW>R_Jzq6FDqp>+wx+Lt?b@N0 zCCDq23=)AnGcvU<2<%pEP2N%ecit;ud=E>p>VH2zlXSK(8zbKn!e zE^7;X5`Uiuj|6vMr@~(-eCo!_cNd!emkVqk^Dn@@hE~NM!)Q&F)Ra~aZyCR#QrS}P z?wr`cQOh?~n^#ajw{uD+bE`sK40o%7Yu%|bcaMTk!0#Rf*Sbe#?j8jw>u!~~yH)1yRB-dTTfw#NRB-*vO1uaDxe`B(^4Yvg57{xQ`%BF02AcaeFEyvl zShZeOwTk_6y?^@n>?p0*T8D-?!9OW(7p~{QuwZ7cZ~Z6n!1_&5z6;6_&2ey z7j_S^H^XnC`RM;v;n()0mMkCO+mP!ULe6gmFQRRufH8Eu4Q!11K9b6BqM6*m#3aiL z+X{B7a*O{C*xXV0?O?S=e3sH3kQ(jkVg>F58>Ajdwt=ssMUwA=)xJ>l83x-=y_Yh& zu-~I~(kw`S6!?9xEA|Sz+RFIp2M~jogD<2R5Ci`Z?7$A>Y<>h*b30smeQFW^W3XEA zpMV$AZY@^wr(k2$U!#9^H^9eb)p-|9&1DrwqMw1!qQ#){@ckU@5=W800INlj`qbS2 z$gPEE`QdOd4@vm|xwlVH)K-eKO@}+UH@vGP-d|xJgqBx1ZdKz;_qO!*lB%gmy1oQQc+&+=1XA2&|llQcCqP8^B;33kr$gZ~#;Z6|#l zco$f0Hsg#%dj>oXyQ{)R8SpfMqC4-6{47{)A=p8j(Q|P1n29`2%8U6)c?so3TJ-og z*f|^ZGWHePZklmsksG6bDI@#`?5M82IlL(U3s-kJUd8&j9P0n0skt2BEKfQOVLd@^ zSU9!vr;1>0FPGIa;$8>8g>|aFpkvDZn)Vt`+fIS{nu@UqpM6rVw z>$5*!pSMu<)8eeX4K`XmwvH;3x)(&mRnQz-pX;^PM;qU^4Vm?q|yADjLknjzz19Ne#%n3TNZ0{&R(c&r0Pa3|Pf zTHg6X(A16h^G6;tI~4599Kc)?>fJ|8%sv3}?0HbTz&;*S^}}dt9#rxERLQZLYw2}4 z30!_1$;0+&RxKF7e-;&99a z+fUv7@bgnG#yA$dIU_*`#~~OLuYg(LPW%Syi@1-1^_kRfSb6x42df1?0lbAA@l|;u z+!%GQ@65~UB!~`Q3Z8>gz&z{}J0=QZ+i7b5L;wH) diff --git a/piet-gpu/shader/coarse.comp b/piet-gpu/shader/coarse.comp index 0e37985..860be2e 100644 --- a/piet-gpu/shader/coarse.comp +++ b/piet-gpu/shader/coarse.comp @@ -208,7 +208,7 @@ void main() { uint tile_count; switch (tag) { case Annotated_Color: - case Annotated_FillImage: + case Annotated_Image: case Annotated_BeginClip: case Annotated_EndClip: // We have one "path" for each element, even if the element isn't @@ -322,37 +322,36 @@ void main() { } if (fill_mode_from_flags(tag.flags) == MODE_NONZERO) { if (tile.tile.offset != 0) { - CmdFill cmd_fill; - cmd_fill.tile_ref = tile.tile.offset; - cmd_fill.backdrop = tile.backdrop; + CmdFill cmd_fill = CmdFill(tile.tile.offset, tile.backdrop); Cmd_Fill_write(cmd_alloc, cmd_ref, cmd_fill); } else { Cmd_Solid_write(cmd_alloc, cmd_ref); } } else { - CmdStroke cmd_stroke; - cmd_stroke.tile_ref = tile.tile.offset; - cmd_stroke.half_width = 0.5 * fill.linewidth; + CmdStroke cmd_stroke = CmdStroke(tile.tile.offset, 0.5 * fill.linewidth); Cmd_Stroke_write(cmd_alloc, cmd_ref, cmd_stroke); } cmd_ref.offset += Cmd_size; Cmd_Color_write(cmd_alloc, cmd_ref, CmdColor(fill.rgba_color)); cmd_ref.offset += Cmd_size; break; - case Annotated_FillImage: + case Annotated_Image: tile = Tile_read(read_tile_alloc(element_ref_ix), TileRef(sh_tile_base[element_ref_ix] + (sh_tile_stride[element_ref_ix] * tile_y + tile_x) * Tile_size)); - AnnoFillImage fill_img = Annotated_FillImage_read(conf.anno_alloc, ref); + AnnoImage fill_img = Annotated_Image_read(conf.anno_alloc, ref); if (!alloc_cmd(cmd_alloc, cmd_ref, cmd_limit)) { break; } - if (tile.tile.offset != 0) { - CmdFill cmd_fill; - cmd_fill.tile_ref = tile.tile.offset; - cmd_fill.backdrop = tile.backdrop; - Cmd_Fill_write(cmd_alloc, cmd_ref, cmd_fill); + if (fill_mode_from_flags(tag.flags) == MODE_NONZERO) { + if (tile.tile.offset != 0) { + CmdFill cmd_fill = CmdFill(tile.tile.offset, tile.backdrop); + Cmd_Fill_write(cmd_alloc, cmd_ref, cmd_fill); + } else { + Cmd_Solid_write(cmd_alloc, cmd_ref); + } } else { - Cmd_Solid_write(cmd_alloc, cmd_ref); + CmdStroke cmd_stroke = CmdStroke(tile.tile.offset, 0.5 * fill_img.linewidth); + Cmd_Stroke_write(cmd_alloc, cmd_ref, cmd_stroke); } cmd_ref.offset += Cmd_size; Cmd_Image_write(cmd_alloc, cmd_ref, CmdImage(fill_img.index, fill_img.offset)); @@ -366,18 +365,22 @@ void main() { } else if (tile.tile.offset == 0 && clip_depth < 32) { clip_one_mask |= (1 << clip_depth); } else { + AnnoBeginClip begin_clip = Annotated_BeginClip_read(conf.anno_alloc, ref); if (!alloc_cmd(cmd_alloc, cmd_ref, cmd_limit)) { break; } - if (tile.tile.offset != 0) { - CmdFill cmd_fill; - cmd_fill.tile_ref = tile.tile.offset; - cmd_fill.backdrop = tile.backdrop; - Cmd_Fill_write(cmd_alloc, cmd_ref, cmd_fill); + if (fill_mode_from_flags(tag.flags) == MODE_NONZERO) { + if (tile.tile.offset != 0) { + CmdFill cmd_fill = CmdFill(tile.tile.offset, tile.backdrop); + Cmd_Fill_write(cmd_alloc, cmd_ref, cmd_fill); + } else { + // TODO: here is where a bunch of optimization magic should happen + float alpha = tile.backdrop == 0 ? 0.0 : 1.0; + Cmd_Alpha_write(cmd_alloc, cmd_ref, CmdAlpha(alpha)); + } } else { - // TODO: here is where a bunch of optimization magic should happen - float alpha = tile.backdrop == 0 ? 0.0 : 1.0; - Cmd_Alpha_write(cmd_alloc, cmd_ref, CmdAlpha(alpha)); + CmdStroke cmd_stroke = CmdStroke(tile.tile.offset, 0.5 * begin_clip.linewidth); + Cmd_Stroke_write(cmd_alloc, cmd_ref, cmd_stroke); } cmd_ref.offset += Cmd_size; Cmd_BeginClip_write(cmd_alloc, cmd_ref); diff --git a/piet-gpu/shader/coarse.spv b/piet-gpu/shader/coarse.spv index 9cc6cc6d3f7ee26532b557fd6f74627b6a7ffd7d..7e85c00d21ea24504008271f6a538a0d649e516b 100644 GIT binary patch literal 57852 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∓edH(31@h${Ao<7?2@f=jocs~WZXMOft9^XsAYO!Amc8|q= z8CWg$%far6*slPq#eSu>!hRK4ZCkFKD=^;GV8^sy+iLfGzlQo+ir0Wnim}V}Pv6&p zU9XINJy^~5H&EY5vHdg@+spMy`5}y81F3<fG-hq7Sdr;g1#E>-m!f*YBwY zf2QF2KVNYDUu^J~3aP=iq8{)IN^)0yyKjrgHmoJ@wCczW_U)KHBtg zPpD_SUxLf=UWTic_pe{UGoE`wZeQ*P{WIQgz>cSnHhtVv>KX4fa5>&@;cAE0KF;rV z;Ed;H8mGHQV1n{SC$T(@<(0pEn$JzPakdixW?)kZ)R{g-Yjsn{fqHtgJ(R~SZ-ggul^Zt z4zT0tqfH<8h++%Y4a)0Tc@fHC)o<7?2=|`=e@fHWWrn!bJ0alBBNw8}W`%+-F*p~*I zv)GpbtHr)7*g3|&99S*azvaP>X}`ABp6lNVV9$|U|K$3o?-jw$Cw;F3R?GEoWw7mY z{gdlsd#_om)ON3D;#|+R!nPg7V{1yTXWP_xOX_VYUeC6t&h>0{`siD8&;PXwuD(vq zbH4u&Za?Muz6P3l&i6IJYM$@L?fJVl+*n*s$B>KdU;nKCx?tB|A8q;=qk3|<9#}2k zJ8b|~Tb~l24Z->(rj5XAw-J-i`{rw7xNWtWPkHj`y~E!(_1J-ueC}9d^SKkneC|SR zKF!}&^pSk}jK59IlfTX2wkz|uIhuN|e_MdnJb(Pzu{H4D60V+nZVfgT^W&IuvE%7$ zKApq1;Pt5W(dInWGEYCl>_PF^m6CbxR%7S6JH>hah&uD!g+4M*zq{M5=9%XXaNCvh z+!0MZ^V|unmU%9V|ITpr%yU<;u{bx!l#3ltU+3u@c5h+62c_2LJk>H!&z-#~9(z(U z&%J8wJi95*vp;p_*`Gc#PoD_});#mv6K=b5o_nFGXP(_)wajw^{P%{dXPyJ}L3eJB zDHl7QzRuG*3w7Ifo9_cxb6%P2zHr-VbMFqoZvRje7*eSVvLk znl+j}vL@E!3hp_$f5EjMSn!G9gKM6-kAXW*Irsh0)N}n93s%cBj4`MsH{-!-$-@M& zTKNof0NlB`uEr=A8=wBU1|9@nu%3rDeVn6u#ybS8mO1$PjL+nq|O=~K_BHB98+-D;JAY8cS3`oRB-)IEx7)tH~5(a z*Z-V?>wjLsF92Uy^W^79xbrC2_$V~>tntxcwXCsoR7=i}1*>I^e*#u3*Z6q2xpNK7 zfn4nT_0Jlg2zHJ2(WZ|%RL^)PgUj(wfvc6zsi(m+o;j4;m-*8_r>+MQ?Nc+ zqf5YQ-pAu}DcrfFpUc2%Wj~kKKI!KQxLW&ppl`Jwv0e!`2FI`uecV4+QD04QPv!iQ z>z^2|0Xx6^4$-w>HQOIV-`9a{pXWNcKDPH9yuP-3eu{H`9*pfUipL?8oS#3gv3(y( z@%%iTI_Kw2^iiIlw-wy;=gxxbcXxx|TX6j!D7gL)7W`rGBQ?+Yb~D_#%Jc0OH1({( ztzfmBZ^o>aoZb#r%lUQ(SgkzY?t+^O_m^{$i=B`D*^l>t-H-Zc)5n~sXT1Bs<#_kQ z)ynhjXYhGZXQB46J4jAE$nTVqUZ7R}KE_g6scg!S#Qu!QZZV_S*|^V=DLCi)iZEZ@&Pm zWxpAtTJrf4SS|bQmteJWzr6xC53Z+kl8c>>{)y)|VDnPO^D3IU{?1pP-&=SMJTLzC zXM@Oka`U^VSi!2bZwT+FxJ*vz$K zh|RO@66ZT$`V*RZ_RgQdYS}x+sFpQ)53H8G^FCOu+&dq@ z&4YP$PI9sH(LeG06>MJ0cs@o`*WdZdvnHQ_T@(AXFYSrzQ*asAXK=Ob9j_CgQyedQ z$7{(KwVu86H@I5%&fmeAi}{uto4Ixjv3a&#;`|5LIQ7?0dvotxjNRjWO7_kLH9m*> z!Wy4PeG$dI^Hb{Vop0!~+&hHP!__Bm@Q#`%_utaqG0NQk6HPsP;a_02>;=bEOV0ld zR?A-a4_K|-3zIRf^D z3(AQ>fBm#K_v~%hJ#M08&)!_)>#1+4@r~5CQrxq*Q)kaEM4#oJUAo}v%QpCOHP4za z40nuj%@;va&mLS9td>3Km}*(;#lULWgNuXJTvNyKKE4Fp_%n|8@g>pJvo=eC)spjN zz~;i-Ixo4{IXQ;d`PeQwUmk4E_18~(Gv^Or_qd0WoZnmHJE`xh@!iz-Q_T6#sFU** z=(EiEY6VySVS}$x^W=O*xML(2eZVWBsVC!E!UI%VJW!&qcsV9%?fz`}o_SFXPM`-8V98)fKJpILvWiB)4 zjp5E&fBm#K=lnEwk0&UZ^OH4p&OfiQ&xcP@oc}Y_ng8bWST5I*QRLd$=7CJwK88@z@3MAF-E!A`1BVWo7dgsYiqdq(qBLAiDMgZ zGmdT1)U%(r1FPk`^d$@YmaYu0CG8b}VF%SCccQWmE0h@1a=0u)2cLn=gZ+qKm zZ?5Z$*gc-5WL=-DvFrMLjgO{&f#SOUf;#K^Bl;}Yb*~2RF1YJDxZp>^hZfv1hSfaz z+zoCF<+|>Urk-`(1FTlA>z;7uVP1?;E;c^>#m46MWXadwaMx9T{j?{J{@`XD1JKm7 zt^>hpS=S@zYY<#L>pBFSxXgvzSj>aI`W;2P;b8Nv&78;+=RROR>)YOT+MDb8GIo#h z8ub#~HFjNpNpUS-q0U;4qMvdt$29nUHBV0Vh1*ZLHY3o~vo<5aYUSFDh8v4>b4ab(StuW@i=DDyQQO+ERV09GsWbpYIXm=|M|i;Yizv9Y=DlCOzy z^QFIj+7rjY;AR|$ps8ms{}`;6y?h;g9ST>^UOpV0xXgvzSj>aI`rSagqrm1{n>mpu z&ZEITC)(b2+MDb8CU%e4DOuOw)!21?qsD%|{5{2W{R4H@^*H)0*Y$)3Ke6Dh>*)nQ z2YzP39pkK;C!fc_jiFrEW6{*Ju0H{*mFs#u+$B*GX{KRe$}o zCytZB%{Wd$Q_s4d3RcUyo=sn;!PT>_XMhuzxsV%+dC*tCb7^-r*nDd zTwU|z^IW(wlvFhy*7Zto;xZRUSCKt^vPW$8S#LS=Vdj*lce*?ag(4 zAG=3+@A)%4_n!B_uH|2-vz9l}Pq~)2H2AGGPfo6b+fTVR*Q2RtZEgUom1}b|+*q8q zW6H&jr@z>-Zlq++w}D+7{q@t{obyN6J<2(M0MDF11Uu)yQfJP0(@#0)dmH?|nrF_p z!|kV>^BrjFne&}swQ|n)z>USZIi_6fc>0SS>n=*>d_UMZ>#v{o=A1vr?(s1t=kF&q z_Wb>{#&=VHMsfaMP-p%R(`PyVM;rXHf_wfxUGO{M&lcPk+u~FfYa^7aO1cVq<%Vl6*Z5HedSdr#*2z0dB_eB$|58-=Blka{k^yUr)i+ zbN)U9PF&_fZY<_OU;XZ)-Sc4ct<9Xs6Xy$Hzay}{?X)-7^(*Wif1|jruF;n@b{+ms zaV@{5F5CLK{9B60KPYMY4OstwQoHu{_cG&_YyV2kH{?5&KGdxIU{G2Pce{H_&GtOUur=iwIoA1-q@;+@kY?IN}<6o5Q z?|;|W{r#UBJC6!q=QugFbDWC$P5LY6_*TK)ukRJyyna}4`~Pdf_5Y;i*;lW^jiKD% zuc4{C7tG^t!N!)q=kPjQAN8-u%NyD`{2g9xzoV!*7qNL+s-By=xpW?Xp!j$4rl;-O z;F+k^wL5P$9RSoKqixT~lr5U#{&zw2#5&SDR}g&pGxf*uJ#6F7ljXpMkwL z+Mn&Tn+w4It8Ry@@YPL6CdD?#kZnpm#O+DA1 ce}L6o(<6z~ee*3?{Tqt?x`))VA3RU~KadV)xBvhE literal 54164 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 WFW5e9A2SB$=m(Z}e9ob^bNC1DGLaGh literal 65588 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 AMgRZ+ delta 117 zcmexR^rUFRJtjd`25klg2FJX-eCM3Zf}qs2$)A}NH9%~jFasL{D}z3W0R%}&`4u3V zl|g{P7)XQkOtxoMo?OQKhSe!GJu?p^HMyIGfAbs`2|h-d&0B?bs{sH6 Cbso0> diff --git a/piet-gpu/src/lib.rs b/piet-gpu/src/lib.rs index 21860e0..ac83c7e 100644 --- a/piet-gpu/src/lib.rs +++ b/piet-gpu/src/lib.rs @@ -232,7 +232,7 @@ impl Renderer { const PATH_SIZE: usize = 12; const BIN_SIZE: usize = 8; const PATHSEG_SIZE: usize = 52; - const ANNO_SIZE: usize = 28; + const ANNO_SIZE: usize = 32; const TRANS_SIZE: usize = 24; let mut alloc = 0; let tile_base = alloc;