Roughly one month have passed since I first tried the 3D support on my radeon HD4770 (R740), it is time for a little update :)
I - Overall impression
While I was away from my computer featuring the HD4770, the mesa build system changed and kind of broke my compilation scripts. It took me some days to figure this out as the compilation script didn’t notice anything. I figured it out after seeing a “make install” failing while I was looking at the compilation listing.
So, I did a new compilation system, based on the latest Archlinux stable mesa’s package source. What’s interesting to note is that I now compile every dri driver available and it seems like they are compiled correctly :D
The 2D graphic corruption I had are now completely gone and everything seems to be fast (except full-screen flash videos) and responsive. Also, Openarena doesn’t need to be launched with indirect rendering anymore!
On the down side, using composited environment on my video card and kde 4.3 is not really working as well as on the non-composited ones. It is really slower and less responsive.
We can also notice drawing issues in 2D applications:
![R700 2D corruption][radeon_700_corruption_2d]
II - Application testing
GtkPerf 0.40 - Starting testing: Sun Sep 20 00:27:12 2009 GtkEntry - time: 0,06 GtkComboBox - time: 1,48 GtkComboBoxEntry - time: 1,30 GtkSpinButton - time: 0,25 GtkProgressBar - time: 0,17 GtkToggleButton - time: 0,44 GtkCheckButton - time: 0,25 GtkRadioButton - time: 0,38 GtkTextView - Add text - time: 0,26 GtkTextView - Scroll - time: 0,40 GtkDrawingArea - Lines - time: 1,14 GtkDrawingArea - Circles - time: 0,90 GtkDrawingArea - Text - time: 0,64 GtkDrawingArea - Pixbufs - time: 0,10 --- Total time: 7,79
GtkPerf 0.40 - Starting testing: Sun Sep 20 00:30:43 2009 GtkEntry - time: 0,05 GtkComboBox - time: 2,05 GtkComboBoxEntry - time: 1,84 GtkSpinButton - time: 0,49 GtkProgressBar - time: 0,38 GtkToggleButton - time: 0,64 GtkCheckButton - time: 0,42 GtkRadioButton - time: 0,60 GtkTextView - Add text - time: 0,25 GtkTextView - Scroll - time: 0,66 GtkDrawingArea - Lines - time: 3,99 GtkDrawingArea - Circles - time: 4,22 GtkDrawingArea - Text - time: 1,56 GtkDrawingArea - Pixbufs - time: 0,34 --- Total time: 17,48
GTKPerf in a composited environment is more than two times slower than in non-composited ones. The circle and lines test takes up to 4 times what it usually takes on a non-composited environment.
b) 3D performances
The first test is on GLXGears. The difference between compositing and not is virtually non-existing. In a non-composited environment, I get an average of 3000 fps while I get an average of 2950 in a composited environment.
This test was not really helpful as OpenArena seems to be caped at 90fps with and without composite. There is also a bug with decals being shown even if they are behind a wall. Otherwise, everything’s just fine !!
Nexuiz runs fine also without too much tweaking. To get it working fast, you need to deactivate the parameters “occlusion queries”, “Vertex Buffer Objects” (none), HDR, bloom and the “Real time world lightning” one.
With all this disabled and everything else set to the highest and at the resolution of 1920*1200, I get 35fps. So, this is nice but this cannot compete with FGLRX yet both in terms of features and speed.
c) Video Decoding
Finally, I have decided to try out how much CPU was used while playing a 1080p (full HD) video. For the test, I have used the full HD ogg version of Big Buck Bunny.
To run this test, I have used VLC and the X-Video backend on my Intel i7 920. Here are the results :
- Non-composited: 4.5%
- Composited: 9%
It seems like HD video is no more a problem with the OSS driver !
III - Final conclusion
It seems like the 2D support is being completed for DRI and the 3D support is on a good way.
With all this done, we need a KMS and DRI2 support to be feature-complete. Then, it will be a matter of implementing the openGL 3.2 specifications in mesa and the most important work will be done. To achieve this, Gallium3D should help quite a lot.
We will see the 3D and KMS support soon as it will be entering the Linux 2.6.32 kernel with KMS as a stagging driver (just as the r1xx-r5xx KMS with the 2.6.31 kernel). Be sure I’ll test it soon (maybe next week ?) and keep you informed.