kms/device: Don't advertise drm_node on software devices
This commit is contained in:
parent
a840b52930
commit
70cd1842c1
1 changed files with 23 additions and 14 deletions
|
|
@ -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(),
|
||||||
},
|
},
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue