diff --git a/pyopencl/_cffi.py b/pyopencl/_cffi.py index d72c05388f4645998b05b3d3cb35683c162cb669..ec233557ee273ecd812a29f2d8e8e5a18ecef9bd 100644 --- a/pyopencl/_cffi.py +++ b/pyopencl/_cffi.py @@ -112,4 +112,5 @@ def _get_wrapcl_so_name(): _lib = _ffi.dlopen(_get_wrapcl_so_name()) if _lib.pyopencl_have_gl(): + print "GL!" _ffi.cdef(_get_wrap_header("wrap_cl_gl_core.h")) diff --git a/pyopencl/cffi_cl.py b/pyopencl/cffi_cl.py index 1502af600f58d84d84cc5cdba9d5255bd4e8f755..4746b2bb83f52ba51164f48c1fc0d31fd0b644dc 100644 --- a/pyopencl/cffi_cl.py +++ b/pyopencl/cffi_cl.py @@ -830,8 +830,9 @@ def _create_gl_enqueue(what): return _create_instance(Event, ptr_event[0]) return enqueue_gl_objects -enqueue_acquire_gl_objects = _create_gl_enqueue(_lib._enqueue_acquire_gl_objects) -enqueue_release_gl_objects = _create_gl_enqueue(_lib._enqueue_release_gl_objects) +if _lib.pyopencl_have_gl(): + enqueue_acquire_gl_objects = _create_gl_enqueue(_lib._enqueue_acquire_gl_objects) + enqueue_release_gl_objects = _create_gl_enqueue(_lib._enqueue_release_gl_objects) # }}} diff --git a/src/c_wrapper/wrap_cl.cpp b/src/c_wrapper/wrap_cl.cpp index ba2ba1207dad8314feda53637c7ebe4f46a3a3cd..02c2526ef1526c036b8f5d536f1ae42682390661 100644 --- a/src/c_wrapper/wrap_cl.cpp +++ b/src/c_wrapper/wrap_cl.cpp @@ -305,6 +305,16 @@ run_python_gc(); \ // {{{ more odds and ends +#ifdef HAVE_GL +#define GL_SWITCHCLASS(OPERATION) \ + case ::CLASS_GL_BUFFER: OPERATION(GL_BUFFER, gl_buffer); break; \ + case ::CLASS_GL_RENDERBUFFER: OPERATION(GL_RENDERBUFFER, gl_renderbuffer); break; +#else +#define GL_SWITCHCLASS(OPERATION) \ + case ::CLASS_GL_BUFFER: \ + case ::CLASS_GL_RENDERBUFFER: +#endif + #define SWITCHCLASS(OPERATION) \ switch(class_) { \ case ::CLASS_PLATFORM: OPERATION(PLATFORM, platform); break; \ @@ -315,10 +325,9 @@ run_python_gc(); \ case ::CLASS_BUFFER: OPERATION(BUFFER, buffer); break; \ case ::CLASS_PROGRAM: OPERATION(PROGRAM, program); break; \ case ::CLASS_EVENT: OPERATION(EVENT, event); break; \ - case ::CLASS_GL_BUFFER: OPERATION(GL_BUFFER, gl_buffer); break; \ - case ::CLASS_GL_RENDERBUFFER: OPERATION(GL_RENDERBUFFER, gl_renderbuffer); break; \ case ::CLASS_IMAGE: OPERATION(IMAGE, image); break; \ case ::CLASS_SAMPLER: OPERATION(SAMPLER, sampler); break; \ + GL_SWITCHCLASS(OPERATION) \ default: throw pyopencl::error("unknown class", CL_INVALID_VALUE); \ } @@ -3351,6 +3360,7 @@ int pyopencl_have_gl() { } +#ifdef HAVE_GL error *_create_from_gl_buffer( void **ptr, void *ptr_context, cl_mem_flags flags, GLuint bufobj) { @@ -3414,6 +3424,7 @@ error *_create_from_gl_renderbuffer( return 0; } +#endif /* HAVE_GL */ // }}}