Switch模拟器YUZU进度报告2023-2月

Switch模拟器YUZU进度报告2023-2月

大家好!这个月,柚子的各个方面都发生了变化。我们在 GPU、内核、服务、输入、用户界面和体验、与驱动程序相关等方面进行了改进!

Y.F.C. 项目 1.75?

又一个月,又是一份YFC项目附录。介绍先前 1.5 版本中缺少的功能之一。

Blinkhawk为Switch的DMA引擎(或简称Accelerate DMA)实现了主机纹理下载加速。

DMA 加速通过让 GPU 处理纹理下载来减少大量开销,从而显著提高那些 CPU 瓶颈的游戏的性能。

过去,柚子通过主机的CPU和系统内存运行所有内容,滑动/取消滑动纹理的过程是主要任务。现在,此过程是在GPU及其VRAM上完成的,从而节省了CPU周期,避免了将信息传输回系统内存,并使我们能够访问现代GPU视频内存中可用的超高带宽。

当您发现一款受益于更快纹理下载的游戏时,数字不言自明:

其他 GPU(和视频)更改

在介绍 GPU 仿真中的渲染更改之前,让我们介绍一下我们一段时间没有触及的东西:视频解码。

首先,vonchenplus提高了复制视频帧数据的速度。也就是说,只要编译器注意到优化并使用它。当它起作用时,这有一个额外的好处,那就是减少了开始播放视频所需的时间。

接下来,Maide 禁用了多帧解码,这导致了一帧延迟,使 Maide 还可以选择将解码器设置为使用所有可用的 CPU 线程。虽然大多数人对视频解码性能没有问题,但运行旧 GPU 的人,例如 AMD 北极星系列(RX 400/500 卡),将使用他们的 CPU 解码 VP9 视频,因为这些旧卡缺乏所需的硬件解码器。

诸如此类的游戏将通过这些更改提供更流畅的视频播放。The Legend of Zelda: Skyward Sword HD塞尔达传说:天空之剑HD

好的,关于按顺序预渲染的2D帧已经足够了,那么真正的3D内容呢?令人高兴的是,我们有一些话要谈。

Behunin回来了,优化代码。有一个作业,只有一个作业,以使用其命令队列。问题在于它还在生成命令以及使用它们。通过摆脱这种不良行为,它又回到了仅使用命令的状态,为将来的更多修复开辟了道路。gpu_threadgpu_threadgpu_thread

即使在阴影中,epicboy仍然送给我们一些新玩具。真正的阴影中的杰出人物。

狂热的读者可能还记得,MSAA图像上传在Switch仿真中占有奇怪的位置。交换机可以使用其本机NVN API做什么,以及我们可用的图形API(OpenGL和Vulkan)允许做什么之间存在冲突。

OpenGL和Vulkan对MSAA纹理上传和复制都非常严格,让epicboy只剩下唯一可用的工具。是的,你是对的!是时候使用计算着色器了!

这样,渲染是准确的。请记住,这是仅适用于OpenGL的实现。与往常一样,Vulkan 的工作要多得多,所以这是以后的功课。

在修复 Blinkhawk 缓存写入拉取请求中的回归影响(使用正常 GPU 精度时游戏会冻结)的同时,epicboy 还修复了缺少建筑几何形状的问题。Yoshi's Crafted World 耀西的手工世界Pokémon Scarlet/Violet宝可梦:朱/紫

啊,ASTC,你们大多数人现在都知道挣扎了。手机、平板电脑、Mac、Nintendo Switch 等移动设备原生支持这种非常压缩的纹理格式,但笔记本电脑/台式机/服务器 GPU 没有。这使得 Switch 仿真社区难以缓解在不是为此类任务设计的硬件上解码这些纹理的缓慢过程的方法。

是的,即使是弱而过时的Switch在这项任务中也击败了RTX 4090。打赌你的钱包对这个事实不满意。

到目前为止,柚子在这场战斗中的武器是多线程CPU解码,以及通过计算着色器进行GPU解码,这利用了现代GPU的巨大并行化能力。这两种解决方案在解码时总是会出现卡顿,尤其是在过度使用大型 ASTC 纹理的新游戏中,例如 和 .Bayonetta 3猎天使魔女3 Metroid Prime Remastered银河战士Prime复刻版

好吧,epicboy 为我们的武器库增加了一种新武器,哦,男孩,它可以提供帮助。有代价。异步 ASTC 纹理解码简介!

对于那些在游戏过程中喜欢零 ASTC 相关卡顿的人,这个新的切换使用后台线程在游戏渲染时解码 ASTC 纹理。这种方法将消除卡顿,但代价是在纹理完成加载之前引入图形故障

以下是异步解码与 16 线程 Ryzen 7 5800X3D(因此甚至不是线程数之王,对 CPU 解码最重要的)与 RTX 4090(目前消费者最大的商用计算怪物)的比较。

如您所见,虽然异步解码的过程非常明显,但它比目前可用的最佳 GPU 快得多。即使是 12 线程的 CPU 仍然可以在有史以来最密集的 ASTC 游戏中赢得一场飙车比赛。具有较少线程数 CPU 的用户(如具有 8 个或更少线程的四核)可能需要计时其结果。ASTRAL CHAIN异界锁链

您可以在 中找到该选项。启用它还将覆盖选项卡中的设置。此设置使柚子使用 GPU,但启用将强制柚子始终使用 CPU 解码。因此,如果要改用 GPU 计算解码,请记住禁用异步 ASTC 解码。模拟 > 设置… > 图形 > 高级 > 异步ASTC纹理解码(勾选为CPU异步解码,取消勾选则为默认的GPU解码)

根据epicboy的说法,虽然异步GPU计算方法是可能的,但计算着色器的规则和限制阻碍了它的潜力,很可能使其几乎不比使用计算单元的常规GPU解码好。

如果 GPU 供应商正确地为其 GPU 添加本机 ASTC 支持,生活会轻松得多......你的记者很乐意把它放在无用的东西上,比如RGB、丑陋的塑料裹尸布或驱动程序DVD。

NVIDIA,AMD,请考虑添加原生ASTC支持。这当然比生成带有恶心伪影的假帧更有用。英特尔,您的 iGPU 中提供了出色的 ASTC 支持。请考虑将其添加回 Arc 图形的未来版本。

Maide 一直致力于解决在游戏中发现的重叠纹理故障。虽然这不是一个完美的解决方案,但重新添加(意外)移除的寄存器有助于缓解几乎任何相机角度(最倾斜的角度除外)的问题。The Legend of Zelda: Breath of the Wild 塞尔达传说:旷野之Xenoblade Chronicles 3 异度之刃3 invalidate_texture_data_cache

根据地形的形状或摄像机角度,问题可能会再次浮出水面。但作为临时解决方案,此更改使玩受影响的游戏更容易忍受。工作还在继续!

CPU、内核、服务和优化

Merry 将 dynarmic (我们的 JIT) 更新到 6.4.5 版,解决了一些问题并缩短了编译时间。从中受益的一个游戏是,它的加载时间大大减少了。Taiko Risshiden V DX 太阁立志V:DX

byte[] 也一直在深入内核代码。他的一项更改改进了 .但是包装纸是什么?好吧,游戏和自制软件需要与内核通信,为此,它们使用 SVC 指令,这些指令充当与内核的接口。SVC wrappers

包装器的工作是将来自游戏的请求转换为对内核的C++调用,然后将内核中的结果带回游戏。过去,柚子使用手动编写的包装器,这些包装器非常容易出错。通过此更改,byte[] 会自动生成所需的包装器。此代码要准确得多,因此,如果您发现游戏不再崩溃或软锁定,这里是负责它的新代码。一个这样的例子是第一次开始启动。Moero Crystal H 限界凸记:萌情水晶H

该游戏需要更多的工作才能获得正确的视频和游戏渲染。

为了保持对准确性的追求,byte[] 还实现了服务的 HLE 多进程。现在,服务不会将游戏的请求推送到服务,而是等待请求到达。在大多数情况下,所有这些处理都是在交换机的模拟中完成的,而不是到处都是每个服务一个线程。游戏通常只能访问 0 到 2 的内核,因此我们现在将最后一个内核专用于系统服务处理,就像实际的 Switch 操作系统一样!core 3

CPU仿真的这一部分是我们在硬件要求中建议至少6个内核的主要原因之一,4个用于交换机CPU的不间断仿真,以及用于其他进程和任务的额外内核。仅 4 核 CPU 通常会过载。HT / SMT可能会有所帮助,但这始终取决于任何给定时刻的工作负载。如果内核已经饱和,则 SMT/HT 线程无法显著提高性能。

Bunnei也插话,修复了内存映射中的一个错误。我们错误地使用了(请耐心等待,这不是冗余)系统的系统资源跟踪,而不是在将程序加载到内存时依赖应用程序的资源跟踪。大多数游戏对此都很宽容,但不喜欢它,每次用户尝试加载存档时都会卡住。在这里和那里进行调整,回归现在已经消失了!FINAL FANTASY CRYSTAL CHRONICLES Remastered Edition最终幻想 水晶编年史:复刻版

新的神奇宝贝游戏更新,需要修复的新内容。再一次,让我们头疼。Pokémon Scarlet/Violet精灵宝可梦:朱/紫

这一次,最近发布的更新 1.2.0 无法在 yuzu 上启动。经过一番调查,german77发现原因是某些蓝牙功能未正确实现,导致游戏在尝试启动安装的最新更新时崩溃。

后来进行了一些代码更改,German77 修复了这个问题!现在任何人都可以享受减少的NPC数量和更短的抽奖距离。

甚至你的作家也试图伸出援手(强调尝试)。正如过去所报道的,我们申请了柚子的所有子项目。这意味着每个部分,如音频、输入、UI 等。在构建时使用 LTO,试图挤出所有可能的性能。这导致了一个意想不到的问题:构建时的 RAM 消耗增加到足以导致我们的构建机器人呼救,从而导致 Azure DevOps CI 上的构建随机耗尽内存。Link-time Optimization

byte[] 建议我转而分析哪些子项目将提供最大的性能提升,并且只将 LTO 应用于这些子项目。后来通过构建柚子来烘烤CPU几轮,并确定两个最明显的候选者,核心和video_core,是启用LTO提供的性能提升的责任。

仅将 LTO 部分应用于核心和video_core项目不仅减少了编译器 RAM 的使用,而且还提供了非常小但始终如一的性能提升。例如,从 257 FPS 增加到 260 FPS。没有什么开创性的,但它是仅旨在减少 RAM 使用的更改的免费奖励!The Legend of Zelda: Link’s Awakening 塞尔达传说: 织梦岛重制版

Morph后来添加了一个小但非常关键的修复程序,以使所有这些实际工作。我是灾难,对不起。

输入改进

Metroid Prime Remastered引入了一个严重的困境:人们希望使用鼠标和键盘将游戏作为 FPS 来玩。

问题在于游戏使用摇杆输入顶部的运动来瞄准,这使得如何处理非控制器输入成为一个有趣的案例。

这足以激励 German77 有兴趣尝试一下:

首先,他修复了一个运动不断被重新校准的问题。

接下来,German77 调整了运行高于 100% (1.0x) 的 DPI 缩放的用户的鼠标缩放。

随后,改进了鼠标输入的映射。默认情况下,鼠标摇杆被视为操纵杆,其中包括假定死区和默认情况下不为零的范围。此拉取请求包括一些其他杂项更改,例如修复某些 UI 元素不起作用。

最后,为了解决“双摇杆模式”的问题,添加了对使用鼠标的专用运动的支持。由于游戏只使用两个轴,这可以直接 1:1 映射到鼠标移动,让瞄准变得轻而易举!Metroid Prime Remastered银河战士Prime复刻版

要使用此功能,请转到 ,单击 ,然后再次单击以将鼠标设置为运动。然后在“高级”选项卡中,启用鼠标平移。之后,手动映射密钥,就像配置 FPS 一样。Emulation > Configure… > ControlsMotion 1

GitHub用户SixelAlexiS90提供了一个输入配置文件。要使用它,请在 yuzu 上转到并将此输入配置文件放在文件夹中(如果没有,请创建一个新的“输入”文件夹)。之后要做的就是在柚子的控制设置中选择配置文件。File > Open yuzu folderconfiginput

用户可以使用与鼠标平移相同的设置来调整鼠标运动的灵敏度 模拟 > 设置… > 控制 > 高级

但这是german 77的重点吗?继续 2022 年 12 月开始的工作,在新的自定义“Joy-Con”驱动程序中支持 Pro 控制器。由于该选项是实验性的,因此它只能在官方 Switch Pro 控制器上正常工作,而不能在第三方控制器上正常工作,因此默认情况下处于禁用状态。鼓励真正的专业控制器的所有者启用此选项,因为它将提供大大改进的运动和高清震动支持。Metroid Prime Remastered银河战士Prime复刻版

以前的限制,例如无法使用Pro Controller进行Amiibo检测,仍然存在,因为仍有工作要做。

音频改进

音频仿真中有一些有趣的变化,许多用户会很高兴,让我们一一介绍。

german77 在初始化我们的默认音频库 cubeb 时修复了崩溃问题。猜猜更少的崩溃总是好的,对吧?

梅里尝试修复双四阶滤波器中的舍入问题。

虽然此更改的目的是部分提高几款游戏的音频质量,尤其是(本月游戏),但它并没有完全达到目标。这还不足以解决影响游戏的随机噪声问题,因此Maide着手调查并发现音频仿真代码库错误地将所有不同音频通道的状态保存在同一个地址中!Metroid Prime Remastered银河战士Prime复刻版

可以想象,如果左音频通道存储了一些样本,右通道执行相同的操作(覆盖左侧通道存储的内容),然后左通道取回一些意外的东西,结果可以听起来......有趣。用户在Metroid中将这个问题描述为“如果有人在你的耳朵上开枪”。

现在,每个音频通道都将其信息存储在不同的内存区域中,避免了访问重叠的任何问题。不仅从中受益;这两款游戏也都显示出改进。Metroid Prime Remastered 银河战士Prime复刻版Fire Emblem火焰纹章

Maide 发现的另一个问题是错过检查导致数组索引读取负值,简单来说,这是“非常错误的”。这导致音频引擎抓取随机内存块作为混合信息,使音频引擎崩溃。

解决这个问题可以解决 玩游戏时发生的崩溃 ,很可能还有其他崩溃。Metroid Prime Remastered

用户界面更改

LDN大厅的窗口得到了陌生新来者的喜爱,增加了隐藏空房间的选项。没有什么比生活质量的变化更胜一筹了,谢谢!

对于不和谐游戏玩家,SoRadGaming 为您的不和谐状态实施了正确的游戏图像!这些图像是从我们的兼容性维基中抓取的,该维基正在重写中,所以预计现在会缺少一些游戏。

一个小错误导致 Web 小程序在调整柚子 Web 小程序窗口大小时失去重绘和缩放其内容的能力。重新添加调用可以修复缩放,允许玩家根据自己的需求调整他们的马里奥手册。setZoomFactor

每个游戏的设置非常有用,但要正确编码也非常棘手。m-HD通过向列表中添加一些缺少的图形设置来迎接我们,解决了在每游戏配置窗口中设置全屏模式,分辨率缩放,过滤器和抗锯齿值时的冲突问题。

然后,German77 正确地实现了每游戏配置支持,以设置 AMD GPU 受益匪浅。Force maximum clocks

虽然我们一直在努力改善用户体验,但柚子有时会崩溃。这是任何第一代模拟器所期望的,但不应该发生的是在崩溃或强制关闭后不保存对配置设置所做的更改。问题出在我们的Qt UI中,german77努力正确地告诉Qt保存配置并将其同步到文件,避免在强制关闭后丢失任何配置更改。

常规修复

MonsterDruide1继续用LDN代码创造奇迹。这一次,正确的错误处理。处理 TCP 连接时可能出现的错误之一是 ,当另一端突然关闭连接时,就会发生这种情况。老派游戏玩家称之为“愤怒退出”。ECONNRESET

撇开笑话不谈,当像这样突然断开连接时,错误曾经被柚子而不是游戏捕获,导致游戏永远不会收到客户端断开连接的通知。将错误正确传递给游戏允许它以自己的方式处理问题,而不是使柚子 LDN 会话崩溃。

对 yuzu-cmd 进行了一些改进,这是默认 Qt UI 的命令行替代方案。

German77 添加了对鼠标单击触摸输入和 SDL 控制器输入支持的支持,以及两个参数:用于指定游戏文件位置和指定用户配置文件。-g-u

您的作家也出现了,更新了最近添加到主线柚子中的图形过滤器和分辨率倍数选项。

硬件部分

英伟达驱动程序531.18,这是一个很好的驱动程序

这个最新的(在撰写本文时)NVIDIA驱动程序531.18版本包括对Vulkan扩展的支持,以前的读者将熟悉。支持此扩展意味着需要构建的着色器更少,由于减少了着色器卡顿和 RAM 使用量,从而获得更流畅的体验。VK_EXT_extended_dynamic_state3

我们建议至少更新图灵和更新(GTX 1600,RTX 2000-4000)用户进行更新,因为我们希望此版本不会解决影响Pascal和Maxwell硬件(GTX 1000及更早版本)的问题。

AMD 锐龙 7000X3D 系列,以及游戏模式的重要性

AMD最近发布了采用3D V-Cache技术的Zen 4 CPU,为了复制英特尔的怪异,他们决定发布带有7950X3D的顶级不对称设计。

这个游戏野兽CPU的两个CCD(每个模块包含8个内核)中只有一个可以访问扩展的L3 V-Cache,并且决定使用哪一个取决于Windows游戏栏。令我们沮丧的是,这里没有硬件调度程序。芯片组驱动程序和 Windows 切换开关决定了哪种模式更好。

由于 yuzu 和基本上任何其他模拟器都没有被 Windows 注册为游戏,因此用户必须手动干预并启用,以便让芯片组驱动程序配置文件性能并决定哪个 CCD 性能最佳。Game Mode

这样做也应该使每个用户受益,而不仅仅是 7000X3D 用户,因为 Windows 使用切换将资源(RAM、线程)分配给受影响的程序,所以这根本不是一个坏做法!

以下是步骤:

打开 yuzu 或任何其他选择的模拟器/程序,按Windows + G ,然后转到设置齿轮。

然后启用 .Remember this is a game

就是这样!

现在,Windows将以更智能的方式分配资源,Ryzen 7000X3D用户将从其闪亮的新CPU中获得最佳性能。测试还表明,这也有助于在当前英特尔 CPU 上通过适当的 P 核和 E 核分配来提高性能。对于较老的Ryzen用户,据报道,支持3D Zen4产品性能分析的最新芯片组更新也略微提高了性能。

谁能在两次点击后对免费性能说不,对吧?

英特尔,请修复您的 Vulkan 支持

我们正在等待英特尔修复Windows驱动程序上的SPIR-V编译器崩溃。在当前状态下,如果您使用 Vulkan,任何游戏都可能随时崩溃,并且与通过重写解决大部分 OpenGL 问题的 AMD 不同,英特尔没有使用旧图形 API 的后备选项,在当前状态下,几乎所有内容都呈现为黑色。

令人沮丧的是,这不是Mesa Linux驱动程序或旧的Gen9 / 9.5 / 11 iGPU及其已停产的Windows驱动程序的问题,因此这是一个影响新驱动程序分支的适当关键回归,必须等到AAA本机PC游戏运行良好,让开发人员有时间专注于“不太重要的东西”, 比如专业程序和控制台模拟器。

未来项目

我被我们的开发人员绑架了,所以这次没有泄漏。我承诺下个月会更多!

有一件事我可以提一下,最近的核心时序更改使 Windows 上的 CPU 使用率全面减少了 5-20%,具体取决于总线程数。这意味着更好的性能和更低的功耗,特别是有利于笔记本电脑和手持设备等移动设备。这一变化已经在主线和抢先体验中出现,但我们将在下个月更多地讨论它和其他好东西。

这就是所有!我们下次见!

展开阅读全文

页面更新:2024-02-21

标签:英特尔   柚子   纹理   模拟器   线程   内核   驱动程序   进度   音频   性能   报告   用户   游戏

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top