W3C home > Mailing lists > Public > whatwg@whatwg.org > October 2013

Re: [whatwg] Counterproposal for canvas in workers

From: Glenn Maynard <glenn@zewt.org>
Date: Thu, 17 Oct 2013 21:10:17 -0500
Message-ID: <CABirCh-DzOFwBywH--Dsq4=kOvX1enHsJEWAdyORizvqe7qhgw@mail.gmail.com>
To: "Robert O'Callahan" <robert@ocallahan.org>
Cc: "whatwg@whatwg.org" <whatwg@whatwg.org>, Rik Cabanier <cabanier@gmail.com>
On Thu, Oct 17, 2013 at 8:22 PM, Robert O'Callahan <robert@ocallahan.org>wrote:

> That's not really a use-case. What would you actually be trying to do?
> IIUC Ken agreed that his use-cases that appeared to require a single
> context rendering to multiple canvases would be addressed just as easily
> (or better) by using multiple image elements, a single canvas, and doing
> "image.srcObject = canvas.transferToImageBuffer()".
>

I wasn't arguing a use case, I was agreeing with a feature.  I think the
use cases for rendering to multiple DOM elements (canvases or otherwise)
using WebGL are already well-established (less so for 2d canvas).

"transferToImageBuffer" looks like it would create a new ImageBuffer for
each frame, so you'd need to add a close() method to make sure they don't
accumulate due to GC lag, and it seems like turning this into a fast buffer
swap under the hood would be harder.  If you just point the context at the
final canvas in the first place, it can render directly into that canvas's
backbuffer, so the buffer flipping mechanics are identical to when it isn't
being used at all.

Also, with the "transferToImageBuffer" approach, if you want to render from
a worker into multiple canvases in the UI thread, you have to post those
ImageBuffers over to the main thread each frame, which has the same
(potential) synchronization issues as the transferDrawingBufferToCanvas
proposal.  With attachToCanvas, it's just like WorkerCanvas: the buffer
flipping can happen entirely within the worker.

-- 
Glenn Maynard
Received on Friday, 18 October 2013 02:10:48 UTC

This archive was generated by hypermail 2.4.0 : Wednesday, 22 January 2020 17:00:12 UTC