kms: Adaptive VRR support
This commit is contained in:
parent
d72bf54628
commit
80965a61b9
7 changed files with 146 additions and 87 deletions
|
|
@ -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());
|
||||
|
|
|
|||
|
|
@ -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};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue