switch模拟器吧 关注:11,518贴子:7,515
  • 4回复贴,共1

Yuzu进展报告2022年12月【edge浏览器机翻】

只看楼主收藏回复

你好余星人。真是一年啊!我们在 2022 年结束时推出了更多的柚子炸鸡、Vulkan 更改、新的输入驱动程序、大量的内核工作、更高的性能、更好的视觉效果等等!
Y.F.C项目.part...1.5 和缓存失效
Blinkhawk也一直在努力完成他心爱的项目,发布了Y.F.C. PART 1.5。基本上是完整“第 2 部分”版本预期的删节版本。 此拉取请求中的更改包括对实现的返工,以包含用于间接绘制和配置的各种新宏。MacroHLE
如前几篇文章所述,宏是实现间接绘制和实例化绘制等功能的小型 GPU 程序。它们必须被效仿。 MacroHLE(高级仿真)是避免执行请求的宏,而是将其直接转换为它将生成的代码(如实例化或间接绘制)的过程。 这与 MacroJIT 形成对比并并行,MacroJIT 的工作原理是实时模拟宏程序中包含的循环和控制流。
现在,为什么要同时保留两者?好吧,每个人都执行自己的专业任务。 与MacroJIT相比,MacroHLE的优势与间接调用的模拟有关。 间接调用(例如绘制)使用通过某些着色器在 GPU 中的某处生成的数据,以建立绘制参数及其绘制计数。 传统上使用 MacroJIT,我们必须同步主机 GPU 和来宾 GPU 以获取间接数据,以便正确执行宏。 使用 MacroHLE,我们在主机 GPU 中创建一个间接绘制命令,该命令指向 GPU 生成数据应位于的转换地址。 从而跳过同步。
由于这些改进,yuzu 现在能够更有效地执行宏,大大减少了 CPU 开销,并且无需更改任何设置。 我们内部喜欢称之为“被动技能”。
由于这些更改,多个游戏的性能得到了改进,包括由 Koei Tecmo 开发的游戏、、、 和(版本 12.0.0 除外,它仍然需要进一步修复)仅举几例。 崩溃也已修复。 我们测得部分游戏的性能提升了 5-20%,但在具有大量缓存的 CPU 上,性能提升可能更高。根据我们的测试,5800X3D在某些游戏中可以达到30%以上。 以更高分辨率渲染的性能成本也大大降低。Pokémon Scarlet and VioletBayonetta 3Monster Hunter RiseFire Emblem: Warriors

R5 5600X - 2x16GB 3933MHz CL18 - RX 6600
但好东西还不止于此!Blinkhawk 还增加了对 和 Vulkan 扩展的支持,减少了游戏过程中需要构建的着色器的数量和大小。VK_EXT_extended_dynamic_state2VK_EXT_extended_dynamic_state3
这个相对“新”的对,以及已经实现的和,是负责大大减少着色器构建卡顿的四个扩展。 但正如往常一样,消费者GPU中对这些扩展的支持充其量是参差不齐的,最坏的情况是支持混乱。 特别是仅受 NVIDIA Vulkan Beta 驱动程序(撰写本文时的版本 527.86)和最近的(2021 年末及更新)RADV Mesa 驱动程序支持。 我们建议任何有兴趣测试新着色器缓存性能的人都可以尝试这些驱动程序。VK_EXT_extended_dynamic_stateVK_EXT_vertex_input_dynamic_stateState3
别无选择,实现这些扩展迫使我们执行另一个可怕的缓存失效。

证明柚子最好的GPU仍然是适用于操作系统的NVIDIA或Linux上的AMD的
大多数驱动程序至少涵盖了 4 个扩展中的 3 个,没有任何问题,只有一个明显的例外,AMD Windows 驱动程序。 与使用 RADV 的 Linux 上运行同一张卡或使用任何其他品牌相比,在处理新着色器时,这样做的代价是更高的卡顿。
一个小的旁注,Linux RADV用户应该将他们的Mesa版本更新到最新版本(或者如果需要,使用更新的发行版版本),因为在21.2之前的版本中,对的支持被破坏了。state2
作为最后一秒的更改,Blinkhawk测试删除了在NVIDIA Ampere和更新的GPU(RTX 3000系列及更高版本)上强制执行的16位浮点(FP16)黑名单。如果它有效,它将允许他们在这方面类似于图灵和AMD Radeon产品。然而,NVIDIA重新设计了他们的FP32和FP16装置在安培和更新设备上的操作方式,两者都提供相同的性能。不幸的是,即使它更快,最终也无关紧要,因为安培和艾达上的 FP16 仍然在驱动程序中被窃听,在许多游戏中产生图形问题。
唯一可以从启用列入黑名单的 FP16 支持中受益的架构是 Windows 上的英特尔,但它们的驱动程序是关于 FP16 的垃圾箱火灾。因此,他们继续以与Ampere和Ada相同的方式以32位模拟16位精度,在这种情况下,它始终存在性能损失。当然,可以从此更改中受益最大的最弱架构是唯一仍然损坏的架构......
此迭代的另一个额外好处是 GPU 精度使用起来更安全。 粒子将继续变得更好,但像 、 和许多其他游戏可以更频繁地准确地玩,而不会出现故障,这提供了巨大的性能优势(特别是仍然需要它的标题屏幕,但游戏玩法是安全的)。Y.F.C.NormalHighPokémon Scarlet/VioletBayonetta 3NormalBayonetta 3HighNormal
其他令人敬畏的 GPU 更改,以及更多的缓存失效
这个月并不止于此,在我们的GPU代码库中也有很多值得一提的变化。
哦,天哪,这个月肯定很忙。
首先,他负责为我们的 Vulkan 和 OpenGL 后端实现 SMAA 抗锯齿滤波器。 但这还不是故事的全部,所以让我们进一步阐述。
SMAA,或增强的亚像素形态抗锯齿,是由西班牙萨拉戈萨大学和以孤岛危机闻名的视频游戏工作室 Crytek 开发的 MLAA 的改进。
BreadFish实现了最初的OpenGL版本,打算将其作为分辨率缩放器的一部分发布。事实证明,为 Vulkan 实现可不是开玩笑的,在被你的作家唠叨之后,byte[] 不得不工作 2 周才能让它成形。SMAA
SMAA,基于 ,旨在成为一种后处理(又名基于着色器)的选项,通过分析相邻像素来专注于质量而不是性能,这与它只是模糊整个屏幕不同。 筛选器是使用渲染通道实现的,当与 FSR 筛选结合使用时,它会产生最佳结果。 AMD 建议在其官方概述集成指南中正确消除映像锯齿。 结果不言自明:MLAAFXAASMAA
并列JS
在这里,您可以看到SMAA的理想测试用例,即简单的死亡三角形

绳索和电源线,抗锯齿测试的经典示例(神奇宝贝猩红)

3D游戏中的精灵元素受益于它(异度之刃编年史3)
对于那些感兴趣的人,我们使用了预设,测试显示即使使用 GT 1030 的性能损失也很低,因此我们更愿意关注质量。 只有使用旧集成 GPU 的用户才应避免 。对于其余部分,打开并忘记这是一个安全的选择。 您可以在 中找到该功能。ULTRASMAAEmulation > Configure > Graphics > Anti-Aliasing Method
并列JS
SMAA没有FXAA(塞尔达传说:旷野之息)的可怕色带
并列JS
对于运行低分辨率乘数的用户来说,这是一个很大的帮助。这个例子是 0.5x 单独双线性与 0.5x FSR + SMAA(神奇宝贝猩红)

完成的特写镜头(异度之刃编年史3)
作为旁注,NVIDIA 的 FSR 版本 NIS 也经过了测试,但结果是如此丑陋和过度锐化,以至于我们决定保留两者中的最佳选择 FSR。
byte[] 还修复了各向异性过滤的问题。如果用户在 Linux 上运行 RADV 驱动程序,则 以外的各向异性过滤值会导致 中出现明显的“类似痤疮”的呈现问题。在其他各向异性过滤和分辨率乘数值上,该问题仍然存在,但 byte[] 继续解决此问题。DefaultSuper Mario Odyssey
并列JS
所谓的RADV痤疮(超级马里奥奥德赛)
此更改还解决了在 Lavapipe(Mesa、Linux)上使用自动各向异性过滤时的错误水渲染问题,尽管错误仍然发生在其他各向异性过滤值处。Super Mario Sunshine
并列JS
有点让它看起来更老(超级马里奥阳光)
byte[] 还更正了内存中数据缓存管理操作的语义。
以前,当来宾请求缓存失效时,实现只会使硬件上的缓存失效,而不是按预期使内存对 GPU 可见。
另一方面,他还推广了各种 Vulkan 扩展使用核心方法。在 Vulkan API 中,供应商扩展是由特定硬件供应商或驱动程序提供的可选功能,可能并非在所有系统上都可用。相比之下,核心方法是 Vulkan 规范的基本组成部分,并保证在所有支持 API 的系统上可用。因此,提升扩展以使用核心方法可以提高其可靠性和可移植性。
byte[] 对 Vulkan API 进行了进一步的初始化调整。这些更改包括 和 的恢复,这些内容在之前的 PR 中被错误地删除了。他还在结构中添加了标志,以便被检测为可用的Vulkan设备。VK_KHR_timeline_semaphoreVK_EXT_host_query_resetVK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHRVkInstanceCreateInfoMoltenVKMoltenVK
请记住,要在macOS设备上获得柚子渲染还需要做更多的工作。这只是早期的初步工作。
vonchenplus已经为Maxwell3D实施了绘图管理器,旨在消除解决方法并重新组织绘图过程以更准确地枚举绘图行为。 由于这些更改,某些 3D 模型无法正确渲染的问题已得到修复。Dragon Quest Builders
并列JS
不再缺少东西!(勇者斗恶龙建造者)

没有盔甲是最好的盔甲(黑暗之魂)
在这些更改之后,vonchenplus 还改进了拓扑更新逻辑的代码,以便实现更加准确。为了使用 Vulkan 实现特殊拓扑,此更改是必要的。
这包括对 的支持,这需要使用三角形来模拟它们,以及模拟索引和非索引模式的功能。 在非索引模式下,固定映射表用于连接顶点,而在索引模式下,计算着色器用于动态映射原始图形索引。 Vonchenplus还实现了对线环的支持,前者需要使用三角形列表来模拟它们,后者需要使用三角形扇形。quad strips
这些更改修复了 中英雄的路径以及 中的状态摘要图形,它们还给了我们另一个着色器缓存失效,耶!Legend of Zelda: Breath of the WildPokémon Scarlet and Violet
并列JS
不要弄乱统计数据!没有统计数据就无法繁殖!(宝可梦猩红)
并列JS
当Sheika GPS信号返回时(塞尔达传说:旷野之息)


IP属地:湖北1楼2023-01-11 11:12回复
    byte[] 还引入了一种解决方法,用于解决由于未分配内存而导致的崩溃,因为注意到 Yuzu 总是使用内存块而不将它们标记为已分配,导致它与游戏使用的内存重叠。 他通过确保我们现在在使用内存之前分配内存来修复该错误。 这是为了缓解这种情况,同时内核的其他部分正在被熨平。
    这更多地与错误处理有关,但仍然很重要。 byte[] 添加了一个选项,用于在发生无效内存访问时强制模拟器中断。这意味着如果/当游戏在后台爆炸时,模拟器将崩溃,而不是慢慢吞噬所有可用的系统 RAM。 像这样的问题可能是由仿真问题、损坏的游戏转储甚至一些不稳定的模组引起的,因此避免整个模拟器崩溃总是一个更好的选择,如果用户没有足够的 RAM,会使操作系统受到影响。
    除了这里没有提到的无休止的无声更改外,lioncash 还对输入代码进行了一些更改,以减少内存使用。
    用户界面和音频更改
    我们已经实施了一些有趣的用户界面生活质量更改! lioncash使SPIR-V着色器后端元素可翻译,因此它并不总是以英语显示给每个人。 从事翻译工作的社区现在可以获取标签并相应地更新它。

    我们仍然不建议在GLSL上使用它,但Mesa用户报告说他们喜欢它
    几个月前,随着核心时间的变化,我们允许用户在社区的持续请求下解锁帧率启动游戏。 事实证明,什么都没有改变。有几款游戏讨厌以解锁的帧率启动,支持渠道让相当一部分人询问为什么他们的游戏不想启动。 因此,简单的修复,在启动权限被拒绝时解锁帧速率。默认情况下,切换解锁帧速率的热键只是一个小麻烦。Ctrl + U
    用户报告说,他们在窗口模式下无法录制或流式传输他们的柚子窗口。 byte[] 发现原因是为所有平台设置 Qt 属性,而不仅仅是为 Wayland 设置。发行下来,主播欢欣鼓舞。WA_DontCreateNativeAncestors
    Discord 用户 piplup 报告说,柚子在访问游戏的自定义配置窗口后没有保存设备名称(你称之为控制台)。 German77修复了这个问题(这个特定的设置缺少自定义配置等效项),并且还修复了Qt 6构建问题。
    German77 的另一个非常好的生活质量改进是让柚子记住最后选择的目录。 如果您将转储保存在同一个文件夹中,那么现在更新游戏所需的点击次数将减少。Install files to NAND…
    byte[] 在关闭/停止游戏时与崩溃的战争中取得了惊人的胜利。他致力于使关机不会明显冻结柚子,避免在游戏退出时使模拟器崩溃,并在游戏时显示一条很好的弹出消息!

    我们比Switch花费更长的时间,但有些游戏真的很喜欢在控制台上花时间。
    Morph 通过隐藏按钮对话框帮助实现这一目标,允许创建添加的对话框覆盖 byte[]。
    在这方面进行的另一场战斗与自制应用程序有关。 byte[] 现在也负责让他们正确退出。
    ChrisOboe突然出现了,为基于终端的yuzu-cmd构建提供了光荣的生活质量修复。 将构建标记为“Windows”应用程序而不是“控制台”应用程序可确保不会不必要地弹出空命令行窗口。 这可以帮助设置为使用 yuzu-cmd 运行特定游戏的流媒体程序,因为这可以防止突然出现的空黑框出现在其他窗口前面。
    对于我们本月的单个音频更改,Maide 在音频停止时正确发出缓冲事件信号,修复了影响游戏的早期软锁。Pokémon Brilliant Diamond/Shining Pearl
    未来项目
    我们距离2023年只有几天的时间,我们已经想发布下一份进展报告。这么短的时间内发生了这么多事情!
    此外,Blinkhaw,bunnei和byte[]正在做一些事情,我们迫不及待地想告诉你更多。 是的,还会有更多的缓存失效。一切都以进步的名义。
    这就是所有人!期待下次有一些但非常关键的 Vulkan 改进,希望届时见到你!
    ⭐⭐⭐ 大梅西


    IP属地:湖北3楼2023-01-11 12:23
    回复


      IP属地:湖北4楼2023-01-11 12:24
      回复
        吧主 想玩模拟器 有啥教程吗


        IP属地:河南来自iPhone客户端5楼2023-01-25 22:10
        收起回复