Closed Bug 1606251 Opened 5 years ago Closed 5 years ago

The outer blur of a video won't re-render on a new frame

Categories

(Core :: Graphics: WebRender, defect, P3)

71 Branch
defect

Tracking

()

VERIFIED FIXED
mozilla74
Tracking Status
firefox74 --- verified

People

(Reporter: wessel_kroos, Assigned: gw)

References

(Depends on 1 open bug)

Details

Attachments

(3 files)

Attached image Firefox bug - Outer blur paused.png (deleted) β€”

User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36

Steps to reproduce:

  1. play a video
  2. Add the CSS blur filter

Demo: https://codepen.io/wesselkroos/pen/qBEXMVP

Actual results:

The outer blur of the video is only rendered when the css filter is applied but does not update when a new video frame is rendered.

Expected results:

The outer blur should also update when the blurred content contains a new video frame.

Hi,

Thanks for submitting this bug to us!

I am attempting to reproduce your issue. I tried on Windows 10, with Firefox Nightly version 73.0a1 (2020-01-02) (64-bit) with youtube videos, but it's working fine in each video played.

Please download Firefox Nightly from here: https://nightly.mozilla.org/ , to see if the issue still occurs there as well. If after doing this you can still reproduce the bug, let me know.

I've already chosen a component for this bug in hope that someone with more expertise may look at it. We'll await their answer.

Best regards, Clara.

Component: Untriaged → Graphics
Flags: needinfo?(wessel_kroos)
Product: Firefox → Core

Can you share the contents of about:support as a text file? Thanks.

(In reply to Clara Guerrero from comment #1)

Hi,

Thanks for submitting this bug to us!

I am attempting to reproduce your issue. I tried on Windows 10, with Firefox Nightly version 73.0a1 (2020-01-02) (64-bit) with youtube videos, but but it's working fine in each video played.

Please download Firefox Nightly from here: https://nightly.mozilla.org/ , to see if the issue still occurs there as well. If after doing this you can still reproduce the bug, let me know.

I've already chosen a component for this bug in hope that someone with more expertise may look at it. We'll await their answer.

Best regards, Clara.

I can also reproduce this is Firefox Nightly 73.0a1 (2020-01-02) (64-bits)

Attached file Firefox about-support.txt (deleted) β€”

(In reply to Jessie [:jbonisteel] plz needinfo from comment #2)

Can you share the contents of about:support as a text file? Thanks.

Flags: needinfo?(wessel_kroos)
Component: Graphics → Graphics: WebRender

[:jbonisteel] [:tnikkel] Are you able to reproduce the bug with the provided about:support information?

I've found workaround that forces Firefox to rerender the outer blur.

I can force the rerender when I set or change the css property "transform: translateZ(<T>px)". In which T is an integer value.
So in case of a video tag I can give it an infinite animation that changes the T value.
Or in case of a canvas tag I can change the T value after executing canvasContext.drawImage().

I can move on now with this browser hack. But it would be nice to see this fixed properly.

Flags: needinfo?(jmuizelaar)

I'm not able to reproduce this on Nightly. Wessel, can you reproduce the problem on Nightly with WebRender on?

Flags: needinfo?(jmuizelaar) → needinfo?(wessel_kroos)

I can still reproduce this on Nightly with WebRenderer on. It kicks in after 10 seconds, or directly after I refreshed the codepen example.

Flags: needinfo?(wessel_kroos)

The priority flag is not set for this bug.
:jbonisteel, could you have a look please?

For more information, please visit auto_nag documentation.

Flags: needinfo?(jbonisteel)
Blocks: wr-73
Flags: needinfo?(jbonisteel)
Priority: -- → P3

I'm able to reproduce this locally. When I try to get a capture we crash when trying to read the video frame. I filed bug 1610857 for that.

Depends on: 1610857

(In reply to Jeff Muizelaar [:jrmuizel] from comment #10)

I'm able to reproduce this locally. When I try to get a capture we crash when trying to read the video frame. I filed bug 1610857 for that.

I've found that the size of the window seems to matter when trying to reproduce the problem.

Writing down the findings from today:

  • it's reproducible on all OSes
  • it's caused by picture caching. Disabling it doesn't show the issue.
  • interestingly, regenerating the frame also doesn't ever show the issue

Possible ways to investigate:

  1. Take a multi-frame capture (hi, Andrew!) and track down the frame that has instructions to generate the failing picture cache tile
  2. Have some integration with RenderDoc in WR/Gecko, so that make a multi-frame RenderDoc capture and find out how the bad tile is generated
  3. Ask Glenn about what triggers/options we can use to get closer to the problem

Looked at it some more, was able to capture in a multi-frame RenderDoc capture. The tile containing the issue isn't getting invalidated. Playing with the blur radius and enabling debug mode of picture caching reveals that picture cache dependencies do not correctly take the blur radius into account.

Flags: needinfo?(gwatson)

Interestingly, I can only see a non-blurred edge on the bottom part of the image when I test on Linux - but perhaps that's not surprising, since it's likely dependent on resolution, and tile boundaries.

Assignee: nobody → gwatson
Flags: needinfo?(gwatson)
Pushed by gwatson@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/784fdbec47d2
Fix invalidation for elements with inflation factors. r=kvark
Status: UNCONFIRMED → RESOLVED
Closed: 5 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla74

Glad to see that it will be fixed in 74 (of course after it passes the tests in beta).
Thank you for closing in on the specific cause and fixing the bug Dzmitry and Glenn!

Regressions: 1615141
Flags: qe-verify+

Reproduced the issue with Firefox 73.0a1 (20191229212642) on Windows 10x64.
The issue is verified fixed with Firefox 74.0b4 (20200216164042) on Windows 10x64, macOS 10.15 and Ubuntu 16.04. The issue is no longer occurring when refreshing the page, disabling/enabling the CSS filter, or waiting for the video to play a longer period of time while using the codepen example from comment 0.

Status: RESOLVED → VERIFIED
Flags: qe-verify+
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: