kms: Adaptive VRR support

This commit is contained in:
Victoria Brekenfeld 2024-11-18 19:47:59 +01:00 committed by Victoria Brekenfeld
parent d72bf54628
commit 80965a61b9
7 changed files with 146 additions and 87 deletions

View file

@ -4,7 +4,7 @@ use smithay::{output::Output, utils::Point};
use tracing::{error, warn};
use crate::{
config::{OutputConfig, OutputState},
config::{AdaptiveSync, OutputConfig, OutputState},
state::State,
wayland::protocols::output_configuration::{
delegate_output_configuration, ModeConfiguration, OutputConfiguration,
@ -120,7 +120,11 @@ impl State {
current_config.position = (position.x as u32, position.y as u32);
}
if let Some(vrr) = adaptive_sync {
current_config.vrr = *vrr;
current_config.vrr = if *vrr {
AdaptiveSync::Force
} else {
AdaptiveSync::Disabled
};
}
if let Some(mirror) = mirroring {
current_config.enabled = OutputState::Mirroring(mirror.name());

View file

@ -441,11 +441,13 @@ where
}
if instance.obj.version() >= zwlr_output_head_v1::EVT_ADAPTIVE_SYNC_SINCE {
instance.obj.adaptive_sync(if output.adaptive_sync() {
zwlr_output_head_v1::AdaptiveSyncState::Enabled
} else {
zwlr_output_head_v1::AdaptiveSyncState::Disabled
});
instance
.obj
.adaptive_sync(if output.adaptive_sync() == AdaptiveSync::Disabled {
zwlr_output_head_v1::AdaptiveSyncState::Disabled
} else {
zwlr_output_head_v1::AdaptiveSyncState::Enabled
});
}
}
@ -498,4 +500,4 @@ macro_rules! delegate_output_configuration {
}
pub(crate) use delegate_output_configuration;
use crate::utils::prelude::OutputExt;
use crate::{config::AdaptiveSync, utils::prelude::OutputExt};