Skip to content

Commit 18a1ba2

Browse files
committed
kms: Don't consider software devices for primary
1 parent 6eb5ca1 commit 18a1ba2

File tree

2 files changed

+8
-1
lines changed

2 files changed

+8
-1
lines changed

src/backend/kms/device.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ pub struct LockedDevice<'a> {
107107
pub struct InnerDevice {
108108
pub dev_node: DrmNode,
109109
pub render_node: DrmNode,
110+
pub is_software: bool,
110111
pub egl: Option<EGLInternals>,
111112

112113
pub outputs: HashMap<connector::Handle, Output>,
@@ -124,6 +125,7 @@ impl fmt::Debug for InnerDevice {
124125
f.debug_struct("Device")
125126
.field("dev_node", &self.dev_node)
126127
.field("render_node", &self.render_node)
128+
.field("is_software", &self.is_software)
127129
.field("egl", &self.egl)
128130
.field("outputs", &self.outputs)
129131
.field("surfaces", &self.surfaces)
@@ -323,6 +325,7 @@ impl State {
323325
inner: InnerDevice {
324326
dev_node: drm_node,
325327
render_node,
328+
is_software,
326329
egl: None,
327330

328331
outputs: HashMap::new(),

src/backend/kms/mod.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,11 @@ fn determine_primary_gpu(
238238
}
239239

240240
// else just take the first
241-
Ok(drm_devices.values().next().map(|dev| dev.inner.render_node))
241+
Ok(drm_devices
242+
.values()
243+
.next()
244+
.filter(|dev| !dev.inner.is_software)
245+
.map(|dev| dev.inner.render_node))
242246
}
243247

244248
/// Create `GlowRenderer` for `EGL_MESA_device_software` device, if present

0 commit comments

Comments
 (0)