Watch
1
0
Fork
You've already forked smithay
0

renderer: Return SyncPoint from blit operations

This commit is contained in:
Victoria Brekenfeld 2026-06-09 15:32:09 +02:00 • committed by Victoria Brekenfeld
commit 9cf08401b5
4 changed files with 12 additions and 14 deletions

View file

@ -1620,12 +1620,12 @@ impl<'buffer> BlitFrame<GlesTarget<'buffer>> for GlesFrame<'_, '_> {
src: Rectangle<i32, Physical>,
dst: Rectangle<i32, Physical>,
filter: TextureFilter,
) -> Result<(), Self::Error> {
) -> Result<SyncPoint, Self::Error> {
let res = self.renderer.blit(self.target, to, src, dst, filter);
self.target
.0
.make_current(&self.renderer.gl, &self.renderer.egl)?;
res.map(|_| ())
res
}
fn blit_from(
@ -1634,12 +1634,12 @@ impl<'buffer> BlitFrame<GlesTarget<'buffer>> for GlesFrame<'_, '_> {
src: Rectangle<i32, Physical>,
dst: Rectangle<i32, Physical>,
filter: TextureFilter,
) -> Result<(), Self::Error> {
) -> Result<SyncPoint, Self::Error> {
let res = self.renderer.blit(from, self.target, src, dst, filter);
self.target
.0
.make_current(&self.renderer.gl, &self.renderer.egl)?;
res.map(|_| ())
res
}
}

View file

@ -597,7 +597,7 @@ impl<'buffer> BlitFrame<GlesTarget<'buffer>> for GlowFrame<'_, 'buffer> {
src: Rectangle<i32, Physical>,
dst: Rectangle<i32, Physical>,
filter: TextureFilter,
) -> Result<(), Self::Error> {
) -> Result<sync::SyncPoint, Self::Error> {
self.frame.as_mut().unwrap().blit_to(to, src, dst, filter)
}
@ -607,7 +607,7 @@ impl<'buffer> BlitFrame<GlesTarget<'buffer>> for GlowFrame<'_, 'buffer> {
src: Rectangle<i32, Physical>,
dst: Rectangle<i32, Physical>,
filter: TextureFilter,
) -> Result<(), Self::Error> {
) -> Result<sync::SyncPoint, Self::Error> {
self.frame.as_mut().unwrap().blit_from(from, src, dst, filter)
}
}

View file

@ -843,7 +843,7 @@ where
src: Rectangle<i32, Physical>,
dst: Rectangle<i32, Physical>,
filter: TextureFilter,
) -> Result<(), Self::Error>;
) -> Result<SyncPoint, Self::Error>;
/// Copies the contents of the provided framebuffer to `dst` in the bound framebuffer,
/// applying `filter` if necessary.
@ -864,7 +864,7 @@ where
src: Rectangle<i32, Physical>,
dst: Rectangle<i32, Physical>,
filter: TextureFilter,
) -> Result<(), Self::Error>;
) -> Result<SyncPoint, Self::Error>;
}
#[cfg(feature = "wayland_frontend")]

View file

@ -3052,7 +3052,7 @@ where
src: Rectangle<i32, Physical>,
dst: Rectangle<i32, Physical>,
filter: TextureFilter,
) -> Result<(), Self::Error> {
) -> Result<SyncPoint, Self::Error> {
self.flush_frame()?;
if let Some(target) = self.target.as_mut() {
let MultiFramebufferInternal::Target(to_fb) = &mut to.0 else {
@ -3063,8 +3063,7 @@ where
.renderer_mut()
.blit(target.framebuffer, to_fb, src, dst, filter)
.map_err(Error::Target)?;
target.device.renderer_mut().wait(&sync).map_err(Error::Target)?;
Ok(())
Ok(sync)
} else {
let MultiFramebufferInternal::Render(to_fb) = &mut to.0 else {
unreachable!()
@ -3092,7 +3091,7 @@ where
src: Rectangle<i32, Physical>,
dst: Rectangle<i32, Physical>,
filter: TextureFilter,
) -> Result<(), Self::Error> {
) -> Result<SyncPoint, Self::Error> {
self.flush_frame()?;
if let Some(target) = self.target.as_mut() {
let MultiFramebufferInternal::Target(from_fb) = &from.0 else {
@ -3103,8 +3102,7 @@ where
.renderer_mut()
.blit(from_fb, target.framebuffer, src, dst, filter)
.map_err(Error::Target)?;
target.device.renderer_mut().wait(&sync).map_err(Error::Target)?;
Ok(())
Ok(sync)
} else {
let MultiFramebufferInternal::Render(from_fb) = &from.0 else {
unreachable!()