This page explains difficult areas of the rxx GPU series, things missing in the official documentation, and describes pitfalls you can fall into. In addition, it also serves as a regular errata sheet, correcting information in the official documentation.
Only issues known to be wrong in the official documentation will be brought up here. If anything is doubtful, it should be rather added to a later section.
r600isa.pdf documents the shader unit instruction set.
pp. 7-9: Control flow instruction numbers are partially wrong. Some even duplicated. Numbers in R6xx_3D_Registers.pdf are apparently correct.
SQ_CF_INST_CALL is 0x12 (not 0x0d) SQ_CF_INST_CALL_FS is 0x13 (not 0x0f) SQ_CF_INST_CUT_VERTEX is 0x17 (not 0x14) SQ_CF_INST_ELSE is 0x0d (not 0x11) SQ_CF_INST_EMIT_CUT_VERTEX is 0x16 (not 0x13) SQ_CF_INST_EMIT_VERTEX is 0x15 (not 0x12) SQ_CF_INST_JUMP is 0x0a (not 0x10) SQ_CF_INST_KILL is 0x18 (not 0x15) SQ_CF_INST_LOOP_START_DX10 is 0x06 (not 0x04) SQ_CF_INST_MEM_EXPORT is unknown (also RV670 only) SQ_CF_INST_MEM_STREAM3 is 0x23 (not 0x32, decimal description 35 is correct) SQ_CF_INST_POP is 0x0e (not 0x0c) SQ_CF_INST_PUSH is 0x0b (not 0x0a) SQ_CF_INST_PUSH_ELSE is 0x0c (not 0x0b) SQ_CF_INST_RETURN is 0x14 (not 0x0e)
CB Color Block Color buffer DB Depth Block Depth buffer GRBM Graphics Register Block Registers 0x8000-0x2fffc PA Primitive Assembler Scissors, Cliprects, Point sprites SPI Shader Processor Interpolator Semantic mapping, interpolators SQ Sequencer / Shader Shader management, exports, register alloc SRBM System Register Block Registers 0x0000-0x7ffc SX Shader Export Output mapping, output buffers VGT Vertex Grouper Tessellator Everthing related to vertex setup, viewport transformation, etc.
Pixel and vertex shader are mandatory. Only one vertex shader at a time. Fetch shader and geometry shader may be disabled (fetch shader by just not using SQ_INST_CALL_FS).
ES Export Shader Early vertex shader, used w/ GS only FS Fetch Shader Subroutine, may be called in vertex shader context GS Geometry Shader May kill or tessellate primitives VS Vertex Shader Used w/o GS only PS Pixel Shader
VB Vertex Buffer List of coordinates and attributes in memory
DRM Direct Rendering Manager Kernel component for buffer submission and resource management GART Graphics Aperture Remapping Table Main memory mapped in write-combined mode for GPU access GPU Graphics Processing Unit Main rxx chip