From 70b9c88807e98c821acfe1bed75d3ecf4cd5dd07 Mon Sep 17 00:00:00 2001 From: Karol Herbst Date: Wed, 16 Jul 2025 10:21:26 +0200 Subject: [PATCH] rusticl/mesa: add return status to PipeFence::wait Part-of: --- src/gallium/frontends/rusticl/core/context.rs | 8 ++++++-- src/gallium/frontends/rusticl/mesa/pipe/fence.rs | 7 +++++-- src/gallium/frontends/rusticl/mesa/pipe/screen.rs | 4 ++-- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/gallium/frontends/rusticl/core/context.rs b/src/gallium/frontends/rusticl/core/context.rs index 7f58298fc45..f57a3b09620 100644 --- a/src/gallium/frontends/rusticl/core/context.rs +++ b/src/gallium/frontends/rusticl/core/context.rs @@ -183,7 +183,9 @@ impl Context { d.helper_ctx() .exec(|ctx| ctx.buffer_subdata(r, 0, user_ptr, size.try_into().unwrap())) }) - .for_each(|f| f.wait()); + .for_each(|f| { + f.wait(); + }); } Ok(res) @@ -255,7 +257,9 @@ impl Context { d.helper_ctx() .exec(|ctx| ctx.texture_subdata(r, &bx, user_ptr, stride, layer_stride)) }) - .for_each(|f| f.wait()); + .for_each(|f| { + f.wait(); + }); } Ok(res) diff --git a/src/gallium/frontends/rusticl/mesa/pipe/fence.rs b/src/gallium/frontends/rusticl/mesa/pipe/fence.rs index 7aeb1b7bea0..5c063986d34 100644 --- a/src/gallium/frontends/rusticl/mesa/pipe/fence.rs +++ b/src/gallium/frontends/rusticl/mesa/pipe/fence.rs @@ -30,8 +30,11 @@ impl PipeFence { } } - pub fn wait(&self) { - self.screen.fence_finish(self.fence); + /// Returns false on errors. + /// + /// TODO: should be a Result. + pub fn wait(&self) -> bool { + self.screen.fence_finish(self.fence) } } diff --git a/src/gallium/frontends/rusticl/mesa/pipe/screen.rs b/src/gallium/frontends/rusticl/mesa/pipe/screen.rs index f6315dea08d..eed41cc3897 100644 --- a/src/gallium/frontends/rusticl/mesa/pipe/screen.rs +++ b/src/gallium/frontends/rusticl/mesa/pipe/screen.rs @@ -445,14 +445,14 @@ impl PipeScreen { } } - pub(super) fn fence_finish(&self, fence: *mut pipe_fence_handle) { + pub(super) fn fence_finish(&self, fence: *mut pipe_fence_handle) -> bool { unsafe { self.screen().fence_finish.unwrap()( self.screen.as_ptr(), ptr::null_mut(), fence, OS_TIMEOUT_INFINITE as u64, - ); + ) } }