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

Re: [Public WebGL] WebGL API request: asynchronous texture uploads



Rather than making 50 async APIs the solution to asynchronous features in WebGL is allowing WebGL in web workers.

http://www.khronos.org/webgl/wiki/SharedResouces

http://wiki.whatwg.org/wiki/CanvasInWorkers

Which are being actively worked on.



On Thu, Apr 25, 2013 at 3:44 AM, Tom Payne <tom.payne@camptocamp.com> wrote:
Texture uploads are slow on mobile devices [1], and have unpredictable performance, and it's hard to avoid jank. Applications that stream textures on demand, like map and virtual globe applications, are particularly sensitive to this.

Can the WebGL API be extended to allow asynchronous texture uploads?

Something like:

  var texture = gl.createTexture();
  gl.bindTexture(gl.TEXTURE_2D, texture);
  gl.texImage2DAsync(
    gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image,
    function() {
      // texture now uploaded, do something
    });
  // gl.texImage2DAsync also implicitly unbinds the texture

This might lead to the second advantage of eventually allowing the browser to JPEG/PNG decode the image in a separate, low-priority, thread.

Does this make sense?

Many thanks,
Tom


[1] http://www.chromium.org/developers/design-documents/impl-side-painting section "Texture Upload"



--
Camptocamp SA
Tom PAYNE
PSE A
CH-1015 Lausanne

+41 21 619 10 13 (direct)
+41 21 619 10 10 (centrale)
+41 21 619 10 00 (fax)