From 072b94c9fd660030f4469178d9260f29e41971bb Mon Sep 17 00:00:00 2001 From: Greg V Date: Fri, 9 Oct 2020 21:45:59 +0300 Subject: [PATCH] Never prefer CPU devices over GPUs --- wgpu-core/src/instance.rs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/wgpu-core/src/instance.rs b/wgpu-core/src/instance.rs index b57c1f0716..eaa4e0ba64 100644 --- a/wgpu-core/src/instance.rs +++ b/wgpu-core/src/instance.rs @@ -628,7 +628,8 @@ impl Global { return Err(RequestAdapterError::NotFound); } - let (mut integrated, mut discrete, mut virt, mut other) = (None, None, None, None); + let (mut integrated, mut discrete, mut virt, mut cpu, mut other) = + (None, None, None, None, None); for (i, ty) in device_types.into_iter().enumerate() { match ty { @@ -641,15 +642,18 @@ impl Global { hal::adapter::DeviceType::VirtualGpu => { virt = virt.or(Some(i)); } - _ => { + hal::adapter::DeviceType::Cpu => { + cpu = cpu.or(Some(i)); + } + hal::adapter::DeviceType::Other => { other = other.or(Some(i)); } } } let preferred_gpu = match desc.power_preference { - PowerPreference::LowPower => integrated.or(other).or(discrete).or(virt), - PowerPreference::HighPerformance => discrete.or(other).or(integrated).or(virt), + PowerPreference::LowPower => integrated.or(other).or(discrete).or(virt).or(cpu), + PowerPreference::HighPerformance => discrete.or(other).or(integrated).or(virt).or(cpu), }; let mut selected = preferred_gpu.unwrap_or(0);