Well, I've just finished making the proposed video library changes to the rendering
engine, defaultvbl, video drivers, and other necessary low-level components. It's been
a lot of changes- the diff between my working copy and the CVS is now about 150K. I
can't commit it until I un-break the theme engine and widgets though :)
Anyway, because I ripped out some chunks of code that weren't all that useful and made
each LGOP optional on a per-primitive basis, pgserver has actually decreased in size
by a few kilobytes.
As far as performance goes, I'm always paranoid that I will make it run slower. The
current benchmarking system (command line '-m' option) isn't by any means scientific,
but at least it gives quantitative results.
All tests performed at 640x480 with the sdlfb driver (hence the large cost on update()
due to the double-buffering) on a Pentium III 700mhz CPU with XFree86 4.0.2 and Linux
2.4.3. Also note that results are in frames per second, so bigger is better.
At first, testing with the linear16 driver, which in its current state relies almost
completely on defaultvbl.
linear16 before:
Test | Complete / Raw
------------------------
1 | 37.50 / 66.00
2 | 39.00 / 55.00
3 | 33.50 / 44.00
4 | 57.50 / 81.00
linear16 after:
Test | Complete / Raw
------------------------
1 | 35.00 / 47.50
2 | 35.50 / 43.00
3 | 28.50 / 33.50
4 | 47.00 / 63.00
As you can see, it took a noticable performance hit, probably because of an extra
conditional test required inside the pixel() function. In a driver that has
implemented the higher-level primitives, like linear8, the extra code is only executed
once per primitive instead of once per pixel.
linear8 before:
Test | Complete / Raw
------------------------
1 | 52.00 / 374.50
2 | 92.50 / 1176.00
3 | 85.00 / 584.50
4 | 94.00 / 1329.50
linear8 after:
Test | Complete / Raw
------------------------
1 | 61.50 / 390.50
2 | 88.50 / 1195.50
3 | 81.50 / 574.50
4 | 38.00 / 974.00
The difference between the before and after in this case is within the 'noise level'
of the benchmark. (Results would wobble below and above the 'linear8 before' results,
depending on system load or other things. Like I said, not 100% scientific :)
Anyway, it looks like this new video system will be able to allow lots of neat
features like rendering to bitmaps, easier gropnode programming, and good lgop support
without taking a noticable performance hit as long as the linear* drivers are good.
So good the linear* drivers shall be...
Good night.
--
perl -e'socket S,2,1,tcp;connect S,pack(H16,"0200029a80692d32").\0x8;print
grep!/=/,<S>'
_______________________________________________
Pgui-devel mailing list
[EMAIL PROTECTED]
http://lists.sourceforge.net/lists/listinfo/pgui-devel