New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 624027 link

Starred by 2 users

Issue metadata

Status: Fixed
Owner:
Closed: Aug 2016
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Mac
Pri: 2
Type: Bug



Sign in to add a comment

CSS filter effects rendering is clipped on hiDPI Mac

Reported by stefan.v...@gmail.com, Jun 28 2016

Issue description

UserAgent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36

Example URL:

Steps to reproduce the problem:
1. Install the "Turn Off the Lights" Chrome extension
https://chrome.google.com/webstore/detail/turn-off-the-lights/bfbmjmiodbnnpllbbbfblcplfjjepjdn
https://www.turnoffthelights.com
2. Open the Turn Off the Lights options page -> Click the "Visual Effects" tab. And enable the "Atmosphere Lighting" feature.
Enable the "Extract the color from the video" radio button. And also the "vivid mode checkbox"
2. When you open now this YouTube video
https://youtu.be/4KzFe50RQkQ?t=2h27m38s

3. You see it doesn't glow the whole content around this box. In the previous Chrome you see the glow over the box.

What is the expected behavior?
The glow must go over the whole part. This code in the Turn Off the Lights Chrome extension is never changed for this Atmosphere Lighting feature for YouTube. And you do not see this issue on the older Google Chrome version.

What went wrong?
Now the glow stop within that container box.

Does it occur on multiple sites: Yes

Is it a problem with a plugin? No 

Did this work before? Yes Chrome40

Does this work in other browsers? Yes 

Chrome version: 51.0.2704.103  Channel: n/a
OS Version: OS X 10.11.5
Flash Version: Shockwave Flash 22.0 r0

I am the developer of Turn Off the Lights. And there is possible an rendering issue with the CSS -webkit-filter: blur(30px); .
 

Comment 1 by tkent@chromium.org, Jul 5 2016

Components: -Blink Blink>CSS>Filters
stefan.vd01@: Could you provide a minimal repro case, preferably without using the extension (ie., web content only)? That would really help to track down this problem.
OK. I will share a live .html sample (within 30 minutes)
Here is the sample file:
https://www.turnoffthelights.com/issue624027.html

Click on the play button, and you see something like this (see JPG file). The blur effect is inside the box. In previous Chrome versions you didn't saw this issue.
issue-rendering-blur-effect.jpg
231 KB View Download
When I resize the Chrome window, it's gone. And see a smooth overflow (that do not stop the glow effect). But after a new video frame, it's back for the new colors.
Thanks for the quick reduction! Will investigate.
I couldn't reproduce this on Win/Mac/Linux, although all of my devices are loDPI. This might be a hiDPI issue.
I use a Macbook Pro Retina 15inch (begin 2013) and still see this issue. 
Owner: senorblanco@chromium.org
Status: Assigned (was: Unconfirmed)
I can repro on a mid-2012 Retina MacBook Pro. So it does seem to be HiDPI-specific.
bisect-builds.py says:

You are probably looking for a change made after 324657 (known good), but no later than 324661 (first known bad).
CHANGELOG URL:
  https://chromium.googlesource.com/chromium/src/+log/db4f05ad8220e94b82976196cdb307fd4be9047d..84fa271b53e4ef85329961f9d36d533b73bd2ff7

The only thing that looks relevant is "Mac: Partially enable partial swap" aka https://codereview.chromium.org/1065123002, although perhaps that change simply exposed a bug in cc or elsewhere.
Cc: jbau...@chromium.org ccameron@chromium.org
Summary: CSS filter effects rendering is clipped on hiDPI Mac (was: Render not outside box -webkit-filter: blur(30px))
passing --ui-disable-partial-swap on the command line seems to fix it, so I'm guessing that something is passing an insufficient (likely loDPI) invalidation rect to the partial swap code.
The problem is in the damage tracker, likely here:

damage_rect_for_this_update =
       filters.MapRect(damage_rect_for_this_update, SkMatrix::I());

The matrix passed to MapRect should likely contain the device scale factor. Forcing it to SkMatrix::MakeScale(2.0f) "fixes" the bug.

https://cs.chromium.org/chromium/src/cc/trees/damage_tracker.cc?sq=package:chromium&dr=C&rcl=1470626560&l=141
Status: Fixed (was: Assigned)
Components: -Blink>CSS>Filters Blink>Compositing>Filters

Sign in to add a comment