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 creationqueue: Command submission queuesurface(optional): Window surface for on-screen presentationheadless_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: DeviceThe wgpu device for GPU operations.
queue: QueueThe 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: u32Render target width in pixels.
target_height: u32Render target height in pixels.
depth_format: TextureFormatDepth buffer format.
surface_view_format: TextureFormatThe view format used for render target views (always sRGB-qualified).
msaa_samples: u32§anisotropy_clamp: u16§render_path: RenderPathThe active render path. Stored for runtime branching in the frame graph.
pipeline_settings_version: u64Version counter for pipeline-affecting settings (HDR, MSAA, RenderPath). Incremented when these settings change, used to invalidate L1 pipeline cache.
Implementations§
Source§impl WgpuContext
impl WgpuContext
pub async fn new<W>( window: W, init_config: &RendererInitConfig, settings: &RendererSettings, width: u32, height: u32, ) -> Result<WgpuContext, Error>
Sourcepub async fn new_headless(
init_config: &RendererInitConfig,
settings: &RendererSettings,
width: u32,
height: u32,
target_format: Option<TextureFormat>,
) -> Result<WgpuContext, Error>
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. PassNoneto use the defaultRgba8UnormSrgb, which provides broad compatibility and straightforward CPU readback. UseRgba16Floatfor HDR workflows orRgba32Floatfor maximum precision.
pub fn resize(&mut self, width: u32, height: u32)
Sourcepub fn set_vsync(&mut self, vsync: bool)
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.
pub fn create_depth_texture( device: &Device, width: u32, height: u32, format: TextureFormat, ) -> TextureView
Sourcepub fn is_headless(&self) -> bool
pub fn is_headless(&self) -> bool
Returns true if the context is running in headless (offscreen) mode.
Auto Trait Implementations§
impl !Freeze for WgpuContext
impl !RefUnwindSafe for WgpuContext
impl Send for WgpuContext
impl Sync for WgpuContext
impl Unpin for WgpuContext
impl UnsafeUnpin for WgpuContext
impl !UnwindSafe for WgpuContext
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
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
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>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
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)
fn as_any(&self) -> &(dyn Any + 'static)
&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)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.