Closed Bug 1487903 Opened 2 years ago Closed 2 years ago
blob invalidation: invalidation broken inside mask/filter
The attached file has an animated gif that doesn't animate for me.
FWIW, this is extracted from Google Slides
Priority: -- → P1
Weirdly enough resizing the window makes it animate sometimes.
(In reply to Jeff Muizelaar [:jrmuizel] from comment #0) > Created attachment 9005741 [details] > animated-gif.html > > The attached file has an animated gif that doesn't animate for me. Don't we need those css files? That gif works fine for me. But it stops for a short moment when I start Chrome Dev (on Debian Testing, KDE, Nvidia GTX 1060).
No, it works without the CSS files. I need to resize the window to some size that causes it to stop working.
mozregression --good 2018-04-01 --bad 2018-08-30 --pref gfx.webrender.all:true -a https://bug1487903.bmoattachments.org/attachment.cgi?id=9005741 > 10:44.16 INFO: Last good revision: a25b2c7238f46770d612f2a2cb2f8731e31261ee > 10:44.16 INFO: First bad revision: 133a13c44abedac2e448d315a32068ce1a5568f4 > 10:44.16 INFO: Pushlog: > https://hg.mozilla.org/integration/mozilla-inbound/pushloghtml?fromchange=a25b2c7238f46770d612f2a2cb2f8731e31261ee&tochange=133a13c44abedac2e448d315a32068ce1a5568f4 > 133a13c44abe Jeff Muizelaar — Bug 1458968. Adjust fuzz for webrender tests r=mstange > 0f55d0ffe494 Markus Stange — Bug 1458968 - Create the nsDisplaySVGWrapper item in nsSVGOuterSVGAnonChildFrame, not in nsSVGOuterSVGFrame. r=mattwoodrow > 6629dc2614ed Markus Stange — Bug 1458968 - Disable blend-difference-stacking.html because it fails now. r=mattwoodrow > 30d54bb4cc27 Markus Stange — Bug 1458968 - Make the nsSVGOuterSVGAnonChildFrame a reference frame by always returning true from IsSVGTransformed. r=mattwoodrow > 88d41ddd11be Markus Stange — Bug 1165185 - Add a test for not invalidating transformed elements inside SVG during scrolling. r=roc Does not happen without blob invalidation.
Summary: [blob] Animated GIFs in SVG sometimes don't animate → blob invalidation: Animated GIFs in SVG sometimes don't animate
This seems to be caused by the animated gif being behind a mask display item.
Summary: blob invalidation: Animated GIFs in SVG sometimes don't animate → blob invalidation: invalidation broken inside mask/filter
We have two possible approaches to fixing this: 1. When we run into a filter/mask just check if any of the child items have been invalidated and then invalidate the whole bounds 2. Refactor our use of BasicLayerManager to do this invalidation checking for us.
Using FrameLayerBuilder for invalidation ended up being easier and should make implementing fallback for 3d transforms inside masks easier so I went with that approach (2).
Assignee: nobody → jmuizelaar
Looks good. You'll need to retain the layer manager per mask/filter item though, you can't share them between multiple mask / filter items, otherwise you'll detect invalidations on every paint.
Comment on attachment 9006674 [details] Bug 1487903. Fix invalidation of filter and mask items. r=mstange Markus Stange [:mstange] has approved the revision.
Attachment #9006674 - Flags: review+
[Child 10403, Main Thread] ###!!! ASSERTION: Died during transaction?: '!InTransaction()', file /builds/worker/workspace/build/src/gfx/layers/basic/BasicLayerManager.cpp, line 325
Attachment #9006439 - Attachment is obsolete: true
This time with more transaction: https://treeherder.mozilla.org/#/jobs?repo=try&revision=0147f448b9ea139d1d6112db817a3a93693843c5
This time only cancel transaction if it's not over. I guess that's necessary :( https://treeherder.mozilla.org/#/jobs?repo=try&revision=1ce373a35bc90e2b98c7a45274bc783257feecf4
Pushed by email@example.com: https://hg.mozilla.org/integration/mozilla-inbound/rev/2766bfc77116 Fix invalidation of filter and mask items. r=mstange
You need to log in before you can comment on or make changes to this bug.