Changes to the script. Removed the IDs, now in a dedicated ids-database branch.

This commit is contained in:
Raphaël Numbus
2026-07-24 12:00:52 +02:00
parent b9425b012c
commit cafe938569
17 changed files with 151 additions and 1666 deletions
+32
View File
@@ -0,0 +1,32 @@
# 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**<br>*(GeForce 8/9/200/300, NVS 300)* | **Decode:** MPEG-1, MPEG-2, VC-1/WMV9, H.264 (AVC)<br>**Encode:** None | VDPAU | **Driver:** `legacy_340` <br> **Backend:** `pkgs.libvdpau` |
| **Fermi**<br>*(GeForce 400/500)* | **Decode:** MPEG-1/2, VC-1, H.264, VP8 (selective VP5 models)<br>**Encode:** None | VDPAU, NVDEC (Early NVCUVID) | **Driver:** `legacy_390` <br>**Backend:** `pkgs.libvdpau` |
| **Kepler**<br>*(GeForce 600/700)* | **Decode:** MPEG-1/2, VC-1, H.264, VP8<br>**Encode:** H.264 (1st Gen NVENC) | VDPAU, NVDEC, NVENC | **Driver:** `legacy_470` *(600 series)* or `legacy_580` *(700 series)* <br> **Backend:** `pkgs.libvdpau` |
| **Maxwell (1st Gen)** <br> *(GeForce GTX 750/750 Ti)* | **Decode:** MPEG-1/2, VC-1, H.264, VP8 <br> **Encode:** H.264 (2nd Gen NVENC) | VDPAU, NVDEC, NVENC | **Driver:** `legacy_580` <br> **Backend:** `pkgs.libvdpau` |
| **Maxwell (2nd Gen)** <br> *(GeForce 900 series)* | **Decode:** MPEG-1/2, VC-1, H.264, HEVC/H.265 (Partial/Hybrid; Full 8/10-bit on GM206), VP9 (Hybrid) <br> **Encode:** H.264, HEVC (8-bit, 3rd Gen NVENC) | VDPAU, NVDEC, NVENC, VA-API (via wrapper) | **Driver:** `legacy_580`<br>**Backend:** `pkgs.nvidia-vaapi-driver` or legacy VDPAU `pkgs.libvdpau` |
| **Pascal** <br> *(GeForce 10 series)* | **Decode:** MPEG-2, VC-1, H.264, HEVC (8/10/12-bit), VP8, VP9 (8/10-bit) <br> **Encode:** H.264, HEVC (8/10-bit, 4th Gen NVENC) | VDPAU, NVDEC, NVENC, VA-API (via wrapper) | **Driver:** `legacy_580` <br> **Backend:** `pkgs.nvidia-vaapi-driver` or legacy VDPAU `pkgs.libvdpau` |
| **Turing / Volta**<br>*(GeForce 16/20 series, Titan V)* | **Decode:** H.264, HEVC (up to 12-bit 4:4:4), VP9 (10/12-bit) <br> **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)* <br> **Backend:** `pkgs.nvidia-vaapi-driver` or legacy VDPAU `pkgs.libvdpau` |
| **Ampere** <br> *(GeForce 30 series)* | **Decode:** Adds AV1 (up to 10-bit), H.264, HEVC, VP9 <br> **Encode:** H.264, HEVC (7th Gen NVENC) | VDPAU, NVDEC, NVENC, VA-API (via wrapper) | **Driver:** `stable` <br> **Backend:** `pkgs.nvidia-vaapi-driver` or legacy VDPAU `pkgs.libvdpau` |
| **Ada Lovelace**<br>*(GeForce 40 series)* | **Decode:** AV1, H.264, HEVC, VP9 <br> **Encode:** Adds AV1 (8th Gen NVENC, dual encoders on select models) | VDPAU, NVDEC, NVENC, VA-API (via wrapper) | **Driver:** `stable` <br> **Backend:** `pkgs.nvidia-vaapi-driver` or legacy VDPAU `pkgs.libvdpau` |
| **Blackwell** <br> *(GeForce 50 series)* | **Decode:** Adds 4:2:2 (H.264/HEVC), 2x H.264 throughput, AV1, HEVC, VP9 (6th Gen NVDEC) <br> **Encode:** Adds 4:2:2 (H.264/HEVC), AV1 UHQ Mode (9th Gen NVENC) | VDPAU, NVDEC, NVENC, VA-API (via wrapper) | **Driver:** `stable` <br> **Backend:** `pkgs.nvidia-vaapi-driver` or legacy VDPAU `pkgs.libvdpau` |