summaryrefslogtreecommitdiff
path: root/radeonhd:r6xxErrata.mdwn
blob: 59af85ce6f32749d95a557d50bf4627da0f67fa5 (plain)
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
"""]]