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

Issue 892988 link

Starred by 2 users

Issue metadata

Status: Fixed
Owner:
Last visit > 30 days ago
Closed: Nov 19
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Windows
Pri: 2
Type: Bug



Sign in to add a comment

Canvas rendering problem

Reported by vhp...@msn.com, Oct 7

Issue description

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

Steps to reproduce the problem:
Windows 10 64-bit 1809 (17763.1).

4K screen, 200% system scale, 100% browser scale.

Run my test.html, click the button 3 times, a part of the border of the top and left side of the canvas element will be missing 1 physical pixel width.

This problem is stable, and I tested the IE and Edge that came with the OS, they all good.

The attached GIF is a screen recording.

What is the expected behavior?

What went wrong?
N/A.

Did this work before? N/A 

Does this work in other browsers? Yes

Chrome version: 69.0.3497.100  Channel: stable
OS Version: 10.0
Flash Version:
 
test.html
639 bytes View Download
record.gif
933 KB View Download
Labels: Needs-Triage-M69
Cc: vamshi.kommuri@chromium.org
Labels: Triaged-ET Needs-Feedback
Thanks for filing the issue!

Unable to reproduce the issue on reported chrome version 69.0.3497.100 using Windows 10 Surface Pro.
Note: Currently we do not have any 4K monitor, so couldn't check the same on it.

@Reporter: Could you please let us now if this is specific to 4K monitor or is this issue seen on other displays too. Any further inputs from your end may be helpful.
A friend help to tested on 1080 monitor, the issue can reproduce with 200% browser scale, Chrome version is same. See the video for details.
Desktop 2018.10.08 - 14.54.08.02.mp4
2.9 MB View Download
Project Member

Comment 4 by sheriffbot@chromium.org, Oct 8

Labels: -Needs-Feedback
Thank you for providing more feedback. Adding the requester to the cc list.

For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
Components: -Blink>Canvas Blink>Layout Blink>Paint
I'm having a hard time reproing this.
But this seems to be layout/paint related, more than canvas, since it's the border of the element.

Could you please also attach the output of your chrome://gpu ?
@fs...

Yes, it's related to layout indeed. But if remove the getImageData() of my test.html, this problem will not happen.

Please see the attachment for chrome://gpu output.
gpu.txt
12.5 KB View Download
Components: -Blink>Paint -Blink>Layout Blink>Canvas Internals>Compositing
The border entirely disappears at time, and if you make it 5px wide you can see the width changing. This is Win 10 with a HighDPI monitor set at 125% desktop scaling.

The missing/incorrect border perfectly aligns with tile boundaries, so this is something about raster in the compositor. Blink does not know anything about tile boundaries.

Confirmed that the getImageData call causes the issue.
I tried turning off GPU acceleration, the problem has been solved.
In case the devs don't take that as a satisfying answer, #8 can you please turn the hardware acceleration on again and disable this flag:
#enable-gpu-rasterization

Restart Chrome and see if the issue is still solved.
Hi #9, I tried the procedures you mentioned and the problem was still solved.

Based on the suspicion of GPU, I tested it on the Dell XPS laptop with Intel UHD graphics, turning on the hardware acceleration and enable gpu rasterization, the problem did not occur.

However, I did not test it on AMD GPU, I guess whether NVIDIA GPU is involved in?
FYI, I noticed from about:gpu that this is on an RTX2080. That's a very new card, and it's entirely possible that there are driver bugs. (I have no proof, just noting.)
Owner: fs...@chromium.org
Status: Assigned (was: Unconfirmed)
Sounds like schenney@ managed to repro; fserb@ could you team up and take a look?
@ #11

The video I posted on #3 is running on GTX 1060 (the video is recorded by #8), and #7 seems to have reproduced the problem too. So this is not the new RTX series only, but maybe it's related to the newer version of the NVIDIA driver.
Cc: fs...@chromium.org
Components: -Blink>Canvas
Owner: danakj@chromium.org
This is probably compositing. Dana, could you help us?
Components: -Internals>Compositing Internals>GPU>Rasterization
If I'm reading this right it was diagnosed to gpu raster differences which would be a bug in skia raster implementation? Maybe could you reiterate where compositing is involved and I missed it?

Is this a regression, can it be bisected?
Owner: fs...@chromium.org
reassigning for questions
Owner: ----
Status: Available (was: Assigned)
So.
the getImageData() probably forces this back into a non-accelerated canvas, which  in turn makes it back to a non composited layer.
But yeah, it could as well be something in skia raster.

Removing myself from owner, hoping this gets picked up by someone on GPU Raster.
Owner: bsalomon@chromium.org
Status: Assigned (was: Available)
I think I have a repro. Most of the left edge of the black stroked rectangle disappears.
I grabbed a SKP using --enable-gpu-benchmarking and it doesn't repro in skia's viewer tool.
layer_0.skp
6.6 KB Download
Actually I get a similar result in viewer if I run it in ANGLE D3D11 mode.
Similarly, I get a repro in Chrome if I run with --use-gl=angle but not with --use-gl=desktop or --use-gl=swiftshader.
The difference seems to be related to the presence of dual source blending in non-ANGLE GLs. I get a repro if in regular GL if I disable dual source blending support in Skia.
Project Member

Comment 25 by bugdroid1@chromium.org, Nov 16

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

commit 6efc7a2bf8b43d5727cee986c806c0593f41c6c7
Author: chromium-autoroll <chromium-autoroll@skia-public.iam.gserviceaccount.com>
Date: Fri Nov 16 22:03:57 2018

Roll src/third_party/skia 07ee63d076e5..19ec80fb37ce (11 commits)

https://skia.googlesource.com/skia.git/+log/07ee63d076e5..19ec80fb37ce


git log 07ee63d076e5..19ec80fb37ce --date=short --no-merges --format='%ad %ae %s'
2018-11-16 bsalomon@google.com Discard ops that don't have a finite bounds.
2018-11-16 bsalomon@google.com Fix dst copy bounds for aa draw contained within clip.
2018-11-16 mtklein@google.com there are no POSTAMBLEs
2018-11-16 herb@google.com Link SubRuns to Runs, and Runs to Blobs.
2018-11-16 reed@google.com Revert "remove SK_SUPPORT_LEGACY_NESTED_HINTINGENUM from flutter"
2018-11-16 reed@google.com Revert "remove dead code around SK_SUPPORT_LEGACY_FONT_FLAGS"
2018-11-16 reed@google.com remove dead code around SK_SUPPORT_LEGACY_FONT_FLAGS
2018-11-16 reed@google.com remove SK_SUPPORT_LEGACY_NESTED_HINTINGENUM from flutter
2018-11-16 csmartdalton@google.com Prefer GrAAConvexPathRenderer over ccpr
2018-11-16 jvanverth@google.com Revert "Remove use of integers for atlas indexing"
2018-11-16 reed@google.com remove SK_SUPPORT_LEGACY_FONT_FLAGS from flutter


Created with:
  gclient setdep -r src/third_party/skia@19ec80fb37ce

The AutoRoll server is located here: https://autoroll.skia.org/r/skia-autoroll

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+/master/autoroll/README.md

If the roll is causing failures, please contact the current sheriff, who should
be CC'd on the roll, and stop the roller if necessary.

CQ_INCLUDE_TRYBOTS=luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux-chromeos-compile-dbg;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:mac_optional_gpu_tests_rel;luci.chromium.try:win_optional_gpu_tests_rel;master.tryserver.blink:linux_trusty_blink_rel

BUG= chromium:905782 , chromium:892988 ,chromium:860021
TBR=rmistry@chromium.org

Change-Id: I7e4852fe7dc50d97201d734aa426e1e8dbfc22ba
Reviewed-on: https://chromium-review.googlesource.com/c/1340574
Reviewed-by: chromium-autoroll <chromium-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: chromium-autoroll <chromium-autoroll@skia-public.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/master@{#608973}
[modify] https://crrev.com/6efc7a2bf8b43d5727cee986c806c0593f41c6c7/DEPS

Status: Fixed (was: Assigned)

Sign in to add a comment