【发布时间】:2014-03-24 03:40:04
【问题描述】:
我有一台 iMac,其 VRAM 似乎出现故障。在启动时,有一段时间一切都很好,但最终,随着越来越多的窗口被打开(即在 GPU 上创建纹理),我最终遇到了故障 VRAM,我得到了这些奇怪的“嘈杂”网格状图案窗户里的红色和绿色。
我有一个想法,但总的来说,我在 OpenGL 和 GPU 编程方面大多是新手,所以我想我会在这里询问它是否合理:
如果我编写一个小应用程序,它会在启动时运行,并且会分配 GPU 纹理(一些合理的量 - 我不知道,也许是 256K?)直到它耗尽所有可用的 VRAM(即无法分配更多纹理)。然后让它将特定模式的数据上传到每个纹理中。接下来,它将从 GPU 回读纹理,并根据原始模式对数据进行校验和。如果它签出,则释放它(供系统的其余部分使用)。如果它没有校验和,请挂在它上面(永远)。
我可以看到的缺陷:用户空间应用程序无法确定地运行所有 VRAM,因为系统会占用一些 VRAM,但实际上,我只是想从一个在这里垂死的机器,所以任何在这方面有帮助的东西都是受欢迎的。我也知道从 VRAM 读回比较慢,但我并不太关心性能——这是一项实际的努力,可以肯定。
这听起来有道理吗,还是我在这里遗漏了一些关于 GPU 的基本事实?
【问题讨论】:
-
行不通。您上传到 VRAM 的数据不会永远留在那里,也没有办法将其保存在同一个地方。驱动程序正在管理 vram,它可以随时从其中加载或卸载任何部分(例如,当渲染不使用特定缓冲区时,它最终将从 vram 中卸载,稍后从其 RAM 上载再次使用时复制。
-
无赖。我想我会留下这个问题,看看是否有人有任何其他热门想法,但我想是时候开始寻找新机器了......