Vulkan compute backend (removed — historical reference)¶
Status: REMOVED per ADR-0726 (2026-05-28). The Vulkan backend, all associated source files (
core/src/vulkan/,core/src/feature/vulkan/), the public header (libvmaf_vulkan.h), and theenable_vulkanmeson option have been deleted. The CLI flags--vulkan_device,--no_vulkan, and--backend vulkanare no longer accepted, and-Denable_vulkan=enabledis no longer a valid build flag. This page is preserved only as a historical pointer. For active GPU backends see CUDA, SYCL, HIP, and Metal.
Why it was removed¶
The Vulkan backend reached full default-model coverage (VIF, motion, ADM, plus the GPU long-tail kernels) before being retired. It was removed because its maintenance cost — a bespoke GLSL/SPIR-V kernel set, volk-symbol-hiding machinery for static FFmpeg links, and a software-ICD (lavapipe) CI lane — no longer justified its place alongside the CUDA, SYCL, HIP, and Metal backends, which together cover the same hardware vendors. See ADR-0726 for the full decision and the runner-up alternatives.
Historical implementation record¶
The implementation history (kernels, cross-backend gates, the submit-pool and two-level-reduction optimisations, the fp64/fp32 VIF auto-pick, and the buffer-classification rules) is captured in the governing ADRs. None of the surfaces they describe exist in the current tree:
- ADR-0127 — governance decision to add the backend.
- ADR-0175 — scaffold-only audit-first PR.
- ADR-0176, ADR-0177, ADR-0178 — the default-model kernels and their cross-backend gate.
- ADR-0185, ADR-0198 — volk-symbol hiding for shared and static link lines.
- ADR-0186 — the zero-copy image-import surface (consumed by the FFmpeg patches).
- ADR-0726 — the removal.