From 05b68bbee6ab4fa6fb330ad06dee46ea5f2186f7 Mon Sep 17 00:00:00 2001 From: Daniel Salvadori Date: Thu, 5 Sep 2019 20:10:39 -0300 Subject: [PATCH] Select virtual GPU last in all power preferences --- wgpu-native/src/instance.rs | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/wgpu-native/src/instance.rs b/wgpu-native/src/instance.rs index 9229acb42..1b62200cc 100644 --- a/wgpu-native/src/instance.rs +++ b/wgpu-native/src/instance.rs @@ -333,7 +333,7 @@ pub fn request_adapter( panic!("No adapters are available!"); } - let (mut integrated, mut discrete, mut other) = (None, None, None); + let (mut integrated, mut discrete, mut virt, mut other) = (None, None, None, None); for (i, ty) in device_types.into_iter().enumerate() { match ty { @@ -343,6 +343,9 @@ pub fn request_adapter( hal::adapter::DeviceType::DiscreteGpu => { discrete = discrete.or(Some(i)); } + hal::adapter::DeviceType::VirtualGpu => { + virt = virt.or(Some(i)); + } _ => { other = other.or(Some(i)); } @@ -350,9 +353,9 @@ pub fn request_adapter( } let preferred_gpu = match desc.power_preference { - PowerPreference::Default => integrated.or(discrete).or(other), - PowerPreference::LowPower => integrated.or(other).or(discrete), - PowerPreference::HighPerformance => discrete.or(other).or(integrated), + PowerPreference::Default => integrated.or(discrete).or(other).or(virt), + PowerPreference::LowPower => integrated.or(other).or(discrete).or(virt), + PowerPreference::HighPerformance => discrete.or(other).or(integrated).or(virt), }; let mut token = Token::root();