Skip to content

v0.5.1 - Gaming Mode, Steam Link Single-Slice Fix, 16ms GPU Contention Shield & Audio Parity

Latest

Choose a tag to compare

@github-actions github-actions released this 25 Sep 17:04

Release 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.