summaryrefslogtreecommitdiffstats
path: root/dom/canvas/test/webgl-mochitest/test_without_index_validation.html
diff options
context:
space:
mode:
Diffstat (limited to 'dom/canvas/test/webgl-mochitest/test_without_index_validation.html')
-rw-r--r--dom/canvas/test/webgl-mochitest/test_without_index_validation.html86
1 files changed, 86 insertions, 0 deletions
diff --git a/dom/canvas/test/webgl-mochitest/test_without_index_validation.html b/dom/canvas/test/webgl-mochitest/test_without_index_validation.html
new file mode 100644
index 0000000000..01e028539d
--- /dev/null
+++ b/dom/canvas/test/webgl-mochitest/test_without_index_validation.html
@@ -0,0 +1,86 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset='utf-8'>
+<title>WebGL test: Drawing without index validation</title>
+<script src='/tests/SimpleTest/SimpleTest.js'></script>
+<link rel='stylesheet' href='/tests/SimpleTest/test.css'>
+
+<script id='vertSource' type='none'>
+void main(void) {
+ gl_PointSize = 1.0;
+ gl_Position = vec4(0, 0, 0, 1);
+}
+</script>
+
+<script id='fragSource' type='none'>
+precision mediump float;
+
+void main(void) {
+ gl_FragColor = vec4(0, 1, 0, 1);
+}
+</script>
+</head>
+<body>
+<script>
+
+function test() {
+ const c = document.createElement('canvas');
+ c.width = c.height = 1;
+ const gl = c.getContext('webgl');
+ if (!gl) {
+ todo(false, 'WebGL is unavailable.');
+ return;
+ }
+ document.body.appendChild(c);
+
+ const vs = gl.createShader(gl.VERTEX_SHADER);
+ gl.shaderSource(vs, vertSource.innerHTML.trim());
+ gl.compileShader(vs);
+ const fs = gl.createShader(gl.FRAGMENT_SHADER);
+ gl.shaderSource(fs, fragSource.innerHTML.trim());
+ gl.compileShader(fs);
+ const prog = gl.createProgram();
+ gl.attachShader(prog, vs);
+ gl.attachShader(prog, fs);
+ gl.linkProgram(prog);
+ gl.useProgram(prog);
+
+ gl.clearColor(1,0,0,1);
+ const pixel = new Uint32Array(1);
+ const pixelData = new Uint8Array(pixel.buffer);
+
+ function expectPixel(expected, info) {
+ gl.readPixels(0, 0, 1, 1, gl.RGBA, gl.UNSIGNED_BYTE, pixelData);
+ ok(pixel[0] == expected,
+ '[' + info + '] Expected 0x' + expected.toString(16) + ', was 0x' + pixel[0].toString(16));
+ }
+
+ gl.clear(gl.COLOR_BUFFER_BIT);
+ expectPixel(0xFF0000FF, 'Clear');
+
+ gl.drawArrays(gl.POINTS, 0, 1);
+ expectPixel(0xFF00FF00, 'DrawArrays');
+
+ const indexBuffer = gl.createBuffer();
+ gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, indexBuffer);
+ gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, new Uint16Array([0]), gl.STATIC_DRAW);
+
+ gl.clear(gl.COLOR_BUFFER_BIT);
+ gl.drawElements(gl.POINTS, 1, gl.UNSIGNED_SHORT, 0);
+ expectPixel(0xFF00FF00, 'DrawElements');
+
+ SimpleTest.finish();
+}
+
+SimpleTest.waitForExplicitFinish();
+
+const prefArrArr = [
+ ['webgl.force-index-validation', -1]
+];
+const prefEnv = {'set': prefArrArr};
+SpecialPowers.pushPrefEnv(prefEnv, test);
+
+</script>
+</body>
+</html> \ No newline at end of file