From 11426e862852ebe058f4b518aadfc18cf075cb7b Mon Sep 17 00:00:00 2001 From: Jakub Panek Date: Mon, 13 May 2024 09:58:09 +0200 Subject: [PATCH] auto choose supported CompositeAlphaMode capability --- vger/src/lib.rs | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/vger/src/lib.rs b/vger/src/lib.rs index 3c604954..5ec7981a 100644 --- a/vger/src/lib.rs +++ b/vger/src/lib.rs @@ -79,19 +79,36 @@ impl VgerRenderer { let queue = Arc::new(queue); let surface_caps = surface.get_capabilities(&adapter); + + tracing::trace!("surface caps: {surface_caps:?}"); + let texture_format = surface_caps .formats .into_iter() .find(|it| matches!(it, TextureFormat::Rgba8Unorm | TextureFormat::Bgra8Unorm)) .ok_or_else(|| anyhow::anyhow!("surface should support Rgba8Unorm or Bgra8Unorm"))?; + let alpha_mode = if surface_caps + .alpha_modes + .contains(&wgpu::CompositeAlphaMode::PostMultiplied) + { + wgpu::CompositeAlphaMode::PostMultiplied + } else if surface_caps + .alpha_modes + .contains(&wgpu::CompositeAlphaMode::PreMultiplied) + { + wgpu::CompositeAlphaMode::PreMultiplied + } else { + wgpu::CompositeAlphaMode::Auto + }; + let config = wgpu::SurfaceConfiguration { usage: wgpu::TextureUsages::RENDER_ATTACHMENT, format: texture_format, width, height, present_mode: wgpu::PresentMode::Fifo, - alpha_mode: wgpu::CompositeAlphaMode::Auto, + alpha_mode, view_formats: vec![], desired_maximum_frame_latency: 2, };