I had been having a problem getting 3D acceleration working on a Debian system with a graphics card I recently installed (ATI Technologies Inc RV280 [Radeon 9200 PRO]), and have finally managed to get it working again. I wanted to keep with the free 'radeon' driver, but /var/log/Xorg.0.log kept complaining that Direct Rendering was disabled without any apparent reason:
(II) RADEON(0): [DRI] installation complete
(II) RADEON(0): [drm] removed 1 reserved context for kernel
(II) RADEON(0): [drm] unmapping 8192 bytes of SAREA 0xe07a4000 at 0xb7aa9000
(II) RADEON(0): [drm] Closed DRM master.
(WW) RADEON(0): Direct rendering disabled
(II) RADEON(0): Render acceleration enabled for R200 type cards.
It seems that the main issue was an update of the linux kernel (2.6.29+) to remove non-free binary blobs from the kernel source. I realised this after checking the dmesg output and seeing errors about firmware:
[72190.102626] [drm] Setting GART location based on new memory map
[72190.102707] [drm] Loading R200 Microcode
[72190.102713] platform radeon_cp.0: firmware: requesting radeon/R200_cp.bin
[72190.295514] radeon_cp: Failed to load firmware "radeon/R200_cp.bin"
[72190.295523] [drm:radeon_do_init_cp] *ERROR* Failed to load firmware!
The fix for this is to add in the non-free binary blob package called 'firmware-linux'. After that, direct rendering seems to work again. From the package details for firmware-linux, this should solve issues people have with a few other cards:
This package contains the binary firmware for all firmwares which was
formally shipped in the Linux image.
* 3Com Typhoon firmware, version 03.001.008
* DAB-USB FPGA bitfile, version unknown
* DAB-USB firmware, version unknown
* Intel 82559 D101M microcode, version unknown
* Intel 82559 D101S microcode, version unknown
* Intel 82551-F and 82551-10 microcode, version unknown
* kaweth/new_code.bin, version unknown
* kaweth/new_code_fix.bin, version unknown
* kaweth/trigger_code.bin, version unknown
* kaweth/trigger_code_fix.bin, version unknown
* Matrox G200 WARP engine microcode, version unknown
* Matrox G400/G550 WARP engine microcode, version unknown
* Rage 128 CCE microcode, version unknown
* Radeon R100-family CP microcode, version unknown
* Radeon R200-family CP microcode, version unknown
* Radeon R300-family CP microcode, version unknown
* Radeon R400-family CP microcode, version unknown
* Radeon R500-family CP microcode, version unknown
* Radeon RS690 CP microcode, version unknown
* Tehuti network card firmware, version unknown