Open Gaming & Graphics

DuckStation v0.1-12442 improves CPU recompiler accuracy and Vulkan stability

Key Takeaway

This update introduces significant low-level fixes for the CPU recompiler, MDEC video decoding, and Vulkan device management.

Summary

DuckStation, a high-performance PlayStation 1 emulator, has released version 0.1-12442. This update focuses heavily on increasing the accuracy of the CPU recompiler and the Geometry Transformation Engine (GTE) to ensure better compatibility with complex titles.

Beyond core emulation logic, the release addresses several stability issues within the graphics backends. Specifically, it provides numerous fixes for Vulkan device creation, descriptor set binding, and swap chain management, alongside optimizations for MDEC video decoding and SPU audio processing.

Technical improvements in DuckStation v0.1-12442

  • CPU/Recompiler Accuracy: Implements fixes for load delays when swapping NOP slots, preserves pending loads during memory exceptions, and corrects misaligned indirect jump exceptions.
  • Graphics Backend Stability: Resolves Vulkan-specific issues including crashes during device creation, incorrect ROV clear behavior, and improper compute image descriptor set binding.
  • MDEC Video Decoding: Optimizes the MDEC subsystem by vectorizing IDCT across matrix rows and converting whole macroblocks in YUVToRGB_New to improve video playback performance.
  • GTE and SPU Optimizations: Enhances the Geometry Transformation Engine with branchless saturation for light matrix multiplication and adds fast-path processing for ADPCM blocks in the SPU.
  • System and FileSystem: Fixes a potential integer overflow in UTF8 encoding and improves file system efficiency through RVO optimizations and shared file opening.

Why it matters

These low-level architectural refinements improve the emulation experience for Linux users relying on Vulkan-based drivers. The increased accuracy in the recompiler and MDEC decoding reduces the likelihood of graphical glitches and crashes in demanding PlayStation 1 software.

Original reference: github.com →