Switch模拟器Ryujinx进度报告2022-8月
又一个月过去了,这意味着来自您最喜欢的任天堂Switch模拟器的另一份进度报告。
我们对 GPU、CPU、内核和服务仿真进行了常规的滚动改进,做了大量的代码清理,最后发布了新的 LDN 版本。
显卡:
使用 OpenGL 驱动程序运行游戏并不陌生,本月也不例外。《数码宝贝物语:网络侦探
》、《热血少女Zero》和《雷顿神秘之旅 卡特莉艾尔与大富豪的阴谋
》等游戏会表现出小的纹理破坏,通常以线条或彩色顶点的形式出现,而这些都不是。这最终是由于Ryujinx用于将纹理数据刷新到CPU的方法效率相当低下并且容易出现自己的错误。虽然单独修复刷新机制中的潜在问题很重要,但为修复这些OpenGL标题而提出的解决方案是为这些纹理数据传输实现一条新的快速路径,从而完全绕过刷新。
在Vulkan合并后,AMD和英特尔GPU的所有者很快意识到,当选择API时,Mii编辑器小程序有些崩溃。虽然它在OpenGL中工作正常,但尝试在Vulkan中打开Mii编辑器会导致彻底崩溃或表现出图形错误,例如某些视觉元素根本没有显示:
这个特殊问题被追踪到一个无效的布尔常量(1字节)的赋值,然后直接分配给一个整数(4个字节)。这导致某些 GPU 供应商出现 SPIR-V 解析失败,因此此处的解决方法是删除这些无效分配。
关于Vulkan的话题:分娩并非没有出牙疼痛和一些小的倒退。其中一个回归表现为在《集合啦!动物森友会》和《莱莎的炼金工房》中在Vulkan和 OpenGL 图形 API 上的闪烁。
这两个问题都可以追溯到最终Vulkan rebase期间的疏忽,在新添加的采样器池缓存之后,纹理绑定将使用错误的采样器池。这里只需要一行修复即可将正确的采样器池作为参数传递。
撇开“纹理”这个词不谈,本月对定义的格式及其相关的格式表进行了一些更一般的内务处理更改。ETC2纹理格式被添加到Vulkan中,尽管奇怪的翻转,这次实际上是NVIDIA不支持它们的使用。AMD和英特尔的所有者应该看到Vegas Party,辐射岛和任何其他使用上述格式的人都可以玩。
整个格式表也进行了重构,以便为格式提供有意义的名称,而不是使用所谓的“幻数”。编程中的幻数是原始使用的值,并且没有关于其使用的有意义的上下文。
最佳做法是为这些幻数分配一个常量,以便将来贡献者能够理解其含义。这并不总是那么容易,特别是在逆向工程和仿真中,你可能直到很久以后才确切知道某物是什么。值得庆幸的是,我们对Switch的了解已经成熟多年。英伟达最近也发布了大量文档!即使对于许多阅读这些报告的非编码人员来说,可读性的差异也是天差地别: