[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Public WebGL] Purpose of WebGLObjectArray ?



On Fri, Jun 4, 2010 at 22:10, Chris Marrin <cmarrin@apple.com> wrote:
> The semantics needs to be that a new array is created, filled and returned.

Yes that's what I assumed too, afaik this semantic is the one defined by T[ ] not sequence<T>.


> Seems like whether this is literally returned by value or by a reference to a newly created object is a detail of the language binding.

According to the WebIDL spec sequence<T> is always passed by value, difference might be subtle in _javascript_ but it certainly can have negative consequences (at least in other languages) because it involves unnecessary copying.
In performance-sensitive methods like uniform*() it could be quite expensive to do so, e.g uniformMatrix4fv would copy 16 floats on the stack instead of just passing reference.

Performance aside, sequence<T> is not allowed to be null (since by-value) whereas T[] is allowed to be null (since by-reference [1]), in WebGL we need the value returned to possibly be null when a GL error has been generated (or context is lost).

[1] :  "The T[] type is a parameterized type whose values are (possibly zero-length) arrays of values of type T or the special value null."


Regards,