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