-
Notifications
You must be signed in to change notification settings - Fork 2.9k
GPU Next vs GPU
norinoriko edited this page Aug 19, 2024
·
34 revisions
This page documents the known differences between vo_gpu_next
and vo_gpu
(that is, between --vo=gpu-next
and --vo=gpu
).
There is currently no support for the libmpv / render API in vo_gpu_next
.
- https://github.com/mpv-player/mpv/labels/vo%3Agpu-next
-
--scale-antiring
affects all antiringing,--cscale/dscale-antiring
currently do nothing -
--scale-antiring
is not applied to--dscale
when using an orthogonal filter
-
--sharpen
: Very low quality and easily replaced by (better) custom shaders (#9387, #9845) -
ewa_lanczossoft
,haasnsoft
: These were arbitrary filters to begin with and are easily replicated by tuningewa_lanczos
-
--vf=format:light=...
: OOTFs are tied to the EOTF ingpu-next
, and can no longer be adjusted independently -
--gamma-factor
and--gamma-auto
: considered deprecated by design, the new BPC logic handles this much better -
--fbo-format
: libplacebo requires the use of floating point buffers (to store unnormalized linear light data), and there is no quality gain from going above rgba16f -
--blend-subtitles=video
: libplacebo always renders subtitles during the final output pass, and never blends them directly onto video frames. -
--tone-mapping-max-boost
: crutch for bad tone-mapping functions and lack of black point handling
-
gpu-next
should be generally faster across the board, owing to refactors and rewrites of many key algorithms (EWA scaling, frame interpolation, color management, PRNG/debanding, etc.) -
gpu-next
aggressively merges shader passes wherever possible, leading to a significant reduction in the number of full-screen draw calls required per frame; in addition to this it also more aggressively reuses internal frame caches -
gpu-next
, unlikegpu
, performs black point compensation during color management, leading to subtly different results for many of the tone mapping-related options -
gpu-next
generally defaults tobt.1886
instead ofgamma2.2
for the display output, due to the better/different black point handling -
gpu-next
doesn't rotate/flip frames until the final output pass, whereasgpu
applied this during the main scaling pass. This generally makes it more robust when combining custom user shaders with rotated videos
-
ewa_lanczos
defaults to using radius 3.2383... ingpu-next
, rather than the radius 3.0 ofgpu
. -
--tone-mapping=auto
: picksspline
(instead ofbt.2390
) -
--tone-mapping=gamma
: scaling of the parameter has been changed slightly -
--tone-mapping=bt.2390
: knee point is now tunable, defaulting to 1.0 instead of the hard-coded 0.50 fromgpu
-
--tone-mapping=linear
: is now perceptually linear instead of linear light, uselinearlight
to get the old behavior back -
--gamut-mapping-mode=auto
: picksperceptual
instead ofclip
-
--hdr-compute-peak
:gpu-next
generally uses frame-exact results, rather than delaying detected peaks by a frame -
--scale
can now be used directly on window functions, removing the need for--scale-window
+--scale=box
combo; in addition, a few new functions and presets are available while others have been removed
-
TEXTURE_rot
is no longer needed (it still exists for compatibility, but it's defined as an identity matrix) - The distinction between
MAIN
andMAINPRESUB
no longer exists - either name can be used to refer to the same texture
- Support for Dolby Vision content (reshaping only)
- Support for GPU film grain application (AV1, H.274), see
--vd-lavc-film-grain
- Significantly better dynamic tone mapping, and colorimetrically accurate gamut mapping
--interpolation-preserve
-
--lut
,--image-lut
,--target-lut
-
--gamut-mapping-mode
: most gamut mapping modes --target-contrast
-
--target-colorspace-hint
: cross-platform HDR passthrough, with metadata forwarding and automatic tone-mapping --tone-mapping=bt.2446a
--tone-mapping=spline
-
--tone-mapping=st2094-40
,--tone-mapping=st2094-10
: HDR10+ and DV tone mapping curves --tone-mapping-visualize
-
--tone-mapping-param
for--tone-mapping=bt.2390
--inverse-tone-mapping
--allow-delayed-peak-detect
--hdr-peak-percentile
-
--hdr-contrast-recovery
,--hdr-contrast-smoothness
--vd-lavc-film-grain=gpu/auto
--glsl-shader-opts
--corner-rounding
--icc-use-luma
--libplacebo-opts
--hwdec=vulkan
- Support for custom, runtime-tunable shader parameters has been added
- Two new macros
linearize
anddelinearize
are available in all shader stages, resolving to GLSL functions for going back and forth between the video's native color space and linear light