Mesa Zink 驱动的一个改进补丁降低了 50% 内存占用

Zink 是基于 Vulkan 的 OpenGL 实现,Valve 公司 Linux 图形驱动程序团队的 Mike Blumenkrantz 最近在研究 Zink 过度使用内存问题的来源。他已经为 Mesa 23.1 提交了一个 Zink 驱动内存优化补丁,这个改动使 Mesa Zink 驱动程序的内存使用率在大多数游戏中减少一半,但不会对性能产生任何负面影响。

背景

OpenGL 的游戏很多都是 x86 二进制文件,它们在 32 位进程中运行,而 32 位地址空间意味着可寻址内存有 4GB 限制,这个限制包括游戏的可寻址内存(例如,游戏的内部 malloc 调用)以及驱动程序的可寻址内存(例如,所有 GPU 映射内存),一旦内存占用临界或者超过该限制,应用就会崩溃。

之前 Mesa RADV 驱动程序就出现过内存问题,在打开 Dota 2 时,RADV 驱动程序占用了 3GB 主机内存。其中大部分内存占用都来自于内存着色器 IR,最后通过序列化内存中的着色器,节省了 85% 的内存,解决了内存占用异常问题。

Mesa Zink 驱动程序的内存使用和 RADV 驱动的问题有点相似。、Mike 在一篇博文中讲述了自己的内存优化过程,这次作为实验的游戏是古墓丽影三,最初打开游戏时内存占用 2.4 G,而且几乎全部由驱动程序分配:

第一步是着手序列化所有 NIR 着色器(NIR 是一种中间表示 (IR),专为满足 Mesa 中图形驱动程序的需求而设计。)。因为克隆 NIR 着色器会消耗过多的 RAM,对于创建大量图形的游戏来说,这很容易导致内存爆炸。序列化 NIR 比对象形式的 NIR 更紧凑,内存占用量小了一个数量级,使用序列化的 NIR 着色器对内存问题有很大帮助。第二步是压缩链接着色器时发生的 NIR 副本。最后将 Mesa RADV 的修复程序应用到 Mesa Zink 中。

最终将古墓丽影 3 的内存使用量降到 482.7 MB,减少了 79.9% 。

目前该内存优化补丁已成功合并到 Mesa 23.1 主线,感兴趣的便宜可以在 Mike 的博客中阅读技术细节

优秀的个人博客,低调大师

微信关注我们

原文链接:https://www.oschina.net/news/235463/mesa-zink-less-memory-utilization

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Eclipse(集成开发环境)

Eclipse(集成开发环境)

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。

Sublime Text 一个代码编辑器

Sublime Text 一个代码编辑器

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。