kms: Don't consider software devices for primary

This commit is contained in:
Victoria Brekenfeld 2025-09-05 14:11:55 +02:00 committed by Victoria Brekenfeld
parent 6eb5ca1f94
commit 18a1ba2d26
2 changed files with 8 additions and 1 deletions

View file

@ -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<EGLInternals>,
pub outputs: HashMap<connector::Handle, Output>,
@ -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(),

View file

@ -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