Skip to main content

molgfx_gpu/
lib.rs

1//! The backend-agnostic GPU hardware abstraction: device, queue, encoder and
2//! surface traits.
3//!
4//! This is an interface crate: traits, descriptor structs, capability flags
5//! and typed errors. No logic lives here. Backends implement the traits with
6//! their own concrete resource types via associated types, so the renderer
7//! above is generic over the device with no dynamic dispatch on the hot
8//! path, and callers above the backend layer never name a backend.
9
10#![forbid(unsafe_code)]
11
12mod capabilities;
13mod descriptors;
14mod device;
15mod encoder;
16mod error;
17mod queue;
18mod residency;
19mod surface;
20
21pub use capabilities::{Capabilities, CapabilityFlags, RayQueryLimits, TextureFormatCapabilities};
22pub use descriptors::{
23    AabbGeometry, AabbGeometrySize, AccelerationGeometryFlags, AccelerationIndexFormat,
24    AccelerationStructureBinding, AccelerationStructureFlags, AccelerationStructureLayoutEntry,
25    AccelerationStructureUpdateMode, BindGroupDesc, BindGroupEntry, BindGroupLayoutDesc,
26    BindGroupLayoutEntry, BindingType, BlasBuildDesc, BlasDesc, BlasGeometries, BlasGeometrySizes,
27    BlendMode, BufferDesc, BufferUsage, ColorAttachment, ColorTarget, CompareFunction,
28    ComputePassDesc, ComputePipelineDesc, DepthAttachment, DepthLoadOp, DepthState, FilterMode,
29    LoadOp, PrimitiveTopology, RayQueryBindGroupDesc, RayQueryBindGroupLayoutDesc, RenderPassDesc,
30    RenderPipelineDesc, SamplerDesc, ShaderModuleDesc, ShaderStages, TextureDesc, TextureDimension,
31    TextureFormat, TextureUsage, TextureViewDesc, TextureWrite, TimestampWrites, TlasDesc,
32    TlasInstance, TriangleGeometry, TriangleGeometrySize,
33};
34pub use device::{
35    Device, DeviceDesc, Opened, PowerPreference, RayQueryDevice, ResourceMemory, WindowSource,
36    WindowTarget,
37};
38pub use encoder::{CommandEncoder, ComputePassEncoder, RayQueryCommandEncoder, RenderPassEncoder};
39pub use error::GpuError;
40pub use queue::Queue;
41pub use residency::{
42    ArenaAllocation, ArenaError, ArenaMetrics, CommandScratch, CommandScratchMetrics, FenceValue,
43    PagedArena, Retirement, ScratchFull, UploadBackpressure, UploadMetrics, UploadReservation,
44    UploadRing, UploadRingConfig, UploadState, UploadTicket,
45};
46pub use surface::{Surface, SurfaceConfig, SurfaceError, SurfaceFrame};