Switch模拟器Ryujinx里程碑Vulkan支持 2022年7月31日是万众期待的Vulkan测试版发布一周年的时间,现在终于到了。一年的测试、近40,000行代码和跨越122人的700多份报告将我们带到了这里,我们已经准备好向您介绍这段旅程,这对我们意味着什么,当然也对您意味着什么! 什么是Vulkan? Vulkan是一个图形API。将其视为图形卡(GPU)和任何3D应用程序之间的桥梁。其中许多您可能已经听说过,包括:OpenGL、DirectX11和DirectX12,到目前为止,Ryujinx仅使用OpenGL。 听起来很酷。我为什么在乎? Vulkan是比OpenGL更现代和低级的API,因此,开发人员可以更精细地控制GPU硬件;在所有方面都是优点和缺点。虽然在尝试准确模拟系统时这种详细程度可能是有益的,但它也可能会导致数小时的痛苦,不得不进行手动更改,相比之下,OpenGL是一个更高级别的API,虽然它不提供对GPU的直接访问,但可以让驱动程序在开发方面占用大量空闲时间,并且不像Vulkan那样需要大量的手动操作。 不幸的是,这就是事情变得不幸的地方。将核心渲染功能留给GPU驱动程序依赖于所述驱动程序完全符合OpenGL规范,并且这样做时也不会出现错误。最后一份备忘录似乎在AMD和Intel的邮件中丢失了,后续似乎也没有发送。自从Ryujinx开始渲染图形以来,这让这些产品的所有者陷入了困境。他们可以处理图形错误和性能不佳或使用Linux(开源驱动程序提供更清晰的体验)。由于Linux并不适合所有人,因此需要一个真正的解决方案,幸运的是,Nvidia、AMD和Intel的每个主要GPU供应商都提供高度符合Vulkan规范的驱动程序。 除了兼容性之外,Vulkan还可以原生使用一种称为SPIRV的着色语言,它在编译着色器方面比OpenGL使用的相当缓慢的GLSL快得多如果不出意外,这可能是普通用户或NvidiaGPU所有者最会注意到的变化! 发生了什么变化,它将如何影响我? 首先,您需要知道,一旦您更新超过1。1。200并启动游戏,您多年来培养的任何着色器缓存都将不复存在。虽然这确实意味着您将在每个游戏中从头开始构建着色器,但由于SPIRV的编译速度非常快,重建它们应该更快且更少痛苦!如果您选择使用Vulkan。 AMD和Intel用户希望立即将Vulkan设置为他们的后端,并且永远不要回头,而Nvidia用户则可以选择。虽然在大多数情况下,由于其较低的着色器卡顿,Vulkan可能是更好的选择,但可能OpenGL对有一些游戏在其中一个或另一个图像中渲染性能更好,所以这就需要您自己选择。当您切换时,为一个后端构建的着色器将重建为另一个后端的免费集,因此尝试两者都不会丢失任何东西。一个好的策略可能是使用Vulkan进行最初的着色器构建,然后如果它的性能更好一点,则切换到OpenGL。这是你的选择。 不过需要注意的是:Vulkan上的VRAM使用率更高,分辨率缩放更昂贵。也就是说Vulkan相对OpenGL的显存使用率会更高。 纹理再压缩 近期!一些游戏,即异界锁链,使用ASTC(AdaptiveScalableTextureCompression)来压缩它们的纹理。NintendoSwitch本身支持对这些纹理进行原生解压缩,但我们的桌面显卡不支持,这需要额外的工作来渲染它们。这意味着这些纹理可以增长到原来的4倍,导致VRAM(显存)变得臃肿。 纹理重新压缩现在可以在图形选项卡中找到,它重新压缩ASTC纹理,使它们看起来稍微差一些,但可以让您的PC避免驱动程序崩溃。这适用于Vulkan和OpenGL,尽管它在Vulkan上成为一个更大的问题。OpenGL非常聪明,它会在VRAM(显存)和DRAM(内存)之间移动,以防止驱动程序在低VRAM系统上崩溃,它自己会这样做。Vulkan没有提供这种动作,因此请注意低VRAM卡,尤其是在分辨率缩放时。纹理再压缩在某些特定情况下会有所帮助,但它并不是万能的。 任何GPU启用此设置不能小于4GB 是否计划了异步着色器编译(异步着色器)? 不会。由于同时使用并行着色器编译和SPIRV作为着色语言,着色器卡顿应该相对较少且在实体系统上相差甚远。跳过绘制以避免卡顿最终是一种技巧,而且并非每个着色器都可以异步编译。这样的设置永远不会完全消除卡顿,而且在大多数情况下,它只会导致严重的图形错误而回报很少。 话虽如此,但开发人员并不反对外部贡献者在该领域进行尝试。如果提出的解决方案符合他们的标准并且在全球范围内完全适用于每个标题,那么祝他们好运! 另一方面,还有其它方法可以进一步减少着色器编译的卡顿,以及一般的卡顿。请放心,主要开发人员都知道这一点。 着色器编译对比与OpenGL 内容警告:血腥。生化危机启示录2用于以下比较,可能并不适合所有人。 带着RX570去散步 我们和我们更广泛的社区在一年中就这些变化对NVIDIA以及所有供应商的影响进行了广泛的测试。然而,到目前为止,最常见的替代品当然是AMD。下面是OpenGL和Vulkan与运行最新推荐驱动程序的RX570之间的性能比较。可以看到Vulkan是有多么的优秀。 这里的一些杰出游戏是马里奥赛车8豪华版,它以惊人的121FPS(比OpenGL提高了163)和超级马里奥奥德赛以63FPS(比OpenGL提高了413)!所有这些帧率在Vulkan上也更加稳定,这在多人游戏场景中尤为重要。《马里奥赛车8豪华版》之前几乎没有达到60FPS以上,并且在高玩家人数的比赛中经常低于;现在任何专用的GPU都可以轻松应对。 前后艺术画廊:英特尔 AMD在性能方面遭受了什么,英特尔在图形错误和性能方面遭受了什么。幸运的是,他们的Vulkan驱动程序有些合理,但我们当然希望他们即将推出的ARC阵容在性能方面比他们目前的集成选项更有冲击力。 供应商不可知的修复 Vulkan不仅为具有低于标准的OpenGL驱动程序的GPU提供了可喜的缓解;它还可以解决OpenGL在一般体验中的一些限制。在包括金童NVIDIA在内的所有GPU上都观察到了以下改进。 随机位置出现黑色纹理的错误是困扰许多使用OpenGL渲染器的虚幻引擎4游戏的问题,例如时空勇士、奇异人生和勇气默示录2。由于Vulkan更高的纹理限制,这些在Vulkan中不是问题。OpenGL限制为32。 小小诺亚还看到了其视觉效果的彻底改造,使其更接近我们确定的意图。 合并后要解决的已知问题 AMDGCN卡(任何RX400500和更早版本)在马里奥赛车8:豪华版中由于地图依赖性损坏而出现严重的图形故障。这是在最近为修复塞尔达传说:荒野之息和火焰纹章无双:风花雪月中的图形损坏所做的更改后发现的,我们在这些GPU上强制复制而不是使用损坏的Vulkan标志来处理立方体贴图。通过使用副本,我们发现了在此过程中数据丢失的问题,这也是您在下面看到的核灾难的原因。 一些游戏会在启动时或菜单后不久崩溃,并在RADVlinux驱动程序上出现检测到堆栈粉碎错误。目前原因不明。 一些备受瞩目的小众游戏无法在AMDVulkan上启动:巫师3、异度之刃3,可能还有更多。 结束语 好吧,这很情绪化不是吗?这感觉像是一个巨大的里程碑,因为它确实是一个里程碑。与着色器卡顿的斗争正在取得胜利,AMD和英特尔GPU所有者的前进道路开始清晰,我们的GPU开发人员也许可以得到当之无愧的休息。不要害羞地祝贺开发团队取得这一成就,并感谢他们的不懈努力!