On Mar 15, 2011, at 2:49 PM, Gregg Tavares (wrk) wrote: > > > On Mon, Mar 14, 2011 at 4:27 PM, Chris Marrin <cmar...@apple.com> wrote: > > On Mar 14, 2011, at 12:19 PM, Lars Knudsen wrote: > > > Hi, > > > > related to this: Is there any work ongoing to tie these (or more generic > > vector / matrix) classes to OpenCL / WebCL for faster computation across > > CPUs and GPUs? > > On WebKit I've experimented with an API to copy a CSSMatrix to an > Float32Array, which can be directly uploaded to the GPU. It's surprising how > much more efficient this was than copying the 16 floating point values out of > the CSSMatrix using JS. But I've hesitated proposing such an API while WebGL > and Typed Arrays were still in draft. Now that they're not, maybe it's time > to discuss it. > > I've also experimented with API in CSSMatrix to do in-place operations, > rather than creating a new CSSMatrix to hold the results. This too was a big > win, mostly I think because you get rid of all the churn of creating and > collecting CSSMatrix objects. > > > Would it be an even bigger win if CSSMatrix took a destination? That way you > can avoid all allocations where as if they do it in place then you always > need to make at least some copies to temps to get anything done.
When you say "destination" are you talking about operating on a Typed Array buffer directly? I suppose that would be possible, but that would really just be like having 3D matrix operations on the Float32Array object. I think it would be a mistake to make yet another set of matrix functions! And one way or the other you need to copy data between types. You might be doing a CSS animation and you want to get the current matrix, put it in a Float32Array and send it to WebGL (I've done this, works great!). The cost of copying a matrix from a CSSMatrix to a Float32Array is so low relative to all the other call overhead that I don't think eliding that copy would buy much. But I might be wrong. ----- ~Chris cmar...@apple.com