Skip to content

v0.4.1 - 256-Bit AVX2 Kernel, HEVC Governor Parity & Stability Fixes

Choose a tag to compare

@github-actions github-actions released this 17 Sep 15:47
· 232 commits to main since this release

馃殌 Highlights & Performance Upgrades

1. 256-Bit AVX2 SIMD Motion Estimation Engine

  • Implemented high-throughput 256-bit AVX2 vector kernel in cpu_simd_me.c unrolled by 4 rows with dual vector accumulators.
  • Fully exploits AMD Zen 2 native 256-bit AVX2 execution units, halving instruction count and latency for CPU-side motion estimation.
  • Automatic runtime CPUID detection with seamless SSE2 and scalar fallbacks.

2. HEVC (H.265) Dynamic Governor Parity

  • Brought full 4-tier dynamic hybrid load balancing to the H.265 encoder (encoder_h265.c).
  • When GPU contention occurs during HEVC streaming, Motion Estimation (~70% of compute work) is seamlessly offloaded to idle Zen 2 CPU cores, preserving stream frame delivery.
  • Added hevc_encoder_get_governor_tier() observability.

3. Critical Bug Fixes

  • Governor Tier 3 Latch Bug: Fixed a stall where emergency failover (P_Skip) could lock the driver in Tier 3 indefinitely by adding dynamic_governor_notify_failover_handled().
  • Asymmetric vkMapMemory Leak: Resolved host GPU address space leak by structuring nested mapping checks with guaranteed vkUnmapMemory execution.
  • 1080p Bottom Row ME Cutoff: Corrected boundary check in cpu_simd_me.c to use macroblock-padded buffer dimensions, restoring motion search for row 67 (y = 1072..1087).
  • Fast Spatial Motion Predictor: Evaluates left neighbor MB vector prior to diamond search, allowing ~75% of non-static blocks to converge in <= 2 SAD checks (<0.5 ms CPU time).

馃摝 Bundled Artifacts

  • bc250-driver-linux-x86_64.tar.gz: 64-bit VA-API driver with precompiled SPIR-V shaders, setup scripts, and audio clock fix.
  • bc250-driver-linux-i386.tar.gz: 32-bit VA-API driver for 32-bit gaming runtimes (Steam Link).