Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions changelog.d/changed/post-vulkan-drop-residual-scrub.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
- **docs:** Post-ADR-0726 residual scrub — remove stale Vulkan references from
`docs/ai/datasets/k150k.md` (`--no_vulkan` flag drop), `docs/mcp/tools.md`
(run_benchmark backend list), `docs/api/index.md` (Vulkan header row), and
`docs/api/gpu.md` (Vulkan section status + `-Denable_vulkan=true` invalid
Meson syntax). Backends/index.md, vulkan/overview.md, and
context-api-contract.md were already correct post-#607.
2 changes: 1 addition & 1 deletion docs/ai/datasets/k150k.md
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ unchanged.
| `--threads-cuda` | `8` | Number of parallel worker processes (outer parallelism) |
| `--flush-every` | `200` | Flush parquet every N clips |
| `--limit` | (none) | Process at most N clips (smoke-test mode) |
| `--no-cuda` | off | Pass `--no_cuda --no_sycl --no_vulkan` to vmaf binary |
| `--no-cuda` | off | Pass `--no_cuda --no_sycl` to vmaf binary (Vulkan removed in ADR-0726) |
| `--scratch-dir` | `/tmp/k150k_yuv_scratch` | Temporary YUV decode directory |
| `--metadata-jsonl` | (none) | Optional CHUG/K150K sidecar JSONL whose identity, ladder, raw-MOS, and split columns are copied into the output parquet |

Expand Down
62 changes: 29 additions & 33 deletions docs/api/gpu.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
<!-- markdownlint-disable MD013 -->
# GPU backends C API — `libvmaf_cuda.h` / `libvmaf_sycl.h` / `libvmaf_vulkan.h` / `libvmaf_hip.h` / `libvmaf_metal.h`
# GPU backends C API — `libvmaf_cuda.h` / `libvmaf_sycl.h` / `libvmaf_hip.h` / `libvmaf_metal.h`

Each GPU backend adds its own small API on top of the core
`libvmaf.h` surface — a state object, picture preallocation helpers, and
(SYCL / Vulkan / Metal) zero-copy import paths. This page is the reference for
all five backends; HIP still has three unported feature kernels, while Metal
has a live Apple-Silicon runtime and first kernel batch.
(SYCL / Metal) zero-copy import paths. This page is the reference for
the four active backends (CUDA, SYCL, HIP, Metal); the Vulkan backend was
removed in [ADR-0726](../adr/0726-drop-vulkan-backend.md) — historical
notes are preserved below in the [Vulkan](#vulkan) section. HIP still has
three unported feature kernels, while Metal has a live Apple-Silicon runtime
and first kernel batch.

Core API primer: [index.md](index.md). CLI equivalents:
[../usage/cli.md#backend-selection](../usage/cli.md#backend-selection).
Expand All @@ -19,8 +22,9 @@ Backend dispatch rules + runtime precedence:
are absent and calls won't link.
- The SYCL header is only useful in a build with `-Denable_sycl=true`
(linking oneAPI / Level Zero). Same rule.
- The Vulkan header requires `-Denable_vulkan=true` (linking volk + the
compute-shader feature kernels). Same rule.
- ~~The Vulkan header requires `-Denable_vulkan=enabled` (linking volk + the
compute-shader feature kernels).~~ **Vulkan was removed in ADR-0726.** The
header, source files, and `enable_vulkan` Meson option no longer exist.
- The HIP header requires `-Denable_hip=true -Denable_hipcc=true` (linking
ROCm). 8 of 11 feature kernels are real; 3 stubs (`adm`, `vif`,
`integer_motion`) return `-ENOSYS`.
Expand All @@ -29,8 +33,9 @@ Backend dispatch rules + runtime precedence:
return `-ENODEV`. Eight feature kernels are currently wired.
- To write portable code that compiles against any libvmaf build, wrap
GPU-specific sections in `#ifdef HAVE_CUDA` / `#ifdef HAVE_SYCL` /
`#ifdef HAVE_VULKAN` / `#ifdef HAVE_HIP` / `#ifdef HAVE_METAL`, which
`#ifdef HAVE_HIP` / `#ifdef HAVE_METAL`, which
`pkg-config --cflags libvmaf` surfaces automatically.
(`HAVE_VULKAN` is no longer defined — Vulkan was removed in ADR-0726.)

## CUDA

Expand Down Expand Up @@ -389,32 +394,23 @@ the enable/disable pair to gate which frame ranges get timed.

## Vulkan

> **Status: T5-1c closed — full default-model coverage on Vulkan.**
> The state-level entry points (`vmaf_vulkan_state_init` /
> `_import_state` / `_state_free` / `_list_devices` /
> `_available`) plumb a real volk-backed VkInstance + VkDevice +
> compute queue. Live extractors: `vif_vulkan`, `integer_motion_vulkan`
> (canonical motion path; `motion_vulkan` is the legacy explicit
> compatibility name), `motion_v2_vulkan`, `adm_vulkan`, `float_adm_vulkan`,
> `float_vif_vulkan`, `float_motion_vulkan`, `psnr_vulkan` (luma;
> chroma via T3-15(b) PR #204), `psnr_hvs_vulkan`, `ciede_vulkan`,
> `float_ssim_vulkan`, `float_ms_ssim_vulkan`, `float_ansnr_vulkan`,
> `float_moment_vulkan`, `ssimulacra2_vulkan`, `cambi_vulkan`. The
> default `vmaf_v0.6.1` model runs end-to-end on Vulkan against a
> real ICD. Image-import zero-copy entry points
> (`vmaf_vulkan_state_init_external` / `_import_image` /
> `_wait_compute` / `_read_imported_pictures`) landed via T7-29 /
> [ADR-0186](../adr/0186-vulkan-image-import-impl.md) for FFmpeg
> AVVulkanDeviceContext interop. Build with
> `-Denable_vulkan=enabled`; the build picks up `volk` and
> `dependency('vulkan')` automatically. See
> [ADR-0127](../adr/0127-vulkan-compute-backend.md),
> [ADR-0175](../adr/0175-vulkan-backend-scaffold.md),
> [ADR-0176](../adr/0176-vulkan-vif-cross-backend-gate.md),
> [ADR-0177](../adr/0177-vulkan-motion-kernel.md),
> [ADR-0178](../adr/0178-vulkan-adm-kernel.md),
> [ADR-0186](../adr/0186-vulkan-image-import-impl.md),
> [ADR-0210](../adr/0210-cambi-vulkan-integration.md).
> **Status: REMOVED — [ADR-0726](../adr/0726-drop-vulkan-backend.md) (2026-05-28).**
> The Vulkan backend, all source files (`core/src/vulkan/`,
> `core/src/feature/vulkan/`), the public header (`libvmaf_vulkan.h`), and the
> `enable_vulkan` Meson option were deleted. The CLI flags `--vulkan_device`,
> `--no_vulkan`, and `--backend vulkan` are no longer accepted. The sections
> below are preserved as a historical reference for what was implemented;
> none of the entry points listed exist in current builds. For active GPU
> backends see [CUDA](#cuda), [SYCL](#sycl), [HIP](#hip), and [Metal](#metal).

Historical note: at the time of removal, the backend had reached T5-1c
(full default-model coverage). The state-level API, all feature extractors,
image-import zero-copy paths, and FFmpeg `AVVulkanDeviceContext` interop
described below are **no longer present**. ADR references:
[ADR-0127](../adr/0127-vulkan-compute-backend.md),
[ADR-0175](../adr/0175-vulkan-backend-scaffold.md),
[ADR-0186](../adr/0186-vulkan-image-import-impl.md),
[ADR-0726](../adr/0726-drop-vulkan-backend.md).

### Header

Expand Down
2 changes: 1 addition & 1 deletion docs/api/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ their own page:
| [`dnn.h`](../../core/include/libvmaf/dnn.h) | `VmafDnnSession`, `VmafDnnConfig`, tiny-model attach | Tiny-AI (ONNX Runtime) surface. [Deep dive](dnn.md). |
| [`libvmaf_cuda.h`](../../core/include/libvmaf/libvmaf_cuda.h) | `VmafCudaState`, CUDA picture prealloc | CUDA backend. Only usable in a build with `-Denable_cuda=true`. [Deep dive](gpu.md#cuda). |
| [`libvmaf_sycl.h`](../../core/include/libvmaf/libvmaf_sycl.h) | `VmafSyclState`, zero-copy frame buffers, dmabuf / VA / D3D11 import | SYCL backend. Only usable in a build with `-Denable_sycl=true`. [Deep dive](gpu.md#sycl). |
| [`libvmaf_vulkan.h`](../../core/include/libvmaf/libvmaf_vulkan.h) | `VmafVulkanState`, queue / device lifecycle, zero-copy `VkImage` import | Vulkan compute backend. Only usable in a build with `-Denable_vulkan=true`. [Deep dive](gpu.md#vulkan). |
| ~~`libvmaf_vulkan.h`~~ | ~~`VmafVulkanState`, queue / device lifecycle, zero-copy `VkImage` import~~ | **Removed in [ADR-0726](../adr/0726-drop-vulkan-backend.md).** The header, source, and `enable_vulkan` Meson option no longer exist. Historical reference: [gpu.md#vulkan](gpu.md#vulkan). |
| [`libvmaf_hip.h`](../../core/include/libvmaf/libvmaf_hip.h) | `VmafHipState`, lifecycle, picture prealloc | AMD HIP/ROCm backend. Only usable in a build with `-Denable_hip=true`. [Deep dive](gpu.md#hip). |
| [`libvmaf_metal.h`](../../core/include/libvmaf/libvmaf_metal.h) | `VmafMetalState`, lifecycle, IOSurface import | Apple Metal backend. Runtime, IOSurface import, and the first eight feature kernels are usable in a build with `-Denable_metal=auto/enabled` on Apple Silicon; unsupported hosts return `-ENODEV`. [Deep dive](gpu.md#metal). |
| [`libvmaf_mcp.h`](../../core/include/libvmaf/libvmaf_mcp.h) | `VmafMcpServer`, `VmafMcpConfig`, transport start/stop | Embedded MCP server. Only usable in a build with `-Denable_mcp=true`. [Deep dive](mcp.md). |
Expand Down
6 changes: 3 additions & 3 deletions docs/mcp/tools.md
Original file line number Diff line number Diff line change
Expand Up @@ -195,14 +195,14 @@ output; `cpu` is reported `true` whenever the binary exists.
## run_benchmark

Run the full multi-fixture benchmark suite (`testdata/bench_all.sh`) against all
available backends — CPU, CUDA, SYCL, and Vulkan — on three canonical YUV fixture
pairs built into the harness:
available compiled-in backends (CPU, CUDA, SYCL, HIP, Metal — Vulkan removed in
ADR-0726) on three canonical YUV fixture pairs built into the harness:

1. **576×324, 48 frames, 8-bit** — the Netflix golden pair `src01_hrc00 / src01_hrc01`
2. **1920×1080, 5 frames, 8-bit** — the 5-frame 1080p pair
3. **3840×2160, 200 frames, 8-bit** — the 4K BBB excerpt (`testdata/bbb/`)

For each fixture the harness scores all four backends, prints per-backend VMAF means
For each fixture the harness scores all compiled-in backends, prints per-backend VMAF means
and wall times, and prints a comparison table showing max per-frame diff between
CPU and each GPU backend. See [usage/bench.md](../usage/bench.md) for more detail.

Expand Down
11 changes: 11 additions & 0 deletions docs/rebase-notes.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,17 @@
<!-- markdownlint-disable MD001 MD003 MD004 MD007 MD013 MD018 MD022 MD024 MD025 MD026 MD028 MD029 MD031 MD032 MD033 MD036 MD037 MD038 MD040 MD041 MD046 MD049 MD050 MD051 MD052 MD053 MD055 MD056 MD058 MD059 -->
# Rebase notes

## docs(post-vulkan-drop): residual scrub + fix -Denable_vulkan=true (invalid Meson) → =enabled

**Branch**: docs/post-vulkan-drop-residual-scrub

no rebase impact: docs-only change. Fixes stale Vulkan references in
`docs/ai/datasets/k150k.md`, `docs/mcp/tools.md`, `docs/api/index.md`, and
`docs/api/gpu.md`. No C source, public header, upstream-mirrored Python, or
Netflix golden-assertion file is touched.

---

## docs(rebrand): scrub residual Lusoris-fork references

**Files touched**: `docs/usage/cli.md`, `docs/ai/mos-corpora.md`,
Expand Down
Loading