diff --git a/src/c_wrapper/buffer.cpp b/src/c_wrapper/buffer.cpp index 6b777fab411c80b74e671159fd6d0012c480af95..f72a787d675298c79fd158b09375d68fc78ab10f 100644 --- a/src/c_wrapper/buffer.cpp +++ b/src/c_wrapper/buffer.cpp @@ -5,6 +5,12 @@ namespace pyopencl { +PYOPENCL_USE_RESULT static PYOPENCL_INLINE buffer* +new_buffer(cl_mem mem) +{ + return pyopencl_convert_obj(buffer, clReleaseMemObject, mem); +} + #if PYOPENCL_CL_VERSION >= 0x1010 PYOPENCL_USE_RESULT buffer* buffer::get_sub_region(size_t origin, size_t size, cl_mem_flags flags) const @@ -64,8 +70,7 @@ create_buffer(clobj_t *buffer, clobj_t _ctx, cl_mem_flags flags, return pyopencl_call_guarded(clCreateBuffer, ctx, flags, size, hostbuf); }); - *buffer = new_buffer(mem, (flags & CL_MEM_USE_HOST_PTR ? - hostbuf : nullptr)); + *buffer = new_buffer(mem); }); } diff --git a/src/c_wrapper/buffer.h b/src/c_wrapper/buffer.h index d76bbdcd5531c06938130d8cc5397cb0b052ec95..4681b192337423ce3540a3ec7bcfe4b3f808d431 100644 --- a/src/c_wrapper/buffer.h +++ b/src/c_wrapper/buffer.h @@ -12,8 +12,8 @@ class buffer : public memory_object { public: PYOPENCL_DEF_CL_CLASS(BUFFER); PYOPENCL_INLINE - buffer(cl_mem mem, bool retain, void *hostbuf=0) - : memory_object(mem, retain, hostbuf) + buffer(cl_mem mem, bool retain) + : memory_object(mem, retain) {} #if PYOPENCL_CL_VERSION >= 0x1010 @@ -21,11 +21,6 @@ public: cl_mem_flags flags) const; #endif }; -PYOPENCL_USE_RESULT static PYOPENCL_INLINE buffer* -new_buffer(cl_mem mem, void *buff=0) -{ - return pyopencl_convert_obj(buffer, clReleaseMemObject, mem, buff); -} // }}} diff --git a/src/c_wrapper/gl_obj.h b/src/c_wrapper/gl_obj.h index 09ebc50785753f94c3e6b5d9264258af56363955..3ff225db70fa4d53679947bd292cd54ab9d018b3 100644 --- a/src/c_wrapper/gl_obj.h +++ b/src/c_wrapper/gl_obj.h @@ -24,8 +24,8 @@ class gl_buffer : public memory_object { public: PYOPENCL_DEF_CL_CLASS(GL_BUFFER); PYOPENCL_INLINE - gl_buffer(cl_mem mem, bool retain, void *hostbuf=0) - : memory_object(mem, retain, hostbuf) + gl_buffer(cl_mem mem, bool retain) + : memory_object(mem, retain) {} }; @@ -33,16 +33,16 @@ class gl_renderbuffer : public memory_object { public: PYOPENCL_DEF_CL_CLASS(GL_RENDERBUFFER); PYOPENCL_INLINE - gl_renderbuffer(cl_mem mem, bool retain, void *hostbuf=0) - : memory_object(mem, retain, hostbuf) + gl_renderbuffer(cl_mem mem, bool retain) + : memory_object(mem, retain) {} }; class gl_texture : public image { public: PYOPENCL_INLINE - gl_texture(cl_mem mem, bool retain, void *hostbuf=0) - : image(mem, retain, hostbuf) + gl_texture(cl_mem mem, bool retain) + : image(mem, retain) {} PYOPENCL_USE_RESULT generic_info get_gl_texture_info(cl_gl_texture_info param_name) const; diff --git a/src/c_wrapper/image.cpp b/src/c_wrapper/image.cpp index c6100e09cab6c799d2c30554c22cb799de47a91a..1ac7c3d578390914beb513dd127845f8c1fae053 100644 --- a/src/c_wrapper/image.cpp +++ b/src/c_wrapper/image.cpp @@ -5,6 +5,12 @@ namespace pyopencl { +PYOPENCL_USE_RESULT static PYOPENCL_INLINE image* +new_image(cl_mem mem, const cl_image_format *fmt) +{ + return pyopencl_convert_obj(image, clReleaseMemObject, mem, fmt); +} + generic_info image::get_image_info(cl_image_info param) const { @@ -119,8 +125,7 @@ create_image_2d(clobj_t *img, clobj_t _ctx, cl_mem_flags flags, clCreateImage2D, ctx, flags, fmt, width, height, pitch, buffer); }); - *img = new_image(mem, (flags & CL_MEM_USE_HOST_PTR ? - buffer : nullptr), fmt); + *img = new_image(mem, fmt); }); } @@ -136,8 +141,7 @@ create_image_3d(clobj_t *img, clobj_t _ctx, cl_mem_flags flags, clCreateImage3D, ctx, flags, fmt, width, height, depth, pitch_x, pitch_y, buffer); }); - *img = new_image(mem, (flags & CL_MEM_USE_HOST_PTR ? - buffer : nullptr), fmt); + *img = new_image(mem, fmt); }); } @@ -151,8 +155,7 @@ create_image_from_desc(clobj_t *img, clobj_t _ctx, cl_mem_flags flags, return c_handle_error([&] { auto mem = pyopencl_call_guarded(clCreateImage, ctx, flags, fmt, desc, buffer); - *img = new_image(mem, (flags & CL_MEM_USE_HOST_PTR ? - buffer : nullptr), fmt); + *img = new_image(mem, fmt); }); } diff --git a/src/c_wrapper/image.h b/src/c_wrapper/image.h index ee96d58872890bf2d78f86b2c7335ab9832c944d..74faa71dc4da5d3b6e1b7cc2aef39cfac6e671bd 100644 --- a/src/c_wrapper/image.h +++ b/src/c_wrapper/image.h @@ -14,9 +14,8 @@ private: public: PYOPENCL_DEF_CL_CLASS(IMAGE); PYOPENCL_INLINE - image(cl_mem mem, bool retain, void *hostbuf=0, - const cl_image_format *fmt=0) - : memory_object(mem, retain, hostbuf) + image(cl_mem mem, bool retain, const cl_image_format *fmt=0) + : memory_object(mem, retain) { if (fmt) { m_format = *fmt; @@ -43,11 +42,6 @@ public: } } }; -PYOPENCL_USE_RESULT static PYOPENCL_INLINE image* -new_image(cl_mem mem, void *buff, const cl_image_format *fmt) -{ - return pyopencl_convert_obj(image, clReleaseMemObject, mem, buff, fmt); -} // }}} diff --git a/src/c_wrapper/memory_object.h b/src/c_wrapper/memory_object.h index 83248b669d87581494b9a082c951372ccbf551eb..07f17d583e7d86428abd595f82f378a406040296 100644 --- a/src/c_wrapper/memory_object.h +++ b/src/c_wrapper/memory_object.h @@ -13,16 +13,14 @@ extern template class clobj; class memory_object : public clobj { private: mutable volatile std::atomic_bool m_valid; - void *m_hostbuf; public: PYOPENCL_INLINE - memory_object(cl_mem mem, bool retain, void *hostbuf=0) + memory_object(cl_mem mem, bool retain) : clobj(mem), m_valid(true) { if (retain) { pyopencl_call_guarded(clRetainMemObject, this); } - m_hostbuf = hostbuf; } PYOPENCL_INLINE memory_object(const memory_object &mem) @@ -40,12 +38,6 @@ public: pyopencl_call_guarded(clReleaseMemObject, this); } #if 0 - PYOPENCL_USE_RESULT PYOPENCL_INLINE void* - hostbuf() const - { - // TODO: use this? - return m_hostbuf; - } PYOPENCL_USE_RESULT size_t size() const {