Skip to main content

Gpu

Struct Gpu 

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

wgpu device + surface bundle for one OS window.

Implementations§

Source§

impl Gpu

Source

pub fn new( target: impl Into<SurfaceTarget<'static>>, size: (u32, u32), config: GpuConfig, ) -> Result<Self, GpuInitError>

Create the surface, adapter, device and queue for target (typically an Arc<winit::window::Window>) and configure the swap chain at size physical pixels, clamped by clamp_surface_size.

A non-sRGB surface format is preferred so the renderer’s colour maths — which writes linear-space values — isn’t gamma-corrected twice by the surface.

Source

pub fn device_lost(&self) -> bool

Has this device been lost since it was created?

Set from wgpu’s device-lost callback (TDR / driver reset / GPU removal / RDP session change); our own Device::destroy is not counted. A lost device cannot be revived — every resource created from it is dead too — so the only recovery is to build a fresh Gpu for the same window, rebuild the renderer on the new device, and drop any GPU resources the app cached. Shells should poll this once per frame.

Source

pub fn device(&self) -> &Arc<Device> ⓘ

Source

pub fn queue(&self) -> &Arc<Queue> ⓘ

Source

pub fn surface(&self) -> &Surface<'static>

Source

pub fn surface_format(&self) -> TextureFormat

Source

pub fn config(&self) -> &SurfaceConfiguration

The live swap-chain configuration — width / height are the clamped physical pixel size the shell should hand to layout and WgpuGfxCtx.

Source

pub fn resize(&mut self, w: u32, h: u32)

Reconfigure the swap chain for a new physical size. A zero-sized (minimized) window is ignored — there is no presentable surface then, and wgpu rejects a zero extent.

Source

pub fn acquire_frame(&self, request_redraw: impl Fn()) -> Option<SurfaceTexture>

Acquire the next surface texture, recovering from a stale swapchain by reconfiguring and retrying once.

Returns None when the frame must be skipped. request_redraw is invoked for the skip cases that can still recover on their own, so a reactive event loop (ControlFlow::Wait) wakes up to try again instead of idling forever; pass a closure that calls Window::request_redraw.

Auto Trait Implementations§

§

impl !Freeze for Gpu

§

impl !RefUnwindSafe for Gpu

§

impl !UnwindSafe for Gpu

§

impl Send for Gpu

§

impl Sync for Gpu

§

impl Unpin for Gpu

§

impl UnsafeUnpin for Gpu

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 = !

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,