Larger canvas size + captureStream causes canvas to no longer show updates
Reported by
mfar...@gmail.com,
Apr 19 2018
|
|||||||
Issue descriptionUserAgent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.117 Safari/537.36 Steps to reproduce the problem: Description: If we have a canvas size that is 300x220 or greater, we are finding that calling captureStream is causing the canvas to not update as expected when things are drawn to it. Please note the browsers/OS that this occurs on later in this report. Example JSBin http://jsbin.com/balekem/edit?html,js,console,output When this JSBin opens/runs - note that the canvas size is 200x200 (find the comment that says ‘Works with these dimension’). Every second, you will see the image that is drawn on the canvas change. Note also that the following line is commented out: //var stream = canvas.captureStream(); To verify the canvas is ok with larger sizes, change the size to 300x220. Leave the captureStream line commented out - and it will still work at the larger size. To break it - using the 300x220 size - uncomment the captureStream line. Run it and you will see that the canvas no longer updates as expected. Interesting note: Once broken, if you comment out captureStream again (and still use 300x220) it won’t work. Refresh the browser with these values - still won’t work. You have to open a new Chrome tab from another Chrome window (or fully restart Chrome) before this will work again at the 300x220 size. Once it has broken the existing tab seems to stay broken. When in the broken state - if you change back to the smaller 200x200 size - it will still work. We feel this might be related to the following bug but aren’t totally sure: https://bugs.chromium.org/p/chromium/issues/detail?id=810330 Helpful Note In the browsers that have issues, if we turn OFF ‘Accelerated 2D canvas’, this appears to work correctly. Turn it back on, and it breaks again. What OS/Browser Versions Have This Issue We have found that this issue occurs on Mac High Sierra with the following Chrome versions: Version 65.0.3325.181 (Official Build) (64-bit) Version 66.0.3359.117 (Official Build) beta (64-bit) On the same Macs, running the following version of Chrome Canary - we find that everything works correctly: Version 68.0.3398.0 (Official Build) canary (64-bit) On Windows, we find that this works correctly in Chrome 65. It appears to only break on the Mac. What is the expected behavior? In the scenario described in the 'Steps to reproduce the problem', we expect Chrome 65/66 to behave the way Chrome 68 does - meaning that larger canvas sizes should not prevent canvas updates when captureStream is used. What went wrong? In the 'Steps to reproduce the problem', it mentions how to see this bug in action. The broken state is that when larger canvas sizes are used on a Mac, with Chrome 65/66, the canvas no longer updates. Using smaller canvas sizes, everything works correctly. Did this work before? N/A Does this work in other browsers? Yes Chrome version: 66.0.3359.117 Channel: n/a OS Version: OS X 10.13.2 Flash Version: I don't have exact versions of when this worked, but this has been a feature in our product that has worked fine until recently. We feel like something regressed around Chrome 65, but don't know the exact version when this started to fail.
,
Apr 19 2018
We did a little research on what Macs have the issue and which ones don't. So far the only pattern we are seeing is that this works fine on Macs with integrated graphics (Intel HD Graphics, etc.) but fails on every Mac with dedicated graphics (Radeon Pro, NVIDIA GeForce, etc.). We have seen it work correctly on both High Sierra and El Capitan with Chrome 65 (both had integrated graphics). We have seen it fail on 7 Macs with High Sierra (all with dedicated graphics).
,
Apr 20 2018
,
Apr 23 2018
,
Apr 26 2018
Unable to reproduce the issue on mac 10.13.3 high sierra using chrome reported version #66.0.3359.117. Attached a screen cast for reference. Following are the steps followed to reproduce the issue. ------------ 1. Opened http://jsbin.com/balekem/edit?html,js,console,output. 2. Using the 300x220 size - uncommented the captureStream line and ran it. 3. Observed that canvas updated as expected. mfardig@ - Could you please check the attached screen cast and please let us know if anything missed from our end. Thanks...!!
,
Apr 26 2018
It appears in the screen recording that you didn't add the "canvas.captureStream" stream line in. It is the combination of the larger canvas size (300x200) AND canvas.captureStream that causes the issue. To reproduce: 1. Run as is with 200x200 (no canvas.captureStream) - works 2. Run with bigger canvas size 300x220 (still no canvas.captureStream) - works 3. Run with bigger canvas size 300x220 AND add canvas.capturesStream line - fails 4. Remove canvas.captureStream and use 300x200 - won't work even though it originally worked in step 2 I'll create a screen recording to show this in action as well.
,
Apr 26 2018
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
,
Apr 26 2018
I also wanted to highlight my previous note about the dedicated vs integrated graphics cards as we have seen this work correctly with integrated graphic cards but fail consistently with dedicated graphic cards. The link to a screen recording showing this issue in action is given below: https://youtu.be/ANJrXG8xdCA
,
Apr 26 2018
,
Apr 27 2018
https://chromium.googlesource.com/chromium/src/+log/36a4eb9029f33170885029536a7f4d4fdd14166d..173937996a5d06d7fdb1bcd96a91eb1d02ee9ff6 Bisect showed that it is fixed within this range. https://chromium.googlesource.com/chromium/src/+/7d3d2502e2e1dbcb42aec4b8f50b2677c1c29ed5 adressed this issue probably.
,
Apr 27 2018
Thanks a lot for the detailed bug report. Especially the video helped a lot :) Fix is published in the below versions. Canary 67 67.0.3382.0 Dev 67 67.0.3386.1 Beta 67 67.0.3396.18 |
|||||||
►
Sign in to add a comment |
|||||||
Comment 1 by vamshi.kommuri@chromium.org
, Apr 19 2018