Visualization: graphics cards and 3D

From CCP4 wiki
Revision as of 09:39, 12 September 2011 by Kay (talk | contribs) (→‎Hybrid graphics)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

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.

The RPM way of maintaining the NVidia driver nowadays can be found at http://elrepo.org/tiki/kmod-nvidia . This is preferable to the DKMS way that RPMforge provides.

Hybrid graphics

See [5] and [6]

To test the nvidia driver: blacklist the nouveau and intel graphic modules, disable kernel mode-setting, and boot to runlevel 3 - all via the following kernel command line args:

nouveau.disable=1 intel.disable=1 nomodeset 3  <--append this to grub kernel line

Then run nvidia's xorg creation tool (nvidia-xconfig). Give X a try and see if it works.

If that wont work, black list nouveau and nvidia, and try the intel module (delete the xorg.conf made by nvidia-xconfig):

nouveau.disable=1 nomodeset 3  <-- append this to grub kernel line

The elrepo.org kmod-nvidia package already disables nouveau mode-setting (nouveau.modeset=0), blacklists the nouveau driver and runs nvidia-xconfig to create a suitable xorg.conf file.

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.

If you are experiencing problems with Coot and ATI graphic cards with rv5xx chipset on FC10, you should switch from the 'radeon' driver to 'radeonhd', for example in the following way (as root):

  • yum install system-config-display
  • yum install radeonhd
  • system-config-display

Now you can conveniently change the graphic card driver via a graphical interface, then restart X windows

Unfortunately, you have to disable 3D desktop effects, otherwise you get a blank screen and have to undo the settings via terminal. Furthermore, do not try to use the proprietary ATI 'fglrx' drivers, since they made things even worse, at least in my personal experience (with an ATI Radeon X1650).

Intel

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

Table of Cards and drivers

Brand Model number Distro and/or OS Working ? Driver Remarks
ATI Radeon X1300 Ubuntu 8.10 - Intrepid Ibex Yes fglrx automagically installed from Ubuntu
ATI Radeon 9200 Ubuntu 8.10 - Intrepid Ibex Yes open source radeon automagically installed from Ubuntu
Nvidia Quadro FX 1400 SuSe 10.2 Yes Nvidia installed from SuSE repos

See also