Linux with XFree86 4.x (pre) and DRI!!!

Dieter Nützel nuetzel at kogs1.informatik.uni-hamburg.de
Fri Nov 26 08:08:50 EST 1999


Hello,

please let me introduce my 'first benchmarks" on AMD Athlon 500 with the
'new' XFree86 4.x (currently 3.9.16 snapshot) and Direct Rendering
Infrastructure (DRI), Precision Insight Inc.
http://www.precisioninsight.com/ and Voodoo3 3000 AGP.

The first technical demonstration implementation was done for 3DLabs
GMX2000 and was shown on SIGGRAPH '99.
Now, the first prerelease for the 3dfx Banshee/Voodoo3 is out and can be
greped here: http://www.3dfxgamers.com/view.asp?IOID=1024

Yes, for the time being only 16 bit z-buffer and 16 bpp color depth is
supported due to hardware limitations, but this would be solved in the
first quarter of 2000 with Voodoo4/5 family (Voodoo5 6000 AGP: max.
1.32~1.47 Gigapixels/sec!).
http://www.3dfx.com/

System was:

AMD Athlon 500
MSI MS-6167 Rev. 1.0B mobo with AMD Irongate Rev. C4
256 MB PC100 SDRAM, 8 ns
Voodoo3 3000 AGP
Adaptec AHA-2940UW
IBM DDRS-34560UW

Linux 2.2.14pre6
Glibc-2.1.2
pgcc-2.95.2

VTK nightly taken on 24.11.1999

VTK Simple Sphere Benchmark 2.0

  - Robert Riviere (results)
    Robert.Riviere at sophia.inria.fr
    www.inria.fr/caiman/personnel/Robert.Riviere/vtk/sphere-bench.html

  - Sebastien Barre (script)
    Sebastien.Barre at utc.fr
    www.hds.utc.fr/~barre/vtk/sphere-bench.html

Find the best sphere resolutions for your card, launch *bench
combinations* and send us your results (copy the session with <Control
/>) along with a complete description of your system (VTK/OS version,
hardware description).

System :
  - i686 running Linux 2.2.14pre6
  - Tcl/Tk 8.0.5
  - Mesa (visual is truecolor/truecolor/16)

Defaults :
WARNING : $active_camera GetClippingRange was 2.44347 4.52015 , should
be 0.348564 17.4282
  - VTK : wrong, please report us your values...
  - Rotation limit, increment, number : (300 by 30) x 3
  - Sphere opacity (if transparency activated) : 0.3
  - Sphere radius and small radius (if small_sphere activated) : 0.8,
0.5
  - Combinations : [small_sphere] [] [stripper] [transparency]
[wireframe] [texture] [texture, transparency]

NOTE : the 512x512 and above sphere resolutions are *really* high, use
them carefully, as it might hang your system for a while.

IMPORTANT : move the camera a little to interact with the sphere before
playing with this bench...

------- BENCH COMBINATIONS -------

Benching for sphere resolutions : 32, 64, 128, 256
Setting(s) : window is 400 x 400, sphere radius is 0.5
 Option(s) : [small_sphere]
    32x32  :  223.9 kpolys/s
    64x64  :  287.4 kpolys/s
   128x128 :  302.9 kpolys/s
   256x256 :  309.3 kpolys/s

Benching for sphere resolutions : 32, 64, 128, 256
Setting(s) : window is 400 x 400, sphere radius is 0.8
    32x32  :  241.1 kpolys/s
    64x64  :  287.9 kpolys/s
   128x128 :  305.3 kpolys/s
   256x256 :  309.3 kpolys/s

Benching for sphere resolutions : 32, 64, 128, 256
Setting(s) : window is 400 x 400, sphere radius is 0.8
 Option(s) : [stripper]
    32x32  :  318.4 kpolys/s
    64x64  :  412.1 kpolys/s
   128x128 :  442.4 kpolys/s
   256x256 :  459.2 kpolys/s

Benching for sphere resolutions : 32, 64, 128, 256
Setting(s) : window is 400 x 400, sphere radius is 0.8
 Option(s) : [transparency]
    32x32  :  240.9 kpolys/s
    64x64  :  287.9 kpolys/s
   128x128 :  305.3 kpolys/s
   256x256 :  308.9 kpolys/s

Benching for sphere resolutions : 32, 64, 128, 256
Setting(s) : window is 400 x 400, sphere radius is 0.8
 Option(s) : [wireframe]
    32x32  :  120.9 kpolys/s
    64x64  :  130.4 kpolys/s
   128x128 :  135.1 kpolys/s
   256x256 :  136.1 kpolys/s

Benching for sphere resolutions : 32, 64, 128, 256
Setting(s) : window is 400 x 400, sphere radius is 0.8
 Option(s) : [texture]
    32x32  :  217.5 kpolys/s
    64x64  :  253.1 kpolys/s
   128x128 :  273.7 kpolys/s
   256x256 :  279.3 kpolys/s

Benching for sphere resolutions : 32, 64, 128, 256
Setting(s) : window is 400 x 400, sphere radius is 0.8
 Option(s) : [texture, transparency]
    32x32  :  218.0 kpolys/s
    64x64  :  259.2 kpolys/s
   128x128 :  274.0 kpolys/s
   256x256 :  279.0 kpolys/s

Best results, summary :
  - i686 running Linux 2.2.14pre6
  - Tcl/Tk 8.0.5
  - Mesa (visual is truecolor/truecolor/16)
  - window was 400 x 400
   1) 256x256 :  459.2 kpolys/s : [stripper]
   2) 256x256 :  309.3 kpolys/s : []
   3) 256x256 :  309.3 kpolys/s : [small_sphere]
   4) 256x256 :  308.9 kpolys/s : [transparency]
   5) 256x256 :  279.3 kpolys/s : [texture]
   6) 256x256 :  279.0 kpolys/s : [texture, transparency]
   7) 256x256 :  136.1 kpolys/s : [wireframe]

------- DONE (in 192 sec.) -------

*******************************************************************************

------- BENCH COMBINATIONS -------

Benching for sphere resolutions : 512
Setting(s) : window is 400 x 400, sphere radius is 0.5
 Option(s) : [small_sphere]
   512x512 :  310.5 kpolys/s

Benching for sphere resolutions : 512
Setting(s) : window is 400 x 400, sphere radius is 0.8
   512x512 :  311.0 kpolys/s

Benching for sphere resolutions : 512
Setting(s) : window is 400 x 400, sphere radius is 0.8
 Option(s) : [stripper]
   512x512 :  513.0 kpolys/s

Benching for sphere resolutions : 512
Setting(s) : window is 400 x 400, sphere radius is 0.8
 Option(s) : [transparency]
   512x512 :  311.1 kpolys/s

Benching for sphere resolutions : 512
Setting(s) : window is 400 x 400, sphere radius is 0.8
 Option(s) : [wireframe]
   512x512 :  136.2 kpolys/s

Benching for sphere resolutions : 512
Setting(s) : window is 400 x 400, sphere radius is 0.8
 Option(s) : [texture]
   512x512 :  280.2 kpolys/s

Benching for sphere resolutions : 512
Setting(s) : window is 400 x 400, sphere radius is 0.8
 Option(s) : [texture, transparency]
   512x512 :  280.1 kpolys/s

Best results, summary :
  - i686 running Linux 2.2.14pre6
  - Tcl/Tk 8.0.5
  - Mesa (visual is truecolor/truecolor/16)
  - window was 400 x 400
   1) 512x512 :  513.0 kpolys/s : [stripper]
   2) 512x512 :  311.1 kpolys/s : [transparency]
   3) 512x512 :  311.0 kpolys/s : []
   4) 512x512 :  310.5 kpolys/s : [small_sphere]
   5) 512x512 :  280.2 kpolys/s : [texture]
   6) 512x512 :  280.1 kpolys/s : [texture, transparency]
   7) 512x512 :  136.2 kpolys/s : [wireframe]

------- DONE (in 572 sec.) -------

*******************************************************************************

Memory footprint during/after the 512x512 test:

  5:22am  up  7:35,  0 users,  load average: 0.03, 0.05, 0.01
72 processes: 71 sleeping, 1 running, 0 zombie, 0 stopped
CPU states:  0.5% user,  0.9% system,  0.0% nice, 98.4% idle
Mem:  258092K av, 254968K used,   3124K free,  17464K shrd,   5240K buff

Swap: 200772K av,  39560K used, 161212K free                 19424K
cached

  PID USER     PRI  NI  SIZE  RSS SHARE STAT  LIB %CPU %MEM   TIME
COMMAND
  787 nuetzel   15  15  263M 257M  2796 S N     0  0.0 102.1  12:40 vtk
  256 root      15   0 57036  51M  1688 S       0  0.5 20.5   2:35 X
 1069 nuetzel   13   0  7640 7640  4052 S       0  0.0  2.9   0:05
xemacs
  283 root       0   0  2084 1264   952 S       0  0.0  0.4   0:02
kpanel
  258 root       0   0  2148 1240   892 S       0  0.0  0.4   0:08 kwm
  361 root       0   0  2304 1240   760 S       0  0.0  0.4   0:09
kpager
  363 root       0   0  2244 1136   692 S       0  0.0  0.4   0:01
konsole
 1070 nuetzel   18   0  1032 1032   828 R       0  0.7  0.3   0:00 top
  359 root       3   0  1752  832   400 S       0  0.1  0.3   0:55
xperfmon++
  452 nuetzel   10   0   940  712   428 S       0  0.0  0.2   0:00 tcsh

[snip]

What does the above warning mean?
Could that be fixed? Mesa?

Second, with the new MesaCVS/3.2 and DRI I have to fix the below stuff.

c++  -O6 -mpentiumpro -march=pentiumpro -malign-double
-mstack-align-double -pipe -fomit-frame-pointer -funroll-loops -fPIC
-DVTK_USE_PTHREADS -D_HP_NO_FAST_MACROS -DHAVE_LIMITS_H -DHAVE_UNISTD_H
-I.  -I. -I./../graphics -DVTK_USE_GRAPHICS -I./../imaging
-DVTK_USE_IMAGING
-I./../patented -DVTK_USE_PATENTED -I./../contrib -DVTK_USE_CONTRIB
-DVTK_USE_OGLR   -I/usr/X11R6/include -I./../common     -c
vtkOpenGLVolumeTextureMapper2D.cxx -o vtkOpenGLVolumeTextureMapper2D.o
vtkOpenGLVolumeTextureMapper2D.cxx: In method `void
vtkOpenGLVolumeTextureMapper2D::Render(vtkRenderer *, vtkVolume *)':
vtkOpenGLVolumeTextureMapper2D.cxx:127: conversion from `int' to `enum
GLenum'
vtkOpenGLVolumeTextureMapper2D.cxx:137: conversion from `int' to `enum
GLenum'
vtkOpenGLVolumeTextureMapper2D.cxx:159: conversion from `int' to `enum
GLenum'
make[1]: *** [vtkOpenGLVolumeTextureMapper2D.o] Error 1
make[1]: Leaving directory `/usr/local/vtk/vtk/graphics'
make: *** [build_graphics] Error 2
162.440u 4.750s 3:48.43 73.1%   0+0k 0+0io 45925pf+0w

SunWave1>diff graphics/vtkOpenGLVolumeTextureMapper2D.cxx
graphics/vtkOpenGLVolumeTextureMapper2D.cxx~
127c127
<       glEnable((GLenum)(GL_CLIP_PLANE0+i));
---
>       glEnable(GL_CLIP_PLANE0+i);
137c137
<       glClipPlane((GLenum)(GL_CLIP_PLANE0+i),planeEquation);
---
>       glClipPlane(GL_CLIP_PLANE0+i,planeEquation);
159c159
<       glDisable((GLenum)(GL_CLIP_PLANE0+i));
---
>       glDisable(GL_CLIP_PLANE0+i);

*******************************************************************************

This fix is needed for the 'new' Glibc-2.1.2 (since 2.1pre) system
library which can be found on most modern Linux distributions (RH
6.0/6.1, S.u.S.E. 6.2, Debian, Slackware...).

c++  -O6 -mpentiumpro -march=pentiumpro -malign-double
-mstack-align-double -pipe -fomit-frame-pointer -funroll-loops -fPIC
-DVTK_USE_PTHREADS -D_HP_NO_FAST_MACROS -DHAVE_LIMITS_H -DHAVE_UNISTD_H
-I.  -I. -I./../graphics -DVTK_USE_GRAPHICS -I./../imaging
-DVTK_USE_IMAGING
-I./../patented -DVTK_USE_PATENTED -I./../contrib -DVTK_USE_CONTRIB
-DVTK_USE_OGLR   -I/usr/X11R6/include -I./../../common -I./..
-I./../../patented -I./../../imaging -c Hanoi.cxx
-o Hanoi.o
Hanoi.cxx: In function `int main(int, char **)':
Hanoi.cxx:142: implicit declaration of function `int getopt(...)'
make: *** [Hanoi.o] Error 1
45.790u 1.740s 0:47.71 99.6%    0+0k 0+0io 13799pf+0w

SunWave1>diff Hanoi.cxx Hanoi.cxx~
26d25
< #include <getopt.h>

Maybe it should be something like:

#ifdef (__LINUX__ && __GLIBC__ >= 2.1)
    #include <getopt.h>
#endif

(from memory:-)

*******************************************************************************

Third:

Have anyone of you some experience with VTK on Linux SMP?
How does it perform?
I will put my fingers on it as soon SMP mobos for the Athlon came out.

Regards and many thanks for your great VTK!
                                                -Dieter

BTW
Please switch to a newer Linux distro on your testing machine.
I did/do some kernel device driver hacking for the above stuff.
--
Dieter Nützel
Graduate Student, Computer Science

University of Hamburg
Department of Computer Science
Cognitive Systems Group
Vogt-Kölln-Straße 30
D-22527 Hamburg, Germany

email: nuetzel at kogs.informatik.uni-hamburg.de
@home: dieter.nuetzel at myokay.net




-----------------------------------------------------------------------------
This is the private VTK discussion list.  Please keep messages on-topic.
Check the FAQ at: <http://www.automatrix.com/cgi-bin/vtkfaq>
To UNSUBSCRIBE, send message body containing "unsubscribe vtkusers" to
<majordomo at gsao.med.ge.com>.  For help, send message body containing
"info vtkusers" to the same address.     Live long and prosper.
-----------------------------------------------------------------------------




More information about the vtkusers mailing list