- From: Jeremy Orlow <jorlow@chromium.org>
- Date: Tue, 23 Feb 2010 16:40:36 +0100
On Tue, Feb 23, 2010 at 11:31 AM, Jeremy Orlow <jorlow at chromium.org> wrote: > On Tue, Feb 23, 2010 at 12:46 AM, Jonas Sicking <jonas at sicking.cc> wrote: > >> On Mon, Feb 22, 2010 at 4:34 PM, Jeremy Orlow <jorlow at chromium.org> >> wrote: >> > On Tue, Feb 23, 2010 at 12:05 AM, Jonas Sicking <jonas at sicking.cc> >> wrote: >> >> >> >> On Mon, Feb 22, 2010 at 3:43 PM, Jeremy Orlow <jorlow at chromium.org> >> wrote: >> >> > On Mon, Feb 22, 2010 at 11:10 PM, Jonas Sicking <jonas at sicking.cc> >> >> > wrote: >> >> >> >> >> >> On Mon, Feb 22, 2010 at 11:13 AM, David Levin <levin at google.com> >> wrote: >> >> >> > I've talked with some other folks on WebKit (Maciej and Oliver) >> about >> >> >> > having >> >> >> > a canvas that is available to workers. They suggested some nice >> >> >> > modifications to make it an offscreen canvas, which may be used in >> >> >> > the >> >> >> > Document or in a Worker. >> >> >> >> >> >> What is the use case for this? It seems like in most cases you'll >> want >> >> >> to display something on screen to the user, and so the difference >> >> >> comes down to shipping drawing commands across the pipe, vs. >> shipping >> >> >> the pixel data. >> >> > >> >> > Sometimes the commands take up a lot more CPU power than shipping the >> >> > pixels. Lets say you wanted to have a really rich map application >> that >> >> > looked great, was highly interactive/fluid, but didn't use a lot of >> >> > bandwidth. Rendering different parts of the screen on different >> workers >> >> > seems like a legit use. >> >> >> >> I admit to not being a graphics expert, but I would imagine you have >> >> to do quite a lot of drawing before >> >> 1. Drawing on offscreen canvas >> >> 2. Cloning the pixel data in order to ship it to a different thread >> >> 3. Drawing the pixel data to the on-screen canvas >> > >> > Presumably a smart UA implementation could make 1 and 3 be nearly >> nothing >> > (with copy on write and such) in many cases. >> >> Huh? I thought the whole point was that 1 was expensive, which was why >> you wanted to do it off the main thread. >> >> And 3 is what puts pixels on the screen so I don't see how you could >> do that without copying. You could possibly implement 3 using >> blitting, but that's still not "nearly nothing". >> >> Possibly 2 is what you could get rid of using copy-on-write. >> >> >> gets to be cheaper than >> >> >> >> 1. Drawing to on-screen canvas. >> > >> > You're assuming only one core. The norm on the desktops and laptops >> these >> > days is multiple cores. >> >> I did not assume that no. But it sounded like your use case was to >> rasterize off the main thread, get the pixels to the main thread, and >> then draw there. The last part (step 3 above) will definitely happen >> on the main thread no matter how many cores you have. >> > > Sorry, I didn't read clearly before sending. > > Yes, 1 would presumably be expensive and thus worth doing on a worker. > Even on a single core machine, workers are great for long tasks since you > needn't add breaks to your code via setTimeout so the UI can be updated > (which doesn't always work perfectly anyway). > > 2 could be done with copy on write in many cases. 3 is just blitting which > is generally a pretty fast operation. > > > I've gotten a couple responses back on use cases. I'll admit that about > half a simply resize/rotate. The others I've been told I cannot talk about > publicly. I think my map tiles example is similar enough to a bunch of them > though that you can get at least the conceptual idea. And my understanding > is that in prototypes, it's been very hard to do the (computationally > complex) rendering without making the UI go janky. There might be some more > use cases that come up that I can generalize into a public form, in which > case I'll do my best. > Note that doing rendering in a worker and then displaying it on the the main thread also gives you double buffering for no additional cost. This is something our teams are excited about as well. -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.whatwg.org/pipermail/whatwg-whatwg.org/attachments/20100223/8db7dce5/attachment.htm>
Received on Tuesday, 23 February 2010 07:40:36 UTC