Open Gaming & Graphics

DuckStation rolling release adds multi-threaded shader compilation

Key Takeaway

The DuckStation PlayStation 1 emulator introduces multi-threaded shader and pipeline compilation to improve performance.

Summary

The latest rolling release of the DuckStation emulator includes significant architectural improvements to GPU and SPU handling. Key updates feature multi-threaded shader and pipeline compilation, optimized SPU processing, and the use of Vulkan timeline semaphores. The update also refines the shader cache system using UIDs and binary keys.

Technical improvements in DuckStation

  • GPU/HW: Implemented multi-threaded shader and pipeline compilation.
  • GPU/HW: Switched to using UIDs for shader generation and shader cache keys.
  • SPU: Vectorized Gaussian interpolation and streamlined per-voice flag processing.
  • Vulkan: Added support for timeline semaphores when available.
  • Threading: Introduced lightweight Mutex and ConditionVariable wrappers and dynamic TaskQueue thread counts.
  • ObjectArchive: Migrated to binary keys instead of strings for improved shader cache lookups.

Why it matters

These optimizations aim to reduce stuttering and improve emulation smoothness, particularly during shader heavy scenes in PlayStation 1 titles.

Original reference: github.com →