pub struct WgpuBackend { /* private fields */ }Expand description
Headless GPU backend implementing RenderBackend.
Implementations§
Source§impl WgpuBackend
impl WgpuBackend
Sourcepub fn headless_with_quality(
width: u32,
height: u32,
quality: &RenderQuality,
) -> Result<Self, UiError>
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.
Sourcepub fn headless(width: u32, height: u32) -> Result<Self, UiError>
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.
Sourcepub fn ctx(&self) -> &GpuContext
pub fn ctx(&self) -> &GpuContext
Returns a reference to the underlying GpuContext.
Sourcepub fn set_clear_color(&mut self, color: Color)
pub fn set_clear_color(&mut self, color: Color)
Set the colour the offscreen target is cleared to before each frame.
Sourcepub fn clear_color(&self) -> Color
pub fn clear_color(&self) -> Color
Return the current clear colour.
Sourcepub fn frame_stats(&self) -> FrameStats
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.
Sourcepub fn readback_rgba(&self) -> Result<Vec<u8>, UiError>
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.
Sourcepub fn read_pixel(
&self,
x: u32,
y: u32,
) -> Result<Option<(u8, u8, u8, u8)>, UiError>
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.
Sourcepub fn resize(&mut self, new_width: u32, new_height: u32) -> Result<(), UiError>
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
impl RenderBackend for WgpuBackend
Source§fn surface_size(&self) -> Size
fn surface_size(&self) -> Size
Source§fn supports_gradients(&self) -> bool
fn supports_gradients(&self) -> bool
true if this backend can render gradient fills.Source§fn supports_paths(&self) -> bool
fn supports_paths(&self) -> bool
true if this backend can render arbitrary vector paths.Source§fn supports_images(&self) -> bool
fn supports_images(&self) -> bool
true if this backend can blit ImageData.Source§fn supports_blur(&self) -> bool
fn supports_blur(&self) -> bool
true if this backend can render blur effects (e.g. box shadows).Source§fn supports_blend_modes(&self) -> bool
fn supports_blend_modes(&self) -> bool
true if this backend honours DrawCommand::SetBlendMode
commands (non-Normal blend modes). Read moreSource§fn supports_backdrop_blur(&self) -> bool
fn supports_backdrop_blur(&self) -> bool
true if this backend can apply a backdrop blur via
DrawCommand::BackdropBlur.Source§fn supports_text(&self) -> bool
fn supports_text(&self) -> bool
true if this backend can render text via DrawCommand::DrawText.Auto Trait Implementations§
impl !RefUnwindSafe for WgpuBackend
impl !UnwindSafe for WgpuBackend
impl Freeze for WgpuBackend
impl Send for WgpuBackend
impl Sync for WgpuBackend
impl Unpin for WgpuBackend
impl UnsafeUnpin for WgpuBackend
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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