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;
20mod timestamp_capture;
21
22pub use capabilities::{Capabilities, CapabilityFlags, RayQueryLimits, TextureFormatCapabilities};
23pub use descriptors::{
24    AabbGeometry, AabbGeometrySize, AccelerationGeometryFlags, AccelerationStructureBinding,
25    AccelerationStructureFlags, AccelerationStructureLayoutEntry, AccelerationStructureUpdateMode,
26    BindGroupDesc, BindGroupEntry, BindGroupLayoutDesc, BindGroupLayoutEntry, BindingType,
27    BlasBuildDesc, BlasDesc, BlasGeometries, BlasGeometrySizes, BlendMode, BufferDesc, BufferUsage,
28    ColorAttachment, ColorTarget, CompareFunction, ComputePassDesc, ComputePipelineDesc,
29    DepthAttachment, DepthLoadOp, DepthState, FilterMode, IndexFormat, LoadOp, PrimitiveTopology,
30    RayQueryBindGroupDesc, RayQueryBindGroupLayoutDesc, RenderPassDesc, RenderPipelineDesc,
31    SamplerDesc, ShaderModuleDesc, ShaderStages, TextureDesc, TextureDimension, TextureFormat,
32    TextureUsage, TextureViewDesc, TextureWrite, TimestampWrites, TlasDesc, TlasInstance,
33    TriangleGeometry, TriangleGeometrySize,
34};
35pub use device::{
36    Device, DeviceDesc, Opened, PowerPreference, RayQueryDevice, ResourceMemory, WindowSource,
37    WindowTarget,
38};
39pub use encoder::{CommandEncoder, ComputePassEncoder, RayQueryCommandEncoder, RenderPassEncoder};
40pub use error::GpuError;
41pub use queue::{Queue, Readback};
42pub use residency::{
43    ArenaAllocation, ArenaError, ArenaMetrics, CommandScratch, CommandScratchMetrics, FenceValue,
44    PagedArena, Retirement, ScratchFull, UploadBackpressure, UploadMetrics, UploadReservation,
45    UploadRing, UploadRingConfig, UploadState, UploadTicket,
46};
47pub use surface::{Surface, SurfaceConfig, SurfaceError, SurfaceFrame};
48pub use timestamp_capture::{
49    MAX_TIMESTAMP_CAPTURE_PASSES, PassTimestampAbsence, PassTimestampCapture, PassTimestampRecord,
50    TimestampCaptureError, TimestampCaptureIncomplete, TimestampPassKind, TimestampQueryPair,
51};