From ae1263b5c7d39698519809ebe8caa1d9f61d11bf Mon Sep 17 00:00:00 2001 From: shinyquagsire23 Date: Tue, 11 Nov 2025 12:30:37 -0700 Subject: [PATCH 1/3] Force sw renderer --- Cargo.lock | 3 ++ alvr/dashboard/Cargo.toml | 4 ++- alvr/dashboard/src/main.rs | 59 +++++++++++++++++++++++++++++++++++++- 3 files changed, 64 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2dc021d7a5..2c3bea2d53 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -292,6 +292,7 @@ dependencies = [ "chrono", "cros-libva", "eframe", + "egui-wgpu", "env_logger", "ico", "nvml-wrapper", @@ -1781,6 +1782,7 @@ dependencies = [ "objc2-foundation 0.2.2", "parking_lot", "percent-encoding", + "pollster", "profiling", "raw-window-handle", "static_assertions", @@ -1788,6 +1790,7 @@ dependencies = [ "wasm-bindgen-futures", "web-sys", "web-time", + "wgpu", "winapi", "windows-sys 0.59.0", "winit", diff --git a/alvr/dashboard/Cargo.toml b/alvr/dashboard/Cargo.toml index 2f6c8c782b..d652a007d9 100644 --- a/alvr/dashboard/Cargo.toml +++ b/alvr/dashboard/Cargo.toml @@ -18,7 +18,9 @@ alvr_gui_common.workspace = true alvr_audio.workspace = true chrono = "0.4" -eframe = "0.32" +eframe = { version = "0.32", features = ["wgpu"] } +egui-wgpu = "0.32" +wgpu = "25.0.0" env_logger = "0.11" ico = "0.4" rand = "0.9" diff --git a/alvr/dashboard/src/main.rs b/alvr/dashboard/src/main.rs index 87814dbfa8..27e7e9df16 100644 --- a/alvr/dashboard/src/main.rs +++ b/alvr/dashboard/src/main.rs @@ -36,9 +36,11 @@ fn main() { NativeOptions, egui::{IconData, ViewportBuilder}, }; + use egui_wgpu::{WgpuConfiguration, WgpuSetup, WgpuSetupCreateNew}; use ico::IconDir; use std::{env, ffi::OsStr, fs}; - use std::{io::Cursor, sync::mpsc}; + use std::{io::Cursor, sync::mpsc, sync::Arc}; + use wgpu::{DeviceType, InstanceDescriptor, PowerPreference}; let (server_events_sender, server_events_receiver) = mpsc::channel(); logging_backend::init_logging(server_events_sender.clone()); @@ -96,6 +98,61 @@ fn main() { height: image.height(), }), centered: true, + renderer: eframe::Renderer::Wgpu, + wgpu_options: WgpuConfiguration { + wgpu_setup: WgpuSetup::CreateNew(WgpuSetupCreateNew { + instance_descriptor: InstanceDescriptor { + #[cfg(windows)] + backends: wgpu::Backends::DX12, + ..Default::default() + }, + + // The UI actually does start to lag if you don't select this unfortunately + power_preference: PowerPreference::HighPerformance, + + // Select adapter: prefer software/WARP, otherwise first adapter + native_adapter_selector: Some(Arc::new( + move |adapters: &[wgpu::Adapter], surface: Option<&wgpu::Surface<'_>>| { + // Find the WARP adapter + for adapter in adapters { + let info = adapter.get_info(); + if info.device_type == DeviceType::Cpu + { + info!("Selected software adapter for dashboard: {:?}", info); + return Ok(adapter.clone()); + } + } + + // If none found, prefer a compatible adapter for the surface (if given) + if let Some(surf) = surface { + for adapter in adapters { + if adapter.is_surface_supported(surf) { + info!("Selected first compatible hardware adapter for dashboard: {:?}", adapter.get_info()); + return Ok(adapter.clone()); + } + } + } + + // Otherwise just return the first adapter + if let Some(first) = adapters.first() { + info!("Selected fallback adapter for dashboard: {:?}", first.get_info()); + return Ok(first.clone()); + } + + Err("No adapters available for dashboard renderer".to_owned()) + }, + )), + device_descriptor: Arc::new(|_adapter: &wgpu::Adapter| wgpu::DeviceDescriptor { + label: None, + required_features: wgpu::Features::empty(), + required_limits: wgpu::Limits::default(), + memory_hints: wgpu::MemoryHints::MemoryUsage, + ..Default::default() + }), + ..Default::default() + }), + ..Default::default() + }, ..Default::default() }, { From 88a3ca8b4986e31889b78bb9850dd1b2ecb0c953 Mon Sep 17 00:00:00 2001 From: shinyquagsire23 Date: Tue, 11 Nov 2025 16:03:34 -0700 Subject: [PATCH 2/3] Format and cleanup --- alvr/dashboard/src/main.rs | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/alvr/dashboard/src/main.rs b/alvr/dashboard/src/main.rs index 27e7e9df16..77ff41e7fd 100644 --- a/alvr/dashboard/src/main.rs +++ b/alvr/dashboard/src/main.rs @@ -39,7 +39,7 @@ fn main() { use egui_wgpu::{WgpuConfiguration, WgpuSetup, WgpuSetupCreateNew}; use ico::IconDir; use std::{env, ffi::OsStr, fs}; - use std::{io::Cursor, sync::mpsc, sync::Arc}; + use std::{io::Cursor, sync::Arc, sync::mpsc}; use wgpu::{DeviceType, InstanceDescriptor, PowerPreference}; let (server_events_sender, server_events_receiver) = mpsc::channel(); @@ -143,9 +143,6 @@ fn main() { }, )), device_descriptor: Arc::new(|_adapter: &wgpu::Adapter| wgpu::DeviceDescriptor { - label: None, - required_features: wgpu::Features::empty(), - required_limits: wgpu::Limits::default(), memory_hints: wgpu::MemoryHints::MemoryUsage, ..Default::default() }), From e2bd94f69b4f070be4a0fdd1f998d5a75bdf5209 Mon Sep 17 00:00:00 2001 From: shinyquagsire23 Date: Tue, 11 Nov 2025 16:49:56 -0700 Subject: [PATCH 3/3] Clippy --- alvr/dashboard/src/main.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/alvr/dashboard/src/main.rs b/alvr/dashboard/src/main.rs index 77ff41e7fd..2a36569f5b 100644 --- a/alvr/dashboard/src/main.rs +++ b/alvr/dashboard/src/main.rs @@ -145,8 +145,7 @@ fn main() { device_descriptor: Arc::new(|_adapter: &wgpu::Adapter| wgpu::DeviceDescriptor { memory_hints: wgpu::MemoryHints::MemoryUsage, ..Default::default() - }), - ..Default::default() + }) }), ..Default::default() },