diff --git a/src/library_webgl.js b/src/library_webgl.js index 53936386f160..f883214dad58 100644 --- a/src/library_webgl.js +++ b/src/library_webgl.js @@ -1663,6 +1663,9 @@ for (/**@suppress{duplicate}*/var i = 0; i < {{{ GL_POOL_TEMP_BUFFERS_SIZE }}}; if (internalFormat == 0x84f9 /*GL_DEPTH_STENCIL*/) { internalFormat = 0x88F0 /*GL_DEPTH24_STENCIL8*/; } + if (internalFormat == 0x1908 /*GL_RGBA*/ && type == 0x1406 /*GL_FLOAT*/) { + internalFormat = 0x8814 /*GL_RGBA32F*/; + } } #endif if ({{{ isCurrentContextWebGL2() }}}) { @@ -1672,7 +1675,8 @@ for (/**@suppress{duplicate}*/var i = 0; i < {{{ GL_POOL_TEMP_BUFFERS_SIZE }}}; GLctx.texImage2D(target, level, internalFormat, width, height, border, format, type, pixels); } else if (pixels) { var heap = heapObjectForWebGLType(type); - GLctx.texImage2D(target, level, internalFormat, width, height, border, format, type, heap, toTypedArrayIndex(pixels, heap)); + var index = toTypedArrayIndex(pixels, heap); + GLctx.texImage2D(target, level, internalFormat, width, height, border, format, type, heap, index); } else { GLctx.texImage2D(target, level, internalFormat, width, height, border, format, type, null); } diff --git a/test/test_browser.py b/test/test_browser.py index 961273c4e05a..689b2a48b6aa 100644 --- a/test/test_browser.py +++ b/test/test_browser.py @@ -2323,8 +2323,14 @@ def test_float_tex(self): self.btest('float_tex.c', reference='float_tex.png', args=['-lGL', '-lglut']) @requires_graphics_hardware - def test_subdata(self): - self.btest('gl_subdata.c', reference='float_tex.png', args=['-lGL', '-lglut']) + @parameterized({ + '': ([],), + 'es2': (['-sMIN_WEBGL_VERSION=2', '-sFULL_ES2', '-sWEBGL2_BACKWARDS_COMPATIBILITY_EMULATION'],), + }) + def test_subdata(self, args): + if self.is_4gb() and args: + self.skipTest('texSubImage2D fails: https://crbug.com/325090165') + self.btest('gl_subdata.c', reference='float_tex.png', args=['-lGL', '-lglut'] + args) @requires_graphics_hardware def test_perspective(self):