Tools for people envious of nvidia's blob driver.
The canonical repo is at: https://github.com/envytools/envytools/. Pushing anywhere else will result in a de-facto fork!
docs: plain-text documentation of the GPUs, nVidia binary driver, and the tools (in-sync HTML version at https://envytools.readthedocs.io)
envydis: Disassembler and assembler for various ISAs found on nvidia GPUs
rnn: Tools and libraries for the rules-ng-ng XML register database format
rnndb: rnn database of nvidia MMIO registers, FIFO methods, and memory structures.
nvbios: Tools to decode the card description structures found in nvidia VBIOS
nva: Tools to directly access the GPU registers
vstream: Tools to decode and encode raw video bitstreams
vdpow: A tool aiding in VP3 reverse engineering
easm: Utility code dealing with assembly language parsing & printing.
util: Misc utility code shared between envytools modules
Optional dependencies needed by hwtest:
Optional dependencies needed by demmt:
Optional dependencies needed by nva:
Optional dependencies needed by vdpow:
Optional dependencies needed for ninja build (faster recompile times):
If your distribution has -dev or -devel packages, you'll also need ones corresponding to the dependencies above.
On ubuntu it can be done like this:
apt-get install cmake flex libpciaccess-dev bison libx11-dev libxext-dev libxml2-dev libvdpau-dev python3-dev cython3
To build using ninja (recommended if you work on envytools):
$ cmake . -G Ninja $ ninja
If you prefer to stay with make, use
$ cmake . $ make
To install [which is optional], use
$ ninja install
$ make install
If you want to install to a non-default directory, you'll also need to pass it as an option to cmake before building, eg.:
$ cmake -D CMAKE_INSTALL_PREFIX:PATH=/usr/local .
If you don't want to compile some parts of envytools, you can pass the following options to cmake: