| <html> |
| <head> |
| <script src="../../../resources/js-test.js"></script> |
| <script src="resources/webgl-test.js"></script> |
| </head> |
| <body> |
| <div id="description"></div> |
| <div id="console"></div> |
| |
| <script> |
| description("Test bufferData/bufferSubData with ArrayBuffer input"); |
| |
| debug('Regression test for <a href="https://bugs.webkit.org/show_bug.cgi?id=41884">https://bugs.webkit.org/show_bug.cgi?id=41884</a> : <code>Implement bufferData and bufferSubData with ArrayBuffer as input</code>'); |
| |
| if (window.internals) |
| window.internals.settings.setWebGLErrorsToConsoleEnabled(false); |
| |
| var gl = create3DContext(); |
| shouldBeNonNull("gl"); |
| |
| var array = new ArrayBuffer(128); |
| shouldBeNonNull("array"); |
| |
| var buf = gl.createBuffer(); |
| shouldBeNonNull(buf); |
| |
| gl.bufferData(gl.ARRAY_BUFFER, array, gl.STATIC_DRAW); |
| glErrorShouldBe(gl, gl.INVALID_OPERATION); |
| |
| gl.bindBuffer(gl.ARRAY_BUFFER, buf); |
| glErrorShouldBe(gl, gl.NO_ERROR); |
| |
| gl.bufferData(gl.ARRAY_BUFFER, -10, gl.STATIC_DRAW); |
| glErrorShouldBe(gl, gl.INVALID_VALUE); |
| |
| // This should not crash, but the selection of the overload is ambiguous per Web IDL. |
| gl.bufferData(gl.ARRAY_BUFFER, null, gl.STATIC_DRAW); |
| gl.getError(); |
| |
| gl.bufferData(gl.ARRAY_BUFFER, array, gl.STATIC_DRAW); |
| glErrorShouldBe(gl, gl.NO_ERROR); |
| |
| array = new ArrayBuffer(64); |
| |
| gl.bufferSubData(gl.ARRAY_BUFFER, -10, array); |
| glErrorShouldBe(gl, gl.INVALID_VALUE); |
| |
| gl.bufferSubData(gl.ARRAY_BUFFER, -10, new Float32Array(8)); |
| glErrorShouldBe(gl, gl.INVALID_VALUE); |
| |
| gl.bufferSubData(gl.ARRAY_BUFFER, 10, array); |
| glErrorShouldBe(gl, gl.NO_ERROR); |
| |
| gl.bufferSubData(gl.ARRAY_BUFFER, 10, null); |
| glErrorShouldBe(gl, gl.NO_ERROR); |
| </script> |
| </body> |
| </html> |