nVidia GPU returns-1000 用于 clEnqueueWriteImage
nVidia GPU returns-1000 for clEnqueueWriteImage
试图找出此调用的问题(和错误代码)。首先要说明这在 AMD 上工作得很好,它只在 nVidia 上有问题。
unsigned char *buffer;
...
cl_int status;
cl::size_t<3> origin;
cl::size_t<3> region;
origin[0]=0;
origin[1]=0;
origin[2]=0;
region[0]=m_width;
region[1]=m_height;
region[2]=1;
status=clEnqueueWriteImage(m_commandQueue, m_image, CL_FALSE, origin, region, 0, 0, buffer, 0, NULL, NULL);
status returns -1000,这不是标准的 openCl 错误代码。与打开设备、上下文和命令队列相关的所有其他功能都成功。上下文与 openGl 互操作,这在 AMD 上也是完全有效的。
为了将来参考,如果图像与 OpenGL 纹理互操作并且在使用 clEnqueueAcquireGLObjects 获取图像之前进行调用,则似乎会发生错误。我后来在使用图像时使用了 acquire,但不是在设置图像之前。 AMD的驱动似乎并不关心这个小细节。
试图找出此调用的问题(和错误代码)。首先要说明这在 AMD 上工作得很好,它只在 nVidia 上有问题。
unsigned char *buffer;
...
cl_int status;
cl::size_t<3> origin;
cl::size_t<3> region;
origin[0]=0;
origin[1]=0;
origin[2]=0;
region[0]=m_width;
region[1]=m_height;
region[2]=1;
status=clEnqueueWriteImage(m_commandQueue, m_image, CL_FALSE, origin, region, 0, 0, buffer, 0, NULL, NULL);
status returns -1000,这不是标准的 openCl 错误代码。与打开设备、上下文和命令队列相关的所有其他功能都成功。上下文与 openGl 互操作,这在 AMD 上也是完全有效的。
为了将来参考,如果图像与 OpenGL 纹理互操作并且在使用 clEnqueueAcquireGLObjects 获取图像之前进行调用,则似乎会发生错误。我后来在使用图像时使用了 acquire,但不是在设置图像之前。 AMD的驱动似乎并不关心这个小细节。