Skip to content

v0.4.0: Dynamic CPU/GPU Hybrid Load Balancer & OpenMP Slice Threading

Choose a tag to compare

@github-actions github-actions released this 16 Sep 18:26
· 241 commits to main since this release

Release v0.4.0: Dynamic CPU/GPU Hybrid Load Balancer, OpenMP Slice Threading, and Project Transparency Rebranding

🚀 Highlights

1. Project Rebranding & Transparency (bc250-encoding-decoding-fix)

  • Renamed repository and project branding from bc250-vcn-driver to bc250-encoding-decoding-fix to eliminate confusion.
  • Clarification: Factory eFuses permanently disable the hardware VCN (Video Core Next) block on BC-250 mining dies. No software, driver, or firmware modification can turn the dead ASIC back on. This project provides a high-performance VA-API hardware driver replacement powered by custom Vulkan Compute shaders executed directly across the APU's RDNA 2 Compute Units, coupled with real-time CPU SIMD load balancing and audio clock fixes.

2. Dynamic CPU/GPU Hybrid Load Balancer (Asymmetric Offloading)

  • Solves the long-standing streaming frame drop issue under heavy 3D titles (e.g. Proton/DXVK/Gamescope) when GPU CUs reach 95–100% saturation.
  • Bypasses the GPU Motion Estimation compute pass (~70% of encoder compute load) during CU saturation and offloads 16x16 macroblock motion search to the Zen 2 CPU cores (which maintain ~25% headroom) using vectorized SSE2 intrinsics (_mm_sad_epu8) over the unified 16 GB GDDR6 physical memory bus.
  • Real-Time Saturation Governor: 4-tier state machine (Tier 0 Full GPU, Tier 1 Fast GPU ME, Tier 2 CPU SIMD ME Offload, Tier 3 P_Skip Failover) with latency EMA tracking (\alpha = 0.20) and a 15-frame anti-thrashing hysteresis filter to lock 60 fps game streaming without frame drops.
  • Bounded to strictly 2 CPU worker threads to guarantee gaming CPU headroom.

3. Multi-Threaded Slice Entropy Coding

  • Added OpenMP parallelized CAVLC and CABAC slice encoding (#pragma omp parallel for) when multi-slice streaming is active (\BC250_SLICES_PER_FRAME).

4. Pre-built Dual Architecture Bundles

  • bc250-driver-linux-x86_64.tar.gz: 64-bit driver for standard VA-API clients (Sunshine, OBS, FFmpeg).
  • bc250-driver-linux-i386.tar.gz: 32-bit driver for 32-bit Steam Link streaming.