跳转至

Mario Kart World 集成测试

基础:上游 nx2 位于 0da830e94(更新于 2026 年 11 月 2 日)。

该分支保留上游当前的命令列表副本、着色器支持、ASTC 转码修复、纤程分配更改,以及游戏加载和 amiibo 修复。其余更改被独立应用,以便可以分别审查。

自 snowstormxd 性能分支:

  • 执行原生宏参数,无需第二次 FIFO 副本。
  • 在发布构建中将寄存器写入历史保持为可选。
  • 在一个活动调度器节拍内复用未改变的小型 uniform 分配。
  • 批量处理着色器失效,保留每个提供的写入范围。
  • 仅清除当前表限制所暴露的描述符位图字。

改编自 Selevet performance build 4:

  • 每 128 次绘制提交一次原生图形工作,使 GPU 执行与 CPU 录制重叠。其他标题保留其现有的提交阈值。
  • 在决定异步着色器编译是否可以跳过当前绘制时,使用当前绘制的实际元素计数。间接计数保持未知,而不是使用先前绘制的计数。
  • 通过跳过空字来遍历缓存和调度器位图。更宽的优先级位集保留通用遍历。槽位迭代器也能正确处理空的第一个位图字。

掌机模式、ScaleForce 和 FXAA 是默认设置。显式保存的偏好设置会予以保留。接受启动建议会保存所请求的设置,并在加载每游戏配置后重新应用 MKW 预设。拒绝或关闭提示会保留用户的设置。

在 GCC 和 Clang 的 LTO 构建中,内核 TLS 实现采用非 LTO 方式编译,因此其查找逻辑保持在那些可在迁移纤程之间切换的调用者之外。这恢复了所测试 Windows 构建中 MKW 的启动。非 LTO 构建保留其现有标志。这些更改使用可移植的计时和同步路径。

未包含 Windows 混合计时器、Windows RAM 修剪和进程优先级更改。不安全的抢占式读取、compute-acquire 绕过和 guest SDK VRR 修补也被排除。保留当前上游的命令列表复制,而不是 Selevet 较旧的命令回读实现。

验证

回归测试通过 FIFO 重新分配、uniform 数据变更和会话重置、描述符表增长与失效、批量着色器移除与顺序失效的对比、稀疏槽位迭代,以及与独立队列模型的优先级排序,来演练真实的宏 JIT。优先级测试同时包含 64 优先级和 128 优先级队列。

该集成还保留了校准工作线程生命周期修复,修复了过期的内存/计时器测试夹具,并为 ThinLTO 将内核 TLS 定义为外部实现。宽松的 RomFS 目录查找在区分大小写的主机上接受混合大小写名称;NUP 测试检查基础版本元数据和归档校验和在 Windows 和 Linux 上是否一致。

Windows 测试包使用 Clang 23.1.4、校验和固定的 Eden v020525 PGO 配置文件,以及禁用后端优化的 ThinLTO(--lto-O0),与可正常工作的启动测试保持一致。Selevet 的 MSVC-ABI 配置文件不会替代 MinGW 构建的配置文件。链接时优化是一项构建选项;其他平台可以继续使用其通常的构建配置。

使用同一着色器缓存、游戏版本和设置的副本,将相同赛道和路线与先前构建进行比较。检查道具图标、几何体、碰撞、音频、卡顿以及停止/关闭。异步着色器可能会在管线编译期间延迟新对象的出现。仅凭较低的 CPU 计数器并不能证明 FPS 提升。并不声称锁定 60 FPS 的结果。

EDEN_NX2_FLUSH_DRAWS=4096 恢复先前的原生提交阈值,以便进行受控比较。EDEN_NX2_UBOREUSE=0 禁用 uniform 分配复用。

由 Codex 协助。

本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 eg/Eglantine