-
Notifications
You must be signed in to change notification settings - Fork 2.9k
GPU Next vs GPU
Zak edited this page Jun 8, 2022
·
37 revisions
This page documents the known differences between vo_gpu_next
and vo_gpu
(that is, between --vo=gpu-next
and --vo=gpu
).
-
--blend-subtitles
(#9870) -
--gamma-factor
and--gamma-auto
-
--cscale
: currently,gpu-next
uses the--scale
filter for everything, without the ability to tune it by plane type; subject to change by popular request -
--dither=error-diffusion
(#9415)
-
--sub-use-margins
+--video-sync=display-*
currently cuts off subtitles
-
--fbo-format
: the best we can currently do is disable FBOs (--gpu-dumb-mode=yes
) or force 8-bit FBOs (option not yet implemented) -
--icc-force-contrast
:ICC/3DLUT color management is currently in a state of flux and will be rewritten soon, no idea what will happen to this option as a resultICC/3DLUT handling has been rewritten, but the new options are not yet implemented in the mpv API.
-
--sharpen
: Very low quality and easily replaced by (better) custom shaders (#9387, #9845) -
ewa_lanczossharp
/ewa_lanczossoft
: Easily replicated by tuningewa_lanczos
(see below for further justification) -
haasnsoft
: Easily replicated by tuningewa_lanczos
-
--tone-mapping-max-boost
: crutch for bad tone-mapping functions and lack of black point handling -
--vf=format:light=...
: OOTFs are tied to the EOTF ingpu-next
, and can no longer be adjusted independently -
--scaler-resizes-only
: enabled by design ingpu-next
, so the option does nothing
-
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
. Note that the (deleted)ewa_lanczossharp
prefix also used the 3.2383 radius instead of 3.0, which was the main reason for the difference between those two presets in the first place. So, sinceewa_lanczos
now uses the larger radius by default, the difference between it and the "sharper" preset is almost nonexistant. -
--tone-mapping=auto
: chooses betweenspline
,bt.2446a
andbt.2390
, instead of always pickingbt.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 -
--tone-mapping-mode=auto
: chooses the new modeluma
by default, in most circumstances -
--tone-mapping-mode=hybrid
: uses a different hard-coded tradeoff function -
--gamut-mapping-mode=auto
: picks the new modedarken
by default -
--gamut-mapping-mode=warn
: makes out-of-gamut pixels magenta, instead of inverting them -
--hdr-compute-peak
:gpu-next
generally uses frame-exact results, rather than delaying detected peaks by a frame -
--scale=box
is no longer resizable, but see: -
--scale
can now be used directly on window functions, removing the need for--scale-window
+--scale=box
combo; in addition, a few new functions 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 - 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
- Support for Dolby Vision content (reshaping only)
--interpolation-preserve
-
--lut
,--image-lut
,--target-lut
-
--target-colorspace-hint
: cross-platform HDR passthrough, with metadata forwarding and automatic tone-mapping --tone-mapping=bt.2446a
--tone-mapping=spline
--inverse-tone-mapping
--tone-mapping-crosstalk
--tone-mapping-mode=luma
--allow-delayed-peak-detect
- #8223
- #9863
- #5727
- lots more that I forgot about