pub trait GpuBackend: Send + Sync {
// Required methods
fn kind(&self) -> GpuBackendKind;
fn adapter_info(&self) -> GpuAdapterInfo;
fn capabilities(&self) -> GpuCapabilities;
fn select_adapter(
&self,
opts: &GpuOptions,
) -> Result<GpuAdapterInfo, GpuError>;
fn as_any(&self) -> &dyn Any;
fn create_buffer(
&self,
req: &GpuRequest,
) -> Result<GpuBufferHandle, GpuError>;
fn create_image(
&self,
req: &GpuImageRequest,
) -> Result<GpuImageHandle, GpuError>;
// Provided methods
fn upload_texture(
&self,
_req: &GpuImageRequest,
_data: &[u8],
) -> Result<GpuImageHandle, GpuError> { ... }
fn read_texture(
&self,
_handle: &GpuImageHandle,
) -> Result<Vec<u8>, GpuError> { ... }
fn stats(&self) -> TransferStats { ... }
fn take_stats(&self) -> TransferStats { ... }
fn record_download(&self, _bytes: u64) { ... }
}Expand description
GPU backend trait; no backend-specific types exposed.
use daedalus_gpu::{GpuBackend, GpuBackendKind};
fn uses_backend(backend: &dyn GpuBackend) -> GpuBackendKind {
backend.kind()
}
let _ = uses_backend;