I’m running CUDA 5.5 on OSX 10.9. If I init glut with GLUT_3_2_CORE_PROFILE, all calls to cudaGraphicsGLRegisterImage fail with cudaErrorInvalidValue.
ie: this fails:
glutInitDisplayMode(GLUT_3_2_CORE_PROFILE | GLUT_DOUBLE | GLUT_RGBA);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA32F, mWidth, mHeight, 0, GL_RGBA, GL_FLOAT, 0);
cudaGraphicsGLRegisterImage(&gHeightFieldCUDAResource, mTextureID, GL_TEXTURE_2D, cudaGraphicsMapFlagsNone);
ie: and this doesn’t:
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA32F, mWidth, mHeight, 0, GL_RGBA, GL_FLOAT, 0);
cudaGraphicsGLRegisterImage(&gHeightFieldCUDAResource, mTextureID, GL_TEXTURE_2D, cudaGraphicsMapFlagsNone);
Any ideas?
Thanks,
Jp
A simple example (just in case):
Works when GLUT isn’t initialized with core profile:
int main(int argc, char * argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_3_2_CORE_PROFILE | GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH | GLUT_MULTISAMPLE);
glutInitWindowSize(GlutMembers::width, GlutMembers::height);
glutCreateWindow(“GLUT window”);
GLuint textureID;
glGenTextures(1, &textureID);
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, textureID);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 512, 512, 0, GL_RGBA, GL_FLOAT, 0);
cudaGraphicsResource* gCUDAResource;
cudaError_t cudaError = cudaGraphicsGLRegisterImage(&gCUDAResource, textureID, GL_TEXTURE_2D, cudaGraphicsMapFlagsNone);
if(cudaError != cudaSuccess)
printf("Failed cudaGraphicsGLRegisterImage\n");
}