v0.2.0: Conformance-Verified Compute Encoder, Real Motion Estimation & Hardware Audio DTO Driver
🎮 AMD BC-250 Custom Driver & VA-API Video Encoder v0.2.0
Hardware-accelerated video encoding and DisplayPort/HDMI audio fixes for the **AMD BC-250 ("Cyan Skillfish" / PS5 "Oberon" APU)** on
Linux (Bazzite, ChimeraOS, CachyOS, Fedora, Ubuntu, Arch).
---
### 🚀 What's New in v0.2.0
#### 🎬 Vulkan Compute Video Encoder (`bc250_drv_video.so`)
* **Real Motion Vector Estimation:** Emits genuine motion vector differences (`mvd_x`, `mvd_y`) in P-slices using adaptive diamond
search and GPU activity hints, resulting in significantly smoother gameplay motion.
* Spec-Compliant H.264 Bitstream: Conforming CAVLC entropy coding, Exp-Golomb integers, AUD frame delimiters, and dynamic
CBR/VBR rate control.
* Vulkan Lifecycle Hardening: Eliminated command buffer state conflicts (double-begin) across BeginPicture and EndPicture
calls.
* Sunshine & OBS Packed Headers: Advertises and handles VA_ENC_PACKED_HEADER_SEQUENCE, VA_ENC_PACKED_HEADER_PICTURE, and
VA_ENC_PACKED_HEADER_SLICE for clean compatibility with game streaming tools.
* External Oracle Verification: Fully validated in CI with the FFmpeg reference decoder, decoding all 30 frames of 1080p60 test
streams with zero stream corruption.
#### 🔊 Hardware DisplayPort & HDMI Audio Fix (`bc250_audio_fix.ko`)
* **Physical APU MMIO Register Programming:** Maps the APU graphics controller MMIO BAR and physically writes phase and modulo
values to DCN Display Controller Clock Generator (DCCG) registers (0x05E0, 0x05E4, 0x05E8) for 48 kHz and 44.1 kHz clocks.
* Azalia HDA Probing: Discovers companion AMD HD Audio controllers, maps HDA BAR 0, and monitors stream state.
* Interactive Procfs Interface: Monitor hardware clock status or switch sample rates on the fly:
```bash
cat /proc/bc250_audio_status
echo 44100 | sudo tee /proc/bc250_audio_status
• Dynamic DKMS Support: Synced to PACKAGE_VERSION="0.2.0" with automated rebuilds across kernel upgrades.
📦 Zero-Dependency Console Installer (build_and_install.sh)
• Pre-Built Package Auto-Detection: If running from this release archive, the script bypasses all compiler/build tool checks and
installs the pre-compiled driver, shaders, DRI links, and audio fix directly. Ideal for immutable gaming distros (Bazzite, ChimeraOS,
SteamOS) where GCC and CMake are not installed.
──────
📥 Installation Instructions
Option A: Pre-Built Archive (Fastest — No Compiling Needed)
- Download bc250-driver-linux-x86_64.tar.gz from the Assets below.
- Extract and run the installer:
tar -xzvf bc250-driver-linux-x86_64.tar.gz
cd bc250-driver
sudo ./build_and_install.sh
Option B: Compile from Source
git clone https://github.com/simpmix/bc250-vcn-driver.git
cd bc250-vcn-driver
sudo ./build_and_install.sh
──────
⚡ Recommended Streaming Environment
Add these to your session or streaming launcher (e.g. Sunshine / OBS):
export LIBVA_DRIVER_NAME=bc250
export BC250_FAST_MODE=1
(Keeps GPU compute overhead under 3–5% of the 40 Compute Units for locked 60 FPS gameplay!)
──────
📢 Hardware Testers Wanted!
If you own an AMD BC-250 board, please run the built-in diagnostic suite:
./tools/bc250_diagnose.sh
and submit your results to our Hardware & Benchmark Report https://github.com/simpmix/bc250-vcn-
driver/issues/new?template=hardware_report.md issue tracker!