Hardware Acceleration

Sent and received video runs on the GPU when possible. The tables below show which path is used on each platform, by codec. Anything not covered runs in software.

GameVox showing the active encoder, codec, and hardware/software flag

Platform paths

Acceleration API by operating system

OS Encoding path Decoding path Vendors covered
Windows 10/11 NVENC + AMF + Quick Sync (H.264, AV1; VP9 on Intel) D3D11VA NVIDIA, AMD, Intel
Linux VAAPI + NVENC (H.264, VP9, AV1) VAAPI + NVDEC AMD (Mesa), Intel (iHD), NVIDIA
macOS VideoToolbox (via the WebKit WebRTC stack) VideoToolbox (via WebKit) Apple Silicon, Intel Macs

On Linux, VAAPI handles AMD and Intel. NVIDIA cards use NVDEC directly, so the nvidia-vaapi-driver bridge isn't needed.

Windows screen share picks codecs in this order: AV1 if the GPU supports it, then VP9 on Intel iGPUs (Kaby Lake and newer), then H.264 on any encode-capable GPU, then software VP9. Only Intel ships a VP9 hardware encoder, so NVIDIA and AMD systems skip the VP9 tier and go to H.264.

Hardware encoding by GPU

Sending video (camera and screen share)

GPU family H.264 HEVC VP9 AV1
NVIDIA: NVENC (Windows)
RTX 50 (Blackwell, 2025) Yes Yes No Yes
RTX 40 (Ada Lovelace, 2022) Yes Yes No Yes
RTX 30 (Ampere, 2020) Yes Yes No No
RTX 20 / GTX 16 (Turing, 2018) Yes Yes No No
GTX 10 (Pascal, 2016) Yes Yes No No
GTX 900 (Maxwell 2, 2014) Yes Yes No No
GTX 600 / 700 (Kepler, 2012) Yes No No No
AMD: AMF (Windows) · VAAPI (Linux)
RX 9000 (RDNA 4, 2025) Yes Yes No Yes
RX 7000 / Phoenix APU (RDNA 3, 2022) Yes Yes No Yes
RX 6000 (RDNA 2, 2020) Yes Yes No No
RX 5000 (RDNA 1, 2019) Yes Yes No No
RX Vega (2017) Yes Yes No No
RX 400 / 500 (Polaris, 2016) Yes Yes No No
Intel: Quick Sync (Windows) · VAAPI (Linux)
Arc B-series (Battlemage, 2024) Yes Yes Yes Yes
Arc A-series (Alchemist, 2022) Yes Yes Yes Yes
13th–14th gen Core (Raptor Lake, 2022) Yes Yes Yes No
12th gen Core (Alder Lake, 2021) Yes Yes Yes No
10th–11th gen Core (Ice Lake / Tiger Lake) Yes Yes Yes No
7th–9th gen Core (Kaby / Coffee Lake) Yes Yes Yes No
6th gen Core (Skylake, 2015) Yes Yes No No
4th–5th gen Core (Haswell / Broadwell) Yes Partial No No
Apple: VideoToolbox (macOS)
Apple Silicon (M1 and newer) Yes Yes No M3 and newer
Intel Macs (T2 chip, 2018+) Yes Yes No No

On Linux, VAAPI handles H.264, VP9, and AV1 encode on AMD and Intel GPUs. NVIDIA uses NVENC. NVENC is also the fallback on systems where VAAPI isn't available, typically NVIDIA-only boxes without the nvidia-vaapi-driver bridge.

Hardware decoding by GPU

Receiving video

GPU family H.264 HEVC VP9 AV1
NVIDIA: NVDEC (Windows D3D11VA · Linux CUDA)
RTX 30 and newer (Ampere+) Yes Yes Yes Yes
RTX 20 / GTX 16 (Turing) Yes Yes Yes No
GTX 10 (Pascal) Yes Yes Yes No
GTX 900 (Maxwell 2) Yes Yes 8-bit No
GTX 600 / 700 (Kepler) Yes No No No
AMD: VCN (Windows D3D11VA · Linux VAAPI)
RX 6000 and newer (RDNA 2+) Yes Yes Yes Yes
RX 5000 (RDNA 1) Yes Yes Yes No
RX Vega Yes Yes Yes No
RX 400 / 500 (Polaris) Yes Yes No No
Intel: Quick Sync (Windows D3D11VA · Linux VAAPI)
Arc A/B series Yes Yes Yes Yes
12th gen Core and newer Yes Yes Yes Yes
7th–11th gen Core Yes Yes Yes No
6th gen Core (Skylake) Yes Yes No No
4th–5th gen Core (Haswell / Broadwell) Yes Partial No No
Apple: VideoToolbox (macOS)
Apple Silicon (M1 and newer) Yes Yes M3 and newer Yes
Intel Macs (T2 chip, 2018+) Yes Yes No No

These tables show what the GPU's hardware block supports. If the kernel driver or runtime doesn't expose the codec (a Linux box missing libva-drm, for instance), software handles it. Detection runs on the first frame.

Notes

  • What if my GPU isn't listed? Software encode and decode still work. Modern CPUs handle 1080p30 fine; older machines may want to drop screen share to 720p.
  • Which codec does GameVox pick? One codec per call, negotiated by what both peers support. The sender's hardware-accelerated codecs win when available; the receiver decodes with whatever path matches.
  • Why no VP9 encode anywhere? Only Intel ships a VP9 hardware encoder in consumer parts. NVIDIA and AMD have never added one. GameVox uses software VP9 by default on hardware that can't accelerate it.
  • Browser users: The web client uses WebCodecs. Hardware acceleration there is controlled by the browser (Chrome, Edge, Firefox), not by GameVox. The tables above are for the desktop app.
  • How to check what's actually being used: Two places. (1) The voice channel's activity log shows the codec, encoder name, and hardware/software flag for every video stream. When someone starts a camera or screen share, a folded sub-line under that entry reads e.g. AV1 · av1_nvenc · hardware. Encoder swaps mid-stream (a hardware encoder falling back to software under pressure) show up as their own activity entry, so you can see exactly what changed and when. (2) The desktop client's log file. Windows %LOCALAPPDATA%\GameVox\logs\, macOS ~/Library/Application Support/GameVox/logs/, Linux ~/.gamevox/logs/. Useful lines to look for: [HWEnc] Detected: (what your GPU exposes), [NVENC] Function table loaded successfully (API X.Y) (NVIDIA driver/SDK version), [ScreenShare-Win] Capture backend: (WGC, DXGI, or BitBlt, the capture method actually in use), Selected encoder: (what the codec ladder picked), [FFmpegHW] Created (encoder opened successfully), [EncSelect] ... trial failed (a hardware encoder probe rejected the request and the ladder is falling through).