kms/device: Don't advertise drm_node on software devices

This commit is contained in:
Victoria Brekenfeld 2025-09-03 17:07:27 +02:00 committed by Victoria Brekenfeld
parent a840b52930
commit 70cd1842c1

View file

@ -237,7 +237,7 @@ impl State {
let gbm = GbmDevice::new(fd)
.with_context(|| format!("Failed to initialize GBM device for {}", path.display()))?;
let (render_node, render_formats) = {
let (render_node, render_formats, is_software) = {
let egl = init_egl(&gbm)?;
let render_node = egl
@ -248,7 +248,7 @@ impl State {
.unwrap_or(drm_node);
let render_formats = egl.context.dmabuf_texture_formats().clone();
(render_node, render_formats)
(render_node, render_formats, egl.device.is_software())
};
let token = self
@ -271,8 +271,11 @@ impl State {
)
.with_context(|| format!("Failed to add drm device to event loop: {}", dev))?;
let socket = match self.create_socket(dh, render_node, render_formats.clone()) {
Ok(socket) => Some(socket),
let socket = match (!is_software)
.then(|| self.create_socket(dh, render_node, render_formats.clone()))
.transpose()
{
Ok(socket) => socket,
Err(err) => {
warn!(
?err,
@ -282,6 +285,21 @@ impl State {
}
};
let leasing_global = match (!is_software)
.then(|| DrmLeaseState::new::<State>(dh, &drm_node))
.transpose()
{
Ok(global) => global,
Err(err) => {
// TODO: replace with inspect_err, once stable
warn!(
?err,
"Failed to initialize drm lease global for: {}", drm_node
);
None
}
};
let drm = GbmDrmOutputManager::new(
drm,
GbmAllocator::new(
@ -311,16 +329,7 @@ impl State {
gbm,
leased_connectors: Vec::new(),
leasing_global: DrmLeaseState::new::<State>(dh, &drm_node)
.map_err(|err| {
// TODO: replace with inspect_err, once stable
warn!(
?err,
"Failed to initialize drm lease global for: {}", drm_node
);
err
})
.ok(),
leasing_global,
active_leases: Vec::new(),
active_buffers: HashSet::new(),
},