mirror of https://github.com/mpv-player/mpv
Previously, there appeared to be implicit synchronisation in the GL interop path, and we never observed any visual glitches. However, recently, I started seeing stuttering in the GL path and on closer examination it looked like read-before-write behaviour where GL would display an old frame again rather than the current one. After verifying that disabling hwdec made the problem go away, I tried adding a cuStreamSynchronize() after the memcpys and that also resolved the problem, so it's clearly sync related. cuStreamSynchronize() is a CPU sync and so more heavy-weight than you want, but it's the only tool we have. There is no mechanism defined for synchronising GL to CUDA (It looks like there is a way to synchronise CUDA to EGL but it appears one way and so wouldn't directly address this problem). Anyway, empirically, the output now looks the same as with hwdec off. |
||
---|---|---|
.. | ||
hwdec_cuda.c | ||
hwdec_cuda.h | ||
hwdec_cuda_gl.c | ||
hwdec_cuda_vk.c | ||
hwdec_vaapi.c | ||
hwdec_vaapi.h | ||
hwdec_vaapi_gl.c | ||
hwdec_vaapi_vk.c |