summaryrefslogtreecommitdiffstats
path: root/dom/canvas/test/webgl-conf/checkout/conformance/extensions/khr-parallel-shader-compile.html
diff options
context:
space:
mode:
Diffstat (limited to 'dom/canvas/test/webgl-conf/checkout/conformance/extensions/khr-parallel-shader-compile.html')
-rw-r--r--dom/canvas/test/webgl-conf/checkout/conformance/extensions/khr-parallel-shader-compile.html26
1 files changed, 26 insertions, 0 deletions
diff --git a/dom/canvas/test/webgl-conf/checkout/conformance/extensions/khr-parallel-shader-compile.html b/dom/canvas/test/webgl-conf/checkout/conformance/extensions/khr-parallel-shader-compile.html
index 2915a2d2de..6a8b1981e5 100644
--- a/dom/canvas/test/webgl-conf/checkout/conformance/extensions/khr-parallel-shader-compile.html
+++ b/dom/canvas/test/webgl-conf/checkout/conformance/extensions/khr-parallel-shader-compile.html
@@ -169,6 +169,32 @@ let extraCode = '';
testPassed(`COMPLETION_STATUS_KHR sucessfully transitioned from false to true`);
}
+ debug("Checking that compiling lots of programs in parallel eventually completes.");
+ let programs = [];
+ for (let i = 0; i < 256; ++i) {
+ gl.shaderSource(vs, vertexSource());
+ gl.shaderSource(fs, fragmentSource());
+ gl.compileShader(vs);
+ gl.compileShader(fs);
+ let program = gl.createProgram();
+ gl.attachShader(program, vs);
+ gl.attachShader(program, fs);
+ gl.linkProgram(program);
+ programs.push(program);
+ }
+ let allDone = false;
+ while (!allDone) {
+ allDone = true;
+ for (let i = 0; i < programs.length; ++i) {
+ if (!gl.getProgramParameter(programs[i], COMPLETION_STATUS_KHR)) {
+ allDone = false;
+ break;
+ }
+ }
+ if (!allDone) {
+ await new Promise(requestAnimationFrame);
+ }
+ }
debug("Checking that status is true when context is lost.");
if (loseContext) {