From d916a9e2c418c21c017d2b90051037f53bcc2ee1 Mon Sep 17 00:00:00 2001 From: Elias Naur Date: Tue, 30 Mar 2021 17:16:01 +0200 Subject: [PATCH] backdrop.comp: support stroked Annotated_Image and Annotated_BeginClip Commit 8db77e180efb1ed178a696d79d885a6e788aa7eb added support for strokes to FillImage and BeginClip, but missed backdrop.comp. Signed-off-by: Elias Naur --- piet-gpu/shader/backdrop.comp | 4 ++-- piet-gpu/shader/backdrop.spv | Bin 11696 -> 11680 bytes piet-gpu/shader/kernel4.spv | Bin 38540 -> 38640 bytes 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/piet-gpu/shader/backdrop.comp b/piet-gpu/shader/backdrop.comp index 8461275..b640d14 100644 --- a/piet-gpu/shader/backdrop.comp +++ b/piet-gpu/shader/backdrop.comp @@ -48,13 +48,13 @@ void main() { if (element_ix < conf.n_elements) { AnnotatedTag tag = Annotated_tag(conf.anno_alloc, ref); switch (tag.tag) { + case Annotated_Image: + case Annotated_BeginClip: case Annotated_Color: if (fill_mode_from_flags(tag.flags) != MODE_NONZERO) { break; } // Fall through. - 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); sh_row_width[th_ix] = path.bbox.z - path.bbox.x; diff --git a/piet-gpu/shader/backdrop.spv b/piet-gpu/shader/backdrop.spv index 9233dd05b0a317bda9720128ae2cdcf25a01080a..26aeb4c052b79c9b0757e2c832a45712534e4db5 100644 GIT binary patch literal 11680 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 BFpmHL delta 6958 zcmZ9Q3z$_^7036?+&erJPzMnld4oU#rerdjCYqsNsbEBy#xNitBBDG>Q#wRiS!U9; z2SyL05HUibhvB2LQnLq@(Zfe+S!#u8B`-nx{mz_4XXbw2p7sC#*Iw)F$J%Gly)SL3 zzi~r-kB0i8T~ew`-BZ^z>h2z^`u3=#=PN1AncKQ(?##B@#=Zj^s_CHGGku$~gR3cB z(YB~V0@bl?rC2Yg=foWX}n7PQTsT?l0mOD_r9k|6?_FKHc9e@QKTx$UbcP%X7;7-uuZRc4f2Uc%%&@S!7 zE#B~d5x)f-Tx$WBxdj~D0b0btwH9&Cvtr4u;&KP8IJhIWh=Xe_;xf00gF8SAIk?tB z4sJdRS>6(RY$Znrt(9En7H{yC_y=s>KK9sQ8ESfk_uqEfDa=K_qu>)besX z+vjGqU1;j^Rq)+l-=pX8Ue&(`tY-5=Vdn=Tp7AO=&&-k!8HRT+!s9$dhn>a{un(*r zeO?3mkZ#m)^w|$rzn(nCVDdQiNleGV)S;$j0JxMvmIfF>|hheCDpu zsl1`(^|b|4nuk|FuGw;Ox@J|l+7_@q^;K&drZm?z)>gJQ9oYq6BQ5%O1*@%3wFjp3 z$qeZRRo=})En+2hVK2uz)2^iLfp0%Ex34E$u5UWNUUK^C^R&xb7}#0(4goL28l%rX zzA@B|Uz6B|Cdi>h0$&GmohCROY=D8j8ssLw6JH%TlDk;wp6~%+HD8^3=p*k(GnvW75jzlUZ16z^kL?`{ zx3C9gMJJ182v|o14F#LTAW!BnurpM*kJUdMtRB^WG+52%r*rj>K#!aje>M`q>epdX zD|r-HJqGeRaC=Z=eqxS+I}r8qi5Lyn7bjv2*j(yyBF2K%iFG0in~$PQ;BT-~9ZjrHSkQ9p~O=19c*Qr+n}Q8cL+%-h5? zSJR}vf!+>RcM!u_4|z=E+z23&q6TnoR(uS}6Zr=kf? z!#V)1BVUG%qWeJM(^_=Pu^*)QF?L1a*T%y?1U5(9iPwSE*7N-Qlq*;ZCiB7K2)-UX zzQjKaHd**TQgG|T|NcG-_l>V^AMeN;!0Hk6F|au%8{~!daftVs4m)|D-3V4cm_3$% z0_;^&DSTc*>NgeoG4`poO>fFRiQ*&uOy&vpy1CHI5ZcN@vl=E*6<*DsLNng}`pxbh z)Uf(IZ@#H+0pEsIk1G5$m@3SYYvwu`sAy+5$BlA*wXqhT0lOAaS)T=~MPcYuGd?zd zIXvP&2ln!b_*K<`DJez*ovYw+fN#xj$j_tPN{g`7U^VZk==lYB`G%CQu07S-oP7yo z-WA1ad>O9hOCfH}+u-WuTT?9t{uOZf)?5Sk6vPerRk(fBy_VKu{p2^K&acrFT~Toi zdtH9D+<~%=7FWx9uv+a#d*$Et}pVdIo<20JaSr~F&kZ`1r(2;V9E+E~wfz~(q`wR{(%7*~t@n>3S| zTpYpofem&b_hRL7wcHQ(YEjp}1*;aZ4}iy)`1in@%CC^`BRJF8pdWxuQoec~gsaC& z{Sa)Ndc^$*Y+U*3`7vBQuAYa$YFYX2c^JWjIvurF%TK^@wLAirJG)1*_V*i$2mPnu zp;-Iqi^KjiFo!)kduME{n*G_Lsri1n%aft9~zz5-W|ubDf* z#;M2G%$;EMXz?v`7n+k9OWW@LJ4!oSnf}wU8|+M6B9~5Xkb7?(xPRK1)gG|3iqrBc zSS<=opPKPeTh>8-5-L1!ua{`H4{0wg(!2&%D_^4f;pIzIZa-7U&o);wbcg19sh*ck z{A}Z|c5;3GY*PWp&o=ykH#HYLwbO7`ajw7`_ZuA=pD{ew^@Og