r[67]xx Errata Sheet

This page explains difficult areas of the r[67]xx 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.

Erratas

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

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)

Known Hardware Limitations

Unexplained Hardware Behavior

Additional Documentation

Glossary

Hardware Groups

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.

Shaders

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

Data Structures

VB    Vertex Buffer                  List of coordinates and attributes in memory

System

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 r[67]xx chip