ATI R600/700 OSS 3D Driver Reaches Gears Milestone
Phoronix: ATI R600/700 OSS 3D Driver Reaches Gears Milestone
Months after AMD released documentation, programming guides, and sample code for the ATI R600 (Radeon HD 2000/3000) and R700 (Radeon HD 4000) series, glxgears is finally running atop these newest ATI graphics processors with proper GPU acceleration. Three AMD employees have been working on this R600/700 3D support in the DDX, DRM, and Mesa, and now they finally have glxgears running atop their 3D driver that is now based off of the radeon-rewrite driver. There's still a lot of work to be accomplished when it comes to usable open-source 3D support with the ATI R600/700 GPUs, but this is an important step. More on this milestone is shared on Alex Deucher's blog...
In file included from radeon_bocs_wrapper.h:24,
/usr/include/drm/radeon_cs.h: In function ‘radeon_cs_set_limit’:
/usr/include/drm/radeon_cs.h:185: error: ‘RADEON_GEM_DOMAIN_VRAM’ undeclared (first use in this function)
/usr/include/drm/radeon_cs.h:185: error: (Each undeclared identifier is reported only once
/usr/include/drm/radeon_cs.h:185: error: for each function it appears in.)
radeon_screen.c: In function ‘radeonGetParam’:
radeon_screen.c:257: error: variable ‘info’ has initializer but incomplete type
radeon_screen.c:257: warning: excess elements in struct initializer
radeon_screen.c:257: warning: (near initialization for ‘info’)
radeon_screen.c:257: error: storage size of ‘info’ isn’t known
radeon_screen.c:257: warning: unused variable ‘info’
All the devs noticed that the sun seemed to shine a bit more brightly today
For the short term, I guess the tasks are :
(a) continue to fix bugs,
(b) get back to 1500fps from 15fps by accelerating the back-to-front buffer copy,
(c) get the mesa code ready to merge into master
The driver actually draws decently fast, it's just the buffer copy that slows everything down. The GPU can copy VRAM-to-VRAM at 2,000 MB/s or better, but the CPU can only copy at around 5 MB/s when it has to read from uncached VRAM. The CPU is probably reading one 32-bit word at a time, and taking maybe 800nS to go out to the GPU over PCIE, have the GPU read a word from VRAM, and return the data to the CPU. The glxgears window is ~300x300 pixels, or 360K bytes - 5MB/sec over 360KB/frame gives about 15 fps.
Running fullscreen (say 1680x1050) the copy really does start to give us "Frames per Day" performance
It's nice to see some actual improvement on Ati's side. I might finally get around to getting a new computer if this keeps improving. (I will never choose Nvidia for making faulty gpu's and blaming it on others)
I remember when I was in high school, I had a desktop with an Ati 9600 (actually, I still have that box), and fglrx never worked. My brother and I joked that the card wouldn't actually run well under linux until we had children, and it looks like we might have been wrong. I'm going into a university soon, he's almosts done, and we might get functional Ati drivers before our careers start!
FYI what I"m seeing right now is gears running properly on rv770 and mostly drawing black on an rv620 although dragging the window around makes the gears appear intermittently. Based on limited testing it is probably safe to say "seems to work on 7xx, colours aren't right on 6xx yet".
The same applies to a number of other tests, eg the redbook demos.