vyre-driver-wgpu 0.7.1

wgpu backend for vyre IR - implements VyreBackend, owns GPU runtime, buffer pool, pipeline cache
Documentation
//! WGPU timed-dispatch telemetry contract.

use vyre_driver::{DispatchConfig, VyreBackend};
use vyre_foundation::ir::{BufferDecl, DataType, Expr, Node, Program};

#[test]
fn timed_dispatch_reports_structured_gpu_device_ns() {
    let backend = vyre_driver_wgpu::WgpuBackend::acquire()
        .expect("Fix: timed WGPU telemetry contract requires a live GPU backend.");
    let program = Program::wrapped(
        vec![BufferDecl::output("out", 0, DataType::U32).with_count(4)],
        [32, 1, 1],
        vec![
            Node::let_bind("idx", Expr::InvocationId { axis: 0 }),
            Node::if_then(
                Expr::lt(Expr::var("idx"), Expr::u32(4)),
                vec![Node::store(
                    "out",
                    Expr::var("idx"),
                    Expr::add(Expr::var("idx"), Expr::u32(7)),
                )],
            ),
        ],
    );

    let timed = backend
        .dispatch_borrowed_timed(&program, &[], &DispatchConfig::default())
        .expect("Fix: WGPU timed dispatch should execute through GPU timestamp telemetry.");

    assert_eq!(timed.outputs.len(), 1);
    assert_eq!(timed.outputs[0].len(), 16);
    assert!(
        timed.device_ns.unwrap_or_default() > 0,
        "Fix: WGPU timed dispatch must expose structured GPU device_ns, not trace-only timestamp logs."
    );
}