![GitHub last commit](https://img.shields.io/github/last-commit/keylase/nvidia-patch.svg)![Latest version](https://img.shields.io/badge/latest%20linux%20driver%20version-470.74-brightgreen.svg)
![GitHub last commit](https://img.shields.io/github/last-commit/keylase/nvidia-patch.svg)![Latest version](https://img.shields.io/badge/latest%20linux%20driver%20version-495.29.05-brightgreen.svg)
[NVENC patch](patch.sh) removes restriction on maximum number of simultaneous NVENC video encoding sessions imposed by Nvidia to consumer-grade GPUs.
[NVENC patch](patch.sh) removes restriction on maximum number of simultaneous NVENC video encoding sessions imposed by Nvidia to consumer-grade GPUs.
The patch for Nvidia drivers to remove NVENC session limit
The patch for Nvidia drivers to remove NVENC session limit
...
@@ -61,6 +56,7 @@ DESCRIPTION
...
@@ -61,6 +56,7 @@ DESCRIPTION
-l List supported driver versions
-l List supported driver versions
-d VERSION Use VERSION driver version when looking for libraries
-d VERSION Use VERSION driver version when looking for libraries
instead of using nvidia-smi to detect it.
instead of using nvidia-smi to detect it.
-f Enable support for Flatpak NVIDIA drivers.
```
```
...
@@ -68,7 +64,7 @@ DESCRIPTION
...
@@ -68,7 +64,7 @@ DESCRIPTION
# bash ./patch-fbc.sh -h
# bash ./patch-fbc.sh -h
SYNOPSIS
SYNOPSIS
patch-fbc.sh [-s] [-r|-h|-c VERSION|-l]
patch-fbc.sh [-s] [-r|-h|-c VERSION|-l|-f]
DESCRIPTION
DESCRIPTION
The patch for Nvidia drivers to allow FBC on consumer devices
The patch for Nvidia drivers to allow FBC on consumer devices
...
@@ -81,7 +77,7 @@ DESCRIPTION
...
@@ -81,7 +77,7 @@ DESCRIPTION
-l List supported driver versions
-l List supported driver versions
-d VERSION Use VERSION driver version when looking for libraries
-d VERSION Use VERSION driver version when looking for libraries
instead of using nvidia-smi to detect it.
instead of using nvidia-smi to detect it.
-f Enable support for Flatpak NVIDIA drivers.
```
```
...
@@ -139,6 +135,22 @@ Essentially all you need to do during build is:
...
@@ -139,6 +135,22 @@ Essentially all you need to do during build is:
`docker-entrypoint.sh` script does on-the-fly patching by means of manipulating dynamic linker to workaround read-only mount of Nvidia runtime. Finally it passes original docker command to shell, like if entrypoint was not restricted by `ENTRYPOINT` directive. So `docker run --runtime=nvidia -it mycontainer echo 123` will print `123`. Also it can be just invoked from your entrypoint script, if you have any.
`docker-entrypoint.sh` script does on-the-fly patching by means of manipulating dynamic linker to workaround read-only mount of Nvidia runtime. Finally it passes original docker command to shell, like if entrypoint was not restricted by `ENTRYPOINT` directive. So `docker run --runtime=nvidia -it mycontainer echo 123` will print `123`. Also it can be just invoked from your entrypoint script, if you have any.
## Flatpak support
If you use a Flatpak app that uses NVENC/NvFBC (e.g. OBS Studio, Kdenlive), it's recommended that you patch the NVIDIA drivers for Flatpak as well. To do so, just pass the `-f` parameter to either `patch.sh` or `patch-fbc.sh`, like so:
```bash
bash ./patch.sh -f
bash ./patch-fbc.sh -f
```
In case something goes wrong, you can restore the original Flatpak drivers by adding the `-r` paramater:
```
bash ./patch.sh -f -r
bash ./patch-fbc.sh -f -r
```
## Benchmarks
## Benchmarks
* [Plex Media Server: nVidia Hardware Transcoding Calculator for Plex Estimates](https://www.elpamsoft.com/?p=Plex-Hardware-Transcoding) - useful benchmark of achieved simultaneous transcodes with various stream quality and hardware with patched drivers.
* [Plex Media Server: nVidia Hardware Transcoding Calculator for Plex Estimates](https://www.elpamsoft.com/?p=Plex-Hardware-Transcoding) - useful benchmark of achieved simultaneous transcodes with various stream quality and hardware with patched drivers.