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

Reply via email to