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