mirror of
https://github.com/niri-wm/niri.git
synced 2026-06-22 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 api = GbmGlesBackend::with_factory(Box::new(create_renderer));
|
||||||
let gpu_manager = GpuManager::new(api).unwrap();
|
let gpu_manager = GpuManager::new(api).unwrap();
|
||||||
|
|
||||||
let primary_gpu_path = udev::primary_gpu(&seat_name).unwrap().unwrap();
|
let (primary_node, primary_render_node) = primary_node_from_config(&config.borrow())
|
||||||
let primary_node = DrmNode::from_path(primary_gpu_path).unwrap();
|
.unwrap_or_else(|| {
|
||||||
let primary_render_node = primary_node
|
let primary_gpu_path = udev::primary_gpu(&seat_name).unwrap().unwrap();
|
||||||
.node_with_type(NodeType::Render)
|
let primary_node = DrmNode::from_path(primary_gpu_path).unwrap();
|
||||||
.unwrap()
|
let primary_render_node = primary_node
|
||||||
.unwrap();
|
.node_with_type(NodeType::Render)
|
||||||
|
.unwrap()
|
||||||
|
.unwrap();
|
||||||
|
(primary_node, primary_render_node)
|
||||||
|
});
|
||||||
|
|
||||||
let mut node_path = String::new();
|
let mut node_path = String::new();
|
||||||
if let Some(path) = primary_render_node.dev_path() {
|
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(
|
fn surface_dmabuf_feedback(
|
||||||
compositor: &GbmDrmCompositor,
|
compositor: &GbmDrmCompositor,
|
||||||
primary_formats: HashSet<Format>,
|
primary_formats: HashSet<Format>,
|
||||||
|
|||||||
@@ -381,6 +381,8 @@ pub struct DebugConfig {
|
|||||||
pub enable_overlay_planes: bool,
|
pub enable_overlay_planes: bool,
|
||||||
#[knuffel(child)]
|
#[knuffel(child)]
|
||||||
pub disable_cursor_plane: bool,
|
pub disable_cursor_plane: bool,
|
||||||
|
#[knuffel(child, unwrap(argument))]
|
||||||
|
pub render_drm_device: Option<PathBuf>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Default for DebugConfig {
|
impl Default for DebugConfig {
|
||||||
@@ -392,6 +394,7 @@ impl Default for DebugConfig {
|
|||||||
enable_color_transformations_capability: false,
|
enable_color_transformations_capability: false,
|
||||||
enable_overlay_planes: false,
|
enable_overlay_planes: false,
|
||||||
disable_cursor_plane: false,
|
disable_cursor_plane: false,
|
||||||
|
render_drm_device: None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -655,6 +658,7 @@ mod tests {
|
|||||||
|
|
||||||
debug {
|
debug {
|
||||||
animation-slowdown 2.0
|
animation-slowdown 2.0
|
||||||
|
render-drm-device "/dev/dri/renderD129"
|
||||||
}
|
}
|
||||||
"#,
|
"#,
|
||||||
Config {
|
Config {
|
||||||
@@ -791,6 +795,7 @@ mod tests {
|
|||||||
]),
|
]),
|
||||||
debug: DebugConfig {
|
debug: DebugConfig {
|
||||||
animation_slowdown: 2.,
|
animation_slowdown: 2.,
|
||||||
|
render_drm_device: Some(PathBuf::from("/dev/dri/renderD129")),
|
||||||
..Default::default()
|
..Default::default()
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user