Skip to content


Subversion checkout URL

You can clone with
Download ZIP


mupuf edited this page · 26 revisions

Introductory Course

This wiki page is meant to help beginners to start working on nvidia cards and pscnv.

Please understand that the one who knows if this page is actually useful is you! So, please let us know on IRC if you need some additional information to get started.

REMINDER: When you've learned something, please write the documentation right away on the wiki/envytool.


  • BAR: It is a area of memory or IO ports exposed by a PCI card.
  • MMIO: Memory-mapped Input Output. See BAR.
  • Channel: Channels receive commands from the users and executes them.
  • Virtual Memory: Provides an personal address space for every channel.
  • Nvidia Codenames: Tells you about nvidia's way to name chipsets
  • FUC: A microcode language that is being used almost everywhere on nvc0.


NVidia cards are split in several engines that are doing dedicated things.

Here is the list of the different engines of the nvidia cards:


Most of the tools a pscnv/nouveau dev need are either stored in the envytool repo(git:// or the pgtest repo(git://

pgtest (mostly dealing with registers)

  • peek -- Read the value of a register
  • poke -- Write a value to a register
  • TODO

envytool (mostly disassemblers)

  • demmio -- reads a raw mmio trace and turns into something way more readable
  • nvbios -- Parses a vbios and show useful information out of it. Meant for vbios developers.
  • TODO


  • vbtracetool: A tool to extract your vbios.
  • nvclock: A tool to get and set various information (often related to PM). There may already be a package provided by your distro.

 Power Management

See the dedicated Power Management Page.

Something went wrong with that request. Please try again.