Skip to main content

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}