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, AccelerationIndexFormat,
25    AccelerationStructureBinding, AccelerationStructureFlags, AccelerationStructureLayoutEntry,
26    AccelerationStructureUpdateMode, BindGroupDesc, BindGroupEntry, BindGroupLayoutDesc,
27    BindGroupLayoutEntry, BindingType, BlasBuildDesc, BlasDesc, BlasGeometries, BlasGeometrySizes,
28    BlendMode, BufferDesc, BufferUsage, ColorAttachment, ColorTarget, CompareFunction,
29    ComputePassDesc, ComputePipelineDesc, DepthAttachment, DepthLoadOp, DepthState, FilterMode,
30    LoadOp, PrimitiveTopology, RayQueryBindGroupDesc, RayQueryBindGroupLayoutDesc, RenderPassDesc,
31    RenderPipelineDesc, SamplerDesc, ShaderModuleDesc, ShaderStages, TextureDesc, TextureDimension,
32    TextureFormat, TextureUsage, TextureViewDesc, TextureWrite, TimestampWrites, TlasDesc,
33    TlasInstance, 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};