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