Visualization: graphics cards and 3D

graphics cards and drivers

  • NVidia (proprietary driver download for Linux at [1]; "Latest cards" list at [2], "Legacy cards" list at [3]). RedHat/Fedora/Debian/[K]Ubuntu installation information can be found at [4]. In particular, for RedHat/Fedora one needs to install the kernel-devel RPM package.

The proprietary driver works well but it needs a bit of care. On RedHat systems that are regularly booted, the following lines in /etc/rc.local result in the necessary parts of the driver being re-installed automatically after booting:

if [ ! -h /usr/lib/xorg/modules/extensions/libglx.so ]; then
  echo "re-installing NVIDIA driver. This takes some time. Ignore any warnings."
  /root/NVIDIA.run --no-network -s -n
fi

if [ ! -e /lib/modules/`uname -r`/kernel/drivers/video/nvidia.ko ]; then
  echo "installing NVIDIA kernel module. This takes some time. Ignore any warnings."
  /root/NVIDIA.run --no-network -s -K -n
fi

This requires that you first "chmod +x" the driver package (e.g. NVIDIA-Linux-x86-169.04-pkg1.run) downloaded from the NVidia site, and then establish a symbolic link from it, to /root/NVIDIA.run . If everything is ok with the driver you get the following output from "glxinfo|head":

name of display: :0.0
display: :0  screen: 0
direct rendering: Yes
server glx vendor string: NVIDIA Corporation
server glx version string: 1.4
server glx extensions:
   GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_SGIX_fbconfig,
   GLX_SGIX_pbuffer, GLX_SGI_video_sync, GLX_SGI_swap_control,
   GLX_EXT_texture_from_pixmap, GLX_ARB_multisample, GLX_NV_float_buffer
client glx vendor string: NVIDIA Corporation


Sometimes it is handy to configure two Desktops: one on a CRT monitor that can do stereo-graphics, and one on an LCD monitor for the more regular work, eg your refinement jobs with CCP4. For Nvidia cards you need to modify the xorg.conf file to have a section more or less like that:

Section "Monitor"
   Identifier     "Monitor0"
   VendorName     "Iiyama"
   ModelName      "Vision Master Pro 512"
   DisplaySize     450      330
   HorizSync       31.5 - 120.0
   VertRefresh     50.0 - 150.0
   Option         "dpms"
EndSection
Section "Monitor"
   Identifier     "Monitor1"
   VendorName     "Philips"
   ModelName      "150B"
EndSection
Section "Device"
   Identifier     "Videocard0"
   Driver         "nvidia"
   VendorName     "Videocard vendor"
   BoardName      "NVIDIA Quadro FX (generic)"
   BusId          "PCI:1:0:0"
   Screen         0
EndSection
Section "Device"
   Identifier     "Videocard1"
   Driver         "nvidia"
   VendorName     "Videocard vendor"
   BoardName      "NVIDIA Quadro FX (generic)"
   Option         "Stereo" "3"
   BusId          "PCI:1:0:0"
   Screen         1
EndSection
Section "Screen"
   Identifier     "Screen0"
   Device         "Videocard0"
   Monitor        "Monitor0"
   DefaultDepth    24 
   SubSection     "Display"
       Viewport    0 0
       Depth       24 
       Modes      "1024x768" "800x600"
   EndSubSection
EndSection
Section "Screen"
   Identifier     "Screen1"
   Device         "Videocard1"
   Monitor        "Monitor1"
   DefaultDepth    24 
   SubSection     "Display"
       Viewport    0 0
       Depth       24 
       Modes      "1600x1280" "1280x1024" "1024x768" "800x600"

Note that one can think this is rather silly to define two card, two monitors, two cards, and two screens. However, that the only way I know that one monitor can be streo-enabled and the other one not.


3D