Files
gpu-detect/server/nvidia.md
T

5.1 KiB

NVIDIA APIs for hardware-acceleration

APIs Overview

NVDEC

NVIDIA Video Decoder (formerly NVCUVID) is a proprietary API that enables hardware-accelerated video decoding by offloading compute-intensive video parsing and bitstream decoding from the CPU to a dedicated, fixed-function SIP core on the GPU die. It supports copying decoded frames directly into NVIDIA graphics or CUDA memory surfaces, minimizing latency for real-time video processing pipelines, AI inference data preparation, and transcoding workflows.

NVENC

NVIDIA Video Encoder is a proprietary, dedicated hardware block introduced with the Kepler architecture that handles video stream encoding entirely independent of the primary graphics and CUDA compute cores. By managing bitstream compression natively (supporting H.264, HEVC, and AV1 depending on generation), it guarantees minimal performance degradation during demanding rendering tasks like real-time gaming or streaming. It features configurable rate control, sub-frame latency options, and multi-stream scaling boundaries.

VA-API

Video Acceleration API is an open-source library and standardized API designed for Linux and Unix-like operating systems. Because NVIDIA does not natively implement VA-API in their proprietary display drivers, hardware acceleration inside standard applications that rely on it (such as Firefox or Chromium-based browsers) requires a translation layer. In the NixOS ecosystem, this is achieved via the nvidia-vaapi-driver wrapper, which transparently maps VA-API runtime calls down to NVIDIA's underlying proprietary NVDEC backend.

VDPAU

Video Decode and Presentation API for Unix is an open-source API originally developed by NVIDIA in 2008 to bring full hardware-accelerated video decoding and post-processing (deinterlacing, scaling, color correction) to Linux. While VDPAU served as the historical standard for video players like MPlayer and VLC on older architectures (Tesla through Maxwell), it lacks modern codec capabilities like HEVC or AV1. It is currently categorized as a legacy framework but remains crucial for maintaining backwards compatibility with older Linux applications.

API Compatibility

API Compatibility

GPU Generation Codec Capabilities Supported APIs NixOS Config Packages
Tesla
(GeForce 8/9/200/300, NVS 300)
Decode: MPEG-1, MPEG-2, VC-1/WMV9, H.264 (AVC)
Encode: None
VDPAU Driver: legacy_340
Backend: pkgs.libvdpau
Fermi
(GeForce 400/500)
Decode: MPEG-1/2, VC-1, H.264, VP8 (selective VP5 models)
Encode: None
VDPAU, NVDEC (Early NVCUVID) Driver: legacy_390
Backend: pkgs.libvdpau
Kepler
(GeForce 600/700)
Decode: MPEG-1/2, VC-1, H.264, VP8
Encode: H.264 (1st Gen NVENC)
VDPAU, NVDEC, NVENC Driver: legacy_470 (600 series) or legacy_580 (700 series)
Backend: pkgs.libvdpau
Maxwell (1st Gen)
(GeForce GTX 750/750 Ti)
Decode: MPEG-1/2, VC-1, H.264, VP8
Encode: H.264 (2nd Gen NVENC)
VDPAU, NVDEC, NVENC Driver: legacy_580
Backend: pkgs.libvdpau
Maxwell (2nd Gen)
(GeForce 900 series)
Decode: MPEG-1/2, VC-1, H.264, HEVC/H.265 (Partial/Hybrid; Full 8/10-bit on GM206), VP9 (Hybrid)
Encode: H.264, HEVC (8-bit, 3rd Gen NVENC)
VDPAU, NVDEC, NVENC, VA-API (via wrapper) Driver: legacy_580
Backend: pkgs.nvidia-vaapi-driver or legacy VDPAU pkgs.libvdpau
Pascal
(GeForce 10 series)
Decode: MPEG-2, VC-1, H.264, HEVC (8/10/12-bit), VP8, VP9 (8/10-bit)
Encode: H.264, HEVC (8/10-bit, 4th Gen NVENC)
VDPAU, NVDEC, NVENC, VA-API (via wrapper) Driver: legacy_580
Backend: pkgs.nvidia-vaapi-driver or legacy VDPAU pkgs.libvdpau
Turing / Volta
(GeForce 16/20 series, Titan V)
Decode: H.264, HEVC (up to 12-bit 4:4:4), VP9 (10/12-bit)
Encode: H.264, HEVC (Adds B-Frames, 5th/6th Gen NVENC)
VDPAU, NVDEC, NVENC, VA-API (via wrapper) Driver: legacy_580 (16 series) or stable (20 series)
Backend: pkgs.nvidia-vaapi-driver or legacy VDPAU pkgs.libvdpau
Ampere
(GeForce 30 series)
Decode: Adds AV1 (up to 10-bit), H.264, HEVC, VP9
Encode: H.264, HEVC (7th Gen NVENC)
VDPAU, NVDEC, NVENC, VA-API (via wrapper) Driver: stable
Backend: pkgs.nvidia-vaapi-driver or legacy VDPAU pkgs.libvdpau
Ada Lovelace
(GeForce 40 series)
Decode: AV1, H.264, HEVC, VP9
Encode: Adds AV1 (8th Gen NVENC, dual encoders on select models)
VDPAU, NVDEC, NVENC, VA-API (via wrapper) Driver: stable
Backend: pkgs.nvidia-vaapi-driver or legacy VDPAU pkgs.libvdpau
Blackwell
(GeForce 50 series)
Decode: Adds 4:2:2 (H.264/HEVC), 2x H.264 throughput, AV1, HEVC, VP9 (6th Gen NVDEC)
Encode: Adds 4:2:2 (H.264/HEVC), AV1 UHQ Mode (9th Gen NVENC)
VDPAU, NVDEC, NVENC, VA-API (via wrapper) Driver: stable
Backend: pkgs.nvidia-vaapi-driver or legacy VDPAU pkgs.libvdpau