Skip to content

Commit 74c7a21

Browse files
committed
kms: Skip overlay tests on fullscreen
1 parent 0be83fe commit 74c7a21

File tree

1 file changed

+22
-12
lines changed

1 file changed

+22
-12
lines changed

src/backend/kms/surface/mod.rs

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -974,10 +974,8 @@ impl SurfaceThreadState {
974974

975975
self.timings.start_render(&self.clock);
976976

977-
let mut vrr = match self.vrr_mode {
978-
AdaptiveSync::Force => true,
979-
_ => false,
980-
};
977+
let mut additional_frame_flags = FrameFlags::empty();
978+
let mut remove_frame_flags = FrameFlags::empty();
981979

982980
let has_active_fullscreen = {
983981
let shell = self.shell.read().unwrap();
@@ -989,6 +987,16 @@ impl SurfaceThreadState {
989987
}
990988
};
991989

990+
if has_active_fullscreen {
991+
// skip overlay plane assign if we have a fullscreen surface to save on tests
992+
remove_frame_flags |= FrameFlags::ALLOW_OVERLAY_PLANE_SCANOUT;
993+
}
994+
995+
let mut vrr = match self.vrr_mode {
996+
AdaptiveSync::Force => true,
997+
_ => false,
998+
};
999+
9921000
if self.vrr_mode == AdaptiveSync::Enabled {
9931001
vrr = has_active_fullscreen;
9941002
}
@@ -1008,12 +1016,10 @@ impl SurfaceThreadState {
10081016
.map_err(|err| {
10091017
anyhow::format_err!("Failed to accumulate elements for rendering: {:?}", err)
10101018
})?;
1011-
let additional_frame_flags =
1012-
if vrr && has_active_fullscreen && !self.timings.past_min_render_time(&self.clock) {
1013-
FrameFlags::SKIP_CURSOR_ONLY_UPDATES
1014-
} else {
1015-
FrameFlags::empty()
1016-
};
1019+
1020+
if vrr && has_active_fullscreen && !self.timings.past_min_render_time(&self.clock) {
1021+
additional_frame_flags |= FrameFlags::SKIP_CURSOR_ONLY_UPDATES;
1022+
};
10171023
self.timings.set_vrr(vrr);
10181024
self.timings.elements_done(&self.clock);
10191025

@@ -1382,7 +1388,9 @@ impl SurfaceThreadState {
13821388
&mut renderer,
13831389
&elements,
13841390
[0.0, 0.0, 0.0, 0.0],
1385-
self.frame_flags.union(additional_frame_flags),
1391+
self.frame_flags
1392+
.union(additional_frame_flags)
1393+
.difference(remove_frame_flags),
13861394
)
13871395
} else {
13881396
if let Err(err) = compositor.with_compositor(|c| c.use_vrr(vrr)) {
@@ -1392,7 +1400,9 @@ impl SurfaceThreadState {
13921400
&mut renderer,
13931401
&elements,
13941402
CLEAR_COLOR, // TODO use a theme neutral color
1395-
self.frame_flags.union(additional_frame_flags),
1403+
self.frame_flags
1404+
.union(additional_frame_flags)
1405+
.difference(remove_frame_flags),
13961406
)
13971407
};
13981408
self.timings.draw_done(&self.clock);

0 commit comments

Comments
 (0)