use std::alloc::{GlobalAlloc, Layout, System};
use std::cell::Cell;
use std::ffi::c_void;
use std::ptr;
use unimem::ffi::*;
use unimem::{Block, NativeImageFormat};

thread_local! { static ALLOCS: Cell<Option<usize>> = const { Cell::new(None) }; }
struct Observer;
fn record() {
    let _ = ALLOCS.try_with(|c| {
        if let Some(n) = c.get() {
            c.set(Some(n + 1));
        }
    });
}
// SAFETY: All pointers/layouts pass through to System unchanged. Observation
// uses only a thread-local Cell and never allocates.
unsafe impl GlobalAlloc for Observer {
    unsafe fn alloc(&self, layout: Layout) -> *mut u8 {
        record();
        // SAFETY: The caller supplies a valid layout, forwarded to System.
        unsafe { System.alloc(layout) }
    }
    unsafe fn dealloc(&self, p: *mut u8, layout: Layout) {
        // SAFETY: The pointer and matching layout came from System.
        unsafe { System.dealloc(p, layout) }
    }
    unsafe fn alloc_zeroed(&self, layout: Layout) -> *mut u8 {
        record();
        // SAFETY: The caller supplies a valid layout, forwarded to System.
        unsafe { System.alloc_zeroed(layout) }
    }
    unsafe fn realloc(&self, p: *mut u8, layout: Layout, size: usize) -> *mut u8 {
        record();
        // SAFETY: System owns p and the caller supplies its layout/valid new size.
        unsafe { System.realloc(p, layout, size) }
    }
}
#[global_allocator]
static ALLOCATOR: Observer = Observer;
pub fn observe<T>(f: impl FnOnce() -> T) -> (T, usize) {
    struct Reset;
    impl Drop for Reset {
        fn drop(&mut self) {
            ALLOCS.with(|c| c.set(None));
        }
    }
    ALLOCS.with(|c| c.set(Some(0)));
    let _reset = Reset;
    let result = f();
    (result, ALLOCS.with(|c| c.get().unwrap()))
}

type CVPixelBufferRef = *mut c_void;
#[link(name = "CoreVideo", kind = "framework")]
extern "C" {
    fn CVPixelBufferCreate(
        allocator: CFTypeRef,
        width: usize,
        height: usize,
        format: u32,
        attributes: CFDictionaryRef,
        output: *mut CVPixelBufferRef,
    ) -> i32;
    fn CVPixelBufferCreateWithIOSurface(
        allocator: CFTypeRef,
        surface: IOSurfaceRef,
        attributes: CFDictionaryRef,
        output: *mut CVPixelBufferRef,
    ) -> i32;
    fn CVPixelBufferGetIOSurface(buffer: CVPixelBufferRef) -> IOSurfaceRef;
    fn CVPixelBufferGetPixelFormatType(buffer: CVPixelBufferRef) -> u32;
    fn CVPixelBufferGetWidth(buffer: CVPixelBufferRef) -> usize;
    fn CVPixelBufferGetHeight(buffer: CVPixelBufferRef) -> usize;
    fn CVPixelBufferGetPlaneCount(buffer: CVPixelBufferRef) -> usize;
    fn CVPixelBufferGetWidthOfPlane(buffer: CVPixelBufferRef, plane: usize) -> usize;
    fn CVPixelBufferGetHeightOfPlane(buffer: CVPixelBufferRef, plane: usize) -> usize;
    fn CVPixelBufferGetBytesPerRowOfPlane(buffer: CVPixelBufferRef, plane: usize) -> usize;
    fn CVPixelBufferGetBaseAddressOfPlane(buffer: CVPixelBufferRef, plane: usize) -> *mut c_void;
    fn CVPixelBufferLockBaseAddress(buffer: CVPixelBufferRef, flags: u64) -> i32;
    fn CVPixelBufferUnlockBaseAddress(buffer: CVPixelBufferRef, flags: u64) -> i32;
    static kCVPixelBufferIOSurfacePropertiesKey: CFStringRef;
}

pub struct PixelBuffer(CVPixelBufferRef);
impl PixelBuffer {
    pub fn create(format: NativeImageFormat, width: usize, height: usize) -> Self {
        // SAFETY: SDK callbacks retain the live immutable property entries.
        // CoreVideo returns one owned buffer; CF properties are released below.
        unsafe {
            let empty = CFDictionaryCreate(
                ptr::null(),
                ptr::null(),
                ptr::null(),
                0,
                ptr::addr_of!(kCFTypeDictionaryKeyCallBacks),
                ptr::addr_of!(kCFTypeDictionaryValueCallBacks),
            );
            assert!(!empty.is_null());
            let attrs = CFDictionaryCreate(
                ptr::null(),
                [kCVPixelBufferIOSurfacePropertiesKey].as_ptr(),
                [empty].as_ptr(),
                1,
                ptr::addr_of!(kCFTypeDictionaryKeyCallBacks),
                ptr::addr_of!(kCFTypeDictionaryValueCallBacks),
            );
            assert!(!attrs.is_null());
            let mut raw = ptr::null_mut();
            let result =
                CVPixelBufferCreate(ptr::null(), width, height, format.fourcc(), attrs, &mut raw);
            CFRelease(attrs);
            CFRelease(empty);
            assert_eq!(result, 0, "CoreVideo create {format:?} {width}x{height}");
            assert!(!raw.is_null());
            Self(raw)
        }
    }
    pub fn wrap(block: &Block) -> Self {
        let mut raw = ptr::null_mut();
        // SAFETY: Block owns the live IOSurface. CoreVideo retains its own
        // reference; no CPU access or device work occurs during wrapping.
        let result = unsafe {
            CVPixelBufferCreateWithIOSurface(ptr::null(), block.handle(), ptr::null(), &mut raw)
        };
        assert_eq!(result, 0, "CoreVideo wrap {:?}", block.image_layout());
        assert!(!raw.is_null());
        Self(raw)
    }
    pub fn surface(&self) -> IOSurfaceRef {
        // SAFETY: self retains the buffer. The borrowed surface stays live.
        let raw = unsafe { CVPixelBufferGetIOSurface(self.0) };
        assert!(!raw.is_null());
        raw
    }
    pub fn surface_id(&self) -> u32 {
        // SAFETY: self retains the live IOSurface through its pixel buffer.
        unsafe { IOSurfaceGetID(self.surface()) }
    }
    pub fn check(&self, block: &Block) {
        let layout = block.image_layout().unwrap();
        assert_eq!(self.surface_id(), block.id());
        // SAFETY: Both owners retain the same native surface. This test does no
        // concurrent access; only metadata/pointers are inspected while locked.
        unsafe {
            assert_eq!(CVPixelBufferLockBaseAddress(self.0, 1), 0);
            assert_eq!(
                CVPixelBufferGetPixelFormatType(self.0),
                layout.format().fourcc()
            );
            assert_eq!(CVPixelBufferGetWidth(self.0), layout.width());
            assert_eq!(CVPixelBufferGetHeight(self.0), layout.height());
            assert_eq!(CVPixelBufferGetPlaneCount(self.0), 2);
            for (i, plane) in layout.planes().iter().enumerate() {
                assert_eq!(CVPixelBufferGetWidthOfPlane(self.0, i), plane.width());
                assert_eq!(CVPixelBufferGetHeightOfPlane(self.0, i), plane.height());
                assert_eq!(
                    CVPixelBufferGetBytesPerRowOfPlane(self.0, i),
                    plane.stride()
                );
                assert_eq!(
                    CVPixelBufferGetBaseAddressOfPlane(self.0, i).cast::<u8>(),
                    block.address().add(plane.offset())
                );
            }
            assert_eq!(CVPixelBufferUnlockBaseAddress(self.0, 1), 0);
        }
    }
    pub fn check_samples(&self, format: NativeImageFormat) {
        // SAFETY: fill initialized the whole backing earlier; this sole CPU
        // reader retains the pixel buffer and performs no conflicting access.
        unsafe {
            assert_eq!(CVPixelBufferLockBaseAddress(self.0, 1), 0);
            for i in 0..2 {
                let base = CVPixelBufferGetBaseAddressOfPlane(self.0, i).cast::<u8>();
                let stride = CVPixelBufferGetBytesPerRowOfPlane(self.0, i);
                let width = CVPixelBufferGetWidthOfPlane(self.0, i);
                let height = CVPixelBufferGetHeightOfPlane(self.0, i);
                let bytes = if format.fourcc() >> 24 == u32::from(b'x') {
                    2
                } else {
                    1
                };
                for y in 0..height {
                    let row =
                        std::slice::from_raw_parts(base.add(y * stride), width * bytes * (i + 1));
                    assert_pattern(row, bytes, i);
                }
            }
            assert_eq!(CVPixelBufferUnlockBaseAddress(self.0, 1), 0);
        }
    }
}
impl Drop for PixelBuffer {
    fn drop(&mut self) {
        // SAFETY: self owns one Create-rule reference.
        unsafe { CFRelease(self.0) }
    }
}

pub fn fill(block: &mut Block) {
    let layout = block.image_layout().unwrap();
    // SAFETY: The test has exclusive CPU access, no devices/imported views.
    // Raw initialization precedes any full-extent Rust slice, including padding.
    unsafe { block.address().write_bytes(0, block.size()) };
    // SAFETY: All bytes were initialized, and no conflicting view/work exists.
    let all = unsafe { block.as_bytes_mut() };
    for (i, plane) in layout.planes().iter().enumerate() {
        let lane_bytes = plane.element_bytes() / (i + 1);
        for y in 0..plane.height() {
            let row = plane.offset() + y * plane.stride();
            for x in 0..plane.width() * (i + 1) {
                if lane_bytes == 1 {
                    all[row + x] = 41 + i as u8;
                } else {
                    all[row + x * 2..row + x * 2 + 2]
                        .copy_from_slice(&((321 + i as u16) << 6).to_le_bytes());
                }
            }
        }
    }
}
fn assert_pattern(row: &[u8], lane_bytes: usize, index: usize) {
    if lane_bytes == 1 {
        assert!(row.iter().all(|b| *b == 41 + index as u8));
    } else {
        assert!(row
            .chunks_exact(2)
            .all(|b| u16::from_le_bytes([b[0], b[1]]) == (321 + index as u16) << 6));
    }
}
pub fn check_samples(block: &Block) {
    let layout = block.image_layout().unwrap();
    // SAFETY: fill initialized the complete mapping; every other owner/view has
    // been dropped or is idle, with no native device work in this test.
    let all = unsafe { block.as_bytes() };
    for (i, plane) in layout.planes().iter().enumerate() {
        for y in 0..plane.height() {
            let row = plane.offset() + y * plane.stride();
            let end = row + plane.width() * plane.element_bytes();
            assert_pattern(&all[row..end], plane.element_bytes() / (i + 1), i);
            assert!(all[end..row + plane.stride()].iter().all(|b| *b == 0));
        }
    }
    // Check the complete retained allocation, including gaps and final rounding.
    for (offset, byte) in all.iter().enumerate() {
        let sample = layout.planes().iter().any(|plane| {
            offset.checked_sub(plane.offset()).is_some_and(|position| {
                position < plane.row_extent()
                    && position % plane.stride() < plane.width() * plane.element_bytes()
            })
        });
        if !sample {
            assert_eq!(*byte, 0, "padding byte {offset}");
        }
    }
}

Homonyms

warriors/trisha/rs/recursive/mod.rs
neural/trident/tests/support/mod.rs
soft3/crate/src/genesis/mod.rs
neural/trident/src/ir/mod.rs
neural/trident/src/cost/mod.rs
soft3/mir/src/frame/mod.rs
cyb/optica/src/output/mod.rs
neural/trident/src/syntax/mod.rs
neural/trident/src/package/mod.rs
cyb/shell/src/worlds/mod.rs
soft3/glia/run/backend/mod.rs
soft3/nox/rs/patterns/mod.rs
soft3/nox/rs/jets/mod.rs
cyb/optica/src/graph/mod.rs
warriors/trisha/rs/lower/mod.rs
soft3/crate/src/wallet/mod.rs
neural/trident/src/deploy/mod.rs
neural/trident/src/neural/mod.rs
cyb/optica/src/parser/mod.rs
cyb/prysm/system/rs/mod.rs
soft3/glia/run/tokenizer/mod.rs
cyb/optica/src/render/mod.rs
soft3/tru/rs/pass/mod.rs
cyb/optica/src/query/mod.rs
warriors/trisha/rs/cost/mod.rs
soft3/cybergraph/tests/common/mod.rs
neural/trident/src/config/mod.rs
neural/trident/src/ast/mod.rs
neural/trident/src/field/mod.rs
neural/trident/src/import/mod.rs
soft3/tru/rs/model/mod.rs
soft3/mudra/src/proof/mod.rs
cyb/optica/src/scanner/mod.rs
soft3/tru/rs/graph/mod.rs
soft3/glia/run/bench/mod.rs
cyb/prysm/atoms/rs/mod.rs
neural/trident/src/lsp/mod.rs
neural/trident/src/typecheck/mod.rs
soft3/glia/run/core/mod.rs
neural/trident/src/verify/mod.rs
warriors/trisha/rs/neural/mod.rs
soft3/glia/import/loader/mod.rs
cyb/shell/src/shell/mod.rs
soft3/tru/rs/focusing/mod.rs
neural/trident/src/runtime/mod.rs
neural/trident/src/api/mod.rs
cyb/optica/src/server/mod.rs
soft3/mir/src/graph/mod.rs
neural/trident/src/diagnostic/mod.rs
neural/trident/src/cli/mod.rs
soft3/glia/run/arch/mod.rs
cyb/prysm/molecules/rs/mod.rs
soft3/nox/rs/data/mod.rs
soft3/mir/src/bevy/mod.rs
cyb/shell/src/agent/mod.rs
soft3/mir/src/epoch/mod.rs
soft3/glia/run/ir/mod.rs
soft3/crate/src/chain/mod.rs
neural/rs/macros/src/module/mod.rs
neural/trident/src/ir/tir/mod.rs
neural/trident/src/verify/report/mod.rs
cyb/honeycrisp/acpu/src/vector/mod.rs
warriors/trisha/rs/neural/data/mod.rs
neural/trident/src/package/registry/mod.rs
soft3/glia/run/backend/wgpu/mod.rs
neural/trident/src/neural/training/mod.rs
soft3/zheng/rs/src/sumcheck/mod.rs
neural/trident/src/verify/synthesize/mod.rs
cyb/shell/src/worlds/vault/mod.rs
neural/rs/macros/src/registers/mod.rs
neural/trident/src/neural/model/mod.rs
neural/trident/src/config/resolve/mod.rs
cyb/honeycrisp/acpu/src/sparse/mod.rs
soft3/bbg/rs/src/transition/mod.rs
soft3/radio/iroh-blobs/examples/common/mod.rs
soft3/crate/src/chain/pool/mod.rs
cyb/wysm/crates/wasi/tests/mod.rs
neural/rs/darwin-sys/src/ffi/mod.rs
cyb/honeycrisp/rane/src/mil/mod.rs
neural/trident/src/verify/smt/mod.rs
soft3/glia/run/backend/honeycrisp/mod.rs
soft3/glia/run/arch/decoder/mod.rs
neural/trident/src/verify/solve/mod.rs
cyb/honeycrisp/acpu/src/pulse/mod.rs
soft3/zheng/rs/src/folding/mod.rs
soft3/glia/run/cli/cmd/mod.rs
neural/trident/src/syntax/format/mod.rs
warriors/trisha/rs/neural/inference/mod.rs
cyb/shell/src/worlds/models/mod.rs
neural/trident/src/package/store/mod.rs
cyb/honeycrisp/acpu/src/sync/mod.rs
neural/trident/src/syntax/parser/mod.rs
neural/rs/core/src/fixed_point/mod.rs
warriors/trisha/rs/neural/training/mod.rs
cyb/honeycrisp/aruminium/src/ffi/mod.rs
cyb/shell/src/worlds/sigma/mod.rs
neural/trident/src/verify/sym/mod.rs
soft3/strata/nebu/rs/extension/mod.rs
neural/rs/macros/src/addressed/mod.rs
neural/trident/src/package/hash/mod.rs
soft3/radio/cyber-bao/src/io/mod.rs
neural/trident/src/neural/data/mod.rs
soft3/glia/run/backend/cpu/mod.rs
soft3/radio/iroh-blobs/src/store/mod.rs
soft3/nox/rs/jets/backends/mod.rs
neural/trident/src/syntax/lexer/mod.rs
neural/rs/core/src/bounded/mod.rs
cyb/honeycrisp/aruminium/src/render/mod.rs
neural/trident/src/lsp/semantic/mod.rs
soft3/conformance/rs/src/surfaces/mod.rs
neural/trident/src/neural/inference/mod.rs
neural/eidos/rs/src/tactic_ext/mod.rs
soft3/crate/src/chain/economy/mod.rs
neural/eidos/rs/src/surface/mod.rs
soft3/zheng/rs/src/ccs/mod.rs
neural/trident/src/lsp/util/mod.rs
cyb/wysm/crates/wast/tests/mod.rs
soft3/zheng/rs/src/phi/mod.rs
warriors/trisha/rs/neural/model/mod.rs
neural/trident/src/config/scaffold/mod.rs
neural/trident/src/typecheck/tests/mod.rs
neural/trident/src/ir/tree/mod.rs
soft3/zheng/rs/src/spartan/mod.rs
neural/eidos/rs/src/stdlib/mod.rs
neural/trident/src/api/tests/mod.rs
warriors/trisha/rs/cost/model/mod.rs
cyb/shell/src/worlds/com/mod.rs
cyb/honeycrisp/acpu/src/gemm/mod.rs
cyb/shell/src/worlds/memory/mod.rs
neural/trident/src/verify/equiv/mod.rs
neural/eidos/rs/src/elab/mod.rs
cyb/honeycrisp/acpu/src/numeric/mod.rs
cyb/honeycrisp/acpu/src/probe/mod.rs
soft3/tru/rs/focusing/epoch/mod.rs
cyb/wysm/crates/wasmi/tests/mod.rs
cyb/shell/src/worlds/oracle/mod.rs
neural/rs/rsc/src/lints/mod.rs
cyb/shell/src/worlds/robot/mod.rs
soft3/crate/src/chain/net/mod.rs
soft3/neuron/node/tests/support/mod.rs
cyb/honeycrisp/acpu/src/matrix/mod.rs
neural/trident/src/syntax/grammar/mod.rs
warriors/trisha/rs/cost/stack_verifier/mod.rs
cyb/honeycrisp/acpu/src/field/mod.rs
soft3/crate/src/chain/mine/mod.rs
cyb/shell/src/worlds/body/mod.rs
neural/trident/src/package/manifest/mod.rs
soft3/bbg/rs/src/storage/mod.rs
cyb/honeycrisp/acpu/src/crypto/mod.rs
soft3/crate/src/chain/tests/mod.rs
cyb/evy/forks/bevy_anti_alias/src/contrast_adaptive_sharpening/mod.rs
warriors/trisha/rs/neural/data/tir_graph/mod.rs
cyb/evy/forks/bevy_anti_alias/src/smaa/mod.rs
cyb/wysm/crates/wasmi/src/memory/mod.rs
soft3/strata/jali/wgsl/src/shaders/mod.rs
cyb/wysm/crates/wasmi/src/table/mod.rs
cyb/evy/forks/bevy_pbr/src/decal/mod.rs
cyb/evy/forks/bevy_pbr/src/ssao/mod.rs
cyb/evy/forks/bevy_ecs/src/system/mod.rs
cyb/evy/forks/bevy_render/src/experimental/mod.rs
cyb/evy/forks/bevy_core_pipeline/src/tonemapping/mod.rs
cyb/evy/forks/bevy_ecs/src/entity/mod.rs
cyb/evy/forks/bevy_pbr/src/light_probe/mod.rs
cyb/evy/forks/bevy_post_process/src/motion_blur/mod.rs
cyb/wysm/crates/wasmi/src/engine/mod.rs
cyb/evy/forks/bevy_ecs/src/bundle/mod.rs
cyb/evy/forks/bevy_post_process/src/bloom/mod.rs
cyb/wysm/crates/wasmi/benches/bench/mod.rs
cyb/evy/forks/bevy_pbr/src/ssr/mod.rs
soft3/radio/quinn/quinn/src/runtime/mod.rs
cyb/evy/forks/bevy_ecs/src/error/mod.rs
cyb/evy/forks/bevy_anti_alias/src/dlss/mod.rs
cyb/evy/forks/bevy_render/src/renderer/mod.rs
cyb/wysm/crates/wasmi/src/module/mod.rs
cyb/evy/forks/bevy_sprite_render/src/render/mod.rs
cyb/evy/forks/bevy_ecs/src/reflect/mod.rs
cyb/evy/forks/bevy_core_pipeline/src/experimental/mod.rs
soft3/bbg/rs/src/storage/database/mod.rs
soft3/strata/trop/wgsl/src/shaders/mod.rs
cyb/evy/forks/bevy_render/src/texture/mod.rs
cyb/evy/forks/bevy_core_pipeline/src/fullscreen_vertex_shader/mod.rs
cyb/evy/forks/naga/src/common/mod.rs
cyb/evy/forks/bevy_render/src/batching/mod.rs
cyb/wysm/crates/cli/src/commands/mod.rs
cyb/evy/forks/bevy_anti_alias/src/fxaa/mod.rs
cyb/evy/forks/naga/src/compact/mod.rs
warriors/erga/rs/mine-bench/tests/support/mod.rs
soft3/radio/quinn/quinn-udp/src/cmsg/mod.rs
soft3/glia/run/backend/cpu/quant/mod.rs
cyb/evy/forks/bevy_core_pipeline/src/skybox/mod.rs
cyb/evy/forks/bevy_pbr/src/render/mod.rs
cyb/evy/forks/naga/src/proc/mod.rs
cyb/evy/forks/bevy_sprite_render/src/texture_slice/mod.rs
cyb/evy/crates/evy_prysm_core/src/layout/mod.rs
cyb/evy/forks/bevy_pbr/src/prepass/mod.rs
cyb/evy/forks/bevy_pbr/src/meshlet/mod.rs
cyb/evy/forks/naga/src/back/mod.rs
soft3/glia/run/arch/decoder/families/mod.rs
cyb/evy/forks/bevy_render/src/render_resource/mod.rs
cyb/evy/forks/bevy_core_pipeline/src/deferred/mod.rs
cyb/evy/forks/bevy_render/src/diagnostic/mod.rs
cyb/evy/forks/bevy_core_pipeline/src/upscaling/mod.rs
cyb/evy/forks/bevy_core_pipeline/src/core_2d/mod.rs
soft3/radio/quinn/quinn-proto/src/connection/mod.rs
soft3/radio/quinn/quinn/examples/common/mod.rs
soft3/strata/kuro/wgsl/src/shaders/mod.rs
soft3/glia/run/backend/honeycrisp/kernels/mod.rs
cyb/evy/forks/bevy_post_process/src/effect_stack/mod.rs
cyb/evy/forks/bevy_ecs/src/storage/mod.rs
cyb/evy/forks/bevy_ecs/src/component/mod.rs
neural/trident/src/ir/tree/lower/mod.rs
cyb/evy/forks/bevy_transform/src/components/mod.rs
cyb/evy/forks/bevy_ecs/src/change_detection/mod.rs
cyb/wysm/crates/wasmi/src/instance/mod.rs
cyb/wysm/crates/wasmi/tests/integration/mod.rs
cyb/wysm/crates/collections/src/arena/mod.rs
cyb/evy/forks/bevy_pbr/src/deferred/mod.rs
cyb/evy/forks/bevy_core_pipeline/src/oit/mod.rs
soft3/radio/quinn/quinn-proto/src/config/mod.rs
cyb/wysm/crates/core/src/memory/mod.rs
cyb/evy/forks/bevy_sprite_render/src/tilemap_chunk/mod.rs
cyb/wysm/crates/wasi/src/sync/mod.rs
soft3/strata/genies/wgsl/src/shaders/mod.rs
cyb/evy/forks/bevy_ecs/src/query/mod.rs
cyb/evy/forks/naga/src/front/mod.rs
cyb/evy/forks/bevy_ecs/src/world/mod.rs
cyb/wysm/crates/ir/src/decode/mod.rs
cyb/evy/forks/bevy_anti_alias/src/taa/mod.rs
neural/trident/src/ir/tir/builder/mod.rs
cyb/evy/forks/bevy_sprite_render/src/text2d/mod.rs
cyb/wysm/crates/wasmi/src/store/mod.rs
cyb/evy/forks/naga/src/keywords/mod.rs
cyb/evy/forks/bevy_core_pipeline/src/prepass/mod.rs
cyb/evy/forks/bevy_ecs/src/schedule/mod.rs
cyb/evy/forks/bevy_tasks/src/iter/mod.rs
soft3/glia/run/backend/wgpu/kernels/mod.rs
cyb/wysm/crates/core/src/table/mod.rs
cyb/evy/forks/bevy_render/src/view/mod.rs
cyb/evy/forks/bevy_mesh/src/primitives/mod.rs
cyb/evy/forks/bevy_ecs/src/relationship/mod.rs
soft3/radio/quinn/quinn-proto/src/range_set/mod.rs
cyb/evy/forks/bevy_render/src/render_graph/mod.rs
cyb/evy/forks/bevy_ecs/src/event/mod.rs
cyb/wysm/crates/c_api/src/types/mod.rs
cyb/evy/forks/naga/src/arena/mod.rs
soft3/radio/quinn/quinn-proto/src/tests/mod.rs
cyb/evy/forks/naga/src/valid/mod.rs
cyb/evy/forks/bevy_post_process/src/dof/mod.rs
cyb/wysm/crates/fuzz/src/oracle/mod.rs
cyb/evy/forks/bevy_core_pipeline/src/blit/mod.rs
neural/trident/src/neural/data/tir_graph/mod.rs
cyb/evy/forks/bevy_sprite_render/src/mesh2d/mod.rs
cyb/wysm/crates/wasmi/src/func/mod.rs
cyb/evy/forks/bevy_pbr/src/volumetric_fog/mod.rs
cyb/evy/forks/bevy_post_process/src/auto_exposure/mod.rs
cyb/evy/forks/bevy_core_pipeline/src/core_3d/mod.rs
neural/trident/src/ir/tir/optimize/mod.rs
cyb/evy/forks/bevy_ecs/src/message/mod.rs
cyb/evy/forks/bevy_render/src/render_phase/mod.rs
cyb/evy/forks/bevy_ecs/src/observer/mod.rs
cyb/evy/forks/bevy_sprite/src/texture_slice/mod.rs
cyb/evy/forks/bevy_gizmos/src/primitives/mod.rs
cyb/evy/forks/bevy_pbr/src/lightmap/mod.rs
cyb/evy/forks/bevy_pbr/src/atmosphere/mod.rs
cyb/evy/forks/bevy_render/src/mesh/mod.rs
neural/trident/src/ir/tir/stack/mod.rs
neural/trident/src/syntax/parser/tests/mod.rs
cyb/evy/forks/naga/src/back/glsl/mod.rs
cyb/evy/forks/bevy_ecs/src/world/entity_access/mod.rs
cyb/evy/forks/bevy_core_pipeline/src/oit/resolve/mod.rs
cyb/evy/forks/naga/src/front/spv/mod.rs
cyb/evy/forks/bevy_ecs/src/schedule/graph/mod.rs
cyb/wysm/crates/wasmi/src/engine/translator/mod.rs
cyb/evy/forks/naga/src/back/msl/mod.rs
cyb/wysm/crates/wasmi/src/module/instantiate/mod.rs
cyb/evy/forks/bevy_render/src/experimental/occlusion_culling/mod.rs
cyb/evy/forks/bevy_render/src/view/visibility/mod.rs
cyb/evy/forks/bevy_ecs/src/storage/table/mod.rs
cyb/evy/forks/naga/src/front/wgsl/mod.rs
soft3/radio/quinn/quinn-proto/src/connection/streams/mod.rs
cyb/evy/forks/naga/src/back/wgsl/mod.rs
cyb/wysm/crates/wasmi/src/engine/executor/mod.rs
cyb/evy/forks/naga/src/front/glsl/mod.rs
soft3/radio/quinn/quinn-proto/src/congestion/bbr/mod.rs
cyb/evy/forks/bevy_ecs/src/schedule/executor/mod.rs
cyb/wysm/crates/wasmi/src/engine/limits/mod.rs
cyb/wysm/crates/wasmi/src/module/parser/mod.rs
cyb/evy/forks/naga/src/back/spv/mod.rs
cyb/evy/forks/bevy_mesh/src/primitives/dim3/mod.rs
cyb/evy/forks/naga/src/back/dot/mod.rs
cyb/wysm/crates/wasi/src/sync/snapshots/mod.rs
cyb/evy/forks/bevy_core_pipeline/src/experimental/mip_generation/mod.rs
cyb/evy/forks/naga/src/back/hlsl/mod.rs
struct Baz { m: mat3x2, } struct Baz { float2 m_0; float2 m_1; float2 m_2; }; float3x2 GetMatmOnBaz(Baz obj) { return float3x2(obj.m_0, obj.m_1, obj.m_2); }
cyb/evy/forks/bevy_ecs/src/system/commands/mod.rs
cyb/evy/forks/bevy_render/src/view/window/mod.rs
cyb/evy/forks/naga/src/front/wgsl/lower/mod.rs
cyb/wysm/crates/wasmi/src/engine/executor/handler/mod.rs
cyb/evy/forks/naga/src/front/wgsl/parse/mod.rs
cyb/evy/forks/naga/src/back/wgsl/polyfill/mod.rs
cyb/wysm/crates/wasmi/src/engine/translator/func/mod.rs
cyb/wysm/crates/wasmi/src/engine/executor/handler/dispatch/mod.rs
cyb/wysm/crates/wasmi/src/engine/translator/func/stack/mod.rs
cyb/wysm/crates/wasmi/src/engine/translator/func/simd/mod.rs

Graph