#!/bin/sh # Copyright (C)2004 Landmark Graphics Corporation # Copyright (C)2005 Sun Microsystems, Inc. # Copyright (C)2009-2011 D. R. Commander # # This library is free software and may be redistributed and/or modified under # the terms of the wxWindows Library License, Version 3.1 or (at your option) # any later version. The full license is in the LICENSE.txt file included # with this distribution. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # wxWindows Library License for more details. # The interpreter to use (if this script is submitted to N1 Grid Engine): #$ -S /bin/sh # # This allocates a graphics device and passes it in the VGL_DISPLAY # environment: #$ -l gfx=1 # # Specify other environment variables that N1GE should pass to this script: #$ -v DISPLAY #$ -v SSH_CLIENT #$ -v VGL_CLIENT #$ -v VGL_COMPRESS #$ -v VGL_PORT #$ -v VGL_SSL #$ -v VGL_GLLIB #$ -v VGL_X11LIB #$ -v VGL_GAMMA #$ -v VGL_PROGRESSIVE #$ -v VGL_NPROCS usage() { echo echo "Usage: `basename $0` [options] [--] [OpenGL app arguments]" echo echo "VirtualGL options (see documentation for a more comprehensive list)" echo echo "-c : proxy = Send 3D images uncompressed using X11 Transport" echo " [default for local X connections]" echo " jpeg = Compress 3D images using JPEG/send using VGL Transport" echo " [default for remote X connections]" echo " rgb = Encode 3D images as RGB/send using VGL Transport" echo " xv = Encode 3D images as YUV420P/send using XV Transport" echo " yuv = Encode 3D images as YUV420P/send using the VGL Transport" echo " and display on the client using X Video" echo " [If an image transport plugin is being used, then can be any" echo " number >= 0 (default=0).]" echo echo "-nodl : If an app uses dlopen() to explicitly access libGL.so, don't" echo " force it to open VirtualGL instead (see docs)" echo echo "-d : = the X Display to use for 3D rendering [default = :0.0]" echo echo "-fps : Limit client/server frame rate to frames/sec" echo echo "-gamma : Set gamma correction factor to (see docs)" echo echo "-ge : Fool application into thinking that LD_PRELOAD is unset" echo echo "-ms : Force VirtualGL to use OpenGL multisampling with " echo " samples ( = 0 forces multisampling to be disabled)" echo echo "-np : Use CPUs to perform image compression [default = 1]" echo echo "+/-pr : Enable/disable performance profiling output [default = disabled]" echo echo "-q : Compression quality [1 <= <= 100]" echo " [default = 95 for JPEG/VGL Transport. Has no effect with" echo " X11 Transport]" echo echo "-samp : Chrominance subsampling factor" echo " = gray, 1x, 2x, 4x" echo " [default = 1x for JPEG/VGL Transport. Has no effect with" echo " X11 Transport or RGB encoding]" echo echo "+/-s : Enable/disable SSL encryption of VGL Transport or custom" echo " image transport, if applicable." echo " [default = disabled. Has no effect on the VGL Transport unless" echo " VirtualGL was built with OpenSSL support]" echo echo "+/-sp : Turn on/off frame spoiling [default = enabled]" echo echo "-st : left = Send only left eye buffer of stereo application" echo " right = Send only right eye buffer of stereo application" echo " quad = Use quad-buffered stereo if available, otherwise use" echo " red/cyan (anaglyphic) stereo [default]" echo " rc = Always use red/cyan (anaglyphic) stereo" echo echo "+/-sync : Enable/disable strict 2D/3D synchronization [default = disabled]" echo echo "+/-tr : Enable/disable function call tracing (generates a lot of output)" echo " [default = disabled]" echo echo "-trans : Use transport plugin contained in library libvgltrans_.so" echo echo "+/-v : Enable/disable verbose VirtualGL messages [default = disabled]" echo echo "-64 : (Solaris only) Preload VirtualGL only into 64-bit apps" echo "-32 : (Solaris only) Preload VirtualGL only into 32-bit apps" echo exit $1 } GEOPROBE_USEGLX=1 export GEOPROBE_USEGLX PROMAGIC_USEGLX=1 export PROMAGIC_USEGLX if [ "$OPENGL_DEVICE" != "" ]; then echo "[VGL] NOTICE: The OPENGL_DEVICE environment variable is incompatible with" echo "[VGL] VirtualGL. Temporarily unsetting this environment variable." fi unset OPENGL_DEVICE export OPENGL_DEVICE __VGL_DL=1 __VGL_GE=0 __VGL_64=0 __VGL_32=0 while [ $# -gt 0 ] do case "$1" in +sy*) VGL_SYNC=1 ; export VGL_SYNC ;; -sy*) VGL_SYNC=0 ; export VGL_SYNC ;; -st*) VGL_STEREO=$2 ; export VGL_STEREO ; shift ;; +sp*) VGL_SPOIL=1 ; export VGL_SPOIL ;; -sp*) VGL_SPOIL=0 ; export VGL_SPOIL ;; -sa*) VGL_SUBSAMP=$2 ; export VGL_SUBSAMP ; shift ;; -s*) VGL_SSL=0 ; export VGL_SSL ;; +s*) VGL_SSL=1 ; export VGL_SSL ;; -prog*) VGL_PROGRESSIVE=0 ; export VGL_PROGRESSIVE ;; +prog*) VGL_PROGRESSIVE=1 ; export VGL_PROGRESSIVE ;; -pr*) VGL_PROFILE=0 ; export VGL_PROFILE ;; +pr*) VGL_PROFILE=1 ; export VGL_PROFILE ;; -q*) VGL_QUAL=$2 ; export VGL_QUAL ; shift ;; +de*) VGL_DEBUG=1 ; export VGL_DEBUG ;; -de*) VGL_DEBUG=0 ; export VGL_DEBUG ;; -nodl) __VGL_DL=0 ;; -trans*) VGL_TRANSPORT=$2 ; export VGL_TRANSPORT; shift ;; +tr*) VGL_TRACE=1 ; export VGL_TRACE ;; -tr*) VGL_TRACE=0 ; export VGL_TRACE ;; -d*) VGL_DISPLAY=$2 ; export VGL_DISPLAY ; shift ;; -cl*) VGL_CLIENT=$2 ; export VGL_CLIENT ; shift ;; -p*) VGL_PORT=$2 ; export VGL_PORT ; shift ;; -c*) VGL_COMPRESS=$2 ; export VGL_COMPRESS ; shift ;; -np*) VGL_NPROCS=$2 ; export VGL_NPROCS ; shift ;; -gamma) VGL_GAMMA=$2 ; export VGL_GAMMA ; shift ;; -ge) __VGL_GE=1 ;; -g*) VGL_GAMMA=0 ; export VGL_GAMMA ;; +g*) VGL_GAMMA=1 ; export VGL_GAMMA ;; -v*) VGL_VERBOSE=0 ; export VGL_VERBOSE ;; +v*) VGL_VERBOSE=1 ; export VGL_VERBOSE ;; -fps) VGL_FPS=$2 ; export VGL_FPS ; shift ;; -ms) VGL_SAMPLES=$2 ; export VGL_SAMPLES ; shift ;; -ld) LD_LIBRARY_PATH=$2:$LD_LIBRARY_PATH ; export LD_LIBRARY_PATH ; shift ;; -64) __VGL_64=1; __VGL_32=0 ;; -32) __VGL_32=1; __VGL_64=0 ;; -h) usage 0 ;; --help) usage 0 ;; --) shift ; break ;; -*) usage 1 ;; *) break ;; esac shift done if [ $# -eq 0 ] then usage 0 fi if [ -r /etc/opt/VirtualGL/vgl_xauth_key ]; then XAUTH=xauth if [ -x /usr/X11R6/bin/xauth ]; then XAUTH=/usr/X11R6/bin/xauth fi if [ -x /usr/openwin/bin/xauth ]; then XAUTH=/usr/openwin/bin/xauth fi $XAUTH merge /etc/opt/VirtualGL/vgl_xauth_key fi SSH_IP=`echo $SSH_CLIENT | cut -d' ' -f1 | cut -d: -f4` if [ -z "$DISPLAY" ]; then if [ ! -z "$SSH_IP" ]; then DISPLAY=$SSH_IP:0.0 export DISPLAY echo "[VGL] NOTICE: Automatically setting the DISPLAY environment variable to" echo "[VGL] $DISPLAY, based on the IP address of your SSh client." fi else DISPLAYHOST=`echo $DISPLAY | cut -d: -f1` if [ "$DISPLAYHOST" = "localhost" -o "$DISPLAYHOST" = "`hostname`" ]; then if [ ! -z "$SSH_IP" -a -z "$VGL_CLIENT" -a -z "$RRCLIENT" ]; then VGL_CLIENT=$SSH_IP:0.0 export VGL_CLIENT echo "[VGL] NOTICE: Automatically setting VGL_CLIENT environment variable to" echo "[VGL] $SSH_IP, the IP address of your SSh client." fi fi fi case `uname -s` in SunOS) if [ -z "$FAKERLIB" ]; then FAKERLIB=librrfaker.so if [ -f /opt/VirtualGL/lib/64/librrfaker.so ] then FAKERLIB=/opt/VirtualGL/lib/64/librrfaker.so fi fi export FAKERLIB if [ -z "$FAKERLIB32" ]; then FAKERLIB32=librrfaker.so if [ -f /opt/VirtualGL/lib/librrfaker.so ] then FAKERLIB32=/opt/VirtualGL/lib/librrfaker.so fi fi export FAKERLIB32 if [ $__VGL_64 -eq 0 ]; then if [ -z "$LD_PRELOAD_32" ]; then LD_PRELOAD_32=$FAKERLIB32 else LD_PRELOAD_32=$FAKERLIB32:$LD_PRELOAD_32 fi if [ $__VGL_DL -eq 1 ]; then if [ -f /opt/VirtualGL/lib/libdlfaker.so ] then LD_PRELOAD_32=/opt/VirtualGL/lib/libdlfaker.so:$LD_PRELOAD_32 else LD_PRELOAD_32=libdlfaker.so:$LD_PRELOAD_32 fi fi if [ $__VGL_GE -eq 1 ]; then if [ -f /opt/VirtualGL/lib/libgefaker.so ] then LD_PRELOAD_32=/opt/VirtualGL/lib/libgefaker.so:$LD_PRELOAD_32 else LD_PRELOAD_32=libgefaker.so:$LD_PRELOAD_32 fi fi export LD_PRELOAD_32 fi if [ $__VGL_32 -eq 0 ]; then if [ -z "$LD_PRELOAD_64" ]; then LD_PRELOAD_64=$FAKERLIB else LD_PRELOAD_64=$FAKERLIB:$LD_PRELOAD_64 fi if [ $__VGL_DL -eq 1 ]; then if [ -f /opt/VirtualGL/lib/64/libdlfaker.so ] then LD_PRELOAD_64=/opt/VirtualGL/lib/64/libdlfaker.so:$LD_PRELOAD_64 else LD_PRELOAD_64=libdlfaker.so:$LD_PRELOAD_64 fi fi if [ $__VGL_GE -eq 1 ]; then if [ -f /opt/VirtualGL/lib/64/libgefaker.so ] then LD_PRELOAD_64=/opt/VirtualGL/lib/64/libgefaker.so:$LD_PRELOAD_64 else LD_PRELOAD_64=libgefaker.so:$LD_PRELOAD_64 fi fi export LD_PRELOAD_64 fi exec ${1+"$@"} ;; *) if [ -z "$LD_PRELOAD" ]; then LD_PRELOAD=librrfaker.so else LD_PRELOAD=librrfaker.so:$LD_PRELOAD fi if [ $__VGL_DL -eq 1 ]; then LD_PRELOAD=libdlfaker.so:$LD_PRELOAD fi if [ $__VGL_GE -eq 1 ]; then LD_PRELOAD=libgefaker.so:$LD_PRELOAD fi export LD_PRELOAD exec ${1+"$@"} ;; esac