gpt4 book ai didi

linux - 进程的显卡内存和虚拟地址空间

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:47:14 24 4
gpt4 key购买 nike

假设我有一个游戏,在 openGL 方面处理大量图形,我有一个安装了 Linux 32 位、4GB RAM 和 1G Nvidia 显卡的桌面。我的游戏应用程序虚拟地址空间是什么样的?显卡内存是否映射到这个虚拟地址空间?

另外,内存和显卡显存之间有什么关系吗? linux 是否为任何进程都不能使用的显卡分配相等的 RAM?也就是说,它会导致我的游戏进程只能使用 3GB 的 RAM?

最佳答案

How does my game application virtual address space look like?

无法判断。 OpenGL 将此细节完全开放给供应商实现。任何满足规范的内容都是允许的。

Is graphics card memory mapped in this virtual address space?

也许,也许不是。这取决于实际实现。

Also, is there some relation between RAM and graphics card memory?

通常是的。就目前和大多数 OpenGL 实现而言,显卡的 RAM 本质上是一个缓存,用于实际存在于系统内存中的东西(CPU RAM + 交换空间 + 从存储映射的填充内存)。然而,这并没有固定到规范中,任何满足 OpenGL 规范的东西都是允许的。

Does Linux allocate equal RAM for graphics card which can not be used by any process?

不,因为 Linux(内核)不关心这些事情。不过,您的显卡驱动程序是。驱动程序可以按照它认为合适的任何方式进行操作。它可以通过物理地址扩展 (PAE) 将 OpenGL 上下文数据映射到单独的地址空间,或者将其放置在不同的进程中或将其保存在游戏的地址空间中,或者……,或者……,或者……。没有关于此的书面方案。

That said, it results then into only 3GB of RAM available to my game process?

如果是这样,那么更像是(3GB - 1GB) - x其中 0 < x因为你的进程地址空间的前 1GB 是为内核保留的,当然你的程序的文本(由 CPU 执行的二进制文件)和它使用的库的文本也需要一些地址空间。

关于linux - 进程的显卡内存和虚拟地址空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34939514/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com