pub struct GpuContext {
pub device: Device,
pub queue: Queue,
pub color_texture: Texture,
pub color_view: TextureView,
pub width: u32,
pub height: u32,
pub sample_count: u32,
pub msaa_view: Option<TextureView>,
}Expand description
An initialised headless GPU context: device, queue, and an offscreen colour texture (plus its view) sized to the requested surface.
No window or swap-chain surface is involved — rendering goes to the
offscreen texture, which can then be read back to CPU memory with
crate::gpu::renderer’s readback path.
Fields§
§device: DeviceThe logical GPU device.
queue: QueueThe command queue for the device.
color_texture: TextureThe offscreen colour texture (RENDER_ATTACHMENT | COPY_SRC).
This is always the resolve/readback target (sample_count=1).
color_view: TextureViewA default view over color_texture.
When MSAA is active this is the resolve target; when no MSAA it is
the direct render target.
width: u32Target width in physical pixels.
height: u32Target height in physical pixels.
sample_count: u32The effective MSAA sample count (1 = no MSAA, 4 or 8 = MSAA).
msaa_view: Option<TextureView>The MSAA multisample texture view, present only when sample_count > 1.
Implementations§
Source§impl GpuContext
impl GpuContext
Sourcepub fn headless_with_sample_count(
width: u32,
height: u32,
requested: u32,
) -> Result<Self, UiError>
pub fn headless_with_sample_count( width: u32, height: u32, requested: u32, ) -> Result<Self, UiError>
Initialise a headless GPU context with an offscreen target of
width × height pixels and the specified MSAA sample count.
The requested sample count is validated against adapter capabilities.
If the adapter does not support the requested count, sample_count=1
(no MSAA) is used instead. Only 4 and 8 are recognised as valid MSAA
counts; anything else silently falls back to 1.
§Errors
UiError::Unsupported— no GPU adapter is available, or the requested target dimensions are zero.UiError::Backend— the adapter was found but the device request failed.
Sourcepub fn headless(width: u32, height: u32) -> Result<Self, UiError>
pub fn headless(width: u32, height: u32) -> Result<Self, UiError>
Initialise a headless GPU context with an offscreen target of
width × height pixels without MSAA (sample_count=1).
This delegates to headless_with_sample_count with requested=1,
preserving the exact same code path as before MSAA support was added.
§Errors
UiError::Unsupported— no GPU adapter is available (the caller should treat this as “skip”, not a hard failure), or the requested target dimensions are zero.UiError::Backend— the adapter was found but the device request failed.
Sourcepub fn color_attachment(&self) -> (&TextureView, Option<&TextureView>)
pub fn color_attachment(&self) -> (&TextureView, Option<&TextureView>)
Returns the colour attachment view and optional resolve target.
Under MSAA (sample_count > 1): render into msaa_view, resolve into
color_view.
Under no MSAA (sample_count == 1): render directly into color_view,
no resolve.
Sourcepub fn sample_count(&self) -> u32
pub fn sample_count(&self) -> u32
Returns the effective MSAA sample count (1 = no MSAA, 4 or 8 = MSAA).
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 offscreen colour target to new_width × new_height pixels.
Recreates only the colour texture and its view (and the MSAA texture if active). The device, queue, and sample count are preserved.
§Errors
Returns UiError::Unsupported if either dimension is zero.
Auto Trait Implementations§
impl !RefUnwindSafe for GpuContext
impl !UnwindSafe for GpuContext
impl Freeze for GpuContext
impl Send for GpuContext
impl Sync for GpuContext
impl Unpin for GpuContext
impl UnsafeUnpin for GpuContext
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