One comment. -----Original Message----- From: Beignet [mailto:[email protected]] On Behalf Of [email protected] Sent: Tuesday, April 29, 2014 4:27 AM To: [email protected] Cc: Luo, Xionghu Subject: [Beignet] [PATCH 2/2] add [opencl 1.2] API clEnqueueMarkerWithWaitList.
From: Luo <[email protected]> --- src/cl_api.c | 25 ++++++++++++++++++++++--- src/cl_event.c | 11 ++++++++++- src/cl_event.h | 2 +- 3 files changed, 33 insertions(+), 5 deletions(-) diff --git a/src/cl_api.c b/src/cl_api.c index 1543ff4..b5c42e7 100644 --- a/src/cl_api.c +++ b/src/cl_api.c @@ -2623,8 +2623,8 @@ error: } cl_int -clEnqueueMarker(cl_command_queue command_queue, - cl_event * event) +clEnqueueMarker(cl_command_queue command_queue, + cl_event *event) { cl_int err = CL_SUCCESS; CHECK_QUEUE(command_queue); @@ -2633,7 +2633,26 @@ clEnqueueMarker(cl_command_queue command_queue, goto error; } - cl_event_marker(command_queue, event); + cl_event_marker_with_wait_list(command_queue, 0, NULL, event); +error: + return err; +} + +cl_int +clEnqueueMarkerWithWaitList(cl_command_queue command_queue, + cl_uint num_events_in_wait_list, + const cl_event *event_wait_list, + cl_event *event) +{ + cl_int err = CL_SUCCESS; + CHECK_QUEUE(command_queue); + if(event == NULL) { + err = CL_INVALID_VALUE; + goto error; + } + TRY(cl_event_check_waitlist, num_events_in_wait_list, +event_wait_list, event, command_queue->ctx); + + cl_event_marker_with_wait_list(command_queue, + num_events_in_wait_list, event_wait_list, event); error: return err; } diff --git a/src/cl_event.c b/src/cl_event.c index 85e4041..46006ce 100644 --- a/src/cl_event.c +++ b/src/cl_event.c @@ -486,14 +486,23 @@ void cl_event_update_status(cl_event event) cl_event_set_status(event, CL_COMPLETE); } -cl_int cl_event_marker(cl_command_queue queue, cl_event* event) +cl_int cl_event_marker_with_wait_list(cl_command_queue queue, + cl_uint num_events_in_wait_list, + const cl_event *event_wait_list, + cl_event* event) { enqueue_data data; + cl_uint i = 0; *event = cl_event_new(queue->ctx, queue, CL_COMMAND_MARKER, CL_TRUE); if(event == NULL) return CL_OUT_OF_HOST_MEMORY; + //insert the input events to queue + for(i=0; i<num_events_in_wait_list; i++) { + cl_command_queue_insert_event(queue, event_wait_list[i]); } >>>>>>>Only insert user event to queue. + //if wait_events_num>0, the marker event need wait queue->wait_events if(queue->wait_events_num > 0) { data.type = EnqueueMarker; diff --git a/src/cl_event.h b/src/cl_event.h index 3c61110..5a78a8d 100644 --- a/src/cl_event.h +++ b/src/cl_event.h @@ -90,7 +90,7 @@ void cl_event_set_status(cl_event, cl_int); /* Check and update event status */ void cl_event_update_status(cl_event); /* Create the marker event */ -cl_int cl_event_marker(cl_command_queue, cl_event*); +cl_int cl_event_marker_with_wait_list(cl_command_queue, cl_uint, const +cl_event *, cl_event*); /* Do the event profiling */ cl_int cl_event_get_timestamp(cl_event event, cl_profiling_info param_name); #endif /* __CL_EVENT_H__ */ -- 1.8.1.2 _______________________________________________ Beignet mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/beignet _______________________________________________ Beignet mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/beignet
