== Tksurfer display problems and solutions ==
The surface display app 'tksurfer' is an X11-app making use of OpenGL for graphics rendering. The complexity of this sort of app is [[http://www.virtualgl.org/About/Background|described in detail here]].
The most common problem encountered in using tksurfer for the first time on a system, or over a VNC connection, is the 'sliver' problem, where just a 'sliver' of the surface is displayed, as shown in the bottom-left of this picture:
<
>
{{attachment:tksurfer_sliver.jpg}}
There are a few potential solutions you can try to overcome this problem:
=== NVidia driver update ===
If your system has an Nvidia graphics driver, then updating this to the latest version often times fixes the problem. To do this:
{{{
su root
/sbin/init 3
/usr/bin/nvidia-installer --update
}}}
Follow the instructions of the installer
=== ATI driver update ===
If your system has an ATI graphics driver, updating to the latest version (Catalyst 10.2 or newer) has fixed the problem. Disabling SELinux is necessary prior to attempting this update: http://www.crypt.gen.nz/selinux/disable_selinux.html
=== doublebufferflag ===
tksurfer can read a flag which controls rendering. Setting that flag has been known to fix the sliver problem. To do this, in csh:
{{{
setenv doublebufferflag 1
}}}
In bash:
{{{
export doublebufferflag=1
}}}
Then start tksurfer.
=== VirtualGL ===
[[http://www.virtualgl.org/|The VirtualGL project]] is software that would be appropriate if your sliver problem appears when using a VNC connection, where often its the case that the local OpenGL renderer (for instance, on your laptop) doesnt fully support GLX. So you would download and install VirtualGL on your server (your sysadmin would do this), then you would run ssh or vnc from your client computer to the application server, then run:
{{{
/opt/VirtualGL/bin/vglrun tksurfer bert lh inflated
}}}
=== Override native graphics libraries ===
It might be the case that the graphics libraries installed when the Nvidia or ATI card is installed overwrites the natively installed drivers, that is, overwrites libGL.so.1.2 from Mesa that comes with !RedHat. A solution at the NMR Center is to keep a copy of those libs elsewhere prior to conducting any driver update, so that those drivers can be used via LD_LIBRARY_PATH later if the newly installed drivers fail in some circumstance (typically when used in a VNC situation). In the NMR Center, this is done by including this in your .cshrc file or setting prior to running tksurfer:
{{{
setenv LD_LIBRARY_PATH /usr/lib64/GLoverride:/usr/lib/GLoverride
}}}
=== VirtualBox ===
You can run a virtual machine that runs freesurfer. There is a !VirtualBox version of freesurfer available for Windows from the
[[http://surfer.nmr.mgh.harvard.edu/fswiki/Download|freesurfer download site]]. See the README associated with it for installation instructions.
Note: !VirtualBox does seem to support GLX as section 4.9 of the manual here explains:
http://download.virtualbox.org/virtualbox/3.1.2/UserManual.pdf
It says it is experimental and has some very specific requirements. One of which is Xorg 1.5 or higher and CentOS 5 has only Xorg 1.1. So you would have to try Ubuntu 8.10 or Fedora 10 or higher. The !VirtualBox download linked above is to an Ubuntu vm so GLX apps like tksurfer should work.
Vmware does not support GLX. We found this out on a Mac, trying to use VMware Fusion to run CentOS.
=== Freeview ===
If all else fails, and tksurfer still doesnt work, you can try using a new app call freeview slated to replace tkmedit and tksurfer, once enough functionality is incorporated. To run it, see the help:
{{{
freeview --help
}}}
Example:
{{{
cd
freeview --volume mri/T1.mgz \
--surface surf/lh.white \
--surface surf/rh.white \
--surface surf/lh.pial:annot=aparc.annot \
--surface surf/rh.pial:annot=aparc.annot
}}}
=== Mac Tksurfer ===
See [[MacTksurfer]]