Hello,
I am trying to operate OpenCL 2d image object which is created from OpenGL texture. The image object can be created and acquired successfully. However, it always fails when invoke some operation command . The codes are as follow.
glGenTextures(1,&textureName);
glBindTexture(GL_TEXTURE_2D,textureName);
glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,GL_LINEAR );
glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA8UI,srcImage.Width(),srcImage.Height(),0,GL_RGBA_INTEGER,GL_UNSIGNED_BYTE,NULL);
cl::Image2DGL desImageObj(context,CL_MEM_READ_WRITE,GL_TEXTURE_2D,0, textureName ,&errCode);
if(errCode != CL_SUCCESS){
std::cout<<"OpenCL OpenGL shared image object can not be created, error code:"<<errCode<<std::endl;
}
std::vector<cl::Memory> sharedObjs;
sharedObjs.push_back(desImageObj);
if(queues[0].enqueueAcquireGLObjects(&sharedObjs) != CL_SUCCESS){
std::cout<<"Objects can not be acquired "<<std::endl;
}
...
//origin={0,0,0} region={image width, image height, 1}, rgbaData is RGBA image data
errCode=queues[0].enqueueWriteImage(desImageObj,CL_TRUE,origin,region,0,0,rgbaData);
if(errCode != CL_SUCCESS){
std::cout<<"Writing data into image object failed! "<<errCode<<std::endl;
}
When calling “enqueueWriteImage”, it returned error code “CL_INVALID_VALUE” . I have check all the parameters and can not find the invalid values.
Can someone tell me where is the problem?
My development environment: OpenSUSE 11.2 + GTX260 + Nvidia driver 258.19(OpenCL 1.1 pre-release)
Is it possible the bug of driver ?