Tools for people envious of nvidia's blob driver.
C C++ Python Perl CMake Yacc Other
Switch branches/tags
Nothing to show
Failed to load latest commit information.
cupti_trace cupti_trace: Fix python invocation line for better portability Feb 25, 2017
demmt demmt: more gracefully handle GET_CHIPSET ioctl failure Mar 13, 2017
docs falcon: List some more unknown stuff. May 25, 2017
easm Fix license text everywhere. Mar 14, 2013
envydis envydis/falcon: Mostly v5 cleanup. May 25, 2017
hwtest Enter in some Curie bits Mar 30, 2017
include nva: Handle NV17 RDI properly. Jan 15, 2017
nva test: Update and document build requirements Feb 11, 2017
nvbios nvbios/power/PM_Mode: print pascal differently Apr 18, 2017
nvhw nvhw/pgraph: Start refactoring nv03_pgraph_rop. Jan 25, 2017
ptxgen ptxgen: add simple cubin fuzzer (cuobjfuzz.c); use CUDA 6 by default;… Jun 23, 2014
rnn Merge pull request #87 from Echelon9/fix/pylint-errors-warnings Mar 14, 2017
rnndb falcon: List some more unknown stuff. May 25, 2017
util demmt: let -l option accept compressed files Jul 12, 2014
vdpow vdpow: update dumpstruct to handle mpeg4 correctly Sep 8, 2014
vstream vstream/h261,h262: Fix block encoding. Oct 19, 2015
.gitignore Add ninja files to .gitignore May 8, 2016
.travis.yml test: Update and document build requirements Feb 11, 2017
CMakeLists.txt Always compile as C11 and C++11. Oct 22, 2016
COPYING put the repo under the MIT license as it was agreed on Jul 24, 2013
README.rst docs: Enhance readability of README header Feb 25, 2017
bftool GK110: WIP atom-related decoding bug, bftool: allow mixed 32/64 bit i… Oct 12, 2012



Tools for people envious of nvidia's blob driver.

The canonical repo is at: 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
  • 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

Building, installing


  • cmake
  • libxml2
  • flex
  • bison
  • pkg-config

Optional dependencies needed by hwtest:

  • libpciaccess

Optional dependencies needed by demmt:

  • libdrm (nouveau)
  • libseccomp

Optional dependencies needed by nva:

  • libpciaccess
  • libx11
  • libxext
  • python3
  • cython

Optional dependencies needed by vdpow:

  • libpciaccess
  • libx11
  • vdpau

Optional dependencies needed for ninja build (faster recompile times):

  • ninja

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

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 .

Cmake options

If you don't want to compile some parts of envytools, you can pass the following options to cmake: