A development build with broad emulator changes
DuckStation’s latest build, published on October 13, 2026, is a rolling development release rather than a stable version. It is available for Windows 10 and 11 on x64 and ARM64, Linux through x64, ARM32, and ARM64 AppImages, and macOS as a universal package. The project builds automatically from ongoing repository changes, so this package may include less-tested behavior than a stable release.
DuckStation emulates Sony’s original PlayStation, also known as the PSX. It provides Qt and fullscreen interfaces, save states, memory-card management, controller configuration, hardware rendering, RetroAchievements, debugger tools, and enhancements such as upscaling, texture filtering, PGXP geometry improvements, and post-processing. The emulator runs on the listed host platforms rather than acting as replacement console firmware.
Shader and pipeline work targets graphics workflows
One of the largest groups of changes restructures shader and pipeline caching. GPU code now uses unique identifiers for shader generation and cache keys, while the cache uses an object archive with synchronized access and binary keys. Supported graphics backends can load cached pipelines directly, and shader and pipeline compilation can run across multiple threads. These changes give DuckStation a more organized way to reuse compiled graphics work and distribute compilation tasks. The release notes do not provide benchmark figures, so they do not establish a specific reduction in stutter or startup time.
The Vulkan backend can use timeline semaphores when available and includes fixes for stream-buffer hazard tracking and an invalid render-ordering clear operation. Direct3D 11 receives a fix for a race while worker threads create pipelines. OpenGL now pads a push-constant range correctly and requests coherent persistent buffer mappings, while Metal removes a feedback-loop path. Several internal pipeline layouts and uniform-buffer limits were also simplified.
The build adds a ‘Filter Framebuffer Uploads’ advanced option and several additional texture filters. It also introduces ‘Disable Upscaled Direct Textures’, with a GameDB entry for Fear Effect, and expands background texture filtering to more games. A fallback texture-mask issue is fixed, as is a problem that could make background replacements disappear after texture replacement settings were toggled off. Users can also see an inherited multi-sampling setting in Qt game properties.
Audio processing and disc handling receive focused fixes
The SPU audio code streamlines per-voice flag processing, vectorizes Gaussian interpolation, consolidates capture-buffer writes, and decodes ADPCM nibbles in pairs. These are implementation changes in the PlayStation audio emulation path. The release notes do not claim a particular performance result or audio compatibility milestone.
CD-ROM handling receives several corrections. The asynchronous reader now uses a persistent thread and lighter synchronization abstractions, while a possible incorrect restart track during playback is fixed. Disc-image readers now handle sector formats more accurately: memory-backed images read sectors in their native format, PPF images accept non-Mode 2 sectors, and CHD images choose the correct sector size according to the sector mode.
The MDEC no longer clears its output FIFO when a new command arrives. A separate fix addresses scanline synchronization before the vertical display start, and the video thread now preserves a successful software fallback when other video-thread operations fail. These changes target correctness in low-level emulation and display paths rather than adding a new user-facing mode.
Graphics controls and fullscreen behavior are more consistent
The fullscreen interface gains blurred background images for headers and displays a subset icon as the game icon in subset views. Loading screens now size their text and progress elements separately, while the game list can show progress during an on-demand load. A change-disc menu that could become stuck in some situations is fixed, as are focus resets when leaving game-list searches with Escape.
Hotkey handling receives several practical adjustments. DuckStation adds a ‘Toggle Pause Menu’ hotkey, and cheats, achievements, and leaderboards can now be toggled rather than treated only as one-way actions. The pause-menu toggle is synchronized, switching between fullscreen windows avoids a double transition, and achievement or leaderboard transitions no longer trigger an extra transition. Texture-filter choices now use a popup list, and small-mode achievement category badges use reduced text sizing.
Video-thread changes also cover fullscreen-state snapshots during resizing, ownership of command production, safe handling of thread-toggle failures, cleanup of inline reconfiguration commands, and propagation of startup failures. Linux now follows the optimal frame-pacing setting. Together, these changes address state management around resizing, fullscreen transitions, and thread startup without claiming a universal rendering-performance improvement.
Achievements, input devices, and controllers get extensive maintenance
Achievement support receives fixes for options that did not always update immediately, login requests during state loading, notification sizing, notification duration sliders, and transitions between achievement and leaderboard windows. The build avoids fetching badges when no cache is available, avoids locking in a prefetch callback, and adds separate synchronization for notification state. It also avoids a deadlock when leaderboard trackers are disabled.
Input handling is reorganized around clearer synchronization and device state. Cancelled hold bindings are released, bindings are cleared when input is lost, and bindings reload after a device source is hot-plugged. SDL input now polls immediately after initialization, uses persistent identifiers for mappings, and simplifies polling. Pointer state and raw-input counts use atomic access in several paths, while effect synchronization now matches devices correctly.
The controller pages can display bound devices, and the DualSense 5 player-LED setting has moved into the LED dialog. Lightgun controllers now share a base class, and NeGcon controllers use a common base class. The release also adds mouse support for Panekit – Infinitive Crafting Toy Case and adjusts GameDB behavior for Trap Gunner, Spyro x Sparx, and Khamrai. DuckStation supports digital and analog PlayStation controllers, simulated mouse-based lightguns, NeGcon input, multitaps, and per-game controller presets.
Debugger and Qt frontend updates
The Qt debugger can select multiple instructions at once, preserves the debugger window state, and adds icons to context menus. Fixes address an empty debugger toolbar title, empty widget text, missing icons on newly excluded paths, and the lack of a context menu for the game-list exclusion list.
The desktop interface now uses a bitmask for debug-window visibility, adds help text for save-title and localized-title settings, and updates log-window colors with the active theme. The default HideCursorInFullscreen setting is corrected, desktop-environment checks are refined, and a crash that could occur when desktop-file checking was skipped is fixed. The updater’s Linux relaunch path now waits directly for the parent process and uses the platform’s process-spawning path.
Audio settings in Qt also receive attention. Output volume is connected through the regular settings update path, the output-latency description now refreshes correctly, and latency widget updates are simplified. The release includes updates to Spanish, Italian, Brazilian Portuguese, and other translation catalogs, along with refreshed machine and English translation data.
Threading, caching, and core reliability work
The core task queue can now choose its thread count dynamically, and new task-queue functions expose outstanding work and allow one task to be executed directly. A processor-count helper supports that work. The codebase adds lightweight mutex, condition-variable, and shared-mutex wrappers, detects recursive locks in debug builds, and replaces several standard synchronization objects across settings, achievements, fullscreen UI, CD reading, and other subsystems.
Object-archive synchronization is now handled internally, and the HTTP cache uses that synchronization. Settings accessors use safer lock-guard patterns, while achievements and fullscreen state avoid unnecessary or recursive locking in several paths. These changes primarily target races, deadlocks, and maintainability in multithreaded operation. They are especially relevant to the new background shader and pipeline compilation paths, although the release notes do not quantify their effect for users.
Additional correctness fixes include a buffer-overflow correction and first-match behavior for byte-pattern searches, improved asynchronous downloader callback dispatch, safer runtime image verification, more accurate save-state title headers, and a fix preventing an INI section-clearing operation from creating an empty section. Windows test builds, directory cleanup tests, and several compiler warnings are also addressed.





