From 98d3a2eb24ac50a448e2a037a75fa801165d1bd3 Mon Sep 17 00:00:00 2001 From: Elias Naur Date: Fri, 12 Apr 2024 23:24:22 +0200 Subject: [PATCH] gpu: fix viewport arguments for opacity layers Fixes: https://todo.sr.ht/~eliasnaur/gio/574 Signed-off-by: Elias Naur --- gpu/gpu.go | 4 ++-- gpu/internal/rendertest/refs/TestOpacity.png | Bin 334 -> 1993 bytes gpu/internal/rendertest/render_test.go | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/gpu/gpu.go b/gpu/gpu.go index d8cc63a8..ea5a6b02 100644 --- a/gpu/gpu.go +++ b/gpu/gpu.go @@ -867,7 +867,7 @@ func (r *renderer) drawLayers(layers []opacityLayer, ops []imageOp) { Min: l.place.Pos, Max: l.place.Pos.Add(l.clip.Size()), } - r.ctx.Viewport(v.Min.X, v.Min.Y, v.Max.X, v.Max.Y) + r.ctx.Viewport(v.Min.X, v.Min.Y, v.Dx(), v.Dy()) f := r.layerFBOs.fbos[fbo] r.drawOps(true, l.clip.Min.Mul(-1), l.clip.Size(), ops[l.opStart:l.opEnd]) sr := f32.FRect(v) @@ -1232,7 +1232,7 @@ func (r *renderer) prepareDrawOps(ops []imageOp) { } } -func (r *renderer) drawOps(isFBO bool, opOff image.Point, viewport image.Point, ops []imageOp) { +func (r *renderer) drawOps(isFBO bool, opOff, viewport image.Point, ops []imageOp) { var coverTex driver.Texture for i := 0; i < len(ops); i++ { img := ops[i] diff --git a/gpu/internal/rendertest/refs/TestOpacity.png b/gpu/internal/rendertest/refs/TestOpacity.png index 7ddf84ea586c0eb523ad24953c066dc3f20d2889..c7f7d5af82c646bd8c649fdf6cdf9403c78bb0b2 100644 GIT binary patch delta 1980 zcmYk7do^ldCK}{*hDjcIr??kG9gas{6_Lnpnci(y>&euK2yN8-AY*aZA%lh^ z7S__kgIE=~yG{+7doJxV(eSwLqb-Ha~by7%0X||QCIji-pBX>y8SIw}P zC;rQNht25873GTtb&?P)!@TV_ajiRT&bxJ>)!wj>*WmbaX5{N<20H*~^1!&?Ggw%y zuw&7IZg9S2mdnnqjeummS`f@~(ZzGM+Wx!1QAcsg?QRk4k6R@# zB`3rTERVkm5yx;HtH(pKKJ-@$gZg=mk88&^qsu$@XusZx7MRI`s%==B&}!;Xgtp?v z?XBXEs9X;}dXzeBH8J-u!{4%RUmZw9J;0)};{Ey+Un0g)?NlQ znyA^RxCg65--v9=B!HXsqAHpy5{E{O!D-LRj zsbhkX7jOnD_!5wE@r#2`v@TAtb<{IY3jE!BcKkLk%5V>dg$E;&&Yj|z_5QbJJrq|_ zAqg8TxFrEnX_iSY)h+Hz4(SAe>Y{^Ka2p<@=sx`FlW)LPg~%H8RS<&t2i`8}Et-7W zoKC`uGs-*)6(CSal(qx2yFqDFz+&2x<=d+RHoEvSZ_E4xW+U{n1}h&c1h|1k+}J}r zhIU(K=eKn)FWKQd9JpNf^n5vWUg7gqEs+lQJwzV6S7*nD;Vi`gdwgV~!oXz-=K8pc zTaBTyp&p762-nJcZmAwcqR&O$*E`abNr#TDu3pkafl5y{sSBy#XOlFL+4v;KW6L^J z=u}SVi{Eqzu^48A+&C^8Ct!2iU9&FZ^2(zJNszr5d!&kp&pS8&NN=s%+jsjAxmy-xk1<$*H6;{=UjU#7Fyn#mY)6ygwrwQG%~<>Ov45%bY@82+98%-^7+f*~{KT-?pZJM;6Y!BW$GB8@SsW)k zOeNA%g1{M>jgbjLQYDiw2>s0=zVpZPePupyC(8=Q>nQ3;z*A-p@tnnZzr|+|X|YY- z1R%jTL;vId&q-V|ro`W2%HT(jQNkrg&KieHwo`fcvb@c~Rv@i$Q*PTry0Hs^8oghq z=rWOEph~_XwZ@cEmz7`XGPY9HTWGk$w(^^8Y3QPf$!hX7fB2$c!jjWsrw)pzL$O$YM(fyU(>Rhp*-~=ZlJ07*B-;Q`nm77EVbeFl^zGx|N8xw zJqRz=q<(L+lmsOHfHzXsQUZMy#o90q29F}g<}cIn;#gr&m66(Z8tALPh!L@NBg{p1 zJ@TcasN~5PE~5*2Q_3SI1W9?o7*=7O?MskgCcm$=Ose7m`su(G&Zzb(Js&I_)>6)x zjsfp!y4m?GJB06=Q)HA>C4f@-jQ-Pu{WrT2Pk#S9f>$WQ%*<8nyP)qZ$+uT;pKehB z(`hTy@#a$ov|pl7%%vJAVo+QfQndRXa5i{cV&ixdr>$K(e>YuFb;fzPGg|&jD@3A( zXJwQ!B$!tuu8ky_gLtP>=m7$@LHpBlv4|j1nx6HNn)x2-FvkUZlCZttU&Bt4rB-!MIzI+ zoeRRVrPs$M%ktkGH8lNO;j&uHe4A&kM%2rZ1rbDPACqglzN&v?#L3>x?%^KhrN021 CA#)c1 literal 334 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7xzrU=;OqaSW-r_4bCLV1t2x>p^*& z1Xl4WD?B>+yh0wZXjdc{ICu(gijJE;+dO>9os%-VOd}c@1Q?hc7&sUh6&P3?6wwfo{$>h4XJ-n<(s*?_DP#)0XC@xjIn5Qhbuy??GTdl_;}-KC)F#sCDK Lu6{1-oD!M