Hello,
I fought against a weird bug this week and I need some opinion to know if my workaround is valid
and if I should send a bug report about this or if its just me…
My problem occurs with either cudaGraphicsGLRegisterBuffer() and the now deprecated cudaGLRegisterBufferObject().
The function is returning an ‘out of memory’ code error (although there is plenty of it) under these circumstances:
Error If I use the VBO as follow and try to register after:
vbo->bind();
glVertexPointer(3, GL_FLOAT, 0, 0);
vbo->unbind();
My workaround
vbo->bind();
glVertexPointer(3, GL_FLOAT, 0, 0);
vbo->unbind();
glVertexPointer(3, GL_FLOAT, 0, 0);
Note that I can use anyway I want the VBO if one of these conditions isn’t true:
-
using multiple opengl context (they share VBO PBO with an intermediate context, I’m using QT and QGLWidget to get multiple viewports)
-
registering occurs outside the display loop (keyboard event for instance)
If I register inside the display loop then no error occurs the same is true if I only use a single viewport.
Last comments: I’ve made sure that I’m making current the correct gl context before registering, openGl context is set before cuda context.
The problem occurs exclusively under linux and not windows, I also Have the same problem with my optimus laptop and two worstations.
Any ideas? Should I report this?
Thanks