是否可以了解 OpenGL 上下文的分配内存范围?假设应该从另一个进程使用 mmap() 访问该内存范围。这项技术能起作用吗?或者它有根本性的问题吗?
更新我们使用的是带有现代 X11 安装的 GNU/Linux 系统,并且可以选择其驱动程序支持此类技巧的显卡制造商。
最佳答案
嗯,有无数的原因导致它不起作用。
首先,“OpenGL 上下文的分配内存范围”总是变化。 OpenGL 上下文分配新内存并根据其决定释放它。
其次,我不相信 OpenGL 驱动程序能够在这样的内存映射条件下生存。多个 OpenGL 上下文可以共存,但这只是因为它们都彼此了解,因此驱动程序可以对它们进行补偿。一个上下文不太可能吸收另一个上下文所做的更改。
第三,GPU 通常与图形内存一起工作。即使您可以在 GPU 内存上使用 mmap
(这本身不太可能),您也可能会损失大量性能。 GPU 内存的困惑程度比 CPU 内存要多得多。
您似乎正在尝试进行基于 IPC 的图形处理。最好的选择是让图形系统成为您通过 IPC 方法进行通信的自己的进程,而不是尝试通过 IPC 与 OpenGL 进行通信。
关于opengl - 使用 mmap() 访问视频 RAM,了解 OpenGL 上下文和视觉 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8715036/