首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用mmap()了解OpenGL上下文和可视ID访问视频RAM

使用mmap()了解OpenGL上下文和可视ID访问视频RAM
EN

Stack Overflow用户
提问于 2012-01-03 16:08:22
回答 3查看 858关注 0票数 2

是否有可能了解OpenGL上下文的分配内存范围?据推测,应该使用mmap()从另一个进程访问这个内存范围。这种技术能起作用吗,还是有根本的问题?

更新我们使用的是具有现代X11安装的GNU/Linux系统,并且可以选择其驱动程序支持这种技巧的显卡制造商。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-01-03 16:39:54

嗯,有无数的原因让它不能工作。

首先,“分配的OpenGL上下文内存范围”总是在变化。OpenGL上下文分配新内存,并在决定时释放它。

其次,我不相信OpenGL驱动程序能够在这样的内存映射条件下生存下来。多个OpenGL上下文可以共存,但这只是因为它们都知道彼此,因此驱动程序可以对它们进行补偿。一个上下文不太可能吸收另一个上下文所做的更改。

第三,GPU通常与图形内存一起工作。即使您可以在GPU内存上使用mmap (这本身是不可能的),当您这样做时,可能会损失很多性能。GPU内存比CPU内存多得多。

你似乎在尝试做基于IPC的图形。您最好的选择是让图形系统成为自己的进程,您可以通过IPC方法进行通信,而不是试图通过IPC与OpenGL通信。

票数 3
EN

Stack Overflow用户

发布于 2012-01-03 16:12:36

取决于操作系统和驱动程序。使用X-服务器是可能的。虽然X服务器的组合,显示驱动程序和openGL意味着它可以在卡上移动特定对象的内存时,它绘制它。

一种更简单的方法可能是使用openGL像素/顶点缓冲区并获取缓冲区指针。

票数 0
EN

Stack Overflow用户

发布于 2012-01-03 17:10:12

是否有可能了解OpenGL上下文的分配内存范围?

我认为您要求访问OpenGL上下文保存对象和呈现输出的内存。

不是的。OpenGL上下文是一个抽象的构造,它的内存位于完全不同的机器和/或体系结构上。

此外,对于OpenGL上下文的内容,没有标准的甚至通用的内存布局。如果您只对呈现结果感兴趣,则可以使用框架缓冲区设备(/dev/fb…),尽管性能不如使用glReadPixels读取帧缓冲区内容。类似的情况也适用于访问PCI内存范围,这实际上与敲击帧缓冲设备相同。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8715036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档