New issue
Advanced search Search tips

Issue 723975 link

Starred by 2 users

Issue metadata

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


Participants' hotlists:
Hotlist-1


Sign in to add a comment

image-rendering: pixelated transitions/animations/transforms not functional on macOS

Reported by dra...@gmail.com, May 18 2017

Issue description

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

Steps to reproduce the problem:
Full test/repro case here: https://jsfiddle.net/Drath/p9vsqyuu/

1. image-rendering: pixelated does not function during transitions.
2. Furthermore, having a transform animation running corrupts all other image-rendering: pixelated; elements that are transformed, making ALL transformed elements blurry while animation is running.

What is the expected behavior?
image-rendering: pixelated should be applied while transitions/animations/transforms are happening like on Windows.

What went wrong?
image-rendering: pixelated is not being applied while transitions are running for transformed elements. Furthermore, having a transform animation running corrupts image-rendering: pixelated functionality on ALL elements.

Did this work before? N/A 

Does this work in other browsers? Yes

Chrome version: 58.0.3029.112  Channel: stable
OS Version: 10.12.5
Flash Version:
 
bug1.gif
626 KB View Download
bug2.gif
376 KB View Download

Comment 1 by dra...@gmail.com, May 18 2017

Confirmed this works on Linux (Ubuntu) as well. Appears to be macOS only - as far back as early 50.x versions. Perhaps it has been like this since implementation?
Components: -Blink>CSS Internals>Compositing>Animation
Status: Untriaged (was: Unconfirmed)
This is likely because the animation's transform is being rendered on an accelerated path, so I'm adding the composited animation label.

Comment 3 by piman@chromium.org, May 24 2017

Cc: ericrk@chromium.org
Owner: ccameron@chromium.org
Status: Assigned (was: Untriaged)
MacOS only... Not sure if GPU raster or compositing-using-core-animation is the issue. If happened all the way back in M50, maybe the latter?
We do create layers for the problematic cases, is it possible that we would draw using nearest filtering when using rasterization (no layer) or GLRenderer (other platforms), but linear filtering when using Core Animation?

Looking at the code, it looks like CALayerOverlay::filter is set for TextureDrawQuad [1], but not for TileDrawQuad [2]

[1] https://cs.chromium.org/chromium/src/cc/output/ca_layer_overlay.cc?type=cs&q=FromTextureQuad+package:%5Echromium$&l=157
[2] https://cs.chromium.org/chromium/src/cc/output/ca_layer_overlay.cc?type=cs&q=FromTileQuad+package:%5Echromium$&l=161
Thanks -- that fixes it. Fix out.
Project Member

Comment 5 by bugdroid1@chromium.org, May 31 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/7135e898f08758f2968c75dde6a16aa428a48084

commit 7135e898f08758f2968c75dde6a16aa428a48084
Author: ccameron <ccameron@chromium.org>
Date: Wed May 31 02:34:37 2017

cc: Fix CALayer filtering for TileDrawQuad

BUG= 723975 
CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_trusty_blink_rel

Review-Url: https://codereview.chromium.org/2913083002
Cr-Commit-Position: refs/heads/master@{#475754}

[modify] https://crrev.com/7135e898f08758f2968c75dde6a16aa428a48084/cc/output/ca_layer_overlay.cc

Status: Fixed (was: Assigned)

Sign in to add a comment