![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.63.01-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-470.74-brightgreen.svg)
[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
...
...
@@ -169,6 +170,7 @@ DESCRIPTION
-l List supported driver versions
-d VERSION Use VERSION driver version when looking for libraries
instead of using nvidia-smi to detect it.
-f Enable support for Flatpak NVIDIA drivers.
```
...
...
@@ -176,7 +178,7 @@ DESCRIPTION
# bash ./patch-fbc.sh -h
SYNOPSIS
patch-fbc.sh [-s] [-r|-h|-c VERSION|-l]
patch-fbc.sh [-s] [-r|-h|-c VERSION|-l|-f]
DESCRIPTION
The patch for Nvidia drivers to allow FBC on consumer devices
...
...
@@ -189,7 +191,7 @@ DESCRIPTION
-l List supported driver versions
-d VERSION Use VERSION driver version when looking for libraries
instead of using nvidia-smi to detect it.
-f Enable support for Flatpak NVIDIA drivers.
```
...
...
@@ -247,6 +249,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.
## 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
*[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.
5. Apply x86 library patch to corresponding file in `%WINDIR%\SysWOW64\` in the same way as previous one.
-*If patching fails, close all applications using nvencodeapi.dll, such as OBS Studio, Plex or Discord.*
**Example:** for 64bit Windows 10 running driver version 471.96, use `win10_x64/471.96/nvencodeapi64.1337` against `C:\WINDOWS\system32\nvencodeapi64.dll`**and**`win10_x64/471.96/nvencodeapi.1337` against `C:\WINDOWS\SysWOW64\nvencodeapi.dll`.
**Example:** for 64bit Windows 10 running driver version 472.12, use `win10_x64/472.12/nvencodeapi64.1337` against `C:\WINDOWS\system32\nvencodeapi64.dll`**and**`win10_x64/472.12/nvencodeapi.1337` against `C:\WINDOWS\SysWOW64\nvencodeapi.dll`.
If you experience issues with streaming software based on Nvidia streaming facilities (Nvidia Shield TV, Moonlight), you also have to import few registry values in order to workaround binary signature mismatch. See [**skip\_sig\_check** (clickable)](skip_sig_check) directory for instructions.
...
...
@@ -181,6 +181,8 @@ Credits to [TroubleChute channel](https://www.youtube.com/channel/UCkih2oVTbXPEp