yuzu模拟器吧 关注:183,571贴子:769,318

Ryujinx 2022年9月进度报告(机翻)

取消只看楼主收藏回复


一楼祭


IP属地:韩国1楼2022-10-20 16:54回复
    九月的报告?你想告诉我我们今年刚刚达到75%的目标?疯狂。
    这个月不仅标志着从夏天到秋天的转变和一些重大的世界事件,当然最重要的是Splatoon 3的推出。随着假日季节的快速临近,这意味着游戏发布,游戏发布和…你猜对了,游戏发布。即将到来的神奇宝贝游戏总是给我们的开发团队带来的特有的眼睛抽搐正在生根发芽,希望魔兵惊天录不会在发布时踩在我们身上!
    在我们进入Ryujinx的2022年9月之旅之前,让我们花点时间回顾一下我们的patreon目标和激励措施。提醒一下,这些功能并没有被锁定在付费墙后面;无论如何,下面提到的所有特性最终都会实现。然而,如果达到了目标,那么优先级就转移到立即实现该特性上。
    GPU:
    毫不奇怪,本月最大的GPU变化涉及三个项目,结合在一起,对Ryujinx聚光灯来说是相对较新的:Vulkan,AMD GPUs和Splatoon 3。在发布时,许多人对游戏的渲染和播放感到满意,但这是只有NVIDIA GPUs才能获得的荣耀。Vulkan希望某些顶点属性以特定的方式排序,如果游戏传递未对齐的元素,那么这可能会对未来的顶点造成一点混乱的连锁反应。通过添加一种方法来在顶点缓冲区被绑定之前改变它们的跨度,我们可以避免这个问题,让Vulkan规范满意。对于Team Red用户来说是个好消息。


    然而,并不是所有的问题都需要突破游戏才能引人注目,Splatoon 3这个月给我们带来了一个相当有趣的bug。


    IP属地:韩国2楼2022-10-20 16:56
    回复
      一些LDN用户很快注意到评分系统似乎给了某些球队一些非常离谱的分数。

      事实证明,由于Splatoon(你有多少地图覆盖)中得分的独特方式,高于原生的分辨率缩放值实际上导致游戏认为油漆覆盖的像素比实际多。这很快变成了LDN服务器上的GPU军备竞赛,看谁能在“修复”失败前获得有史以来的世界纪录。Funnier还在向相反的方向扩展,分辨率比native低,这使得它实际上不可能在任何墨水中游泳,因此完全破坏了许多用户的大部分游戏性。经过缩放样本使用的计数器按照决议,这两个怪癖都解决了!
      9月份隔离了几个回归,第一个是解决Fate/EXTELLA中的一个bug,其中所有背景都停止渲染,只是呈现一个黑色的空白。把问题缩小到纹理类型之间的中断块传输,这个问题已经在OpenGL中用单独修复Vulkan不久之后。


      马里奥派对巨星最近也遭受了打击,聚光灯游泳迷你游戏的渲染受到了打击。


      IP属地:韩国3楼2022-10-20 17:33
      收起回复
        这红色聚光灯的表面照明似乎减少了一半。这真是令人挠头,因为它根本没有影响到游戏中的其他两个聚光灯。经过一些挖掘,它被追溯到以前的优化着色器专业化,并快速修复添加了格式改变时重新绑定纹理。


        出于渲染精度、性能或传统硬件兼容性的考虑,一些游戏似乎“偏爱”一种或另一种主机图形API。在性能方面,有几个游戏在Vulkan上的运行比在OpenGL上要差一些。虽然我们会继续重申Vulkan是不这是解决所有问题的灵丹妙药,本质上并不一定比OpenGL更快,但这些游戏的性能下降幅度之大足以被认为是不正常的。与许多最常报告的问题一样,这一切都始于神奇宝贝:特别是剑与盾,在最近的变化之前,使用Vulkan导致了20%的性能损失。这对于AMD和Intel用户来说是沉重的,他们可能一直徘徊在全速的20%之外,但没有高性能OpenGL驱动程序的奢侈。
        那么,是什么导致了这种巨大的性能差异,我们该如何解决呢?事实上,这一切都始于Nvidia OpenGL驱动程序,因为正如在模拟历史中多次证明的那样,它非常聪明。Nvidia OpenGL驱动程序有一个内置的机制,当队列变大时,可以将命令直接刷新到GPU,虽然不一致,但在经常发生这些刷新的游戏中效果非常好。像往常一样,Vulkan没有从驱动程序那里得到这样的特殊待遇,所以这里选择的解决方案是定期刷新命令手动减少GPU<->CPU延迟,使我们等待刷新的时间更短、更一致。

        上面是受益于同花顺变化的游戏列表。


        IP属地:韩国4楼2022-10-20 17:34
        回复
          剑/盾受益最大,但即使是野性的呼吸也很乐意呼吸得轻松一点。剑/盾的瓶颈是主GPU线程等待GPU的时间;与此同时,《荒野之息》减少了等待其他访客线程进入GPU的时间。
          关于Vulkan改进的话题:R4G4B4A4格式的一些组件出了问题,导致背景和文本框出现各种问题。更正此排序管理标题中的恶作剧,如Ys八:达纳的以泪洗面和夜空中的轰鸣。




          IP属地:韩国6楼2022-10-20 19:59
          回复

            让我们通过一些快速变化来保持Vulkan系列的运行:
            这如果混合被禁用,混合状态现在归零。这减少了AMD和英特尔GPU上的管道重建中断。在这种情况下,Nvidia驱动程序已经非常宽容管道未命中。
            四边形现在在Vulkan上转换成三角形。由于Vulkan没有原生主机四边形支持,我们以前的每四边形一个抽签排队的方法比让Vulkan渲染它擅长的要低效得多。三角形!
            SPIR-V不再输出视图端口索引如果主机GPU不支持。这使得可能不符合最新Vulkan规范的旧GPU可以播放一些以前会在启动时崩溃的游戏,包括超级粉碎兄弟终极版。
            更明显的变化是,即使在Vulkan长达一年的测试阶段之后,tessellation仍有一些值得注意的问题。但是,由于最近发布了英雄传说:从零开始,这个话题又回到了每个人的脑海中,更具体地说,回到了我们的不和谐频道中。正如你所看到的,这可能不是开发者Nihon Falcom想要的沉浸式游戏体验。

            以前
            然而,这确实是我们所怀疑的:镶嵌再次罢工。幸运的是,通过修复整个一堆错误的假设和其他SPIR-V相关的失误,一些游戏中的镶嵌问题已经解决,现在应该可以准确渲染了。

            在...之后


            IP属地:韩国7楼2022-10-20 20:00
            回复




              IP属地:韩国8楼2022-10-20 20:37
              回复

                巫师3:疯狂狩猎
                既然Ys游戏在这篇报道中似乎很受欢迎,我们为什么不再附送一个呢?ys VIII:DANA的以泪洗面有点失望,因为用户面临着各种各样的渲染怪癖。有时它工作,有时它不工作,有时它只是渲染文本框。非常讨厌。值得庆幸的是,这个游戏总是被破坏,即使是很小的破坏,重现错误并由此找到原因并不像其他“随机”问题那样痛苦。经过将着色器LDC转换为常量缓冲区访问在某些情况下,我们可以允许在这种情况下激活无绑定消除。


                九月还带来了对狙击手精英3早期介绍过场动画崩溃的修复允许使用具有来自未绑定缓冲区的句柄的无绑定纹理。


                IP属地:韩国9楼2022-10-20 20:39
                回复
                  如果有太多的话,请允许我简化一下:游戏做了奇怪的事情=游戏崩溃,游戏仍然做奇怪的事情=现在游戏没有崩溃。在这两个极端之间,我们相信每个人都被覆盖了。内部vsync信号(不,不是你想的那个屏幕撕裂信号)也是在9月份改为精确到16.667毫秒而不是仅仅用Ryujinx的交换区间。这修复了中的一个问题东京幻影会议#FE 再来一个!其中当vsync定时慢慢偏离音频通道时,音频会在过场动画中慢慢去同步。
                  结束九月份的GPU部分后,我们将整齐地进入CPU部分,因为这一最终更改将与我们稍后将讨论的其他内容协同工作,以修复几个32位游戏的渲染。1D和缓冲纹理在着色器上使用完全相同的纹理指令,所以我们需要直接从GPU状态中获取实际的纹理,这对于普林尼:我真的能成为英雄吗和普林尼2:内裤行动的黎明(请不要让我再打这个了). 通过解决1D纹理被假定为缓冲区的情况,这些游戏可以开始才能正确渲染。


                  但还是不太对,是吗?让我们解决这个问题。
                  CPU:
                  并非所有的图形错误都与GPU仿真有关,本月我们看到了巨大的Ryujinx的CPU模拟的进展。如上所述,我们将从一个变化开始,结合后期的GPU修复,解决了32位游戏中的许多渲染问题。
                  由于在VLDn和VSTn的原始CPU测试中的疏忽,这些指令实际上没有在它们的所有模式中被准确地测试。解决这一问题发现了几个由错误的寄存器值引起的故障点,进而导致其他值从错误的寄存器位置取出或发送到错误的寄存器位置。解决这个不正确的寄存器增量值修复如此多的32位错误,它需要一个完整的列表。
                  两个普林尼游戏,作为这里的锚,当然是固定的这一变化:


                  IP属地:韩国10楼2022-10-20 22:25
                  回复

                    但是和所有最好的改变一样,它影响的范围要大得多。以下标题现在渲染或解决了一些主要的图形错误:
                    不再有英雄:

                    不再英雄2绝望的挣扎:
                    查理的天线和一系列其他图形效果现在可以在皮克明3:豪华版。


                    IP属地:韩国11楼2022-10-20 22:27
                    回复




                      IP属地:韩国12楼2022-10-21 10:42
                      回复


                        这一改变也解决了音频质量极差的问题:倪无国,双龙霓和天空赌徒:风暴袭击者。耳机警报。
                        www点bilibili点com斜杠audio斜杠au3579218?type=3&spm_id_from=333.999.0.0?type=6
                        如果我们不列出ARMeilleure现在可以处理的每一条新指令,它会是一个进度报告CPU部分吗?行政决策:不,不会。


                        IP属地:韩国13楼2022-10-21 10:45
                        回复
                          如果你还没有猜到,在过去的几个月里,我们已经看到了32位的焦点,因为它是我们重新编译器中最薄弱的地方,因为大多数Switch产品本身都是64位的。然而,就像所有任天堂Switch的事情一样,如果你给开发者做奇怪事情的选择,他们就会做奇怪的事情。因此,相当多的交换机产品(通常是某种类型的端口)选择了32位选项,如果它们需要的指令在重新编译程序中没有得到满足,就会给我们带来麻烦。
                          好的,那么新功能是什么,它有什么作用?
                          VRSRA、VRSHRN、VQSHRUN、VQMOVN、VQMOVUN、VQADD、VQSUB、VRHADD、VPADDL、VSUBL、VQDMULH和VMLAL Arm32 NEON被实现并允许神怒之日-阿曼特斯·阿曼特斯-任天堂Switch,博德之门,冰风谷和星球大战:共和国突击队给游戏中所有人。
                          ADD (zx imm12)、NOP、MOV (rs)、LDA、TBB、TBH、MOV (zx imm16)和CLZ thumb指令被实现,并允许Vita2HOS家酿啤酒在其最新版本上再次发挥作用。
                          Thumb (32位)内存(有序)、乘法、扩展和位域指令并允许一些Vita应用程序在Vita2HOS下更进一步。
                          T32 Vfp指令并允许一些Vita自制程序在Vita2HOS下开始渲染。

                          VRINT (vector) Arm32 NEON指令的实现允许白女巫的愤怒如果你提供了一个保存文件(否则需要网络小程序),在游戏中的标题。

                          T32 Asimd指令允许Vita自制软件(如CHIP-8仿真器)引导和渲染。


                          IP属地:韩国14楼2022-10-21 10:46
                          回复
                            补2



                            IP属地:韩国15楼2022-10-21 11:36
                            回复
                              这个实际上非常酷,因为最终的场景实际上是一台PC模拟任天堂Switch,它运行的是家酿翻译层,它运行的是PS Vita CHIP-8仿真器,模拟Breakout!

                              T32上的PLD和SUB (imm16),以及A32和T32上的UADD8、SADD8、USUB8和SSUB8指令被执行,并且再一次允许Vita2HOS的更一般的功能运行,虽然只是有机会一些游戏可能使用它们。
                              A32/T32/A64提示指令(CSDB、SEV、SEVL、WFE、WFI、产量)被实现为Nops(什么都不做),以避免游戏中的意外行为和崩溃,例如明治天皇,神格右直男(有点拗口)。
                              哇哦。在如此短的时间内,几个不同的人投入了大量的工作来完成如此多的新指令,甚至没有影响其他领域的进展,因为我们已经介绍了GPU emulation收到的广泛变化。我们现在在32位游戏、自制软件和Switch -> PS Vita翻译层方面有了很大的进步!最后一个可能看起来很小众,但像Vita2HOS这样的项目确实抓住了想象力。
                              在炼狱中度过近一年后rejit队列的清理这使得代码库的这一部分的维护变得更加容易,并预示着Ryujinx最初的CPU开发人员之一的回归,如果你希望你的游戏内视频全速播放,他带来了一些出色的进展。LDj3SNuD在9月份的第一次访问是实现饱和的和ShlRegSoftFallback类的区域。你不需要知道这意味着什么,但这种效果在视频播放中是相当具有变革性的。
                              https://tieba.baidu.com/p/8096027990
                              在...之后


                              IP属地:韩国16楼2022-10-21 11:38
                              回复