1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
# 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.
[[!toc 1]]
# Erratas
Only issues <em>known</em> 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|http://www.x.org/docs/AMD/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|http://www.x.org/docs/AMD/R6xx_3D_Registers.pdf]] are apparently correct.
[[!format txt """
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**
[[!format txt """
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).
[[!format txt """
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**
[[!format txt """
VB Vertex Buffer List of coordinates and attributes in memory
"""]]
**System**
[[!format txt """
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
"""]]
|