| <!DOCTYPE html> |
| <meta charset=utf-8> |
| <title>Test Error Scopes.</title> |
| <body> |
| <script src="js/webgpu-functions.js"></script> |
| <script src="../resources/testharness.js"></script> |
| <script src="../resources/testharnessreport.js"></script> |
| <script> |
| let tests = {}; |
| let goodModule; |
| |
| tests["Compute compilation failed due to incorrect entry point string."] = async device => { |
| const goodWHLSL = ` |
| [numthreads(1, 1, 1)] |
| compute void _compute_main() { } |
| `; |
| goodModule = device.createShaderModule({ code: goodWHLSL }); |
| |
| device.pushErrorScope("validation"); |
| |
| device.createComputePipeline({ |
| computeStage: { |
| module: goodModule, |
| entryPoint: "compute_main" |
| } |
| }); |
| |
| return popValidationError(device); |
| }; |
| |
| tests["Compute pipeline creation succeeded."] = async device => { |
| device.pushErrorScope("validation"); |
| |
| device.createComputePipeline({ |
| computeStage: { |
| module: goodModule, |
| entryPoint: "_compute_main" |
| } |
| }); |
| |
| return popNullError(device); |
| }; |
| |
| tests["MSL pipeline creation failed due to invalid GPUShaderModule."] = async device => { |
| const badMSL = `This code should not compile.`; |
| |
| device.pushErrorScope("none"); |
| |
| const badMSLModule = device.createShaderModule({ code: badMSL }); |
| |
| await device.popErrorScope(); |
| |
| device.pushErrorScope("validation"); |
| |
| device.createComputePipeline({ |
| computeStage: { |
| module: badMSLModule, |
| entryPoint: "_compute_main" |
| } |
| }); |
| |
| return popValidationError(device); |
| }; |
| |
| tests["MSL pipeline creation failed due to incorrect entry point string."] = async device => { |
| const goodMSL = ` |
| kernel void _compute_main() { } |
| `; |
| const mslModule = device.createShaderModule({ code: goodMSL }); |
| |
| device.pushErrorScope("validation"); |
| |
| device.createComputePipeline({ |
| computeStage: { |
| module: mslModule, |
| entryPoint: "_compute_mai" |
| } |
| }); |
| |
| return popValidationError(device); |
| }; |
| |
| runTestsWithDevice(tests); |
| </script> |
| </body> |