diff --git a/src/backend/drm/compositor/mod.rs b/src/backend/drm/compositor/mod.rs index c42e61c046b9..eb970d12b55b 100644 --- a/src/backend/drm/compositor/mod.rs +++ b/src/backend/drm/compositor/mod.rs @@ -661,6 +661,7 @@ impl FrameState { plane: plane::Handle, state: PlaneState, allow_modeset: bool, + allow_partial_update: bool, ) -> Result<(), DrmError> { let current_config = match self.plane_state_mut(plane) { Some(config) => config, @@ -669,7 +670,10 @@ impl FrameState { let backup = current_config.clone(); *current_config = state; - let res = surface.test_state(self.build_planes(surface, supports_fencing, true), allow_modeset); + let res = surface.test_state( + self.build_planes(surface, supports_fencing, allow_partial_update), + allow_modeset, + ); if res.is_err() { // test failed, restore previous state @@ -1564,7 +1568,7 @@ where }), }; - match current_frame_state.test_state(drm, supports_fencing, drm.plane(), plane_state, true) { + match current_frame_state.test_state(drm, supports_fencing, drm.plane(), plane_state, true, false) { Ok(_) => Ok((swapchain, use_opaque)), Err(err) => { warn!( @@ -3413,6 +3417,7 @@ where plane_info.handle, plane_state, false, + true, ) .is_ok() }; @@ -4028,6 +4033,7 @@ where plane.handle, plane_state, false, + true, ) .is_ok() };