C++ clEnqueueWriteImage返回值-5

C++ clEnqueueWriteImage返回值-5,c++,opencl,C++,Opencl,如果我尝试将数据上传到图像缓冲区,函数clEnqueueWriteImage将返回-5。OpenCL规范中没有指定该错误。有什么问题?命令队列、内存对象和数据看起来很棒。阻塞设置为true 我的C++代码看起来像这样: m_NativeImage = clCreateImage2D(_rContext, _MemoryFlag, &m_NativeImageFormat, m_Width, m_Height, 0, NULL, &Error); size_t Origin[]

如果我尝试将数据上传到图像缓冲区,函数
clEnqueueWriteImage
将返回
-5
。OpenCL规范中没有指定该错误。有什么问题?命令队列、内存对象和数据看起来很棒。阻塞设置为
true

<>我的C++代码看起来像这样:

m_NativeImage = clCreateImage2D(_rContext, _MemoryFlag, &m_NativeImageFormat, m_Width, m_Height, 0, NULL, &Error);

size_t Origin[] = {0,0,0};        
size_t Region[] = {m_Width, m_Height, 1}; // Size of object to be transferred

Error = clEnqueueWriteImage(m_NativeCommandQueue, m_NativeImage, _Blocking, Origin, Region, 0, 0, _pData, 0, 0, 0);   

嗯。这是我声明的图像格式的问题。我使用了
CL\u UNORM\u INT8
,但它必须是
CL\u UNORM\u SHORT\u 565
。谢谢你的帮助


注意这一点:

-5表示资源不足,图像的大小,格式,数据是如何定义的?我猜是打包错误。图片是一个546x546BMP文件(874KB)。我将此文件加载到一个未签名的char*数组(_pData为void*)。图片的格式有可能是2的幂吗?