Skip to main content

DisplayBackend

Trait DisplayBackend 

Source
pub trait DisplayBackend<const W: usize, const H: usize, FB>{
    type Transfer: DmaTransfer<Buffer = FrameBuf<Rgb565, FB>>;

    // Required method
    fn start_dma_transfer(
        &mut self,
        framebuffer: FrameBuf<Rgb565, FB>,
    ) -> Result<Self::Transfer, TransferError<FB>>;

    // Provided method
    fn start_dma_transfer_region(
        &mut self,
        framebuffer: FrameBuf<Rgb565, FB>,
        _region: DisplayRegion,
    ) -> Result<Self::Transfer, TransferError<FB>> { ... }
}
Expand description

Platform-agnostic display backend trait.

Implementations handle the hardware-specific details of transferring a framebuffer to the display. The API is intentionally ownership-based: start_dma_transfer takes the framebuffer by value and returns a DmaTransfer token. The buffer is held inside the token and cannot be accessed again until DmaTransfer::wait returns it. This prevents write-after-submit data races at compile time.

Required Associated Types§

Source

type Transfer: DmaTransfer<Buffer = FrameBuf<Rgb565, FB>>

The transfer token type returned by this backend.

Required Methods§

Source

fn start_dma_transfer( &mut self, framebuffer: FrameBuf<Rgb565, FB>, ) -> Result<Self::Transfer, TransferError<FB>>

Start a non-blocking DMA transfer of the full framebuffer.

Provided Methods§

Source

fn start_dma_transfer_region( &mut self, framebuffer: FrameBuf<Rgb565, FB>, _region: DisplayRegion, ) -> Result<Self::Transfer, TransferError<FB>>

Start a non-blocking DMA transfer of a framebuffer sub-region.

Backends that do not support partial transfers may ignore region and fall back to a full-frame transfer.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§

Source§

impl<const W: usize, const H: usize, FB> DisplayBackend<W, H, FB> for SimulatorBackend