diff --git a/src/backend/kms/device.rs b/src/backend/kms/device.rs index 0c05e6e1..00e68cfd 100644 --- a/src/backend/kms/device.rs +++ b/src/backend/kms/device.rs @@ -107,6 +107,7 @@ pub struct LockedDevice<'a> { pub struct InnerDevice { pub dev_node: DrmNode, pub render_node: DrmNode, + pub is_software: bool, pub egl: Option, pub outputs: HashMap, @@ -124,6 +125,7 @@ impl fmt::Debug for InnerDevice { f.debug_struct("Device") .field("dev_node", &self.dev_node) .field("render_node", &self.render_node) + .field("is_software", &self.is_software) .field("egl", &self.egl) .field("outputs", &self.outputs) .field("surfaces", &self.surfaces) @@ -323,6 +325,7 @@ impl State { inner: InnerDevice { dev_node: drm_node, render_node, + is_software, egl: None, outputs: HashMap::new(), diff --git a/src/backend/kms/mod.rs b/src/backend/kms/mod.rs index 1ae81293..c8bf62ab 100644 --- a/src/backend/kms/mod.rs +++ b/src/backend/kms/mod.rs @@ -238,7 +238,11 @@ fn determine_primary_gpu( } // else just take the first - Ok(drm_devices.values().next().map(|dev| dev.inner.render_node)) + Ok(drm_devices + .values() + .next() + .filter(|dev| !dev.inner.is_software) + .map(|dev| dev.inner.render_node)) } /// Create `GlowRenderer` for `EGL_MESA_device_software` device, if present