我有一个应用程序,它使用OpenGL进行呈现(OpenGL)。有一种纹理绑定到管道上。还有一个CUDA调用可以修改这个纹理。基本上看起来是这样的:
cudaGraphicsMapResources(tex);
// call cuda kernel that writes to te texture
cudaGraphicsUnmapResources(tex);这有多安全?数据自动化系统是否有可能更新OpenGL目前正在使用的纹理?我不知道OpenGL,但知道其他API。在DirextX 12或vulkan中,我需要为这种工作设置屏障或其他同步机制。但是另一方面,DirectX 11允许安全地更新映射的资源,因为它在API中具有同步。
发布于 2017-06-28 12:22:25
这样做应该是安全的,主要是因为OpenGL在GPU中存储所有相关的缓冲区和in。注意,您可能无法更新绑定到GPU的纹理。
发布于 2017-07-01 16:23:48
只要纹理映射到CUDA资源,任何在OpenGL端读写的尝试都将导致未定义的results.It在库达博士中显式声明。
https://stackoverflow.com/questions/44796034
复制相似问题