pub struct WgpuSetupCreateNew {
pub instance_descriptor: InstanceDescriptor,
pub display_handle: Option<Box<dyn EguiDisplayHandle>>,
pub power_preference: PowerPreference,
pub native_adapter_selector: Option<NativeAdapterSelectorMethod>,
pub device_descriptor: Arc<dyn Fn(&Adapter) -> DeviceDescriptor<'static> + Send + Sync>,
}Expand description
Configuration for creating a new wgpu setup.
Used for WgpuSetup::CreateNew.
Prefer Self::from_display_handle when you have a display handle available.
Most platforms work without one, but some (e.g. Wayland with GLES, or WebGL)
require it, so providing one ensures maximum compatibility.
With winit, pass EventLoop::owned_display_handle.
Note: The display handle is stored in Self::display_handle rather than in
Self::instance_descriptor so the config can be cloned
(wgpu::InstanceDescriptor is not Clone). It is injected at instance creation time.
Fields§
§instance_descriptor: InstanceDescriptorDescriptor for the wgpu instance.
Leave wgpu::InstanceDescriptor::display as None — use Self::display_handle
instead (injected at instance creation time).
The most important field is wgpu::InstanceDescriptor::backends, which controls
which backends are supported (wgpu will pick one of these). For example, set it to
wgpu::Backends::GL to use only WebGL. By default on web, WebGPU is preferred
with WebGL as a fallback (requires the webgl feature of crate wgpu).
display_handle: Option<Box<dyn EguiDisplayHandle>>Display handle passed to wgpu at instance creation time.
Required on some platforms (e.g. Wayland with GLES, WebGL); optional elsewhere.
With winit, use winit::event_loop::OwnedDisplayHandle.
eframe ’s winit & web integrations will attempt to fill the display handle automatically if it is left empty.
power_preference: PowerPreferencePower preference for the adapter if Self::native_adapter_selector is not set or targeting web.
native_adapter_selector: Option<NativeAdapterSelectorMethod>Optional selector for native adapters.
This field has no effect when targeting web!
Otherwise, if set Self::power_preference is ignored and the adapter is instead selected by this method.
Note that Self::instance_descriptor’s wgpu::InstanceDescriptor::backends
are still used to filter the adapter enumeration in the first place.
Defaults to None.
device_descriptor: Arc<dyn Fn(&Adapter) -> DeviceDescriptor<'static> + Send + Sync>Configuration passed on device request, given an adapter
Implementations§
Source§impl WgpuSetupCreateNew
impl WgpuSetupCreateNew
Sourcepub fn from_display_handle(display_handle: impl EguiDisplayHandle) -> Self
pub fn from_display_handle(display_handle: impl EguiDisplayHandle) -> Self
Creates a new configuration with the given display handle.
This is the recommended constructor. Most platforms (Windows, macOS/iOS, Android, web) work fine without a display handle, but some (e.g. Wayland on Linux with GLES) require one. Providing it unconditionally ensures your app works everywhere.
If you don’t have a display handle available, use Self::without_display_handle
instead — it will still work on the majority of platforms.
With winit, pass EventLoop::owned_display_handle.
Sourcepub fn without_display_handle() -> Self
pub fn without_display_handle() -> Self
Creates a new configuration without a display handle.
A display handle is not required for headless operation (offscreen rendering, tests, compute-only workloads). It also isn’t needed on most platforms even when presenting to a window — only some configurations (e.g. Wayland on Linux with GLES) require one.
If you do have a display handle available, prefer Self::from_display_handle for
maximum compatibility.
With winit you can obtain one via EventLoop::owned_display_handle.
eframe ’s winit & web integrations will attempt to fill the display handle automatically if it is left empty.
Trait Implementations§
Source§impl Clone for WgpuSetupCreateNew
impl Clone for WgpuSetupCreateNew
Source§impl Debug for WgpuSetupCreateNew
impl Debug for WgpuSetupCreateNew
Source§impl From<WgpuSetupCreateNew> for WgpuSetup
impl From<WgpuSetupCreateNew> for WgpuSetup
Source§fn from(create_new: WgpuSetupCreateNew) -> Self
fn from(create_new: WgpuSetupCreateNew) -> Self
Auto Trait Implementations§
impl Freeze for WgpuSetupCreateNew
impl !RefUnwindSafe for WgpuSetupCreateNew
impl Send for WgpuSetupCreateNew
impl Sync for WgpuSetupCreateNew
impl Unpin for WgpuSetupCreateNew
impl UnsafeUnpin for WgpuSetupCreateNew
impl !UnwindSafe for WgpuSetupCreateNew
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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.