- From: 勤 <gman@google.com>
- Date: Mon, 14 May 2012 17:55:44 -0700
- To: Boris Zbarsky <bzbarsky@mit.edu>
- Cc: public-webapps@w3.org
- Message-ID: <CAKZ+BNpPMrBSfa7F70DGzDGTANmMy=CFCYNP-JHbon4kmHdghw@mail.gmail.com>
On Mon, May 14, 2012 at 5:12 PM, Boris Zbarsky <bzbarsky@mit.edu> wrote: > On 5/14/12 8:03 PM, Gregg Tavares (勤) wrote: > >> var canvasSurface = new CanvasSurface(); >> var ctx = canvasSurface.getContext("2d")**; >> var pic = new Picture; >> pic.src = "http://someplace.com/**someimage.jpg<http://someplace.com/someimage.jpg> >> "; >> pic.onload = function() { >> ctx.drawImage(pic, 0, ); >> } >> >> Let's assume you can instantiate these things in either the page or a >> worker. Nether can be transfered. >> >> Would that work? What problems would that have? >> > > Two things that come to mind immediately: > > 1) Various canvas 2d context methods depend on the styles of the canvas > to define how they actually behave. Clearly this would need some sort of > changes for Workers anyway; the question is what those changes would need > to be. > Which methods are these? > > 2) How (or maybe whether) this should work with pic.src = " > http://someplace.com/**someimage.svg <http://someplace.com/someimage.svg>" > is an interesting question. > > 3) This leaves open the question of how to get data from the worker back > to the main thread to paint there. > I feel that's a somewhat orthogonal issue to getting a Canvas or CanvasSurface in a worker. At least for the WebGL case, WebGL already defines ways to share data safely between contexts so that use case is already covered. For a 2d context I can certainly imagine lots of ways. Some fast, some slow slow) pass the result of toDataURL back slow) pass an ImageData.data back (transfer of ownership) fast) some how use a CanvasSurface as the source of a video tag maybe there are some other ideas? But, even if we didn't resolve this, it's still massively useful, at least for WebGL, to be able to instantiate a WebGL context in a worker. > > #1 is an issue with any proposal that puts a 2d context in a worker. > > #2 is only an issue if we do the image loads in workers somehow; if we > wanted to just rasterize the SVG and pass the resulting data to the worker > there would be no problem, obviously. > > For #3, being able to transfer a canvas context from the page to a worker > but leave it painting to the canvas may still be desirable... > > -Boris > >
Received on Tuesday, 15 May 2012 00:56:14 UTC