吧务
level 13
翻车🐭
楼主
欢迎, yuz - ers, 到我们的每月报告开发人员毅力和其他事件!在此回顾中,我们将讨论 Radeon 修复、收割机 v3、LAN 支持、流畅的视频渲染等!
一个不合常数的 T错误我执行, 和其他图形修复
这个月对AMD用户来说无疑是一个快乐的月份,因为我们的开发人员设法为AMD显卡用户修复了一些图形错误。
史诗男孩推动一个修复线框问题, 影响各种 3d 模型时, 玩, 而使用 Amd Gpu 在 Windows 上。不幸的是,一些游戏,比如,有类似的错误,并没有通过这个修复改进。此外,请注意,在某些罕见情况下和条件下,问题仍可能发生。Pokémon Sword and ShieldSuper Mario 3D World + Bowser's Fury



最佳人物(神奇宝贝剑)
问题的原因归结为某个供应商(AMD) 的驱动程序没有正确读取附近的阴影阴影属性或指令。demotediscard
在 GPU 上运行以渲染图形的许多程序中,碎片阴影器负责计算写入帧缓冲器的每个像素的颜色,这些像素将发送到您的屏幕。在某些情况下,这些阴影器用于执行从属计算,例如衍生工具。
这是一个问题,但是,因为碎片阴影总是期望写入帧缓冲。当这样使用时,这些阴影实例的颜色数据仍然单硝化,这是未定义的行为,很可能会导致彩虹点图形发送到您的屏幕。
这是救援的地点和指示。它们用于标记这些碎片阴影,因此忽略每个被降级的阴影实例的颜色,使线程保持活力以执行计算,而帧缓冲器保持不变。demotediscard
每当驱动程序尝试在这些指令附近读取属性(即位置、常数等数据)时,就会误读这些属性,从而导致臭名昭著的图形故障。
值得庆幸的是,这是通过简单地将这些片段的降级推迟到着色器程序的末尾来修复的,这对其性能有轻微的影响,尽管没有一个足够大的片段值得关注。
接下来在史诗男孩的列表中,我们有一个修复程序,解决从次要 GPU 渲染时sRGB 图形的亮度,因为它们看起来比他们应该暗得多。



免费 HDR!(超级马里奥奥德赛)
这发生在由 AMD GPU 执行渲染时,但交换链中图像的演示(GPU 用于防止屏幕更新时撕裂和口吃的虚拟缓冲)是由英特尔或 Nvidia GPU 完成的。正在 AMD GPU 上呈现的交换链(其中包含格式图像)被读为二级 GPU,导致它们呈现错误的强度水平。这是因为这些格式中使用的刻度不兼容,并且其值不会自动映射到对应空间上的等值,因此在使用错误格式时会导致图像质量下降。sRGBLinear
作为解决方案,在从交换链中呈现帧时,现在首选颜色空间格式。这减轻了对帧格式的错误解释,使所有帧在线性颜色空间中正确显示。Linear
另一个恼人的只视窗AMD GPU错误去好感谢史诗男孩是可怕的明亮的正方形,将出现在一些标题的阴影:最值得注意的是, .Fire Emblem: Three Houses
不再那么迷幻了(火徽:三栋房子)
造成这一问题的原因是任天堂交换机的GPU和AMD卡的硬件层面差异。
在图形编程中,在相当数量的元素(如维他语、像素等)上执行相同的操作是极其常见的。因此,GPU 被设计为同时(即并行)在大量数据上运行,使用利用此原理的说明(称为(单个指令、多个数据)。这种并行计算方法与多线程相结合,称为(单个指令、多线程)。SIMDSIMT
在 Tegra X1(任天堂交换机的 GPU)中,这些指令在 32 个线程(称为"")的捆绑包上运行,所有这些线程都运行相同的代码 - 尽管它们不一定基于相同的数据运行。然而,AMD 卡中的说明会发布GCN架构,仅与 64 个线程的工作组配合使用。这提出了一个挑战,因为 yuzu 必须将这些工作组分成 64 个线程,并让它们充当 32 个线程的两个工作组,以便在这些设备上正确模拟访客 GPU。workgroupsSIMT
epicboy解决了这个问题并修复了这些说明,因此,通过使用线程的调用 ID,可以判断任何线程是"下"线还是"上"32 线程组的一部分,从而有效地允许 AMD 卡模仿任天堂交换机 GPU 的行为。
闪烁鹰还为影响 AMD 的 Bug 提供了许多修复,从在 (Polaris) 之前禁用其 GPU 中的外阴扩展() 开始,后者没有支持扩展的必要硬件。值得注意的是,这修复了迷幻图形,一个我们很多人会错过,肯定。VK_EXT_SAMPLER_FILTER_MINMAXGCN4The Legend of Zelda: Skyward Sword HD



这原本是一个视频,但它可能会触
发癫
痫(塞尔达传奇:天向剑)
同样,他增加了 AMD 上每个池的集数(Vulkan 中用于管理资源内存的一项功能),修复了启动时发生的随机崩溃。Xenoblade Chronicles 2
K0bin又回来了, 解决了另一个主要问题。这一次,Yuzu没有正确遵循官方的Vulkan规范,导致Nvidia显卡上的纹理和缓冲信息重叠。
bufferImageGranularity指定纹理和缓冲器对齐的字节大小。AMD 和英特尔 GPUs 允许根据硬件提供 1 或 64 字节的精确值,但 Nvidia 则很难局限于 1024 字节块。
yuzu 没有考虑到这种对齐, 导致数据腐败主要通过启用 GPU 缓存垃圾收集器来显示。但同样的问题可能会影响任何游戏,处理小纹理在任何时候,因为任何缓冲可能会损坏任何纹理,任何纹理可能会损坏任何缓冲。Super Mario Odyssey
正确尊重此硬件集值可修复在 Vulkan 使用 Nvidia GPU 运行游戏时闻所未闻的不稳定性,并允许收割者(GPU 缓存垃圾收集器)处理所有游戏。
有一个错误,使马里奥的胡子似乎是浅棕色(而不是我们习惯看到的经典深色阴影),当使用英特尔GPU与Vulkan API。问题很简单:yuzu 在查询属性时返回了错误的数据类型 - 未签名的整数,而不是 32 位浮点值。解决方案同样简单:epicboy 更改了代码,以便使用
正确的
数据类型返回查询属性。gl_FrontFacing



最后, 染发剂打折 (超级马里奥奥德赛)
v1993一直在使用PVS 工作室捕捉代码中的逻辑错误,到目前为止取得了良好的成功。例如,由于这个原因,在SPIR-V中可以进行小规模的清理。
兰派对时间!
工作仍在继续,但与此同时,Yuzu 自豪地宣布,(局域网)支持已添加给所有用户!这一切都要归功于斯波尔茨所做的工作。Local WirelessLAN
这意味着,现在可以在连接到同一网络(无论是有线以太网,还是通过 WiFi)时,使用交换机或任何其他运行 yuzu 的计算机来玩少量游戏。使用像ZeroTier这样的服务(hamachi 尚未工作),或者通过手动配置VPN(虚拟专用网络),这可以扩展到全球游戏!
到目前为止,支持局域网的游戏是:
ARMS
Bayonetta 2
Duke Nukem 3D: 20th Anniversary World Tour
Mario & Sonic at the Olympic Games Tokyo 2020
Mario Golf: Super Rush
Mario Kart 8 Deluxe
Mario Tennis Aces
Pokkén Tournament DX
Pokémon Sword & Shield(按设计限制游戏功能)
Saints Row IV®: Re-Elected™
SAINTS ROW®: THE THIRD™ - THE FULL PACKAGE
Splatoon 2(适用于启用自动存根)
Titan Quest
目前,并非所有列出的游戏都因缺少服务或与 yuzu 没有最佳兼容性而起作用,但游戏在所有工作案例中都被证明是稳定的。

它只是工作!(马里奥卡丁车8豪华)
请记住,有些游戏需要某些按钮组合才能在局域网和本地无线模式之间切换。例如,要求用户同时持有 L + R 并按下主菜单中的左模拟棒 (L3),以便能够创建或加入 LAN 房间。Mario Kart 8 Deluxe
莫夫后来跟进网络接口清理。
流畅无故障的视频为胜利
由于yzct12345早在 7 月就引入了 VA-API,Epicboy使得使用硬件视频加速技术解码与 FFmpeg的视频用于所有其他兼容的 GPU 和驱动程序组合成为可能。此外,Yuzu 将优雅地回到软件解码,以防没有支持的组合。
这大大加快了解码过程,提高了模拟器在播放视频时的性能。
目前,已实施以下 GPU 解码器:
GPU 窗户 利诺克斯
恩维迪亚 NVDEC/D3D11VA 恩夫德克/VDPAU
AMD D3D11VA 瓦-阿皮/VDPAU
英特尔 D3D11VA 瓦-阿皮
请注意,由于用于解码视频的 GPU 不一定与用于渲染的视频相同,因此 NVDEC 在 Windows 上比 D3D11VA 更受欢迎,因为后者默认使用 iGPU 进行解码时的性能较低。
接下来的名单上,我们有一些嘈杂的神器出现在一些游戏的视频的报告。值得注意的是,那些编码与VP9格式。史诗男孩调查了这个问题,并通过存根UnmapBuffer,一个驱动程序命令,这是,你可以猜到,用来释放GPU内存由缓冲器举行。但是这到底有什么问题呢?恐怕这会有点技术性, 所以忍受我一段时间。我保证不会伤害...多。
VP9 编解码器除其他外,定义了视频中用作参考的帧,这些帧又被用于重建这些帧之间的帧。这意味着,要正确地插值这些"中间"框架,必须依靠来自,和以前的信息。,另一方面,完全由他们自己解码,而不依赖于任何参考。解码这样的框架是一个较慢的过程,但它保证框架将尽可能干净的错误,这就是为什么他们可以用作参考。key-frameskey-framesinter-frameskey-frames
如前所述,FFmpeg 用于解码视频。在 VP9 格式的情况下,yuzu 需要发送将解码的原始字节(即您在视频中看到的实际图像)以及包含元数据的头,例如帧的尺寸,无论是帧的尺寸,或者,如果不是,在处理时使用什么帧作为参考, 等。key-frame
构成此头的信息映射到内存中的缓冲器。而现在,事情变得有点滑稽。出于某种原因,在这个缓冲区的信息 - 即,该部分的头,指定什么应该用作参考,将改变不一致之间。这导致视频质量的下降,因为每个插值帧将引用不同的,导致这些臭名昭著的混乱的噪音文物的创建。key-framesinter-frameskey-frame
通过存根命令,这些参考帧的地址现在保持不变,只要他们需要,允许yuzu传递到正确的信息,并解码视频没有任何问题。UnmapBufferFFmpeg
两个小故障自由和光滑 (塞尔达的传说: 链接的觉醒)
在相关方面,epicboy 修复了另一个 VP9 问题:位流的第一帧缺少其帧数据,因此他改变了逻辑以确保第一帧完整,沉默了 FFmpeg 抛出的运行时间错误。
如前所述,Yuzu 直接从缓冲器中包含的 NVDEC 寄存器中读取标题信息。不幸的是,一个关键的旗帜,需要传递给FFmpeg,实际上并没有在这个缓冲举行。is_hidden_frame
为了规避此问题,我们的实施还缓冲了下一帧,然后,根据持有相同信息的另一个标志(),通知 FFmpeg 是否应显示前一帧。这意味着玉豆总是解码一帧晚了,因为已经是这样了,玉豆没有发送第一帧的头信息,因为它需要事先知道的价值。is_previous_frame_hiddenis_hidden_frame
史诗男孩所做的只是复制位流中的第一帧,因此基本上第一帧和第二帧是相同的,因此,利用这一事实,头信息可以传递给FFmpeg,以便它停止抱怨。
唉,软件开发的乐趣在这个世界上转瞬即逝。
一般错误修复
你无法预测虫子会如何出现,有时它们像雏菊一样弹出。随着巴西葡萄牙语作为用户界面的语言,开始只运行在日语,忽略了任何用户设置。Paper Mario: The Origami King
修复"获取可用语句"的副本量足以解决此问题。谢谢莫夫!

真正的本地游戏 (纸马里奥: 折纸王)
桑卡桑给了,我们的指挥线SDL2替代常规Qt玉豆,一些额外的爱。通过正确实现,yuzu-cmd现在可以在全屏下正确隐藏鼠标光标。谢谢!yuzu-cmdSDL_ShowCursor
也与过去有关,虽然按钮映射和其他设置工作正常,但使控制器的切换被完全忽略。阅读连接值作为一个酒鬼是它需要通过这个失误, 感谢吐司不受限制!yuzu-cmd
吐司还发现了如何处理每个游戏配置文件的逻辑中的问题:只选择了默认用户配置文件。某些代码会更改,现在将使用当前选定的用户配置文件。
gidoly打开了他有史以来的第一个拉请求, 修复了一个小的, 但可以说是非常重要的描述。
Use Fast GPU time,高级图形选项卡中的选项之一,是旨在提高与使用动态分辨率作为在交换机上保持稳定性能的游戏的兼容性。
通过对内核撒谎并告知性能总是好的,模拟器避免了不必要的破坏和纹理的重建,从而节省了性能和 VRAM。作为额外的好处,一些游戏使用这种完全不掺解的信息,不断呈现在其最高支持分辨率。
出于这两个原因,我们建议用户始终启用此选项,因为在使用时未发现任何回归,并且某些特定标题(如)的稳定性优势非常值得。Luigi’s Mansion 3
所以,通过称铁铲为铁铲,吉多利现在告诉我们,这确实是一个黑客。阿尔潘, 潘, 维诺, 维诺Use Fast GPU time
存根NGCT:U服务允许启动。良好的捕获由德国77。Boyfriend Dungeon

男朋友地牢
史诗男孩翻转了配置窗口中限制速度百分比和帧速率帽的位置。整理用户界面永远不会造成伤害。
是否有任何开发人员厌倦了等待超过 3 分钟来编译对代码纹理缓存部分所做的每个更改?嗯,yzct12345 将定义拆分,将构建时间缩短到只有 30 秒。
yzct12345也发现我们的僵局,并提交了解决这个问题的修复方案。重写这个队列并使其完成的工作也已经开始,所以希望下个月我们能看到后续工作。如果您对这些"生产者-消费者"术语感到困惑,只需知道它们基本上描述了如何在多核系统中处理对资源的访问,以便编写到(生产)中的流程和从共享资源(消耗)中读取的过程在此例中正确同步, 队列。Single-Producer, Single Consumer queueMulti-Producer, Multi-Consumer
这个冒险的开发人员还优化了"无威特克斯图尔"功能,产生了甜蜜的速度增益。闪动是指用于优化内存中纹理存储方式以最大限度地减少缓存误用的技术。因此,相反的操作是采取一个轻滑的纹理,并重组它,所以它对人类有意义。
前段时间,吐司检测到潜在的越界访问,这是一个错误,当程序访问内存,这是超出范围,它应该在给定的时刻运行。所涉代码也是用于解刷纹理的功能的一部分。epicboy 注意到,问题的根源在于计算帧缓冲器大小,用于限制代码应在哪里操作,并在此 PR 中将其固定,从而有效地消除了错误。
在手动检查 yuzu 时,在分析工具的帮助下,v1993 还在代码库的不同部分发现了一些小错误,例如内核函数中的放错位置的中断语句- 一个改变算法逻辑的人为错误,防止其按预期操作。同样,他还纠正了影响软件键盘代码的复制粘贴错误。GetThreadContext()
v1993 还在功能中发现了另一个错误,用于从 GPU 内存地址获取 CPU 内存段。闪鹰继续前进,并修复了它。GetSubmappedRange()
闪烁鹰的另一个值得注意的变化是,他改变了垃圾收集器(收割机)的逻辑,以便它使用最近使用最少的()缓存代替。LRU
以前,GC(垃圾收集器)的缓存会在每个帧的纹理上进行重述,检查它们是否应该从内存中清除。它还使用某些启发式处理,使清洁对某些类型的纹理更具攻击性,无需与主机内存同步即可清洁它们。n
然而,该计划根据它们最近被使用的速度来订购纹理。一旦内存已满,GC 就会开始在缓存的元素上进行重做,从而消除在最长时间内未使用的纹理。此外,GC 现在优先考虑消除不需要与主机内存同步的纹理,并且仅考虑从缓存中清空这些纹理后的其他纹理。这些更改使新的垃圾收集器更加稳定,因此我们可以默认为所有用户安全地启用它。LRULRU
同时,BreadFish64发现Yuzu花了相当长的CPU时间运行——一个用于在分析时管理线程的内核功能——并提交了一个补丁,优化了生成的代码,提供了一个小的性能提升。GetHostThreadID()Fire Emblem: Three Houses
输入改进
german77 本月实施了一些输入更改。
首先,在映射和移动模拟棒时,以前的实现仅显示表示模拟棒相对位置的蓝点。现在出现了一个新的绿点,代表棍子的模拟位置,考虑范围和死区值。知道棒子是否真正达到整个输入范围是有用的。
记得测试并设置范围和死区
接下来,通常更新到SDL,这总是带来一些好东西。在这种情况下:
向双感触发器发送效果的能力(目前未实施)。
更好的传感器数据速率为开关和游戏机控制器。
为亚马逊 Luna 控制器添加支持。
为谷歌斯塔迪亚控制器添加隆隆声支持。
专业控制器的改进隆隆声。
最后,Web Applet 会导致 SDL 过程死亡,禁用不必要的功能可以解决问题。
未来项目

4K 海滩情节 (Xenoblade 纪事确定版)
进展良好,大多数重大问题都得到了解决。莫夫有几个尤里卡时刻与。现在其他秘密食谱在烤箱里,等待轮到他们了。Project A.R.T.Project Gaia
都是人!谢谢你的注意 - 快乐的发挥, 下次见!
2021年09月13日 04点09分
1
一个不合常数的 T错误我执行, 和其他图形修复
这个月对AMD用户来说无疑是一个快乐的月份,因为我们的开发人员设法为AMD显卡用户修复了一些图形错误。
史诗男孩推动一个修复线框问题, 影响各种 3d 模型时, 玩, 而使用 Amd Gpu 在 Windows 上。不幸的是,一些游戏,比如,有类似的错误,并没有通过这个修复改进。此外,请注意,在某些罕见情况下和条件下,问题仍可能发生。Pokémon Sword and ShieldSuper Mario 3D World + Bowser's Fury



最佳人物(神奇宝贝剑)问题的原因归结为某个供应商(AMD) 的驱动程序没有正确读取附近的阴影阴影属性或指令。demotediscard
在 GPU 上运行以渲染图形的许多程序中,碎片阴影器负责计算写入帧缓冲器的每个像素的颜色,这些像素将发送到您的屏幕。在某些情况下,这些阴影器用于执行从属计算,例如衍生工具。
这是一个问题,但是,因为碎片阴影总是期望写入帧缓冲。当这样使用时,这些阴影实例的颜色数据仍然单硝化,这是未定义的行为,很可能会导致彩虹点图形发送到您的屏幕。
这是救援的地点和指示。它们用于标记这些碎片阴影,因此忽略每个被降级的阴影实例的颜色,使线程保持活力以执行计算,而帧缓冲器保持不变。demotediscard
每当驱动程序尝试在这些指令附近读取属性(即位置、常数等数据)时,就会误读这些属性,从而导致臭名昭著的图形故障。
值得庆幸的是,这是通过简单地将这些片段的降级推迟到着色器程序的末尾来修复的,这对其性能有轻微的影响,尽管没有一个足够大的片段值得关注。
接下来在史诗男孩的列表中,我们有一个修复程序,解决从次要 GPU 渲染时sRGB 图形的亮度,因为它们看起来比他们应该暗得多。



免费 HDR!(超级马里奥奥德赛)这发生在由 AMD GPU 执行渲染时,但交换链中图像的演示(GPU 用于防止屏幕更新时撕裂和口吃的虚拟缓冲)是由英特尔或 Nvidia GPU 完成的。正在 AMD GPU 上呈现的交换链(其中包含格式图像)被读为二级 GPU,导致它们呈现错误的强度水平。这是因为这些格式中使用的刻度不兼容,并且其值不会自动映射到对应空间上的等值,因此在使用错误格式时会导致图像质量下降。sRGBLinear
作为解决方案,在从交换链中呈现帧时,现在首选颜色空间格式。这减轻了对帧格式的错误解释,使所有帧在线性颜色空间中正确显示。Linear
另一个恼人的只视窗AMD GPU错误去好感谢史诗男孩是可怕的明亮的正方形,将出现在一些标题的阴影:最值得注意的是, .Fire Emblem: Three Houses
不再那么迷幻了(火徽:三栋房子)
造成这一问题的原因是任天堂交换机的GPU和AMD卡的硬件层面差异。
在图形编程中,在相当数量的元素(如维他语、像素等)上执行相同的操作是极其常见的。因此,GPU 被设计为同时(即并行)在大量数据上运行,使用利用此原理的说明(称为(单个指令、多个数据)。这种并行计算方法与多线程相结合,称为(单个指令、多线程)。SIMDSIMT
在 Tegra X1(任天堂交换机的 GPU)中,这些指令在 32 个线程(称为"")的捆绑包上运行,所有这些线程都运行相同的代码 - 尽管它们不一定基于相同的数据运行。然而,AMD 卡中的说明会发布GCN架构,仅与 64 个线程的工作组配合使用。这提出了一个挑战,因为 yuzu 必须将这些工作组分成 64 个线程,并让它们充当 32 个线程的两个工作组,以便在这些设备上正确模拟访客 GPU。workgroupsSIMT
epicboy解决了这个问题并修复了这些说明,因此,通过使用线程的调用 ID,可以判断任何线程是"下"线还是"上"32 线程组的一部分,从而有效地允许 AMD 卡模仿任天堂交换机 GPU 的行为。
闪烁鹰还为影响 AMD 的 Bug 提供了许多修复,从在 (Polaris) 之前禁用其 GPU 中的外阴扩展() 开始,后者没有支持扩展的必要硬件。值得注意的是,这修复了迷幻图形,一个我们很多人会错过,肯定。VK_EXT_SAMPLER_FILTER_MINMAXGCN4The Legend of Zelda: Skyward Sword HD



这原本是一个视频,但它可能会触发癫
痫(塞尔达传奇:天向剑)
同样,他增加了 AMD 上每个池的集数(Vulkan 中用于管理资源内存的一项功能),修复了启动时发生的随机崩溃。Xenoblade Chronicles 2
K0bin又回来了, 解决了另一个主要问题。这一次,Yuzu没有正确遵循官方的Vulkan规范,导致Nvidia显卡上的纹理和缓冲信息重叠。
bufferImageGranularity指定纹理和缓冲器对齐的字节大小。AMD 和英特尔 GPUs 允许根据硬件提供 1 或 64 字节的精确值,但 Nvidia 则很难局限于 1024 字节块。
yuzu 没有考虑到这种对齐, 导致数据腐败主要通过启用 GPU 缓存垃圾收集器来显示。但同样的问题可能会影响任何游戏,处理小纹理在任何时候,因为任何缓冲可能会损坏任何纹理,任何纹理可能会损坏任何缓冲。Super Mario Odyssey
正确尊重此硬件集值可修复在 Vulkan 使用 Nvidia GPU 运行游戏时闻所未闻的不稳定性,并允许收割者(GPU 缓存垃圾收集器)处理所有游戏。
有一个错误,使马里奥的胡子似乎是浅棕色(而不是我们习惯看到的经典深色阴影),当使用英特尔GPU与Vulkan API。问题很简单:yuzu 在查询属性时返回了错误的数据类型 - 未签名的整数,而不是 32 位浮点值。解决方案同样简单:epicboy 更改了代码,以便使用
正确的
数据类型返回查询属性。gl_FrontFacing



最后, 染发剂打折 (超级马里奥奥德赛)v1993一直在使用PVS 工作室捕捉代码中的逻辑错误,到目前为止取得了良好的成功。例如,由于这个原因,在SPIR-V中可以进行小规模的清理。
兰派对时间!
工作仍在继续,但与此同时,Yuzu 自豪地宣布,(局域网)支持已添加给所有用户!这一切都要归功于斯波尔茨所做的工作。Local WirelessLAN
这意味着,现在可以在连接到同一网络(无论是有线以太网,还是通过 WiFi)时,使用交换机或任何其他运行 yuzu 的计算机来玩少量游戏。使用像ZeroTier这样的服务(hamachi 尚未工作),或者通过手动配置VPN(虚拟专用网络),这可以扩展到全球游戏!
到目前为止,支持局域网的游戏是:
ARMS
Bayonetta 2
Duke Nukem 3D: 20th Anniversary World Tour
Mario & Sonic at the Olympic Games Tokyo 2020
Mario Golf: Super Rush
Mario Kart 8 Deluxe
Mario Tennis Aces
Pokkén Tournament DX
Pokémon Sword & Shield(按设计限制游戏功能)
Saints Row IV®: Re-Elected™
SAINTS ROW®: THE THIRD™ - THE FULL PACKAGE
Splatoon 2(适用于启用自动存根)
Titan Quest
目前,并非所有列出的游戏都因缺少服务或与 yuzu 没有最佳兼容性而起作用,但游戏在所有工作案例中都被证明是稳定的。

它只是工作!(马里奥卡丁车8豪华)请记住,有些游戏需要某些按钮组合才能在局域网和本地无线模式之间切换。例如,要求用户同时持有 L + R 并按下主菜单中的左模拟棒 (L3),以便能够创建或加入 LAN 房间。Mario Kart 8 Deluxe
莫夫后来跟进网络接口清理。
流畅无故障的视频为胜利
由于yzct12345早在 7 月就引入了 VA-API,Epicboy使得使用硬件视频加速技术解码与 FFmpeg的视频用于所有其他兼容的 GPU 和驱动程序组合成为可能。此外,Yuzu 将优雅地回到软件解码,以防没有支持的组合。
这大大加快了解码过程,提高了模拟器在播放视频时的性能。
目前,已实施以下 GPU 解码器:
GPU 窗户 利诺克斯
恩维迪亚 NVDEC/D3D11VA 恩夫德克/VDPAU
AMD D3D11VA 瓦-阿皮/VDPAU
英特尔 D3D11VA 瓦-阿皮
请注意,由于用于解码视频的 GPU 不一定与用于渲染的视频相同,因此 NVDEC 在 Windows 上比 D3D11VA 更受欢迎,因为后者默认使用 iGPU 进行解码时的性能较低。
接下来的名单上,我们有一些嘈杂的神器出现在一些游戏的视频的报告。值得注意的是,那些编码与VP9格式。史诗男孩调查了这个问题,并通过存根UnmapBuffer,一个驱动程序命令,这是,你可以猜到,用来释放GPU内存由缓冲器举行。但是这到底有什么问题呢?恐怕这会有点技术性, 所以忍受我一段时间。我保证不会伤害...多。
VP9 编解码器除其他外,定义了视频中用作参考的帧,这些帧又被用于重建这些帧之间的帧。这意味着,要正确地插值这些"中间"框架,必须依靠来自,和以前的信息。,另一方面,完全由他们自己解码,而不依赖于任何参考。解码这样的框架是一个较慢的过程,但它保证框架将尽可能干净的错误,这就是为什么他们可以用作参考。key-frameskey-framesinter-frameskey-frames
如前所述,FFmpeg 用于解码视频。在 VP9 格式的情况下,yuzu 需要发送将解码的原始字节(即您在视频中看到的实际图像)以及包含元数据的头,例如帧的尺寸,无论是帧的尺寸,或者,如果不是,在处理时使用什么帧作为参考, 等。key-frame
构成此头的信息映射到内存中的缓冲器。而现在,事情变得有点滑稽。出于某种原因,在这个缓冲区的信息 - 即,该部分的头,指定什么应该用作参考,将改变不一致之间。这导致视频质量的下降,因为每个插值帧将引用不同的,导致这些臭名昭著的混乱的噪音文物的创建。key-framesinter-frameskey-frame
通过存根命令,这些参考帧的地址现在保持不变,只要他们需要,允许yuzu传递到正确的信息,并解码视频没有任何问题。UnmapBufferFFmpeg
两个小故障自由和光滑 (塞尔达的传说: 链接的觉醒)
在相关方面,epicboy 修复了另一个 VP9 问题:位流的第一帧缺少其帧数据,因此他改变了逻辑以确保第一帧完整,沉默了 FFmpeg 抛出的运行时间错误。
如前所述,Yuzu 直接从缓冲器中包含的 NVDEC 寄存器中读取标题信息。不幸的是,一个关键的旗帜,需要传递给FFmpeg,实际上并没有在这个缓冲举行。is_hidden_frame
为了规避此问题,我们的实施还缓冲了下一帧,然后,根据持有相同信息的另一个标志(),通知 FFmpeg 是否应显示前一帧。这意味着玉豆总是解码一帧晚了,因为已经是这样了,玉豆没有发送第一帧的头信息,因为它需要事先知道的价值。is_previous_frame_hiddenis_hidden_frame
史诗男孩所做的只是复制位流中的第一帧,因此基本上第一帧和第二帧是相同的,因此,利用这一事实,头信息可以传递给FFmpeg,以便它停止抱怨。
唉,软件开发的乐趣在这个世界上转瞬即逝。
一般错误修复
你无法预测虫子会如何出现,有时它们像雏菊一样弹出。随着巴西葡萄牙语作为用户界面的语言,开始只运行在日语,忽略了任何用户设置。Paper Mario: The Origami King
修复"获取可用语句"的副本量足以解决此问题。谢谢莫夫!

真正的本地游戏 (纸马里奥: 折纸王)桑卡桑给了,我们的指挥线SDL2替代常规Qt玉豆,一些额外的爱。通过正确实现,yuzu-cmd现在可以在全屏下正确隐藏鼠标光标。谢谢!yuzu-cmdSDL_ShowCursor
也与过去有关,虽然按钮映射和其他设置工作正常,但使控制器的切换被完全忽略。阅读连接值作为一个酒鬼是它需要通过这个失误, 感谢吐司不受限制!yuzu-cmd
吐司还发现了如何处理每个游戏配置文件的逻辑中的问题:只选择了默认用户配置文件。某些代码会更改,现在将使用当前选定的用户配置文件。
gidoly打开了他有史以来的第一个拉请求, 修复了一个小的, 但可以说是非常重要的描述。
Use Fast GPU time,高级图形选项卡中的选项之一,是旨在提高与使用动态分辨率作为在交换机上保持稳定性能的游戏的兼容性。
通过对内核撒谎并告知性能总是好的,模拟器避免了不必要的破坏和纹理的重建,从而节省了性能和 VRAM。作为额外的好处,一些游戏使用这种完全不掺解的信息,不断呈现在其最高支持分辨率。
出于这两个原因,我们建议用户始终启用此选项,因为在使用时未发现任何回归,并且某些特定标题(如)的稳定性优势非常值得。Luigi’s Mansion 3
所以,通过称铁铲为铁铲,吉多利现在告诉我们,这确实是一个黑客。阿尔潘, 潘, 维诺, 维诺Use Fast GPU time
存根NGCT:U服务允许启动。良好的捕获由德国77。Boyfriend Dungeon

男朋友地牢史诗男孩翻转了配置窗口中限制速度百分比和帧速率帽的位置。整理用户界面永远不会造成伤害。
是否有任何开发人员厌倦了等待超过 3 分钟来编译对代码纹理缓存部分所做的每个更改?嗯,yzct12345 将定义拆分,将构建时间缩短到只有 30 秒。
yzct12345也发现我们的僵局,并提交了解决这个问题的修复方案。重写这个队列并使其完成的工作也已经开始,所以希望下个月我们能看到后续工作。如果您对这些"生产者-消费者"术语感到困惑,只需知道它们基本上描述了如何在多核系统中处理对资源的访问,以便编写到(生产)中的流程和从共享资源(消耗)中读取的过程在此例中正确同步, 队列。Single-Producer, Single Consumer queueMulti-Producer, Multi-Consumer
这个冒险的开发人员还优化了"无威特克斯图尔"功能,产生了甜蜜的速度增益。闪动是指用于优化内存中纹理存储方式以最大限度地减少缓存误用的技术。因此,相反的操作是采取一个轻滑的纹理,并重组它,所以它对人类有意义。
前段时间,吐司检测到潜在的越界访问,这是一个错误,当程序访问内存,这是超出范围,它应该在给定的时刻运行。所涉代码也是用于解刷纹理的功能的一部分。epicboy 注意到,问题的根源在于计算帧缓冲器大小,用于限制代码应在哪里操作,并在此 PR 中将其固定,从而有效地消除了错误。
在手动检查 yuzu 时,在分析工具的帮助下,v1993 还在代码库的不同部分发现了一些小错误,例如内核函数中的放错位置的中断语句- 一个改变算法逻辑的人为错误,防止其按预期操作。同样,他还纠正了影响软件键盘代码的复制粘贴错误。GetThreadContext()
v1993 还在功能中发现了另一个错误,用于从 GPU 内存地址获取 CPU 内存段。闪鹰继续前进,并修复了它。GetSubmappedRange()
闪烁鹰的另一个值得注意的变化是,他改变了垃圾收集器(收割机)的逻辑,以便它使用最近使用最少的()缓存代替。LRU
以前,GC(垃圾收集器)的缓存会在每个帧的纹理上进行重述,检查它们是否应该从内存中清除。它还使用某些启发式处理,使清洁对某些类型的纹理更具攻击性,无需与主机内存同步即可清洁它们。n
然而,该计划根据它们最近被使用的速度来订购纹理。一旦内存已满,GC 就会开始在缓存的元素上进行重做,从而消除在最长时间内未使用的纹理。此外,GC 现在优先考虑消除不需要与主机内存同步的纹理,并且仅考虑从缓存中清空这些纹理后的其他纹理。这些更改使新的垃圾收集器更加稳定,因此我们可以默认为所有用户安全地启用它。LRULRU
同时,BreadFish64发现Yuzu花了相当长的CPU时间运行——一个用于在分析时管理线程的内核功能——并提交了一个补丁,优化了生成的代码,提供了一个小的性能提升。GetHostThreadID()Fire Emblem: Three Houses
输入改进
german77 本月实施了一些输入更改。
首先,在映射和移动模拟棒时,以前的实现仅显示表示模拟棒相对位置的蓝点。现在出现了一个新的绿点,代表棍子的模拟位置,考虑范围和死区值。知道棒子是否真正达到整个输入范围是有用的。
记得测试并设置范围和死区
接下来,通常更新到SDL,这总是带来一些好东西。在这种情况下:
向双感触发器发送效果的能力(目前未实施)。
更好的传感器数据速率为开关和游戏机控制器。
为亚马逊 Luna 控制器添加支持。
为谷歌斯塔迪亚控制器添加隆隆声支持。
专业控制器的改进隆隆声。
最后,Web Applet 会导致 SDL 过程死亡,禁用不必要的功能可以解决问题。
未来项目

4K 海滩情节 (Xenoblade 纪事确定版)进展良好,大多数重大问题都得到了解决。莫夫有几个尤里卡时刻与。现在其他秘密食谱在烤箱里,等待轮到他们了。Project A.R.T.Project Gaia
都是人!谢谢你的注意 - 快乐的发挥, 下次见!