- Get libpciaccess and do the normal
./configure && make && make installwith it. Depending on you distribution (i.e. gentoo) you might want to run
make install --prefix=/usrto install it.
- Get radeondump and compile it using
cmake .and after that finished run
That will give you 2 tools:
- radeondump: The tool to dump registers
- dcomp: The tool to compare dumps
Now you are ready to go. To get reproducible and sane results, you need to run the tool multiple times. In software testing it's a good habit to remember the test procedure. Since that tool needs many different dumps (at least 5) to eliminate useless registers, a recommend procedure would look like:
- cold boot your system
- load fglrx
- dump registers using:
radeondump -d fglrx(Note: Your screen might flicker and the system might hang. Be careful!)
- start X
- dump registers
- switch to terminal by pressing ALT CTRL F1
- dump registers
- switch back to X by pressing ALT CTRL F7
- start glxgears and stop it
- run tuxracer, play a few seconds, quit
- run quake 3 demo, play a few seconds, quit
- run browser, quit
- run java application, quit
Wider variety of applications might improve the dumps. Now you should repeat that test in the same order for R300 from mesa git. The only difference should be that you load radeon instead of fglrx and that you use
radeondump -d r300.
Once you are done with that, you got several fglrx-id-number and r300-id-number files. In the same directory run
dcomp r300 fglrx(the order of arguments is important). Now you got a file names fglrx_r300.diff. This file might look like complete none-sense to you, but for others it holds valuable information. Jerome Glisse (glisse) might be interested in that file or if the tool failed for you. Please ask on IRC if someone wants to take a look at that file. Oliver McFadden (z3ro) uploaded an example file.
: Jerome Glisse (glisse) explained that index registers cannot be accessed directly. You got to write the address of the register to a special register. The hardware than enables access to that register and you can read it. This must be done for reading and writing these registers.