Skip to content

Commit

Permalink
Merge pull request web-platform-tests#2802 from emilio/fix-webgl
Browse files Browse the repository at this point in the history
Fix WebGL test suite nits
  • Loading branch information
emilio authored and jdm committed Apr 8, 2016
1 parent 7338006 commit 5dca49f
Show file tree
Hide file tree
Showing 8 changed files with 212 additions and 27 deletions.
1 change: 1 addition & 0 deletions webgl/OWNERS
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
@Ms2ger
@emilio
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
<!--
/*
** Copyright (c) 2012 The Khronos Group Inc.
**
** Permission is hereby granted, free of charge, to any person obtaining a
** copy of this software and/or associated documentation files (the
** "Materials"), to deal in the Materials without restriction, including
** without limitation the rights to use, copy, modify, merge, publish,
** distribute, sublicense, and/or sell copies of the Materials, and to
** permit persons to whom the Materials are furnished to do so, subject to
** the following conditions:
**
** The above copyright notice and this permission notice shall be included
** in all copies or substantial portions of the Materials.
**
** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
*/
-->

<!DOCTYPE html>
<html style="margin: 0; padding: 0;">
<head>
<meta charset="utf-8">
<title>Simple WebGL context with Worker</title>
<script src="../../resources/webgl-test-utils.js"> </script>
</head>
<body style="margin: 0; padding: 0; overflow: hidden;">
<canvas id="c"
width="1680" height="1050"
style="width: 256px; height: 256px;"> <!-- scaled to fit page better -->
<script id="vshader" type="x-shader/x-vertex">
attribute vec4 vPosition;
void main()
{
gl_Position = vPosition;
}
</script>

<script id="fshader" type="x-shader/x-fragment">
void main()
{
gl_FragColor = vec4(1.0,0.0,0.0,1.0);
}
</script>

<script>
"use strict";
var wtu = WebGLTestUtils;
var myWorker = new Worker("context-release-worker.js");

var gl = wtu.create3DContext("c", { antialias: false });
var program = wtu.setupProgram(gl, ["vshader", "fshader"], ["vPosition"]);

var vertexObject = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, vertexObject);
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([ 0,0.75,0, -0.75,-0.75,0, 0.75,-0.75,0 ]), gl.STATIC_DRAW);
gl.enableVertexAttribArray(0);
gl.vertexAttribPointer(0, 3, gl.FLOAT, false, 0, 0);

gl.clearColor(0.0, 0.0, 0.0, 1.0);
gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
gl.drawArrays(gl.TRIANGLES, 0, 3);

if(parent) {
window.glContext = gl;
parent.postMessage("Ready", "*");
}
</script>
</body>
</html>
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
<!--
/*
** Copyright (c) 2012 The Khronos Group Inc.
**
** Permission is hereby granted, free of charge, to any person obtaining a
** copy of this software and/or associated documentation files (the
** "Materials"), to deal in the Materials without restriction, including
** without limitation the rights to use, copy, modify, merge, publish,
** distribute, sublicense, and/or sell copies of the Materials, and to
** permit persons to whom the Materials are furnished to do so, subject to
** the following conditions:
**
** The above copyright notice and this permission notice shall be included
** in all copies or substantial portions of the Materials.
**
** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
*/
-->

<!DOCTYPE html>
<html style="margin: 0; padding: 0;">
<head>
<meta charset="utf-8">
<title>Simple WebGL context</title>
<script src="../../resources/webgl-test-utils.js"> </script>
</head>
<body style="margin: 0; padding: 0; overflow: hidden;">
<canvas id="c"
width="1680" height="1050"
style="width: 256px; height: 256px;"> <!-- scaled to fit page better -->
<script id="vshader" type="x-shader/x-vertex">
attribute vec4 vPosition;
void main()
{
gl_Position = vPosition;
}
</script>

<script id="fshader" type="x-shader/x-fragment">
void main()
{
gl_FragColor = vec4(1.0,0.0,0.0,1.0);
}
</script>

<script>
"use strict";
var wtu = WebGLTestUtils;

var gl = wtu.create3DContext("c", { antialias: false });
var program = wtu.setupProgram(gl, ["vshader", "fshader"], ["vPosition"]);

var vertexObject = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, vertexObject);
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([ 0,0.75,0, -0.75,-0.75,0, 0.75,-0.75,0 ]), gl.STATIC_DRAW);
gl.enableVertexAttribArray(0);
gl.vertexAttribPointer(0, 3, gl.FLOAT, false, 0, 0);

gl.clearColor(0.0, 0.0, 0.0, 1.0);
gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
gl.drawArrays(gl.TRIANGLES, 0, 3);

if (parent) {
window.glContext = gl;
parent.postMessage("Ready", "*");
}
</script>
</body>
</html>
Original file line number Diff line number Diff line change
Expand Up @@ -534,8 +534,10 @@
for (var ii = 0; ii < colorBuffers.length; ++ii) {
gl.deleteBuffer(colorBuffers[ii]);
gl.deleteBuffer(elementBuffers[ii]);
ext.bindVertexArrayOES(vaos[ii]);
var boundBuffer = gl.getVertexAttrib(1, gl.VERTEX_ATTRIB_ARRAY_BUFFER_BINDING);
// The buffers should still be valid at this point, since it was attached to the VAO
if(!gl.isBuffer(colorBuffers[ii])) {
if(boundBuffer != colorBuffers[ii]) {
testFailed("buffer removed even though it is still attached to a VAO");
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@
assertGLError(gl, gl.INVALID_ENUM, "bad target", function(){
gl.texImage2D(gl.FLOAT, 0, gl.RGBA, 1,1,0,gl.RGBA,gl.UNSIGNED_BYTE, null);
});
assertGLError(gl, [gl.INVALID_ENUM, gl.INVALID_VALUE], "bad internal format/format", function(){
assertGLErrorIn(gl, [gl.INVALID_ENUM, gl.INVALID_VALUE], "bad internal format/format", function(){
gl.texImage2D(gl.TEXTURE_2D, 0, gl.FLOAT, 1,1,0,gl.FLOAT,gl.UNSIGNED_BYTE, null);
});
assertGLError(gl, gl.INVALID_VALUE, "border > 0", function(){
Expand Down
27 changes: 18 additions & 9 deletions webgl/conformance-1.0.3/resources/js-test-pre.js
Original file line number Diff line number Diff line change
Expand Up @@ -71,16 +71,25 @@ function nonKhronosFrameworkNotifyDone() {
}
}

var WPT_TEST_ID = 0;
function reportTestResultsToHarness(success, msg) {
if (window.parent.webglTestHarness) {
window.parent.webglTestHarness.reportResults(window.location.pathname, success, msg);
} else if (window.test) { // WPT test harness
test(function () {
assert_true(success, msg);
}, "WebGL test #" + (WPT_TEST_ID++) + ": " + msg);
(function() {
var WPT_TEST_ID = 0;

// Store the current WPT test harness `test` function
// if found, since it's overriden by some tests.
var wpt_test = window.test;
var wpt_assert_true = window.assert_true;


window.reportTestResultsToHarness = function reportTestResultsToHarness(success, msg) {
if (window.parent.webglTestHarness) {
window.parent.webglTestHarness.reportResults(window.location.pathname, success, msg);
} else if (wpt_test) { // WPT test harness
wpt_test(function () {
wpt_assert_true(success, msg);
}, "WebGL test #" + (WPT_TEST_ID++) + ": " + msg);
}
}
}
}())

function notifyFinishedToHarness() {
if (window.parent.webglTestHarness) {
Expand Down
5 changes: 4 additions & 1 deletion webgl/tools/import-conformance-tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ def main():
else:
directory = tempfile.mkdtemp()
print("Cloning WebGL repository into temporary directory {}".format(directory))
subprocess.check_call(["git", "clone", KHRONOS_REPO_URL, directory])
subprocess.check_call(["git", "clone", KHRONOS_REPO_URL, directory, "--depth", "1"])

suite_dir = os.path.join(directory, "conformance-suites", version)
print("Test suite directory: {}".format(suite_dir))
Expand Down Expand Up @@ -109,6 +109,9 @@ def main():

# Remove html files that are not tests
for dirpath, dirnames, filenames in os.walk(destination):
if '/resources' in dirpath:
continue # Most of the files under resources directories are used

for f in filenames:
if not f.endswith('.html'):
continue
Expand Down
45 changes: 30 additions & 15 deletions webgl/tools/js-test-pre.patch
Original file line number Diff line number Diff line change
@@ -1,21 +1,36 @@
--- resources/js-test-pre.js 2015-06-18 23:26:41.217622000 +0200
+++ ../conformance-1.0.3/resources/js-test-pre.js 2015-12-30 19:20:27.852467185 +0100
@@ -71,9 +71,14 @@
--- js-test-pre.orig.js 2016-04-08 22:35:15.629226767 +0200
+++ js-test-pre.js 2016-04-08 22:43:11.906092062 +0200
@@ -71,11 +71,25 @@
}
}

+var WPT_TEST_ID = 0;
function reportTestResultsToHarness(success, msg) {
if (window.parent.webglTestHarness) {
window.parent.webglTestHarness.reportResults(window.location.pathname, success, msg);
+ } else if (window.test) { // WPT test harness
+ test(function () {
+ assert_true(success, msg);
+ }, "WebGL test #" + (WPT_TEST_ID++) + ": " + msg);
-function reportTestResultsToHarness(success, msg) {
- if (window.parent.webglTestHarness) {
- window.parent.webglTestHarness.reportResults(window.location.pathname, success, msg);
+(function() {
+ var WPT_TEST_ID = 0;
+
+ // Store the current WPT test harness `test` function
+ // if found, since it's overriden by some tests.
+ var wpt_test = window.test;
+ var wpt_assert_true = window.assert_true;
+
+
+ window.reportTestResultsToHarness = function reportTestResultsToHarness(success, msg) {
+ if (window.parent.webglTestHarness) {
+ window.parent.webglTestHarness.reportResults(window.location.pathname, success, msg);
+ } else if (wpt_test) { // WPT test harness
+ wpt_test(function () {
+ wpt_assert_true(success, msg);
+ }, "WebGL test #" + (WPT_TEST_ID++) + ": " + msg);
+ }
}
}
-}
+}())

@@ -92,7 +97,7 @@
function notifyFinishedToHarness() {
if (window.parent.webglTestHarness) {
@@ -92,7 +106,7 @@
window.console.log(msg);
}

Expand All @@ -24,7 +39,7 @@

function enableJSTestPreVerboseLogging()
{
@@ -105,31 +110,18 @@
@@ -105,31 +119,18 @@
if (msg === undefined) {
msg = document.title;
}
Expand Down Expand Up @@ -58,7 +73,7 @@
}
}

@@ -143,7 +135,7 @@
@@ -143,7 +144,7 @@
reportTestResultsToHarness(true, msg);
_addSpan('<span><span class="pass">PASS</span> ' + escapeHTML(msg) + '</span>');
if (_jsTestPreVerboseLogging) {
Expand Down

0 comments on commit 5dca49f

Please sign in to comment.