About this page

Hello there. You would like to help Nouveau and maybe even become a developer. You have hung out on #nouveau IRC channel at Freenode, but you might not understand much about what the people are saying there. Maybe you do not have much of a background with graphics systems, but you would like to learn things before trying to jump in.

This page is for you. Here are gathered links to other documents in a comprehensible order. You can start reading the first ones to get a bigger picture of what the graphics world looks like. Going further down the list, the documents get more demanding, technical and specific. We recommend maintaining the rough order while reading through these.

If you know good documents that should be linked here, go ahead and add them.

Introduction to the context

The State of Linux Graphics - by Jon Smirl, 2005

Mesa

Mesa is an open-source implementation of the OpenGL specification - a system for rendering interactive 3D graphics. A variety of device drivers allows Mesa to be used in many different environments ranging from software emulation to complete hardware acceleration for modern GPUs. Mesa ties into several other open-source projects: the Direct Rendering Infrastructure (DRI) and X.org to provide OpenGL support.

DRI - Direct Rendering Infrastructure

The Direct Rendering Infrastructure, also known as the DRI, is a framework for allowing direct access to graphics hardware under the X Window System in a safe and efficient manner. It is provided by the X server, several client libraries, and the kernel (DRM, Direct Rendering Manager).

  1. Direct Rendering Infrastructure wiki
  2. Introduction to the Direct Rendering Infrastructure by Brian Paul, 2000
    • General introduction to what DRI is all about. If you are interested in 3d, read section 5, DRI Components.
  3. DRI Explanation - the previous article covers the same and has better description however.

A peek inside

  1. How Videocards Work, article in X.org wiki.
    • The parts that make a videocard, mostly from an Ati/Radeon point of view.
  2. GraphicStackOverview by Sylvain Bertrand
    • Links to design documents. If you don't know TMDS, LVDS and so on, have a look here.
  3. IrcChatLogs, primarily the links to The Irregular Nouveau Development Companions
    • If you want to know some Nouveau history, these are the stories. Skip if you wish.
  4. Introduction to Gallium3D by José Fonseca.
    • This is the future and present of accelerated Open Source 3D graphics, the driver architecture used by e.g. Nouveau.

Compilers

  1. Collection of articles related to compilers

Nvidia-specific introduction

  1. Gentle Introductory Course on Nvidia's Hardware with explanations of the basics as well
  2. NouveauTerms - A list of terms specific to Nouveau
  3. How does the graphics pipeline map on modern NVIDIA hardware?
    • An NVIDIA blogpost, which is more compact, but has less information, than the following video.
    • An NVIDIA talk at GTC 2016, and its slides
  4. riva128.txt
    • Old document about a very old graphics card, but gives an idea how things used to work.
  5. ContextSwitching What is context switching, why is it important, how does it work...
  6. New DRI Memory Manager (PDF) by Keith Whitwell and Thomas Hellstrom, 2006
    • Introduction slides about Translation Table Maps, TTM.
  7. ArthurHuillet (Information about XVideo and other topics)
  8. XVideo slides (if you want to work on Xvideo)
  9. NV40 Architecture, article at digit-life.com.
    • What is inside and around a fairly modern GPU, but does not tell anything about programming it.
  10. GL_NV_fence extension - Explains what is fencing.

Obsolete documents (from the viewpoint of Nouveau since we use Gallium for 3D)

  1. DRI data flow diagram (Quick view of DRI data flows)
  2. DRI control flow diagram (Quick view of DRI control flows)

Getting to work

Pick your area of interest or read our ToDo, come to our IRC channel and subscribe to our mailing list, if you have not already done so and get involved.