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

Issue 664615 link

Starred by 2 users

Issue metadata

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



Sign in to add a comment

Canvas drawImage bug with large images (results in a tiled and wrong scaled image)

Reported by m...@krpano.com, Nov 11 2016

Issue description

Using Canvas + drawImage + scaling + a large image = buggy rendering output.

Here a online test-case:
http://krpano.com/chrome/bugs/ChromeCanvasDrawImageBug/

The test code is very simple - just drawing a large image via drawImage into a smaller 2d canvas:

var canvas = document.getElementById("canvas");
canvas.width = 1000;
canvas.height = 1000;

var canvasContext = canvas.getContext("2d");

var img = new Image();
img.addEventListener("load", function()
{
  canvasContext.drawImage(img,0,0,canvas.width,canvas.height);
});
img.src = "image6434x3217.jpg";  // happens only on large images!


Attached a screenshot from Chrome and Firefox (all other Browsers are also okay) with the test-case from above.

This is a regression, older Chrome versions were okay (but I don't know which version was the last okay one).

The problem itself happens on all systems - Windows, Mac, Android, but the graphical 'result' (how the image is broken/tiled) differs a bit between the systems.
 
ChromeCanvasDrawImageBug.jpg
394 KB View Download
ChromeCanvasDrawImageBug.zip
3.5 MB Download
Labels: -Type-Bug -Pri-3 M-54 Needs-Bisect OS-Windows Pri-2 Type-Bug-Regression
Status: Untriaged (was: Unconfirmed)
Able to reproduce the issue on Win7/64 bit - 54.0.2840.99 [Stable], 55.0.2883.44 [Beta] & 56.0.2916.0 [Canary]
Cc: rbasuvula@chromium.org
Components: Blink>Canvas
Labels: -Needs-Bisect hasbisect-per-revision M-56 OS-Linux OS-Mac
Owner: junov@chromium.org
Status: Assigned (was: Untriaged)
Tested in chrome stable #54.0.2840.99 and canary #56.0.2918.0 on Win 10.0 and was able to reproduce the issue.
Below are the Bisect Details:

Bisect Info:
=============
Good Build: 54.0.2832.0(Revision - 412743)
Bad Build: 54.0.2833.0 (Revision - 413134)


Bisect URL:
=========== 
You are probably looking for a change made after 412919 (known good), but no later than 412920 (first known bad).
CHANGELOG URL:
https://chromium.googlesource.com/chromium/src/+log/cd81492dada5b5ad4c2f6914323145cd8a541eb2..15dd1c2199030d52529b74f2a13decdc3c60cdd1

@ junov : 
------------------
Could you please look into the issue, pardon me if it has nothing to do with your changes and if possible please assign it to concern owner.

Review-Url: https://codereview.chromium.org/2254293002

Note : Able to reproduce the issue in Mac 10.11.6 , Ubuntu 14.0.
Cc: junov@chromium.org xidac...@chromium.org
 Issue 652488  has been merged into this issue.
Labels: -OS-Linux
I cannot repro this issue on Linux ToT, the suspected CL turns GPU-acceleration by default on Linux, that's unlikely the cause, I will do another bisect.
Bisect on Mac, here is the list:
https://chromium.googlesource.com/chromium/src/+log/98591f5484bd77a1c261eda4379e323ed51e0ad1..95032d5b02ec93895c40dfbea1eea40d0aff45e9

I see a skia-deps-roll, will do more investigation.
Cc: fmalita@chromium.org bsalomon@chromium.org
https://chromium.googlesource.com/skia.git/+/e553b64bca57723db2b8da1c015a5ebf467eade9 ?
Cc: -bsalomon@chromium.org
Owner: bsalomon@chromium.org
Thank you Florin. Passing this to Brian.
Brian, please take a look. Thank you.

Comment 8 by bsalo...@google.com, Nov 14 2016

Status: Started (was: Assigned)
I have a repro.

Comment 9 by bsalo...@google.com, Nov 14 2016

I have a fix. This was a typo on my part in the change cited in #6. I'm surprised we didn't have a test that caught this. I'll make sure we add one.
Thank you for your quick response, Brian.
Project Member

Comment 11 by bugdroid1@chromium.org, Nov 14 2016

The following revision refers to this bug:
  https://skia.googlesource.com/skia.git/+/d93f4a4291acff1032169ac903ac29b69659ea51

commit d93f4a4291acff1032169ac903ac29b69659ea51
Author: Brian Salomon <bsalomon@google.com>
Date: Mon Nov 14 19:41:58 2016

Compute the correct dst->src rect for bitmap tiles in SkGpuDevice

Use anisotropic scale to show bug in verylargebitmap test.

BUG= chromium:664615 

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=4774

Change-Id: If92eab6d26b9fb506670412a80df259f99db2a21
Reviewed-on: https://skia-review.googlesource.com/4774
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>

[modify] https://crrev.com/d93f4a4291acff1032169ac903ac29b69659ea51/gm/verylargebitmap.cpp
[modify] https://crrev.com/d93f4a4291acff1032169ac903ac29b69659ea51/src/gpu/SkGpuDevice.cpp

Project Member

Comment 12 by bugdroid1@chromium.org, Nov 15 2016

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

commit eabedb87de083d2ede558bb3b9ed7c91f50e9cc9
Author: skia-deps-roller <skia-deps-roller@chromium.org>
Date: Tue Nov 15 00:47:30 2016

Roll src/third_party/skia/ 286b96f87..662c2aed3 (9 commits).

https://skia.googlesource.com/skia.git/+log/286b96f87695..662c2aed38c1

$ git log 286b96f87..662c2aed3 --date=short --no-merges --format='%ad %ae %s'
2016-11-14 mtklein Fill in gamut-transformation TODOs for software pipeline.
2016-11-14 fmalita Fix Sk4fLinearGradient initial interval pinning
2016-11-14 liyuqian Temporarily Disable analytic AA for Google3
2016-11-14 kjlubick Add skpbench job
2016-11-14 csmartdalton skpbench: skiaperf.py modifications
2016-11-14 bsalomon Compute the correct dst->src rect for bitmap tiles in SkGpuDevice
2016-11-14 fmalita Stale visualize_color_gamut.cpp reference in tools.gyp
2016-11-14 robertphillips Revert "Add IORef capability to GrSurfaceProxy objects"
2016-11-14 liyuqian Set analytic AA as default.

BUG= 664615 

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

If the roll is causing failures, see:
http://www.chromium.org/developers/tree-sheriffs/sheriff-details-chromium#TOC-Failures-due-to-DEPS-rolls

CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_precise_blink_rel
TBR=stani@google.com

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

[modify] https://crrev.com/eabedb87de083d2ede558bb3b9ed7c91f50e9cc9/DEPS

Cc: pbomm...@chromium.org gov...@chromium.org
Labels: ReleaseBlock-Stable M-55
M54 is already in Stable now, may be we could take the fix for M55.Lopping to folks who are involved.
A friendly reminder that M55 Stable is launch is coming soon! Your bug is labelled as Stable ReleaseBlock, pls make sure to land the fix and get it merged into the release branch ASAP so it gets enough baking time in Beta (before Stable promotion). Thank you!

Also due to Thanksgiving holidays in US, please make sure fix is ready and merged to M55 latest by 5:00 PM PT Friday, 11/18/16 (sooner the better).
I'd be happy to cherry pick this. It is a very simple and safe change.
I have verified on canary channel on win and mac, and they both work fine. Brian, please go ahead with the merge. Thank you.
Labels: Merge-Request-55

Comment 18 by dimu@chromium.org, Nov 15 2016

Labels: -Merge-Request-55 Merge-Review-55 Hotlist-Merge-Review
[Automated comment] DEPS changes referenced in bugdroid comments, needs manual review.
Labels: -Merge-Review-55 Merge-Approved-55
Approving merge to M55 branch 2883 based on comment #16. Please merge ASAP. If merge happens today before 5:00 PM PT, we can pick it up for tomorrow's beta release.
Project Member

Comment 20 by bugdroid1@chromium.org, Nov 15 2016

Labels: merge-merged-m55
The following revision refers to this bug:
  https://skia.googlesource.com/skia.git/+/71bbd67b5ad911269b9582f6c20cc0cc2de1a02f

commit 71bbd67b5ad911269b9582f6c20cc0cc2de1a02f
Author: Brian Salomon <bsalomon@google.com>
Date: Tue Nov 15 17:11:17 2016

Compute the correct dst->src rect for bitmap tiles in SkGpuDevice

Use anisotropic scale to show bug in verylargebitmap test.

Cherry pick to M55

BUG= chromium:664615 

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=4774

Change-Id: If92eab6d26b9fb506670412a80df259f99db2a21
Reviewed-on: https://skia-review.googlesource.com/4774
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
Reviewed-on: https://skia-review.googlesource.com/4825
Reviewed-by: Brian Salomon <bsalomon@google.com>

[modify] https://crrev.com/71bbd67b5ad911269b9582f6c20cc0cc2de1a02f/gm/verylargebitmap.cpp
[modify] https://crrev.com/71bbd67b5ad911269b9582f6c20cc0cc2de1a02f/src/gpu/SkGpuDevice.cpp

Labels: -Merge-Approved-55
Status: Fixed (was: Started)

Sign in to add a comment