From f6b844e239c780aac439c0e877af3e14a5493484 Mon Sep 17 00:00:00 2001 From: Karol Herbst Date: Mon, 21 Jul 2025 18:10:49 +0200 Subject: [PATCH] rusticl/gl: only flush objects on import if we get a valid fd If no context is current we might not get anything to wait on. Cc: mesa-stable Part-of: --- src/gallium/frontends/rusticl/core/gl.rs | 30 ++++++++++++++---------- 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/src/gallium/frontends/rusticl/core/gl.rs b/src/gallium/frontends/rusticl/core/gl.rs index 5c632a34430..f06e8394366 100644 --- a/src/gallium/frontends/rusticl/core/gl.rs +++ b/src/gallium/frontends/rusticl/core/gl.rs @@ -255,16 +255,19 @@ impl GLCtxManager { &mut export_in, &mut flush_out, ); - // TODO: use fence_server_sync in ctx inside the queue thread - let fence_fd = FenceFd { fd }; - cl_ctx.devs.iter().for_each(|dev| { - let fence = dev.helper_ctx().import_fence(&fence_fd); - fence.wait(); - }); if err_flush != 0 { err_flush } else { + if fd != -1 { + // TODO: use fence_server_sync in ctx inside the queue thread + let fence_fd = FenceFd { fd }; + cl_ctx.devs.iter().for_each(|dev| { + let fence = dev.helper_ctx().import_fence(&fence_fd); + fence.wait(); + }); + } + egl_export_object_func( disp.cast(), ctx.cast(), @@ -289,16 +292,19 @@ impl GLCtxManager { &mut export_in, &mut flush_out, ); - // TODO: use fence_server_sync in ctx inside the queue thread - let fence_fd = FenceFd { fd }; - cl_ctx.devs.iter().for_each(|dev| { - let fence = dev.helper_ctx().import_fence(&fence_fd); - fence.wait(); - }); if err_flush != 0 { err_flush } else { + if fd != -1 { + // TODO: use fence_server_sync in ctx inside the queue thread + let fence_fd = FenceFd { fd }; + cl_ctx.devs.iter().for_each(|dev| { + let fence = dev.helper_ctx().import_fence(&fence_fd); + fence.wait(); + }); + } + glx_export_object_func( disp.cast(), ctx.cast(),