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
19 changes: 19 additions & 0 deletions changelog.d/fixed/round3-build-gpu-batch.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
### Fixed

Round-3 bug-hunt — build/GPU error-path batch (golden-safe).

- **R3-6** HIP `integer_vif` init returned an **uninitialized** error code
(`core/src/feature/hip/integer_vif_hip.c`): the `fail_stream`/`fail_submit`
goto paths reached `return err;` before `int err` was declared (it was
declared at the `vif_hip_module_load` call). Declare `int err = 0;` at the
top of `init_fex_hip` and drop the later redeclaration.
- **R3-9** NVTX dependency linked an **empty** `shared_library('dl')` target
instead of the system libdl (`core/src/meson.build`): replaced with
`cc.find_library('dl', required: false)`, mirroring how `ze_loader`/`m`/etc.
are resolved.
- **R3-10** icx strict-FP flag missing on the SSIM AVX2 carve-out
(`core/src/meson.build` `x86_ssim_avx2_lib`): appended
`_x86_simd_strict_fp_extra` (`-fp-model=precise` under intel-llvm) so SSIM
AVX2 matches the scalar reference under icx, matching its sibling carve-outs.
No-op on gcc/clang (`_x86_simd_strict_fp_extra` is empty) → golden gate
unchanged.
3 changes: 2 additions & 1 deletion core/src/feature/hip/integer_vif_hip.c
Original file line number Diff line number Diff line change
Expand Up @@ -380,6 +380,7 @@ static int init_fex_hip(VmafFeatureExtractor *fex, enum VmafPixelFormat pix_fmt,
return -ENOSYS;
#else
VifStateHip *s = fex->priv;
int err = 0; /* R3-6: init early so fail_stream/fail_submit return a defined code */

hipError_t rc = hipStreamCreate(&s->str);
if (rc != hipSuccess)
Expand All @@ -391,7 +392,7 @@ static int init_fex_hip(VmafFeatureExtractor *fex, enum VmafPixelFormat pix_fmt,
if (rc != hipSuccess)
goto fail_submit;

int err = vif_hip_module_load(s);
err = vif_hip_module_load(s);
if (err != 0)
goto fail_finished;

Expand Down
4 changes: 2 additions & 2 deletions core/src/meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -877,7 +877,7 @@ if is_asm_enabled
'x86_ssim_avx2',
feature_src_dir + 'x86/ssim_avx2.c',
include_directories : vmaf_base_include,
c_args : ['-mavx', '-mavx2', '-mfma', '-ffp-contract=off'] + vmaf_cflags_common,
c_args : ['-mavx', '-mavx2', '-mfma', '-ffp-contract=off'] + _x86_simd_strict_fp_extra + vmaf_cflags_common,
)


Expand Down Expand Up @@ -1011,7 +1011,7 @@ cuda_inc = []

if is_nvtx_enabled
cuda_dependency += declare_dependency(
link_with: shared_library('dl'),
dependencies: cc.find_library('dl', required: false),
include_directories: include_directories('/usr/local/cuda/include'))
endif

Expand Down
3 changes: 3 additions & 0 deletions docs/rebase-notes.md
Original file line number Diff line number Diff line change
Expand Up @@ -46639,3 +46639,6 @@ no ffmpeg-patch impact: edits the CLI (`core/tools/vmaf.cpp`, `cli_parse.cpp`) o

## chore/version-3.2.0 (2026-06-27)
no rebase impact: bumps `core/meson.build` `version` (x-release-please-version) + `.release-please-manifest.json` `.` to `3.2.0` / `3.2.0-lusoris.0` to track upstream libvmaf 3.2.0 SONAME. On an upstream sync, keep the fork's libvmaf version aligned with Netflix's (`<upstream-X.Y.Z>-lusoris.N`).

## fix/round3-build-gpu-batch (2026-06-27)
no ffmpeg-patch impact. R3-6 HIP integer_vif uninit-err (init err=0). R3-9 NVTX libdl → cc.find_library('dl'). R3-10 ssim AVX2 carve-out + `_x86_simd_strict_fp_extra` (icx -fp-model=precise; no-op on gcc/clang). **Invariant:** every x86 SIMD carve-out lib that needs bit-exactness under icx must carry `_x86_simd_strict_fp_extra`; keep the ssim carve-out aligned with its psnr_hvs/ms_ssim/ssimulacra2 siblings.
2 changes: 2 additions & 0 deletions docs/state.md
Original file line number Diff line number Diff line change
Expand Up @@ -325,6 +325,8 @@ landed fix yet._

## Recently closed

| **T-BUGHUNT-R3-BUILD-GPU-2026-06-27** | Round-3 build/GPU error-path batch. R3-6 HIP integer_vif init returned uninitialized err on fail_stream/fail_submit (declare int err=0 early). R3-9 NVTX linked empty shared_library('dl') → cc.find_library('dl'). R3-10 ssim AVX2 carve-out missing _x86_simd_strict_fp_extra (icx fp divergence; no-op gcc/clang). Deferred: R2-6 icpx-motion needs a scoped motion carve-out (golden-sensitive). | no ADR (bug-fix batch) | fix/round3-build-gpu-batch | meson reports libvmaf 3.2.0; CPU build 1280/1280; R3-6 HIP-only, R3-10 icx-only → golden gate unchanged. | (2026-06-27) |

| **T-VERSION-TRACK-UPSTREAM-3.2.0-2026-06-27** | Fork libvmaf version drifted behind upstream (fork 3.0.0 vs Netflix 3.2.0 SONAME, upstream 3f9e02af25). Bumped `core/meson.build` version + `.release-please-manifest.json` base to 3.2.0 / 3.2.0-lusoris.0 per CLAUDE §11 (track upstream version + lusoris suffix). Source-only; no release performed. | no ADR (executes existing §11 versioning policy) | chore/version-3.2.0 | `meson setup` reports `libvmaf 3.2.0`; no build/golden impact (version string only). | (2026-06-27) |

| **T-BUGHUNT-CLI-2026-06-27** | CLI bug-hunt (core/tools/, golden-safe). `--help` now prints to stdout + exits 0 (was stderr/exit 1). Output-write return is checked (diagnostic + nonzero exit on failure). Dead `vmaf.c` deleted (genuinely unreferenced; `cli_parse.c` KEPT — it's compiled into cli_parse/fuzz tests). Wall-time FPS (was clock()/CLOCKS_PER_SEC, over-counting ~n_threads). No-frames guard (picture_index==0 → exit 101, was UINT_MAX underflow). | no ADR (bug-fix batch) | fix/bughunt-cli | CPU build 1280/1280, fast suite 106/106; smoke: --help exit 0/stdout, bad-output exit 254, no-frames exit 101, golden 576x324 mean 94.32301. | (2026-06-27) |
Expand Down
Loading