
Switch模拟器YUZU进度报告2023-5月
又一个月!GOAT发布,柚子冒险进入新平台,我们体验了盖亚计划,全面的Amiibo支持,进一步的YFC项目等等! 系上安全带,开始演奏一些欧洲节拍,这将是一段漫长的旅程。
塞尔达传说:王国之泪
六年,等待是值得的。 没有赢得奖金的机制,没有令人筋疲力尽的*交易微**,没有发布后发布的道歉信。只是游戏,只是好游戏。

塞尔达回来了,再次教游戏行业如何制作视频游戏,同时也让它适合 2015年的平板,并在 8 年前的移动 SoC 上运行。

The Legend of Zelda: Tears of the Kingdom不仅让它的前身(一款已经重新发明了开放世界游戏玩法的游戏)看起来像一个技术演示,而且事实证明它也是一个重量级人物,在模拟时在硬件要求上远远高于同类产品。 更重的物理引擎、大量的着色器以及大量 ASTC 纹理的荒谬使用相结合,让模拟器屈服了。
让我们从公主引入该项目的最复杂的问题开始。PC上的模拟仿真的老克星,现在提升到新的高度:ASTC公司。

由于没有一个专用的台式机或笔记本电脑显卡支持 ASTC 纹理的原生解码(英特尔 iGPU 除外),yuzu 被迫将它们即时转码为所有 GPU 都支持的安全无损格式;在本例中,格式。RGBA8
到目前为止,这完全没问题(即使在 2GB GPU 上),因为是唯一一款“广泛”使用 ASTC 纹理的游戏,在用于 4p 和 1080p 屏幕分辨率的移动设备上提供 720K 纹理。 我们的垃圾收集器是两年前与哈迪斯计划一起推出的,我们的老用户称之为“记忆收割者”,当时针对这种最坏的情况进行了调整。ASTRAL CHAIN
但是,如果一款具有更多纹理的游戏和一个远程传输系统,允许玩家在游戏中到达不同地区(反过来,加载大量新的、不同的纹理)版本,会发生什么? 如果这个假设的游戏使用了几十个巨大的ASTC纹理呢?

好吧,突然之间,我们开发的旧的且值得信赖的垃圾收集器不再能够保持8GB GPU的工作。 没错,影响PC游戏行业的VRAM危机也伤害了柚子。 必须进行重大更改,并且必须允许2GB GPU仍然以某种方式兼容。

该解决方案经过多次尝试,被分成几个部分,以确保没有其它游戏受到更改的负面影响,并且需要Maide,byte[]和Blinkhawk的共同努力。
在调查非常低的VRAM(显存)设备时,byte[]发现yuzu在Vulkan内存分配器处于压力下时使用了不兼容的内存属性标志,导致低VRAM GPU在尝试实际使用回收分配时崩溃。
拥有更多的VRAM当然有帮助,但这还不足以避免游戏在压力条件下(例如,在不同区域之间传送)咬掉超过GPU内存所能咀嚼的内存。
以前,如果VRAM几乎已满,内存管理器将尝试使用共享内存(仅是系统RAM的一部分)进行新的分配。 这在游戏过程中导致速度大幅下降,因为通过系统 RAM、CPU、PCIe、GPU 和最终 VRAM 的传输操作是一个缓慢的过程,引入了高延迟。
在VRAM中收集内存比将数据传输到系统RAM要快得多。 因此,内存管理器(Reaper)现在将所有内容保存在专用内存(VRAM)中,而不是依赖缓慢的共享内存,从而留出一些可用空间来适应加载新资产时VRAM使用量的突然峰值。 如果您在系统中看到 2GB 或更多的 VRAM,请知道它的目的是保持游戏流畅,即使在 4GB GPU 上也是如此。 别担心,我们不会浪费您宝贵的 VRAM。我们只是在您需要时保持温暖和舒适。 这也具有节省系统RAM消耗的额外好处,使8GB RAM用户拥有更稳定的游戏玩法。
所有这些还不足以让4GB VRAM或更少的用户获得稳定的游戏玩法,所以是时候揭开柚子上的王牌了。 如果模拟器不再依赖于像素精确但更大的纹理格式,而是重新压缩为其他一些较小的格式,该怎么办?RGBA8
女士们,先生们,我们向您展示了一个可用的新选项,旨在通过将那些被Ganon诅咒的不受支持的ASTC纹理转换为更适合低VRAM GPU的纹理来减少VRAM消耗。ASTC 纹理重压缩 > 设置 > 图形 > 高级 > BC3中等质量

原理非常简单,我们只是在重新压缩过程中再添加一个步骤,从 ASTC > RGBA8,到 ASTC > RGBA8 > BC1 或 BC3。
默认设置使用旧方法,该方法保留了原始图像质量,但也消耗了最多的 VRAM。 对于希望 模拟 ,如果他们的 GPU 至少有 10-12GB 的 VRAM,我们建议设置此选项。 对于其他更合理的游戏,此选项适用于拥有至少 4GB VRAM 卡的用户。Uncompressed RGBA8 Tears of the Kingdom
该设置将 ASTC 纹理的 VRAM 使用量减少了四倍,质量损失非常小,通常显示为稍微柔和的纹理。 建议在 6GB 和 8GB GPU 上模拟此设置。 对于其他游戏,此设置适用于具有 3GB VRAM 的 GPU。BC3 (medium quality)Tears of the Kingdom
最后, BC1 (low quality)Tears of the Kingdom 该设置将VRAM消耗减少了八倍,但也会对纹理质量产生重大影响,以至于某些资源看起来完全不同。 除非确实有必要,否则我们不建议使用此设置。 它允许拥有4GB VRAM的用户在没有重大问题的情况下玩游戏,并使2GB用户在其他游戏中获得更流畅,更可靠的体验。



如您所见,BC1 在某些游戏中会破坏图像质量。



但在其他情况下,差异不太明显。 如果您只有2GB的VRAM和8GB的RAM,那么牺牲可能是值得的。
这目前是使用 CPU 完成的,但计划在未来进行 GPU 加速。 我们还希望在未来添加一个使用 BC7 的选项,以提供更高质量的体验。
请记住,ASTC重新压缩仅适用于ASTC纹理,因此实际的VRAM使用量减少将取决于游戏。并非VRAM中持有的每个资源都是ASTC的。 如果您的硬件可以本机处理 ASTC,则此设置不会为您执行任何操作,因为无需任何重新压缩。
此外,byte[] 还调整了内存管理器,使其更加无情。 此更改应有助于提高在 RAM 较少的系统上长时间会话期间的游戏稳定性。 柚子始终致力于在具有独立显卡的系统上支持至少8GB的RAM。
他还确保在配置步骤期间不会发生内存收集,这样它就不会导致设备丢失(即 GPU 驱动程序关闭)。
通过修复切片上的块深度调整,Blinkhawk 解决了影响地形上阴暗纹理的渲染问题,这个错误在低 VRAM 硬件上尤其令人沮丧。Tears of the Kingdom


对于具有 16GB 或更少系统 RAM(内存) 的集成 GPU 用户,例如 Steam Deck,新手 scorpion81 为您提供了优化。将硬上限设置为 4GB 可以*放播**,而不会太用力地撞击页面文件/交换。Tears of the Kingdom
视频加载中...
视频加载中...
以上总结了对内存管理所做的更改列表,以允许至少在我们的硬件要求中列出的组件中*放播**。Tears of the Kingdom王国之泪
如果 GPU 仅支持 ASTC 纹理,则不需要进行这些更改。 难道你不希望你的游戏不超过100GB,而不是拥有破坏图像质量的软件功能,比如帧生成吗? 本机ASTC解码支持将使这成为可能。
英特尔锐炬 Xe iGPU 可以在手持模式下以 30 FPS 的速度运行游戏,同时使用的内存比任何其他硬件组合都少,这一切都归功于他们最后一个能够解码 ASTC 的 GPU。 稍后将详细介绍英特尔的驱动程序支持。

这是最糟糕的部分...到目前为止。需要做更多的工作才能使游戏正确启动和渲染。让我们深入了解一下。
Switch和Android设备的共同点是它们呈现在屏幕上的方式。 Google的操作系统使用(唯一好的Linux演示方法),而Switch使用,这是为Switch的固件和操作系统设计的定制改编。 虽然这为我们提供了一个很好的参考框架,说明应该如何模拟,但有时错误仍然会潜入。 这些错误并不总是很容易发现,特别是如果到目前为止没有游戏存在渲染问题。SurfaceFlinger nvnflinger SurfaceFlinger nvnflinger
byte[] 意识到 yuzu 错误地序列化绑定器响应(与 Android 的方式不同)。 修复这个允许启动的简单错误。Tears of the Kingdom
同时,Maide 实现了 Kristijan1001 建议的着色器修复,解决了 The Deeps 中云闪烁和缺少几何体的问题。

接下来是一个只影响基础游戏的错误。后续更新不受影响,因为它们以不同的顺序呈现。

右侧这个神秘的红点是由于清除时错误地跟踪呈现器目标索引引起的。 由于Maide所做的一些行为改变,Link不再被监视。
游戏发布后,一些用户报告说,游戏存档文件中的日期始终设置为 1 年 1970 月 <> 日。 在检查了 Switch 的行为后,byte[] 实施了一些更改,通过更新的服务实现解决了这个问题,该服务实现允许以纳秒为单位计算时间,自动调整时钟偏差,并使用与系统稳定时钟相同的时钟源。
还有报告称,在使用 2X 分辨率缩放因子时会出现图形故障:切换*器武**后,链接和地形纹理会损坏。

Blinkhawk 很快找到了这个问题的原因:在缓冲区缓存中负责同步的代码中执行了错误的清除。一些调整,游戏可以在缩放时安全地玩。
对于Linux AMD用户,尤其是那些没有使用最新Mesa RADV Vulkan驱动程序版本的用户,byte[]发现动态深度钳位的功能之一在驱动程序中实现不正确,导致游戏中某些说明性时刻的顶点爆炸。VK_EXT_extended_dynamic_state3


禁用受影响驱动程序版本及更早版本的功能可解决此问题。
另一个已发现的问题影响了Ultrahand技能的光线投射,旨在帮助玩家定位物体。 绿色光芒具有像素化的外观,这是由于附件反馈回路上缺少屏障造成的。


敲了几下键盘后,byte[]因羡慕而变绿。
在奇怪的渲染问题列表中,下一个是影响摄像机变化的问题 - 例如,与NPC交谈或用弓瞄准/投掷*器武**时。 玩家面前的大片区域会变黑一帧,然后恢复正常。 不用说,这非常分散注意力。
视频加载中...
此错误是由纹理缓存处理别名和重叠的方式引起的,这些别名和重叠的顺序错误并导致同步问题。 经过 Blinkhawk 和 byte[] 的几次尝试,这个问题终于得到了解决。
在调查与王国之泪相关的错误时,还发现了隐藏在代码中 3 年的复制粘贴错误。 在着色器重新编译代码中,罗德里戈将错误的值从一行复制到下一行。 这是另一个有趣的案例,直到现在问题才成为问题,因为直到塞尔达需要再次救援之前没有人注意到这个错误...... 通过更改单个字符,byte[]解决了可以从整个地图的远处发现的地形间隙,但在The Deeps中最为明显。Tears of the Kingdom


在一个需要UI设置来改善游戏渲染的有趣案例中,byte[]添加了一个选项来清理游戏的缓存存储,当右键单击柚子游戏列表中的游戏时,可以从菜单中访问该选项。Remove

此选项是必需的,因为使用异步着色器构建会弄乱*器武**选择菜单中的融合*器武**图标以及自动构建历史记录。Emulation > Configure… > Graphics > Advanced


禁用异步着色器构建并清除缓存存储可以让游戏正确重建所有*器武**化可憎之物的图像。
这是迄今为止的进展! 您可能已经注意到此处未提及性能改进。 我们遵循最重要的编码规则之一,“让它工作。做对。快点。”The Legend of Zelda: Tears of the Kingdom
由于这是一款特别受欢迎的游戏(并且有充分的理由),以下是用户报告和修复告诉我们的一些建议。
这个游戏对硬件的要求很高。我们在柚子的硬件要求中列出的是在大多数地区维持 30 FPS 所需的最低要求。6核台式机Zen 2 / 11代核心,16GB RAM和至少6GB VRAM的GPU是目前的基准。Recommended
最新的CPU(Zen 4/13代核心,总是说到台式机产品)在IPC,RAM带宽和缓存大小方面提供了巨大的改进。锐龙 7 5800X3D 勉强管理 55 FPS,而锐龙 5 7600 达到 90 FPS。
正常的 GPU 精度可用于安全地提高性能。
不安全的 CPU 精度可能会以小的不准确性为代价来提高性能。
启用异步表示会稍微降低性能。
不要用于此游戏,它会导致崩溃。Decode ASTC textures asynchronously
在极少数情况下,音频事件可能会导致崩溃,因此在使用多箭弓和*弹炸**时要小心。
深渊特别渴望VRAM。请记住,如果您缺乏VRAM,请使用ASTC再压缩。我们建议至少 8GB 的 VRAM,以便使用 BC2 压缩进行 3 倍分辨率缩放。
模组社区一直在提供惊人的模组。动态帧率、改进的分辨率和细节等等,只需点击几下即可。以下是包含建议的集合。
与游戏基本版本(1.0.0)兼容的旧FPS模组不稳定,在某些操作(如游戏结束屏幕)期间会导致软锁和崩溃。更新您的游戏并使用更新的模组。
请记住在报告问题之前在没有模组的情况下测试游戏,因为模组仍在更改内存区域以正常工作。
如果您由于模组制作者的建议而禁用,请仅对 执行此操作,因为您将严重影响其他游戏的性能。右键单击柚子游戏列表中的游戏并选择属性,将显示每个游戏的配置。强烈建议在所有情况下保持启用状态。Use Fast GPU Time启用快速GPU时钟 Tears of the Kingdom Use Fast GPU Time
现在开始。让传奇复活。
石灰计划
打赌你没想到这一点。
没错,在Skyline章程的加持下,Dolphin的t895和Citra的GPUode的帮助,yuzu和Citra的flTobi,bunnei,Merry,Flamboyant Ham,German77等等的工作,yuzu现在可以用于Android设备!
我们建议您在此处阅读Android上的专用柚子文章。 在本节中,我们将向您概述我们的未来计划,有关设置和硬件要求的一些提示,以及对您现在可以在Android上对yuzu的期望进行现实的展望。
Android版本的柚子并不是一件容易的事。我们花了将近八个月的努力才实现这一目标。 目前,核心基本上与桌面版本相同,具有Android UI和很少特定于平台的调整。 这意味着您可以享受 32 位游戏支持、NVDEC 视频解码支持、运动、控制器自动映射、分辨率缩放和过滤器等功能。 另一方面,mod 和作弊管理、LDN 和控制器配置小程序等功能仍在开发中。 我们的目标是逐步使Android版本与PC版本达到同等水平。
除了Google Play商店,我们很快就会在我们的GitHub上发布版本,F-Droid也即将到来。

我们从Project Lime中学到的最大教训之一是,即使在NVIDIA Tegra X8(为Nintendo Switch提供动力的SoC)推出1年后,Android SoC供应商仍然不知道如何制造GPU驱动程序。
他们都在 2016 年大约在同一时间开始研究 Vulkan 驱动程序。然而,除了极少数的NVIDIA设备外,他们都没有设法提供兼容且稳定的Vulkan Android驱动程序。
很明显,只有4家供应商拥有使Vulkan驱动程序工作的专业知识和承诺:NVIDIA,AMD和Mesa,特别值得一提的是英特尔,他们最近加强了他们的游戏。
虽然不是这 4 个中的一个,但我们决定,如果我们不想花几个月的时间进一步修改我们的 GPU 代码以适应 Android 手机和平板电脑的所有怪癖和损坏的扩展,那么限制对高通 SoC 的支持是我们目前唯一的选择。 不是因为他们的司机体面——这很糟糕。 但它足以让一些游戏渲染,尽管大多数时候都是错误的。
高通是最好的选择(目前是唯一的选择),因为章程创建了AdrenoTools,它允许用户在其Adreno 600系列GPU上加载非常优越的Mesa Turnip驱动程序,提供更准确的渲染,与PC产品的质量相当。 任何名称为“Snapdragon ###”的高通SoC,从配备Adreno 460系列GPU的888到600+都可以选择使用专有的高通驱动程序或Mesa Turnip。
您可以期望从配备Snapdragon Gen 1或Gen 2的设备中获得的性能提升非常显着。 但问题是,虽然它附带的Adreno 700系列GPU在硬件方面非常强大,但它专有的高通驱动程序充其量是低于标准的,而Mesa才刚刚开始努力增加对萝卜的支持。 有一个早期的驱动程序版本可供测试,但目前结果不是很好。 我们需要数周甚至数月才能看到适当的支持出现。与此同时,我们打算努力改进官方 Adreno 驱动程序的渲染。


Adreno500系列对柚子来说太过时了。其专有的Vulkan驱动程序缺少所需的许多基本功能,Turnip也没有计划支持它。
马里是良好但薄弱的硬件受到其可用驱动程序怪癖限制的一个例子。 与Adreno不同,Mali没有可行的Mesa替代品来拯救它,目前专有的Mali驱动程序在Switch仿真方面处于不良状态。 它目前的状态是它不会在柚子上启动任何游戏,但是:


我们正在努力解决尽快在柚子上渲染马里所需的所有怪癖。 毕竟,这是平台上最常见的GPU供应商。 马里的支持会发生,我们只需要一些时间。 期待很快的消息!
最后一种应该工作但不能工作的硬件是三星基于AMD RDNA2的Xclipse 920,仅用于最新的Exynos 2200 SoC,并且不知何故完全跳过了S23系列手机。 现有信息表明,它可能只是一个移植到Android的旧AMD Windows驱动程序,但由于某种原因,设备拒绝在yuzu上开始渲染。 这是我们想要工作的GPU,因为没有明确的原因为什么它不起作用,而台式机AMD产品几乎可以完美运行。 不幸的是,我们还没有能够得到一个,但一旦我们这样做,我们将更新更多信息。
对于所有其他供应商,如PowerVR,Vivante等:不要打扰。 这些供应商提供的驱动程序质量如此之低,以至于无法提供支持。
我们正在努力提高 GPU 兼容性,在供应商设置的限制内添加启动所需的必要更改。
CPU 仿真仍然依赖于 Dynarmic JIT,而不是本机代码执行。 这允许我们运行 32 位游戏,但对于 64 位游戏来说很慢。 期望“良好”的兼容性,因此类似于桌面版本,但性能低且温度高。 原生代码执行或NCE(我闻到了吗?)在我们的Android版本目标列表中。Mario Kart 8 Deluxe Project Nice
CPU本身虽然对性能非常重要,也是目前的主要瓶颈,但由于前面提到的原因(驱动程序),它不如GPU重要。 与PC上相同的规则适用于此处:首选6个或更多内核,强烈建议使用尽可能高的IPC。Snapdragon 8 Gen 2的速度是Snapdragon 865的两倍。
RAM的使用既是福也是祸。 这是一件幸事,因为Android设备本身支持ASTC纹理 - 该格式是为此类设备设计的。 这允许GPU使用很少的RAM,就像在交换机上一样。
诅咒在于,由于Android是一个如此繁重的操作系统,因此无法保证复杂的游戏可以在具有6GB RAM的设备上运行。强烈建议使用8GB,它将兼容性置于频谱的昂贵方面。 我们写了很多关于某个塞尔达游戏目前至少需要 12GB 的 RAM 才能运行。
人们一直在努力降低内存需求,例如本机代码执行和GPU代码的UMA优化,但现实情况是,仿真会增加开销,Android只会随着时间的推移而变得更胖。 我们也许能够在2GB设备上运行轻型4D游戏,但我们预计复杂的3D游戏不会很快在小于8GB上运行,如果有的话。
我们已将所需的最低操作系统设置为 Android 11。 做出此决定是为了防止在完全不合适的硬件(如 Adreno 500 系列设备或较旧的 T 系列 Mali GPU)上安装,并尽可能减少在低内存设备上的安装。 这是最终的,因为没有计划支持较旧的Android版本。
当然,它必须是 64 位 Android 11 或更高版本;就像在桌面上一样,32 位设备将永远不受支持。
具有强大硬件卡在旧Android版本的用户可以自己构建yuzu并删除负责执行此检查的代码,或者安装自定义ROM,例如LineageOS以在其设备上获取非官方的Android更新。

现在我们已经介绍了Android软件和硬件的严酷现实,让我们专注于当前的体验。
我们包括了一个带有触觉的可自定义输入叠加层,如果您更喜欢使用蓝牙 Xbox 控制器、索尼 Dualshock 4 或双感或任天堂 Pro 控制器和帧速率计数器玩游戏,则可以禁用该叠加层。 您可以通过从屏幕左侧拖动来访问游戏中的这些设置。
如果从以前的版本更新,则叠加层可能不可见。只需选择即可使其再次可见。Overlay Options > Reset Overlay

玩游戏时,您可以从左侧菜单中选择设置,或从主菜单中选择它。


在这里,您将找到设置和自定义选项。大多数都是不言自明的,但如果您想解释高级设置中的选项,请在此处查看我们的设置术语表。
初始配置完成后,只需点击一个游戏即可玩。 为方便起见,可以使用搜索选项以及一些搜索过滤器。


PabloG02添加的首批改进之一是可以从设置中访问的保存管理器。 这使得导入和导出保存非常简单。谢谢!

要记住的一件重要事情:Android拥有最多的...异常的文件系统权限。 我们建议在存储根目录上创建一个 yuzu 文件夹来存储密钥,以避免任何权限问题。
您可以从此处获取不同的Adreno和Turnip驱动程序版本进行测试。 请记住,此选项只会更改柚子的驱动程序。它不会(也不能)在系统级别上替换任何东西。
在撰写本文时,我们建议将Mesa Turnip 23.2.0(如果您有 Android 23.1.0,则为 11)用于 Adreno 600,而 Adreno 700 用户可以运行 Qualcomm 676.22 驱动程序以在一定程度上提高性能和兼容性。
这里有一个早期的alpha Mesa Turnip版本,支持Adreno 730和740产品(但不是725)。 它还与Adreno 600系列硬件兼容,因此它是一个简单的全局驱动程序进行测试。
有报道称用户无法加载自定义驱动程序 - 我们仍在调查此问题,但仍有很多工作要做。
对于那些有兴趣使用源代码的人,我们在这里有一个正在进行的构建指南。
这就是...你的意思是还有一整篇文章要写? 哦,对了,我们还有更多要谈的!
其他图形更改
因为这毕竟不仅仅是一个塞尔达模拟器。
谁想要更多好东西? Blinkhawk为我们提供反应性冲洗,配薯条。Project Y.F.C.
在柚子的早期,如果CPU要读取由GPU修改的区域,主机和来宾GPU(模拟和系统的GPU)之间的完全同步刷新将触发(我们称之为“旧的反应式刷新”)。 这是安全的,可以正确呈现,但也很慢。 几年前,Blinkhawk 用预测刷新取代了这个系统,显著提高了性能,但引入了一些图形回归,例如阴影和照明破碎、保存和照片上的缩略图错误,甚至顶点爆炸。
随着柚子的发布,Blinkhawk引入了新的反应冲洗,它具有以下修复:
修复了旧的回归,如 的阴影。Bayonetta 2
修复了游戏中的照明问题。Xenoblade Chronicles
改进了缓冲区密集型游戏(如 )的性能。Monster Hunter Rise
一堆游戏中的缩略图和游戏内照片,例如:保存在 和 中,相机照片在 中,以及部分修复缩略图。Xenoblade Chronicles Definitive EditionXenoblade Chronicles 3ASTRAL CHAINLuigi's Mansion 3
顶点爆炸在和 .Pokemon Violet/ScarletYoshi’s Crafted World
使高 GPU 精度充分利用 Vulkan 中的异步缓冲区,从而提高性能。




从头到尾:贝姐2,星际锁链,异度之刃编年史最终版和路易吉的豪宅3



从头到尾:马里奥+兔子王国之战、神奇宝贝朱紫和耀西的手工世界
该选项仍然会带来性能成本,有时甚至是相当大的成本。 默认情况下,它处于启用状态,但用户可以从 模拟 > 设置… > 图形 > 高级 > 启用反应性刷新 中禁用它。 如果您需要性能,并且可以容忍通过禁用它引入的图形错误,则可以使用此选项。

使用AMD和Intel GPU的用户抱怨说,在使用Vulkan时,高帧率模组无法将帧率推到显示器的刷新率以上。 这是因为 VSync 切换基于兼容性为每个硬件驱动程序假定最佳选项。
在旧的OpenGL时代,过去只是VSync打开,关闭或三重缓冲区,现在使用Vulkan变得更加复杂,即使当前的游戏坚持出于传统原因错误地将设置称为“VSync on”。 事实上,现在 GPU 驱动程序通常支持 4 个 VSync 选项:
Immediate:无 VSync。会发生撕裂,但不适用帧速率限制。
FIFO:双缓冲。这相当于柚子的旧VSync。撕裂不会发生,但输入将有一帧延迟,并且刷新率不能超过显示器的功能。
Relaxed FIFO:与常规FIFO相同,但如果发生不同步,则允许发生撕裂。可以认为类似于自适应 VSync。适用于具有动态帧速率的游戏。
Mailbox:三重缓冲,避免撕裂,同时允许帧速率高于显示器的刷新率。类似于AMD所谓的增强同步,以及NVIDIA所谓的快速同步。
Mailbox是大多数游戏的明显推荐,所以当然只有Windows上的NVIDIA,Linux上的Mesa和Android驱动程序支持它。

根据作者的乞求请求,ToastUnlimited 将图形菜单中的旧 VSync 切换更新为适当的下拉列表,其中提到了所有可用的 Vulkan 选项。

例如,如果在 Windows 上使用 AMD 或英特尔 GPU 的人想在 120 Hz 显示器上使用 60 FPS mod,他们现在可以选择使用Immediate模式,这是模拟器在*放播**器使用 Ctrl + U 解锁帧速率时切换到的模式。 其余的可以使用Mailbox。Super Smash Bros. Ultimate
我们建议将驱动程序的控制面板设置为增强/快速同步以获得最佳结果。



Maide 发现了与管道缓存大小相关的问题。 Yuzu 曾经以字节为单位返回着色器代码的大小,后来用于调整负责存储缓存的无符号 64 位整数数组的大小,使数组比应有的大小大 8 倍。 这是通过使用数组的长度而不是以字节为单位的大小来修复的。
拥有 8GB RAM 的用户的一个常见抱怨是游戏随着时间的推移变得不稳定。这不一定是内存泄漏 — 它可能只是系统在将新着色器添加到管道缓存时耗尽了 RAM。 这种变化使他们受益匪浅。但现在是 2023 年,您应该认真考虑现在获得 16GB。王国的眼泪不是超级马里奥奥德赛。
ASTC继续成为新闻 - 这次是3D ASTC纹理的问题,因为它不足以处理平面2D纹理。 他们实现中的一个错误导致关卡疯狂场渲染不正确。 “鹰派”进行了一些调整,孔军又重新开始行动了。Donkey Kong Country: Tropical Freeze

Yuzu 的缓冲区缓存负责存储大多数形式的任意数据供 GPU 处理。 缓冲区可以由 GPU 或 CPU 修改,因此 yuzu 会将缓冲区跟踪到一种类型的修改,然后等待另一种类型的修改来同步数据。但实际上,在跟踪修改之前执行同步会更有意义。 Maide注意到了这种差异,并着手纠正它,简化代码。
由于旧代码将全局跟踪缓冲区,因此某些绘制最终会忽略通道交换,从而导致来自错误通道的剩余值绑定在统一的缓冲区中。 相反,如果我们将缓冲区绑定移动到特定于通道,则问题就解决了。 此修复也应该会影响使用多个 3D 通道的更多游戏。
继续代码优化,Maide 发现渲染目标的选择方式存在一些不正确的行为。
(在RTX出现之前渲染开发人员的OG RT)是一种纹理,其中包含要在绘制或清除操作期间渲染的图像。Render Target
模拟器必须查看可用呈现目标的格式,以确定要清除哪个呈现目标。 例如,假设有 5 张图像绑定为渲染目标,从 到 编制索引,并且游戏请求清除带有索引的渲染目标。 下一步是查看数组中渲染的格式。 这就是旧代码工作不正确且效率低下的地方,因为它会遍历所有呈现目标并选择返回与之对应的有效格式的第一个呈现目标。 这很可能符合预期,或者更早的呈现目标,例如 or ,在这种情况下,代码将完全忽略我们想要清除的实际呈现目标。042target[2]target[2]target[2]target[0]target[1]
简而言之,由于清除错误的渲染目标的风险,此过程既慢又可能不安全。 Maide 对此不满意,努力解决它,清除了正确的渲染目标。
是时候引入另一个术语了! 是 Vulkan API 的一个功能。其目的是允许 CPU 以有效的方式更新输入绑定,即着色器使用的资源列表。Descriptor Sets
以前,yuzu 会在来宾操作(直接从游戏翻译的操作)和主机操作(柚子为模拟 Vulkan 中不存在的特定 Switch GPU 功能而执行的操作)之间共享相同的描述符集更新队列。 这可能会错误地导致主机操作在处理期间覆盖来宾管道的描述符集更新。 充其量,这会破坏来宾管道的状态,最坏的情况是,它会关闭整个 GPU 驱动程序。 如果您在游戏中遇到随机崩溃,,您现在可能知道原因。Xenoblade Chronicles Luigi’s Mansion 3 Bayonetta 3
那么,如何解决这个问题呢?“简单!”让我们为主机和来宾计算管道提供自己的队列。将此信息放在单独的队列中可以修复数据完整性问题,从而大大提高稳定性。
新人Danilaml在负责解码H.264视频的标头中发现了一个缺失的位标志。 这将修复 的视频呈现。Layton's Mystery Journey: Katrielle and the Millionaires' Conspiracy

danilaml 还通过使用 FFmpeg 附带的 yadif 滤镜增加了对去隔行扫描视频*放播**的支持,修复了游戏的视频渲染。 谢谢!
英特尔的Linux Mesa Vulkan驱动程序ANV破坏了版本22.3.0及更高版本的扩展,导致几款游戏无法启动。 toastUnlimited禁用了扩展以确保适当的游戏兼容性,然后,在ANV开发人员快速响应解决问题后,byte[]允许在当前的Mesa版本上使用该扩展。 Mesa是应该如何完成GPU驱动程序开发的一个例子。VK_KHR_push_descriptor
GPU 通过删除等待信号量,将使用 Vulkan 时的整体性能提高了几个百分点。每一点都有帮助。
Epicboy继续他的十字军东征,以改进OpenGL。 这一次,他修复了将 ASTC 重新压缩设置为“未压缩”时使用的问题。Accelerate ASTC texture decoding
最后,为了结束此部分,Maide 通过跳过应用程序不使用图形时不需要的缓冲区缓存部分来修复自制控制台应用程序崩溃的问题。
盖亚精简计划
byte[] 自己实现了一些文件系统更改,让我们体验了即将发生的事情。
这是一个有趣的问题。为什么启动或使用模组需要几分钟? 因为随着游戏中文件数量的增加,旧的实现变得二次变慢了!Fire Emblem EngageAnimal Crossing: New Horizons
修复可怕的时间复杂性将启动期间的补丁时间从一分半钟减少到三秒,从大约一分钟减少到一分半秒。哇!Fire Emblem EngageAnimal Crossing: New Horizons
该函数并不是不必要的二次行为的唯一来源。读取次数也随着文件计数的次数呈二次增长,文件数量现已得到优化,改善了游戏内加载时间和启动时间。
我们发现的另一个减速来源是不必要的复制和释放字符串,我们计划在未来的盖亚项目中解决这个问题。
最后,需要存根保存数据读取器才能启动。cache storageTears of the Kingdom
输入和 Amiibo 改进
HD Rumble是Switch的营销功能之一,这是一种很酷的说法,官方Switch控制器负责隆隆声,而不是我们过去习惯的老式隆隆声电机。Linear Resonant Actuators
好吧,索尼的DualSense控制器也有线性谐振执行器,所以理论上,它应该能够模拟高清隆隆声。 问题在于,SDL,我们用来在柚子上支持非任天堂控制器的API,目前没有公开利用这些花哨的执行器的方法。
好吧,新人marius851000为DualSense所有者改善了这种情况,因此他们提出了根据游戏要求的频率更改隆隆声幅度的想法,其中140-400 Hz作为低频,200-700 Hz作为高频。 通过这种方式,可以实现一些“隆隆声音频”的感觉,以及整体上更好的摇晃体验。 谢谢!
为了帮助您查看运动控件是否正常工作,German77 在控制器预览中添加了一个可爱的小立方体。 随意玩它!

摇杆漂移并不是使用控制器的游戏玩家唯一担心的问题,还有更罕见的运动漂移!这可能是自然发生的,也可能是在一些严肃的游戏时刻之后发生的,因此需要重新校准的选项。 值得庆幸的是,German77 处理了它,如果您右键单击 中的运动 # 映射,请添加该选项。 如果您使用它,请记住将控制器/设备放在平坦的表面上至少 5 秒钟,以便该过程可以进行。模拟 > 设置… > 控制

现在,对于肮脏的作弊者来说,这是思想开放的玩家。 游戏会阻止尝试多次使用相同的 Amiibo,因此 german77 添加了一种每次使用 Amiibo 时随机生成新 ID 的方法。可以从 启用该选项。模拟 > 设置.. > 控制 > 高级 > 使用 Amiibo 随机ID

请记住,如果ID更改,例如会抱怨的游戏。Super Smash Bros. Ultimate
在使用 Joy-Con 时,扫描 Amiibos 似乎是一项非常苛刻的任务,因为可用的蓝牙带宽。 为了缓解这种情况,German77 将扫描速率从每帧一次(30 或 60 Hz)降低到 5 Hz,并将获取有效数据的尝试次数从 1 次减少到 7 次。 这应该可以缓解正确的 Joy-Con 对可用蓝牙带宽的过度饱和,从而大大减少卡顿。
但是,如果您想在Pro控制器上享受一些Amiibo扫描怎么办? 以前,支持仅适用于 Joy-Cons。 但是现在,也支持Pro控制器!只要控制器通过蓝牙连接,并且在 中启用了自定义 Pro 控制器驱动程序。 这个实验标签现在已经进入了最后的日子。模拟 > 设置.. > 控制 > 高级 > 启用 Pro Controller 直接驱动 [实验性]

除了Amiibo的更改之外,German77还在使用Joy-Con或Pro控制器时实现了对Amiibo编写的全面支持! 这样可以为完整的Amiibo仿真启用最后一个缺失的部分,就像您在Switch本身上使用它们一样。
随意扫描到你心满意足!只要你设法在它们有闲置时抓住其中任意一个塑料东西。
值得一提的是,写入 Amiibo 数据需要转储相关密钥。 但是,如果您只想加载解密的 Amiibo 转储,German77 添加了对使用它们的支持,而无需转储 Amiibo 密钥。
此时,完成Amiibo支持的唯一事情就是添加一个管理者!
音频和其他更改
反对适当关闭柚子的战争仍在继续。 这一次,Maide 在 DSP 引擎中实现了修复,使其在终止所需的系统实例之前关闭。 这样就可以避免在关机期间出现死锁,从而略微改善情况。 另一场战斗赢了,但还剩下多少?
下一个让我们想知道...Ronikirla报告说,由于游戏两个小时后违反读取访问,它将持续崩溃。Pokémon Mystery Dungeon Rescue Team DX
这不是一个简单的要追踪和修复的错误,但是ronikirla的Twitch聊天中的某人将该问题确定为地址空间代码中的错误块检查,并传递了修复程序。

更改似乎也可以修复.Advance Wars 1+2: Re-Boot Camp

最近对音频仿真所做的更改提高了性能并解决了崩溃问题,但也有一个有趣的回归。 某些声音效果以较慢的速度*放播**。
在进行了一些广泛的逆向工程后,Maide得出的结论是,由于DSP的工作方式,在处理等待中需要5毫秒的超时。 实施超时后,其他人现在可以全速*放播**音频。SUPER MARIO ODYSSEYKirby Star Allies
Danilaml继续提供好东西。 这一次,只需更新 cubeb(我们的音频后端之一,大多数时候是默认后端)修复了一个错误,该错误在将 PC 从睡眠状态唤醒后使模拟器静音。
用户注意到,在最近更改修复有线音频后,许多游戏中的音频可能会不同步并且声音噼啪作响或失真。 章程建议,如果队列太大,允许音频缓冲区无限期等待,所以 Maide 实现了这个想法,瞧,问题消失了! (请原谅我的法语;西班牙语更酷)。SUPER MARIO ODYSSEY
用户界面改进
如果您的柚子配置了多个用户配置文件,并且启用了选项中的选项,则必须单击要启动的配置文件,然后单击确定。 好吧,对于新来的Qigo42来说,这并不令人满意,因此他们允许只需双击即可使用配置文件选择弹出窗口! 没有什么比生活质量的变化更胜一筹了。谢谢!Prompt for user on game boot Emulation > Configure > General
jbeich 回来了,再次修复了 BSD 支持! 拥有更多的操作系统替代方案总是好的。
延续生活质量变化的趋势,新人格里姆科尔为我们准备了一份不错的礼物。

过滤器和抗锯齿选项的上下文菜单!如果您想尝试其他选项,则不再需要浏览整个选项列表,只需右键单击并选择即可。 谢谢!
如果您双击游戏列表中的游戏,您最终可能会再次双击它或在游戏列表卸载之前按回车键,这会导致柚子尝试加载游戏两次,通常只是崩溃。 German77 通过在游戏启动后立即禁用游戏列表来解决此问题。
硬件部分
我们不再只支持PC!在以后的文章中,我们将包括Android GPU供应商的任何新闻。
英伟达
我们有一些好消息,也让绿队有点失望。 但首先,我们在麦克斯韦和帕斯卡问题上取得了一些进展。
过去,我们曾经建议用户坚持使用GTX 750/900/1000系列的旧驱动程序版本,因为任何比470驱动程序系列更新的东西都不稳定。 多亏了垃圾回收器所做的工作,我们现在知道这些卡的问题在于驱动程序如何处理内存不足的情况。 我们甚至能够在4GB的图灵卡上观察到它,所以它并不是旧卡所独有的,我们只是没有像塞尔达那样使用VRAM的游戏。Tears of the Kingdom
我们通过测试用例向 NVIDIA 报告了我们的发现,所以现在它掌握在他们手中。
当VRAM填满时,AMD卡会变得越来越慢,直到它停止工作并导致yuzu崩溃,而NVIDIA GPU会损坏整个桌面,带走所有显示器,有时甚至强行重新启动系统。
使用 ASTC 重新压缩选项有助于避免此问题。 但如果确实发生了,它仍然可能导致系统锁定或重新启动,因此我们需要一种方法来缓解此问题,同时 NVIDIA 调查该问题。


幸运的是,我们偶然发现了解决问题的权宜之计,我们更新了推荐的设置指南以包含它。 只需在 NVIDIA 控制面板中更改为 。 用于使 AutoHDR 正常工作的相同设置有助于控制 VRAM 外崩溃。 将其与BC1 ASTC重新压缩结合使用将使旧的2GB卡运行而不会崩溃。Vulkan/OpenGL presentation methodPrefer > layered on DXGI Swapchain

切换到新闻好的一面,HolographicWings在这里制作了一个关于如何在柚子中使用的绝佳教程。 DLDSR是一种使用RTX卡中可用的张量核心来放大图像的方法。您可以将其视为 DLSS 和 FSR 1.0 的混合体,因为它适用于任何游戏,但使用深度学习而不是传统的过滤器。 不用说,如果您有测试它的硬件,这是提高图像质量的好方法。DLDSR
在其他好消息中,Special K 现在支持 Vulkan 中的 HDR,并且可以与柚子配合使用! NVIDIA仍然是唯一受支持的供应商,因为这要归功于神奇的选项,但是Special K在AutoHDR上提供的质量和定制非常出色。昂贵的OLED从未如此诱人。Prefer layered on DXGI Swapchain
请注意,我们已经在测试中确认需要手动启用才能使 Special K 正常工作。 這還包括其他 NVIDIA 独有的好处,例如由于 NVIDIA Reflex 而減少输入延迟。 随意尝试该应用程序,这太棒了。Prefer layered on DXGI Swapchain
以下是一些 .jxr 格式的比较图片,可以使用 Windows 11 附带的默认照片应用打开它们,以及.png格式的 SDR 控件捕获:
首先是 SDR 中的场景,即默认体验。
Windows 11的AutoHDR与Cemu重命名技巧。
禁用感知增强功能的 SpecialK HDR。
启用了感知增强功能的SpecialK的HDR。
请记住,Special K需要根据显示器的功能进行调整,而我简陋的350尼特技嘉G27Q对这种变化在真正好的HDR显示器上可以做的事情是一种伤害。 如果您有 OLED 或具有调光区和更高峰值亮度的显示器,则期待更好的结果。
现在,谈谈令人失望的消息:RTX 4060 Ti。
我们不明白NVIDIA在决定Ada Lovelace GeForce产品堆栈时做出了什么样的决定,但这只不过是错误。 RTX 4060 Ti 8GB只有128位宽内存总线和GDDR6 VRAM与其前身256位宽RTX 3060 Ti相比,真的是严重降级。 如果您获得较新的产品,您将在交换机仿真中获得较慢的性能。 我们别无选择,只能建议用户尽可能坚持使用安培产品,或者如果您由于某种原因(DLSS4000 或 AV3 编码)必须获得 1 系列卡,则在产品堆栈中瞄准更高的目标,这显然是 NVIDIA 的目标。
支持Ada的论点是增加的缓存大小,RDNA2过去证实这大大有助于性能,但它也有一个无声警告没有评论提及:如果你使缓存饱和,你留下了一个128位宽卡的性能,并且在使用分辨率缩放器时很容易使缓存饱和 - 只需2倍就足以降低性能。
在我们看来,花费 400 美元购买一张在 1 倍扩展之外性能糟糕的卡是一项糟糕的投资,应该完全避免。 我们希望 16GB 版本至少配备 GDDR6X VRAM,这将增加可用带宽并为此类工作负载提供实际的性能改进。
AMD
AMD在每个新驱动程序版本中都显示出稳步的进步,因此,对于Radeon所有者来说,yuzu的体验非常好,除了一些记录在案的硬件限制导致我们过去提到的图形问题。
主要的例外是影响 的渲染问题,这只发生在 RDNA3 硬件 RX 7000 系列上。Tears of the Kingdom



如您所见,纹理以一种有趣的方式被破坏。 我们在代码中找不到任何问题,旧硬件也不受影响,因此我们向 AMD 提交了一个简单的测试用例来演示问题的严重程度。 受影响的用户将不得不等待,看看未来的驱动程序更新是否可以解决此问题。
英特尔
之后...我们与英特尔就他们的驱动程序以及他们如何处理错误报告进行了特殊的讨论,我们很高兴地宣布最新的公共测试版驱动程序解决了我们七个月前报告的 SPIR-V 问题! 我们强烈建议英特尔 Windows 用户更新到此驱动程序,以提高大多数游戏的稳定性。
可悲的是,解决这个问题向我们展示了柚子有错的两个方面。 但幸运的是,这两个问题在最新的抢先体验版本中(在撰写本文时)的测试中都有修复。如果一切按计划进行,他们应该会在几天内到达主线。敬请关注。
第一个问题是在柚子的代码中。 一些计算着色器在某些地方存在障碍,导致生成无效的 SPIR-V 代码,虽然 NVIDIA 和 AMD 对此没有问题,但英特尔更密切地遵循 Vulkan 规范,并且不喜欢结果,导致崩溃。 在我们测试解决方案时,目前我们建议主线英特尔用户在 .Enable Compute Pipelines (Intel Vulkan only)Emulation > Configure… > Graphics > Advanced

另一个问题是硬件限制。 英特尔决定在其第 64 代图形产品 (UHD 12/Xe/Arc) 上取消对 Float700 操作的支持,而不提供驱动程序回退。 好吧,事实证明,由于未知原因,其过场动画需要极高的精度——当前英特尔硬件物理上缺乏的精度,导致我们在构建着色器时崩溃。 我们正在测试 Float64 到 Float32 着色器的转换来解决这个问题。 目前,Mainline Intel用户希望使用超过介绍过场动画的保存,或者使用OpenGL,因为OpenGL规范规定必须以某种方式支持Float64,即使它是通过软件仿真。Tears of the Kingdom
目前,该游戏可以以基本一致的30 FPS*放播**,i5 1240P运行Iris Xe iGPU(如果您坚持手持渲染),并且表现出比AMD的Vega iGPU更好的性能。
对于那些对桌面产品体验感兴趣的人,以下是使用 Arc A770 16GB 拍摄的镜头:
视频加载中...
未来项目
关于正在进行的项目,我们目前没有太多要宣布的 - 我们非常忙于Android版本!Tears of the Kingdom
GPU Code 正在做一些很酷的事情。其中之一是实施一种方法,使与在英特尔和AMD硬件上运行的DXGI演示等效;这样,AutoHDR可以与任何GPU供应商一起使用,而不仅仅是NVIDIA。
这就是所有!这次是真的。如果您已经达到这一点,感谢您的耐心等待和阅读到最后。我们希望您喜欢这份大型报告!下个月见!我们都需要一些睡眠...
本期总结:
8G以下显存用户建议设置BC3
4G以下显存用户建议设置BC1
王国之泪:
保持30帧畅玩的基准要求:6核心CPU,16G内存,6G显卡
禁用异步着色器并移除缓存可以有效减少游戏图像错误
Normal的GPU可以安全的提高性能
不要启用异步着色器
不要启用异步ASTS纹理解码
小于8G显存的机器建议使用BC3
小于4G显存的机器建议使用BC1
MOD会影响内存区域工作,如果出现错误建议取消MOD测试。
启用快速GPU时钟选项是所有游戏最好的选择。
YUZU现在可以用于Android设备:
基准是6核骁龙,8G内存,安卓11,而塞尔达至少需要12G内存。
高通的CPU是目前最好的选择,因为它允许用户在其Adreno 600系列GPU上加载非常优越的Mesa Turnip驱动程序,提供更准确的渲染,任何名称为骁龙的高通CPU,从Adreno 460开始,都可以选择高通专有的驱动和Mesa Turnip驱动,但很遗憾的是很多过时的GPU并没有人去支持它,如500系列。
到达骁龙8GEN1及8gen2的手机会有更好的体验,但温度是永远的痛处。
骁龙8gen2是骁龙865性能的2倍,但它仍然很热。。。
建议Adreno 600使用23.2.0,Adreno 700使用Qualcomm 676.22驱动。
那么拥有骁龙8gen2并且有12G内存且散热优秀的手机是什么呢?
如果你需要更高的性能,可以禁用“启用反应性刷新”。
2023年了,你的内存应该最少是16G。
体感漂移的解决办法是手柄控制器要放置在平面的地方至少5分钟后再次进行体感设置。
自定义英伟达显卡设置YUZU程序:
Vulkan/OpenGl现行方法:优先在DXGI交换链上分层
垂直同步:快
电环管理模式:最高性能优先
线程优化:开
RTX 4060 Ti 8GB只有128位宽内存总线和GDDR6 VRAM与其前身256位宽RTX 3060 Ti相比,真的是严重降级。