OpenCL enqueueWriteImage 在 C++ 包装器中但在 C 函数中没有 const void* ptr
OpenCL enqueueWriteImage no const void* ptr in C++ wrapper but in C function
在 cl2.hpp
中,enqueueWriteImage 采用 void* ptr
,但调用 C 函数 clEnqueueWriteImage
,后者采用 const void* ptr
。这是为什么?
cl_int enqueueWriteImage(
const Image& image,
cl_bool blocking,
const array<size_type, 3>& origin,
const array<size_type, 3>& region,
size_type row_pitch,
size_type slice_pitch,
void* ptr,
const vector<Event>* events = NULL,
Event* event = NULL) const
{
cl_event tmp;
cl_int err = detail::errHandler(
::clEnqueueWriteImage(//... here the const void* ptr appears
这是故意的还是打字错误?因为它只调用一个接受 const void* ptr
的函数,所以它也可以是 const。
你是对的;这是 OpenCL C++ 绑定中的错误。还有一些其他 enqueueWrite*
函数也有同样的问题。我已经对 Khronos GitHub repository for these headers 进行了修复 - 它将包含在下一个版本中。
在 cl2.hpp
中,enqueueWriteImage 采用 void* ptr
,但调用 C 函数 clEnqueueWriteImage
,后者采用 const void* ptr
。这是为什么?
cl_int enqueueWriteImage(
const Image& image,
cl_bool blocking,
const array<size_type, 3>& origin,
const array<size_type, 3>& region,
size_type row_pitch,
size_type slice_pitch,
void* ptr,
const vector<Event>* events = NULL,
Event* event = NULL) const
{
cl_event tmp;
cl_int err = detail::errHandler(
::clEnqueueWriteImage(//... here the const void* ptr appears
这是故意的还是打字错误?因为它只调用一个接受 const void* ptr
的函数,所以它也可以是 const。
你是对的;这是 OpenCL C++ 绑定中的错误。还有一些其他 enqueueWrite*
函数也有同样的问题。我已经对 Khronos GitHub repository for these headers 进行了修复 - 它将包含在下一个版本中。