pub struct WgpuRenderContext {
pub device: Device,
pub queue: Queue,
pub config: SurfaceConfiguration,
pub pipelines: PipelineCache,
pub transparent: bool,
}Expand description
GPU bundle for rendering when a presentation surface is managed externally.
This keeps the renderer core device/queue/pipelines/configuration decoupled from swapchain ownership, and is intended for host integrations (OpenXR, custom swapchains, tests with mock targets).
§Examples
use ailloli_ui_render_wgpu::pipeline_cache::WgpuRenderContext;
assert!(std::mem::size_of::<WgpuRenderContext>() > 0);Fields§
§device: DeviceLogical device used to allocate and encode renderer resources.
queue: QueueSubmission queue paired with Self::device.
config: SurfaceConfigurationVirtual target configuration; width and height are always at least one.
pipelines: PipelineCachePipelines compiled for [wgpu::SurfaceConfiguration::format].
transparent: boolWhether target composition requests a non-opaque alpha mode.
Implementations§
Source§impl WgpuRenderContext
impl WgpuRenderContext
Sourcepub fn new_with_size(
device: Device,
queue: Queue,
format: TextureFormat,
width: u32,
height: u32,
transparent: bool,
) -> Self
pub fn new_with_size( device: Device, queue: Queue, format: TextureFormat, width: u32, height: u32, transparent: bool, ) -> Self
Builds a detached rendering context from an existing device/queue pair.
Zero dimensions are clamped to one physical pixel. The detached config uses FIFO presentation metadata and a maximum frame latency of one even though it owns no swapchain.
§Panics
May panic if wgpu rejects shader or pipeline creation for device.
§Examples
use ailloli_ui_render_wgpu::pipeline_cache::WgpuRenderContext;
fn make(device: wgpu::Device, queue: wgpu::Queue) -> WgpuRenderContext {
WgpuRenderContext::new_with_size(
device,
queue,
wgpu::TextureFormat::Bgra8UnormSrgb,
1280,
720,
false,
)
}Sourcepub fn try_resize(&mut self, new_size: PhysicalExtent) -> ResizeOutcome
pub fn try_resize(&mut self, new_size: PhysicalExtent) -> ResizeOutcome
Resize the virtual config (no swapchain reconfigure side effects).
Zero-sized requests leave the configuration unchanged. Nonzero extents are expressed in physical pixels.
§Examples
use ailloli_ui_render_wgpu::{
pipeline_cache::{ResizeOutcome, WgpuRenderContext},
PhysicalExtent,
};
fn resize(context: &mut WgpuRenderContext) {
assert_eq!(
context.try_resize(PhysicalExtent::new(1920, 1080)),
ResizeOutcome::Applied
);
}Sourcepub fn pre_present_notify(&self)
pub fn pre_present_notify(&self)
No-op equivalent to Surface::pre_present_notify for detached contexts.
§Examples
use ailloli_ui_render_wgpu::pipeline_cache::WgpuRenderContext;
fn notify(context: &WgpuRenderContext) {
context.pre_present_notify();
}Sourcepub fn surface_config_deferred_reason(
&self,
) -> Option<SurfaceConfigDeferredReason>
pub fn surface_config_deferred_reason( &self, ) -> Option<SurfaceConfigDeferredReason>
Returns None because this context has no managed presentation surface.
§Examples
use ailloli_ui_render_wgpu::pipeline_cache::WgpuRenderContext;
fn is_ready(context: &WgpuRenderContext) -> bool {
context.surface_config_deferred_reason().is_none()
}Trait Implementations§
Auto Trait Implementations§
impl Freeze for WgpuRenderContext
impl !RefUnwindSafe for WgpuRenderContext
impl Send for WgpuRenderContext
impl Sync for WgpuRenderContext
impl Unpin for WgpuRenderContext
impl !UnwindSafe for WgpuRenderContext
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> 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