v0.5.1 - Gaming Mode, Steam Link Single-Slice Fix, 16ms GPU Contention Shield & Audio Parity
LatestRelease v0.5.1: Gaming Mode Fixes, Steam Link Single-Slice, 16ms GPU Shield & Audio Parity
Release v0.5.1 delivers critical streaming stability fixes for Steam Link and Sunshine/Moonlight across both Desktop and Gaming Modes (Gamescope), resolves audio driver clashes with CachyOS kernels (Issue #54), fixes grey/black screen issues in Gaming Mode (Issue #55), eliminates GPU queue latency spikes under heavy 100% 3D gaming contention (e.g. Red Dead Redemption 2 benchmark), and provides parallel multi-slice encoding for high-throughput transcoding.
1. Steam Link & Gaming Mode Fixes (Issue #55)
- Gaming Mode & Gamescope Single-Slice Enforcement: Fixed client decoder crashes and grey/black screens in Steam Link when running in Gaming Mode under Gamescope. Gamescope callers are now identified in \is_steam_caller()\ and automatically restricted to single-slice streams (
um_slices = 1\ and \�_sliced_threads = 0). - VASurfaceAttribExternalBufferDescriptor Handling: Fixed \�c250_CreateSurfaces2()\ to properly process \VASurfaceAttribExternalBufferDescriptor\ (using the enum value rather than the struct type) and reject unsupported external buffer memory descriptors with \VA_STATUS_ERROR_UNSUPPORTED_MEMORY_TYPE. This prompts Gamescope and Sunshine to cleanly fall back to supported EGL / shared memory frame capture pathways.
- Surface Attributes Advertisement: \�c250_QuerySurfaceAttributes()\ now explicitly advertises \VASurfaceAttribMemoryType = VA_SURFACE_ATTRIB_MEM_TYPE_VA.
- Gaming Mode Screencast & KMS Permissions: Updated \ ools/bc250_diagnose.sh\ to detect active Gamescope sessions and verify Sunshine's \CAP_SYS_ADMIN\ capability required for DRM KMS screen capture in Gaming Mode.
- Mesa gfx10 Legal CU Ring-Fencing: Refined CU mask generation in \gpu_compute.c\ and \�pply_gpu_ringfence.sh\ via \�c250_pick_cu_split()\ to satisfy Mesa's strict gfx10 late-alloc legality rules (requiring CU2/CU3 in masks).
2. Audio Subsystem & CachyOS 7.2+ Kernel Parity (Issue #54)
- Native Audio Endpoint Prioritization: Updated \ ools/bc250_diagnose.sh\ to check for native HDMI/DP audio endpoints (\hdmi_devs > 0) on modern Linux kernels (CachyOS 7.2+).
- Avoid Conflicting DKMS Modules: If native audio endpoints are active, the diagnostic tool confirms functioning audio and warns against installing the deprecated legacy DKMS \�c250_audio_fix\ module, preventing driver clashes.
3. Steam Link Desktop Mode Fix (Single-Slice Enforcement)
- Single-Slice Enforcement: Automatically detects Steam Remote Play callers (\steam, \streaming_client, \steamwebhelper) and enforces single-slice encoding across both compute and x264 backends, ensuring 100% client decoder compatibility even if \BC250_SLICES_PER_FRAME=4\ is exported.
- CABAC Chroma Intra Prediction Fix: Fixed \encode_mb_i16x16_cabac()\ to correctly transmit sanitized \chroma_pred_mode, preventing chroma decoding corruption and visual glitches.
4. Heavy 3D Game / RDR 2 Benchmark 200ms Latency Spike Elimination
- 16ms Fence Wait Timeout Protection: Titles that saturate 100% of the 40 Compute Units (such as Red Dead Redemption 2 running on DirectX 12 / Vulkan via Proton) submit massive rendering command buffers. Unbounded fence waits are now bounded to 16 ms for live streaming callers (\sunshine, \steam, \streaming_client, \wivrn, \gamescope).
- Immediate Failover & Flutter Shield: When the GPU wait times out, the encoder completes immediately on CPU in 0.1 ms as a safe P_Skip frame and engages Tier 3 Failover with 8-frame hysteresis to prevent fluttering between GPU and CPU.
- Zero-GPU CPU x264 Streaming: CPU encoder (\�ackend=x264) runs exclusively on Zen 2 CPU cores with 0% GPU overhead and steady 2–4 ms encode latency for both 64-bit and 32-bit Steam Link.
5. High-Throughput Multi-Slice Parallelization
- Parallel OpenMP Multi-Slice Architecture: For FFmpeg and GPU-backed encodes, defaults to 4 slices per frame processed concurrently across OpenMP worker threads, slashing CPU entropy coding latency from ~50 ms down to ~10–12 ms and scaling throughput to >100 fps.
6. Installation & Verification
- 64-bit Driver Bundle: \�c250-driver-linux-x86_64.tar.gz\ (installs to /usr/local/lib64/dri/\ or distro path).
- 32-bit Companion Driver: \�c250-driver-linux-i386.tar.gz\ (installs to /usr/lib32/dri/\ for Steam Link).
- CI Verification: 100% CI pass rate across both 64-bit and 32-bit targets.