Bug 1229944 - Add test for ANGLE_depth_texture. - r=kamidphish, a=sylvestre
authorJeff Gilbert <jgilbert@mozilla.com>
Mon, 28 Dec 2015 13:06:58 -0800
changeset 298079 ca3b15d9e48349afcb21e8bc60ce6b48c05d6090
parent 298078 f5b4bfb33ab4ea3673926a43aafe8978e1134204
child 298080 bc5b44c0aa5fa7a29ea94fa3bcd743bdc4b5acc5
push id8861
push userjgilbert@mozilla.com
push dateMon, 28 Dec 2015 21:06:39 +0000
treeherdermozilla-aurora@ca3b15d9e483 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewerskamidphish, sylvestre
bugs1229944
milestone45.0a2
Bug 1229944 - Add test for ANGLE_depth_texture. - r=kamidphish, a=sylvestre
dom/canvas/moz.build
dom/canvas/test/webgl-mochitest.ini
dom/canvas/test/webgl-mochitest/test_depth_tex_lazy_clear.html
--- a/dom/canvas/moz.build
+++ b/dom/canvas/moz.build
@@ -1,16 +1,19 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 TEST_DIRS += ['compiledtest']
 
+# Number changes to this file to avoid bug 1081323 (clobber after changing a manifest):
+# 2
+
 MOCHITEST_MANIFESTS += [
     'test/crossorigin/mochitest.ini',
     'test/mochitest-subsuite-webgl.ini',
     'test/mochitest.ini',
 ]
 
 MOCHITEST_CHROME_MANIFESTS += ['test/chrome/chrome.ini']
 
@@ -165,9 +168,8 @@ LOCAL_INCLUDES += [
     '/layout/xul',
     '/media/libyuv/include',
 ]
 
 CXXFLAGS += CONFIG['MOZ_CAIRO_CFLAGS']
 CXXFLAGS += CONFIG['TK_CFLAGS']
 
 LOCAL_INCLUDES += CONFIG['SKIA_INCLUDES']
-
--- a/dom/canvas/test/webgl-mochitest.ini
+++ b/dom/canvas/test/webgl-mochitest.ini
@@ -7,16 +7,17 @@ support-files =
   webgl-mochitest/webgl-util.js
 
 [webgl-mochitest/test_backbuffer_channels.html]
 fail-if = (os == 'b2g')
 [webgl-mochitest/test_depth_readpixels.html]
 [webgl-mochitest/test_capture.html]
 support-files = captureStream_common.js
 [webgl-mochitest/test_cubemap_must_be_square.html]
+[webgl-mochitest/test_depth_tex_lazy_clear.html]
 [webgl-mochitest/test_draw.html]
 [webgl-mochitest/test_fb_param.html]
 [webgl-mochitest/test_fb_param_crash.html]
 [webgl-mochitest/test_hidden_alpha.html]
 skip-if = (os == 'b2g') || buildapp == 'mulet' # Mulet - bug 1093639 (crashes in libLLVM-3.0.so)
 [webgl-mochitest/test_implicit_color_buffer_float.html]
 [webgl-mochitest/test_highp_fs.html]
 [webgl-mochitest/test_no_arr_points.html]
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-mochitest/test_depth_tex_lazy_clear.html
@@ -0,0 +1,73 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+  <meta charset='utf-8'/>
+  <script src='/tests/SimpleTest/SimpleTest.js'></script>
+  <link rel='stylesheet' href='/tests/SimpleTest/test.css'>
+  <script src='webgl-util.js'></script>
+</head>
+<body>
+<script id='vs' type='x-shader/x-vertex'>
+
+attribute vec2 aVertCoord;
+
+void main(void) {
+  gl_Position = vec4(aVertCoord, 0.0, 1.0);
+}
+
+</script>
+<script id='fs' type='x-shader/x-fragment'>
+
+precision mediump float;
+uniform sampler2D uTexUnit;
+
+void main(void) {
+  vec4 tex = texture2D(uTexUnit, vec2(0));
+  gl_FragColor = vec4(tex.r, 1.0, 0.0, 1.0);
+}
+
+</script>
+<script>
+'use strict';
+
+var gl = null;
+
+do {
+  var c = document.createElement('canvas');
+  gl = c.getContext('webgl');
+  if (!gl) {
+    todo(false, 'Get GL working here first.');
+    break;
+  }
+
+  var ext = gl.getExtension('WEBGL_depth_texture');
+  if (!ext) {
+    todo(false, 'WEBGL_depth_texture not supported, which is fine.');
+    break;
+  }
+
+  var prog = WebGLUtil.createProgramByIds(gl, 'vs', 'fs');
+  if (!prog) {
+    ok(false, 'Program linking should succeed.');
+    break;
+  }
+
+  var tex = gl.createTexture();
+  gl.bindTexture(gl.TEXTURE_2D, tex);
+  gl.texImage2D(gl.TEXTURE_2D, 0, gl.DEPTH_COMPONENT, 1, 1, 0, gl.DEPTH_COMPONENT,
+                gl.UNSIGNED_INT, null);
+
+  var uTexUnit = gl.getUniformLocation(prog, 'uTexUnit');
+  gl.useProgram(prog);
+  gl.uniform1i(uTexUnit, 0);
+
+  gl.drawArrays(gl.POINTS, 0, 1);
+
+  ok(!gl.getError(), 'Should have no errors.');
+} while (false);
+
+ok(true, 'Test complete.');
+
+</script>
+</body>
+</html>