summaryrefslogtreecommitdiff
path: root/README
blob: fb0c6531fc92eb59f931b31d5dec899f69ef80b9 (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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
This source code  may damage your hardware.
It is *UNTESTED* and *BROKEN* !
Or, at least, some of it is.



R600_DEMO

	DRM/DRI exercise utility

	This is a bringup utility for learning how to program r6xx cards. It
	has no value for you if you are not a hardware driver hacker. Except
	for that it (hopefully) will draw a single triangle for you :-P

	Authors:
		Matthias Hopf <mhopf@suse.de>
		Alexander Deucher <Alexander.Deucher@amd.com>

	The original skeleton for r600_demo was r300_demo, but there's almost
	none (literally) code left from these days.

	The r600_demo code is provided without any warranty and in
	understanding that direct access to the hardware can lead to permanent
	damage to the hardware (or even damage to the user - say from locked up
	laser displays).
	The software is meant for experimentation and thus one should not
	expect it to be checked for compatibility or suitability for any
	purpose.


STATE

	- DRM state dump                                                     ok
	  DRM setup works - DRM shows some issues, still, GART
	  texture space has a wrong GPU address assigned, etc.
	- GPU state dump                                                     ok
	- CP setup + test                                        '.'         ok
	- CPU based clear screen                                 'c'         ok
	- More extensive CP tests                                'p'         ok
	- PM4 dump tests                                         'w' 'W' 'b' ok
	- Triangle tests                                         't' 'T'     ok
	- Texturing tests                                        'q'         ok
	- GPU reset                                              'r'         ok
	- EXA tests                                              'e' 'E'     ok
	- Register dump                                          <range>     ok
	- Register setting                                       <reg>=<val> ok
	- Various test                                           'x'         unknown

	Tested on R600, RV610, RV620, RV630, RV635, RV670, RV710, RV730, RV770


SETUP:

	Requirements:

	- r600_demo from git://anongit.freedesktop.org/git/mesa/r600_demo

	- An r6xx or r7xx card, testing happens mostly on
	  RV610, RV670, and RV770. R600 is probably the least supported.

	- Install + configure radeonhd:
	  Get the latest driver (1.2.4 is good enough). Explicitly enable
	  DRI and disable 2D acceleration:

	  Option "DRI"
	  Option "AccelMethod" "none"

	- Install DRM:
	  Get and install the r6xx-r7xx-support branch of DRM.


RUNNING:

	- Run the Xserver. No additional clients needed (r600_demo is not an X
	  client, so no server reset occurs).
	- Call r600_demo on the same machine as root(!).

	./r600_demo

	  This will print out the usage, including all options.

	./r600_demo ""

	  This will print out the state of DRM and the graphics card
	  (busy flags + ring and buffer states). Add '-v' to get a list of all
	  mapped memory regions and a more verbose state output.

	./r600_demo pc

	  Will test the CP, and clear the screen.

	./r600_demo t

	  Draws two Gouraud shaded triangles.

	./r600_demo r

	  This resets the engine. "./r600_demo rct" is a typical call, because
	  the 't' and 'q' tests do not invaldiate the shaders correctly yet.

	./r600_demo rcqE

	  Draws a textured quad, and then invokes the EXA copy test, which
	  copies the top left corner 3 times.

	./r600_demo "" 30000-3001c

	  Register dump: prints out the first two ALU constants
	  (SQ_ALU_CONSTANT0_0 - SQ_ALU_CONSTANT3_1). Any number of single
	  registers and ranges allowed.
	  You can lock up the whole machine when accessing non-existent
	  register space, so beware.

	make dump

	  Create a register dump of known registers.