Switch模拟器Ryujinx进度报告2023-3月
我们正在进入 2023 年第二季度,终于得到了每个人都如此焦虑的新塞尔达游戏的消息;演讲是否符合所有人的期望?我们所有人都非常兴奋地看到任天堂为这个奇怪的熟悉冒险准备了什么,当然,看看它会给Ryujinx带来什么挑战。我们希望大家度过了一个愉快的月份,并且感谢您欣赏这份比平时略短的进度报告!本月加入了重点总结,放在文章最后。
显卡:
有什么比展示我们梦寐以求的“本月 GPU 供应商特定错误”奖更好的方式来开始 GPU 部分。本月获得一等奖(有史以来第二次!),ittttssssss.....*鼓掌*....英伟达!用RTX 3000和4000系列GPU特有的Ryujinx错误取得了干净的胜利。
巴黎通常不以其不祥的浮动2D形状而闻名,马里奥赛车8豪华版并不是唯一受影响的游戏。自驱动程序 522.25 以来,像 Xenoblade Chronicles 1/2/3 异度之刃123和 Hyper Light Drifter光明旅者 这样的游戏一直在展示随机伪图像,需要很长时间才能追踪。我们过去曾提到过,如果驱动程序错误是一致的,这不是什么大问题,但是当它仅限于某些硬件时,要解决的复杂性会增加十倍。
原因最终缩小到较新的 Nvidia GPU 能够在最终图像光栅化任务完成之前开始清除渲染目标。这可以让纹理在采样时清除,从而产生上面见证的伪影。幸运的是,该解决方案非常简单,在清除事件之前插入一个屏障,从而使RTX 3000及以后的卡与它们的哥哥姐姐对齐。
分辨率缩放器给出,分辨率缩放器带走。如果有人已经和我们在一起几个月了,你可能还记得针对 Splatoon 喷射战士 游戏的修复,它阻止了缩放器乘以总分并导致玩家无法以足够低的分辨率进行墨水游泳(查看 2022年9 月报告了解更多信息)。不幸的是,为了修复这些相当破坏游戏的错误,一些游戏,如WarioWare:Get It Together瓦利欧制造 和Wreckfest撞车嘉年华,现在在渲染超出本机时出现了图形错误。通常以角色模型或主世界中大量闪烁的形式出现。
!闪烁警告!
通过本身值添加到报表计数器时缩放值,而不是在事后缩放总数,可以避免奇怪的溢出和较大的计数器值。这消除了自 去年9 月以来某些游戏在缩放时可能出现的看似随机的闪烁,当然还有上面提到的两个游戏。
Sonic Frontiers索尼克:边境 在发布时有点问题,虽然它确实启动并且在技术上有效,但体验有点像用筷子系鞋带。或者一句话,痛苦。加载画面过长和性能平庸的主要原因是游戏倾向于创建具有 7000 多张面孔的巨大立方体地图数组(175 张立方体贴图 * 6 张面孔 * 7 个感兴趣的关卡)。
添加新视图时,遍历句柄和现有视图的速度非常快,可能会有 50 万次迭代来添加最终视图。由于我们一次只需要添加单个视图,因此我们可以将该视图添加到现有重叠中,而不是重新计算所有重叠。这将成为将单个纹理视图添加到组的新通用“快速路径”,并且可以改进表现出此行为的其他游戏。
让我们谈谈性能,每个人都喜欢这一点。
三月份的一个重点是隔离OpenGL仍然远远优于Vulkan的案例。这通常表示 GPU 的 OpenGL 驱动程序正在自动优化的代码路径,而在 Vulkan 中,我们需要在 Ryujinx 本身中手动执行这些优化操作。我们将从一些看起来真的不应该挣扎的游戏开始,唉,他们做到了。
一些游戏,如LA-MULANA穆拉纳秘宝,一个视觉上简单的2D平台游戏,在Vulkan下汗流浃背,但在OpenGL下却像轻而易举地运行。以前,索引内联缓冲区更新是逐步执行的,一次一个索引,这意味着,例如,如果上传两个 16 位索引,实际工作将在多个 8 字节块中执行。一个效率极低的过程,Nvidia OpenGL驱动程序正在发挥一些魔力。另一方面,Vulkan,没有这样的运气!(也就是说N卡在Ryujinx中选择OpenGL有时会更加有优势,A卡及i卡也可能有所进步)
更改此上传机制以允许批量上传(一次最多 256 个索引),此类游戏不再困难。虽然这主要有助于 Vulkan 渲染性能,但其他 OpenGL 驱动程序可能不那么称职的供应商在使用 OpenGL 时也会看到改进。
Vulkan的模式里有最后一个难题,花了很长时间才解决。在新后端的公开测试早期就注意到,与OpenGL相比,一些游戏的性能要差得多,并且使用了更多的GPU资源。这并没有被它似乎奇怪的硬件特定这一事实所帮助。与英特尔CPU配对的Nvidia GPU不会表现出这些症状,但是当您简单地更换AMD CPU时,您会表现出这些症状。那么AMD的CPU有问题吗?好吧,不,因为如果您将 Nvidia GPU 换成 AMD GPU,那么问题就会再次消失!结果是,Nvidia GPU与AMD CPU配对显然存在奇怪的情况......他们知道吗?他们像磁铁一样排斥吗?!没有一条道路未被探索。
这种情况下的问题源于 Ryujinx 如何处理 GPU 缓冲区数据。所有数据都归“主机映射”内存所有,该内存属于您的系统 RAM,而不是显卡的 VRAM。这使我们能够快速访问、上传和拉取数据,而无需通过 GPU。不幸的是,我们了解到这在很大程度上取决于许多因素,例如 CPU、GPU、GPU 驱动程序,甚至取决于 PCI-E 带宽。因此,这种将所有缓冲区数据存储在共享内存中的方法至少可以说是不一致的。
某些游戏将非常大的范围绑定为存储缓冲区,根据上述因素,可能会导致巨大的带宽限制,使您的 GPU 使用率飙升,随后导致您的桌面管理器变得滞后和不稳定。
所提出的解决方案在很大程度上是一种平衡行为。我们不能只将所有内容存储在VRAM显存中,因为我们会失去上述所有优势,例如快速访问,但我们显然也不能将所有内容存储在共享内存中。因此,建立了一组规则来在不同内存类型之间迁移缓冲区,以提高 GPU 性能并消除 OpenGL 性能仍然稍好的大部分情况。
虽然这些案例中的大多数都影响了传说中的AMD CPU / Nvidia GPU组合,但所有供应商都在某种程度上遇到了这个问题,所有人都应该看到改进。下面的数字是用各种AMD/Nvidia硬件组合拍摄的,而不仅仅是5600X / RTX3070,因此您的数字可能不完全匹配;百分比改进是这里节目的明星。
这不是一个广泛的列表,更多的游戏在硬件阵容中看到了主要到适度的增长,而不仅仅是AMD CPU / Nvidia GPU设置。也很难传达这些变化带来的稳定性改进。正如我们之前所说,虽然 18fps 并不理想,但更不理想的是 Ryujinx 变得如此需要 GPU 的占用,以至于开始影响您的桌面流畅。
Subnautica深海迷航是一个有趣的游戏,在这里省略了(酒吧会让所有东西相形见绌),但它的开始屏幕的性能略有提高2000%。不过,有了这些变化,我们预计不会有更多的游戏在 OpenGL 中表现得更好或不同,所以如果你之前在 Vulkan 中尝试过一个非常慢的游戏并且不得不切换后端,那就再试一次OpenGL吧!
上个月提到了Metroid Prime Remastered银河战士Prime复刻版及其臭名昭著的卡顿。这些帧时间峰值的最大原因是由于加载每个新区域时会创建非常大的 (40mb) 纹理。所以可以肯定的是,解决方案是尝试更新当前纹理而不是重新创建它?当然,如果你在家里猜到了这一点,那么你有一天也可以成为一名模拟器开发人员,或者写关于他们的人......
为了结束 GPU 部分,我们修复了一个导致 Vulkan 中的设备查询中断的小遗漏,导致 Ryujinx 不知道它会强制某些 AMD GPU(RDNA 及更高版本)使用子组大小 32 而不是默认的 64。这可以从《真女神转生V》和《最终幻想7危机核心》等游戏中一些闪烁的腐败中看出。
我们的错!上述问题仍然存在于早于 RDNA1 (RX 5000) 的 Radeon GPU,但应该在支持可变子组大小之外的任何内容上解决。
CPU/MISC:
在英特尔悄悄放弃对AVX-512的支持后不久,AVX-512是一种在256位而不是AVX2的4位上运行的新指令集,AMD宣布其最新的Zen512 CPU将提供支持。因此,围绕为当前和将来支持它的CPU提供3位类型的优化,已经有相当多的嗡嗡声。虽然我们不确定 Switch 仿真能够像 RPCS512 一样利用这些指令,但外部贡献者 Wunkolo 进行了一些初步工作,以加速“mvn”、“orn”和“not”操作码。虽然目前我们没有明显的性能提升,但在 AVX-<512> 兼容芯片上操作码的实现在技术上更快,并且随着进一步说明的使用,这些小的优化可能会加起来。
合并这些更改的一个有趣的副作用是,我们发现与 Ryujinx 一起使用的一些 CPU 太旧了,它们不支持用于检查是否支持某些指令的硬件标志!虽然我们确实不建议在 2008 服务器 CPU 上运行 Switch 模拟器,但此问题现在也已修复。
在某些服务恶作剧中,商店访问服务中的“CreateServerInterface”将传递一些传输内存,然后永远不会关闭其句柄。如果第二次调用该服务,它将失败并导致执行此操作的任何游戏崩溃。防止这种情况修复了SD新假面骑士Ranbu的崩溃,并且像往常一样,任何其他可能表现出此行为的游戏。
至于本月的杂项变化总结:
程序内存分配减少。由于内存分配,分配事件减少了 44%,垃圾回收时间减少了 25%,程序暂停减少了 32%。在分配密集型方案中可以看到非常小的性能提升。
系统呼叫功能已更新,包括固件版本 15.0.0 中添加的系统呼叫。
LibHac(用于文件系统服务的库)已更新到 0.18.0。添加对给定正确控制台密钥转储的个性化票证标题密钥的支持。
关闭应用程序时挂起,导致幽灵 Ryujinx 进程停留,在 Linux 上得到了解决。
WIP Avalonia GUI中的DLC管理器被进行了重构,以使其与“Fluent”设计原则和高度要求的“启用全部”按钮更加一致,适用于那些被骗购买所有Smash Bros DLC 服装的人。
关于我们转向Avalonia前端的消息最近进展较慢,因为我们正在等待他们的团队完成下一个11.0版本。这是我们继续在FlatHub上为Linux和Steam Deck用户打包Ryujinx所必需的,所以早点发布并不理想。
结语
这就是我们这个月的全部内容。我们即将接近游戏年的业务结束,我们正在尽我们所能,让这艘船在暴风雨来临之前做到水密。像往常一样,我们要非常感谢所有在 Patreon 上支持我们在财务上所做的工作的人,他们在 GitHub 上拥有技术专长,只是通过帮助其他用户或只是活跃在我们的 Discord 中。你让这艘船保持在航线上!
王国之泪。好了,
下个月见;)
总结本月重点内容:
1.N卡3000系和4000系自522.25之后的驱动更新后出现很大问题,如果你在运行最新的Ryujinx时并且你是最新的N卡驱动发现奇怪显示故障,就回退驱动程序。
2.有一些游戏OpenGL模式要更优于Vulkan,因为Vulkan都需要手动进行优化,而OpenGL可以自动优化游戏。不同游戏不同测试,不论你是N卡A卡i卡,OpenGL有时都会有改进。
3.与OpenGL相比,一些游戏的性能要差得多,并且使用了更多的GPU资源,这些奇怪症状来自于你是AU搭配N卡,但如果是iU搭配N卡就不会出现奇怪现象,AU搭配A卡也不会,所以这还需要进一步探索。如果你是一个喜欢稳定的用户,那就是iU N卡,如果是你是喜欢折腾的用户,并且有足够的耐心,那就AU A卡,嘿嘿,别搞特殊。
4.英特尔从12代开始放弃AVX-512,我就知道是积热的问题,但AMD宣布最新的Zen512CPU将提供支持,真是有人扔就有人捡,我们坐等AMD黑科技解决积热的问题打英特尔的脸。
Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved