apple-metal 0.8.0

Safe Rust bindings for Apple's Metal framework — devices, resources, command encoding, advanced GPU objects, and IOSurface interop on macOS, backed by a Swift bridge
Documentation
use core::ffi::{c_char, c_void};

extern "C" {
    pub fn am_new_class_instance(class_name: *const c_char) -> *mut c_void;
    pub fn am_copy_metal_string_constant(symbol_name: *const c_char) -> *mut c_char;
    pub fn am_copy_all_devices(out_count: *mut usize) -> *mut *mut c_void;
    pub fn am_copy_all_devices_with_observer(
        out_count: *mut usize,
        out_observer: *mut *mut c_void,
        callback: Option<unsafe extern "C" fn(*mut c_void, *const c_char, *mut c_void)>,
        user_data: *mut c_void,
    ) -> *mut *mut c_void;
    pub fn am_remove_device_observer(observer_handle: *mut c_void);
    pub fn am_io_compression_context_default_chunk_size() -> usize;
    pub fn am_io_create_compression_context(
        path: *const c_char,
        method: usize,
        chunk_size: usize,
    ) -> *mut c_void;
    pub fn am_io_compression_context_append_data(handle: *mut c_void, data: *const u8, size: usize);
    pub fn am_io_flush_and_destroy_compression_context(handle: *mut c_void) -> usize;
}