Myrsloik
9th August 2026, 20:57
THIS IS A PREVIEW!!!
Modern GPU probably required at least in windows. By modern I mean something like AMD RDNA or Nvidia 2000+ series. Maybe. Do try and report your success and failures when using up to date drivers.
Longer blog post about it here (https://www.vapoursynth.com/2026/08/19/experimental-gpu-support/).
There's now a testing branch with experimental GPU support. The API of choice is Vulkan 1.4 but through the magic of mapping memory between most modern graphics APIs plugins can be written in CUDA and as well. Not that you really should but anyway...
What's done so far:
Full GPU support in all core filters. Note that filters taking multiple clips as inputs need to have all of them or none on the GPU. The only exception is for clips used only for metadata.
To transfer a clip to/from the GPU run:
clip.std.GPUUpload()
clip.std.GPUDownload()
Only one GPU can be used per core. The most powerful one should be picked automatically.
VapourSynth's vulkan branch (https://github.com/vapoursynth/vapoursynth/tree/vukvuk2)
BestSource with GPU output
(https://github.com/vapoursynth/bestsource/tree/vktest) (use gpu=True, the arguments and hardware decoding options have been completely reworked)
BM3Dvk (https://github.com/myrsloik/Vapoursynth-BM3Dvk)
NNEDI3vk (apimod) (https://github.com/myrsloik/VapourSynth-nnedi3vk)
KNLMeansVk (https://github.com/myrsloik/vapoursynth-knlmeansvk)
Note that only VS and BestSource currently have precompiled artifacts you can use. I'll try to have binaries for the rest available soon.
What needs to be done before a full release:
API review and criticism by the public
Testing on different hardware configurations
Determine what a modern GPU actually is in practice
Modern GPU probably required at least in windows. By modern I mean something like AMD RDNA or Nvidia 2000+ series. Maybe. Do try and report your success and failures when using up to date drivers.
Longer blog post about it here (https://www.vapoursynth.com/2026/08/19/experimental-gpu-support/).
There's now a testing branch with experimental GPU support. The API of choice is Vulkan 1.4 but through the magic of mapping memory between most modern graphics APIs plugins can be written in CUDA and as well. Not that you really should but anyway...
What's done so far:
Full GPU support in all core filters. Note that filters taking multiple clips as inputs need to have all of them or none on the GPU. The only exception is for clips used only for metadata.
To transfer a clip to/from the GPU run:
clip.std.GPUUpload()
clip.std.GPUDownload()
Only one GPU can be used per core. The most powerful one should be picked automatically.
VapourSynth's vulkan branch (https://github.com/vapoursynth/vapoursynth/tree/vukvuk2)
BestSource with GPU output
(https://github.com/vapoursynth/bestsource/tree/vktest) (use gpu=True, the arguments and hardware decoding options have been completely reworked)
BM3Dvk (https://github.com/myrsloik/Vapoursynth-BM3Dvk)
NNEDI3vk (apimod) (https://github.com/myrsloik/VapourSynth-nnedi3vk)
KNLMeansVk (https://github.com/myrsloik/vapoursynth-knlmeansvk)
Note that only VS and BestSource currently have precompiled artifacts you can use. I'll try to have binaries for the rest available soon.
What needs to be done before a full release:
API review and criticism by the public
Testing on different hardware configurations
Determine what a modern GPU actually is in practice