Tools
Tools that help the driver writing process:
- EnvyTools - hardware register database, documentation and collection of RE tools (nvapeek, nvapoke, nvbios, envydis, etc.)
- MmioTrace - traces memory mapped I/O access within kernel. Used to record how a driver module uses MMIO reads and writes.
- Valgrind-mmt - modification of Valgrind which intercepts all traffic to the driver
- Nouveau-PM
- REnouveau (CVS) - dumps the modifications in the command fifo and user-mapped registers when a process emits rendering commands.
Obsolete:
- Nouveau CVS repo - other tools and scripts (e.g. crashdump and createdump).
Debugging tools
- perf is a useful profiler, for a system wide performance overview.
Documentation/Available source code
Documentation about how nvidia hardware works
- EnvyTools - hardware register database, documentation and collection of RE tools (nvapeek, nvapoke, nvbios, envydis, etc.)
- NvHardwareDocs all documented nv registers, hardware protocols, articles, and miscellaneous hardware info about nv vid cards
Introduction and API docs
- IntroductoryCourse - selected links and documents as a course material
- How to write a Mesa driver
- The DRI documentation page
- A locking mechanism for the DRI
- Graphics Stack Overview
- A simple git guide
- How to build and install a full graphics stack from git without overwriting your distribution provided X.
- KernelModeSetting
- The State of Linux Graphics (2005)
- Sharpening the Intel Driver Focus (2009)
- The Linux Graphics Stack (2012)
- i915 GEM crashcourse (driver-specific GPU buffers) (2012)
- Reverse Engineering Power Management on NVIDIA GPUs (2013)
- Virtualization and Migration with GPGPUs (2013)
Presentations
- Marcheu's talk about Xorg Myths (FOSDEM 2007)
- Marcheu's talk about Nouveau (FOSDEM 2007) old link
- The FOSDEM 2006 presentation
- David Airlied's LCA 2007 talk
- A Deeper Look Into GPUs and the Linux Graphics Stack (2012)
Video Hardware docs
- A trip through the graphcs pipeline 2011 - a great and detailed explanation of the various stages of a 3d pipeline
- X.Org How Video Cards Work
- Alex Deucher's "Understanding GPUs from the ground up" blog post
Other nVidia drivers
- pscnv, a redesigned fork of nouveau for NV50+ cards, driven by ?PathScale.
- The DirectFB nVidia driver New address of DirectFB git repo
- The BeOS/Haiku nVidia driver (svn header; svn driver)
- Utah-GLX
- The xfree 3.3.3 nvidia driver just after obfuscation
Misc
- Graphics stack diagram
- Mesa diagram
- InstallNouveau - guide to compiling/installing all the packages that make up nouveau
- mostly outdated ToDo
- Games - how games use graphics
- List of all CodeNames for NVIDIA cards
- openChrome Project - open source device drivers for VIA S3 (has updated XvMC with MPEG-4 acceleration support)
- intellinuxgraphics.org open source Linux Graphics Device Drivers from Intel (with XvMC for MPEG-2 acceleration support)
- R300 DRI (Direct Rendering Infrastructure) - open source device drivers development for AMD/ATI R300 chipset
- NouveauDemo a test suite
- DumpingVideoBios
- NouveauTerms
- DDC
- Dithering
- HangDiagnosis