Difference between revisions of "VTK/OpenGL"

From KitwarePublic
< VTK
Jump to navigationJump to search
 
(33 intermediate revisions by 10 users not shown)
Line 1: Line 1:
==ATI Open GL Driver on Linux==
+
'''THIS INFORMATION IS OUT OF DATE AND SHOULD NOT BE USED'''--[[User:Burlen|Burlen]] 15:50, 11 November 2013 (EST)
 
+
= Linux =
 +
==ATI Open GL Driver==
  
 
===ATI Driver on Debian GNU/Linux===
 
===ATI Driver on Debian GNU/Linux===
  
How to get OpenGL ATI driver working on a linux debian system.
+
http://wiki.cchtml.com/index.php/Debian_Installation_Guide#Compile_the_kernel_driver
  
This wiki page is based on:
+
I tested Method1 only
http://www.watchland.org/dmcgraw/ati-debian.html
+
--[[User:Mathieu|Mathieu]] 22:53, 17 October 2006 (EDT)
  
* Download the RPM from ATI (it should match your for XFree version)
 
  
Go to: http://ati.com/support/driver.html
 
  
* Use 'alien' to change the rpm into a tarball (alien -t), then extract at file system root level:
+
===ATI Driver on Fedora 2===
 +
Other (untested) How To:
 +
* Fedora 2:
 +
http://www.redhat.com/archives/fedora-list/2004-May/msg06859.html
  
  cd /
+
===Debugging the ATI libGL===
  sudo tar xvfz fglrx-4.3.0.tgz
 
  
* Install the kernel headers for your kernel
+
Some env var you should remember:
  
apt-get install kernel-headers-`uname -r`
+
  LIBGL_ALWAYS_INDIRECT=1
  
* Install the kernel-source package for your kernel
+
  LIBGL_VERBOSE=1
  
apt-get install kernel-source-<ver>
+
  LIBGL_DEBUG=verbose
  
* Create a symlink for /usr/src/linux to the kernel-headers. Technically this isn't needed, but it makes it easier to keep things straight.
+
===Documentation for fglrx options===
 +
Daniel Leidert wrote a man page at:
  
ln -s /usr/src/kernel-headers-`uname -r` /usr/src/linux
+
* http://www.stanchina.net/~flavio/debian/fglrx-archive/msg01017.html
 +
* http://cvs.wgdd.de/cgi-bin/cvsweb/fglrx_man/
 +
* [http://ati.cchtml.com/ Unofficial bug tracker: http://ati.cchtml.com/]
 +
* [http://gentoo-wiki.com/HOWTO_ATI_Drivers HOWTO ATI Drivers]
  
* Build & Install the module
+
==nVidia Open GL Driver on Linux==
  
cd /lib/modules/fglrx/build_mod
+
===nVidia Driver on Debian GNU/Linux===
  
sudo sh make.sh
+
How to get OpenGL nVidia driver working on a linux debian system.
  
cd ..
+
First thing you need to do is allow non-free packages from your sources.list file.
  
sudo sh make_install.sh
+
  # Be carefull only for nvidia-kernel-source
 +
  deb http://ftp.us.debian.org/debian/ stable main ''non-free'' contrib
  
* Optionally (but I recommend it to at least learn the options you can use) run fglrxconfig to generate a XF86Config-4 file
 
  
* To build VTK you may still need the OpenGL header file:
+
  sudo apt-get update
 +
  sudo apt-get install nvidia-glx-dev nvidia-settings nvidia-xconfig
 +
  sudo nvidia-xconfig
  
  sudo apt-get install xlibmesa-gl-dev
+
IMPORTANT: You have to be careful when you read the articles about this process around Internet! Because many of the documents around internet are very old. Since Debian 5.0(Lenny) you don't have to build your own kernel module. Pre-built packages are working perfectly.
  
Some more info depending on your kernel:
+
CAUTION: A very new flagship graphic card will probably not be supported by the pre-built package. You may try one in experimental or unstable release. You may end up with replacing you card or building it from the scratch.
 +
If you build from the scratch, please refer the document to keep your work in Debian way.
  
- For a 2.4.x kernel
+
  http://wiki.debian.org/NvidiaGraphicsDrivers
  
  Edit a couple of locations in the ATI make.sh script. Really you just need to check/set 2 variables.
+
===nVidia Driver on Ubuntu ===
  - First search for linuxincludes. Make sure that is set to /usr/src/linux/include (if you made the symlink above).
 
  - Then search for drmincludes. Make sure that is set to /usr/src/kernel-source-<ver>drivers/char/drm
 
  
- For a 2.6.x kernel
+
The Wiki page is fairly simple just linking to [http://ubuntulinux.org/wiki/BinaryDriverHowto it]
  
  * Create a symlink for the modules build directory
+
Since the debian way seems to be broken http://packages.ubuntu.com/hoary/misc/java-package, here is how to install Java on [http://www.ubuntulinux.org/wiki/Java ubuntu].
  
  ln -s /usr/src/linux /lib/modules/`uname-r`/build
+
= Mac OS X =
 +
== Corrupted Display ==
 +
If it happens with an ATI card from the r600 series (2600 XT) or the r500 series (older series) or with an nVidia GeForce 7 series, you probably had called SetStereoWindowCapable(true) on the RenderWindow. This a driver bug, known by Apple. The only workaround is to call SetStereoWindowCapable(false).
  
  * Change the kernel headers to reference the kernel source package's drm include
+
ref: [http://www.vtk.org/Bug/view.php?id=9191 VTK bug report], [http://lists.apple.com/archives/x11-users/2009/Jun/msg00135.html thread on the Apple mailing list]
  
  * cd /usr/src
+
= Mesa, Off Screen Mesa, Mangled Mesa =
  
  * tar -jxvf kernel-source-<ver>.tar.bz2
 
  
  * cd linux/drivers/char
+
Various setups:
  
  * mv drm drm.original
+
* Pure OpenGL
 +
* Pure Mesa (no hardware and it has off screen natively)
 +
* OpenGL + Mangled Mesa (hardware on-screen and software off-screen)
  
  * ln -s /usr/src/kernel-source-<ver>drivers/char/drm drm
+
==Pure Mesa==
  
 +
* Enable ''VTK_OPENGL_HAS_OSMESA''
 +
* Set the following values to apropriate locations:
  
===ATI Driver on Debian GNU/Linux, the debian way ===
+
OSMESA_INCLUDE_DIR /.../include
 +
OSMESA_LIBRARY    /.../lib/libOSMesa.a
  
Another source for getting the ATI driver working on Debian is:
+
==OpenGL + Off screen==
[http://xoomer.virgilio.it/flavio.stanchina/debian/fglrx-installer.html] or
 
[http://www.stanchina.net/~flavio/debian/fglrx-installer.html] (seems more up to date)
 
  
This site provides binary .debs for everything but the kernel module. It
+
To do hardware rendering (on screen) and software rendering (off screen) within the same application, you will have to use mangled mesa. Mangled mesa is build using all symbols mangled.
provides a source .deb for the module.
 
  
The latest version of the ATI driver does not require full kernel sources to
+
You may want to first look at article [[VTK:How I mangled Mesa|How I Mangled Mesa]].
build the module.  You just need a kernel header package.  I used debs from the
 
site cited above, installed the header package corresponding to the official
 
binary kernel that I am running, and used ATI's "make.sh" script (comes with the
 
kernel module source .deb) to build the fglrx.ko module.  I installed fglrx.ko
 
by hand.
 
  
I suggest that using these ready to go, but unoffical .debs is far easier than
+
===Build Mangled Mesa===
going the alien route.
 
  
----
+
The following refers to Mesa 6.2.*
  
===ATI Driver on Fedora 2===
+
Edit apropriate system configuration file. On Linux, for example, if you are building static, edit the file:
Other (untested) How To:
 
* Fedora 2:
 
http://www.redhat.com/archives/fedora-list/2004-May/msg06859.html
 
 
 
===Related Information===
 
 
 
* Some links:
 
Support for ATI Radeon & FireGL graphics cards on Linux
 
http://www.wlug.org.nz/RadeonNotes
 
 
 
Some FireGL driver:
 
http://www.schneider-digital.de/html/download_ati.php
 
 
 
Installing ATI-Drivers on Debian Linux(nforce2 chipset)
 
http://www.g-tec.co.at/ati.html
 
 
 
Another [http://www.gmpf.de/ ATI-Radeon-Linux-Howto] which is also available in german.
 
 
 
This [http://www.rage3d.com/content/articles/atilinuxhowto/ ATI-Radeon-Linux-Howto] also includes information about installing the drivers on other distributions.
 
  
[http://xoomer.virgilio.it/flavio.stanchina/debian/fglrx-installer.html ATI Linux driver packages for Debian] Another HowTo for Debian, also includes Debian packages and reports of working setups.
+
/path/to/source/config/linux-static
  
A [http://www2.ati.com/drivers/linux/readme0328.txt link] to ATI web site where to find some documentation about the XFree86 file option generated from fglrxconfig
+
Edit the CFLAGS line and add the following at the end of CFLAGS and CXXFLAGS:
  
 +
-DUSE_MGL_NAMESPACE
  
==nVidia Open GL Driver on Linux==
+
Then edit file:
  
===nVidia Driver on Debian GNU/Linux===
+
/path/to/source/config/default
  
How to get OpenGL nVidia driver working on a linux debian system.
+
And rename the standard names for the libraries, for example:
  
This wiki page is based on:
+
# Library names (base name)
 +
GL_LIB = MesaGL
 +
GLU_LIB = MesaGLU
 +
GLUT_LIB = MesaGlut
 +
GLW_LIB = MesaGLw
 +
OSMESA_LIB = MesaOSMesa
  
http://home.comcast.net/~andrex/Debian-nVidia/index.html
+
===Setup VTK===
  
First thing you need to do is allow unstable from your sources.list file otherwise even the assistant will fail to load the nvidia-kernel-source package
+
* Disable VTK_OPENGL_HAS_OSMESA
  
  # Be carefull only for nvidia-kernel-source
+
* Make sure OpenGL settings are set to the hardware OpenGL library:
  deb http://ftp.us.debian.org/debian/ unstable main non-free contrib
 
  
Another extremely important note is the matching gcc version. Be carefull that on debian most of the binary are build with gcc 3.3 , do not use gcc 3.4 or gcc 2.95 (make sure that CC is not set to anything particular).
+
OPENGL_INCLUDE_DIR              /usr/include                                                                                                                         
 +
OPENGL_gl_LIBRARY                /usr/lib/libGL.so                                                                                                                     
 +
OPENGL_glu_LIBRARY              /usr/lib/libGLU.so                                                                                                                   
  
 +
* Enable VTK_USE_MANGLED_MESA
  
The installation process of the nvidia library seems to be broken and noone has been working on it since two years:
+
* Set mangled mesa options:
  
See [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=208198 Debian bug #208198]
+
MANGLED_MESA_INCLUDE_DIR        /.../include
 +
MANGLED_MESA_LIBRARY            /.../lib/libMesaGL.a
 +
MANGLED_OSMESA_INCLUDE_DIR      /.../include
 +
MANGLED_OSMESA_LIBRARY          /.../lib/libMesaOSMesa.a
  
See also http://home.comcast.net/~andrex/Debian-nVidia/troubleshooting.html Section: Hardware acceleration, aka direct rendering, doesn't work.
+
===Use of Mangled Mesa===
  
IMPORTANT: Seems like you need to install: xlibmesa-gl-dev AND then nvidia-glx-dev !
+
* For all mangled mesa calls, the vtk*Mesa* classes need to be used. For example, instead of vtkRenderWindow, vtkXMesaRenderWindow must be used. The full list of classes is:
  
 +
<pre>vtkXMesaRenderWindow
 +
vtkMesaActor
 +
vtkMesaCamera
 +
vtkMesaImageActor
 +
vtkMesaLight
 +
vtkMesaProperty
 +
vtkMesaPolyDataMapper
 +
vtkMesaRenderer
 +
vtkMesaTexture
 +
vtkMesaVolumeTextureMapper2D
 +
vtkMesaVolumeRayCastMapper
 +
vtkMesaRayCastImageDisplayHelper
 +
vtkMesaFreeTypeTextMapper
 +
vtkMesaImageMapper
 +
vtkMesaPolyDataMapper2D</pre>
  
===nVidia Driver on Ubuntu ===
+
* To make Mangled mesa to be default, do the following at beginning of the program:
  
The Wiki page is fairly simple just linking to [http://ubuntulinux.org/wiki/BinaryDriverHowto it]
+
vtkGraphicsFactory::SetUseMesaClasses(1);
 +
vtkImagingFactory::SetUseMesaClasses(1);
  
Since the debian way seems to be broken http://packages.ubuntu.com/hoary/misc/java-package, here is how to install Java on [http://www.ubuntulinux.org/wiki/Java ubuntu].
+
{{VTK/Template/Footer}}

Latest revision as of 15:50, 11 November 2013

THIS INFORMATION IS OUT OF DATE AND SHOULD NOT BE USED--Burlen 15:50, 11 November 2013 (EST)

Linux

ATI Open GL Driver

ATI Driver on Debian GNU/Linux

http://wiki.cchtml.com/index.php/Debian_Installation_Guide#Compile_the_kernel_driver

I tested Method1 only --Mathieu 22:53, 17 October 2006 (EDT)


ATI Driver on Fedora 2

Other (untested) How To:

  • Fedora 2:

http://www.redhat.com/archives/fedora-list/2004-May/msg06859.html

Debugging the ATI libGL

Some env var you should remember:

 LIBGL_ALWAYS_INDIRECT=1
 LIBGL_VERBOSE=1
 LIBGL_DEBUG=verbose

Documentation for fglrx options

Daniel Leidert wrote a man page at:

nVidia Open GL Driver on Linux

nVidia Driver on Debian GNU/Linux

How to get OpenGL nVidia driver working on a linux debian system.

First thing you need to do is allow non-free packages from your sources.list file.

 # Be carefull only for nvidia-kernel-source
 deb http://ftp.us.debian.org/debian/ stable main non-free contrib


 sudo apt-get update
 sudo apt-get install nvidia-glx-dev nvidia-settings nvidia-xconfig
 sudo nvidia-xconfig

IMPORTANT: You have to be careful when you read the articles about this process around Internet! Because many of the documents around internet are very old. Since Debian 5.0(Lenny) you don't have to build your own kernel module. Pre-built packages are working perfectly.

CAUTION: A very new flagship graphic card will probably not be supported by the pre-built package. You may try one in experimental or unstable release. You may end up with replacing you card or building it from the scratch. If you build from the scratch, please refer the document to keep your work in Debian way.

 http://wiki.debian.org/NvidiaGraphicsDrivers

nVidia Driver on Ubuntu

The Wiki page is fairly simple just linking to it

Since the debian way seems to be broken http://packages.ubuntu.com/hoary/misc/java-package, here is how to install Java on ubuntu.

Mac OS X

Corrupted Display

If it happens with an ATI card from the r600 series (2600 XT) or the r500 series (older series) or with an nVidia GeForce 7 series, you probably had called SetStereoWindowCapable(true) on the RenderWindow. This a driver bug, known by Apple. The only workaround is to call SetStereoWindowCapable(false).

ref: VTK bug report, thread on the Apple mailing list

Mesa, Off Screen Mesa, Mangled Mesa

Various setups:

  • Pure OpenGL
  • Pure Mesa (no hardware and it has off screen natively)
  • OpenGL + Mangled Mesa (hardware on-screen and software off-screen)

Pure Mesa

  • Enable VTK_OPENGL_HAS_OSMESA
  • Set the following values to apropriate locations:
OSMESA_INCLUDE_DIR /.../include
OSMESA_LIBRARY     /.../lib/libOSMesa.a

OpenGL + Off screen

To do hardware rendering (on screen) and software rendering (off screen) within the same application, you will have to use mangled mesa. Mangled mesa is build using all symbols mangled.

You may want to first look at article How I Mangled Mesa.

Build Mangled Mesa

The following refers to Mesa 6.2.*

Edit apropriate system configuration file. On Linux, for example, if you are building static, edit the file:

/path/to/source/config/linux-static

Edit the CFLAGS line and add the following at the end of CFLAGS and CXXFLAGS:

-DUSE_MGL_NAMESPACE

Then edit file:

/path/to/source/config/default

And rename the standard names for the libraries, for example:

# Library names (base name)
GL_LIB = MesaGL
GLU_LIB = MesaGLU
GLUT_LIB = MesaGlut
GLW_LIB = MesaGLw
OSMESA_LIB = MesaOSMesa

Setup VTK

  • Disable VTK_OPENGL_HAS_OSMESA
  • Make sure OpenGL settings are set to the hardware OpenGL library:
OPENGL_INCLUDE_DIR               /usr/include                                                                                                                           
OPENGL_gl_LIBRARY                /usr/lib/libGL.so                                                                                                                      
OPENGL_glu_LIBRARY               /usr/lib/libGLU.so                                                                                                                     
  • Enable VTK_USE_MANGLED_MESA
  • Set mangled mesa options:
MANGLED_MESA_INCLUDE_DIR        /.../include
MANGLED_MESA_LIBRARY            /.../lib/libMesaGL.a
MANGLED_OSMESA_INCLUDE_DIR      /.../include
MANGLED_OSMESA_LIBRARY          /.../lib/libMesaOSMesa.a

Use of Mangled Mesa

  • For all mangled mesa calls, the vtk*Mesa* classes need to be used. For example, instead of vtkRenderWindow, vtkXMesaRenderWindow must be used. The full list of classes is:
vtkXMesaRenderWindow
vtkMesaActor
vtkMesaCamera
vtkMesaImageActor
vtkMesaLight
vtkMesaProperty
vtkMesaPolyDataMapper
vtkMesaRenderer
vtkMesaTexture
vtkMesaVolumeTextureMapper2D
vtkMesaVolumeRayCastMapper
vtkMesaRayCastImageDisplayHelper
vtkMesaFreeTypeTextMapper
vtkMesaImageMapper
vtkMesaPolyDataMapper2D
  • To make Mangled mesa to be default, do the following at beginning of the program:
vtkGraphicsFactory::SetUseMesaClasses(1);
vtkImagingFactory::SetUseMesaClasses(1);



VTK: [Welcome | Site Map]