fix(web): force WebGL2 backend

Affected Chromium adapters fail after selecting WebGPU even when packed renderer paths are forced. Use WebGL2 for the web app and let device limits select renderer tiers.\n\nRefs #788
This commit is contained in:
Hakan Seven committed 2026-08-19 19:04:58 +03:00
1 parent 97a6322e2a
commit c8840e2706
3 files changed
+3 -4

No files matched your search

+1
View File
@@ -3723,6 +3723,7 @@ pub fn run_web() -> iced::Result {
.subscription(OpenCADStudio::subscription)
.title(|_state: &OpenCADStudio| "Open CAD Studio".to_string())
.theme(|state: &OpenCADStudio| state.active_theme.clone())
.backend(iced::Backend::Hardware(iced::backend::Api::OpenGL))
.font(iced_aw::ICED_AW_FONT_BYTES)
.run()
}
@@ -1,8 +1,6 @@
use iced::wgpu;
/// Renderer-relevant limits of the selected GPU device.
///
/// Native devices select by limits; browser builds use compatibility paths.
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct DeviceCapabilities {
pub max_storage_buffers_per_shader_stage: u32,
+2 -2
View File
@@ -560,12 +560,12 @@ impl Pipeline {
);
// ── Wire pipeline ──────────────────────────────────────────────────
// Browser shader support can lag behind advertised WebGPU limits.
// Select the renderer tier from device limits.
let device_caps = DeviceCapabilities::detect(device);
#[cfg(not(target_arch = "wasm32"))]
let force_compat_renderer = crate::cli::gui_config().compat_renderer;
#[cfg(target_arch = "wasm32")]
let force_compat_renderer = true;
let force_compat_renderer = false;
let wire_mode =
wire_gpu::WirePipelineMode::select(device_caps, force_compat_renderer);
let wire_const_bgl = wire_mode