What is the difference between vo=gpu and vo=gpu-next in mpv?

Choosing between vo=gpu and vo=gpu-next in the mpv media player comes down to selecting between a legacy, stable video output driver and a modern, high-fidelity reconstruction built on libplacebo. While vo=gpu has long served as the dependable default for hardware-accelerated rendering, vo=gpu-next represents the modern architecture of mpv, offering superior color accuracy, advanced tone-mapping, and robust support for high-dynamic-range (HDR) formats like Dolby Vision.

Architectural Background

The fundamental difference lies in the underlying codebase responsible for processing and rendering the video frames on your graphics card.

Core Technical Differences

The shift to a libplacebo-driven architecture introduces several practical changes in performance and visual presentation.

1. HDR and Dolby Vision Processing

Handling complex video metadata is where vo=gpu-next stands out. It features an advanced HDR-to-SDR and HDR-to-HDR tone-mapping engine. It handles modern tone-mapping paths cleanly and natively processes Dolby Vision profile metadata. While vo=gpu can display these files, it does not achieve the same color accuracy and highlight retention, occasionally resulting in crushed whites or washed-out scenes.

2. Color Management and Black Point Compensation

The two drivers treat color profiles differently out of the box:

3. Dithering Engine

In vo=gpu, dithering choices are heavily tied to the source material’s native bit depth. Conversely, vo=gpu-next assesses dithering at the very end of the pipeline, computing the output depth after all rendering, scaling, and custom shaders have executed. This ensures a cleaner 10-bit or 8-bit final pass directly suited to your display.

Performance and Feature Support

Because vo=gpu-next relies on more modern rendering pipelines, its performance characteristics differ from the legacy driver.

Feature / Behavior vo=gpu vo=gpu-next
Underlying Library Native mpv internal code libplacebo
Dolby Vision Parsing Basic / Limited support Full native support via libplacebo
Default Gamma Curve Gamma 2.2 BT.1886
Black Point Compensation No Yes (Enabled by default)
Heavy Shaders (e.g., FSRCNNX) Marginally lower overhead High quality but more demanding

While vo=gpu-next is faster and more efficient for routine operations, applying heavy custom GLSL shaders or forcing massive debanding iterations can sometimes yield lower framerates on gpu-next than on legacy vo=gpu. This is due to the thorough, multi-pass nature of libplacebo operations.

Which Option Should You Choose?

In current versions of mpv, vo=gpu-next has matured significantly and has become the recommended default for high-end systems, modern GPUs, and HDR playback environments.

You should stick with vo=gpu only if you are running older hardware with legacy GPU drivers, or if your configuration relies on specific, older mpv custom filters that have been intentionally deprecated or omitted from the newer libplacebo framework. For any setup utilizing modern Windows (D3D11) or Linux (Vulkan) rendering paths, vo=gpu-next delivers the best modern video reproduction.