from geometry to pixels

Low-Level GPU Documentation

NOTE: As this document is growing, I moved it to a seperate page. Click here to get to the most recent version.

Old content:

While programming graphics applications means programming against an API that abstracts us from the actual hardware (OpenGL, Direct3D), it can still be interesting to dig a bit deeper. Having a good understanding of the hardware (and its limitations!) can help you optimizing your code but also understanding limits of the API. Or maybe you’re just curious what happens below your API calls.

This is a small growing collection of (mostly) low-level documentation of GPUs I stumbled across.



R300 register listing (2002, e.g. ATI Radeon 9800, OpenGL 2.0)

R500 very detailed information of the architecture (2005, e.g. ATI Radeon X1950, OpenGL 2.0)
M56 register listing (X1600, a R500 chip)
Radeon 1×00 programming guide

R600 overview slides (ppt) (2006, e.g. ATI Radeon HD 2900, OpenGL 3.3 GPU)
R600 ISA overview slides (ppt)
R600 ISA in Detail
RV630 register listing
RS690 register listing
M76 register listing (Mobility Radeon HD 2600/2700/3600/3800)
HD2000 Programming Guide High-Level documentation targeted at graphics programmers

R700 overview slides (ppt) (2008, e.g. ATI Radeon HD 3800/4800, OpenGL 3.3 GPU)

R700 ISA

R600 / R700 / Evergreen Intermediate Language Spec
R600 / R700 / Evergreen Assembly Language Format
R600 / R700 register listing
R600 / R700 very detailed architecture overview

Heterogeneous Computing OpenCL and the ATI Radeon HD 5870 Architecture – Starting on slide 47 is a high level introduction of the ‘Evergreen’ / ‘Southern Islands’ Architecture

Northern Islands ISA (2010, e.g. AMD HD 6900, OpenGL 4.2 GPU)

AMD Accelerated Parallel Processing OpenCL Programming Guide (OpenCL guides often give useful informations about the GPUs that can be used, same is true for CUDA guides!)

NVidia GPUs:
NV40 Architecture Overview High-Level documentation targeted at graphics programmers (2004, e.g. GeForce 6800, OpenGL 2.0)

NVIDIA GeForce 7 Programming Guide

G80 Programming Guide High-Level documentation targeted at graphics programmers (2006, e.g. GeForce 8800, OpenGL 3.3)
NVIDIA GeForce 8800 GPU Architecture Overview

Fermi Whitepaper (2010, e.g. GeForce 580, OpenGL 4.2 GPU)

Kepler Whitepaper (2012, e.g. GeForce 680, OpenGL 4.2+ GPU)

Kepler GK110 Compute Whitepaper (2012, CUDA focussed)

Low level linux tools to inspect the binary NV drivers

NV GPU docs and wiki by the open source community

Intel GPUs:
Intel 965 detailed
GMA X4500 detailed (Intel G45 chipset, OpenGL 3)
Sandybridge detailed (Intel HD 2000 / 3000, OpenGL 3.2)

PowerVR MBX Tile-based rendering architecture overview (ImgTec MBX, OpenGL ES 1.1 GPU)
PowerVR SGX Architecture Guide for Developers (ImgTec SGX, OpenGL ES 2.0 GPU)
PowerVR performance recommendations (ImgTec SGX, OpenGL ES 2.0 GPU)
Various Graphics documents by ImgTec

Other GPUs:
VIA Chrome 9, a Direct3D 9 GPU

If you’re interested in a little history lesson, Texas Instruments has the specs for its TSM34010 microprocessor still online – this was the first programmable graphics processor (but a quite unsuccessful one) from 1985. The Wikipedia has some more general information about it.

Other collections / sources:
AMD OpenGPU Docs Docs

More development oriented collection:
AMD Radeon SDK


Update (04/15/12): Added some more sources.
Update (05/01/12): Added more sources & rearranged the links.
Update (05/04/12): Added more sources (ImgTec etc.).
Update (05/07/12): Added more ImgTec docs.

, , , , , , ,

Leave a Reply

Your email address will not be published. Required fields are marked *