[INFO] cloning repository https://github.com/Pauan/rust-wgpu-compute [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Pauan/rust-wgpu-compute" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FPauan%2Frust-wgpu-compute", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FPauan%2Frust-wgpu-compute'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 4b6327ab4f5edc5fb0e49ba831b725a4c3832342 [INFO] testing Pauan/rust-wgpu-compute against try#28f95933dc0727396c07b48d0a8cb5211b7fb472 for pr-154065-2 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FPauan%2Frust-wgpu-compute" "/workspace/builds/worker-0-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc2/source'... [INFO] [stderr] done. [INFO] removed /workspace/builds/worker-0-tc2/source/.cargo/config.toml [INFO] removed /workspace/builds/worker-0-tc2/source/rust-toolchain.toml [INFO] started tweaking git repo https://github.com/Pauan/rust-wgpu-compute [INFO] finished tweaking git repo https://github.com/Pauan/rust-wgpu-compute [INFO] tweaked toml for git repo https://github.com/Pauan/rust-wgpu-compute written to /workspace/builds/worker-0-tc2/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/Pauan/rust-wgpu-compute on toolchain 28f95933dc0727396c07b48d0a8cb5211b7fb472 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+28f95933dc0727396c07b48d0a8cb5211b7fb472" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/Pauan/rust-wgpu-compute already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+28f95933dc0727396c07b48d0a8cb5211b7fb472" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+28f95933dc0727396c07b48d0a8cb5211b7fb472" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 6e926bfcb7cf6492c4e3a42666d673f2a8cf8e94b5318a823a6dfcb565e6e666 [INFO] running `Command { std: "docker" "start" "-a" "6e926bfcb7cf6492c4e3a42666d673f2a8cf8e94b5318a823a6dfcb565e6e666", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "6e926bfcb7cf6492c4e3a42666d673f2a8cf8e94b5318a823a6dfcb565e6e666", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "6e926bfcb7cf6492c4e3a42666d673f2a8cf8e94b5318a823a6dfcb565e6e666", kill_on_drop: false }` [INFO] [stdout] 6e926bfcb7cf6492c4e3a42666d673f2a8cf8e94b5318a823a6dfcb565e6e666 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+28f95933dc0727396c07b48d0a8cb5211b7fb472" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 4fc10709844b5dd111f5bffeb53f1743bf6c6484470b2f04e17b5f5bfebf67b1 [INFO] running `Command { std: "docker" "start" "-a" "4fc10709844b5dd111f5bffeb53f1743bf6c6484470b2f04e17b5f5bfebf67b1", kill_on_drop: false }` [INFO] [stderr] Compiling unicode-ident v1.0.24 [INFO] [stderr] Compiling libm v0.2.16 [INFO] [stderr] Compiling bitflags v2.11.1 [INFO] [stderr] Compiling zerocopy v0.8.48 [INFO] [stderr] Compiling thiserror v2.0.18 [INFO] [stderr] Compiling log v0.4.29 [INFO] [stderr] Compiling wasm-bindgen-shared v0.2.121 [INFO] [stderr] Compiling rustversion v1.0.22 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling unicode-width v0.2.2 [INFO] [stderr] Compiling futures-core v0.3.32 [INFO] [stderr] Compiling futures-sink v0.3.32 [INFO] [stderr] Compiling bit-vec v0.8.0 [INFO] [stderr] Compiling indexmap v2.14.0 [INFO] [stderr] Compiling libloading v0.8.9 [INFO] [stderr] Compiling rustc-hash v1.1.0 [INFO] [stderr] Compiling proc-macro2 v1.0.106 [INFO] [stderr] Compiling foldhash v0.2.0 [INFO] [stderr] Compiling bit-set v0.8.0 [INFO] [stderr] Compiling futures-channel v0.3.32 [INFO] [stderr] Compiling codespan-reporting v0.12.0 [INFO] [stderr] Compiling arrayvec v0.7.6 [INFO] [stderr] Compiling ash v0.38.0+1.3.281 [INFO] [stderr] Compiling bumpalo v3.20.2 [INFO] [stderr] Compiling hexf-parse v0.2.1 [INFO] [stderr] Compiling hashbrown v0.16.1 [INFO] [stderr] Compiling naga v28.0.0 [INFO] [stderr] Compiling smallvec v1.15.1 [INFO] [stderr] Compiling khronos-egl v6.0.0 [INFO] [stderr] Compiling spirv v0.3.0+sdk-1.3.268.0 [INFO] [stderr] Compiling gpu-descriptor-types v0.2.0 [INFO] [stderr] Compiling hashbrown v0.15.5 [INFO] [stderr] Compiling wgpu-hal v28.0.1 [INFO] [stderr] Compiling presser v0.3.1 [INFO] [stderr] Compiling renderdoc-sys v1.1.0 [INFO] [stderr] Compiling quote v1.0.45 [INFO] [stderr] Compiling parking_lot_core v0.9.12 [INFO] [stderr] Compiling glow v0.16.0 [INFO] [stderr] Compiling profiling v1.0.18 [INFO] [stderr] Compiling naga v26.0.0 [INFO] [stderr] Compiling wgpu-core v28.0.1 [INFO] [stderr] Compiling litrs v1.0.0 [INFO] [stderr] Compiling parking_lot v0.12.5 [INFO] [stderr] Compiling syn v2.0.117 [INFO] [stderr] Compiling wasm-bindgen v0.2.121 [INFO] [stderr] Compiling wgpu v28.0.0 [INFO] [stderr] Compiling once_cell v1.21.4 [INFO] [stderr] Compiling termcolor v1.4.1 [INFO] [stderr] Compiling rayon v1.12.0 [INFO] [stderr] Compiling gpu-descriptor v0.3.2 [INFO] [stderr] Compiling document-features v0.2.12 [INFO] [stderr] Compiling codespan-reporting v0.13.1 [INFO] [stderr] Compiling ordered-float v5.3.0 [INFO] [stderr] Compiling wasm-bindgen-macro-support v0.2.121 [INFO] [stderr] Compiling zerocopy-derive v0.8.48 [INFO] [stderr] Compiling thiserror-impl v2.0.18 [INFO] [stderr] Compiling futures-macro v0.3.32 [INFO] [stderr] Compiling bytemuck_derive v1.10.2 [INFO] [stderr] Compiling futures-util v0.3.32 [INFO] [stderr] Compiling bytemuck v1.25.0 [INFO] [stderr] Compiling wgpu-types v28.0.0 [INFO] [stderr] Compiling wasm-bindgen-macro v0.2.121 [INFO] [stderr] Compiling futures-executor v0.3.32 [INFO] [stderr] Compiling futures v0.3.32 [INFO] [stderr] Compiling js-sys v0.3.98 [INFO] [stderr] Compiling console_error_panic_hook v0.1.7 [INFO] [stderr] Compiling half v2.7.1 [INFO] [stderr] Compiling gpu-allocator v0.28.0 [INFO] [stderr] Compiling web-sys v0.3.98 [INFO] [stderr] Compiling wasm-bindgen-futures v0.4.71 [INFO] [stderr] Compiling console_log v1.0.0 [INFO] [stderr] Compiling wgpu-compute-macro v0.1.0 (/opt/rustwide/workdir/crates/wgpu-compute-macro) [INFO] [stdout] warning: unreachable statement [INFO] [stdout] --> crates/wgpu-compute-macro/src/generate.rs:405:17 [INFO] [stdout] | [INFO] [stdout] 404 | todo!(); [INFO] [stdout] | ------- any code following this expression is unreachable [INFO] [stdout] 405 | unreachable!(); [INFO] [stdout] | ^^^^^^^^^^^^^^ unreachable statement [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `handle` [INFO] [stdout] --> crates/wgpu-compute-macro/src/generate.rs:394:35 [INFO] [stdout] | [INFO] [stdout] 394 | Expression::ZeroValue(handle) => { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_handle` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `size` [INFO] [stdout] --> crates/wgpu-compute-macro/src/generate.rs:398:33 [INFO] [stdout] | [INFO] [stdout] 398 | Expression::Splat { size, value } => { [INFO] [stdout] | ^^^^ help: try ignoring the field: `size: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `value` [INFO] [stdout] --> crates/wgpu-compute-macro/src/generate.rs:398:39 [INFO] [stdout] | [INFO] [stdout] 398 | Expression::Splat { size, value } => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `value: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> crates/wgpu-compute-macro/src/generate.rs:1003:21 [INFO] [stdout] | [INFO] [stdout] 1003 | let mut arguments = function.arguments.iter().map(|arg| { [INFO] [stdout] | ----^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `index` [INFO] [stdout] --> crates/wgpu-compute-macro/src/generate.rs:1054:18 [INFO] [stdout] | [INFO] [stdout] 1054 | for (index, entry) in self.module.entry_points.iter().enumerate() { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_index` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `index` [INFO] [stdout] --> crates/wgpu-compute-macro/src/generate.rs:1126:18 [INFO] [stdout] | [INFO] [stdout] 1126 | for (index, entry) in self.module.entry_points.iter().enumerate() { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_index` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `filename` is never read [INFO] [stdout] --> crates/wgpu-compute-macro/src/lib.rs:32:5 [INFO] [stdout] | [INFO] [stdout] 30 | struct File { [INFO] [stdout] | ---- field in this struct [INFO] [stdout] 31 | span: Span, [INFO] [stdout] 32 | filename: String, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Compiling wgpu-core-deps-windows-linux-android v28.0.0 [INFO] [stderr] Compiling wgpu-compute v0.1.0 (/opt/rustwide/workdir/crates/wgpu-compute) [INFO] [stderr] Compiling gpu v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] #[derive(:: std :: fmt :: Debug, :: std :: clone :: Clone, :: std :: marker :: [INFO] [stdout] Copy, :: bytemuck :: NoUninit, :: bytemuck :: AnyBitPattern,)] #[repr(C)] pub [INFO] [stdout] struct Input { pub value : f32, } impl Input [INFO] [stdout] { pub fn new(value : f32) -> Self { Self { value } } } [INFO] [stdout] #[derive(:: std :: fmt :: Debug, :: std :: clone :: Clone, :: std :: marker :: [INFO] [stdout] Copy, :: bytemuck :: NoUninit, :: bytemuck :: AnyBitPattern,)] #[repr(C)] pub [INFO] [stdout] struct Output { pub value : f32, } impl Output [INFO] [stdout] { pub fn new(value : f32) -> Self { Self { value } } } pub const FOO : Input = [INFO] [stdout] Input { value : 3f32, }; pub const BAR : [f32; 2usize] = [5f32, 1f32]; pub [INFO] [stdout] const QUX : [[f32; 3usize]; 2usize] = [INFO] [stdout] [[1f32, 2f32, 3f32], [4f32, 5f32, 6f32]]; pub struct Bindings [INFO] [stdout] { [INFO] [stdout] pub input : :: std :: vec :: Vec < Input > , pub output : :: std :: vec :: [INFO] [stdout] Vec < Output > , [INFO] [stdout] } pub struct BuffersGpu [INFO] [stdout] { [INFO] [stdout] pub input : :: wgpu_compute :: gpu :: BufferGpu < :: std :: vec :: Vec < [INFO] [stdout] Input > > , pub output : :: wgpu_compute :: gpu :: BufferGpu < :: std :: [INFO] [stdout] vec :: Vec < Output > > , [INFO] [stdout] } impl :: wgpu_compute :: gpu :: IntoBuffersGpu for Bindings [INFO] [stdout] { [INFO] [stdout] type Buffers = BuffersGpu; fn [INFO] [stdout] into_buffers_gpu(self, gpu : & :: wgpu_compute :: gpu :: Gpu) -> Self :: [INFO] [stdout] Buffers [INFO] [stdout] { [INFO] [stdout] BuffersGpu [INFO] [stdout] { [INFO] [stdout] input : gpu.input_vec(self.input.as_slice()), output : [INFO] [stdout] gpu.input_vec(self.output.as_slice()), [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] } impl BuffersGpu [INFO] [stdout] { [INFO] [stdout] :: std :: thread_local! [INFO] [stdout] { [INFO] [stdout] static GPU_LAYOUT : :: std :: cell :: OnceCell < :: wgpu_compute :: [INFO] [stdout] gpu :: __internal :: GpuLayout > = :: std :: cell :: OnceCell :: [INFO] [stdout] new(); [INFO] [stdout] } fn gpu_layout < 'a > [INFO] [stdout] (gpu : & :: wgpu_compute :: gpu :: Gpu, layout : & 'a :: std :: cell :: [INFO] [stdout] OnceCell < :: wgpu_compute :: gpu :: __internal :: GpuLayout > ,) -> & 'a [INFO] [stdout] :: wgpu_compute :: gpu :: __internal :: GpuLayout [INFO] [stdout] { [INFO] [stdout] layout.get_or_init(|| [INFO] [stdout] { [INFO] [stdout] :: wgpu_compute :: gpu :: __internal :: GpuLayout :: [INFO] [stdout] new(gpu, [INFO] [stdout] "struct Input {\n value: f32,\n}\n\nstruct Output {\n value: f32,\n}\n\nconst FOO: Input = Input(3f);\nconst BAR: vec2 = vec2(5f, 1f);\nconst QUX: mat2x3 = mat2x3(vec3(1f, 2f, 3f), vec3(4f, 5f, 6f));\n\n@group(0) @binding(0) \nvar input: array;\n@group(0) @binding(1) \nvar output: array;\n\nfn double_1(value: f32) -> f32 {\n return (value * 2f);\n}\n\n@compute @workgroup_size(64, 1, 1) \nfn double(@builtin(global_invocation_id) global_id: vec3) {\n let index: u32 = global_id.x;\n if (index >= arrayLength((&input))) {\n return;\n }\n let _e11: f32 = input[index].value;\n let _e12: f32 = double_1(_e11);\n output[index].value = _e12;\n return;\n}\n", [INFO] [stdout] & [INFO] [stdout] [& [INFO] [stdout] [:: wgpu :: BindGroupLayoutEntry [INFO] [stdout] { [INFO] [stdout] binding : 0u32, visibility : :: wgpu :: ShaderStages :: [INFO] [stdout] COMPUTE, ty : :: wgpu :: BindingType :: Buffer [INFO] [stdout] { [INFO] [stdout] ty : :: wgpu :: BufferBindingType :: Storage [INFO] [stdout] { read_only : true }, has_dynamic_offset : false, [INFO] [stdout] min_binding_size : :: std :: option :: Option :: [INFO] [stdout] Some(:: std :: num :: NonZeroU64 :: [INFO] [stdout] new(:: std :: mem :: size_of :: < Input > () as [INFO] [stdout] u64).unwrap()), [INFO] [stdout] }, count : :: std :: option :: Option :: None, [INFO] [stdout] }, :: wgpu :: BindGroupLayoutEntry [INFO] [stdout] { [INFO] [stdout] binding : 1u32, visibility : :: wgpu :: ShaderStages :: [INFO] [stdout] COMPUTE, ty : :: wgpu :: BindingType :: Buffer [INFO] [stdout] { [INFO] [stdout] ty : :: wgpu :: BufferBindingType :: Storage [INFO] [stdout] { read_only : false }, has_dynamic_offset : false, [INFO] [stdout] min_binding_size : :: std :: option :: Option :: [INFO] [stdout] Some(:: std :: num :: NonZeroU64 :: [INFO] [stdout] new(:: std :: mem :: size_of :: < Output > () as [INFO] [stdout] u64).unwrap()), [INFO] [stdout] }, count : :: std :: option :: Option :: None, [INFO] [stdout] },]],) [INFO] [stdout] }) [INFO] [stdout] } fn bind_group < A, F > (& self, f : F) -> A where F : [INFO] [stdout] FnOnce(& [& [:: wgpu :: BindGroupEntry]]) -> A [INFO] [stdout] { [INFO] [stdout] f(& [INFO] [stdout] [& [INFO] [stdout] [:: wgpu :: BindGroupEntry [INFO] [stdout] { [INFO] [stdout] binding : 0u32, resource : :: wgpu_compute :: gpu :: Gpu :: [INFO] [stdout] bind_group(& self.input), [INFO] [stdout] }, :: wgpu :: BindGroupEntry [INFO] [stdout] { [INFO] [stdout] binding : 1u32, resource : :: wgpu_compute :: gpu :: Gpu :: [INFO] [stdout] bind_group(& self.output), [INFO] [stdout] },]]) [INFO] [stdout] } [INFO] [stdout] } pub struct BindingsGpu < 'a > [INFO] [stdout] { [INFO] [stdout] pub input : :: wgpu_compute :: gpu :: BindingGpu < 'a, BuffersGpu, :: std [INFO] [stdout] :: vec :: Vec < Input > > , pub output : :: wgpu_compute :: gpu :: [INFO] [stdout] BindingGpu < 'a, BuffersGpu, :: std :: vec :: Vec < Output > > , [INFO] [stdout] } impl < 'a > :: wgpu_compute :: Bindings < 'a, BindingsGpu < 'a >> for :: [INFO] [stdout] wgpu_compute :: gpu :: StateGpu < Bindings > [INFO] [stdout] { [INFO] [stdout] fn bindings(& 'a self) -> BindingsGpu < 'a > [INFO] [stdout] { [INFO] [stdout] BindingsGpu [INFO] [stdout] { [INFO] [stdout] input : :: wgpu_compute :: gpu :: BindingGpu :: [INFO] [stdout] new(& self.__internal(), & self.__internal().buffers.input), [INFO] [stdout] output : :: wgpu_compute :: gpu :: BindingGpu :: [INFO] [stdout] new(& self.__internal(), & self.__internal().buffers.output), [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] } pub trait MethodsGpu [INFO] [stdout] { [INFO] [stdout] fn double(& self, threads : u32) -> impl :: std :: future :: Future < [INFO] [stdout] Output = () > ; [INFO] [stdout] } impl MethodsGpu for :: wgpu_compute :: gpu :: StateGpu < Bindings > [INFO] [stdout] { [INFO] [stdout] fn double(& self, threads : u32) -> impl :: std :: future :: Future < [INFO] [stdout] Output = () > [INFO] [stdout] { [INFO] [stdout] let state = self.__internal(); :: std :: thread_local! [INFO] [stdout] { [INFO] [stdout] static GPU_FN : :: std :: cell :: OnceCell < :: wgpu_compute :: [INFO] [stdout] gpu :: __internal :: GpuFn > = :: std :: cell :: OnceCell :: [INFO] [stdout] new(); [INFO] [stdout] } BuffersGpu :: [INFO] [stdout] GPU_LAYOUT.with(| gpu_layout | [INFO] [stdout] { [INFO] [stdout] let gpu_layout = BuffersGpu :: [INFO] [stdout] gpu_layout(& state.gpu, gpu_layout); [INFO] [stdout] GPU_FN.with(| gpu_fn | [INFO] [stdout] { [INFO] [stdout] let gpu_fn = [INFO] [stdout] gpu_fn.get_or_init(|| [INFO] [stdout] { [INFO] [stdout] :: wgpu_compute :: gpu :: __internal :: GpuFn :: [INFO] [stdout] new(& state.gpu, gpu_layout, [64u32, 1u32, 1u32], "double",) [INFO] [stdout] }); let mut encoder = [INFO] [stdout] state.buffers.bind_group(| bind_group | [INFO] [stdout] { [INFO] [stdout] :: wgpu_compute :: gpu :: __internal :: [INFO] [stdout] command_encoder(& state.gpu, gpu_layout, gpu_fn, threads, [INFO] [stdout] bind_group,) [INFO] [stdout] }); for (input, output) in [INFO] [stdout] state.copy_buffers.lock().unwrap().iter() [INFO] [stdout] { [INFO] [stdout] :: wgpu_compute :: gpu :: __internal :: [INFO] [stdout] copy_input_to_output(& mut encoder, input, output); [INFO] [stdout] } :: wgpu_compute :: gpu :: __internal :: [INFO] [stdout] wait(& state.gpu, encoder) [INFO] [stdout] }) [INFO] [stdout] }) [INFO] [stdout] } [INFO] [stdout] } [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 17s [INFO] running `Command { std: "docker" "inspect" "4fc10709844b5dd111f5bffeb53f1743bf6c6484470b2f04e17b5f5bfebf67b1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "4fc10709844b5dd111f5bffeb53f1743bf6c6484470b2f04e17b5f5bfebf67b1", kill_on_drop: false }` [INFO] [stdout] 4fc10709844b5dd111f5bffeb53f1743bf6c6484470b2f04e17b5f5bfebf67b1 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+28f95933dc0727396c07b48d0a8cb5211b7fb472" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 9f598f2a22081b5aac6759b06ec2fe2d91977a9a203b6fd52f751ff5e5e5f5e3 [INFO] running `Command { std: "docker" "start" "-a" "9f598f2a22081b5aac6759b06ec2fe2d91977a9a203b6fd52f751ff5e5e5f5e3", kill_on_drop: false }` [INFO] [stdout] warning: unreachable statement [INFO] [stdout] --> crates/wgpu-compute-macro/src/generate.rs:405:17 [INFO] [stdout] | [INFO] [stdout] 404 | todo!(); [INFO] [stdout] | ------- any code following this expression is unreachable [INFO] [stdout] 405 | unreachable!(); [INFO] [stdout] | ^^^^^^^^^^^^^^ unreachable statement [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `handle` [INFO] [stdout] --> crates/wgpu-compute-macro/src/generate.rs:394:35 [INFO] [stdout] | [INFO] [stdout] 394 | Expression::ZeroValue(handle) => { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_handle` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `size` [INFO] [stdout] --> crates/wgpu-compute-macro/src/generate.rs:398:33 [INFO] [stdout] | [INFO] [stdout] 398 | Expression::Splat { size, value } => { [INFO] [stdout] | ^^^^ help: try ignoring the field: `size: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `value` [INFO] [stdout] --> crates/wgpu-compute-macro/src/generate.rs:398:39 [INFO] [stdout] | [INFO] [stdout] 398 | Expression::Splat { size, value } => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `value: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> crates/wgpu-compute-macro/src/generate.rs:1003:21 [INFO] [stdout] | [INFO] [stdout] 1003 | let mut arguments = function.arguments.iter().map(|arg| { [INFO] [stdout] | ----^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `index` [INFO] [stdout] --> crates/wgpu-compute-macro/src/generate.rs:1054:18 [INFO] [stdout] | [INFO] [stdout] 1054 | for (index, entry) in self.module.entry_points.iter().enumerate() { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_index` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `index` [INFO] [stdout] --> crates/wgpu-compute-macro/src/generate.rs:1126:18 [INFO] [stdout] | [INFO] [stdout] 1126 | for (index, entry) in self.module.entry_points.iter().enumerate() { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_index` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `filename` is never read [INFO] [stdout] --> crates/wgpu-compute-macro/src/lib.rs:32:5 [INFO] [stdout] | [INFO] [stdout] 30 | struct File { [INFO] [stdout] | ---- field in this struct [INFO] [stdout] 31 | span: Span, [INFO] [stdout] 32 | filename: String, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Compiling gpu v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] #[derive(:: std :: fmt :: Debug, :: std :: clone :: Clone, :: std :: marker :: [INFO] [stdout] Copy, :: bytemuck :: NoUninit, :: bytemuck :: AnyBitPattern,)] #[repr(C)] pub [INFO] [stdout] struct Input { pub value : f32, } impl Input [INFO] [stdout] { pub fn new(value : f32) -> Self { Self { value } } } [INFO] [stdout] #[derive(:: std :: fmt :: Debug, :: std :: clone :: Clone, :: std :: marker :: [INFO] [stdout] Copy, :: bytemuck :: NoUninit, :: bytemuck :: AnyBitPattern,)] #[repr(C)] pub [INFO] [stdout] struct Output { pub value : f32, } impl Output [INFO] [stdout] { pub fn new(value : f32) -> Self { Self { value } } } pub const FOO : Input = [INFO] [stdout] Input { value : 3f32, }; pub const BAR : [f32; 2usize] = [5f32, 1f32]; pub [INFO] [stdout] const QUX : [[f32; 3usize]; 2usize] = [INFO] [stdout] [[1f32, 2f32, 3f32], [4f32, 5f32, 6f32]]; pub struct Bindings [INFO] [stdout] { [INFO] [stdout] pub input : :: std :: vec :: Vec < Input > , pub output : :: std :: vec :: [INFO] [stdout] Vec < Output > , [INFO] [stdout] } pub struct BuffersGpu [INFO] [stdout] { [INFO] [stdout] pub input : :: wgpu_compute :: gpu :: BufferGpu < :: std :: vec :: Vec < [INFO] [stdout] Input > > , pub output : :: wgpu_compute :: gpu :: BufferGpu < :: std :: [INFO] [stdout] vec :: Vec < Output > > , [INFO] [stdout] } impl :: wgpu_compute :: gpu :: IntoBuffersGpu for Bindings [INFO] [stdout] { [INFO] [stdout] type Buffers = BuffersGpu; fn [INFO] [stdout] into_buffers_gpu(self, gpu : & :: wgpu_compute :: gpu :: Gpu) -> Self :: [INFO] [stdout] Buffers [INFO] [stdout] { [INFO] [stdout] BuffersGpu [INFO] [stdout] { [INFO] [stdout] input : gpu.input_vec(self.input.as_slice()), output : [INFO] [stdout] gpu.input_vec(self.output.as_slice()), [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] } impl BuffersGpu [INFO] [stdout] { [INFO] [stdout] :: std :: thread_local! [INFO] [stdout] { [INFO] [stdout] static GPU_LAYOUT : :: std :: cell :: OnceCell < :: wgpu_compute :: [INFO] [stdout] gpu :: __internal :: GpuLayout > = :: std :: cell :: OnceCell :: [INFO] [stdout] new(); [INFO] [stdout] } fn gpu_layout < 'a > [INFO] [stdout] (gpu : & :: wgpu_compute :: gpu :: Gpu, layout : & 'a :: std :: cell :: [INFO] [stdout] OnceCell < :: wgpu_compute :: gpu :: __internal :: GpuLayout > ,) -> & 'a [INFO] [stdout] :: wgpu_compute :: gpu :: __internal :: GpuLayout [INFO] [stdout] { [INFO] [stdout] layout.get_or_init(|| [INFO] [stdout] { [INFO] [stdout] :: wgpu_compute :: gpu :: __internal :: GpuLayout :: [INFO] [stdout] new(gpu, [INFO] [stdout] "struct Input {\n value: f32,\n}\n\nstruct Output {\n value: f32,\n}\n\nconst FOO: Input = Input(3f);\nconst BAR: vec2 = vec2(5f, 1f);\nconst QUX: mat2x3 = mat2x3(vec3(1f, 2f, 3f), vec3(4f, 5f, 6f));\n\n@group(0) @binding(0) \nvar input: array;\n@group(0) @binding(1) \nvar output: array;\n\nfn double_1(value: f32) -> f32 {\n return (value * 2f);\n}\n\n@compute @workgroup_size(64, 1, 1) \nfn double(@builtin(global_invocation_id) global_id: vec3) {\n let index: u32 = global_id.x;\n if (index >= arrayLength((&input))) {\n return;\n }\n let _e11: f32 = input[index].value;\n let _e12: f32 = double_1(_e11);\n output[index].value = _e12;\n return;\n}\n", [INFO] [stdout] & [INFO] [stdout] [& [INFO] [stdout] [:: wgpu :: BindGroupLayoutEntry [INFO] [stdout] { [INFO] [stdout] binding : 0u32, visibility : :: wgpu :: ShaderStages :: [INFO] [stdout] COMPUTE, ty : :: wgpu :: BindingType :: Buffer [INFO] [stdout] { [INFO] [stdout] ty : :: wgpu :: BufferBindingType :: Storage [INFO] [stdout] { read_only : true }, has_dynamic_offset : false, [INFO] [stdout] min_binding_size : :: std :: option :: Option :: [INFO] [stdout] Some(:: std :: num :: NonZeroU64 :: [INFO] [stdout] new(:: std :: mem :: size_of :: < Input > () as [INFO] [stdout] u64).unwrap()), [INFO] [stdout] }, count : :: std :: option :: Option :: None, [INFO] [stdout] }, :: wgpu :: BindGroupLayoutEntry [INFO] [stdout] { [INFO] [stdout] binding : 1u32, visibility : :: wgpu :: ShaderStages :: [INFO] [stdout] COMPUTE, ty : :: wgpu :: BindingType :: Buffer [INFO] [stdout] { [INFO] [stdout] ty : :: wgpu :: BufferBindingType :: Storage [INFO] [stdout] { read_only : false }, has_dynamic_offset : false, [INFO] [stdout] min_binding_size : :: std :: option :: Option :: [INFO] [stdout] Some(:: std :: num :: NonZeroU64 :: [INFO] [stdout] new(:: std :: mem :: size_of :: < Output > () as [INFO] [stdout] u64).unwrap()), [INFO] [stdout] }, count : :: std :: option :: Option :: None, [INFO] [stdout] },]],) [INFO] [stdout] }) [INFO] [stdout] } fn bind_group < A, F > (& self, f : F) -> A where F : [INFO] [stdout] FnOnce(& [& [:: wgpu :: BindGroupEntry]]) -> A [INFO] [stdout] { [INFO] [stdout] f(& [INFO] [stdout] [& [INFO] [stdout] [:: wgpu :: BindGroupEntry [INFO] [stdout] { [INFO] [stdout] binding : 0u32, resource : :: wgpu_compute :: gpu :: Gpu :: [INFO] [stdout] bind_group(& self.input), [INFO] [stdout] }, :: wgpu :: BindGroupEntry [INFO] [stdout] { [INFO] [stdout] binding : 1u32, resource : :: wgpu_compute :: gpu :: Gpu :: [INFO] [stdout] bind_group(& self.output), [INFO] [stdout] },]]) [INFO] [stdout] } [INFO] [stdout] } pub struct BindingsGpu < 'a > [INFO] [stdout] { [INFO] [stdout] pub input : :: wgpu_compute :: gpu :: BindingGpu < 'a, BuffersGpu, :: std [INFO] [stdout] :: vec :: Vec < Input > > , pub output : :: wgpu_compute :: gpu :: [INFO] [stdout] BindingGpu < 'a, BuffersGpu, :: std :: vec :: Vec < Output > > , [INFO] [stdout] } impl < 'a > :: wgpu_compute :: Bindings < 'a, BindingsGpu < 'a >> for :: [INFO] [stdout] wgpu_compute :: gpu :: StateGpu < Bindings > [INFO] [stdout] { [INFO] [stdout] fn bindings(& 'a self) -> BindingsGpu < 'a > [INFO] [stdout] { [INFO] [stdout] BindingsGpu [INFO] [stdout] { [INFO] [stdout] input : :: wgpu_compute :: gpu :: BindingGpu :: [INFO] [stdout] new(& self.__internal(), & self.__internal().buffers.input), [INFO] [stdout] output : :: wgpu_compute :: gpu :: BindingGpu :: [INFO] [stdout] new(& self.__internal(), & self.__internal().buffers.output), [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] } pub trait MethodsGpu [INFO] [stdout] { [INFO] [stdout] fn double(& self, threads : u32) -> impl :: std :: future :: Future < [INFO] [stdout] Output = () > ; [INFO] [stdout] } impl MethodsGpu for :: wgpu_compute :: gpu :: StateGpu < Bindings > [INFO] [stdout] { [INFO] [stdout] fn double(& self, threads : u32) -> impl :: std :: future :: Future < [INFO] [stdout] Output = () > [INFO] [stdout] { [INFO] [stdout] let state = self.__internal(); :: std :: thread_local! [INFO] [stdout] { [INFO] [stdout] static GPU_FN : :: std :: cell :: OnceCell < :: wgpu_compute :: [INFO] [stdout] gpu :: __internal :: GpuFn > = :: std :: cell :: OnceCell :: [INFO] [stdout] new(); [INFO] [stdout] } BuffersGpu :: [INFO] [stdout] GPU_LAYOUT.with(| gpu_layout | [INFO] [stdout] { [INFO] [stdout] let gpu_layout = BuffersGpu :: [INFO] [stdout] gpu_layout(& state.gpu, gpu_layout); [INFO] [stdout] GPU_FN.with(| gpu_fn | [INFO] [stdout] { [INFO] [stdout] let gpu_fn = [INFO] [stdout] gpu_fn.get_or_init(|| [INFO] [stdout] { [INFO] [stdout] :: wgpu_compute :: gpu :: __internal :: GpuFn :: [INFO] [stdout] new(& state.gpu, gpu_layout, [64u32, 1u32, 1u32], "double",) [INFO] [stdout] }); let mut encoder = [INFO] [stdout] state.buffers.bind_group(| bind_group | [INFO] [stdout] { [INFO] [stdout] :: wgpu_compute :: gpu :: __internal :: [INFO] [stdout] command_encoder(& state.gpu, gpu_layout, gpu_fn, threads, [INFO] [stdout] bind_group,) [INFO] [stdout] }); for (input, output) in [INFO] [stdout] state.copy_buffers.lock().unwrap().iter() [INFO] [stdout] { [INFO] [stdout] :: wgpu_compute :: gpu :: __internal :: [INFO] [stdout] copy_input_to_output(& mut encoder, input, output); [INFO] [stdout] } :: wgpu_compute :: gpu :: __internal :: [INFO] [stdout] wait(& state.gpu, encoder) [INFO] [stdout] }) [INFO] [stdout] }) [INFO] [stdout] } [INFO] [stdout] } [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 1.87s [INFO] running `Command { std: "docker" "inspect" "9f598f2a22081b5aac6759b06ec2fe2d91977a9a203b6fd52f751ff5e5e5f5e3", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "9f598f2a22081b5aac6759b06ec2fe2d91977a9a203b6fd52f751ff5e5e5f5e3", kill_on_drop: false }` [INFO] [stdout] 9f598f2a22081b5aac6759b06ec2fe2d91977a9a203b6fd52f751ff5e5e5f5e3 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+28f95933dc0727396c07b48d0a8cb5211b7fb472" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] 2eaacc7dc294302f92eae7ae782d4e438f703c3967f5b41c51b74eba92b51bf0 [INFO] running `Command { std: "docker" "start" "-a" "2eaacc7dc294302f92eae7ae782d4e438f703c3967f5b41c51b74eba92b51bf0", kill_on_drop: false }` [INFO] [stderr] warning: unreachable statement [INFO] [stderr] --> crates/wgpu-compute-macro/src/generate.rs:405:17 [INFO] [stderr] | [INFO] [stderr] 404 | todo!(); [INFO] [stderr] | ------- any code following this expression is unreachable [INFO] [stderr] 405 | unreachable!(); [INFO] [stderr] | ^^^^^^^^^^^^^^ unreachable statement [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `handle` [INFO] [stderr] --> crates/wgpu-compute-macro/src/generate.rs:394:35 [INFO] [stderr] | [INFO] [stderr] 394 | Expression::ZeroValue(handle) => { [INFO] [stderr] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_handle` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `size` [INFO] [stderr] --> crates/wgpu-compute-macro/src/generate.rs:398:33 [INFO] [stderr] | [INFO] [stderr] 398 | Expression::Splat { size, value } => { [INFO] [stderr] | ^^^^ help: try ignoring the field: `size: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `value` [INFO] [stderr] --> crates/wgpu-compute-macro/src/generate.rs:398:39 [INFO] [stderr] | [INFO] [stderr] 398 | Expression::Splat { size, value } => { [INFO] [stderr] | ^^^^^ help: try ignoring the field: `value: _` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> crates/wgpu-compute-macro/src/generate.rs:1003:21 [INFO] [stderr] | [INFO] [stderr] 1003 | let mut arguments = function.arguments.iter().map(|arg| { [INFO] [stderr] | ----^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `index` [INFO] [stderr] --> crates/wgpu-compute-macro/src/generate.rs:1054:18 [INFO] [stderr] | [INFO] [stderr] 1054 | for (index, entry) in self.module.entry_points.iter().enumerate() { [INFO] [stderr] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_index` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `index` [INFO] [stderr] --> crates/wgpu-compute-macro/src/generate.rs:1126:18 [INFO] [stderr] | [INFO] [stderr] 1126 | for (index, entry) in self.module.entry_points.iter().enumerate() { [INFO] [stderr] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_index` [INFO] [stderr] [INFO] [stderr] warning: field `filename` is never read [INFO] [stderr] --> crates/wgpu-compute-macro/src/lib.rs:32:5 [INFO] [stderr] | [INFO] [stderr] 30 | struct File { [INFO] [stderr] | ---- field in this struct [INFO] [stderr] 31 | span: Span, [INFO] [stderr] 32 | filename: String, [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: `wgpu-compute-macro` (lib) generated 8 warnings (run `cargo fix --lib -p wgpu-compute-macro` to apply 6 suggestions) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.28s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/gpu-085e29d11125e170) [INFO] [stdout] [INFO] [stdout] running 0 tests [INFO] [stdout] [INFO] [stderr] Doc-tests gpu [INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stdout] #[derive(:: std :: fmt :: Debug, :: std :: clone :: Clone, :: std :: marker :: [INFO] [stdout] Copy, :: bytemuck :: NoUninit, :: bytemuck :: AnyBitPattern,)] #[repr(C)] pub [INFO] [stdout] struct Input { pub value : f32, } impl Input [INFO] [stdout] { pub fn new(value : f32) -> Self { Self { value } } } [INFO] [stdout] #[derive(:: std :: fmt :: Debug, :: std :: clone :: Clone, :: std :: marker :: [INFO] [stdout] Copy, :: bytemuck :: NoUninit, :: bytemuck :: AnyBitPattern,)] #[repr(C)] pub [INFO] [stdout] struct Output { pub value : f32, } impl Output [INFO] [stdout] { pub fn new(value : f32) -> Self { Self { value } } } pub const FOO : Input = [INFO] [stdout] Input { value : 3f32, }; pub const BAR : [f32; 2usize] = [5f32, 1f32]; pub [INFO] [stdout] const QUX : [[f32; 3usize]; 2usize] = [INFO] [stdout] [[1f32, 2f32, 3f32], [4f32, 5f32, 6f32]]; pub struct Bindings [INFO] [stdout] { [INFO] [stdout] pub input : :: std :: vec :: Vec < Input > , pub output : :: std :: vec :: [INFO] [stdout] Vec < Output > , [INFO] [stdout] } pub struct BuffersGpu [INFO] [stdout] { [INFO] [stdout] pub input : :: wgpu_compute :: gpu :: BufferGpu < :: std :: vec :: Vec < [INFO] [stdout] Input > > , pub output : :: wgpu_compute :: gpu :: BufferGpu < :: std :: [INFO] [stdout] vec :: Vec < Output > > , [INFO] [stdout] } impl :: wgpu_compute :: gpu :: IntoBuffersGpu for Bindings [INFO] [stdout] { [INFO] [stdout] type Buffers = BuffersGpu; fn [INFO] [stdout] into_buffers_gpu(self, gpu : & :: wgpu_compute :: gpu :: Gpu) -> Self :: [INFO] [stdout] Buffers [INFO] [stdout] { [INFO] [stdout] BuffersGpu [INFO] [stdout] { [INFO] [stdout] input : gpu.input_vec(self.input.as_slice()), output : [INFO] [stdout] gpu.input_vec(self.output.as_slice()), [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] } impl BuffersGpu [INFO] [stdout] { [INFO] [stdout] :: std :: thread_local! [INFO] [stdout] { [INFO] [stdout] static GPU_LAYOUT : :: std :: cell :: OnceCell < :: wgpu_compute :: [INFO] [stdout] gpu :: __internal :: GpuLayout > = :: std :: cell :: OnceCell :: [INFO] [stdout] new(); [INFO] [stdout] } fn gpu_layout < 'a > [INFO] [stdout] (gpu : & :: wgpu_compute :: gpu :: Gpu, layout : & 'a :: std :: cell :: [INFO] [stdout] OnceCell < :: wgpu_compute :: gpu :: __internal :: GpuLayout > ,) -> & 'a [INFO] [stdout] :: wgpu_compute :: gpu :: __internal :: GpuLayout [INFO] [stdout] { [INFO] [stdout] layout.get_or_init(|| [INFO] [stdout] { [INFO] [stdout] :: wgpu_compute :: gpu :: __internal :: GpuLayout :: [INFO] [stdout] new(gpu, [INFO] [stdout] "struct Input {\n value: f32,\n}\n\nstruct Output {\n value: f32,\n}\n\nconst FOO: Input = Input(3f);\nconst BAR: vec2 = vec2(5f, 1f);\nconst QUX: mat2x3 = mat2x3(vec3(1f, 2f, 3f), vec3(4f, 5f, 6f));\n\n@group(0) @binding(0) \nvar input: array;\n@group(0) @binding(1) \nvar output: array;\n\nfn double_1(value: f32) -> f32 {\n return (value * 2f);\n}\n\n@compute @workgroup_size(64, 1, 1) \nfn double(@builtin(global_invocation_id) global_id: vec3) {\n let index: u32 = global_id.x;\n if (index >= arrayLength((&input))) {\n return;\n }\n let _e11: f32 = input[index].value;\n let _e12: f32 = double_1(_e11);\n output[index].value = _e12;\n return;\n}\n", [INFO] [stdout] & [INFO] [stdout] [& [INFO] [stdout] [:: wgpu :: BindGroupLayoutEntry [INFO] [stdout] { [INFO] [stdout] binding : 0u32, visibility : :: wgpu :: ShaderStages :: [INFO] [stdout] COMPUTE, ty : :: wgpu :: BindingType :: Buffer [INFO] [stdout] { [INFO] [stdout] ty : :: wgpu :: BufferBindingType :: Storage [INFO] [stdout] { read_only : true }, has_dynamic_offset : false, [INFO] [stdout] min_binding_size : :: std :: option :: Option :: [INFO] [stdout] Some(:: std :: num :: NonZeroU64 :: [INFO] [stdout] new(:: std :: mem :: size_of :: < Input > () as [INFO] [stdout] u64).unwrap()), [INFO] [stdout] }, count : :: std :: option :: Option :: None, [INFO] [stdout] }, :: wgpu :: BindGroupLayoutEntry [INFO] [stdout] { [INFO] [stdout] binding : 1u32, visibility : :: wgpu :: ShaderStages :: [INFO] [stdout] COMPUTE, ty : :: wgpu :: BindingType :: Buffer [INFO] [stdout] { [INFO] [stdout] ty : :: wgpu :: BufferBindingType :: Storage [INFO] [stdout] { read_only : false }, has_dynamic_offset : false, [INFO] [stdout] min_binding_size : :: std :: option :: Option :: [INFO] [stdout] Some(:: std :: num :: NonZeroU64 :: [INFO] [stdout] new(:: std :: mem :: size_of :: < Output > () as [INFO] [stdout] u64).unwrap()), [INFO] [stdout] }, count : :: std :: option :: Option :: None, [INFO] [stdout] },]],) [INFO] [stdout] }) [INFO] [stdout] } fn bind_group < A, F > (& self, f : F) -> A where F : [INFO] [stdout] FnOnce(& [& [:: wgpu :: BindGroupEntry]]) -> A [INFO] [stdout] { [INFO] [stdout] f(& [INFO] [stdout] [& [INFO] [stdout] [:: wgpu :: BindGroupEntry [INFO] [stdout] { [INFO] [stdout] binding : 0u32, resource : :: wgpu_compute :: gpu :: Gpu :: [INFO] [stdout] bind_group(& self.input), [INFO] [stdout] }, :: wgpu :: BindGroupEntry [INFO] [stdout] { [INFO] [stdout] binding : 1u32, resource : :: wgpu_compute :: gpu :: Gpu :: [INFO] [stdout] bind_group(& self.output), [INFO] [stdout] },]]) [INFO] [stdout] } [INFO] [stdout] } pub struct BindingsGpu < 'a > [INFO] [stdout] { [INFO] [stdout] pub input : :: wgpu_compute :: gpu :: BindingGpu < 'a, BuffersGpu, :: std [INFO] [stdout] :: vec :: Vec < Input > > , pub output : :: wgpu_compute :: gpu :: [INFO] [stdout] BindingGpu < 'a, BuffersGpu, :: std :: vec :: Vec < Output > > , [INFO] [stdout] } impl < 'a > :: wgpu_compute :: Bindings < 'a, BindingsGpu < 'a >> for :: [INFO] [stdout] wgpu_compute :: gpu :: StateGpu < Bindings > [INFO] [stdout] { [INFO] [stdout] fn bindings(& 'a self) -> BindingsGpu < 'a > [INFO] [stdout] { [INFO] [stdout] BindingsGpu [INFO] [stdout] { [INFO] [stdout] input : :: wgpu_compute :: gpu :: BindingGpu :: [INFO] [stdout] new(& self.__internal(), & self.__internal().buffers.input), [INFO] [stdout] output : :: wgpu_compute :: gpu :: BindingGpu :: [INFO] [stdout] new(& self.__internal(), & self.__internal().buffers.output), [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] } pub trait MethodsGpu [INFO] [stdout] { [INFO] [stdout] fn double(& self, threads : u32) -> impl :: std :: future :: Future < [INFO] [stdout] Output = () > ; [INFO] [stdout] } impl MethodsGpu for :: wgpu_compute :: gpu :: StateGpu < Bindings > [INFO] [stdout] { [INFO] [stdout] fn double(& self, threads : u32) -> impl :: std :: future :: Future < [INFO] [stdout] Output = () > [INFO] [stdout] { [INFO] [stdout] let state = self.__internal(); :: std :: thread_local! [INFO] [stdout] { [INFO] [stdout] static GPU_FN : :: std :: cell :: OnceCell < :: wgpu_compute :: [INFO] [stdout] gpu :: __internal :: GpuFn > = :: std :: cell :: OnceCell :: [INFO] [stdout] new(); [INFO] [stdout] } BuffersGpu :: [INFO] [stdout] GPU_LAYOUT.with(| gpu_layout | [INFO] [stdout] { [INFO] [stdout] let gpu_layout = BuffersGpu :: [INFO] [stdout] gpu_layout(& state.gpu, gpu_layout); [INFO] [stdout] GPU_FN.with(| gpu_fn | [INFO] [stdout] { [INFO] [stdout] let gpu_fn = [INFO] [stdout] gpu_fn.get_or_init(|| [INFO] [stdout] { [INFO] [stdout] :: wgpu_compute :: gpu :: __internal :: GpuFn :: [INFO] [stdout] new(& state.gpu, gpu_layout, [64u32, 1u32, 1u32], "double",) [INFO] [stdout] }); let mut encoder = [INFO] [stdout] state.buffers.bind_group(| bind_group | [INFO] [stdout] { [INFO] [stdout] :: wgpu_compute :: gpu :: __internal :: [INFO] [stdout] command_encoder(& state.gpu, gpu_layout, gpu_fn, threads, [INFO] [stdout] bind_group,) [INFO] [stdout] }); for (input, output) in [INFO] [stdout] state.copy_buffers.lock().unwrap().iter() [INFO] [stdout] { [INFO] [stdout] :: wgpu_compute :: gpu :: __internal :: [INFO] [stdout] copy_input_to_output(& mut encoder, input, output); [INFO] [stdout] } :: wgpu_compute :: gpu :: __internal :: [INFO] [stdout] wait(& state.gpu, encoder) [INFO] [stdout] }) [INFO] [stdout] }) [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] [INFO] [stdout] running 0 tests [INFO] [stdout] [INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "2eaacc7dc294302f92eae7ae782d4e438f703c3967f5b41c51b74eba92b51bf0", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "2eaacc7dc294302f92eae7ae782d4e438f703c3967f5b41c51b74eba92b51bf0", kill_on_drop: false }` [INFO] [stdout] 2eaacc7dc294302f92eae7ae782d4e438f703c3967f5b41c51b74eba92b51bf0