Quote Originally Posted by laanwj
Speaking about CUDA, it would be great if you could share a memory space with a CUDA program and just swap pointers between GL and back It would make interoperability super cheap. Or is this already possible?
I doubt it. GL_NV_shader_buffer_load says:

18) Is the address space per-context, per-share-group, or global?

RESOLVED: It is per-share-group. Using addresses from one share group in another share group will cause undefined results.

So it the pointer could be shared across shared contexts (but in that case you could already share OpenGL buffer IDs with similar same effect); however, as far as I know, CUDA does not actually share a context with OpenGL (meaning they can use a different virtual address space, resulting in pointers not pointing to the same things (?) ).

I also hope(d) this was possible. For some reason the OpenGL interoperability in CUDA is very slow (Has this been fixed/addressed? I haven't check since CUDA 2.0, I believe). Judging from the performance, it appeared these buffers are actually copied to a different address space; it would be nice to be able to directly share global device memory between CUDA/OpenCL and OpenGL through pointers, without any copying.