From 6166a19fdaf0c5a16b67116679761c454fd5ac89 Mon Sep 17 00:00:00 2001 From: Andreas Kloeckner Date: Sat, 29 Mar 2014 18:23:20 -0500 Subject: [PATCH] Fix build without GL interop --- pyopencl/_cffi.py | 1 + pyopencl/cffi_cl.py | 5 +++-- src/c_wrapper/wrap_cl.cpp | 15 +++++++++++++-- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/pyopencl/_cffi.py b/pyopencl/_cffi.py index d72c0538..ec233557 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 1502af60..4746b2bb 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 ba2ba120..02c2526e 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 */ // }}} -- GitLab