| // META: title=validation tests for WebNN API createContext() |
| // META: global=window,worker |
| // META: variant=?cpu |
| // META: variant=?gpu |
| // META: variant=?npu |
| // META: script=../resources/utils_validation.js |
| |
| 'use strict'; |
| |
| promise_test(async t => { |
| const ml_context_options = {}; |
| await navigator.ml.createContext(ml_context_options); |
| }, 'Create context with default MLContextOptions.'); |
| |
| promise_test(async t => { |
| const ml_context_options = { deviceType: 'cpu' }; |
| await navigator.ml.createContext(ml_context_options); |
| }, 'Create context with device type: cpu.'); |
| |
| promise_test(async t => { |
| const ml_context_options = { deviceType: 'xpu' }; |
| const promise = navigator.ml.createContext(ml_context_options); |
| promise_rejects_js(t, TypeError, promise); |
| }, 'Throw if deviceType is not a valid enum value of type MLDeviceType when creating the context.'); |
| |
| promise_test(async t => { |
| const ml_context_options = { powerPreference: 'default' }; |
| await navigator.ml.createContext(ml_context_options); |
| }, 'Create context with power preference: default.'); |
| |
| promise_test(async t => { |
| const ml_context_options = { powerPreference: 'high-performance' }; |
| await navigator.ml.createContext(ml_context_options); |
| }, 'Create context with power preference: high-performance.'); |
| |
| promise_test(async t => { |
| const ml_context_options = { powerPreference: 'low-power' }; |
| await navigator.ml.createContext(ml_context_options); |
| }, 'Create context with power preference: low-power.'); |
| |
| promise_test(async t => { |
| const ml_context_options = { powerPreference: 'auto' }; |
| const promise = navigator.ml.createContext(ml_context_options); |
| promise_rejects_js(t, TypeError, promise); |
| }, 'Throw if powerPreference is not a valid enum value of type MLPowerPreference when creating the context.'); |
| |
| promise_test(async t => { |
| const ml_context_options = { deviceType: 'cpu', powerPreference: 'high-performance' }; |
| await navigator.ml.createContext(ml_context_options); |
| }, '[createContext] Test creating context with deviceType=cpu, powerPreference=high-performance.'); |
| |
| promise_test(async t => { |
| // Skip the test if WebGPU or an adapter/device is not available. |
| if (!navigator.gpu) { |
| return; |
| } |
| const adapter = await navigator.gpu.requestAdapter(); |
| if (!adapter) { |
| return; |
| } |
| const device = await adapter.requestDevice(); |
| if (!device) { |
| return; |
| } |
| |
| await navigator.ml.createContext(device); |
| }, 'Create context with GPUDevice.'); |