Polymon mute button looks corrupted on Android |
|||||||||
Issue descriptionVersion: Stable 53. OS: Android 7 What steps will reproduce the problem? (1) Load https://polymon.polymer-project.org/ (2) Login with a google account. (3) Look at the mute button which is an icon of a speaker. The icon is an Emoji and looks very busted on Android being painted over itself many times.
,
Oct 26 2016
This still reproduces in Canary 56.
,
Oct 26 2016
It looks like the multiple text-shadows are being represented as copies of the emoji instead of the expected solid color. Here is a reduced example of the problem: http://output.jsbin.com/qenuro On desktop Chrome, I see the emoji in the top left, and then red, green and blue silhouettes of those emoji. On Android Chrome, instead of silhouettes, I see multiple copies of the emoji.
,
Oct 26 2016
,
Oct 26 2016
text-shadow does not use CSS filter effects.
,
Oct 26 2016
BTW, the repro in #3 goes away when GPU rasterization is disabled (also goes away in 53, perhaps due to the viewport veto). So this looks like it might be a GPU raster bug.
,
Oct 26 2016
+bsalomon to see if he has thoughts on the cuase... Seems likely that the shader which generates the shadow is supposed to be sampling the emoji's alpha only (and using that to mask the shadow color), but instead is passing through the color as well? Note that this *only* reproduces with emoji - when normal text is used we get the desired behavior with GPU raster.
,
Oct 26 2016
,
Oct 27 2016
I'm able to repro this on Windows 10 and have a SKP from the page. The bug repros in SKP playback on GPU but not SW.
,
Oct 27 2016
This is a stripped down repro skp.
,
Oct 27 2016
There is no blur here but rather several draws of the emoji glyph with color filters installed. The problem is this line: https://cs.chromium.org/chromium/src/third_party/skia/src/gpu/text/GrAtlasTextContext.cpp?q=GrAtlasTextCont&sq=package:chromium&l=127 There are various versions of SkPaintToGrPaint* functions and the appropriate one to use here depends on whether the text is color bitmap text or not. The one called here is appropriate for non-color text. It sees a SkPaint with no SkShader and thinks it can apply the color filter once to the paint color rather than in the fragment shader. However, this isn't correct for emoji text since the glyphs themselves have variable color. I think there is a related bug (not manifested in this example) where for emoji text we should ignore the SkPaint's SkShader if there is one since the glyph bitmap supplants the shader (as though drawBitmap were called). I don't think we know here whether it is a color text draw or not at this point. Even worse the text run can have a mix of color and non-color glyphs. I think the fix is to delay doing this conversion until we have separated gylphs by how they will be rendered (color bitmap, lcd mask, or grayscale mask). BTW, the captured SKP will probably only repro this on Win10 since it contains a platform/font-specific glyph id.
,
Nov 16 2016
,
Jan 14 2017
This was fixed by this change: https://skia.googlesource.com/skia/+/6f1d36cc54dc635f5e4d0f925ef79c14914342bb |
|||||||||
►
Sign in to add a comment |
|||||||||
Comment 1 by esprehn@chromium.org
, Oct 26 201682.1 KB
82.1 KB View Download