diff --git a/TODOs b/TODOs index dec695e761bd6c566e4e6489890a3c47a0751783..42528d35e14cf2c887b4eaa1db6c2e20dc1a795e 100644 --- a/TODOs +++ b/TODOs @@ -6,7 +6,6 @@ - CommandQueue.set_property - ?LocalMemory -- get_apple_cgl_share_group - GLBuffer - GLRenderBuffer - GLTexture diff --git a/pyopencl/c_wrapper/wrap_cl_gl_core.h b/pyopencl/c_wrapper/wrap_cl_gl_core.h index bacfdda5b1dd33d235edfaf64f08655314e5139f..2a3812344909bfcfe19f330bea3edb421ee4b5e4 100644 --- a/pyopencl/c_wrapper/wrap_cl_gl_core.h +++ b/pyopencl/c_wrapper/wrap_cl_gl_core.h @@ -10,3 +10,4 @@ error *enqueue_acquire_gl_objects( error *enqueue_release_gl_objects( clobj_t *event, clobj_t queue, const clobj_t *mem_objects, uint32_t num_mem_objects, const clobj_t *wait_for, uint32_t num_wait_for); +cl_context_properties get_apple_cgl_share_group(); diff --git a/pyopencl/cffi_cl.py b/pyopencl/cffi_cl.py index 8438355c1fc727e40876f4e89b15d94c8a9a05b4..0f5023256fff212b52e50bb7cfd94d669f59c121 100644 --- a/pyopencl/cffi_cl.py +++ b/pyopencl/cffi_cl.py @@ -1468,6 +1468,10 @@ if _lib.have_gl(): _lib.enqueue_acquire_gl_objects) enqueue_release_gl_objects = _create_gl_enqueue( _lib.enqueue_release_gl_objects) + try: + get_apple_cgl_share_group = _lib.get_apple_cgl_share_group + except AttributeError: + pass # }}} diff --git a/src/c_wrapper/gl_obj.cpp b/src/c_wrapper/gl_obj.cpp index 7358011b52a0364bd30a756b8ce0e81bd38a0624..6864f0d54cffeecca3909e3102770e9067513d8d 100644 --- a/src/c_wrapper/gl_obj.cpp +++ b/src/c_wrapper/gl_obj.cpp @@ -231,3 +231,14 @@ have_gl() return 0; #endif } + +#ifdef __APPLE__ +cl_context_properties +get_apple_cgl_share_group() +{ + CGLContextObj kCGLContext = CGLGetCurrentContext(); + CGLShareGroupObj kCGLShareGroup = CGLGetShareGroup(kCGLContext); + + return (cl_context_properties)kCGLShareGroup; +} +#endif /* __APPLE__ */ diff --git a/src/c_wrapper/gl_obj.h b/src/c_wrapper/gl_obj.h index f14637a54da3325e91ae600e98c96c5b310b298b..c82aa9b176816cacae0f4cdf1aa294f4f4629b8a 100644 --- a/src/c_wrapper/gl_obj.h +++ b/src/c_wrapper/gl_obj.h @@ -9,17 +9,6 @@ namespace pyopencl { // {{{ gl interop -#ifdef __APPLE__ -static PYOPENCL_INLINE cl_context_properties -get_apple_cgl_share_group() -{ - CGLContextObj kCGLContext = CGLGetCurrentContext(); - CGLShareGroupObj kCGLShareGroup = CGLGetShareGroup(kCGLContext); - - return (cl_context_properties)kCGLShareGroup; -} -#endif /* __APPLE__ */ - class gl_buffer : public memory_object { public: PYOPENCL_DEF_CL_CLASS(GL_BUFFER);