proof_engine/wgpu_backend/mod.rs
1//! WebGPU-style backend abstraction layer for Proof Engine.
2//!
3//! This module provides a GPU-API-agnostic abstraction that could be backed by
4//! OpenGL, Vulkan, Metal, WebGPU, or a pure-software fallback. No actual `wgpu`
5//! crate dependency is used — everything is expressed as engine-level abstractions.
6//!
7//! # Sub-modules
8//!
9//! - [`backend`] — Core GPU backend enum, capabilities, handle types, and context trait
10//! - [`renderer`] — Multi-backend renderer with render passes and draw calls
11//! - [`compute`] — Compute shader dispatch, storage buffers, and CPU fallback
12//! - [`shader_translate`] — Cross-compile shaders between GLSL, WGSL, SPIRV, HLSL, MSL
13//! - [`abstraction`] — Unified `GpuDevice` / `GpuQueue` traits
14//! - [`quality`] — Adaptive quality management and benchmarking
15//! - [`headless`] — Off-screen rendering, thumbnails, and server-side rendering
16
17pub mod backend;
18pub mod renderer;
19pub mod compute;
20pub mod shader_translate;
21pub mod abstraction;
22pub mod quality;
23pub mod headless;
24
25// Re-export the most-used items for convenience.
26pub use backend::{
27 GpuBackend, BackendCapabilities, BackendContext, BufferHandle, TextureHandle,
28 ShaderHandle, PipelineHandle, ComputePipelineHandle, BufferUsage, TextureFormat,
29 ShaderStage,
30};
31pub use renderer::MultiBackendRenderer;
32pub use compute::ComputeContext;
33pub use shader_translate::ShaderLanguage;
34pub use abstraction::{GpuDevice, GpuQueue};
35pub use quality::{QualityLevel, QualityManager};
36pub use headless::HeadlessRenderer;
37
38#[cfg(test)]
39mod tests {
40 use super::*;
41
42 #[test]
43 fn smoke_test_module_imports() {
44 let _backend = GpuBackend::Software;
45 let _level = QualityLevel::Medium;
46 let _lang = ShaderLanguage::GLSL;
47 }
48
49 #[test]
50 fn detect_backend_returns_something() {
51 let b = backend::detect_backend();
52 // In a test environment we expect Software fallback
53 assert!(matches!(
54 b,
55 GpuBackend::OpenGL
56 | GpuBackend::Vulkan
57 | GpuBackend::Metal
58 | GpuBackend::WebGPU
59 | GpuBackend::Software
60 ));
61 }
62}