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

Issue 594516 link

Starred by 2 users

Issue metadata

Status: Fixed
Owner:
Closed: Mar 2016
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux , Windows
Pri: 1
Type: Bug-Regression

Blocking:
issue 492754



Sign in to add a comment

Paint invalidation does not pixel-snap when crossing paintingRoot boundaries

Reported by jshan...@etouch.net, Mar 14 2016

Issue description

Chrome Version: 51.0.2677.0 (Official Build) 1f6eed8e362f458537e8a95c1df27e38cdc9c334-refs/heads/master@{#380902}-32/64 bit
OS: Windows(Win 7-Aero enabled)

URL: http://www.rediff.com/movies/column/arbaaz-malaika-arjun-kapoor-and-raakhee-the-week-in-the-movies/20160314.htm

Steps:
1. Launch Chrome and navigate to above URL.
2. Move the mouse right-left over the image seen under 'Monday' and observe

Actual: Unwanted white lines is seen on moving the mouse right-left over the image.

Expected: No such lines should be seen on moving the mouse right-left over the image.

This is a regression issue broken in M-51, below is bisect info.

Good build: 51.0.2671.0

Bad build: 51.0.2672.0

Narrow bisect:
https://chromium.googlesource.com/chromium/src/+log/3436bb5299b3c8becec4c7033c25f3f8c70c5692..f2a796fea172c30e8ca69d59f36120c53c8b2acd?pretty=fuller&n=100

Suspecting: r379778 ?

Please help to reassign if your change is not the cause.

Note: This issue is not seen on Mac OS. 
 
Actual_video.mp4
778 KB Download
Expected_video.mp4
425 KB Download
Labels: ReleaseBlock-Stable
Adding release block label, please undo if not the case.
P.S - Issue is not observed on Linux OS as well.
Labels: OS-Linux
Thanks for reporting. I reproduced it in linux using ToT. Let me fix.

Comment 4 by bokan@chromium.org, Mar 14 2016

Components: -Blink Internals>Compositing>Rasterization Blink>Rendering
attach the minimal case. Invalidation of div border has off-by-1px bug.
border_invalidation_incorrect.html
1.4 KB View Download
border_invalidation_incorrect_iframe.html
588 bytes View Download
Cc: chrishtr@chromium.org le...@chromium.org
+ chrishtr, leviw
#5 - div inside iframe has invalidation issue. dirty region of div border is incorrectly calculated by off-by-1px. Do you have some clue? 
Blocking: 492754
Owner: chrishtr@chromium.org
I will look into it.
Project Member

Comment 9 by bugdroid1@chromium.org, Mar 15 2016

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

commit 5fd393f0a9d84a4a6b83c781f019c9637143ad29
Author: dongseong.hwang <dongseong.hwang@intel.com>
Date: Tue Mar 15 21:13:38 2016

compositor: Disable partial raster by default.

After enabling it, BUG= 594516  is regressed. Before fixing it, disable it by
default.

BUG= 492754 ,  594516 

Review URL: https://codereview.chromium.org/1801093003

Cr-Commit-Position: refs/heads/master@{#381316}

[modify] https://crrev.com/5fd393f0a9d84a4a6b83c781f019c9637143ad29/content/browser/gpu/compositor_util.cc

Labels: -ReleaseBlock-Stable
Removing releaseblock as the feature was reverted.
I can't reproduce this one at ToT with partial raster on Linux. Maybe partial
raster is not working on my machine.
Owner: dongseon...@intel.com
If you can repro still, please send it back to me again. Otherwise please close.
I loaded the reduced testcase and could not repro the kind of problem described
in the video in #0. I was able to reproduce  crbug.com/594962  however, so I think
partial raster works ok on my machine.
Rechecked this issue on Chrome Canary version:51.0.2682.0 and fix is working as intended.

Status: Fixed (was: Assigned)
Owner: chrishtr@chromium.org
Status: Assigned (was: Fixed)
I can still reproduce it. You have to revert #9, which disables partial raster.
It's reproducing step.
1. git revert 5fd393f0a9d84a4a6b83c781f019c9637143ad29
2. download two files at #5
3. ./out/Release/chrome <download folder>/border_invalidation_incorrect.html 
4. hover mouse on the red box
I can reproduce on 51.0.2679.0 / dev on my Linux box, but cannot reproduce with
a ToT Chromium with partial raster turned back on. Neither can I reproduce on
OS X / Retina ToT Chromium.  Hmm.


Cc: ericrk@chromium.org
Eric also can't repro at ToT. Are you sure it repros at ToT?
Owner: dongseon...@intel.com
#16- strange. I can reproduce on Ubuntu using ToT, whose latest commit is

commit 8d6342181e81b6dd0988283b785d0724c686f096
Author: reveman <reveman@chromium.org>
Date:   Fri Mar 18 09:30:46 2016 -0700

See the video clip. Did you revert the commit 5fd393f0a9d84a4a6b83c781f019c9637143ad29 ?
If nobody can reproduce, let me fix it.

Do you have some clues where is root cause?
issue594516.webm
1.1 MB Download
Owner: chrishtr@chromium.org
Now I can reproduce it. It seems it depends on the size of the window in some way.
#20 - yes, document scroll is needed to reproduce. It's why I add many <p> in the test, but may not enough for you. You might have very high resolution monitor.
The problem is I think a mismatch between paint invalidation and paint in cases
that involve subpixel offsets. This bug only reproduces if the body of the
root frame has an odd width. The margin is auto in the x direction, content
ins centered. Since the body has an odd width, the element with id "wrapper"
has a frame rect that has a 0.5 subpixel offset; the same goes for the "mars"
element in the frame.

The paint invalidation code does not do any pixel snapping when mapping to the
paint invalidation container, which in this case is the root LayoutView of the main frame.
I think the paint code is doing pixel snapping. I think the solution will be to match
those. Digging deeper to confirm now.
Status: Started (was: Assigned)
I have a fix, just cleaning it up. Need to make paint invalidation pixel-snap when
crossing transformed or frame boundaries.
Summary: Paint invalidation does not pixel-snap when crossing paintingRoot boundaries (was: Regression: Unwanted white lines is seen on moving the mouse right-left over the image at "rediff.com".)
Cc: wangxianzhu@chromium.org
Project Member

Comment 26 by bugdroid1@chromium.org, Mar 23 2016

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

commit 4e57e854bd3a3e47c4aa18ce934d838e4eed4030
Author: chrishtr <chrishtr@chromium.org>
Date: Wed Mar 23 02:17:56 2016

Pass nullptr for paintInvalidationState if it can't be used to map geometry.

If it can't be used for the current object, it can't be used for an ancestor.
Therefore, after it returning false for canMapToAncestor(), pass nullptr fur
further recursions up the layout tree.

Furthermore, using it for an ancestor is invalid because a
PaintInvalidationState object is bound to a single LayoutObject.

Also adds PaintInvalidationState early-outing to LayoutView.

BUG= 594516 

Review URL: https://codereview.chromium.org/1818963003

Cr-Commit-Position: refs/heads/master@{#382772}

[modify] https://crrev.com/4e57e854bd3a3e47c4aa18ce934d838e4eed4030/third_party/WebKit/Source/core/layout/LayoutBox.cpp
[modify] https://crrev.com/4e57e854bd3a3e47c4aa18ce934d838e4eed4030/third_party/WebKit/Source/core/layout/LayoutInline.cpp
[modify] https://crrev.com/4e57e854bd3a3e47c4aa18ce934d838e4eed4030/third_party/WebKit/Source/core/layout/LayoutObject.cpp
[modify] https://crrev.com/4e57e854bd3a3e47c4aa18ce934d838e4eed4030/third_party/WebKit/Source/core/layout/LayoutView.cpp
[modify] https://crrev.com/4e57e854bd3a3e47c4aa18ce934d838e4eed4030/third_party/WebKit/Source/core/layout/svg/LayoutSVGInlineText.cpp
[modify] https://crrev.com/4e57e854bd3a3e47c4aa18ce934d838e4eed4030/third_party/WebKit/Source/core/layout/svg/SVGLayoutSupport.cpp

Comment 27 by tkent@chromium.org, Mar 23 2016

Components: -Blink>Rendering Blink>Layout
Status: Fixed (was: Started)
Project Member

Comment 30 by bugdroid1@chromium.org, Mar 29 2016

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

commit 0aab1b730f57ecada9292ef04a1a324db7b658f9
Author: chrishtr <chrishtr@chromium.org>
Date: Tue Mar 29 21:43:08 2016

Mark one test as NeedsRebaseline after fix to referenced bug.

fast/repaint/repaint-during-scroll-with-zoom.html

TBR=wangxianzhu@chromium.org
BUG= 594516 

Review URL: https://codereview.chromium.org/1840183002

Cr-Commit-Position: refs/heads/master@{#383837}

[modify] https://crrev.com/0aab1b730f57ecada9292ef04a1a324db7b658f9/third_party/WebKit/LayoutTests/TestExpectations

Owner: wangxianzhu@chromium.org
Status: Assigned (was: Fixed)
The CL caused mismatch of fast-path and slow-path rects. 147 layout tests crash locally with ASSERT_SAME_RESULT_SLOW_AND_FAST_PATH enabled. They will show up in try results for https://codereview.chromium.org/1838853007 Patch Set 1.

I'm looking into it.
There seems no feasible way to let slow-path (bottom-up rects) and fast-path (top-down paint-offset) produce the same result crossing frames. Will change the rect comparison method to tolerate the differences.

Owner: chrishtr@chromium.org
Status: Fixed (was: Assigned)

Sign in to add a comment