mirror of
https://github.com/servo/servo.git
synced 2025-08-06 22:15:33 +01:00
Issue #8738: bufferSubData and texImage2D argument sanity checks.
This commit is contained in:
parent
c6d613f75b
commit
f2fe401d7d
6 changed files with 165 additions and 44 deletions
|
@ -5853,6 +5853,12 @@
|
|||
"url": "/_mozilla/mozilla/webgl/bufferData.html"
|
||||
}
|
||||
],
|
||||
"mozilla/webgl/bufferSubData.html": [
|
||||
{
|
||||
"path": "mozilla/webgl/bufferSubData.html",
|
||||
"url": "/_mozilla/mozilla/webgl/bufferSubData.html"
|
||||
}
|
||||
],
|
||||
"mozilla/webgl/context_creation_error.html": [
|
||||
{
|
||||
"path": "mozilla/webgl/context_creation_error.html",
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<!doctype html>
|
||||
<meta charset="utf-8">
|
||||
<title>bufferData and bufferSubData input array type check (issue #6791, #6601)</title>
|
||||
<title>bufferData input array type check (issue #6791, #6601)</title>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script>
|
||||
|
@ -11,31 +11,24 @@ test(function() {
|
|||
|
||||
var coordI8 = new Int8Array([ 1, 0 ]);
|
||||
gl.bufferData(gl.ARRAY_BUFFER, coordI8, gl.STATIC_DRAW);
|
||||
gl.bufferSubData(gl.ARRAY_BUFFER, 1, coordI8);
|
||||
|
||||
var coordU8 = new Uint8Array([ 1, 0 ]);
|
||||
gl.bufferData(gl.ARRAY_BUFFER, coordU8, gl.STATIC_DRAW);
|
||||
gl.bufferSubData(gl.ARRAY_BUFFER, 1, coordU8);
|
||||
|
||||
var coordI16 = new Int16Array([ 1, 0 ]);
|
||||
gl.bufferData(gl.ARRAY_BUFFER, coordI16, gl.STATIC_DRAW);
|
||||
gl.bufferSubData(gl.ARRAY_BUFFER, 1, coordI16);
|
||||
|
||||
var coordU16 = new Uint16Array([ 1, 0 ]);
|
||||
gl.bufferData(gl.ARRAY_BUFFER, coordU16, gl.STATIC_DRAW);
|
||||
gl.bufferSubData(gl.ARRAY_BUFFER, 1, coordU16);
|
||||
|
||||
var coordI32 = new Int32Array([ 1, 0 ]);
|
||||
gl.bufferData(gl.ARRAY_BUFFER, coordI32, gl.STATIC_DRAW);
|
||||
gl.bufferSubData(gl.ARRAY_BUFFER, 1, coordI32);
|
||||
|
||||
var coordU32 = new Uint32Array([ 1, 0 ]);
|
||||
gl.bufferData(gl.ARRAY_BUFFER, coordU32, gl.STATIC_DRAW);
|
||||
gl.bufferSubData(gl.ARRAY_BUFFER, 1, coordU32);
|
||||
|
||||
var coordF32 = new Float32Array([ 1.0, 0.0 ]);
|
||||
gl.bufferData(gl.ARRAY_BUFFER, coordF32, gl.STATIC_DRAW);
|
||||
gl.bufferSubData(gl.ARRAY_BUFFER, 1, coordF32);
|
||||
|
||||
var coordF64 = new Float64Array([ 1.0, 0.0 ]);
|
||||
gl.bufferData(gl.ARRAY_BUFFER, coordF64, gl.STATIC_DRAW);
|
||||
|
|
79
tests/wpt/mozilla/tests/mozilla/webgl/bufferSubData.html
Normal file
79
tests/wpt/mozilla/tests/mozilla/webgl/bufferSubData.html
Normal file
|
@ -0,0 +1,79 @@
|
|||
<!doctype html>
|
||||
<meta charset="utf-8">
|
||||
<title>bufferSubData input array type check (issue #6791, #8738)</title>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script>
|
||||
test(function() {
|
||||
var gl = document.createElement("canvas").getContext("webgl");
|
||||
var texture_buffer = gl.createBuffer();
|
||||
gl.bindBuffer(gl.ARRAY_BUFFER, texture_buffer);
|
||||
|
||||
|
||||
//
|
||||
// Issue #6791
|
||||
//
|
||||
|
||||
// Bind to a 20 Int8 buffer
|
||||
var longBuffer = new Int8Array([ 1, 0, 1, 0, 1, 0, 1, 0, 1, 0,
|
||||
1, 0, 1, 0, 1, 0, 1, 0, 1, 0 ]);
|
||||
gl.bufferData(gl.ARRAY_BUFFER, longBuffer, gl.STATIC_DRAW);
|
||||
|
||||
var coordI8 = new Int8Array([ 1, 0 ]);
|
||||
gl.bufferSubData(gl.ARRAY_BUFFER, 1, coordI8);
|
||||
|
||||
var coordU8 = new Uint8Array([ 1, 0 ]);
|
||||
gl.bufferSubData(gl.ARRAY_BUFFER, 1, coordU8);
|
||||
|
||||
var coordI16 = new Int16Array([ 1, 0 ]);
|
||||
gl.bufferSubData(gl.ARRAY_BUFFER, 1, coordI16);
|
||||
|
||||
var coordU16 = new Uint16Array([ 1, 0 ]);
|
||||
gl.bufferSubData(gl.ARRAY_BUFFER, 1, coordU16);
|
||||
|
||||
var coordI32 = new Int32Array([ 1, 0 ]);
|
||||
gl.bufferSubData(gl.ARRAY_BUFFER, 1, coordI32);
|
||||
|
||||
var coordU32 = new Uint32Array([ 1, 0 ]);
|
||||
gl.bufferSubData(gl.ARRAY_BUFFER, 1, coordU32);
|
||||
|
||||
var coordF32 = new Float32Array([ 1.0, 0.0 ]);
|
||||
gl.bufferSubData(gl.ARRAY_BUFFER, 1, coordF32);
|
||||
|
||||
var coordF64 = new Float64Array([ 1.0, 0.0 ]);
|
||||
gl.bufferSubData(gl.ARRAY_BUFFER, 1, coordF64);
|
||||
|
||||
|
||||
//
|
||||
// Issue #8738
|
||||
//
|
||||
|
||||
// Re-bind to a 10 Int8 buffer (so 10 bytes long)
|
||||
var coordArrayI8_10 = new Int8Array([ 1, 0, 1, 0, 1, 0, 1, 0, 1, 0 ]);
|
||||
gl.bufferData(gl.ARRAY_BUFFER, coordArrayI8_10, gl.STATIC_DRAW);
|
||||
|
||||
// - Setting two Int8 elements starting at offset 8 is OK
|
||||
gl.bufferSubData(gl.ARRAY_BUFFER, 8, coordI8);
|
||||
assert_equals(gl.NO_ERROR, gl.getError());
|
||||
|
||||
// - Setting two Int8 starting at offset 9 is an error
|
||||
gl.bufferSubData(gl.ARRAY_BUFFER, 9, coordI8);
|
||||
assert_equals(gl.INVALID_VALUE, gl.getError());
|
||||
|
||||
// Re-bind to a 2 Uint16 buffer (so 4 bytes long)
|
||||
var coordArrayU16_10 = new Uint16Array([ 1, 0 ]);
|
||||
gl.bufferData(gl.ARRAY_BUFFER, coordArrayU16_10, gl.STATIC_DRAW);
|
||||
|
||||
// - Setting two Uint16 elements starting at offset 0 is OK
|
||||
gl.bufferSubData(gl.ARRAY_BUFFER, 0, coordU16);
|
||||
assert_equals(gl.NO_ERROR, gl.getError());
|
||||
|
||||
// - Setting two Int8 starting at offset 1 is OK
|
||||
gl.bufferSubData(gl.ARRAY_BUFFER, 1, coordI8);
|
||||
assert_equals(gl.NO_ERROR, gl.getError());
|
||||
|
||||
// - Setting two Uint16 starting at offset 1 is an error
|
||||
gl.bufferSubData(gl.ARRAY_BUFFER, 1, coordU16);
|
||||
assert_equals(gl.INVALID_VALUE, gl.getError());
|
||||
});
|
||||
</script>
|
Loading…
Add table
Add a link
Reference in a new issue