Steam Link

Steam Link

Steam Link (Android TV) — PyroWave unavailable on NVIDIA Shield TV (2019): root cause and proposed fix
Steam Link (Android TV): PyroWave unavailable on NVIDIA Shield TV (2019)

Device: NVIDIA Shield TV Pro (2019), Tegra X1+, Android 11, Vulkan 1.1.178, NVIDIA driver 495.00
App: Steam Link 1.4.2 (Android TV). Host has PyroWave enabled; the option is not offered on the Shield.

Summary
The Shield's GPU can decode PyroWave in real time at 1080p60. It is blocked by three issues in the open-source PyroWave/Granite code, not by missing hardware capability:

  1. PyroWave C API requests Vulkan 1.2 for the instance and skips devices below 1.2. The Android 11 loader reports 1.1, so device creation fails before any feature check.
  2. Granite requires VK_KHR_synchronization2, which this driver does not expose. All other decoder requirements are met (subgroup size control with full subgroups, required subgroup operations, texel-buffer fallback for missing 8-bit storage).
  3. Granite self-deadlock in its non-timeline-semaphore path (emit_implicit_sync_to_queues → request_semaphore re-locks the device mutex). Any driver without timeline semaphores hits it.

Proposed fix
Patches against upstream PyroWave a0d2e71[github.com] and Granite fb178c8[github.com]:
  • PyroWave: clamp the instance apiVersion to the loader version, accept Vulkan 1.1 devices.
  • Granite: fix the deadlock; add a synchronization2 → Vulkan 1.0 translation, used only when sync2 is missing.
Granite PR: Granite pull request[github.com]
PyroWave issue: PyroWave issue[github.com]

Results on the Shield
Standalone test using the public PyroWave C API, compute path, CPU readback. PSNR is measured against a desktop GPU decode of the same stream.

Resolution / bitrate
PSNR vs desktop decode
Decode + readback (avg / worst)
1080p / 150 Mbit/s
57.3–57.6 dB
9.0 / 10.4 ms
1440p / 250 Mbit/s
57.4 dB
13.2 / 18.7 ms
2160p / 400 Mbit/s
56.5–57.5 dB
25.9 / 34.3 ms

  • 1080p60: good headroom
  • 1440p60: marginal
  • 4K60: exceeds the GPU budget (4K30 plausible)
The first decode incurs about 0.5 s of one-time shader compilation.

Request
Please consider shipping a PyroWave build with these changes in Steam Link. It would enable PyroWave on the Shield TV (and likely other Vulkan 1.1 Android devices), perhaps defaulting to 1080p or lower there.