Merge pull request #273 from Snawoot/ipfs_mirror

IPFS mirror
This commit is contained in:
Snawoot 2020-05-30 22:04:10 +03:00 committed by GitHub
commit 948379b708
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 438 additions and 384 deletions

126
README.md
View File

@ -3,9 +3,15 @@ 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-440.82-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-440.82-brightgreen.svg)
NVENC patch (`patch.sh`) removes restriction on maximum number of simultaneous NVENC video encoding sessions imposed by Nvidia to consumer-grade GPUs. ---
NvFBC patch (`patch-fbc.sh`) allows to use NvFBC on consumer-grade GPUs. It should be applied same way as NVENC `patch.sh`, except you have to use `patch-fbc.sh` instead. IPFS mirror: [https://ipfs.io/ipns/QmYTEwv2GjQhtdN9bDfpLfQrVD7YLb1Sbh8igX8cEe9hHF/](https://ipfs.io/ipns/QmYTEwv2GjQhtdN9bDfpLfQrVD7YLb1Sbh8igX8cEe9hHF/)
---
[NVENC patch](patch.sh) removes restriction on maximum number of simultaneous NVENC video encoding sessions imposed by Nvidia to consumer-grade GPUs.
[NvFBC patch](patch-fbc.sh) allows to use NvFBC on consumer-grade GPUs. It should be applied same way as NVENC `patch.sh`, except you have to use `patch-fbc.sh` instead.
Main target operating system is **GNU/Linux**, but for **Windows** support see [**win** (clickable)](win). Main target operating system is **GNU/Linux**, but for **Windows** support see [**win** (clickable)](win).
@ -19,64 +25,64 @@ Requirements:
| Version | NVENC patch | NVFBC patch | Driver link | | Version | NVENC patch | NVFBC patch | Driver link |
| :--- | :---: | :---: | ---: | | :--- | :---: | :---: | ---: |
| 375.39 | :heavy_check_mark: | :x: | [Driver link](https://download.nvidia.com/XFree86/Linux-x86_64/375.39/NVIDIA-Linux-x86_64-375.39.run) | | 375.39 | YES | NO | [Driver link](https://download.nvidia.com/XFree86/Linux-x86_64/375.39/NVIDIA-Linux-x86_64-375.39.run) |
| 390.77 | :heavy_check_mark: | :x: | [Driver link](https://download.nvidia.com/XFree86/Linux-x86_64/390.77/NVIDIA-Linux-x86_64-390.77.run) | | 390.77 | YES | NO | [Driver link](https://download.nvidia.com/XFree86/Linux-x86_64/390.77/NVIDIA-Linux-x86_64-390.77.run) |
| 390.87 | :heavy_check_mark: | :x: | [Driver link](https://download.nvidia.com/XFree86/Linux-x86_64/390.87/NVIDIA-Linux-x86_64-390.87.run) | | 390.87 | YES | NO | [Driver link](https://download.nvidia.com/XFree86/Linux-x86_64/390.87/NVIDIA-Linux-x86_64-390.87.run) |
| 396.24 | :heavy_check_mark: | :x: | [Driver link](https://download.nvidia.com/XFree86/Linux-x86_64/396.24/NVIDIA-Linux-x86_64-396.24.run) | | 396.24 | YES | NO | [Driver link](https://download.nvidia.com/XFree86/Linux-x86_64/396.24/NVIDIA-Linux-x86_64-396.24.run) |
| 396.26 | :heavy_check_mark: | :x: | [Driver link](https://international.download.nvidia.com/tesla/396.26/NVIDIA-Linux-x86_64-396.26.run) | | 396.26 | YES | NO | [Driver link](https://international.download.nvidia.com/tesla/396.26/NVIDIA-Linux-x86_64-396.26.run) |
| 396.37 | :heavy_check_mark: | :x: | [Driver link](https://international.download.nvidia.com/tesla/396.37/NVIDIA-Linux-x86_64-396.37.run) | | 396.37 | YES | NO | [Driver link](https://international.download.nvidia.com/tesla/396.37/NVIDIA-Linux-x86_64-396.37.run) |
| 396.54 | :heavy_check_mark: | :x: | [Driver link](https://download.nvidia.com/XFree86/Linux-x86_64/396.54/NVIDIA-Linux-x86_64-396.54.run) | | 396.54 | YES | NO | [Driver link](https://download.nvidia.com/XFree86/Linux-x86_64/396.54/NVIDIA-Linux-x86_64-396.54.run) |
| 410.48 | :heavy_check_mark: | :x: | | | 410.48 | YES | NO | |
| 410.57 | :heavy_check_mark: | :x: | [Driver link](https://download.nvidia.com/XFree86/Linux-x86_64/410.57/NVIDIA-Linux-x86_64-410.57.run) | | 410.57 | YES | NO | [Driver link](https://download.nvidia.com/XFree86/Linux-x86_64/410.57/NVIDIA-Linux-x86_64-410.57.run) |
| 410.73 | :heavy_check_mark: | :x: | [Driver link](https://download.nvidia.com/XFree86/Linux-x86_64/410.73/NVIDIA-Linux-x86_64-410.73.run) | | 410.73 | YES | NO | [Driver link](https://download.nvidia.com/XFree86/Linux-x86_64/410.73/NVIDIA-Linux-x86_64-410.73.run) |
| 410.78 | :heavy_check_mark: | :x: | [Driver link](https://download.nvidia.com/XFree86/Linux-x86_64/410.78/NVIDIA-Linux-x86_64-410.78.run) | | 410.78 | YES | NO | [Driver link](https://download.nvidia.com/XFree86/Linux-x86_64/410.78/NVIDIA-Linux-x86_64-410.78.run) |
| 410.79 | :heavy_check_mark: | :x: | [Driver link](https://international.download.nvidia.com/tesla/410.79/NVIDIA-Linux-x86_64-410.79.run) | | 410.79 | YES | NO | [Driver link](https://international.download.nvidia.com/tesla/410.79/NVIDIA-Linux-x86_64-410.79.run) |
| 410.93 | :heavy_check_mark: | :x: | [Driver link](https://download.nvidia.com/XFree86/Linux-x86_64/410.93/NVIDIA-Linux-x86_64-410.93.run) | | 410.93 | YES | NO | [Driver link](https://download.nvidia.com/XFree86/Linux-x86_64/410.93/NVIDIA-Linux-x86_64-410.93.run) |
| 410.104 | :heavy_check_mark: | :x: | [Driver link](https://international.download.nvidia.com/XFree86/Linux-x86_64/410.104/NVIDIA-Linux-x86_64-410.104.run) | | 410.104 | YES | NO | [Driver link](https://international.download.nvidia.com/XFree86/Linux-x86_64/410.104/NVIDIA-Linux-x86_64-410.104.run) |
| 415.18 | :heavy_check_mark: | :x: | [Driver link](https://download.nvidia.com/XFree86/Linux-x86_64/415.18/NVIDIA-Linux-x86_64-415.18.run) | | 415.18 | YES | NO | [Driver link](https://download.nvidia.com/XFree86/Linux-x86_64/415.18/NVIDIA-Linux-x86_64-415.18.run) |
| 415.25 | :heavy_check_mark: | :x: | [Driver link](https://download.nvidia.com/XFree86/Linux-x86_64/415.25/NVIDIA-Linux-x86_64-415.25.run) | | 415.25 | YES | NO | [Driver link](https://download.nvidia.com/XFree86/Linux-x86_64/415.25/NVIDIA-Linux-x86_64-415.25.run) |
| 415.27 | :heavy_check_mark: | :x: | [Driver link](https://download.nvidia.com/XFree86/Linux-x86_64/415.27/NVIDIA-Linux-x86_64-415.27.run) | | 415.27 | YES | NO | [Driver link](https://download.nvidia.com/XFree86/Linux-x86_64/415.27/NVIDIA-Linux-x86_64-415.27.run) |
| 418.30 | :heavy_check_mark: | :x: | [Driver link](https://download.nvidia.com/XFree86/Linux-x86_64/418.30/NVIDIA-Linux-x86_64-418.30.run) | | 418.30 | YES | NO | [Driver link](https://download.nvidia.com/XFree86/Linux-x86_64/418.30/NVIDIA-Linux-x86_64-418.30.run) |
| 418.43 | :heavy_check_mark: | :x: | [Driver link](https://download.nvidia.com/XFree86/Linux-x86_64/418.43/NVIDIA-Linux-x86_64-418.43.run) | | 418.43 | YES | NO | [Driver link](https://download.nvidia.com/XFree86/Linux-x86_64/418.43/NVIDIA-Linux-x86_64-418.43.run) |
| 418.56 | :heavy_check_mark: | :x: | [Driver link](https://download.nvidia.com/XFree86/Linux-x86_64/418.56/NVIDIA-Linux-x86_64-418.56.run) | | 418.56 | YES | NO | [Driver link](https://download.nvidia.com/XFree86/Linux-x86_64/418.56/NVIDIA-Linux-x86_64-418.56.run) |
| 418.67 | :heavy_check_mark: | :x: | [Driver link](https://international.download.nvidia.com/tesla/418.67/NVIDIA-Linux-x86_64-418.67.run) | | 418.67 | YES | NO | [Driver link](https://international.download.nvidia.com/tesla/418.67/NVIDIA-Linux-x86_64-418.67.run) |
| 418.74 | :heavy_check_mark: | :x: | [Driver link](https://international.download.nvidia.com/XFree86/Linux-x86_64/418.74/NVIDIA-Linux-x86_64-418.74.run) | | 418.74 | YES | NO | [Driver link](https://international.download.nvidia.com/XFree86/Linux-x86_64/418.74/NVIDIA-Linux-x86_64-418.74.run) |
| 418.87.00 | :heavy_check_mark: | :x: | [Driver link](https://international.download.nvidia.com/tesla/418.87/NVIDIA-Linux-x86_64-418.87.00.run) | | 418.87.00 | YES | NO | [Driver link](https://international.download.nvidia.com/tesla/418.87/NVIDIA-Linux-x86_64-418.87.00.run) |
| 418.87.01 | :heavy_check_mark: | :x: | [Driver link](https://international.download.nvidia.com/tesla/418.87/NVIDIA-Linux-x86_64-418.87.01.run) | | 418.87.01 | YES | NO | [Driver link](https://international.download.nvidia.com/tesla/418.87/NVIDIA-Linux-x86_64-418.87.01.run) |
| 418.88 | :heavy_check_mark: | :x: | [Driver link](https://international.download.nvidia.com/XFree86/Linux-x86_64/418.88/NVIDIA-Linux-x86_64-418.88.run) | | 418.88 | YES | NO | [Driver link](https://international.download.nvidia.com/XFree86/Linux-x86_64/418.88/NVIDIA-Linux-x86_64-418.88.run) |
| 418.113 | :heavy_check_mark: | :x: | [Driver link](https://international.download.nvidia.com/XFree86/Linux-x86_64/418.113/NVIDIA-Linux-x86_64-418.113.run) | | 418.113 | YES | NO | [Driver link](https://international.download.nvidia.com/XFree86/Linux-x86_64/418.113/NVIDIA-Linux-x86_64-418.113.run) |
| 430.09 | :heavy_check_mark: | :x: | [Driver link](https://international.download.nvidia.com/XFree86/Linux-x86_64/430.09/NVIDIA-Linux-x86_64-430.09.run) | | 430.09 | YES | NO | [Driver link](https://international.download.nvidia.com/XFree86/Linux-x86_64/430.09/NVIDIA-Linux-x86_64-430.09.run) |
| 430.14 | :heavy_check_mark: | :x: | [Driver link](https://international.download.nvidia.com/XFree86/Linux-x86_64/430.14/NVIDIA-Linux-x86_64-430.14.run) | | 430.14 | YES | NO | [Driver link](https://international.download.nvidia.com/XFree86/Linux-x86_64/430.14/NVIDIA-Linux-x86_64-430.14.run) |
| 430.26 | :heavy_check_mark: | :x: | [Driver link](https://international.download.nvidia.com/XFree86/Linux-x86_64/430.26/NVIDIA-Linux-x86_64-430.26.run) | | 430.26 | YES | NO | [Driver link](https://international.download.nvidia.com/XFree86/Linux-x86_64/430.26/NVIDIA-Linux-x86_64-430.26.run) |
| 430.34 | :heavy_check_mark: | :x: | [Driver link](https://international.download.nvidia.com/XFree86/Linux-x86_64/430.34/NVIDIA-Linux-x86_64-430.34.run) | | 430.34 | YES | NO | [Driver link](https://international.download.nvidia.com/XFree86/Linux-x86_64/430.34/NVIDIA-Linux-x86_64-430.34.run) |
| 430.40 | :heavy_check_mark: | :x: | [Driver link](https://international.download.nvidia.com/XFree86/Linux-x86_64/430.40/NVIDIA-Linux-x86_64-430.40.run) | | 430.40 | YES | NO | [Driver link](https://international.download.nvidia.com/XFree86/Linux-x86_64/430.40/NVIDIA-Linux-x86_64-430.40.run) |
| 430.50 | :heavy_check_mark: | :x: | [Driver link](https://international.download.nvidia.com/XFree86/Linux-x86_64/430.50/NVIDIA-Linux-x86_64-430.50.run) | | 430.50 | YES | NO | [Driver link](https://international.download.nvidia.com/XFree86/Linux-x86_64/430.50/NVIDIA-Linux-x86_64-430.50.run) |
| 430.64 | :heavy_check_mark: | :x: | [Driver link](https://international.download.nvidia.com/XFree86/Linux-x86_64/430.64/NVIDIA-Linux-x86_64-430.64.run) | | 430.64 | YES | NO | [Driver link](https://international.download.nvidia.com/XFree86/Linux-x86_64/430.64/NVIDIA-Linux-x86_64-430.64.run) |
| 435.17 | :heavy_check_mark: | :x: | [Driver link](https://international.download.nvidia.com/XFree86/Linux-x86_64/435.17/NVIDIA-Linux-x86_64-435.17.run) | | 435.17 | YES | NO | [Driver link](https://international.download.nvidia.com/XFree86/Linux-x86_64/435.17/NVIDIA-Linux-x86_64-435.17.run) |
| 435.21 | :heavy_check_mark: | :x: | [Driver link](https://international.download.nvidia.com/XFree86/Linux-x86_64/435.21/NVIDIA-Linux-x86_64-435.21.run) | | 435.21 | YES | NO | [Driver link](https://international.download.nvidia.com/XFree86/Linux-x86_64/435.21/NVIDIA-Linux-x86_64-435.21.run) |
| 435.27.08 | :heavy_check_mark: | :heavy_check_mark: | | | 435.27.08 | YES | YES | |
| 440.26 | :heavy_check_mark: | :heavy_check_mark: | [Driver link](https://international.download.nvidia.com/XFree86/Linux-x86_64/440.26/NVIDIA-Linux-x86_64-440.26.run) | | 440.26 | YES | YES | [Driver link](https://international.download.nvidia.com/XFree86/Linux-x86_64/440.26/NVIDIA-Linux-x86_64-440.26.run) |
| 440.31 | :heavy_check_mark: | :heavy_check_mark: | [Driver link](https://international.download.nvidia.com/XFree86/Linux-x86_64/440.31/NVIDIA-Linux-x86_64-440.31.run) | | 440.31 | YES | YES | [Driver link](https://international.download.nvidia.com/XFree86/Linux-x86_64/440.31/NVIDIA-Linux-x86_64-440.31.run) |
| 440.33.01 | :heavy_check_mark: | :heavy_check_mark: | [Driver link](https://international.download.nvidia.com/tesla/440.33.01/NVIDIA-Linux-x86_64-440.33.01.run) | | 440.33.01 | YES | YES | [Driver link](https://international.download.nvidia.com/tesla/440.33.01/NVIDIA-Linux-x86_64-440.33.01.run) |
| 440.36 | :heavy_check_mark: | :heavy_check_mark: | [Driver link](https://international.download.nvidia.com/XFree86/Linux-x86_64/440.36/NVIDIA-Linux-x86_64-440.36.run) | | 440.36 | YES | YES | [Driver link](https://international.download.nvidia.com/XFree86/Linux-x86_64/440.36/NVIDIA-Linux-x86_64-440.36.run) |
| 440.43.01 | :heavy_check_mark: | :heavy_check_mark: | | | 440.43.01 | YES | YES | |
| 440.44 | :heavy_check_mark: | :heavy_check_mark: | [Driver link](https://international.download.nvidia.com/XFree86/Linux-x86_64/440.44/NVIDIA-Linux-x86_64-440.44.run) | | 440.44 | YES | YES | [Driver link](https://international.download.nvidia.com/XFree86/Linux-x86_64/440.44/NVIDIA-Linux-x86_64-440.44.run) |
| 440.48.02 | :heavy_check_mark: | :heavy_check_mark: | | | 440.48.02 | YES | YES | |
| 440.58.01 | :heavy_check_mark: | :heavy_check_mark: | | | 440.58.01 | YES | YES | |
| 440.58.02 | :heavy_check_mark: | :heavy_check_mark: | | | 440.58.02 | YES | YES | |
| 440.59 | :heavy_check_mark: | :heavy_check_mark: | [Driver link](https://international.download.nvidia.com/XFree86/Linux-x86_64/440.59/NVIDIA-Linux-x86_64-440.59.run) | | 440.59 | YES | YES | [Driver link](https://international.download.nvidia.com/XFree86/Linux-x86_64/440.59/NVIDIA-Linux-x86_64-440.59.run) |
| 440.64 | :heavy_check_mark: | :heavy_check_mark: | [Driver link](https://international.download.nvidia.com/XFree86/Linux-x86_64/440.64/NVIDIA-Linux-x86_64-440.64.run) | | 440.64 | YES | YES | [Driver link](https://international.download.nvidia.com/XFree86/Linux-x86_64/440.64/NVIDIA-Linux-x86_64-440.64.run) |
| 440.64.00 | :heavy_check_mark: | :heavy_check_mark: | [Driver link](https://international.download.nvidia.com/tesla/440.64.00/NVIDIA-Linux-x86_64-440.64.00.run) | | 440.64.00 | YES | YES | [Driver link](https://international.download.nvidia.com/tesla/440.64.00/NVIDIA-Linux-x86_64-440.64.00.run) |
| 440.66.02 | :heavy_check_mark: | :heavy_check_mark: | | | 440.66.02 | YES | YES | |
| 440.66.03 | :heavy_check_mark: | :heavy_check_mark: | | | 440.66.03 | YES | YES | |
| 440.66.04 | :heavy_check_mark: | :heavy_check_mark: | | | 440.66.04 | YES | YES | |
| 440.66.08 | :heavy_check_mark: | :heavy_check_mark: | | | 440.66.08 | YES | YES | |
| 440.66.09 | :heavy_check_mark: | :heavy_check_mark: | | | 440.66.09 | YES | YES | |
| 440.66.11 | :heavy_check_mark: | :heavy_check_mark: | | | 440.66.11 | YES | YES | |
| 440.66.12 | :heavy_check_mark: | :heavy_check_mark: | | | 440.66.12 | YES | YES | |
| 440.66.14 | :heavy_check_mark: | :heavy_check_mark: | | | 440.66.14 | YES | YES | |
| 440.66.15 | :heavy_check_mark: | :heavy_check_mark: | | | 440.66.15 | YES | YES | |
| 440.82 | :heavy_check_mark: | :heavy_check_mark: | [Driver link](https://international.download.nvidia.com/XFree86/Linux-x86_64/440.82/NVIDIA-Linux-x86_64-440.82.run) | | 440.82 | YES | YES | [Driver link](https://international.download.nvidia.com/XFree86/Linux-x86_64/440.82/NVIDIA-Linux-x86_64-440.82.run) |
## Synopsis ## Synopsis

File diff suppressed because it is too large Load Diff

View File

@ -9,7 +9,6 @@ from string import Template
from itertools import groupby from itertools import groupby
from functools import partial from functools import partial
import urllib.request import urllib.request
import urllib.parse
from constants import OSKind, Product, WinSeries, DATAFILE_PATH, \ from constants import OSKind, Product, WinSeries, DATAFILE_PATH, \
DRIVER_URL_TEMPLATE, DRIVER_DIR_PREFIX, BASE_PATH, REPO_BASE DRIVER_URL_TEMPLATE, DRIVER_DIR_PREFIX, BASE_PATH, REPO_BASE
@ -54,13 +53,11 @@ def parse_args():
default=WinSeries.win10, default=WinSeries.win10,
help="Windows series") help="Windows series")
win_opts.add_argument("--patch32", win_opts.add_argument("--patch32",
default="https://raw.githubusercontent.com/keylase/" default="${winseries}_x64/"
"nvidia-patch/master/win/${winseries}_x64/"
"${drvprefix}${version}/nvencodeapi.1337", "${drvprefix}${version}/nvencodeapi.1337",
help="template for Windows 32bit patch URL") help="template for Windows 32bit patch URL")
win_opts.add_argument("--patch64", win_opts.add_argument("--patch64",
default="https://raw.githubusercontent.com/keylase/" default="${winseries}_x64/"
"nvidia-patch/master/win/${winseries}_x64/"
"${drvprefix}${version}/nvencodeapi64.1337", "${drvprefix}${version}/nvencodeapi64.1337",
help="template for Windows 64bit patch URL") help="template for Windows 64bit patch URL")
win_opts.add_argument("--skip-patch-check", win_opts.add_argument("--skip-patch-check",
@ -97,30 +94,16 @@ def validate_url(url):
def validate_patch(patch64, patch32): def validate_patch(patch64, patch32):
wc_base = os.path.abspath(os.path.join(BASE_PATH, "..", "..")) wc_base = os.path.abspath(os.path.join(BASE_PATH, "..", ".."))
base_parse = urllib.parse.urlsplit(REPO_BASE, scheme='http') p64_filepath = os.path.join(wc_base, patch64)
p64_parse = urllib.parse.urlsplit(patch64, scheme='http') p32_filepath = os.path.join(wc_base, patch32)
p32_parse = urllib.parse.urlsplit(patch32, scheme='http')
if not (p64_parse[0] == p32_parse[0] == base_parse[0]):
raise Exception("URL scheme doesn't match repo base URL scheme")
if not (p64_parse[1] == p32_parse[1] == base_parse[1]):
raise Exception("URL network location doesn't match repo base URL network location")
if posixpath.commonpath((base_parse[2], p64_parse[2], p32_parse[2])) != \
posixpath.commonpath((base_parse[2],)):
raise Exception("URL is not subpath of repo base path")
p64_posix_relpath = posixpath.relpath(p64_parse[2], base_parse[2])
p32_posix_relpath = posixpath.relpath(p32_parse[2], base_parse[2])
p64_comp = posixpath_components(p64_posix_relpath)
p32_comp = posixpath_components(p32_posix_relpath)
p64_filepath = os.path.join(wc_base, *p64_comp)
p32_filepath = os.path.join(wc_base, *p32_comp)
if not os.path.exists(p64_filepath): if not os.path.exists(p64_filepath):
raise Exception("File %s not found!" % p64_filepath) raise Exception("File %s not found!" % patch64_filepath)
if not os.path.exists(p32_filepath): if not os.path.exists(p32_filepath):
raise Exception("File %s not found!" % p32_filepath) raise Exception("File %s not found!" % patch32_filepath)
if os.path.getsize(p64_filepath) == 0: if os.path.getsize(p64_filepath) == 0:
raise Exception("File %s empty!" % p64_filepath) raise Exception("File %s empty!" % patch64_filepath)
if os.path.exists(p32_filepath) == 0: if os.path.exists(p32_filepath) == 0:
raise Exception("File %s empty!" % p32_filepath) raise Exception("File %s empty!" % patch32_filepath)
def validate_unique(drivers, new_driver, kf): def validate_unique(drivers, new_driver, kf):
if find_driver(drivers, kf(new_driver), kf) is not None: if find_driver(drivers, kf(new_driver), kf) is not None:

View File

@ -56,4 +56,4 @@ DRIVER_DIR_PREFIX = {
(Product.Quadro, ''): 'quadro_', (Product.Quadro, ''): 'quadro_',
} }
REPO_BASE = "https://raw.githubusercontent.com/keylase/nvidia-patch/master" REPO_BASE = "https://raw.githubusercontent.com/keylase/nvidia-patch/master/win/"

View File

@ -1,11 +1,12 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
import argparse
import json import json
import os.path import os.path
from itertools import groupby from itertools import groupby
from constants import Product, WinSeries, DATAFILE_PATH, LINUX_README_PATH, \ from constants import Product, WinSeries, DATAFILE_PATH, LINUX_README_PATH, \
WINDOWS_README_PATH, ENCODING WINDOWS_README_PATH, ENCODING, REPO_BASE
from utils import template, find_driver, linux_driver_key, windows_driver_key, \ from utils import template, find_driver, linux_driver_key, windows_driver_key, \
version_key_fun version_key_fun
@ -53,7 +54,7 @@ def linux_readme(data):
example_driver_version=example_driver['version'], example_driver_version=example_driver['version'],
example_driver_file=os.path.basename(example_driver_url)) example_driver_file=os.path.basename(example_driver_url))
def windows_driver_rows(drivers): def windows_driver_rows(drivers, repo_base):
driver_row_tmpl = template('windows_driver_row.tmpl', True) driver_row_tmpl = template('windows_driver_row.tmpl', True)
markdown_link_tmpl = template('markdown_link.tmpl', True) markdown_link_tmpl = template('markdown_link.tmpl', True)
def row_gen(): def row_gen():
@ -62,8 +63,8 @@ def windows_driver_rows(drivers):
variant = d.get('variant') variant = d.get('variant')
version_variant = d['version'] version_variant = d['version']
version_variant += (" " + variant) if variant else '' version_variant += (" " + variant) if variant else ''
patch64_url = d.get('patch64_url') patch64_url = repo_base + d.get('patch64_url')
patch32_url = d.get('patch32_url') patch32_url = repo_base + d.get('patch32_url')
driver_url = d.get('driver_url') driver_url = d.get('driver_url')
patch64_link = markdown_link_tmpl.substitute(text="x64 library patch", patch64_link = markdown_link_tmpl.substitute(text="x64 library patch",
url=patch64_url) if patch64_url else '' url=patch64_url) if patch64_url else ''
@ -78,28 +79,28 @@ def windows_driver_rows(drivers):
driver_link=driver_link) driver_link=driver_link)
return "\n".join(row_gen()) return "\n".join(row_gen())
def windows_product_sections(drivers): def windows_product_sections(drivers, repo_base):
product_section_tmpl = template('windows_product_section.tmpl') product_section_tmpl = template('windows_product_section.tmpl')
def section_gen(): def section_gen():
for k, g in groupby(drivers, lambda d: Product[d['product']]): for k, g in groupby(drivers, lambda d: Product[d['product']]):
driver_rows = windows_driver_rows(g) driver_rows = windows_driver_rows(g, repo_base)
yield product_section_tmpl.substitute(driver_rows=driver_rows) yield product_section_tmpl.substitute(driver_rows=driver_rows)
return '\n\n'.join(section_gen()) return '\n\n'.join(section_gen())
def windows_driver_table(drivers): def windows_driver_table(drivers, repo_base):
os_section_tmpl = template('windows_os_section.tmpl', True) os_section_tmpl = template('windows_os_section.tmpl', True)
def section_gen(): def section_gen():
for k, g in groupby(drivers, lambda d: WinSeries[d['os']]): for k, g in groupby(drivers, lambda d: WinSeries[d['os']]):
os = WIN_SERIES_LABELS[k] os = WIN_SERIES_LABELS[k]
product_sections = windows_product_sections(g) product_sections = windows_product_sections(g, repo_base)
yield os_section_tmpl.substitute(os=os, yield os_section_tmpl.substitute(os=os,
product_sections=product_sections) product_sections=product_sections)
return '\n\n'.join(section_gen()) return '\n\n'.join(section_gen())
def windows_readme(data): def windows_readme(data, repo_base):
master_tmpl = template('windows_readme_master.tmpl') master_tmpl = template('windows_readme_master.tmpl')
drivers = sorted(data['drivers'], key=windows_driver_key) drivers = sorted(data['drivers'], key=windows_driver_key)
version_table = windows_driver_table(drivers) version_table = windows_driver_table(drivers, repo_base)
geforce_drivers = filter(lambda d: Product[d['product']] is Product.GeForce, drivers) geforce_drivers = filter(lambda d: Product[d['product']] is Product.GeForce, drivers)
quadro_drivers = filter(lambda d: Product[d['product']] is Product.Quadro, drivers) quadro_drivers = filter(lambda d: Product[d['product']] is Product.Quadro, drivers)
latest_geforce_version = max(geforce_drivers, default='xxx.xx', latest_geforce_version = max(geforce_drivers, default='xxx.xx',
@ -110,13 +111,25 @@ def windows_readme(data):
latest_geforce_version=latest_geforce_version, latest_geforce_version=latest_geforce_version,
latest_quadro_version=latest_quadro_version) latest_quadro_version=latest_quadro_version)
def parse_args():
parser = argparse.ArgumentParser(
description="Generates markdown pages from repo data",
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
parser.add_argument("-R", "--repo-root",
help="repository web root URL",
default=REPO_BASE)
args = parser.parse_args()
return args
def main(): def main():
args = parse_args()
with open(DATAFILE_PATH) as data_file: with open(DATAFILE_PATH) as data_file:
data = json.load(data_file) data = json.load(data_file)
res = linux_readme(data['linux']['x86_64']) res = linux_readme(data['linux']['x86_64'])
with open(LINUX_README_PATH, 'w', encoding=ENCODING) as out: with open(LINUX_README_PATH, 'w', encoding=ENCODING) as out:
out.write(res) out.write(res)
res = windows_readme(data['win']['x86_64']) res = windows_readme(data['win']['x86_64'], args.repo_root)
with open(WINDOWS_README_PATH, 'w', encoding=ENCODING) as out: with open(WINDOWS_README_PATH, 'w', encoding=ENCODING) as out:
out.write(res) out.write(res)

View File

@ -3,9 +3,15 @@ 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-${latest_version}-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-${latest_version}-brightgreen.svg)
NVENC patch (`patch.sh`) removes restriction on maximum number of simultaneous NVENC video encoding sessions imposed by Nvidia to consumer-grade GPUs. ---
NvFBC patch (`patch-fbc.sh`) allows to use NvFBC on consumer-grade GPUs. It should be applied same way as NVENC `patch.sh`, except you have to use `patch-fbc.sh` instead. IPFS mirror: [https://ipfs.io/ipns/QmYTEwv2GjQhtdN9bDfpLfQrVD7YLb1Sbh8igX8cEe9hHF/](https://ipfs.io/ipns/QmYTEwv2GjQhtdN9bDfpLfQrVD7YLb1Sbh8igX8cEe9hHF/)
---
[NVENC patch](patch.sh) removes restriction on maximum number of simultaneous NVENC video encoding sessions imposed by Nvidia to consumer-grade GPUs.
[NvFBC patch](patch-fbc.sh) allows to use NvFBC on consumer-grade GPUs. It should be applied same way as NVENC `patch.sh`, except you have to use `patch-fbc.sh` instead.
Main target operating system is **GNU/Linux**, but for **Windows** support see [**win** (clickable)](win). Main target operating system is **GNU/Linux**, but for **Windows** support see [**win** (clickable)](win).

View File

@ -1 +1 @@
:heavy_check_mark: YES

View File

@ -3,6 +3,12 @@ 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-${latest_geforce_version}-brightgreen.svg) ![Latest Quadro version](https://img.shields.io/badge/latest%20Quadro%20version-${latest_quadro_version}-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-${latest_geforce_version}-brightgreen.svg) ![Latest Quadro version](https://img.shields.io/badge/latest%20Quadro%20version-${latest_quadro_version}-blue.svg)
---
IPFS mirror: [https://ipfs.io/ipns/QmYTEwv2GjQhtdN9bDfpLfQrVD7YLb1Sbh8igX8cEe9hHF/win/](https://ipfs.io/ipns/QmYTEwv2GjQhtdN9bDfpLfQrVD7YLb1Sbh8igX8cEe9hHF/win/)
---
NVENC patch removes restriction on maximum number of simultaneous NVENC video encoding sessions imposed by Nvidia to consumer-grade GPUs. NVENC patch removes restriction on maximum number of simultaneous NVENC video encoding sessions imposed by Nvidia to consumer-grade GPUs.
NvFBC patch (wrapper) allows to use NvFBC on consumer-grade GPUs. See [**nvfbcwrp** (clickable)](nvfbcwrp) directory for details. NvFBC patch (wrapper) allows to use NvFBC on consumer-grade GPUs. See [**nvfbcwrp** (clickable)](nvfbcwrp) directory for details.
@ -25,8 +31,8 @@ Requirements:
## NVENC Patch Step-by-Step Guide ## NVENC Patch Step-by-Step Guide
1. Download and install latest Nvidia driver supported by this patch. 1. Download and install latest Nvidia driver supported by this patch.
2. Download latest [Win\_1337\_Apply\_Patch tool](https://github.com/Deltafox79/Win_1337_Apply_Patch/releases/latest). 2. Download latest [Win\_1337\_Apply\_Patch tool](https://github.com/Deltafox79/Win_1337_Apply_Patch/releases/latest) ([IPFS mirror](https://ipfs.io/ipfs/QmXHqNBPtmoX8g5rzg6vNJ9yd275kQtDWuDtVoU4QPfWbu/Win_1337_Apply_Patch_v1.9_By_DFoX.rar)).
3. Save patch(es) corresponding to your system, driver and product version from [Version Table](#version-table) using direct link to the patch (Right Click -> Save as...). 3. Save patch(es) corresponding to your system, driver and product version from [Version Table](#version-table) using direct link to the patch (Right Click -> "Save as\.\.\.")
- *Alternatively you may checkout repo using git or download it as ZIP archive and then locate corresponding .1337 patch file in `win` directory.* - *Alternatively you may checkout repo using git or download it as ZIP archive and then locate corresponding .1337 patch file in `win` directory.*
4. Apply x64 library patch to corresponding file in `%WINDIR%\system32\` with the Win\_1337\_Apply\_Patch tool. 4. Apply x64 library patch to corresponding file in `%WINDIR%\system32\` with the Win\_1337\_Apply\_Patch tool.
- *If patching fails, close all applications using nvencodeapi64.dll, such as OBS Studio, Plex or Discord.* - *If patching fails, close all applications using nvencodeapi64.dll, such as OBS Studio, Plex or Discord.*
@ -35,7 +41,7 @@ Requirements:
**Example:** for 64bit Windows 10 running driver version $latest_geforce_version, use `win10_x64/$latest_geforce_version/nvencodeapi64.1337` against `C:\WINDOWS\system32\nvencodeapi64.dll` **and** `win10_x64/$latest_geforce_version/nvencodeapi.1337` against `C:\WINDOWS\SysWOW64\nvencodeapi.dll`. **Example:** for 64bit Windows 10 running driver version $latest_geforce_version, use `win10_x64/$latest_geforce_version/nvencodeapi64.1337` against `C:\WINDOWS\system32\nvencodeapi64.dll` **and** `win10_x64/$latest_geforce_version/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. 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.
A video tutorial is also available. Credits to designator2009. (*Covers older patches. Now we probably don't need to autorun executable if x86 library patch applied*) A video tutorial is also available. Credits to designator2009. (*Covers older patches. Now we probably don't need to autorun executable if x86 library patch applied*)

View File

@ -0,0 +1,34 @@
#!/usr/bin/env bash
set -euo pipefail
(( $# == 1 )) || {
>&2 echo "Usage: $0 <export dir>"
exit 2
}
mkdir -p "$1"
EXPORT_DIR="$(realpath "$1")"
REPO_DIR="$(realpath "$(dirname "${BASH_SOURCE[0]}")/../..")"
CONVERTER_PATH="${CONVERTER_PATH:-$REPO_DIR/../markdown-to-html-github-style/convert.js}"
CONVERTER_PATH="$(realpath "$CONVERTER_PATH")"
[[ -s "$CONVERTER_PATH" ]] || {
>&2 echo "convert.js not found"
exit 1
}
pushd "$REPO_DIR"
git archive HEAD | tar x -C "$EXPORT_DIR"
popd
pushd "$EXPORT_DIR"
./tools/readme-autogen/readme_autogen.py -R ""
node "$CONVERTER_PATH" "NVENC and NvFBC patches for Nvidia drivers"
mv -v README.html index.html
pushd win
node "$CONVERTER_PATH" "NVENC and NvFBC patches for Windows Nvidia drivers"
mv -v README.html index.html
popd
popd

View File

@ -3,6 +3,12 @@ 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-446.14-brightgreen.svg) ![Latest Quadro version](https://img.shields.io/badge/latest%20Quadro%20version-442.92-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-446.14-brightgreen.svg) ![Latest Quadro version](https://img.shields.io/badge/latest%20Quadro%20version-442.92-blue.svg)
---
IPFS mirror: [https://ipfs.io/ipns/QmYTEwv2GjQhtdN9bDfpLfQrVD7YLb1Sbh8igX8cEe9hHF/win/](https://ipfs.io/ipns/QmYTEwv2GjQhtdN9bDfpLfQrVD7YLb1Sbh8igX8cEe9hHF/win/)
---
NVENC patch removes restriction on maximum number of simultaneous NVENC video encoding sessions imposed by Nvidia to consumer-grade GPUs. NVENC patch removes restriction on maximum number of simultaneous NVENC video encoding sessions imposed by Nvidia to consumer-grade GPUs.
NvFBC patch (wrapper) allows to use NvFBC on consumer-grade GPUs. See [**nvfbcwrp** (clickable)](nvfbcwrp) directory for details. NvFBC patch (wrapper) allows to use NvFBC on consumer-grade GPUs. See [**nvfbcwrp** (clickable)](nvfbcwrp) directory for details.
@ -25,8 +31,8 @@ Requirements:
## NVENC Patch Step-by-Step Guide ## NVENC Patch Step-by-Step Guide
1. Download and install latest Nvidia driver supported by this patch. 1. Download and install latest Nvidia driver supported by this patch.
2. Download latest [Win\_1337\_Apply\_Patch tool](https://github.com/Deltafox79/Win_1337_Apply_Patch/releases/latest). 2. Download latest [Win\_1337\_Apply\_Patch tool](https://github.com/Deltafox79/Win_1337_Apply_Patch/releases/latest) ([IPFS mirror](https://ipfs.io/ipfs/QmXHqNBPtmoX8g5rzg6vNJ9yd275kQtDWuDtVoU4QPfWbu/Win_1337_Apply_Patch_v1.9_By_DFoX.rar)).
3. Save patch(es) corresponding to your system, driver and product version from [Version Table](#version-table) using direct link to the patch (Right Click -> Save as...). 3. Save patch(es) corresponding to your system, driver and product version from [Version Table](#version-table) using direct link to the patch (Right Click -> "Save as\.\.\.")
- *Alternatively you may checkout repo using git or download it as ZIP archive and then locate corresponding .1337 patch file in `win` directory.* - *Alternatively you may checkout repo using git or download it as ZIP archive and then locate corresponding .1337 patch file in `win` directory.*
4. Apply x64 library patch to corresponding file in `%WINDIR%\system32\` with the Win\_1337\_Apply\_Patch tool. 4. Apply x64 library patch to corresponding file in `%WINDIR%\system32\` with the Win\_1337\_Apply\_Patch tool.
- *If patching fails, close all applications using nvencodeapi64.dll, such as OBS Studio, Plex or Discord.* - *If patching fails, close all applications using nvencodeapi64.dll, such as OBS Studio, Plex or Discord.*
@ -35,7 +41,7 @@ Requirements:
**Example:** for 64bit Windows 10 running driver version 446.14, use `win10_x64/446.14/nvencodeapi64.1337` against `C:\WINDOWS\system32\nvencodeapi64.dll` **and** `win10_x64/446.14/nvencodeapi.1337` against `C:\WINDOWS\SysWOW64\nvencodeapi.dll`. **Example:** for 64bit Windows 10 running driver version 446.14, use `win10_x64/446.14/nvencodeapi64.1337` against `C:\WINDOWS\system32\nvencodeapi64.dll` **and** `win10_x64/446.14/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. 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.
A video tutorial is also available. Credits to designator2009. (*Covers older patches. Now we probably don't need to autorun executable if x86 library patch applied*) A video tutorial is also available. Credits to designator2009. (*Covers older patches. Now we probably don't need to autorun executable if x86 library patch applied*)