Visualization: graphics cards and 3D: Difference between revisions

From CCP4 wiki
Jump to navigation Jump to search
(Added dual desktop support for Nvidia drivers - might be superseded with new driver versions!)
 
(20 intermediate revisions by 6 users not shown)
Line 1: Line 1:
== graphics cards and drivers ==
== graphics cards and drivers (Linux) ==


* [http://www.nvidia.com NVidia] (proprietary driver download for Linux at [http://www.nvidia.com/object/unix.html]; "Latest cards" list at [http://www.nvidia.com/object/IO_18897.html], "Legacy cards" list at [http://www.nvidia.com/object/IO_32667.html]). RedHat/Fedora/Debian/[K]Ubuntu installation information can be found at [http://www.nvnews.net/vbulletin/showthread.php?t=72490]. In particular, for RedHat/Fedora one needs to install the kernel-devel RPM package.
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 [[Operating_systems_and_Linux_distributions#Linux_Distributions|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.


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 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).
 
* [http://www.nvidia.com NVidia] - proprietary driver download for Linux at [http://www.nvidia.com/object/unix.html]
* "Latest cards" list at [http://www.nvidia.com/object/IO_18897.html]
* "Legacy cards" list at [http://www.nvidia.com/object/IO_32667.html]
* RedHat/Fedora/Debian/[K]Ubuntu installation information can be found at [http://www.nvnews.net/vbulletin/showthread.php?t=72490]. 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":


<code>  
<code>  
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
</code>
=== 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
  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."
   echo "re-installing NVIDIA driver. This takes some time. Ignore any warnings."
   /root/NVIDIA.run --no-network -s -n
   /root/NVIDIA.run --no-network -s -n
Line 15: Line 59:
   /root/NVIDIA.run --no-network -s -K -n
   /root/NVIDIA.run --no-network -s -K -n
  fi
  fi
</code>


If everything is ok with the driver you get the following output from "glxinfo|head":
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 [https://bbs.archlinux.org/viewtopic.php?pid=881549] and [http://linux-hybrid-graphics.blogspot.com/]
 
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 ==


<code>
ATI now belongs to AMD. Download the proprietary driver from http://ati.amd.com .
name of display: :0.0
Recently the (open source) [http://www.free3d.org/ radeon driver] shipped with [http://www.x.org 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.
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
</code>


Sometimes it 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:
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):


<code>
* yum install system-config-display
Section "Monitor"
* yum install radeonhd
    Identifier    "Monitor0"
* system-config-display
    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"


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


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


== Intel ==


* [[ATI]] (now belonging to AMD) (proprietary driver download at http://ati.amd.com)
The X3100 graphics accelerator is known to be quite fast. FIXME: does it require special drivers?


== Table of Cards and drivers ==
{| border="1" cellpadding="0"
|-
|width="70pt"|Brand
|width="100pt"|Model number
|width="100pt"|Distro and/or OS
|width="70pt"|Working ?
|width="100pt"|Driver
|width="200pt"|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
|}


== 3D ==
== See also ==
* [[3D visualization]]
* [[Stereo]]

Latest revision as of 09:39, 12 September 2011

graphics cards and drivers (Linux)[edit | edit source]

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[edit | edit source]

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[edit | edit source]

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[edit | edit source]

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[edit | edit source]

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[edit | edit source]

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[edit | edit source]

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

Table of Cards and drivers[edit | edit source]

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[edit | edit source]