From 84314472da091eaed56eef4353ffb35eecab2d15 Mon Sep 17 00:00:00 2001 From: Andreas Kloeckner <inform@tiker.net> Date: Sat, 19 Jun 2010 14:10:49 -0400 Subject: [PATCH] Fix OpenGL interop code. (patch by Paolo Simone Gasparello) --- src/wrapper/wrap_cl.cpp | 4 ++-- src/wrapper/wrap_cl.hpp | 20 ++++++++++++-------- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/wrapper/wrap_cl.cpp b/src/wrapper/wrap_cl.cpp index 417a383e..03e3aad0 100644 --- a/src/wrapper/wrap_cl.cpp +++ b/src/wrapper/wrap_cl.cpp @@ -875,7 +875,7 @@ BOOST_PYTHON_MODULE(_cl) "GLBuffer", py::no_init) .def("__init__", make_constructor(create_from_gl_buffer, py::default_call_policies(), - (py::args("context", "flags" "bufobj")))) + (py::args("context", "flags", "bufobj")))) .def("get_gl_object_info", get_gl_object_info) ; } @@ -886,7 +886,7 @@ BOOST_PYTHON_MODULE(_cl) "GLRenderBuffer", py::no_init) .def("__init__", make_constructor(create_from_gl_renderbuffer, py::default_call_policies(), - (py::args("context", "flags" "bufobj")))) + (py::args("context", "flags", "bufobj")))) .def("get_gl_object_info", get_gl_object_info) ; } diff --git a/src/wrapper/wrap_cl.hpp b/src/wrapper/wrap_cl.hpp index 3fbcfd96..8113fe96 100644 --- a/src/wrapper/wrap_cl.hpp +++ b/src/wrapper/wrap_cl.hpp @@ -679,20 +679,24 @@ namespace pyopencl py::extract<cl_context_properties>(prop_tuple[0]); props.push_back(prop); - if (prop == CL_CONTEXT_PLATFORM + if (prop == CL_CONTEXT_PLATFORM) + { + py::extract<const platform &> value(prop_tuple[1]); + props.push_back( + reinterpret_cast<cl_context_properties>(value().data())); + } #if defined(cl_khr_gl_sharing) && (cl_khr_gl_sharing >= 1) - || prop == CL_GL_CONTEXT_KHR + else if (prop == CL_GL_CONTEXT_KHR || prop == CL_EGL_DISPLAY_KHR || prop == CL_GLX_DISPLAY_KHR || prop == CL_WGL_HDC_KHR || prop == CL_CGL_SHAREGROUP_KHR + ) + { + py::extract<cl_context_properties> value(prop_tuple[1]); + props.push_back(value); + } #endif - ) - { - py::extract<const platform &> value(prop_tuple[1]); - props.push_back( - reinterpret_cast<cl_context_properties>(value().data())); - } else throw error("Context", CL_INVALID_VALUE, "invalid context property"); } -- GitLab