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.
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.
ATI / AMD GPUs:
R300 register listing (2002, e.g. ATI Radeon 9800, OpenGL 2.0)
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)
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!)
NV40 Architecture Overview High-Level documentation targeted at graphics programmers (2004, e.g. GeForce 6800, OpenGL 2.0)
NVIDIA GeForce 7 Programming Guide
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
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
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.
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.