From: Gareth H. <ga...@va...> - 2001-02-20 17:54:40
|
I sat down tonight and did some maintenance work on the r128 2D driver. This basically involved making the 2D driver use the same functionality as the 3D driver, so that we don't have to shut the 3D engine down and start it back up again after every block of 2D rendering. As expected, this only took a couple of hours to get up and running. I think the results speak for themselves: System: 600MHz Duron, 128MB RAM, Rage 128 Pro 16MB All tests run at 1024x768@16bpp. Numbers are reps/sec. I just ran a couple of benchmarks to give you an idea... x11perf trunk, DRI off trunk, DRI on ati-5-0-1 -rect10 2000000.0 2000000.0 2690000.0 -rect100 156000.0 156000.0 2720000.0 -rect500 12500.0 12500.0 323000.0 -srect10 1560000.0 1560000.0 2520000.0 -srect100 85600.0 85500.0 2040000.0 -srect500 3960.0 3960.0 14600.0 rect* are rectangles, srect* are stippled rectangles. Now, I realize you don't really give a crap about performance, so let me explain why these numbers are good. The major cause of instability in both the Rage 128 and Radeon drivers is the mix of MMIO 2D acceleration and AGP DMA 3D acceleration. Switching back and forth can cause a lot of problems -- indeed, it is so bad on the Radeon you basically can't do it at all. The "recommended" usage of the Rage 128 driver has been to enable the option "UseCCEFor2D", which prevents this switching from occurring. However, it used to also disable 2D acceleration, as the AGP DMA 2D acceleration was never implemented. Until now. So, as this 2D acceleration code is used by default when the DRI is enabled, there is no longer the option to do all that switching back and forth. And, as a bonus, the 2D performance is significantly better when you enable the DRI. I'm just about to commit this stuff to the ati-5-0-1-branch of DRI CVS. I doubt it will get into 4.0.3, but I think it would be useful to test anyway (seeing as you have access to machines that break the driver). -- Gareth |