canvas 2d width and rendering bugs, combined with webgl |
|||||
Issue descriptionVersion: Version 51.0.2679.0 canary (64-bit) OS: OS X 10.9.5 This is a bit of a complicated one, but a repro html is attached (along with a video). Originally I thought this had to do with WebGL2 but it seems to happen the same with a normal non-webgl2 canary (no es3 apis flag). This just started showing in 51.0.2679.0 and was not happening before the recent canary push. The issue is somehow complicated with the fact that, when you have a retina canvas you set the width and height to X, but the style width and height to X/2. This is normally fine but then when you create a webgl canvas on the same page as a 2d canvas it seems to change the behaviour and the scaling for the 2d canvas no longer works. (It seems the scaling for a webgl canvas still works fine). In the case of the demo the black circle just disappears. However if you right click and "Save Image As..." the result is still the black circle as it should be in the canvas. So it seems like the canvas is right, but perhaps the compositing is wrong.
,
Mar 15 2016
Interestingly you can see that when the webgl elements becomes visible the 2d canvas disappears. Here is a video just scrolling and changing the window size which is making the webgl canvas visible / not visible.
,
Mar 15 2016
,
Mar 15 2016
You are probably looking for a change made after 380668 (known good), but no later than 380677 (first known bad). CHANGELOG URL: https://chromium.googlesource.com/chromium/src/+log/34f22b83b76ac457f93d35aece3ed56657689d7d..7bea53f048244f5d6d117c5484733130d3248009
,
Mar 15 2016
It's https://chromium.googlesource.com/chromium/src/+/f3d656148aa51e025094c93290d1fbf889064ca8 . Erik, can you take this and let's figure out whether to revert, disable, etc.?
,
Mar 15 2016
BTW, the fact that this happens might indicate strange behavior of IOSurfaces in conjunction with dual-GPU setups.
,
Mar 15 2016
Investigating.
,
Mar 15 2016
BTW, let's add a pixel test covering this case, similar to https://codereview.chromium.org/1804143002/ . Thanks.
,
Mar 15 2016
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/a3a0a383e8f185c4dd44fc4c2f4126b783a7f259 commit a3a0a383e8f185c4dd44fc4c2f4126b783a7f259 Author: erikchen <erikchen@chromium.org> Date: Tue Mar 15 21:12:11 2016 Temporarily disable IOSurface Canvas2D. There are compositing issues when both a Canvas2D and WebGL canvas are present on a page. BUG= 595063 Review URL: https://codereview.chromium.org/1804143003 Cr-Commit-Position: refs/heads/master@{#381315} [modify] https://crrev.com/a3a0a383e8f185c4dd44fc4c2f4126b783a7f259/third_party/WebKit/Source/platform/graphics/Canvas2DLayerBridge.h
,
Mar 16 2016
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/4e7ecf36fb2af3e3677c085de5b1ea6e7e75f3be commit 4e7ecf36fb2af3e3677c085de5b1ea6e7e75f3be Author: erikchen <erikchen@chromium.org> Date: Wed Mar 16 22:32:26 2016 Re-enable IOSurface Canvas2D. Previously, WebExternalTextureLayerImpl inferred the size of the texture from the bounds of the WebLayer, but the two are not necessarily the same. This CL passes the texture size through WebExternalTextureMailbox. This CL also adds a pixel test. BUG= 595063 CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel Review URL: https://codereview.chromium.org/1804243002 Cr-Commit-Position: refs/heads/master@{#381570} [modify] https://crrev.com/4e7ecf36fb2af3e3677c085de5b1ea6e7e75f3be/cc/blink/web_external_texture_layer_impl.cc [add] https://crrev.com/4e7ecf36fb2af3e3677c085de5b1ea6e7e75f3be/content/test/data/gpu/pixel_canvas2d_webgl.html [modify] https://crrev.com/4e7ecf36fb2af3e3677c085de5b1ea6e7e75f3be/content/test/data/gpu/pixel_webgl.html [add] https://crrev.com/4e7ecf36fb2af3e3677c085de5b1ea6e7e75f3be/content/test/data/gpu/pixel_webgl_util.js [modify] https://crrev.com/4e7ecf36fb2af3e3677c085de5b1ea6e7e75f3be/content/test/gpu/gpu_tests/pixel_expectations.py [modify] https://crrev.com/4e7ecf36fb2af3e3677c085de5b1ea6e7e75f3be/content/test/gpu/page_sets/pixel_tests.py [modify] https://crrev.com/4e7ecf36fb2af3e3677c085de5b1ea6e7e75f3be/third_party/WebKit/Source/platform/graphics/Canvas2DLayerBridge.cpp [modify] https://crrev.com/4e7ecf36fb2af3e3677c085de5b1ea6e7e75f3be/third_party/WebKit/Source/platform/graphics/Canvas2DLayerBridge.h [modify] https://crrev.com/4e7ecf36fb2af3e3677c085de5b1ea6e7e75f3be/third_party/WebKit/Source/platform/graphics/ImageBuffer.cpp [modify] https://crrev.com/4e7ecf36fb2af3e3677c085de5b1ea6e7e75f3be/third_party/WebKit/Source/platform/graphics/gpu/DrawingBuffer.cpp [modify] https://crrev.com/4e7ecf36fb2af3e3677c085de5b1ea6e7e75f3be/third_party/WebKit/public/platform/WebExternalTextureMailbox.h
,
Mar 17 2016
I'm seeing a very similar issue, but it appears to be unrelated to WebGL. Seems to be if I background the tab and open a new page my canvases will disappear upon returning, but Save As Image still works correctly. Apologies for not being able to narrow it down further.
,
Mar 17 2016
I'm seeing some flakes on the waterfall on trace_test.IOSurface2DCanvas, e.g: [62914:16899:0317/063813:ERROR:gpu_watchdog_thread.cc(362)] The GPU process hung. Terminating after 10000 ms. https://build.chromium.org/p/chromium.gpu/builders/Mac%2010.10%20Retina%20Release%20%28AMD%29?numbuilds=200 I'll be in MTV this afternoon if you want a second pair of eyes for debugging.
,
Mar 17 2016
11: That sounds like a bug with hibernation, which *should* be orthogonal to my changes. Can you file a new bug, and include: 1) the web page 2) your system specs and chrome version.
,
Mar 17 2016
ccameron: I filed a different bug: https://bugs.chromium.org/p/chromium/issues/detail?id=595754 Marking this one as fixed, since the original problem has been fixed.
,
Mar 17 2016
,
Mar 17 2016
neil: This looks like the problem you were seeing: https://bugs.chromium.org/p/chromium/issues/detail?id=588434
,
Mar 17 2016
Yeah, that seems related - though it's happening to me when I open a new tab in the same window, and unrelated to textareas. Noticed that I can go: page (working canvases) -> new tab -> any new website in new tab -> page (broken canvases) -> back to website I opened -> page the canvases will be working again. I'm not able to share a link to the page, nor have I been able to replicate on any publicly available site / cut down example of my site. I'll comment on that issue as well.
,
Mar 17 2016
additionally, it has just started happening with the latest version of chrome - it's affecting a big part of the first page of my web app so I'd have noticed it before.
,
Mar 17 2016
You should update to the latest version of Chrome Canary and see if you still see the bug. Hibernation was disabled for Canvas2D on Mac 3 days ago. https://bugs.chromium.org/p/chromium/issues/detail?id=588434#c35 This is also why it's helpful if you post your version of Chrome.
,
Mar 17 2016
Appears to be fixed in Canary, running them side by side chrome 49.0.2623.87 has the issue and 51.0.2680.0 canary doesn't. Thanks
,
Apr 7 2016
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/cfc49cf736c1b7d5879669b17a7dc68893f573d2 commit cfc49cf736c1b7d5879669b17a7dc68893f573d2 Author: erikchen <erikchen@chromium.org> Date: Thu Apr 07 22:08:55 2016 Enable IOSurface2DCanvasWebGL and 2DCanvasWebGL pixel tests. The reference images have been made by the bots. BUG= 595063 CQ_INCLUDE_TRYBOTS=tryserver.chromium.win:win_optional_gpu_tests_rel;tryserver.chromium.mac:mac_optional_gpu_tests_rel Review URL: https://codereview.chromium.org/1866893002 Cr-Commit-Position: refs/heads/master@{#385895} [modify] https://crrev.com/cfc49cf736c1b7d5879669b17a7dc68893f573d2/content/test/gpu/gpu_tests/pixel_expectations.py |
|||||
►
Sign in to add a comment |
|||||
Comment 1 by kbr@chromium.org
, Mar 15 2016Labels: M-51
Owner: kbr@chromium.org
Status: Assigned (was: Available)