blob invalidation: invalidation broken inside mask/filter

RESOLVED FIXED in Firefox 64

Status

()

defect
P1
normal
RESOLVED FIXED
10 months ago
9 months ago

People

(Reporter: jrmuizel, Assigned: jrmuizel)

Tracking

({regression})

63 Branch
mozilla64
Points:
---
Dependency tree / graph

Firefox Tracking Flags

(firefox-esr52 unaffected, firefox-esr60 unaffected, firefox61 unaffected, firefox62 disabled, firefox63 disabled, firefox64 fixed)

Details

Attachments

(2 attachments, 1 obsolete attachment)

Posted file animated-gif.html
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.

Comment 3

10 months ago
partly-obsolete
(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.
Blocks: 1458968
Keywords: regression
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.
Posted patch WIP sketch (obsolete) — Splinter Review
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 only cancel transaction if it's not over. I guess that's necessary :(
https://treeherder.mozilla.org/#/jobs?repo=try&revision=1ce373a35bc90e2b98c7a45274bc783257feecf4

Comment 16

9 months ago
Pushed by jmuizelaar@mozilla.com:
https://hg.mozilla.org/integration/mozilla-inbound/rev/2766bfc77116
Fix invalidation of filter and mask items. r=mstange

Comment 17

9 months ago
bugherder
https://hg.mozilla.org/mozilla-central/rev/2766bfc77116
Status: NEW → RESOLVED
Closed: 9 months ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla64
Depends on: 1489663
You need to log in before you can comment on or make changes to this bug.