diff options
| author | BB <bbedward@gmail.com> | 2025-08-07 14:06:11 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-08-07 11:06:11 -0700 |
| commit | f74d83dccaa6e8fffb38c304dd5d1eae07b87d24 (patch) | |
| tree | d8870facb2123c3de3898989208a333e0e8ed2df | |
| parent | 055a94de3d3b792adfb6842bdddd8eab6384164f (diff) | |
| download | niri-f74d83dccaa6e8fffb38c304dd5d1eae07b87d24.tar.gz niri-f74d83dccaa6e8fffb38c304dd5d1eae07b87d24.tar.bz2 niri-f74d83dccaa6e8fffb38c304dd5d1eae07b87d24.zip | |
niri-config: add keep-max-bpc-unchanged option (#2195)
* niri-config: add disable-set-bpc option
setting bpc to 8 bricks some OLED displays driven by amdgpu
* change to keep-max-bpc-unchanged and add to wiki
* fmt
* Update wiki/Configuration:-Debug-Options.md
---------
Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com>
| -rw-r--r-- | niri-config/src/lib.rs | 3 | ||||
| -rw-r--r-- | src/backend/tty.rs | 11 | ||||
| -rw-r--r-- | wiki/Configuration:-Debug-Options.md | 18 |
3 files changed, 28 insertions, 4 deletions
diff --git a/niri-config/src/lib.rs b/niri-config/src/lib.rs index 6adc9732..220f6be5 100644 --- a/niri-config/src/lib.rs +++ b/niri-config/src/lib.rs @@ -2339,6 +2339,8 @@ pub struct DebugConfig { #[knuffel(child)] pub disable_direct_scanout: bool, #[knuffel(child)] + pub keep_max_bpc_unchanged: bool, + #[knuffel(child)] pub restrict_primary_scanout_to_matching_format: bool, #[knuffel(child, unwrap(argument))] pub render_drm_device: Option<PathBuf>, @@ -5434,6 +5436,7 @@ mod tests { enable_overlay_planes: false, disable_cursor_plane: false, disable_direct_scanout: false, + keep_max_bpc_unchanged: false, restrict_primary_scanout_to_matching_format: false, render_drm_device: Some( "/dev/dri/renderD129", diff --git a/src/backend/tty.rs b/src/backend/tty.rs index 7b0303fd..3c7f512a 100644 --- a/src/backend/tty.rs +++ b/src/backend/tty.rs @@ -857,10 +857,13 @@ impl Tty { } debug!("picking mode: {mode:?}"); - // We only use 8888 RGB formats, so set max bpc to 8 to allow more types of links to run. - match set_max_bpc(&device.drm, connector.handle(), 8) { - Ok(bpc) => debug!("set max bpc to {bpc}"), - Err(err) => debug!("error setting max bpc: {err:?}"), + if !niri.config.borrow().debug.keep_max_bpc_unchanged { + // We only use 8888 RGB formats, so set max bpc to 8 to allow more types of links to + // run. + match set_max_bpc(&device.drm, connector.handle(), 8) { + Ok(bpc) => debug!("set max bpc to {bpc}"), + Err(err) => debug!("error setting max bpc: {err:?}"), + } } let mut gamma_props = GammaProps::new(&device.drm, crtc) diff --git a/wiki/Configuration:-Debug-Options.md b/wiki/Configuration:-Debug-Options.md index ad74dba7..f2d38de0 100644 --- a/wiki/Configuration:-Debug-Options.md +++ b/wiki/Configuration:-Debug-Options.md @@ -30,6 +30,7 @@ debug { honor-xdg-activation-with-invalid-serial skip-cursor-only-updates-during-vrr deactivate-unfocused-windows + keep-max-bpc-unchanged } binds { @@ -292,6 +293,23 @@ debug { } ``` +### `keep-max-bpc-unchanged` + +<sup>Since: next release</sup> + +When connecting monitors, niri sets their max bpc to 8 in order to reduce display bandwidth and to potentially allow more monitors to be connected at once. +Restricting bpc to 8 is not a problem since we don't support HDR or color management yet and can't really make use of higher bpc. + +Apparently, setting max bpc to 8 breaks some displays driven by AMDGPU. +If this happens to you, set this debug flag, which will prevent niri from changing max bpc. +AMDGPU bug report: https://gitlab.freedesktop.org/drm/amd/-/issues/4487. + +```kdl +debug { + keep-max-bpc-unchanged +} +``` + ### Key Bindings These are not debug options, but rather key bindings. |
