mod buffer;
mod capabilities;
mod detect;
mod device;
mod error;
mod executor;
pub mod ops;
mod pipeline;
pub use buffer::{GpuBuffer, GpuBufferUsage};
pub use capabilities::{GpuBackend, GpuCapabilities, GpuLimits};
pub use detect::{
detect_gpu, detect_gpu_simulated, recommend_backend, should_use_gpu, DetectionMethod,
DetectionOptions, GpuDetectionResult, GpuFeatureQuery, GpuRecommendation, SimulatedGpuConfig,
};
pub use device::{GpuDevice, GpuDeviceConfig};
pub use error::{GpuError, GpuResult};
pub use executor::{ExecutorConfig, GpuExecutor, GpuExecutorSync};
pub use pipeline::{
BindGroup, BindGroupDescriptor, BindGroupEntry, BindGroupLayout, BindGroupLayoutDescriptor,
BindGroupLayoutEntry, BindingType, BufferBinding, ComputeDispatch, ComputePipeline,
ComputePipelineDescriptor, ShaderModule, ShaderModuleDescriptor, ShaderSource,
ShaderSourceType, WorkgroupDimensions,
};
pub const DEFAULT_WORKGROUP_SIZE: u32 = 256;
pub const MAX_BUFFER_SIZE: u64 = 256 * 1024 * 1024;
pub const BUFFER_ALIGNMENT: u64 = 256;
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_constants() {
assert_eq!(DEFAULT_WORKGROUP_SIZE, 256);
assert_eq!(MAX_BUFFER_SIZE, 256 * 1024 * 1024);
assert_eq!(BUFFER_ALIGNMENT, 256);
}
#[test]
fn test_module_exports() {
let _ = std::any::type_name::<GpuBuffer>();
let _ = std::any::type_name::<GpuBufferUsage>();
let _ = std::any::type_name::<GpuCapabilities>();
let _ = std::any::type_name::<GpuDevice>();
let _ = std::any::type_name::<GpuDeviceConfig>();
let _ = std::any::type_name::<GpuError>();
}
}