Visualization: graphics cards and 3D

graphics cards and drivers (Linux)

For 3D applications like COOT and O, only recently (2007) cheap hardware has become fast enough to not require proprietary drivers for decent performance. Proprietary drivers (for NVidia, ATI and Intel chips) are usually not open-source and are thus not distributed with the Linux distros. Some distros make it easy to install them through their installation tools; for other distros you have to install and maintain them yourself.

If the open-source Xorg driver (i.e. no proprietary driver) is installed, the output of "glxinfo|head" is something like:

name of display: :0.0
display: :0  screen: 0
direct rendering: No
server glx vendor string: SGI
server glx version string: 1.2
server glx extensions:
    GLX_ARB_multisample, GLX_EXT_visual_info, GLX_EXT_visual_rating,
    GLX_EXT_import_context, GLX_EXT_texture_from_pixmap, GLX_OML_swap_method,
    GLX_SGI_make_current_read, GLX_SGIS_multisample, GLX_SGIX_hyperpipe,
    GLX_SGIX_swap_barrier, GLX_SGIX_fbconfig, GLX_MESA_copy_sub_buffer
client glx vendor string: SGI

NVidia

NVidia cards are most popular for visualization in protein crystallography. The proprietary driver (called "nvidia" driver in xorg.conf) is stable, and even the cheapest cards are suitable for crystallographic work when it is used. Some mid-range graphics cards (starting with GeForce x600) are fast enough for useful 3D work even with the drivers that are part of Xorg (called "nv" driver in xorg.conf).

  • 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. Other than this, the information in that posting seems a bit overkill - the NVidia driver usually works very well without any SElinux jiggling.

checking the integrity of the NVidia driver

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

maintaining the NVidia driver

The proprietary driver works well but it needs a bit of care. More to the point: parts of it need to be re-installed after kernel updates and updates of xorg-x11-* (both of which happen regularly). 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 automagically after booting:

if [ ! -h /usr/lib/xorg/modules/extensions/libglx.so ]; then
#  this should be /usr/lib64/xorg/modules/extensions/libglx.so on a 64bit machine !
  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 .

Newer distributions using SELinux may encounter problems with restrictions that prevent init scripts from executing certain commands related to kernel modules. Creating an SELinux rule exception is the correct solution, but may be difficult. A work-around is to insert "/usr/bin/setenforce 0" before running the NVIDIA installer, and "/usr/bin/setenforce 1" afterwards.

ATI

ATI now belongs to AMD. Download the proprietary driver from http://ati.amd.com . Recently the (open source) radeon driver shipped with Xorg has improved DRI capabilities that are often sufficient for crystallographic purposes, and the need to hastle with the installation of the propriety driver has become void.

Intel

The X3100 graphics accelerator is known to be quite fast. FIXME: does it require special drivers?

See also