After switching from Windows 7 to Windows 10 I've noticed that calls to cuGraphicsGLRegisterImage to register an OpenGL texture now take double memory. i.e. after creating a texture that's 200 MB, the register call consumes 400 MB of CUDA memory. I'm currently running CUDA 8.0.61 (with Patch 2) and OpenGL 4.5 on an M2200 GPU.
This was not the case with Windows 7 on either the K2000 and M2200 GPUs I've ran this code on.
The OpenGL context is using a simple hardware accelerated 32 bit RGBA color, 24 bit depth, 8 bit stencil, double buffered pixel format with no multisampling.
There also appears to be a difference in the amount of available memory returned from
glGetInteger(GL_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX) vs cuMemGetInfo_v2 that grows in size with each register call.
Does anybody know the cause of the additional memory consumption? Is it the Windows 10 / CUDA driver? Is there a way I can fix this or a workaround so that I'm not consuming double memory with my OpenGL / CUDA interops?