限 时 特 惠: 本站每日持续更新海量各大内部创业教程,一年会员只需98元,全站资源免费下载 点击查看详情
站 长 微 信: muyang-0410

Switch模拟器Ryujinx进度报告2022-8月

着色器缓存大小设置多少_着色器缓存大小设置多少合适_着色缓存器有必要开

又一个月过去了,这意味着来自您最喜欢的任天堂Switch模拟器的另一份进度报告。

我们对 GPU、CPU、内核和服务仿真进行了常规的滚动改进,做了大量的代码清理,最后发布了新的 LDN 版本。

显卡:

使用 OpenGL 驱动程序运行游戏并不陌生,本月也不例外。《数码宝贝物语:网络侦探

》、《热血少女Zero》和《雷顿神秘之旅 卡特莉艾尔与大富豪的阴谋

》等游戏会表现出小的纹理破坏,通常以线条或彩色顶点的形式出现,而这些都不是。这最终是由于Ryujinx用于将纹理数据刷新到CPU的方法效率相当低下并且容易出现自己的错误。虽然单独修复刷新机制中的潜在问题很重要,但为修复这些OpenGL标题而提出的解决方案是为这些纹理数据传输实现一条新的快速路径,从而完全绕过刷新。

着色器缓存大小设置多少合适_着色缓存器有必要开_着色器缓存大小设置多少

着色器缓存大小设置多少_着色缓存器有必要开_着色器缓存大小设置多少合适

着色缓存器有必要开_着色器缓存大小设置多少合适_着色器缓存大小设置多少

着色器缓存大小设置多少合适_着色器缓存大小设置多少_着色缓存器有必要开

在Vulkan合并后,AMD和英特尔GPU的所有者很快意识到,当选择API时,Mii编辑器小程序有些崩溃。虽然它在OpenGL中工作正常,但尝试在Vulkan中打开Mii编辑器会导致彻底崩溃或表现出图形错误,例如某些视觉元素根本没有显示:

着色缓存器有必要开_着色器缓存大小设置多少合适_着色器缓存大小设置多少

这个特殊问题被追踪到一个无效的布尔常量(1字节)的赋值,然后直接分配给一个整数(4个字节)。这导致某些 GPU 供应商出现 SPIR-V 解析失败,因此此处的解决方法是删除这些无效分配。

着色缓存器有必要开_着色器缓存大小设置多少合适_着色器缓存大小设置多少

关于Vulkan的话题:分娩并非没有出牙疼痛和一些小的倒退。其中一个回归表现为在《集合啦!动物森友会》和《莱莎的炼金工房》中在Vulkan和 OpenGL 图形 API 上的闪烁。

这两个问题都可以追溯到最终Vulkan rebase期间的疏忽,在新添加的采样器池缓存之后,纹理绑定将使用错误的采样器池。这里只需要一行修复即可将正确的采样器池作为参数传递。

撇开“纹理”这个词不谈,本月对定义的格式及其相关的格式表进行了一些更一般的内务处理更改。ETC2纹理格式被添加到Vulkan中,尽管奇怪的翻转,这次实际上是NVIDIA不支持它们的使用。AMD和英特尔的所有者应该看到Vegas Party,辐射岛和任何其他使用上述格式的人都可以玩。

整个格式表也进行了重构,以便为格式提供有意义的名称,而不是使用所谓的“幻数”。编程中的幻数是原始使用的值,并且没有关于其使用的有意义的上下文。

着色缓存器有必要开_着色器缓存大小设置多少合适_着色器缓存大小设置多少

最佳做法是为这些幻数分配一个常量,以便将来贡献者能够理解其含义。这并不总是那么容易着色器缓存大小设置多少合适,特别是在逆向工程和仿真中,你可能直到很久以后才确切知道某物是什么。值得庆幸的是,我们对Switch的了解已经成熟多年。英伟达最近也发布了大量文档!即使对于许多阅读这些报告的非编码人员来说,可读性的差异也是天差地别:

着色器缓存大小设置多少合适_着色缓存器有必要开_着色器缓存大小设置多少

某些颜色格式(如 RGBX)没有 alpha(透明度),因此,当应用某些需要 alpha 的操作时,理想情况下,这些操作不应接触没有所需组件的颜色格式。不幸的是,这不可能轻易做到,但我们可以让它们表现得好像alpha总是一个静态的1(完全不透明)。这解决了 穆拉纳秘宝 中的一个问题,即地面被渲染为黑色矩形而不是…好吧,不是一个黑色的矩形。

着色缓存器有必要开_着色器缓存大小设置多少_着色器缓存大小设置多少合适

着色缓存器有必要开_着色器缓存大小设置多少_着色器缓存大小设置多少合适

《异度之刃3》是一个有趣的版本。一方面,游戏在图形上似乎在硬件方面表现非常出色。另一方面,稳定性被击中或错过,不是一个,而是三个不同的崩溃,都以菜单为中心。

其中第一个要调查和解决的问题是 OpenGL 独有的,它以 TDR(超时检测和恢复)的形式表示。

OpenGL 不允许指定顶点缓冲区的大小,这可能表示函数有时可能会从缓冲区边界之外调用地址。为了解决此问题,需要创建第二个临时缓冲区来容纳这些越界访问方案。具有讽刺意味的是,这个问题是众所周知的。最明显的次要修复实际上是超级马里奥奥德赛中的瀑布。

着色器缓存大小设置多少合适_着色器缓存大小设置多少_着色缓存器有必要开

4年来,用户已经注意到,在水烟效果中可以看到三角形的伪像,在《前进!奇诺比奥队长》中也可以看到。这是由导致 异度之刃3中TDR的完全相同的问题引起的,并展示了为什么您今天应该总是推迟一件事,而明天可能会解决两件事!

着色器缓存大小设置多少合适_着色缓存器有必要开_着色器缓存大小设置多少

在游戏过程中和 异度之刃 3 的菜单中,Vulkan 仍然可能会出现 DeviceLoss 崩溃,尽管我们还不确定原因,并且 OpenGL 在这里修复的问题不会影响 NVIDIA Vulkan着色器缓存大小设置多少合适,正如人们所期望的那样。还有一个与内存相关的最终崩溃,与选定的图形API无关。为什么他们都选择发生在完全相同的菜单上,做完全相同的事情,并且似乎出于完全不同的原因,这暂时超出了我们的理解范围;我们希望在不久的将来为您取得更多进展。

不过,我们还没有完成 异度之刃3,因为本月已经推出了第二个修复程序,这次是专门针对AMD用户的。AMD不满足于让NVIDIA成为本月格式支持缺陷的唯一罪犯,AMD不支持Vulkan上的RGB16顶点格式,因此需要回退格式。如果不支持 RGB16,则使用 RGBA16 顶点格式解决了这些 GPU 在尝试启动游戏时面临的即时崩溃问题。还添加了用于清除渲染目标的 HLE 宏,因为 AMD 驱动程序强烈反对清除单个切片。

如果你希望我们逃离异度之刃的领地,再想一想。最近的一项变化带来了 异度之刃:最终版分辨率缩放的回归,看起来有点不对劲。某些比例值未跨纹理和图像正确更新,导致上述问题。游戏现在再次正确缩放。

着色器缓存大小设置多少合适_着色器缓存大小设置多少_着色缓存器有必要开

着色器缓存大小设置多少_着色缓存器有必要开_着色器缓存大小设置多少合适

结束本月GPU部分的一些小变化包括:

如果支持该功能,则不会再触发几何着色器直通的回退。修复了英伟达上《漫威终极联盟 3》中的回归问题。

更改一些以前未定义的 SPIR-V 值以进行初始化,而不是保留为可能未定义的值,因为 NVIDIA 驱动程序似乎不喜欢这样做。修复了 塞尔达传说:织梦岛 中的倾斜模糊效果,以及使用Vulkan时可能出现的一些闪烁。

新超级马里奥兄弟 U 豪华版中的 OpenGL 独占回归导致零引用异常崩溃。通过在尝试获取纹理的图层计数之前确保帧缓冲区确实存在,回归已得到修复。

OpenGL 着色器重新编译现在再次采用多线程处理。在 Vulkan 合并之后,OpenGL 在启动时用单个线程重新编译着色器,而不是预期的最大值 8 个!

中央处理器:

CPU重新编译器继续改进,本月见证了一堆新指令的添加,这些指令的名称听起来很复杂,这些名称变得有点模糊。

限 时 特 惠: 本站每日持续更新海量各大内部创业教程,一年会员只需98元,全站资源免费下载 点击查看详情
站 长 微 信: muyang-0410