Open Bug 1797051 Opened 2 years ago Updated 3 months ago

Parent with filter: blur makes child with backdrop-filter: blur disappear

Categories

(Core :: Graphics: WebRender, defect)

Firefox 106
defect

Tracking

()

Tracking Status
firefox-esr102 --- unaffected
firefox106 --- wontfix
firefox107 --- wontfix
firefox108 --- wontfix
firefox109 --- wontfix

People

(Reporter: goljatpre, Unassigned)

References

(Blocks 1 open bug, Regression)

Details

(Keywords: regression)

Attachments

(2 files)

User Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:106.0) Gecko/20100101 Firefox/106.0
Firefox for Android

Steps to reproduce:

I have a parent div with filter: blur(..) css property and a child with backdrop-filter: blur(..) css property.

Minimal reproduction repository: https://github.com/dPreininger/firefox-bug-report

User agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:106.0) Gecko/20100101 Firefox/106.0

Actual results:

The child was not visible until backrop-filter was removed from the child.

In my repo, this is done on parent hover.

Expected results:

The child should be visible at all times.

Component: Untriaged → Graphics
Product: Firefox → Core
Status: UNCONFIRMED → NEW
Component: Graphics → Graphics: WebRender
Ever confirmed: true
Attached video Demonstration.mp4

Nightly Vs Chrome

Mozregression points to the commit initially enabling backdrop filter: bug 1578503.

Glenn, any ideas?

Severity: -- → S3
Flags: needinfo?(gwatson)
Regressed by: 1578503

Set release status flags based on info from the regressing bug 1578503

No immediate ideas, it will need further investigation.

Flags: needinfo?(gwatson)

:gw any updates on the investigation?

Flags: needinfo?(gwatson)

No, haven't had a chance to look at this yet.

Flags: needinfo?(gwatson)
Blocks: 1816630

I independently also found this bug.

Codepen: https://codepen.io/AmyLoriley/pen/QWVPqWp?editors=1100

HTML

<div class="container">
  <div class="pop-up"></div>
</div>

CSS

body{
background-image: url("https://upload.wikimedia.org/wikipedia/commons/thumb/1/19/Cat_yawn_with_exposed_teeth_and_claws.jpg/2560px-Cat_yawn_with_exposed_teeth_and_claws.jpg")
}
.container{
background: rgba(0,0,0,0.5);
width: 100%;
height: 100px;
position: relative;
filter: blur(2px);
/* backdrop-filter: blur(10px); */
}
.pop-up{
display: none;
position: absolute;
top: 100px;
left: 0;
width: 100%;
height: 100px;
background: rgba(100,100,100,0.5);
backdrop-filter: blur(10px);
}
.container:hover .pop-up{
display: block;
}

Toying with the backdrop-filters and filter, I found the following to be true.

Parent — filter:blur(2px); Parent — backdrop-filter: blur(10px); Child — backdrop-filter: blur(10px); Is Child visible?
✖️ ✖️ ✖️
✖️ ✖️ ✔️
✖️ ✔️ ✖️
✖️ ✔️ ✔️
✔️ ✖️ ✖️
✔️ ✖️ ✔️
✔️ ✔️ ✖️
✔️ ✔️ ✔️

Interestingly, Chromium-based browsers also have difficulty with this. In the case of those browsers, the child div is always shown, but the backdrop-blur is not always correctly applied.

Reproduced this behavior here: https://codepen.io/darthvitalus/pen/xxeexQW?editors=1100
parent has filter: drop-shadow
child has backdrop-filter: blur
result: child is not visible
Both Chromium and Safari show child correctly

Found workaround (updated codepen ^)
If apply backdrop-filter: drop-shadow to parent - child is rendered

No longer blocks: 1816630
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: