#![warn(unused_crate_dependencies)]
#![warn(clippy::print_stdout, clippy::print_stderr)]
#![cfg_attr(target_pointer_width = "64", warn(clippy::trivially_copy_pass_by_ref))]
#![cfg_attr(docsrs, feature(doc_cfg))]
#![allow(missing_docs, reason = "We have many as-yet undocumented items.")]
#![expect(missing_debug_implementations, reason = "Deferred")]
#![allow(
unnameable_types,
clippy::cast_possible_truncation,
clippy::missing_assert_message,
clippy::print_stdout,
clippy::todo,
reason = "Deferred, only apply in some feature sets so not expect"
)]
mod types;
#[cfg(feature = "compile")]
pub mod compile;
#[cfg(feature = "cpu")]
pub mod cpu;
#[cfg(feature = "msl")]
pub use types::msl;
pub use types::{BindType, BindingInfo, WorkgroupBufferInfo};
use std::borrow::Cow;
#[derive(Clone, Debug)]
pub struct ComputeShader<'a> {
pub name: Cow<'a, str>,
pub workgroup_size: [u32; 3],
pub bindings: Cow<'a, [BindType]>,
pub workgroup_buffers: Cow<'a, [WorkgroupBufferInfo]>,
#[cfg(feature = "wgsl")]
pub wgsl: WgslSource<'a>,
#[cfg(feature = "msl")]
pub msl: MslSource<'a>,
}
#[cfg(feature = "wgsl")]
#[derive(Clone, Debug)]
pub struct WgslSource<'a> {
pub code: Cow<'a, str>,
pub binding_indices: Cow<'a, [u8]>,
}
#[cfg(feature = "msl")]
#[derive(Clone, Debug)]
pub struct MslSource<'a> {
pub code: Cow<'a, str>,
pub binding_indices: Cow<'a, [msl::BindingIndex]>,
}
include!(concat!(env!("OUT_DIR"), "/shaders.rs"));
pub use generated::SHADERS;