diff --git a/pyopencl/c_wrapper/wrap_cl_core.h b/pyopencl/c_wrapper/wrap_cl_core.h index 9dc2921b608d0e0f418c11148d2348119d0e4f52..1445cb7ee713409f8757c6323d031d690070b2b2 100644 --- a/pyopencl/c_wrapper/wrap_cl_core.h +++ b/pyopencl/c_wrapper/wrap_cl_core.h @@ -140,6 +140,7 @@ type_t image__get_fill_type(clobj_t img); error *event__get_profiling_info(clobj_t event, cl_profiling_info param, generic_info *out); error *event__wait(clobj_t event); +void event__set_support_cb(clobj_t _evt, int support); error *event__set_callback(clobj_t _evt, cl_int type, void *pyobj); error *wait_for_events(const clobj_t *_wait_for, uint32_t num_wait_for); // Nanny Event diff --git a/pyopencl/cffi_cl.py b/pyopencl/cffi_cl.py index dbc1ee8872820090cfdb08c11fe8d579eed78631..aaeb9ebe9c492c2990c28b9a7183230db58433ac 100644 --- a/pyopencl/cffi_cl.py +++ b/pyopencl/cffi_cl.py @@ -883,6 +883,17 @@ class Kernel(_Common): class Event(_Common): _id = 'event' + @classmethod + def _create(cls, ptr): + self = _Common._create.__func__(cls, ptr) + try: + if (self.context._get_cl_version() >= (1, 1) and + get_cl_header_version() >= (1, 1)): + _lib.event__set_support_cb(ptr, 1); + except: + pass + return self + def __init__(self): pass diff --git a/src/c_wrapper/event.cpp b/src/c_wrapper/event.cpp index e53bb0a51888a46d7f9fa439bea12d118c6b302f..7dd2c3d76273c451a2935ab67153b95820b99abe 100644 --- a/src/c_wrapper/event.cpp +++ b/src/c_wrapper/event.cpp @@ -198,6 +198,13 @@ event__wait(clobj_t evt) } #if PYOPENCL_CL_VERSION >= 0x1010 +void +event__set_support_cb(clobj_t _evt, int support) +{ + auto evt = static_cast<event*>(_evt); + evt->support_cb = support; +} + error* event__set_callback(clobj_t _evt, cl_int type, void *pyobj) {