pub mod adapter;
pub mod buffer_pool;
pub mod manager;
pub mod performance;
pub mod texture_atlas;
pub use adapter::{
AdapterInfo, AdapterSelectionError, AdapterSelectionStrategy, AdapterSelector, GpuAdapter,
GpuDeviceType, GpuType,
};
pub use buffer_pool::{
GpuBufferAllocation, GpuBufferPoolStats, GpuMemoryProfile, GpuStagingBufferPool,
GpuUploadBatcher, MappingStrategy, StagingBufferPoolConfig,
};
pub use manager::{
GpuManager, GpuManagerAction, GpuManagerBuilder, GpuManagerError, GpuOperationMode,
};
pub use performance::{
AdaptivePerformanceMonitor, AdaptivePerformanceThresholds, PerformanceMonitorStrategy,
PerformanceSample, PerformanceStats, PerformanceTrap, PerformanceTrapDetector,
};
pub use texture_atlas::TextureAtlas;
pub async fn init() -> Result<GpuManager, GpuManagerError> {
GpuManager::new().await
}
pub async fn init_with_strategy(
strategy: AdapterSelectionStrategy,
) -> Result<GpuManager, GpuManagerError> {
GpuManager::with_strategy(strategy).await
}
pub fn is_gpu_available() -> bool {
cfg!(feature = "gpu-wgpu")
}
pub fn subsystem_summary() -> String {
let mut summary = String::new();
summary.push_str("GPU Subsystem Summary\n");
summary.push_str("====================\n\n");
summary.push_str(&format!(
"GPU support: {}\n",
if is_gpu_available() { "enabled" } else { "disabled" }
));
summary.push_str("\nSupported features:\n");
summary.push_str(" - Automatic GPU adapter selection\n");
summary.push_str(" - Hardware-adaptive buffer pools\n");
summary.push_str(" - Performance monitoring\n");
summary.push_str(" - Dynamic quality adjustment\n");
summary.push_str(" - Performance trap detection\n");
summary
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_subsystem_summary() {
let summary = subsystem_summary();
assert!(summary.contains("GPU Subsystem"));
assert!(summary.contains("Automatic GPU"));
}
}