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

Issue 660744 link

Starred by 5 users

Issue metadata

Status: Archived
Owner:
Closed: Feb 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 2
Type: Bug



Sign in to add a comment

At DSF > 1.0, there is a transparent strip at bottom of floating windows that have web content

Project Member Reported by djkurtz@chromium.org, Oct 31 2016

Issue description

Chrome Version       : 54.0.2840.79
OS Version: 8743.76.0
Device: Elm

What steps will reproduce the problem?
1. Use default screen resolution: 
2. Start calculator app; it should start ~1/3 down from the top of the screen.
3. 

What is the expected result?

Calculator app is always opaque.

What happens instead of that?

At 1536x864, the foreground window will have a transparent strip at the bottom, if the bottom y-coordinate is in a magic range on the screen.  The actual range is app dependent (for example, the transparent range is lower on calculator than feedback).

Note: this issue only exists at 1536x864.  There are no transparent strips at larger or smaller screen resolutions.

Please provide any additional information below. Attach a screenshot if
possible.

See the attached video showing the issue.
 
test (3).webm
2.7 MB View Download

Comment 1 by skuhne@chromium.org, Oct 31 2016

I could not see that. I have however 56.x.
Cc: afakhry@chromium.org
Owner: malaykeshav@chromium.org
Over to malaykeshav@ because scaling.
Status: Started (was: Assigned)
There is another report https://b.corp.google.com/issues/31737761.

I haven't seen a report on other boards, and couldn't repro on peach-pi (on both this and ToT), so this is probably Elm specific. If this is working on 56, then it might have been fixed.
Labels: M-55
Still broken on latest elm beta - 55.0.2883.29 / 8872.27.0.

Comment 6 by pyeh@chromium.org, Nov 11 2016

This's another report https://feedback.corp.google.com/#/Report/15693233293

Still happened on elm beta - 55.0.2883.35 / 8872.35.0 from the above user feedback 

Comment 7 by osh...@chromium.org, Nov 11 2016

marcheu@, I think this is Elm specific. Can someone in your team look into this from driver/kernel perspective?
Labels: M-56
Summary: At 1.25x scale (1536x864 on elm/peach_pi) transparent strip at bottom of floating windows (feedback, calculator App, Screen Recorder, etc) (was: elm: At 1536x864 transparent strip at bottom of floating windows (feedback, calculator App, Screen Recorder, etc) )
@#7 - no, this is not elm specific.
I can repro on both peach_pi @ 8791.0 / 55.0.2857.0
Also, it is not fixed, I can repro on elm 56.0.2915.0 / 8975.0.0

Comment 9 by osh...@chromium.org, Nov 17 2016

Thanks, I confirmed that I could repro on other as well as on linux desktop.

 Issue 674214  has been merged into this issue.
#9 - I tried reproducing the error on linux with the following command line switches:
./chrome --enable-use-zoom-for-dsf --force-device-scale-factor=1.25 --ash-host-window-bounds="1920x1080"

Was successfully able to produce the error once, but not on any of the subsequent runs. Anything I am missing?
@#11: What version were you testing?

What are your steps to try to repro?
Was able to reproduce the issue. You need another window behind the clipping window to view the transparent strip. The transparent strip is not visible with the wallpaper.
It also only happens if _atleast_ one of the windows is maximized.

Comment 15 by enne@chromium.org, Jan 25 2017

Components: -Internals>Graphics Internals>Compositing
Debugging the issue let to this problem existing on every scale factor > 1 and not just 2.0.

There occurs a dead-strip on the screen that stretches end-to-end horizontally and has a height of approximately the shelf task bar.

The problem has the following quirks and points that would help in debugging:
 - Happens only if at-least one of the window is maximized.
 - The Y-origin for the start of dead-strip depends on the height of 
   the window that is being incorrectly clipped.
 - Playing youtube video in a window does not effect the clipping. It is 
   still clipped incorrectly.
 - Only the active window is clipped.
 - If dev tools is active, only the content is clipped, not the dev tools.
Effect on Video Playback.mp4
550 KB View Download
Layer and Quad bounds enabled.mp4
445 KB View Download
Only when maximized.mp4
659 KB View Download
Dev Tools is not effected.png
329 KB View Download
The underlying cause for this bug is due to occlusion.

The call happens here:
https://cs.chromium.org/chromium/src/cc/layers/surface_layer_impl.cc?rcl=2686c2ee9e80f445659632d5d507694c0e0f3fc4&l=81

Occlusion::GetUnoccludedContentRect(...) expects the size of the surface in DIP since it applies the layer root DrawTransform() to it. https://cs.chromium.org/chromium/src/cc/layers/layer_impl.cc?l=987

The draw transform moves the bounds to the actual screen location and also scales it. But in the case of surface_layer_impl the bounds we send are already scaled.
This causes the rect to be scaled twice and get logically occluded by the shelf bar at the bottom. (This is also confirmed from the fact that the bug only occurs when atleast one of the window is maximized since that changes the taskbar to opaque from transparent. The fact that the Y-Origin on the dead strip is dependent on the height of the window also confirms this)

@jaydasika, @weiliangc and @ajuma can better explain the working behind this.
Cc: ajuma@chromium.org weiliangc@chromium.org jaydasika@chromium.org
Summary: At DSF > 1.0, there is a transparent strip at bottom of floating windows that have web content (was: At 1.25x scale (1536x864 on elm/peach_pi) transparent strip at bottom of floating windows (feedback, calculator App, Screen Recorder, etc) )
Modifying the title to match the bug.

Device: All CrOS devices with DSF > 1.0
Project Member

Comment 20 by bugdroid1@chromium.org, Feb 10 2017

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

commit 9c7c49cb95b000cdaef78de90eb6a3cd46c663f9
Author: malaykeshav <malaykeshav@chromium.org>
Date: Fri Feb 10 22:14:21 2017

Changes the bounds being sent for occlusion from physical pixels to DIP

Occlusion::GetUnoccludedContentRect() applies a draw transform to the
bounds being sent. This draw transform already has the scaling applied
to it which causes the physical pixel bounds to be scaled again
leading to an incorrect visible rect result.

Also adds unittest to check for this scenario in the future.

BUG= 660744 
COMPONENT=CC, Layer, Surface Layer Impl
CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_trusty_blink_rel

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

[modify] https://crrev.com/9c7c49cb95b000cdaef78de90eb6a3cd46c663f9/cc/layers/surface_layer_impl.cc
[modify] https://crrev.com/9c7c49cb95b000cdaef78de90eb6a3cd46c663f9/cc/layers/surface_layer_impl_unittest.cc
[modify] https://crrev.com/9c7c49cb95b000cdaef78de90eb6a3cd46c663f9/cc/test/layer_test_common.cc

Status: Fixed (was: Started)
Labels: Merge-Request-57
What releases have this fix?
Is it in M58?
Can we please merge to M57 before it goes stable?
Project Member

Comment 23 by sheriffbot@chromium.org, Mar 9 2017

Labels: -Merge-Request-57 Hotlist-Merge-Review Merge-Review-57
This bug requires manual review: We are only 4 days from stable.
Please contact the milestone owner if you have questions.
Owners: amineer@(clank), cmasso@(bling), ketakid@(cros), govind@(desktop)

For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
This patch first appears in: 58.0.3009.0, which for ChromeOS means any version newer than 9282.0.0.

Comment 25 by dchan@google.com, May 30 2017

Labels: VerifyIn-60
Labels: VerifyIn-61

Comment 27 by dchan@chromium.org, Jan 22 2018

Status: Archived (was: Fixed)

Sign in to add a comment