mirror of
https://github.com/niri-wm/niri.git
synced 2026-06-21 02:01:55 +07:00
Add render-drm-device debug config option
This commit is contained in:
+39
-6
@@ -190,12 +190,16 @@ impl Tty {
|
||||
let api = GbmGlesBackend::with_factory(Box::new(create_renderer));
|
||||
let gpu_manager = GpuManager::new(api).unwrap();
|
||||
|
||||
let primary_gpu_path = udev::primary_gpu(&seat_name).unwrap().unwrap();
|
||||
let primary_node = DrmNode::from_path(primary_gpu_path).unwrap();
|
||||
let primary_render_node = primary_node
|
||||
.node_with_type(NodeType::Render)
|
||||
.unwrap()
|
||||
.unwrap();
|
||||
let (primary_node, primary_render_node) = primary_node_from_config(&config.borrow())
|
||||
.unwrap_or_else(|| {
|
||||
let primary_gpu_path = udev::primary_gpu(&seat_name).unwrap().unwrap();
|
||||
let primary_node = DrmNode::from_path(primary_gpu_path).unwrap();
|
||||
let primary_render_node = primary_node
|
||||
.node_with_type(NodeType::Render)
|
||||
.unwrap()
|
||||
.unwrap();
|
||||
(primary_node, primary_render_node)
|
||||
});
|
||||
|
||||
let mut node_path = String::new();
|
||||
if let Some(path) = primary_render_node.dev_path() {
|
||||
@@ -1224,6 +1228,35 @@ impl Tty {
|
||||
}
|
||||
}
|
||||
|
||||
fn primary_node_from_config(config: &Config) -> Option<(DrmNode, DrmNode)> {
|
||||
let path = config.debug.render_drm_device.as_ref()?;
|
||||
debug!("attempting to use render node from config: {path:?}");
|
||||
|
||||
match DrmNode::from_path(path) {
|
||||
Ok(node) => {
|
||||
if node.ty() == NodeType::Render {
|
||||
match node.node_with_type(NodeType::Primary) {
|
||||
Some(Ok(primary_node)) => {
|
||||
return Some((primary_node, node));
|
||||
}
|
||||
Some(Err(err)) => {
|
||||
warn!("error opening primary node for render node {path:?}: {err:?}");
|
||||
}
|
||||
None => {
|
||||
warn!("error opening primary node for render node {path:?}");
|
||||
}
|
||||
}
|
||||
} else {
|
||||
warn!("DRM node {path:?} is not a render node");
|
||||
}
|
||||
}
|
||||
Err(err) => {
|
||||
warn!("error opening {path:?} as DRM node: {err:?}");
|
||||
}
|
||||
}
|
||||
None
|
||||
}
|
||||
|
||||
fn surface_dmabuf_feedback(
|
||||
compositor: &GbmDrmCompositor,
|
||||
primary_formats: HashSet<Format>,
|
||||
|
||||
@@ -381,6 +381,8 @@ pub struct DebugConfig {
|
||||
pub enable_overlay_planes: bool,
|
||||
#[knuffel(child)]
|
||||
pub disable_cursor_plane: bool,
|
||||
#[knuffel(child, unwrap(argument))]
|
||||
pub render_drm_device: Option<PathBuf>,
|
||||
}
|
||||
|
||||
impl Default for DebugConfig {
|
||||
@@ -392,6 +394,7 @@ impl Default for DebugConfig {
|
||||
enable_color_transformations_capability: false,
|
||||
enable_overlay_planes: false,
|
||||
disable_cursor_plane: false,
|
||||
render_drm_device: None,
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -655,6 +658,7 @@ mod tests {
|
||||
|
||||
debug {
|
||||
animation-slowdown 2.0
|
||||
render-drm-device "/dev/dri/renderD129"
|
||||
}
|
||||
"#,
|
||||
Config {
|
||||
@@ -791,6 +795,7 @@ mod tests {
|
||||
]),
|
||||
debug: DebugConfig {
|
||||
animation_slowdown: 2.,
|
||||
render_drm_device: Some(PathBuf::from("/dev/dri/renderD129")),
|
||||
..Default::default()
|
||||
},
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user