[Beignet] [PATCH] Fix two bugs about command queue destroy.
Yang, Rong R
rong.r.yang at intel.com
Wed Jan 11 08:48:36 UTC 2017
LGTM, pushed.
> -----Original Message-----
> From: Beignet [mailto:beignet-bounces at lists.freedesktop.org] On Behalf Of
> junyan.he at inbox.com
> Sent: Wednesday, January 11, 2017 16:36
> To: beignet at lists.freedesktop.org
> Cc: He, Junyan <junyan.he at intel.com>
> Subject: [Beignet] [PATCH] Fix two bugs about command queue destroy.
>
> From: Junyan He <junyan.he at intel.com>
>
> 1. Call finish before we destroy the command queue.
> We should make sure all the commands in the queue are
> finished before we really destroy the command_queue.
> If not, may cause event status error. We leave the queue's
> life time to user and do not ref the queue when create
> event.
> 2. Loose the assert condition when notify queue.
> We have the case when ref of the queue is 0 but still need
> to notify.
>
> Signed-off-by: Junyan He <junyan.he at intel.com>
> ---
> src/cl_command_queue.c | 3 +++
> src/cl_command_queue_enqueue.c | 2 +-
> 2 files changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/src/cl_command_queue.c b/src/cl_command_queue.c index
> aa371d0..b855ff6 100644
> --- a/src/cl_command_queue.c
> +++ b/src/cl_command_queue.c
> @@ -81,6 +81,9 @@ cl_command_queue_delete(cl_command_queue
> queue)
> if (CL_OBJECT_DEC_REF(queue) > 1)
> return;
>
> + /* Before we destroy the queue, we should make sure all
> + the commands in the queue are finished. */
> + cl_command_queue_wait_finish(queue);
> cl_context_remove_queue(queue->ctx, queue);
>
> cl_command_queue_destroy_enqueue(queue);
> diff --git a/src/cl_command_queue_enqueue.c
> b/src/cl_command_queue_enqueue.c index 91fabf9..44a0761 100644
> --- a/src/cl_command_queue_enqueue.c
> +++ b/src/cl_command_queue_enqueue.c
> @@ -122,7 +122,7 @@ cl_command_queue_notify(cl_command_queue
> queue)
> return;
> }
>
> - assert(CL_OBJECT_IS_COMMAND_QUEUE(queue));
> + assert(queue && (((cl_base_object)queue)->magic ==
> + CL_OBJECT_COMMAND_QUEUE_MAGIC));
> CL_OBJECT_LOCK(queue);
> queue->worker.cookie++;
> CL_OBJECT_NOTIFY_COND(queue);
> --
> 2.7.4
>
> _______________________________________________
> Beignet mailing list
> Beignet at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/beignet
More information about the Beignet
mailing list