2 Copyright (c) 2019 The Khronos Group Inc.
3 Use of this source code is governed by an MIT-style license that can be
4 found in the LICENSE.txt file.
10 <title>Test for Timer Query objects with OffscreenCanvas
</title>
11 <link rel=
"stylesheet" href=
"../../resources/js-test-style.css"/>
12 <script src=
"../../js/js-test-pre.js"></script>
13 <script src=
"../../js/webgl-test-utils.js"></script>
16 <div id=
"description"></div>
17 <div id=
"console"></div>
18 <script id='myWorker' type='text/worker'
>
19 function tick(callback) {
21 const res = callback();
23 if (requestAnimationFrame) {
24 requestAnimationFrame(tickImpl);
26 setTimeout(tickImpl,
10);
34 self.onmessage = function(e) {
35 let canvas = new OffscreenCanvas(
128,
128);
36 let gl = canvas.getContext(
"webgl2");
37 let ext = gl.getExtension(
"EXT_disjoint_timer_query_webgl2");
39 self.postMessage(
"PASSED - no EXT_disjoint_timer_query_webgl2 extension - this is legal");
42 let query = gl.createQuery();
43 gl.beginQuery(ext.TIME_ELAPSED_EXT, query);
44 gl.endQuery(ext.TIME_ELAPSED_EXT);
45 gl.clearColor(
0.0,
1.0,
0.0,
1.0);
46 gl.clear(gl.COLOR_BUFFER_BIT);
48 const status = gl.getQueryParameter(query, gl.QUERY_RESULT_AVAILABLE);
50 self.postMessage(
"PASSED - timer query object completed successfully on worker");
53 const err = gl.getError();
55 self.postMessage(
"FAILED - GL error " + err);
65 description("This test ensures that timer query objects work with the WebGL 2.0 context created via OffscreenCanvas.");
66 if (!window
.OffscreenCanvas
) {
67 testPassed("No OffscreenCanvas support");
70 var blob
= new Blob([document
.getElementById('myWorker').textContent
]);
71 var worker
= new Worker(URL
.createObjectURL(blob
));
72 worker
.onmessage = function(msg
) {
73 if (msg
.data
.startsWith("PASSED")) {
80 worker
.postMessage("Start Worker");