Skip to content

Commit

Permalink
Merge pull request #140 from crimist/documentation-update
Browse files Browse the repository at this point in the history
Update documentation
  • Loading branch information
elFarto authored Dec 15, 2022
2 parents 44b24ca + 93e6524 commit acd4696
Showing 1 changed file with 23 additions and 12 deletions.
35 changes: 23 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@

This is an VA-API implementation that uses NVDEC as a backend. This implementation is specifically designed to be used by Firefox for accelerated decode of web content, and may not operate correctly in other applications.

This library requires that the `nvidia_drm` kernel module is [configured with the parameter](https://wiki.archlinux.org/title/Kernel_parameters) `nvidia-drm.modeset=1`

# Table of contents

- [nvidia-vaapi-driver](#nvidia-vaapi-driver)
Expand All @@ -14,6 +12,7 @@ This library requires that the `nvidia_drm` kernel module is [configured with th
- [Building](#building)
- [Removal](#removal)
- [Configuration](#configuration)
- [Kernel parameters](#kernel-parameters)
- [Environment Variables](#environment-variables)
- [Firefox](#firefox)
- [MPV](#mpv)
Expand All @@ -22,7 +21,7 @@ This library requires that the `nvidia_drm` kernel module is [configured with th

# Codec Support

Only decoding video is currently supported.
Hardware decoding only, encoding is [not supported](/../../issues/116).

| Codec | Supported | Comments |
|---|---|---|
Expand All @@ -36,7 +35,7 @@ Only decoding video is currently supported.
|MPEG-4|:x:|VA-API does not supply enough of the original bitstream to allow NVDEC to decode it.|
|JPEG|:x:|This is unlikely to ever work, the two APIs are too different.|

YUV444 video support currently unavailable. It is a work in progress [here](/../../pull/134).
YUV444 support is a work in progress [here](/../../pull/134).

To view which codecs your card is capable of decoding you can use the `vainfo` command with this driver installed, or visit the NVIDIA website [here](https://developer.nvidia.com/video-encode-and-decode-gpu-support-matrix-new#geforce).

Expand All @@ -50,10 +49,11 @@ To install and use `nvidia-vaapi-driver`, follow the steps in installation and c

## Package manager

| Package manager | Package name | Notes |
|-----------------|---------------------------------------------------------------------------------------|----------------|
| pacman (AUR) | [libva-nvidia-driver](https://aur.archlinux.org/packages/libva-nvidia-driver) | Latest release |
| pacman (AUR) | [nvidia-vaapi-driver-git](https://aur.archlinux.org/packages/nvidia-vaapi-driver-git) | @master |
| Distribution | Package name |
|---|---|
| Arch<sup>AUR</sup> | [libva-nvidia-driver](https://aur.archlinux.org/packages/libva-nvidia-driver) |
| Arch<sup>AUR</sup> | [nvidia-vaapi-driver-git](https://aur.archlinux.org/packages/nvidia-vaapi-driver-git) |
| Debian,Ubuntu | nvidia-vaapi-driver<sup>[debian](https://packages.ubuntu.com/kinetic/nvidia-vaapi-driver) [ubuntu](https://packages.ubuntu.com/kinetic/nvidia-vaapi-driver)</sup> |

Feel free to add your distributions package in an issue/PR.

Expand Down Expand Up @@ -81,6 +81,10 @@ By default the driver installs itself as `/usr/lib64/dri/nvidia_drv_video.so` (t

**IMPORTANT**: The [direct backend](#direct-backend) is currently required on NVIDIA driver series 525 due to a regression (see [issue #126](/../../issues/126)).

## Kernel parameters

This library requires that the `nvidia_drm` kernel module is [configured with the parameter](https://wiki.archlinux.org/title/Kernel_parameters) `nvidia-drm.modeset=1`

## Environment Variables

Environment variables used to control the behavior of this library.
Expand Down Expand Up @@ -123,12 +127,19 @@ There's no real reason to run it with mpv except for testing, as mpv already sup
The direct backend is a experimental backend that accesses the NVIDIA kernel driver directly, rather than using EGL to share the buffers. This allows us
a greater degree of control over buffer allocation and freeing.

Given this backend accesses the NVIDIA driver directly, via NVIDIA's unstable API, this module is likely to break often with new versions of the kernel driver. If you encounter issues using this backend raise an issue and including logs generated by `NVD_LOG=1`.
**Generational compatibility**

**Currently tested and verified generations**
| Generation | Desktop | Mobile |
|---|---|---|
| <=Maxwell (<=9XX) |||
| Pascal (10XX) |||
| Turing (20XX/16XX) |||
| Ampere (30XX) |||
| Lovelace (40XX) |||

* Pascal (10XX)
* Turing mobile (20XX)
❓ - Unknown, let us know the test results of an unknown generation [here](/../../issues/126).

Given this backend accesses the NVIDIA driver directly, via NVIDIA's unstable API, this module is likely to break often with new versions of the kernel driver. If you encounter issues using this backend raise an issue and including logs generated by `NVD_LOG=1`.

This backend uses headers files from the NVIDIA [open-gpu-kernel-modules](https://github.com/NVIDIA/open-gpu-kernel-modules)
project. The `extract_headers.sh` script, along with the `headers.in` file list which files we need, and will copy them from a checked out version of the NVIDIA project
Expand Down

0 comments on commit acd4696

Please sign in to comment.