GPU驱动程序是否必须按需从应用程序释放GPU内存?如果不是,是否会使应用程序可能想要做任何GPU内存资源管理无效,因为它是从实际内存中“移除的层”?
我分配了很多纹理,然后释放它们。当分配时,我可以看到"GPU系统字节“(在进程资源管理器中)迅速增加(数量大大超过了图像的硬盘空间-也许它们在GPU中是解压缩的,所以占用了很多空间)。
当释放纹理时,我可以看到Texture2D对象析构函数正确地调用了glDeleteTexture,但似乎在"GPU系统字节“减少回原始值时有一个延迟,事实上,该值并没有返回到原始值,而是在它上方悬停了一点。
然后,如果继续这样做,我看到图形处理器内存使用量逐渐增加,但在此期间,我一直在计算我的glDeleteTexture调用,内存似乎从未完全恢复。
我被迷惑了,因为从应用程序的角度看,它看起来很干净--x已分配,x已释放--但我看到我的应用程序变得有点占用资源,不是在我的进程的内存空间,而是GPU内存空间,因为这个原因(Intel HD 6000 GPU)。
发布于 2017-03-24 00:57:30
是否强制GPU驱动程序按需从应用程序释放GPU内存?
不是的。无论何时,OpenGL驱动程序都会返回该内存。
如果不是,是否会使应用程序想要做
内存资源管理失效,因为它是从实际内存中“移除的层”?
这是使用基于硬件抽象的API的结果。如果你想避免被“从实际内存中移除的一层”,你应该使用Vulkan。
https://stackoverflow.com/questions/42980760
复制相似问题