diff options
Diffstat (limited to 'cli/tests/testdata')
-rw-r--r-- | cli/tests/testdata/run/unstable_webgpu.disabled.out | 2 | ||||
-rw-r--r-- | cli/tests/testdata/run/unstable_webgpu.enabled.out | 2 | ||||
-rw-r--r-- | cli/tests/testdata/run/unstable_webgpu.js | 10 | ||||
-rw-r--r-- | cli/tests/testdata/webgpu/computepass_shader.wgsl | 38 | ||||
-rw-r--r-- | cli/tests/testdata/webgpu/hellotriangle.out | bin | 0 -> 204800 bytes | |||
-rw-r--r-- | cli/tests/testdata/webgpu/hellotriangle_shader.wgsl | 11 |
6 files changed, 63 insertions, 0 deletions
diff --git a/cli/tests/testdata/run/unstable_webgpu.disabled.out b/cli/tests/testdata/run/unstable_webgpu.disabled.out new file mode 100644 index 000000000..775866352 --- /dev/null +++ b/cli/tests/testdata/run/unstable_webgpu.disabled.out @@ -0,0 +1,2 @@ +main undefined +worker undefined diff --git a/cli/tests/testdata/run/unstable_webgpu.enabled.out b/cli/tests/testdata/run/unstable_webgpu.enabled.out new file mode 100644 index 000000000..e2cc915ba --- /dev/null +++ b/cli/tests/testdata/run/unstable_webgpu.enabled.out @@ -0,0 +1,2 @@ +main [class GPU] +worker [class GPU] diff --git a/cli/tests/testdata/run/unstable_webgpu.js b/cli/tests/testdata/run/unstable_webgpu.js new file mode 100644 index 000000000..a796b1c4d --- /dev/null +++ b/cli/tests/testdata/run/unstable_webgpu.js @@ -0,0 +1,10 @@ +const scope = import.meta.url.slice(-7) === "#worker" ? "worker" : "main"; + +console.log(scope, globalThis.GPU); + +if (scope === "worker") { + postMessage("done"); +} else { + const worker = new Worker(`${import.meta.url}#worker`, { type: "module" }); + worker.onmessage = () => Deno.exit(0); +} diff --git a/cli/tests/testdata/webgpu/computepass_shader.wgsl b/cli/tests/testdata/webgpu/computepass_shader.wgsl new file mode 100644 index 000000000..41af4363a --- /dev/null +++ b/cli/tests/testdata/webgpu/computepass_shader.wgsl @@ -0,0 +1,38 @@ +@group(0) +@binding(0) +var<storage, read_write> v_indices: array<u32>; // this is used as both input and output for convenience + +// The Collatz Conjecture states that for any integer n: +// If n is even, n = n/2 +// If n is odd, n = 3n+1 +// And repeat this process for each new n, you will always eventually reach 1. +// Though the conjecture has not been proven, no counterexample has ever been found. +// This function returns how many times this recurrence needs to be applied to reach 1. +fn collatz_iterations(n_base: u32) -> u32{ + var n: u32 = n_base; + var i: u32 = 0u; + loop { + if (n <= 1u) { + break; + } + if (n % 2u == 0u) { + n = n / 2u; + } + else { + // Overflow? (i.e. 3*n + 1 > 0xffffffffu?) + if (n >= 1431655765u) { // 0x55555555u + return 4294967295u; // 0xffffffffu + } + + n = 3u * n + 1u; + } + i = i + 1u; + } + return i; +} + +@compute +@workgroup_size(1) +fn main(@builtin(global_invocation_id) global_id: vec3<u32>) { + v_indices[global_id.x] = collatz_iterations(v_indices[global_id.x]); +} diff --git a/cli/tests/testdata/webgpu/hellotriangle.out b/cli/tests/testdata/webgpu/hellotriangle.out Binary files differnew file mode 100644 index 000000000..52972ec9e --- /dev/null +++ b/cli/tests/testdata/webgpu/hellotriangle.out diff --git a/cli/tests/testdata/webgpu/hellotriangle_shader.wgsl b/cli/tests/testdata/webgpu/hellotriangle_shader.wgsl new file mode 100644 index 000000000..f84ccfe94 --- /dev/null +++ b/cli/tests/testdata/webgpu/hellotriangle_shader.wgsl @@ -0,0 +1,11 @@ +@vertex +fn vs_main(@builtin(vertex_index) in_vertex_index: u32) -> @builtin(position) vec4<f32> { + let x = f32(i32(in_vertex_index) - 1); + let y = f32(i32(in_vertex_index & 1u) * 2 - 1); + return vec4<f32>(x, y, 0.0, 1.0); +} + +@fragment +fn fs_main() -> @location(0) vec4<f32> { + return vec4<f32>(1.0, 0.0, 0.0, 1.0); +} |