opengl - 使用 mmap() 访问视频 RAM,了解 OpenGL 上下文和视觉 ID

标签 opengl video mmap

是否可以了解 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/

相关文章:

iphone - 跨 iOS 平台的视频规范

join - 使用 FFMPEG 将两个 MTS 文件连接在一起

linux - 更改内存映射文件的文件名

c - 如果我使用 mmap 而不是 malloc 分配内存会怎样?

opengl - 如何使用OpenGL片段着色器将RGB转换为YUV420

c++ - QWidgets可以添加到QWindow吗?

android - WebView 中的 Youtube 视频无法加载

c++ - 粒子不朝向相机

c++ - 如何全屏 QGLWidget?

c - 如何在不导致 Linux 内核崩溃的情况下访问 mmaped/dev/mem?