Skip to main content

WgpuBackend

Struct WgpuBackend 

Source
pub struct WgpuBackend { /* private fields */ }
Expand description

Headless GPU backend implementing RenderBackend.

Implementations§

Source§

impl WgpuBackend

Source

pub fn headless_with_quality( width: u32, height: u32, quality: &RenderQuality, ) -> Result<Self, UiError>

Initialise a headless backend with an offscreen target of width × height physical pixels, using the provided crate::quality::RenderQuality to determine the MSAA sample count.

Screen pipelines (solid, gradient, textured, composite) are created with the effective sample count from quality. Shadow offscreen pipelines (blur and solid_mask) are always count=1 because ping-pong textures are always single-sample.

§Errors

Returns UiError::Unsupported when no GPU adapter is available (so the caller can skip on a machine without a usable GPU), or UiError::Backend when device creation fails.

Source

pub fn headless(width: u32, height: u32) -> Result<Self, UiError>

Initialise a headless backend with an offscreen target of width × height physical pixels, using crate::quality::RenderQuality::low (no MSAA, sample_count=1).

This is the backward-compatible entry point. It delegates to headless_with_quality with RenderQuality::low(), so existing callers receive the exact same code path as before MSAA support was added.

§Errors

Returns UiError::Unsupported when no GPU adapter is available (so the caller can skip on a machine without a usable GPU), or UiError::Backend when device creation fails.

Source

pub fn ctx(&self) -> &GpuContext

Returns a reference to the underlying GpuContext.

Source

pub fn set_clear_color(&mut self, color: Color)

Set the colour the offscreen target is cleared to before each frame.

Source

pub fn clear_color(&self) -> Color

Return the current clear colour.

Source

pub fn width(&self) -> u32

Target width in physical pixels.

Source

pub fn height(&self) -> u32

Target height in physical pixels.

Source

pub fn frame_stats(&self) -> FrameStats

Return the per-frame statistics populated by the most recent execute call.

Statistics are reset to zero at the start of each execute() and incrementally updated as GPU passes are issued.

Source

pub fn readback_rgba(&self) -> Result<Vec<u8>, UiError>

Read the offscreen colour target back into a tightly packed width * height * 4 RGBA byte vector (row padding stripped).

§Errors

Returns UiError::Render if the GPU poll or buffer mapping fails.

Source

pub fn read_pixel( &self, x: u32, y: u32, ) -> Result<Option<(u8, u8, u8, u8)>, UiError>

Read back a single pixel as (r, g, b, a), or None if out of bounds.

Source

pub fn resize(&mut self, new_width: u32, new_height: u32) -> Result<(), UiError>

Resize the headless offscreen target to new_width × new_height pixels.

Recreates only the offscreen colour texture (and the MSAA texture if active). The wgpu::Device, Queue, and compiled pipelines are preserved — only size-dependent GPU resources are rebuilt.

All texture views obtained from this backend before the resize become invalid and must not be used afterwards.

§Errors

Returns UiError::Unsupported if either dimension is zero.

Trait Implementations§

Source§

impl RenderBackend for WgpuBackend

Source§

fn surface_size(&self) -> Size

Return the target surface dimensions in physical pixels.
Source§

fn supports_gradients(&self) -> bool

Return true if this backend can render gradient fills.
Source§

fn supports_paths(&self) -> bool

Return true if this backend can render arbitrary vector paths.
Source§

fn supports_images(&self) -> bool

Return true if this backend can blit ImageData.
Source§

fn supports_blur(&self) -> bool

Return true if this backend can render blur effects (e.g. box shadows).
Source§

fn supports_blend_modes(&self) -> bool

Return true if this backend honours DrawCommand::SetBlendMode commands (non-Normal blend modes). Read more
Source§

fn supports_backdrop_blur(&self) -> bool

Return true if this backend can apply a backdrop blur via DrawCommand::BackdropBlur.
Source§

fn execute(&mut self, list: &DrawList) -> Result<(), UiError>

Replay an entire DrawList onto the backend’s surface. Read more
Source§

fn supports_text(&self) -> bool

Return true if this backend can render text via DrawCommand::DrawText.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> Downcast<T> for T

Source§

fn downcast(&self) -> &T

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> Upcast<T> for T

Source§

fn upcast(&self) -> Option<&T>

Source§

impl<T> WasmNotSend for T
where T: Send,

Source§

impl<T> WasmNotSendSync for T

Source§

impl<T> WasmNotSync for T
where T: Sync,