Jerome Glisse (glisse) has been hacking lately on his radeondump tool. It can be used to easily dump indexed registers[1] of a Radeon card. He developed it on a Mac G5 and wanted to see how it works for other users. Yesterday he asked Oliver McFadden (z3ro) on IRC if he could create dumps from fglrx and r300. Currently running it isn't easy for an "end user" but if you want to, do the following:
That will give you 2 tools:
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:
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
Once you are done with that, you got several fglrx-id-number and r300-id-number files. In the same directory run
[1]: 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.
- Get libpciaccess and do the normal
./configure && make && make installwith it. Depending on you distribution (i.e. gentoo) you might want to runmake install --prefix=/usrto install it. - Get radeondump and compile it using
cmake .and after that finished runmake.
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
- dump
- start glxgears and stop it
- dump
- run tuxracer, play a few seconds, quit
- dump
- run quake 3 demo, play a few seconds, quit
- dump
- run browser, quit
- dump
- run java application, quit
- dump
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.[1]: 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.
2 comments | Leave a comment