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

Issue 713150 link

Starred by 1 user

Issue metadata

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



Sign in to add a comment

Elements not rendered on screen

Reported by asaf.ma...@emaze.com, Apr 19 2017

Issue description

UserAgent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36

Steps to reproduce the problem:
1. hover over blue area on screen
2. notice that the youtube iframe and blue background disappear

What is the expected behavior?
Elements will be visible on screen

What went wrong?
In production site, a thumbnail view of an html 'slide' is not rendered on screen (see screenshot)
In the reduced test case, it became evident that a combination of iframes, transform:scale,
and overflow:hidden  are necessary to reproduce the bug

Did this work before? N/A 

Does this work in other browsers? Yes

Chrome version: 57.0.2987.133  Channel: stable
OS Version: 10.0
Flash Version:
 
index.html
3.0 KB View Download
Capture.PNG
1.5 MB View Download
plunk of reduced test case: https://embed.plnkr.co/yWnnYIyjDAZww92g1gXz/

Comment 2 by pdr@chromium.org, Apr 19 2017

Labels: Needs-Bisect
Status: Untriaged (was: Unconfirmed)
Thank you for the reduced testcase!

Comment 3 by pdr@chromium.org, Apr 19 2017

Owner: chrishtr@chromium.org
Status: Assigned (was: Untriaged)
Minimized testcases are the best. Went ahead and bisected:
https://chromium.googlesource.com/chromium/src/+log/9945567ba9e578b6cfe5d9041104c7cfcfb22034..c96f366aac33e4f963a64e120d47c103bc02d194

Change the display list interest rect size to 4000px instead of 8000px.
https://chromium.googlesource.com/chromium/src/+/0f7133512f98bc2e2dc10dff33466652ad44025e

This is not caused by this change but is made worse by it. This is an interest rect bug.

Comment 4 by pdr@chromium.org, Apr 19 2017

Labels: -Needs-Bisect
Labels: BugSource-User PaintTeamTriaged-20170419
Not accounting for scale somewhere in the code? Does paint really own this issue?
Further reduced testcase attached, with no iframes.
test2.html
506 bytes View Download

Comment 7 Deleted

Even simpler testcase attached.
test2.html
497 bytes View Download
The interest rect appears to be correct. It seems something must be wrong
with the composited layer tree (or in cc itself).
Note that simpler test cases use 'will-change:transform.' 
without this property, Iframes were needed to reproduce the issue. Changing size, position, or src attribute of the iframes (in source code before page load) caused the bug to not reproduce. 
Owner: vmp...@chromium.org
Fixed by https://chromium.googlesource.com/chromium/src/+/e17b1bcf1010c97436fadf6e58e9235b977c74ea

Vlad, expected? If so, please close.
Original testcase still reproduces.
Cc: pdr@chromium.org wkorman@chromium.org enne@chromium.org
Owner: chrishtr@chromium.org
To sum up our investigation on Friday,

What happens here (case in #6) is that there is a large blue div with a tiny scale that is clipped. As far as Blink knows, without accessing its parent transform, the div is far away from the visible rect. The visible rect here is the clipping div. So the bottom portion of the div is not painted, since it falls outside of the interest rect before the scale.

The compositor, however, uses the post scale div to determine that it's only around 400px so it decides to use a single tile to cover this content. When creating the tile, we see that the raster source doesn't completely cover the tile, since a portion of the raster source in the tile region is unpainted. So we don't create a tile. This ends up with a checkerboard content.

The patch to reduce the interest rect simply exposes this problem, but any size static interest rect would have a similar problem if the scale is sufficiently small. 

I think the correct solution here is to consider the post scale div for painting. Alternatively, we can use the actual viewport as the visible rect. Either one of those solutions should address the issue.

The problem with trying to fix this in the compositor is that it's hard to differentiate this case from a case where the user simply scrolled into unpainted region. We can attempt to raster right up to the interest rect painted content, but this comes with its own set of challenges. For example, there is no mechanism that will invalidated this content right now, and we can't have tiles of dynamic sizes since they need to belong to a specific tiling.
Thank you for the detailed explanation. 
Any insights on why excluding will-change: transform  from div.target (case in #6)  prevents the bug from reproducing? 
Project Member

Comment 15 by bugdroid1@chromium.org, Aug 24 2017

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

commit 3171659ead3e26b743effcdd6cc22d43e48a16e1
Author: Chris Harrelson <chrishtr@chromium.org>
Date: Thu Aug 24 05:11:06 2017

Expand interest rect with padding in root space, not local layer space.

Root space is almost the same thing as pixel space, the padding is intended
to be in terms of screen pixels, and the heuristic is optimized for content which
does not have large scales.

This change also fixes an bug in which content with a very small scale
transform failed to draw, because its interest rect did not cover a single screen-
space tile.

Bug:  713150 
Cq-Include-Trybots: master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2
Change-Id: I4bf07b05b68d53751ab388ad905a5e333336262d
Reviewed-on: https://chromium-review.googlesource.com/628641
Commit-Queue: Chris Harrelson <chrishtr@chromium.org>
Reviewed-by: Vladimir Levin <vmpstr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#496956}
[add] https://crrev.com/3171659ead3e26b743effcdd6cc22d43e48a16e1/third_party/WebKit/LayoutTests/compositing/massive-scale-interest-rect-expected.png
[add] https://crrev.com/3171659ead3e26b743effcdd6cc22d43e48a16e1/third_party/WebKit/LayoutTests/compositing/massive-scale-interest-rect-expected.txt
[add] https://crrev.com/3171659ead3e26b743effcdd6cc22d43e48a16e1/third_party/WebKit/LayoutTests/compositing/massive-scale-interest-rect.html
[modify] https://crrev.com/3171659ead3e26b743effcdd6cc22d43e48a16e1/third_party/WebKit/Source/core/paint/compositing/CompositedLayerMapping.cpp
[modify] https://crrev.com/3171659ead3e26b743effcdd6cc22d43e48a16e1/third_party/WebKit/Source/core/paint/compositing/CompositedLayerMappingTest.cpp

Status: Fixed (was: Assigned)

Sign in to add a comment