From 883b218effe7dccf705d525bee26b49f494dbea5 Mon Sep 17 00:00:00 2001 From: Karol Herbst Date: Wed, 16 Mar 2022 16:19:48 +0100 Subject: [PATCH] rusticl/queue: fix clReleaseCommandQueue we have to flush the queue on every call Signed-off-by: Karol Herbst Acked-by: Alyssa Rosenzweig Part-of: --- src/gallium/frontends/rusticl/api/icd.rs | 2 +- src/gallium/frontends/rusticl/api/queue.rs | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/gallium/frontends/rusticl/api/icd.rs b/src/gallium/frontends/rusticl/api/icd.rs index 2c38be30217..3c362efadda 100644 --- a/src/gallium/frontends/rusticl/api/icd.rs +++ b/src/gallium/frontends/rusticl/api/icd.rs @@ -534,7 +534,7 @@ extern "C" fn cl_retain_command_queue(command_queue: cl_command_queue) -> cl_int } extern "C" fn cl_release_command_queue(command_queue: cl_command_queue) -> cl_int { - match_err!(command_queue.release()) + match_err!(release_command_queue(command_queue)) } extern "C" fn cl_get_command_queue_info( diff --git a/src/gallium/frontends/rusticl/api/queue.rs b/src/gallium/frontends/rusticl/api/queue.rs index aaabb30a3c4..ee2f09c7aa6 100644 --- a/src/gallium/frontends/rusticl/api/queue.rs +++ b/src/gallium/frontends/rusticl/api/queue.rs @@ -79,3 +79,11 @@ pub fn finish_queue(command_queue: cl_command_queue) -> CLResult<()> { // CL_INVALID_COMMAND_QUEUE if command_queue is not a valid host command-queue. command_queue.get_ref()?.flush(true) } + +pub fn release_command_queue(command_queue: cl_command_queue) -> CLResult<()> { + // clReleaseCommandQueue performs an implicit flush to issue any previously queued OpenCL + // commands in command_queue. + flush_queue(command_queue)?; + command_queue.release()?; + Ok(()) +}