mpv
mpv copied to clipboard
gpu-context should auto switch when switch hwdec
Before requesting a new feature make sure it hasn't been requested yet. https://github.com/mpv-player/mpv/labels/meta%3Afeature-request
Expected behavior of the wanted feature
Example:
gpu-context=d3d11,winvk
hwdec=d3d11va
Then switch hwdec to nvdec at runtime (set hwdec nvdec) , then gpu-context should auto switch to winvk to allow hwdec=nvdec to work without error.
@na-na-hi What do you think?
hwdec=nvdec requires gpu-context=winvk now? At least on Windows. Is this by design?
There are interops for egl and vulkan, so it doesn't have to be winvk but that is the better choice. It is possible to write a d3d11 interop but someone has to do the work
I see.. So, not some recent change mandated by newer versions of NVIDIA's Windows drivers?
No. Egl should still work fine but I haven't touched windows for ages.
Note that this should also be applied when --hwdec-codecs change when --hwdec=auto is set.
To avoid unnecessary vo reconfigs, the switching meshanism needs to know which hwdec methods are compatible with which GPU contexts. AFAIK mpv doesn't maintain such a list.
I think such functionality can be done with a script. It only needs to do the following:
- Observe
--hwdecand--hwdec-codecsfor changes - Compute a list of GPU contexts that is compatible with the union of all acceptable hwdecs
- Compare the context list with the current list. If different, set
--gpu-contextto the new list. A reconfig should trigger and try to use the hwdec.
hwdec=nvdecrequiresgpu-context=winvknow? At least on Windows. Is this by design?
NVDEC works with OpenGL on Windows.