Skip to main content

WgpuContext

Struct WgpuContext 

Source
pub struct WgpuContext {
Show 13 fields pub device: Device, pub queue: Queue, pub surface: Option<Surface<'static>>, pub config: Option<SurfaceConfiguration<Vec<TextureFormat>>>, pub headless_texture: Option<Texture>, pub target_width: u32, pub target_height: u32, pub depth_format: TextureFormat, pub surface_view_format: TextureFormat, pub msaa_samples: u32, pub anisotropy_clamp: u16, pub render_path: RenderPath, pub pipeline_settings_version: u64,
}
Expand description

Core wgpu context holding GPU handles and render target state.

This struct owns the fundamental wgpu resources needed for rendering:

  • device: GPU device for resource creation
  • queue: Command submission queue
  • surface (optional): Window surface for on-screen presentation
  • headless_texture (optional): Offscreen texture for headless rendering

The render target dimensions and format are always available via [target_width], [target_height], and [surface_view_format], regardless of the active mode.

Fields§

§device: Device

The wgpu device for GPU operations.

§queue: Queue

The command queue for submitting work.

§surface: Option<Surface<'static>>

Window surface for on-screen presentation (None in headless mode).

§config: Option<SurfaceConfiguration<Vec<TextureFormat>>>

Surface configuration (None in headless mode).

§headless_texture: Option<Texture>

Offscreen render target for headless mode (None in windowed mode).

Created with RENDER_ATTACHMENT | COPY_SRC usage to support both rendering and GPU-to-CPU readback.

§target_width: u32

Render target width in pixels.

§target_height: u32

Render target height in pixels.

§depth_format: TextureFormat

Depth buffer format.

§surface_view_format: TextureFormat

The view format used for render target views (always sRGB-qualified).

§msaa_samples: u32§anisotropy_clamp: u16§render_path: RenderPath

The active render path. Stored for runtime branching in the frame graph.

§pipeline_settings_version: u64

Version counter for pipeline-affecting settings (HDR, MSAA, RenderPath). Incremented when these settings change, used to invalidate L1 pipeline cache.

Implementations§

Source§

impl WgpuContext

Source

pub async fn new<W>( window: W, init_config: &RendererInitConfig, settings: &RendererSettings, width: u32, height: u32, ) -> Result<WgpuContext, Error>
where W: HasWindowHandle + HasDisplayHandle + Send + Sync + 'static,

Source

pub async fn new_headless( init_config: &RendererInitConfig, settings: &RendererSettings, width: u32, height: u32, target_format: Option<TextureFormat>, ) -> Result<WgpuContext, Error>

Creates a headless (offscreen) GPU context without a window surface.

This constructor skips surface creation and instead allocates an offscreen wgpu::Texture as the render target. The texture is created with RENDER_ATTACHMENT | COPY_SRC usage, enabling both rendering and GPU-to-CPU readback.

§Arguments
  • target_format — Desired render target format. Pass None to use the default Rgba8UnormSrgb, which provides broad compatibility and straightforward CPU readback. Use Rgba16Float for HDR workflows or Rgba32Float for maximum precision.
Source

pub fn resize(&mut self, width: u32, height: u32)

Source

pub fn set_vsync(&mut self, vsync: bool)

Dynamically reconfigure the surface present mode for VSync toggling.

This is a no-op in headless mode where no surface exists.

Source

pub fn create_depth_texture( device: &Device, width: u32, height: u32, format: TextureFormat, ) -> TextureView

Source

pub fn size(&self) -> (u32, u32)

Returns the current render target dimensions.

Source

pub fn is_headless(&self) -> bool

Returns true if the context is running in headless (offscreen) mode.

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<T> Downcast<T> for T

Source§

fn downcast(&self) -> &T

Source§

impl<T> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
Source§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> Same for T

Source§

type Output = T

Should always be Self
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> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

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

Source§

impl<T> WasmNotSendSync for T

Source§

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