[WHLSL] Educate the property resolver about IndexExpressions
authormmaxfield@apple.com <mmaxfield@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 13 Jun 2019 03:44:24 +0000 (03:44 +0000)
committermmaxfield@apple.com <mmaxfield@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 13 Jun 2019 03:44:24 +0000 (03:44 +0000)
https://bugs.webkit.org/show_bug.cgi?id=198399

Unreviewed test gardening.

Failing WebGPU tests should fail instead of time out.

* webgpu/blend-color-triangle-strip.html:
* webgpu/blend-triangle-strip.html:
* webgpu/blit-commands.html:
* webgpu/buffer-command-buffer-races.html:
* webgpu/buffer-resource-triangles.html:
* webgpu/color-write-mask-triangle-strip.html:
* webgpu/depth-enabled-triangle-strip.html:
* webgpu/draw-indexed-triangles.html:
* webgpu/propertyresolver/ander-abstract-lvalue.html:
* webgpu/propertyresolver/ander-lvalue-3-levels.html:
* webgpu/propertyresolver/ander-lvalue.html:
* webgpu/propertyresolver/ander.html:
* webgpu/propertyresolver/getter.html:
* webgpu/propertyresolver/indexer-ander-abstract-lvalue.html:
* webgpu/propertyresolver/indexer-ander-lvalue-3-levels.html:
* webgpu/propertyresolver/indexer-ander-lvalue.html:
* webgpu/propertyresolver/indexer-ander.html:
* webgpu/propertyresolver/indexer-getter.html:
* webgpu/propertyresolver/indexer-setter-abstract-lvalue-3-levels.html:
* webgpu/propertyresolver/indexer-setter-abstract-lvalue.html:
* webgpu/propertyresolver/indexer-setter-lvalue.html:
* webgpu/propertyresolver/indexer-setter.html:
* webgpu/propertyresolver/setter-abstract-lvalue-3-levels.html:
* webgpu/propertyresolver/setter-abstract-lvalue.html:
* webgpu/propertyresolver/setter-lvalue.html:
* webgpu/simple-triangle-strip.html:
* webgpu/texture-triangle-strip.html:
* webgpu/vertex-buffer-triangle-strip.html:
* webgpu/viewport-scissor-rect-triangle-strip.html:
* webgpu/whlsl-arbitrary-vertex-attribute-locations.html:
* webgpu/whlsl-dereference-pointer-should-type-check.html:
* webgpu/whlsl-do-while-loop-break.html:
* webgpu/whlsl-do-while-loop-continue.html:
* webgpu/whlsl-do-while-loop.html:
* webgpu/whlsl-dont-crash-parsing-enum.html:
* webgpu/whlsl-dot-expressions.html:
* webgpu/whlsl-ensure-proper-variable-lifetime-2.html:
* webgpu/whlsl-ensure-proper-variable-lifetime-3.html:
* webgpu/whlsl-ensure-proper-variable-lifetime.html:
* webgpu/whlsl-loops-break.html:
* webgpu/whlsl-loops-continue.html:
* webgpu/whlsl-loops.html:
* webgpu/whlsl-nested-dot-expression-rvalue.html:
* webgpu/whlsl-nested-loop.html:
* webgpu/whlsl-return-local-variable.html:
* webgpu/whlsl-store-to-property-updates-properly.html:
* webgpu/whlsl-while-loop-break.html:
* webgpu/whlsl-while-loop-continue.html:
* webgpu/whlsl-zero-initialize-values-2.html:
* webgpu/whlsl-zero-initialize-values.html:
* webgpu/whlsl.html:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@246390 268f45cc-cd09-0410-ab3c-d52691b4dbfc

52 files changed:
LayoutTests/ChangeLog
LayoutTests/webgpu/blend-color-triangle-strip.html
LayoutTests/webgpu/blend-triangle-strip.html
LayoutTests/webgpu/blit-commands.html
LayoutTests/webgpu/buffer-command-buffer-races.html
LayoutTests/webgpu/buffer-resource-triangles.html
LayoutTests/webgpu/color-write-mask-triangle-strip.html
LayoutTests/webgpu/depth-enabled-triangle-strip.html
LayoutTests/webgpu/draw-indexed-triangles.html
LayoutTests/webgpu/propertyresolver/ander-abstract-lvalue.html
LayoutTests/webgpu/propertyresolver/ander-lvalue-3-levels.html
LayoutTests/webgpu/propertyresolver/ander-lvalue.html
LayoutTests/webgpu/propertyresolver/ander.html
LayoutTests/webgpu/propertyresolver/getter.html
LayoutTests/webgpu/propertyresolver/indexer-ander-abstract-lvalue.html
LayoutTests/webgpu/propertyresolver/indexer-ander-lvalue-3-levels.html
LayoutTests/webgpu/propertyresolver/indexer-ander-lvalue.html
LayoutTests/webgpu/propertyresolver/indexer-ander.html
LayoutTests/webgpu/propertyresolver/indexer-getter.html
LayoutTests/webgpu/propertyresolver/indexer-setter-abstract-lvalue-3-levels.html
LayoutTests/webgpu/propertyresolver/indexer-setter-abstract-lvalue.html
LayoutTests/webgpu/propertyresolver/indexer-setter-lvalue.html
LayoutTests/webgpu/propertyresolver/indexer-setter.html
LayoutTests/webgpu/propertyresolver/setter-abstract-lvalue-3-levels.html
LayoutTests/webgpu/propertyresolver/setter-abstract-lvalue.html
LayoutTests/webgpu/propertyresolver/setter-lvalue.html
LayoutTests/webgpu/simple-triangle-strip.html
LayoutTests/webgpu/texture-triangle-strip.html
LayoutTests/webgpu/vertex-buffer-triangle-strip.html
LayoutTests/webgpu/viewport-scissor-rect-triangle-strip.html
LayoutTests/webgpu/whlsl-arbitrary-vertex-attribute-locations.html
LayoutTests/webgpu/whlsl-dereference-pointer-should-type-check.html
LayoutTests/webgpu/whlsl-do-while-loop-break.html
LayoutTests/webgpu/whlsl-do-while-loop-continue.html
LayoutTests/webgpu/whlsl-do-while-loop.html
LayoutTests/webgpu/whlsl-dont-crash-parsing-enum.html
LayoutTests/webgpu/whlsl-dot-expressions.html
LayoutTests/webgpu/whlsl-ensure-proper-variable-lifetime-2.html
LayoutTests/webgpu/whlsl-ensure-proper-variable-lifetime-3.html
LayoutTests/webgpu/whlsl-ensure-proper-variable-lifetime.html
LayoutTests/webgpu/whlsl-loops-break.html
LayoutTests/webgpu/whlsl-loops-continue.html
LayoutTests/webgpu/whlsl-loops.html
LayoutTests/webgpu/whlsl-nested-dot-expression-rvalue.html
LayoutTests/webgpu/whlsl-nested-loop.html
LayoutTests/webgpu/whlsl-return-local-variable.html
LayoutTests/webgpu/whlsl-store-to-property-updates-properly.html
LayoutTests/webgpu/whlsl-while-loop-break.html
LayoutTests/webgpu/whlsl-while-loop-continue.html
LayoutTests/webgpu/whlsl-zero-initialize-values-2.html
LayoutTests/webgpu/whlsl-zero-initialize-values.html
LayoutTests/webgpu/whlsl.html

index eaf8977..21ad40a 100644 (file)
@@ -1,3 +1,64 @@
+2019-06-12  Myles C. Maxfield  <mmaxfield@apple.com>
+
+        [WHLSL] Educate the property resolver about IndexExpressions
+        https://bugs.webkit.org/show_bug.cgi?id=198399
+
+        Unreviewed test gardening.
+
+        Failing WebGPU tests should fail instead of time out.
+
+        * webgpu/blend-color-triangle-strip.html:
+        * webgpu/blend-triangle-strip.html:
+        * webgpu/blit-commands.html:
+        * webgpu/buffer-command-buffer-races.html:
+        * webgpu/buffer-resource-triangles.html:
+        * webgpu/color-write-mask-triangle-strip.html:
+        * webgpu/depth-enabled-triangle-strip.html:
+        * webgpu/draw-indexed-triangles.html:
+        * webgpu/propertyresolver/ander-abstract-lvalue.html:
+        * webgpu/propertyresolver/ander-lvalue-3-levels.html:
+        * webgpu/propertyresolver/ander-lvalue.html:
+        * webgpu/propertyresolver/ander.html:
+        * webgpu/propertyresolver/getter.html:
+        * webgpu/propertyresolver/indexer-ander-abstract-lvalue.html:
+        * webgpu/propertyresolver/indexer-ander-lvalue-3-levels.html:
+        * webgpu/propertyresolver/indexer-ander-lvalue.html:
+        * webgpu/propertyresolver/indexer-ander.html:
+        * webgpu/propertyresolver/indexer-getter.html:
+        * webgpu/propertyresolver/indexer-setter-abstract-lvalue-3-levels.html:
+        * webgpu/propertyresolver/indexer-setter-abstract-lvalue.html:
+        * webgpu/propertyresolver/indexer-setter-lvalue.html:
+        * webgpu/propertyresolver/indexer-setter.html:
+        * webgpu/propertyresolver/setter-abstract-lvalue-3-levels.html:
+        * webgpu/propertyresolver/setter-abstract-lvalue.html:
+        * webgpu/propertyresolver/setter-lvalue.html:
+        * webgpu/simple-triangle-strip.html:
+        * webgpu/texture-triangle-strip.html:
+        * webgpu/vertex-buffer-triangle-strip.html:
+        * webgpu/viewport-scissor-rect-triangle-strip.html:
+        * webgpu/whlsl-arbitrary-vertex-attribute-locations.html:
+        * webgpu/whlsl-dereference-pointer-should-type-check.html:
+        * webgpu/whlsl-do-while-loop-break.html:
+        * webgpu/whlsl-do-while-loop-continue.html:
+        * webgpu/whlsl-do-while-loop.html:
+        * webgpu/whlsl-dont-crash-parsing-enum.html:
+        * webgpu/whlsl-dot-expressions.html:
+        * webgpu/whlsl-ensure-proper-variable-lifetime-2.html:
+        * webgpu/whlsl-ensure-proper-variable-lifetime-3.html:
+        * webgpu/whlsl-ensure-proper-variable-lifetime.html:
+        * webgpu/whlsl-loops-break.html:
+        * webgpu/whlsl-loops-continue.html:
+        * webgpu/whlsl-loops.html:
+        * webgpu/whlsl-nested-dot-expression-rvalue.html:
+        * webgpu/whlsl-nested-loop.html:
+        * webgpu/whlsl-return-local-variable.html:
+        * webgpu/whlsl-store-to-property-updates-properly.html:
+        * webgpu/whlsl-while-loop-break.html:
+        * webgpu/whlsl-while-loop-continue.html:
+        * webgpu/whlsl-zero-initialize-values-2.html:
+        * webgpu/whlsl-zero-initialize-values.html:
+        * webgpu/whlsl.html:
+
 2019-06-12  Simon Fraser  <simon.fraser@apple.com>
 
         paddingBoxRect() is wrong with RTL scrollbars on the left
index 2a56379..04984ae 100644 (file)
@@ -75,12 +75,13 @@ async function test() {
     const queue = device.getQueue();
 
     queue.submit([commandEncoder.finish()]);
-
-    requestAnimationFrame(() => { 
-        if (window.testRunner)
-            testRunner.notifyDone();
-    });
 }
 
-test();
-</script>
\ No newline at end of file
+test().then(function() {
+    if (window.testRunner)
+        testRunner.notifyDone();
+}, function() {
+    if (window.testRunner)
+        testRunner.notifyDone();
+});
+</script>
index cabef69..f209b03 100644 (file)
@@ -42,8 +42,6 @@ fragment float4 fragment_main(VertexOut v [[stage_in]])
 }
 `;
 
-window.addEventListener("load", test, false);
-
 async function test() {
     const device = await getBasicDevice();
     const canvas = document.querySelector("canvas");
@@ -95,10 +93,15 @@ async function test() {
     passEncoder.endPass();
 
     device.getQueue().submit([commandEncoder.finish()]);
+}
 
-    requestAnimationFrame(() => { 
+window.addEventListener("load", function() {
+    test().then(function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    }, function() {
         if (window.testRunner)
             testRunner.notifyDone();
     });
-}
-</script>
\ No newline at end of file
+}, false);
+</script>
index 8deaa19..8339e90 100644 (file)
@@ -14,7 +14,15 @@ if (window.testRunner)
 async function loadImage() {
     const image = new Image();
     image.src = "resources/green-400.png";
-    image.onload = () => { test(image); }
+    image.onload = function() {
+        test(image).then(function() {
+            if (window.testRunner)
+                testRunner.notifyDone();
+        }, function() {
+            if (window.testRunner)
+                testRunner.notifyDone();
+        });
+    }
 }
 
 async function test(image) {
@@ -91,11 +99,8 @@ async function test(image) {
 
         readBuffer.destroy();
     });
-
-    if (window.testRunner)
-        testRunner.notifyDone();
 }
 
 loadImage();
 </script>
-</body>
\ No newline at end of file
+</body>
index 864c5ef..abaaa2a 100644 (file)
@@ -139,10 +139,13 @@ async function test() {
     upperLeftBuffer.destroy();
     middleBuffer.destroy();
     upperRightBuffer.destroy();
+}
 
+test().then(function() {
     if (window.testRunner)
         testRunner.notifyDone();
-}
-
-test();
-</script>
\ No newline at end of file
+}, function() {
+    if (window.testRunner)
+        testRunner.notifyDone();
+});
+</script>
index e2e6d34..263626c 100644 (file)
@@ -196,11 +196,14 @@ async function test() {
         passEncoder.endPass();
         const queue = device.getQueue();
         queue.submit([commandEncoder.finish()]);
-
-        if (window.testRunner)
-            testRunner.notifyDone();
     });
 }
 
-test();
-</script>
\ No newline at end of file
+test().then(function() {
+    if (window.testRunner)
+        testRunner.notifyDone();
+}, function() {
+    if (window.testRunner)
+        testRunner.notifyDone();
+});
+</script>
index 856e46c..5dcc3d9 100644 (file)
@@ -69,12 +69,13 @@ async function test() {
     const queue = device.getQueue();
 
     queue.submit([commandEncoder.finish()]);
-
-    requestAnimationFrame(() => { 
-        if (window.testRunner)
-            testRunner.notifyDone();
-    });
 }
 
-test();
-</script>
\ No newline at end of file
+test().then(function() {
+    if (window.testRunner)
+        testRunner.notifyDone();
+}, function() {
+    if (window.testRunner)
+        testRunner.notifyDone();
+});
+</script>
index e903b1b..94b99b1 100644 (file)
@@ -108,10 +108,13 @@ async function test() {
     encoder.endPass();
 
     device.getQueue().submit([commandEncoder.finish()]);
+}
 
+test().then(function() {
     if (window.testRunner)
         testRunner.notifyDone();
-}
-
-test();
-</script>
\ No newline at end of file
+}, function() {
+    if (window.testRunner)
+        testRunner.notifyDone();
+});
+</script>
index 3731f0b..6738712 100644 (file)
@@ -112,10 +112,13 @@ async function test() {
 
     device.getQueue().submit([commandEncoder.finish()]);
     vertexBuffer.destroy();
+}
 
+test().then(function() {
     if (window.testRunner)
         testRunner.notifyDone();
-}
-
-test();
-</script>
\ No newline at end of file
+}, function() {
+    if (window.testRunner)
+        testRunner.notifyDone();
+});
+</script>
index ce14a68..444c314 100644 (file)
@@ -103,13 +103,18 @@ async function start() {
     renderPassEncoder.endPass();
     const commandBuffer = commandEncoder.finish();
     device.getQueue().submit([commandBuffer]);
-
-    if (window.testRunner)
-        testRunner.notifyDone();
 }
 if (window.testRunner)
     testRunner.waitUntilDone();
-window.addEventListener("load", start);
+window.addEventListener("load", function() {
+    start().then(function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    }, function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    });
+});
 </script>
 </body>
 </html>
index b344609..00107b8 100644 (file)
@@ -106,13 +106,18 @@ async function start() {
     renderPassEncoder.endPass();
     const commandBuffer = commandEncoder.finish();
     device.getQueue().submit([commandBuffer]);
-
-    if (window.testRunner)
-        testRunner.notifyDone();
 }
 if (window.testRunner)
     testRunner.waitUntilDone();
-window.addEventListener("load", start);
+window.addEventListener("load", function() {
+    start().then(function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    }, function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    });
+});
 </script>
 </body>
 </html>
index 31f23f9..c81dcf2 100644 (file)
@@ -98,13 +98,18 @@ async function start() {
     renderPassEncoder.endPass();
     const commandBuffer = commandEncoder.finish();
     device.getQueue().submit([commandBuffer]);
-
-    if (window.testRunner)
-        testRunner.notifyDone();
 }
 if (window.testRunner)
     testRunner.waitUntilDone();
-window.addEventListener("load", start);
+window.addEventListener("load", function() {
+    start().then(function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    }, function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    });
+});
 </script>
 </body>
 </html>
index f7b60e6..a6c0126 100644 (file)
@@ -94,13 +94,18 @@ async function start() {
     renderPassEncoder.endPass();
     const commandBuffer = commandEncoder.finish();
     device.getQueue().submit([commandBuffer]);
-
-    if (window.testRunner)
-        testRunner.notifyDone();
 }
 if (window.testRunner)
     testRunner.waitUntilDone();
-window.addEventListener("load", start);
+window.addEventListener("load", function() {
+    start().then(function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    }, function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    });
+});
 </script>
 </body>
 </html>
index cc5cba0..a5ed9c6 100644 (file)
@@ -90,13 +90,18 @@ async function start() {
     renderPassEncoder.endPass();
     const commandBuffer = commandEncoder.finish();
     device.getQueue().submit([commandBuffer]);
-
-    if (window.testRunner)
-        testRunner.notifyDone();
 }
 if (window.testRunner)
     testRunner.waitUntilDone();
-window.addEventListener("load", start);
+window.addEventListener("load", function() {
+    start().then(function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    }, function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    });
+});
 </script>
 </body>
 </html>
index afce1af..6a56a6a 100644 (file)
@@ -103,13 +103,18 @@ async function start() {
     renderPassEncoder.endPass();
     const commandBuffer = commandEncoder.finish();
     device.getQueue().submit([commandBuffer]);
-
-    if (window.testRunner)
-        testRunner.notifyDone();
 }
 if (window.testRunner)
     testRunner.waitUntilDone();
-window.addEventListener("load", start);
+window.addEventListener("load", function() {
+    start().then(function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    }, function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    });
+});
 </script>
 </body>
 </html>
index c3fec65..bec5e40 100644 (file)
@@ -106,13 +106,18 @@ async function start() {
     renderPassEncoder.endPass();
     const commandBuffer = commandEncoder.finish();
     device.getQueue().submit([commandBuffer]);
-
-    if (window.testRunner)
-        testRunner.notifyDone();
 }
 if (window.testRunner)
     testRunner.waitUntilDone();
-window.addEventListener("load", start);
+window.addEventListener("load", function() {
+    start().then(function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    }, function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    });
+});
 </script>
 </body>
 </html>
index 354ba5e..f32edf6 100644 (file)
@@ -98,13 +98,18 @@ async function start() {
     renderPassEncoder.endPass();
     const commandBuffer = commandEncoder.finish();
     device.getQueue().submit([commandBuffer]);
-
-    if (window.testRunner)
-        testRunner.notifyDone();
 }
 if (window.testRunner)
     testRunner.waitUntilDone();
-window.addEventListener("load", start);
+window.addEventListener("load", function() {
+    start().then(function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    }, function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    });
+});
 </script>
 </body>
 </html>
index c661114..a3e7864 100644 (file)
@@ -94,13 +94,18 @@ async function start() {
     renderPassEncoder.endPass();
     const commandBuffer = commandEncoder.finish();
     device.getQueue().submit([commandBuffer]);
-
-    if (window.testRunner)
-        testRunner.notifyDone();
 }
 if (window.testRunner)
     testRunner.waitUntilDone();
-window.addEventListener("load", start);
+window.addEventListener("load", function() {
+    start().then(function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    }, function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    });
+});
 </script>
 </body>
 </html>
index df16838..f79f5d5 100644 (file)
@@ -89,13 +89,18 @@ async function start() {
     renderPassEncoder.endPass();
     const commandBuffer = commandEncoder.finish();
     device.getQueue().submit([commandBuffer]);
-
-    if (window.testRunner)
-        testRunner.notifyDone();
 }
 if (window.testRunner)
     testRunner.waitUntilDone();
-window.addEventListener("load", start);
+window.addEventListener("load", function() {
+    start().then(function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    }, function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    });
+});
 </script>
 </body>
 </html>
index 716f01d..8596867 100644 (file)
@@ -121,13 +121,18 @@ async function start() {
     renderPassEncoder.endPass();
     const commandBuffer = commandEncoder.finish();
     device.getQueue().submit([commandBuffer]);
-
-    if (window.testRunner)
-        testRunner.notifyDone();
 }
 if (window.testRunner)
     testRunner.waitUntilDone();
-window.addEventListener("load", start);
+window.addEventListener("load", function() {
+    start().then(function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    }, function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    });
+});
 </script>
 </body>
 </html>
index 551404f..faed73e 100644 (file)
@@ -108,13 +108,18 @@ async function start() {
     renderPassEncoder.endPass();
     const commandBuffer = commandEncoder.finish();
     device.getQueue().submit([commandBuffer]);
-
-    if (window.testRunner)
-        testRunner.notifyDone();
 }
 if (window.testRunner)
     testRunner.waitUntilDone();
-window.addEventListener("load", start);
+window.addEventListener("load", function() {
+    start().then(function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    }, function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    });
+});
 </script>
 </body>
 </html>
index fd9234d..f72e88b 100644 (file)
@@ -103,13 +103,18 @@ async function start() {
     renderPassEncoder.endPass();
     const commandBuffer = commandEncoder.finish();
     device.getQueue().submit([commandBuffer]);
-
-    if (window.testRunner)
-        testRunner.notifyDone();
 }
 if (window.testRunner)
     testRunner.waitUntilDone();
-window.addEventListener("load", start);
+window.addEventListener("load", function() {
+    start().then(function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    }, function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    });
+});
 </script>
 </body>
 </html>
index 61da193..522feff 100644 (file)
@@ -106,13 +106,18 @@ async function start() {
     renderPassEncoder.endPass();
     const commandBuffer = commandEncoder.finish();
     device.getQueue().submit([commandBuffer]);
-
-    if (window.testRunner)
-        testRunner.notifyDone();
 }
 if (window.testRunner)
     testRunner.waitUntilDone();
-window.addEventListener("load", start);
+window.addEventListener("load", function() {
+    start().then(function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    }, function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    });
+});
 </script>
 </body>
 </html>
index 6e912f5..22a3c63 100644 (file)
@@ -121,13 +121,18 @@ async function start() {
     renderPassEncoder.endPass();
     const commandBuffer = commandEncoder.finish();
     device.getQueue().submit([commandBuffer]);
-
-    if (window.testRunner)
-        testRunner.notifyDone();
 }
 if (window.testRunner)
     testRunner.waitUntilDone();
-window.addEventListener("load", start);
+window.addEventListener("load", function() {
+    start().then(function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    }, function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    });
+});
 </script>
 </body>
 </html>
index 0ddc7b4..82705af 100644 (file)
@@ -108,13 +108,18 @@ async function start() {
     renderPassEncoder.endPass();
     const commandBuffer = commandEncoder.finish();
     device.getQueue().submit([commandBuffer]);
-
-    if (window.testRunner)
-        testRunner.notifyDone();
 }
 if (window.testRunner)
     testRunner.waitUntilDone();
-window.addEventListener("load", start);
+window.addEventListener("load", function() {
+    start().then(function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    }, function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    });
+});
 </script>
 </body>
 </html>
index 9a9b4f2..1e46ae5 100644 (file)
@@ -103,13 +103,18 @@ async function start() {
     renderPassEncoder.endPass();
     const commandBuffer = commandEncoder.finish();
     device.getQueue().submit([commandBuffer]);
-
-    if (window.testRunner)
-        testRunner.notifyDone();
 }
 if (window.testRunner)
     testRunner.waitUntilDone();
-window.addEventListener("load", start);
+window.addEventListener("load", function() {
+    start().then(function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    }, function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    });
+});
 </script>
 </body>
 </html>
index 088e491..ebc5506 100644 (file)
@@ -58,12 +58,13 @@ async function test() {
     const queue = device.getQueue();
 
     queue.submit([commandEncoder.finish()]);
-
-    requestAnimationFrame(() => { 
-        if (window.testRunner)
-            testRunner.notifyDone();
-    });
 }
 
-test();
-</script>
\ No newline at end of file
+test().then(function() {
+    if (window.testRunner)
+        testRunner.notifyDone();
+}, function() {
+    if (window.testRunner)
+        testRunner.notifyDone();
+});
+</script>
index 88e2cad..c729d96 100644 (file)
@@ -194,10 +194,13 @@ async function test() {
     positionBuffer.destroy();
     textureCoordBuffer.destroy();
     texture.destroy();
+}
 
+test().then(function() {
     if (window.testRunner)
         testRunner.notifyDone();
-}
-
-test();
-</script>
\ No newline at end of file
+}, function() {
+    if (window.testRunner)
+        testRunner.notifyDone();
+});
+</script>
index f1fcaa9..41104fc 100644 (file)
@@ -91,10 +91,13 @@ async function test() {
     const queue = device.getQueue();
     queue.submit([commandEncoder.finish()]);
     vertexBuffer.destroy();
+}
 
+test().then(function() {
     if (window.testRunner)
         testRunner.notifyDone();
-}
-
-test();
-</script>
\ No newline at end of file
+}, function() {
+    if (window.testRunner)
+        testRunner.notifyDone();
+});
+</script>
index 2315adf..4a783d5 100644 (file)
@@ -94,12 +94,13 @@ async function test() {
     const queue = device.getQueue();
 
     queue.submit([commandEncoder.finish()]);
-
-    requestAnimationFrame(() => { 
-        if (window.testRunner)
-            testRunner.notifyDone();
-    });
 }
 
-test();
-</script>
\ No newline at end of file
+test().then(function() {
+    if (window.testRunner)
+        testRunner.notifyDone();
+}, function() {
+    if (window.testRunner)
+        testRunner.notifyDone();
+});
+</script>
index b35e6c2..049e1bc 100644 (file)
@@ -111,13 +111,18 @@ async function start() {
     renderPassEncoder.endPass();
     const commandBuffer = commandEncoder.finish();
     device.getQueue().submit([commandBuffer]);
-
-    if (window.testRunner)
-        testRunner.notifyDone();
 }
 if (window.testRunner)
     testRunner.waitUntilDone();
-window.addEventListener("load", start);
+window.addEventListener("load", function() {
+    start().then(function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    }, function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    });
+});
 </script>
 </body>
 </html>
index 9507d6b..7b0c10b 100644 (file)
@@ -117,13 +117,18 @@ async function start() {
     renderPassEncoder.endPass();
     const commandBuffer = commandEncoder.finish();
     device.getQueue().submit([commandBuffer]);
-
-    if (window.testRunner)
-        testRunner.notifyDone();
 }
 if (window.testRunner)
     testRunner.waitUntilDone();
-window.addEventListener("load", start);
+window.addEventListener("load", function() {
+    start().then(function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    }, function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    });
+});
 </script>
 </body>
 </html>
index 25877f4..8a114c4 100644 (file)
@@ -121,13 +121,18 @@ async function start() {
     renderPassEncoder.endPass();
     const commandBuffer = commandEncoder.finish();
     device.getQueue().submit([commandBuffer]);
-
-    if (window.testRunner)
-        testRunner.notifyDone();
 }
 if (window.testRunner)
     testRunner.waitUntilDone();
-window.addEventListener("load", start);
+window.addEventListener("load", function() {
+    start().then(function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    }, function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    });
+});
 </script>
 </body>
 </html>
index d995439..243c6f1 100644 (file)
@@ -123,13 +123,18 @@ async function start() {
     renderPassEncoder.endPass();
     const commandBuffer = commandEncoder.finish();
     device.getQueue().submit([commandBuffer]);
-
-    if (window.testRunner)
-        testRunner.notifyDone();
 }
 if (window.testRunner)
     testRunner.waitUntilDone();
-window.addEventListener("load", start);
+window.addEventListener("load", function() {
+    start().then(function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    }, function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    });
+});
 </script>
 </body>
 </html>
index 4a40843..8bdab79 100644 (file)
@@ -118,13 +118,18 @@ async function start() {
     renderPassEncoder.endPass();
     const commandBuffer = commandEncoder.finish();
     device.getQueue().submit([commandBuffer]);
-
-    if (window.testRunner)
-        testRunner.notifyDone();
 }
 if (window.testRunner)
     testRunner.waitUntilDone();
-window.addEventListener("load", start);
+window.addEventListener("load", function() {
+    start().then(function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    }, function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    });
+});
 </script>
 </body>
 </html>
index 2f8edd3..4a2252f 100644 (file)
@@ -112,13 +112,18 @@ async function start() {
     renderPassEncoder.endPass();
     const commandBuffer = commandEncoder.finish();
     device.getQueue().submit([commandBuffer]);
-
-    if (window.testRunner)
-        testRunner.notifyDone();
 }
 if (window.testRunner)
     testRunner.waitUntilDone();
-window.addEventListener("load", start);
+window.addEventListener("load", function() {
+    start().then(function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    }, function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    });
+});
 </script>
 </body>
 </html>
index 0056322..806b389 100644 (file)
@@ -112,13 +112,18 @@ async function start() {
     renderPassEncoder.endPass();
     const commandBuffer = commandEncoder.finish();
     device.getQueue().submit([commandBuffer]);
-
-    if (window.testRunner)
-        testRunner.notifyDone();
 }
 if (window.testRunner)
     testRunner.waitUntilDone();
-window.addEventListener("load", start);
+window.addEventListener("load", function() {
+    start().then(function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    }, function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    });
+});
 </script>
 </body>
 </html>
index 9e28813..fd930c8 100644 (file)
@@ -141,13 +141,18 @@ async function start() {
     renderPassEncoder.endPass();
     const commandBuffer = commandEncoder.finish();
     device.getQueue().submit([commandBuffer]);
-
-    if (window.testRunner)
-        testRunner.notifyDone();
 }
 if (window.testRunner)
     testRunner.waitUntilDone();
-window.addEventListener("load", start);
+window.addEventListener("load", function() {
+    start().then(function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    }, function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    });
+});
 </script>
 </body>
 </html>
index 6554680..12cdc36 100644 (file)
@@ -142,13 +142,18 @@ async function start() {
     renderPassEncoder.endPass();
     const commandBuffer = commandEncoder.finish();
     device.getQueue().submit([commandBuffer]);
-
-    if (window.testRunner)
-        testRunner.notifyDone();
 }
 if (window.testRunner)
     testRunner.waitUntilDone();
-window.addEventListener("load", start);
+window.addEventListener("load", function() {
+    start().then(function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    }, function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    });
+});
 </script>
 </body>
 </html>
index cb09944..5ee0318 100644 (file)
@@ -141,13 +141,18 @@ async function start() {
     renderPassEncoder.endPass();
     const commandBuffer = commandEncoder.finish();
     device.getQueue().submit([commandBuffer]);
-
-    if (window.testRunner)
-        testRunner.notifyDone();
 }
 if (window.testRunner)
     testRunner.waitUntilDone();
-window.addEventListener("load", start);
+window.addEventListener("load", function() {
+    start().then(function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    }, function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    });
+});
 </script>
 </body>
 </html>
index 4cce556..bd7460e 100644 (file)
@@ -122,13 +122,18 @@ async function start() {
     renderPassEncoder.endPass();
     const commandBuffer = commandEncoder.finish();
     device.getQueue().submit([commandBuffer]);
-
-    if (window.testRunner)
-        testRunner.notifyDone();
 }
 if (window.testRunner)
     testRunner.waitUntilDone();
-window.addEventListener("load", start);
+window.addEventListener("load", function() {
+    start().then(function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    }, function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    });
+});
 </script>
 </body>
 </html>
index f9bdc7c..3e34c93 100644 (file)
@@ -122,13 +122,18 @@ async function start() {
     renderPassEncoder.endPass();
     const commandBuffer = commandEncoder.finish();
     device.getQueue().submit([commandBuffer]);
-
-    if (window.testRunner)
-        testRunner.notifyDone();
 }
 if (window.testRunner)
     testRunner.waitUntilDone();
-window.addEventListener("load", start);
+window.addEventListener("load", function() {
+    start().then(function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    }, function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    });
+});
 </script>
 </body>
 </html>
index 14cd005..4f3afa3 100644 (file)
@@ -118,13 +118,18 @@ async function start() {
     renderPassEncoder.endPass();
     const commandBuffer = commandEncoder.finish();
     device.getQueue().submit([commandBuffer]);
-
-    if (window.testRunner)
-        testRunner.notifyDone();
 }
 if (window.testRunner)
     testRunner.waitUntilDone();
-window.addEventListener("load", start);
+window.addEventListener("load", function() {
+    start().then(function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    }, function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    });
+});
 </script>
 </body>
 </html>
index f72ad54..92d2ac3 100644 (file)
@@ -126,13 +126,18 @@ async function start() {
     renderPassEncoder.endPass();
     const commandBuffer = commandEncoder.finish();
     device.getQueue().submit([commandBuffer]);
-
-    if (window.testRunner)
-        testRunner.notifyDone();
 }
 if (window.testRunner)
     testRunner.waitUntilDone();
-window.addEventListener("load", start);
+window.addEventListener("load", function() {
+    start().then(function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    }, function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    });
+});
 </script>
 </body>
 </html>
index 99e41b3..c0a4b71 100644 (file)
@@ -154,13 +154,18 @@ async function start() {
     renderPassEncoder.endPass();
     const commandBuffer = commandEncoder.finish();
     device.getQueue().submit([commandBuffer]);
-
-    if (window.testRunner)
-        testRunner.notifyDone();
 }
 if (window.testRunner)
     testRunner.waitUntilDone();
-window.addEventListener("load", start);
+window.addEventListener("load", function() {
+    start().then(function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    }, function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    });
+});
 </script>
 </body>
 </html>
index 664de10..9e4375f 100644 (file)
@@ -119,13 +119,18 @@ async function start() {
     renderPassEncoder.endPass();
     const commandBuffer = commandEncoder.finish();
     device.getQueue().submit([commandBuffer]);
-
-    if (window.testRunner)
-        testRunner.notifyDone();
 }
 if (window.testRunner)
     testRunner.waitUntilDone();
-window.addEventListener("load", start);
+window.addEventListener("load", function() {
+    start().then(function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    }, function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    });
+});
 </script>
 </body>
 </html>
index e1f02a2..a6eb251 100644 (file)
@@ -134,13 +134,18 @@ async function start() {
     renderPassEncoder.endPass();
     const commandBuffer = commandEncoder.finish();
     device.getQueue().submit([commandBuffer]);
-
-    if (window.testRunner)
-        testRunner.notifyDone();
 }
 if (window.testRunner)
     testRunner.waitUntilDone();
-window.addEventListener("load", start);
+window.addEventListener("load", function() {
+    start().then(function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    }, function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    });
+});
 </script>
 </body>
 </html>
index 76f855f..49b016f 100644 (file)
@@ -124,13 +124,18 @@ async function start() {
     renderPassEncoder.endPass();
     const commandBuffer = commandEncoder.finish();
     device.getQueue().submit([commandBuffer]);
-
-    if (window.testRunner)
-        testRunner.notifyDone();
 }
 if (window.testRunner)
     testRunner.waitUntilDone();
-window.addEventListener("load", start);
+window.addEventListener("load", function() {
+    start().then(function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    }, function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    });
+});
 </script>
 </body>
 </html>
index 40172f0..c1fd165 100644 (file)
@@ -124,13 +124,18 @@ async function start() {
     renderPassEncoder.endPass();
     const commandBuffer = commandEncoder.finish();
     device.getQueue().submit([commandBuffer]);
-
-    if (window.testRunner)
-        testRunner.notifyDone();
 }
 if (window.testRunner)
     testRunner.waitUntilDone();
-window.addEventListener("load", start);
+window.addEventListener("load", function() {
+    start().then(function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    }, function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    });
+});
 </script>
 </body>
 </html>
index 8065b9b..8e73258 100644 (file)
@@ -140,13 +140,18 @@ async function start() {
     renderPassEncoder.endPass();
     const commandBuffer = commandEncoder.finish();
     device.getQueue().submit([commandBuffer]);
-
-    if (window.testRunner)
-        testRunner.notifyDone();
 }
 if (window.testRunner)
     testRunner.waitUntilDone();
-window.addEventListener("load", start);
+window.addEventListener("load", function() {
+    start().then(function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    }, function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    });
+});
 </script>
 </body>
 </html>
index bcc50d8..43ff33d 100644 (file)
@@ -123,13 +123,18 @@ async function start() {
     renderPassEncoder.endPass();
     const commandBuffer = commandEncoder.finish();
     device.getQueue().submit([commandBuffer]);
-
-    if (window.testRunner)
-        testRunner.notifyDone();
 }
 if (window.testRunner)
     testRunner.waitUntilDone();
-window.addEventListener("load", start);
+window.addEventListener("load", function() {
+    start().then(function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    }, function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    });
+});
 </script>
 </body>
 </html>
index 13726de..9f79433 100644 (file)
@@ -107,13 +107,18 @@ async function start() {
     renderPassEncoder.endPass();
     const commandBuffer = commandEncoder.finish();
     device.getQueue().submit([commandBuffer]);
-
-    if (window.testRunner)
-        testRunner.notifyDone();
 }
 if (window.testRunner)
     testRunner.waitUntilDone();
-window.addEventListener("load", start);
+window.addEventListener("load", function() {
+    start().then(function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    }, function() {
+        if (window.testRunner)
+            testRunner.notifyDone();
+    });
+});
 </script>
 </body>
 </html>