Files
punktfunk/crates/pf-vkdecode/Cargo.toml
T
enricobuehler e6d6498a49 test(pf-vkdecode): frame-hash parity vs libavcodec — bit-exact on the whole fleet
WP-D parity A/B. gpu_parity (ignored) decodes the conformance vector,
reads every frame back through the presenter's exact contract (wait,
layout round-trip, signal-back, release), crops at the copy so pitch
can never leak, and compares SHA-256s in display order against goldens
from ffmpeg software decode — cross-checked bit-identical between
ffmpeg 8.0.1 (linux) and 8.1.1 (macOS), so the reference is the spec,
not one build. PF_VKD_TEST_READBACK=1 is the one test-only hook (ORs
TRANSFER_SRC into pool usage; production pools stay zero-copy-tight).

Fleet verdict: 250/250 frames bit-identical to libavcodec on RADV
(Mesa 26.0.3, distinct), AMD proprietary Windows (25.10.30.02,
distinct) and NVIDIA Windows (610.88, coincide) — H.264 decode is
exactly specified, and the native path meets the spec on every driver
and both DPB arrangements.
2026-08-05 20:23:18 +02:00

28 lines
1.1 KiB
TOML

[package]
name = "pf-vkdecode"
description = "Native Vulkan Video H.264 decode for the clients (M2): StdVideo parameter-set/picture conversion and DPB slot management over pf-bitstream's AuPlans — the CPU-testable half; session, memory and command recording follow in WP-B (design/client-native-decode.md §3.2)"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
authors.workspace = true
repository.workspace = true
[dependencies]
ash = "0.38"
# Direct dependency on the vendored parser crate, not just pf-bitstream: the parameter-set
# conversion consumes the parser's `Sps`/`Pps` types wholesale (pf-bitstream re-exports only
# `Level`/`SliceHeader`), and the same path means the one crate instance the workspace already
# builds — no duplicate types.
cros-codecs = { path = "../pf-bitstream/vendor/cros-codecs" }
pf-bitstream = { path = "../pf-bitstream" }
tracing = "0.1"
[dev-dependencies]
# The GPU parity test hashes decoded frames against libavcodec goldens (already
# in the workspace lock via other crates).
sha2 = "0.10"
[lints]
workspace = true