kms: Don't queue frames only after vblank

This commit is contained in:
Victoria Brekenfeld 2022-11-06 11:50:09 +01:00
parent a8e0f99e4b
commit 5057dec552

View file

@ -94,7 +94,6 @@ pub struct Surface {
damage_tracker: DamageTrackedRenderer, damage_tracker: DamageTrackedRenderer,
connector: connector::Handle, connector: connector::Handle,
output: Output, output: Output,
last_submit: Option<RenderElementStates>,
refresh_rate: u32, refresh_rate: u32,
vrr: bool, vrr: bool,
pending: bool, pending: bool,
@ -382,10 +381,6 @@ impl State {
Some(Ok(_)) => { Some(Ok(_)) => {
let _submit_time = metadata.take().map(|data| data.time); let _submit_time = metadata.take().map(|data| data.time);
surface.pending = false; surface.pending = false;
data.state.common.send_frames(
&surface.output,
&surface.last_submit.take().unwrap(),
);
} }
Some(Err(err)) => { Some(Err(err)) => {
slog_scope::warn!("Failed to submit frame: {}", err) slog_scope::warn!("Failed to submit frame: {}", err)
@ -701,7 +696,6 @@ impl Device {
connector: conn, connector: conn,
vrr, vrr,
refresh_rate, refresh_rate,
last_submit: None,
pending: false, pending: false,
render_timer_token: None, render_timer_token: None,
#[cfg(feature = "debug")] #[cfg(feature = "debug")]
@ -791,7 +785,7 @@ impl Surface {
Some(&mut self.fps), Some(&mut self.fps),
) { ) {
Ok((_damage, states)) => { Ok((_damage, states)) => {
self.last_submit = Some(states); state.send_frames(&self.output, &states);
surface surface
.queue_buffer() .queue_buffer()
.with_context(|| "Failed to submit buffer for display")?; .with_context(|| "Failed to submit buffer for display")?;
@ -801,6 +795,7 @@ impl Surface {
anyhow::bail!("Rendering failed: {}", err); anyhow::bail!("Rendering failed: {}", err);
} }
}; };
Ok(()) Ok(())
} }
} }