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

Re: [Public WebGL] Explicit unboxing for object identifiers

On Sun, Jan 8, 2012 at 5:59 PM, Vladimir Vukicevic <vladimir@pobox.com> wrote:

On Sun, Jan 8, 2012 at 11:37 AM, Benoit Jacob <bjacob@mozilla.com> wrote:

In Firefox <= 10, equal uniform locations give the same WebGLUniformLocation object, so the location1 === location2 test just works.

We just changed this for Firefox 11 as (per a mailing list discussion) there was agreement that this wasn't needed, and so the extra code in Gecko needed to make that work was seen as unneeded complexity.

What is you use case for comparing uniform locations? Why can't you implement it on your side, maybe with a shim/wrapper around webgl.getUniformLocation?

Hrrm, does this mean that:

  gl.getUniformLocation(prog, "foo") != gl.getUniformLocation(prog, "foo")

I think

    gl.getUniformLocation(prog, "foo") == gl.getUniformLocation(prog, "foo")

should be true but

    gl.getUniformLocation(prog, "foo") === gl.getUniformLocation(prog, "foo")

can be false

although honestly it's not hard to guarantee the second be true as well.


?  That seems really unexpected and very likely to cause hard to untable confusion and bugs.  Hashtable (object property) storage especially using uniform locations as keys doesn't seem that unexpected, for example to store the current value or somesuch for optimization purpose.

A developer or a library can't just wrap getUniformLocation -- they'd have to track all shaders attached to 'prog', track compilation and linking, etc., because any of those could cause the return value to actually -need- to change.  It seems very tricky to get right in a wrapper, and I don't see any reason to dump this complexity on wrappers when a simple hashtable would do it on the implementation side.

    - Vlad