diff --git a/README.md b/README.md index 55106bf..7b415a9 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ NVENC and NvFBC patches for Nvidia drivers ========================================== -![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. @@ -149,6 +149,7 @@ git clone https://ipfs.io/ipns/Qmed4r8yrBP162WK1ybd1DJWhLUi4t6mGuBoB9fLtjxR7u nv | 470.57.02 | YES | YES | [Driver link](https://international.download.nvidia.com/XFree86/Linux-x86_64/470.57.02/NVIDIA-Linux-x86_64-470.57.02.run) | | 470.62.02 | YES | YES | | | 470.63.01 | YES | YES | [Driver link](https://international.download.nvidia.com/XFree86/Linux-x86_64/470.63.01/NVIDIA-Linux-x86_64-470.63.01.run) | +| 470.74 | YES | YES | [Driver link](https://international.download.nvidia.com/XFree86/Linux-x86_64/470.74/NVIDIA-Linux-x86_64-470.74.run) | ## Synopsis @@ -156,7 +157,7 @@ git clone https://ipfs.io/ipns/Qmed4r8yrBP162WK1ybd1DJWhLUi4t6mGuBoB9fLtjxR7u nv # bash ./patch.sh -h SYNOPSIS - patch.sh [-s] [-r|-h|-c VERSION|-l] + patch.sh [-s] [-r|-h|-c VERSION|-l|-f] DESCRIPTION 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. diff --git a/drivers.json b/drivers.json index 6442a82..5c8a68d 100644 --- a/drivers.json +++ b/drivers.json @@ -620,6 +620,12 @@ "version": "470.62.02", "nvenc_patch": true, "nvfbc_patch": true + }, + { + "version": "470.74", + "nvenc_patch": true, + "nvfbc_patch": true, + "driver_url": "https://international.download.nvidia.com/XFree86/Linux-x86_64/470.74/NVIDIA-Linux-x86_64-470.74.run" } ], "example": { @@ -3149,6 +3155,60 @@ "patch64_url": "win7_x64/471.96/nvencodeapi64.1337", "patch32_url": "win7_x64/471.96/nvencodeapi.1337", "driver_url": "https://international.download.nvidia.com/Windows/471.96/471.96-desktop-win8-win7-64bit-international-whql.exe" + }, + { + "os": "win10", + "product": "GeForce", + "version": "472.12", + "variant": "Studio Driver", + "patch64_url": "win10_x64/nsd_472.12/nvencodeapi64.1337", + "patch32_url": "win10_x64/nsd_472.12/nvencodeapi.1337", + "driver_url": "https://international.download.nvidia.com/Windows/472.12/472.12-desktop-win10-win11-64bit-international-nsd-whql.exe" + }, + { + "os": "win10", + "product": "GeForce", + "version": "472.12", + "variant": "", + "patch64_url": "win10_x64/472.12/nvencodeapi64.1337", + "patch32_url": "win10_x64/472.12/nvencodeapi.1337", + "driver_url": "https://international.download.nvidia.com/Windows/472.12/472.12-desktop-win10-win11-64bit-international-whql.exe" + }, + { + "os": "win7", + "product": "GeForce", + "version": "472.12", + "variant": "", + "patch64_url": "win7_x64/472.12/nvencodeapi64.1337", + "patch32_url": "win7_x64/472.12/nvencodeapi.1337", + "driver_url": "https://international.download.nvidia.com/Windows/472.12/472.12-desktop-win8-win7-64bit-international-whql.exe" + }, + { + "os": "win10", + "product": "Quadro", + "version": "472.12", + "variant": "", + "patch64_url": "win10_x64/quadro_472.12/nvencodeapi64.1337", + "patch32_url": "win10_x64/quadro_472.12/nvencodeapi.1337", + "driver_url": "https://international.download.nvidia.com/Windows/Quadro_Certified/472.12/472.12-quadro-rtx-desktop-notebook-win10-win11-64bit-international-whql.exe" + }, + { + "os": "ws2012", + "product": "Quadro", + "version": "472.12", + "variant": "", + "patch64_url": "ws2012_x64/quadro_472.12/nvencodeapi64.1337", + "patch32_url": "ws2012_x64/quadro_472.12/nvencodeapi.1337", + "driver_url": "https://international.download.nvidia.com/Windows/Quadro_Certified/472.12/472.12-quadro-rtx-winserv-2012r2-64bit-international-whql.exe" + }, + { + "os": "ws2016", + "product": "Quadro", + "version": "472.12", + "variant": "", + "patch64_url": "ws2016_x64/quadro_472.12/nvencodeapi64.1337", + "patch32_url": "ws2016_x64/quadro_472.12/nvencodeapi.1337", + "driver_url": "https://international.download.nvidia.com/Windows/Quadro_Certified/472.12/472.12-quadro-rtx-winserv-2016-2019-64bit-international-whql.exe" } ] } diff --git a/patch-fbc.sh b/patch-fbc.sh index abe0c6c..1e376f9 100755 --- a/patch-fbc.sh +++ b/patch-fbc.sh @@ -7,10 +7,12 @@ set -euo pipefail ; # <- this semicolon and comment make options apply backup_path="/opt/nvidia/libnvidia-fbc-backup" silent_flag='' manual_driver_version='' +flatpak_flag='' +backup_suffix='' print_usage() { printf ' 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 @@ -23,14 +25,14 @@ 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. ' } # shellcheck disable=SC2209 opmode="patch" -while getopts 'rshc:ld:' flag; do +while getopts 'rshc:ld:f' flag; do case "${flag}" in r) opmode="${opmode}rollback" ;; s) silent_flag='true' ;; @@ -38,6 +40,7 @@ while getopts 'rshc:ld:' flag; do c) opmode="${opmode}checkversion" ; checked_version="$OPTARG" ;; l) opmode="${opmode}listversions" ;; d) manual_driver_version="$OPTARG" ;; + f) flatpak_flag='true' ;; *) echo "Incorrect option specified in command line" ; exit 2 ;; esac done @@ -46,6 +49,11 @@ if [[ $silent_flag ]]; then exec 1> /dev/null fi +if [[ $flatpak_flag ]]; then + backup_suffix='.flatpak' + echo "WARNING: Flatpak flag enabled (-f), modifying ONLY the Flatpak driver." +fi + declare -A patch_list=( ["435.27.08"]='s/\x85\xc0\x89\xc3\x0f\x85\x68\xfa\xff\xff/\x31\xc0\x89\xc3\x0f\x85\x68\xfa\xff\xff/' ["440.26"]='s/\x85\xc0\x89\xc3\x0f\x85\xa9\xfa\xff\xff/\x31\xc0\x89\xc3\x0f\x85\xa9\xfa\xff\xff/' @@ -119,6 +127,7 @@ declare -A patch_list=( ["470.57.02"]='s/\x83\xfe\x01\x73\x08\x48/\x83\xfe\x00\x72\x08\x48/' ["470.62.02"]='s/\x83\xfe\x01\x73\x08\x48/\x83\xfe\x00\x72\x08\x48/' ["470.63.01"]='s/\x83\xfe\x01\x73\x08\x48/\x83\xfe\x00\x72\x08\x48/' + ["470.74"]='s/\x83\xfe\x01\x73\x08\x48/\x83\xfe\x00\x72\x08\x48/' ) declare -A object_list=( @@ -194,6 +203,7 @@ declare -A object_list=( ["470.57.02"]='libnvidia-fbc.so' ["470.62.02"]='libnvidia-fbc.so' ["470.63.01"]='libnvidia-fbc.so' + ["470.74"]='libnvidia-fbc.so' ) check_version_supported () { @@ -201,6 +211,14 @@ check_version_supported () { [[ "${patch_list[$ver]+isset}" && "${object_list[$ver]+isset}" ]] } +get_flatpak_driver_path () { + # Flatpak's package versioning replaces '.' by '-' + version="$(echo "$1" | tr '.' '-')" + if path=$(flatpak info --show-location "org.freedesktop.Platform.GL.nvidia-${version}" 2>/dev/null); then + echo "$path/files/lib" + fi +} + get_supported_versions () { for drv in "${!patch_list[@]}"; do [[ "${object_list[$drv]+isset}" ]] && echo "$drv" @@ -244,6 +262,17 @@ patch_common () { patch="${patch_list[$driver_version]}" object="${object_list[$driver_version]}" + if [[ $flatpak_flag ]]; then + driver_dir=$(get_flatpak_driver_path "$driver_version") + if [ -z "$driver_dir" ]; then + echo "ERROR: Flatpak package for driver $driver_version does not appear to be installed." + echo "Try rebooting your computer and/or running 'flatpak update'." + exit 1 + fi + # return early because the code below is out of scope for the Flatpak driver + return 0 + fi + declare -a driver_locations=( '/usr/lib/x86_64-linux-gnu' '/usr/lib/x86_64-linux-gnu/nvidia/current/' @@ -265,10 +294,10 @@ patch_common () { rollback () { patch_common - if [[ -f "$backup_path/$object.$driver_version" ]]; then - cp -p "$backup_path/$object.$driver_version" \ + if [[ -f "$backup_path/$object.$driver_version$backup_suffix" ]]; then + cp -p "$backup_path/$object.$driver_version$backup_suffix" \ "$driver_dir/$object.$driver_version" - echo "Restore from backup $object.$driver_version" + echo "Restore from backup $object.$driver_version$backup_suffix" else echo "Backup not found. Try to patch first." exit 1 @@ -277,8 +306,8 @@ rollback () { patch () { patch_common - if [[ -f "$backup_path/$object.$driver_version" ]]; then - bkp_hash="$(sha1sum "$backup_path/$object.$driver_version" | cut -f1 -d\ )" + if [[ -f "$backup_path/$object.$driver_version$backup_suffix" ]]; then + bkp_hash="$(sha1sum "$backup_path/$object.$driver_version$backup_suffix" | cut -f1 -d\ )" drv_hash="$(sha1sum "$driver_dir/$object.$driver_version" | cut -f1 -d\ )" if [[ "$bkp_hash" != "$drv_hash" ]] ; then echo "Backup exists and driver file differ from backup. Skipping patch." @@ -288,10 +317,10 @@ patch () { echo "Attention! Backup not found. Copying current $object to backup." mkdir -p "$backup_path" cp -p "$driver_dir/$object.$driver_version" \ - "$backup_path/$object.$driver_version" + "$backup_path/$object.$driver_version$backup_suffix" fi - sha1sum "$backup_path/$object.$driver_version" - sed "$patch" "$backup_path/$object.$driver_version" > \ + sha1sum "$backup_path/$object.$driver_version$backup_suffix" + sed "$patch" "$backup_path/$object.$driver_version$backup_suffix" > \ "${PATCH_OUTPUT_DIR-$driver_dir}/$object.$driver_version" sha1sum "${PATCH_OUTPUT_DIR-$driver_dir}/$object.$driver_version" ldconfig diff --git a/patch.sh b/patch.sh index ea70063..3e8bada 100755 --- a/patch.sh +++ b/patch.sh @@ -7,10 +7,12 @@ set -euo pipefail ; # <- this semicolon and comment make options apply backup_path="/opt/nvidia/libnvidia-encode-backup" silent_flag='' manual_driver_version='' +flatpak_flag='' +backup_suffix='' print_usage() { printf ' SYNOPSIS - patch.sh [-s] [-r|-h|-c VERSION|-l] + patch.sh [-s] [-r|-h|-c VERSION|-l|-f] DESCRIPTION The patch for Nvidia drivers to remove NVENC session limit @@ -23,13 +25,14 @@ 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. ' } # shellcheck disable=SC2209 opmode="patch" -while getopts 'rshc:ld:' flag; do +while getopts 'rshc:ld:f' flag; do case "${flag}" in r) opmode="${opmode}rollback" ;; s) silent_flag='true' ;; @@ -37,6 +40,7 @@ while getopts 'rshc:ld:' flag; do c) opmode="${opmode}checkversion" ; checked_version="$OPTARG" ;; l) opmode="${opmode}listversions" ;; d) manual_driver_version="$OPTARG" ;; + f) flatpak_flag='true' ;; *) echo "Incorrect option specified in command line" ; exit 2 ;; esac done @@ -45,6 +49,11 @@ if [[ $silent_flag ]]; then exec 1> /dev/null fi +if [[ $flatpak_flag ]]; then + backup_suffix='.flatpak' + echo "WARNING: Flatpak flag enabled (-f), modifying ONLY the Flatpak driver." +fi + declare -A patch_list=( ["375.39"]='s/\x85\xC0\x89\xC5\x75\x18/\x29\xC0\x89\xC5\x90\x90/g' ["390.77"]='s/\x85\xC0\x89\xC5\x75\x18/\x29\xC0\x89\xC5\x90\x90/g' @@ -156,6 +165,7 @@ declare -A patch_list=( ["470.57.02"]='s/\xe8\x25\x1C\xff\xff\x85\xc0\x41\x89\xc4/\xe8\x25\x1C\xff\xff\x29\xc0\x41\x89\xc4/g' ["470.62.02"]='s/\xe8\x25\x1C\xff\xff\x85\xc0\x41\x89\xc4/\xe8\x25\x1C\xff\xff\x29\xc0\x41\x89\xc4/g' ["470.63.01"]='s/\xe8\x25\x1C\xff\xff\x85\xc0\x41\x89\xc4/\xe8\x25\x1C\xff\xff\x29\xc0\x41\x89\xc4/g' + ["470.74"]='s/\xe8\x25\x1C\xff\xff\x85\xc0\x41\x89\xc4/\xe8\x25\x1C\xff\xff\x29\xc0\x41\x89\xc4/g' ) declare -A object_list=( @@ -267,6 +277,7 @@ declare -A object_list=( ["470.57.02"]='libnvidia-encode.so' ["470.62.02"]='libnvidia-encode.so' ["470.63.01"]='libnvidia-encode.so' + ["470.74"]='libnvidia-encode.so' ) check_version_supported () { @@ -274,6 +285,14 @@ check_version_supported () { [[ "${patch_list[$ver]+isset}" && "${object_list[$ver]+isset}" ]] } +get_flatpak_driver_path () { + # Flatpak's package versioning replaces '.' by '-' + version="$(echo "$1" | tr '.' '-')" + if path=$(flatpak info --show-location "org.freedesktop.Platform.GL.nvidia-${version}" 2>/dev/null); then + echo "$path/files/lib" + fi +} + get_supported_versions () { for drv in "${!patch_list[@]}"; do [[ "${object_list[$drv]+isset}" ]] && echo "$drv" @@ -317,6 +336,17 @@ patch_common () { patch="${patch_list[$driver_version]}" object="${object_list[$driver_version]}" + if [[ $flatpak_flag ]]; then + driver_dir=$(get_flatpak_driver_path "$driver_version") + if [ -z "$driver_dir" ]; then + echo "ERROR: Flatpak package for driver $driver_version does not appear to be installed." + echo "Try rebooting your computer and/or running 'flatpak update'." + exit 1 + fi + # return early because the code below is out of scope for the Flatpak driver + return 0 + fi + declare -a driver_locations=( '/usr/lib/x86_64-linux-gnu' '/usr/lib/x86_64-linux-gnu/nvidia/current/' @@ -338,10 +368,10 @@ patch_common () { rollback () { patch_common - if [[ -f "$backup_path/$object.$driver_version" ]]; then - cp -p "$backup_path/$object.$driver_version" \ + if [[ -f "$backup_path/$object.$driver_version$backup_suffix" ]]; then + cp -p "$backup_path/$object.$driver_version$backup_suffix" \ "$driver_dir/$object.$driver_version" - echo "Restore from backup $object.$driver_version" + echo "Restore from backup $object.$driver_version$backup_suffix" else echo "Backup not found. Try to patch first." exit 1 @@ -350,8 +380,8 @@ rollback () { patch () { patch_common - if [[ -f "$backup_path/$object.$driver_version" ]]; then - bkp_hash="$(sha1sum "$backup_path/$object.$driver_version" | cut -f1 -d\ )" + if [[ -f "$backup_path/$object.$driver_version$backup_suffix" ]]; then + bkp_hash="$(sha1sum "$backup_path/$object.$driver_version$backup_suffix" | cut -f1 -d\ )" drv_hash="$(sha1sum "$driver_dir/$object.$driver_version" | cut -f1 -d\ )" if [[ "$bkp_hash" != "$drv_hash" ]] ; then echo "Backup exists and driver file differ from backup. Skipping patch." @@ -361,10 +391,10 @@ patch () { echo "Attention! Backup not found. Copying current $object to backup." mkdir -p "$backup_path" cp -p "$driver_dir/$object.$driver_version" \ - "$backup_path/$object.$driver_version" + "$backup_path/$object.$driver_version$backup_suffix" fi - sha1sum "$backup_path/$object.$driver_version" - sed "$patch" "$backup_path/$object.$driver_version" > \ + sha1sum "$backup_path/$object.$driver_version$backup_suffix" + sed "$patch" "$backup_path/$object.$driver_version$backup_suffix" > \ "${PATCH_OUTPUT_DIR-$driver_dir}/$object.$driver_version" sha1sum "${PATCH_OUTPUT_DIR-$driver_dir}/$object.$driver_version" ldconfig diff --git a/win/README.md b/win/README.md index 1a10f25..3234859 100644 --- a/win/README.md +++ b/win/README.md @@ -1,7 +1,7 @@ NVENC and NvFBC patches for Windows Nvidia drivers ================================================== -![GitHub last commit](https://img.shields.io/github/last-commit/keylase/nvidia-patch.svg) ![Latest GeForce version](https://img.shields.io/badge/latest%20GeForce%20version-471.96-brightgreen.svg) ![Latest Quadro version](https://img.shields.io/badge/latest%20Quadro%20version-471.68-blue.svg) +![GitHub last commit](https://img.shields.io/github/last-commit/keylase/nvidia-patch.svg) ![Latest GeForce version](https://img.shields.io/badge/latest%20GeForce%20version-472.12-brightgreen.svg) ![Latest Quadro version](https://img.shields.io/badge/latest%20Quadro%20version-472.12-blue.svg) NVENC patch removes restriction on maximum number of simultaneous NVENC video encoding sessions imposed by Nvidia to consumer-grade GPUs. @@ -54,7 +54,7 @@ git clone https://ipfs.io/ipns/Qmed4r8yrBP162WK1ybd1DJWhLUi4t6mGuBoB9fLtjxR7u nv 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 | GeForce | 471.68 | [x64 library patch](https://raw.githubusercontent.com/keylase/nvidia-patch/master/win/win10_x64/471.68/nvencodeapi64.1337) | [x86 library patch](https://raw.githubusercontent.com/keylase/nvidia-patch/master/win/win10_x64/471.68/nvencodeapi.1337) | [Driver link](https://international.download.nvidia.com/Windows/471.68/471.68-desktop-win10-win11-64bit-international-whql.exe) | | GeForce | 471.68 Studio Driver | [x64 library patch](https://raw.githubusercontent.com/keylase/nvidia-patch/master/win/win10_x64/nsd_471.68/nvencodeapi64.1337) | [x86 library patch](https://raw.githubusercontent.com/keylase/nvidia-patch/master/win/win10_x64/nsd_471.68/nvencodeapi.1337) | [Driver link](https://international.download.nvidia.com/Windows/471.68/471.68-desktop-win10-win11-64bit-international-nsd-whql.exe) | | GeForce | 471.96 | [x64 library patch](https://raw.githubusercontent.com/keylase/nvidia-patch/master/win/win10_x64/471.96/nvencodeapi64.1337) | [x86 library patch](https://raw.githubusercontent.com/keylase/nvidia-patch/master/win/win10_x64/471.96/nvencodeapi.1337) | [Driver link](https://international.download.nvidia.com/Windows/471.96/471.96-desktop-win10-win11-64bit-international-whql.exe) | +| GeForce | 472.12 | [x64 library patch](https://raw.githubusercontent.com/keylase/nvidia-patch/master/win/win10_x64/472.12/nvencodeapi64.1337) | [x86 library patch](https://raw.githubusercontent.com/keylase/nvidia-patch/master/win/win10_x64/472.12/nvencodeapi.1337) | [Driver link](https://international.download.nvidia.com/Windows/472.12/472.12-desktop-win10-win11-64bit-international-whql.exe) | +| GeForce | 472.12 Studio Driver | [x64 library patch](https://raw.githubusercontent.com/keylase/nvidia-patch/master/win/win10_x64/nsd_472.12/nvencodeapi64.1337) | [x86 library patch](https://raw.githubusercontent.com/keylase/nvidia-patch/master/win/win10_x64/nsd_472.12/nvencodeapi.1337) | [Driver link](https://international.download.nvidia.com/Windows/472.12/472.12-desktop-win10-win11-64bit-international-nsd-whql.exe) | | Product series | Version | x64 library patch | x86 library patch | Driver link | @@ -225,6 +227,7 @@ Credits to [TroubleChute channel](https://www.youtube.com/channel/UCkih2oVTbXPEp | Quadro | 465.89 | [x64 library patch](https://raw.githubusercontent.com/keylase/nvidia-patch/master/win/win10_x64/quadro_465.89/nvencodeapi64.1337) | [x86 library patch](https://raw.githubusercontent.com/keylase/nvidia-patch/master/win/win10_x64/quadro_465.89/nvencodeapi.1337) | [Driver link](https://international.download.nvidia.com/Windows/Quadro_Certified/465.89/465.89-quadro-rtx-desktop-notebook-win10-64bit-international-whql.exe) | | Quadro | 471.11 | [x64 library patch](https://raw.githubusercontent.com/keylase/nvidia-patch/master/win/win10_x64/quadro_471.11/nvencodeapi64.1337) | [x86 library patch](https://raw.githubusercontent.com/keylase/nvidia-patch/master/win/win10_x64/quadro_471.11/nvencodeapi.1337) | [Driver link](https://international.download.nvidia.com/Windows/Quadro_Certified/471.11/471.11-quadro-rtx-desktop-notebook-win10-64bit-international-whql.exe) | | Quadro | 471.68 | [x64 library patch](https://raw.githubusercontent.com/keylase/nvidia-patch/master/win/win10_x64/quadro_471.68/nvencodeapi64.1337) | [x86 library patch](https://raw.githubusercontent.com/keylase/nvidia-patch/master/win/win10_x64/quadro_471.68/nvencodeapi.1337) | [Driver link](https://international.download.nvidia.com/Windows/Quadro_Certified/471.68/471.68-quadro-rtx-desktop-notebook-win10-win11-64bit-international-whql.exe) | +| Quadro | 472.12 | [x64 library patch](https://raw.githubusercontent.com/keylase/nvidia-patch/master/win/win10_x64/quadro_472.12/nvencodeapi64.1337) | [x86 library patch](https://raw.githubusercontent.com/keylase/nvidia-patch/master/win/win10_x64/quadro_472.12/nvencodeapi.1337) | [Driver link](https://international.download.nvidia.com/Windows/Quadro_Certified/472.12/472.12-quadro-rtx-desktop-notebook-win10-win11-64bit-international-whql.exe) | ### Windows 7, Windows 8, Windows 8.1 drivers @@ -297,6 +300,7 @@ Credits to [TroubleChute channel](https://www.youtube.com/channel/UCkih2oVTbXPEp | GeForce | 471.41 | [x64 library patch](https://raw.githubusercontent.com/keylase/nvidia-patch/master/win/win7_x64/471.41/nvencodeapi64.1337) | [x86 library patch](https://raw.githubusercontent.com/keylase/nvidia-patch/master/win/win7_x64/471.41/nvencodeapi.1337) | [Driver link](https://international.download.nvidia.com/Windows/471.41/471.41-desktop-win8-win7-64bit-international-whql.exe) | | GeForce | 471.68 | [x64 library patch](https://raw.githubusercontent.com/keylase/nvidia-patch/master/win/win7_x64/471.68/nvencodeapi64.1337) | [x86 library patch](https://raw.githubusercontent.com/keylase/nvidia-patch/master/win/win7_x64/471.68/nvencodeapi.1337) | [Driver link](https://international.download.nvidia.com/Windows/471.68/471.68-desktop-win8-win7-64bit-international-whql.exe) | | GeForce | 471.96 | [x64 library patch](https://raw.githubusercontent.com/keylase/nvidia-patch/master/win/win7_x64/471.96/nvencodeapi64.1337) | [x86 library patch](https://raw.githubusercontent.com/keylase/nvidia-patch/master/win/win7_x64/471.96/nvencodeapi.1337) | [Driver link](https://international.download.nvidia.com/Windows/471.96/471.96-desktop-win8-win7-64bit-international-whql.exe) | +| GeForce | 472.12 | [x64 library patch](https://raw.githubusercontent.com/keylase/nvidia-patch/master/win/win7_x64/472.12/nvencodeapi64.1337) | [x86 library patch](https://raw.githubusercontent.com/keylase/nvidia-patch/master/win/win7_x64/472.12/nvencodeapi.1337) | [Driver link](https://international.download.nvidia.com/Windows/472.12/472.12-desktop-win8-win7-64bit-international-whql.exe) | | Product series | Version | x64 library patch | x86 library patch | Driver link | @@ -347,6 +351,7 @@ Credits to [TroubleChute channel](https://www.youtube.com/channel/UCkih2oVTbXPEp | Quadro | 471.11 | [x64 library patch](https://raw.githubusercontent.com/keylase/nvidia-patch/master/win/ws2012_x64/quadro_471.11/nvencodeapi64.1337) | [x86 library patch](https://raw.githubusercontent.com/keylase/nvidia-patch/master/win/ws2012_x64/quadro_471.11/nvencodeapi.1337) | [Driver link](https://international.download.nvidia.com/Windows/Quadro_Certified/471.11/471.11-quadro-rtx-winserv-2012r2-64bit-international-whql.exe) | | Quadro | 471.41 | [x64 library patch](https://raw.githubusercontent.com/keylase/nvidia-patch/master/win/ws2012_x64/quadro_471.41/nvencodeapi64.1337) | [x86 library patch](https://raw.githubusercontent.com/keylase/nvidia-patch/master/win/ws2012_x64/quadro_471.41/nvencodeapi.1337) | [Driver link](https://international.download.nvidia.com/Windows/Quadro_Certified/471.41/471.41-quadro-rtx-winserv-2012r2-64bit-international-whql.exe) | | Quadro | 471.68 | [x64 library patch](https://raw.githubusercontent.com/keylase/nvidia-patch/master/win/ws2012_x64/quadro_471.68/nvencodeapi64.1337) | [x86 library patch](https://raw.githubusercontent.com/keylase/nvidia-patch/master/win/ws2012_x64/quadro_471.68/nvencodeapi.1337) | [Driver link](https://international.download.nvidia.com/Windows/Quadro_Certified/471.68/471.68-quadro-rtx-winserv-2012r2-64bit-international-whql.exe) | +| Quadro | 472.12 | [x64 library patch](https://raw.githubusercontent.com/keylase/nvidia-patch/master/win/ws2012_x64/quadro_472.12/nvencodeapi64.1337) | [x86 library patch](https://raw.githubusercontent.com/keylase/nvidia-patch/master/win/ws2012_x64/quadro_472.12/nvencodeapi.1337) | [Driver link](https://international.download.nvidia.com/Windows/Quadro_Certified/472.12/472.12-quadro-rtx-winserv-2012r2-64bit-international-whql.exe) | ### Windows Server 2016, 2019 drivers @@ -382,6 +387,7 @@ Credits to [TroubleChute channel](https://www.youtube.com/channel/UCkih2oVTbXPEp | Quadro | 471.11 | [x64 library patch](https://raw.githubusercontent.com/keylase/nvidia-patch/master/win/ws2016_x64/quadro_471.11/nvencodeapi64.1337) | [x86 library patch](https://raw.githubusercontent.com/keylase/nvidia-patch/master/win/ws2016_x64/quadro_471.11/nvencodeapi.1337) | [Driver link](https://international.download.nvidia.com/Windows/Quadro_Certified/471.11/471.11-quadro-rtx-winserv-2016-2019-64bit-international-whql.exe) | | Quadro | 471.41 | [x64 library patch](https://raw.githubusercontent.com/keylase/nvidia-patch/master/win/ws2016_x64/quadro_471.41/nvencodeapi64.1337) | [x86 library patch](https://raw.githubusercontent.com/keylase/nvidia-patch/master/win/ws2016_x64/quadro_471.41/nvencodeapi.1337) | [Driver link](https://international.download.nvidia.com/Windows/Quadro_Certified/471.41/471.41-quadro-rtx-winserv-2016-2019-64bit-international-whql.exe) | | Quadro | 471.68 | [x64 library patch](https://raw.githubusercontent.com/keylase/nvidia-patch/master/win/ws2016_x64/quadro_471.68/nvencodeapi64.1337) | [x86 library patch](https://raw.githubusercontent.com/keylase/nvidia-patch/master/win/ws2016_x64/quadro_471.68/nvencodeapi.1337) | [Driver link](https://international.download.nvidia.com/Windows/Quadro_Certified/471.68/471.68-quadro-rtx-winserv-2016-2019-64bit-international-whql.exe) | +| Quadro | 472.12 | [x64 library patch](https://raw.githubusercontent.com/keylase/nvidia-patch/master/win/ws2016_x64/quadro_472.12/nvencodeapi64.1337) | [x86 library patch](https://raw.githubusercontent.com/keylase/nvidia-patch/master/win/ws2016_x64/quadro_472.12/nvencodeapi.1337) | [Driver link](https://international.download.nvidia.com/Windows/Quadro_Certified/472.12/472.12-quadro-rtx-winserv-2016-2019-64bit-international-whql.exe) | ## Benchmarks diff --git a/win/win10_x64/472.12/nvencodeapi.1337 b/win/win10_x64/472.12/nvencodeapi.1337 new file mode 100644 index 0000000..767b41a --- /dev/null +++ b/win/win10_x64/472.12/nvencodeapi.1337 @@ -0,0 +1,6 @@ +>nvencodeapi.dll +000000000003D738:89->33 +000000000003D739:45->C0 +000000000003D73A:08->89 +000000000003D73B:85->45 +000000000003D73C:C0->08 \ No newline at end of file diff --git a/win/win10_x64/472.12/nvencodeapi64.1337 b/win/win10_x64/472.12/nvencodeapi64.1337 new file mode 100644 index 0000000..3ce9749 --- /dev/null +++ b/win/win10_x64/472.12/nvencodeapi64.1337 @@ -0,0 +1,5 @@ +>nvencodeapi64.dll +00000000000437AC:8B->33 +00000000000437AD:F0->C0 +00000000000437AE:85->8B +00000000000437AF:C0->F0 \ No newline at end of file diff --git a/win/win10_x64/nsd_472.12/nvencodeapi.1337 b/win/win10_x64/nsd_472.12/nvencodeapi.1337 new file mode 100644 index 0000000..767b41a --- /dev/null +++ b/win/win10_x64/nsd_472.12/nvencodeapi.1337 @@ -0,0 +1,6 @@ +>nvencodeapi.dll +000000000003D738:89->33 +000000000003D739:45->C0 +000000000003D73A:08->89 +000000000003D73B:85->45 +000000000003D73C:C0->08 \ No newline at end of file diff --git a/win/win10_x64/nsd_472.12/nvencodeapi64.1337 b/win/win10_x64/nsd_472.12/nvencodeapi64.1337 new file mode 100644 index 0000000..3ce9749 --- /dev/null +++ b/win/win10_x64/nsd_472.12/nvencodeapi64.1337 @@ -0,0 +1,5 @@ +>nvencodeapi64.dll +00000000000437AC:8B->33 +00000000000437AD:F0->C0 +00000000000437AE:85->8B +00000000000437AF:C0->F0 \ No newline at end of file diff --git a/win/win10_x64/quadro_472.12/nvencodeapi.1337 b/win/win10_x64/quadro_472.12/nvencodeapi.1337 new file mode 100644 index 0000000..767b41a --- /dev/null +++ b/win/win10_x64/quadro_472.12/nvencodeapi.1337 @@ -0,0 +1,6 @@ +>nvencodeapi.dll +000000000003D738:89->33 +000000000003D739:45->C0 +000000000003D73A:08->89 +000000000003D73B:85->45 +000000000003D73C:C0->08 \ No newline at end of file diff --git a/win/win10_x64/quadro_472.12/nvencodeapi64.1337 b/win/win10_x64/quadro_472.12/nvencodeapi64.1337 new file mode 100644 index 0000000..3ce9749 --- /dev/null +++ b/win/win10_x64/quadro_472.12/nvencodeapi64.1337 @@ -0,0 +1,5 @@ +>nvencodeapi64.dll +00000000000437AC:8B->33 +00000000000437AD:F0->C0 +00000000000437AE:85->8B +00000000000437AF:C0->F0 \ No newline at end of file diff --git a/win/win7_x64/472.12/nvencodeapi.1337 b/win/win7_x64/472.12/nvencodeapi.1337 new file mode 100644 index 0000000..2c9ddb8 --- /dev/null +++ b/win/win7_x64/472.12/nvencodeapi.1337 @@ -0,0 +1,5 @@ +>nvencodeapi.dll +00000000000242C9:8B->33 +00000000000242CA:D8->C0 +00000000000242CB:85->8B +00000000000242CC:DB->D8 \ No newline at end of file diff --git a/win/win7_x64/472.12/nvencodeapi64.1337 b/win/win7_x64/472.12/nvencodeapi64.1337 new file mode 100644 index 0000000..95ea838 --- /dev/null +++ b/win/win7_x64/472.12/nvencodeapi64.1337 @@ -0,0 +1,5 @@ +>nvencodeapi64.dll +0000000000028A25:8B->33 +0000000000028A26:F0->C0 +0000000000028A27:85->8B +0000000000028A28:C0->F0 \ No newline at end of file diff --git a/win/ws2012_x64/quadro_472.12/nvencodeapi.1337 b/win/ws2012_x64/quadro_472.12/nvencodeapi.1337 new file mode 100644 index 0000000..2c9ddb8 --- /dev/null +++ b/win/ws2012_x64/quadro_472.12/nvencodeapi.1337 @@ -0,0 +1,5 @@ +>nvencodeapi.dll +00000000000242C9:8B->33 +00000000000242CA:D8->C0 +00000000000242CB:85->8B +00000000000242CC:DB->D8 \ No newline at end of file diff --git a/win/ws2012_x64/quadro_472.12/nvencodeapi64.1337 b/win/ws2012_x64/quadro_472.12/nvencodeapi64.1337 new file mode 100644 index 0000000..95ea838 --- /dev/null +++ b/win/ws2012_x64/quadro_472.12/nvencodeapi64.1337 @@ -0,0 +1,5 @@ +>nvencodeapi64.dll +0000000000028A25:8B->33 +0000000000028A26:F0->C0 +0000000000028A27:85->8B +0000000000028A28:C0->F0 \ No newline at end of file diff --git a/win/ws2016_x64/quadro_472.12/nvencodeapi.1337 b/win/ws2016_x64/quadro_472.12/nvencodeapi.1337 new file mode 100644 index 0000000..767b41a --- /dev/null +++ b/win/ws2016_x64/quadro_472.12/nvencodeapi.1337 @@ -0,0 +1,6 @@ +>nvencodeapi.dll +000000000003D738:89->33 +000000000003D739:45->C0 +000000000003D73A:08->89 +000000000003D73B:85->45 +000000000003D73C:C0->08 \ No newline at end of file diff --git a/win/ws2016_x64/quadro_472.12/nvencodeapi64.1337 b/win/ws2016_x64/quadro_472.12/nvencodeapi64.1337 new file mode 100644 index 0000000..3ce9749 --- /dev/null +++ b/win/ws2016_x64/quadro_472.12/nvencodeapi64.1337 @@ -0,0 +1,5 @@ +>nvencodeapi64.dll +00000000000437AC:8B->33 +00000000000437AD:F0->C0 +00000000000437AE:85->8B +00000000000437AF:C0->F0 \ No newline at end of file