Skip to content

Commit a9fb10d

Browse files
committed
adding new gui launch for OSMesa support
1 parent e112a2c commit a9fb10d

File tree

1 file changed

+147
-10
lines changed

1 file changed

+147
-10
lines changed

launch_gui.sh

Lines changed: 147 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,160 @@
11
#!/bin/bash
22
# Launcher script for svVascularize GUI with software rendering
33

4-
# Set environment for software rendering
5-
export LIBGL_ALWAYS_SOFTWARE=1
6-
export GALLIUM_DRIVER=llvmpipe
7-
export MESA_GL_VERSION_OVERRIDE=3.3
4+
# Add svVascularize to Python path
5+
export PYTHONPATH="$(pwd):$PYTHONPATH"
86

9-
# Set DRI driver path to conda's Mesa drivers
10-
if [ -n "$CONDA_PREFIX" ]; then
11-
export LIBGL_DRIVERS_PATH="$CONDA_PREFIX/x86_64-conda-linux-gnu/sysroot/usr/lib64/dri"
7+
# Function to find Mesa drivers
8+
find_mesa_drivers() {
9+
local candidates=()
10+
11+
# Check conda environment locations
12+
if [ -n "$CONDA_PREFIX" ]; then
13+
candidates+=(
14+
"$CONDA_PREFIX/lib/dri"
15+
"$CONDA_PREFIX/x86_64-conda-linux-gnu/sysroot/usr/lib64/dri"
16+
"$CONDA_PREFIX/x86_64-conda-linux-gnu/sysroot/usr/lib/dri"
17+
)
18+
19+
# Check base conda if in an environment
20+
if [[ "$CONDA_PREFIX" == */envs/* ]]; then
21+
BASE_PREFIX="${CONDA_PREFIX%/envs/*}"
22+
candidates+=(
23+
"$BASE_PREFIX/x86_64-conda-linux-gnu/sysroot/usr/lib64/dri"
24+
)
25+
fi
26+
fi
27+
28+
# Check system locations (prioritize these as they exist)
29+
candidates=(
30+
"/usr/lib/x86_64-linux-gnu/dri"
31+
"/usr/lib64/dri"
32+
"/usr/lib/dri"
33+
"${candidates[@]}"
34+
)
35+
36+
# Find first existing directory
37+
for dir in "${candidates[@]}"; do
38+
if [ -d "$dir" ] && [ -f "$dir/swrast_dri.so" -o -f "$dir/llvmpipe_dri.so" ]; then
39+
echo "$dir"
40+
return 0
41+
fi
42+
done
43+
44+
return 1
45+
}
46+
47+
# Parse command line arguments
48+
USE_SYSTEM_GL=0
49+
DEBUG_GL=0
50+
for arg in "$@"; do
51+
case $arg in
52+
--system-gl)
53+
USE_SYSTEM_GL=1
54+
shift
55+
;;
56+
--debug-gl)
57+
DEBUG_GL=1
58+
shift
59+
;;
60+
--help)
61+
echo "Usage: $0 [OPTIONS]"
62+
echo ""
63+
echo "Options:"
64+
echo " --system-gl Use system OpenGL instead of software rendering"
65+
echo " --debug-gl Enable OpenGL debugging output"
66+
echo " --help Show this help message"
67+
echo ""
68+
echo "Environment variables:"
69+
echo " SVV_GUI_GL_MODE='system' Use system OpenGL (same as --system-gl)"
70+
echo " SVV_GUI_SOFTWARE_DRIVER='swr' Use OpenSWR instead of llvmpipe"
71+
echo " SVV_LIBGL_DRIVERS_PATH='/path' Override DRI drivers path"
72+
exit 0
73+
;;
74+
esac
75+
done
76+
77+
# Configure OpenGL settings
78+
if [ "$USE_SYSTEM_GL" -eq 1 ]; then
79+
export SVV_GUI_GL_MODE=system
80+
echo "Using system OpenGL drivers"
81+
else
82+
# Configure software rendering
83+
export LIBGL_ALWAYS_SOFTWARE=1
84+
export GALLIUM_DRIVER=llvmpipe
85+
export MESA_GL_VERSION_OVERRIDE=3.3
86+
export MESA_LOADER_DRIVER_OVERRIDE=llvmpipe
87+
export QT_OPENGL=software
88+
export SVV_GUI_GL_MODE=software
89+
90+
# Find and set Mesa drivers path
91+
if [ -z "$SVV_LIBGL_DRIVERS_PATH" ]; then
92+
DRI_PATH=$(find_mesa_drivers)
93+
if [ $? -eq 0 ]; then
94+
export LIBGL_DRIVERS_PATH="$DRI_PATH"
95+
export SVV_LIBGL_DRIVERS_PATH="$DRI_PATH"
96+
echo "Found Mesa drivers at: $DRI_PATH"
97+
else
98+
echo "Warning: Could not find Mesa DRI drivers. Trying system fallback..."
99+
# Try installing mesa packages if needed
100+
if command -v conda &> /dev/null && [ -n "$CONDA_PREFIX" ]; then
101+
echo "Attempting to install Mesa drivers via conda..."
102+
conda install -y -c conda-forge mesa-libgl-cos7-x86_64 mesa-dri-drivers-cos7-x86_64 2>/dev/null || true
103+
104+
# Try to find again after installation
105+
DRI_PATH=$(find_mesa_drivers)
106+
if [ $? -eq 0 ]; then
107+
export LIBGL_DRIVERS_PATH="$DRI_PATH"
108+
export SVV_LIBGL_DRIVERS_PATH="$DRI_PATH"
109+
echo "Mesa drivers installed and found at: $DRI_PATH"
110+
fi
111+
fi
112+
fi
113+
else
114+
export LIBGL_DRIVERS_PATH="$SVV_LIBGL_DRIVERS_PATH"
115+
echo "Using user-specified Mesa drivers at: $SVV_LIBGL_DRIVERS_PATH"
116+
fi
117+
118+
# Force XCB on Wayland systems
119+
if [ -n "$WAYLAND_DISPLAY" ]; then
120+
export QT_QPA_PLATFORM=xcb
121+
fi
12122
fi
13123

14-
# Add svVascularize to Python path
15-
export PYTHONPATH="$(pwd):$PYTHONPATH"
124+
# Enable debugging if requested
125+
if [ "$DEBUG_GL" -eq 1 ]; then
126+
export SVV_GUI_DEBUG_GL=1
127+
export MESA_DEBUG=1
128+
export LIBGL_DEBUG=verbose
129+
fi
130+
131+
# Fix libffi conflicts for Mesa drivers
132+
if [ -n "$CONDA_PREFIX" ]; then
133+
# Look for libffi in conda environment
134+
if [ -f "$CONDA_PREFIX/lib/libffi.so.7" ]; then
135+
export LD_PRELOAD="$CONDA_PREFIX/lib/libffi.so.7:$LD_PRELOAD"
136+
echo "Using libffi from conda: $CONDA_PREFIX/lib/libffi.so.7"
137+
elif [ -f "$CONDA_PREFIX/lib/libffi.so.8" ]; then
138+
export LD_PRELOAD="$CONDA_PREFIX/lib/libffi.so.8:$LD_PRELOAD"
139+
echo "Using libffi from conda: $CONDA_PREFIX/lib/libffi.so.8"
140+
fi
141+
fi
16142

17143
# Launch the GUI
144+
echo "Launching svVascularize GUI..."
18145
python -c "
19146
import sys
20-
from qtpy.QtWidgets import QApplication
147+
from PySide6.QtWidgets import QApplication
148+
from svv.visualize.gui import VascularizeGUI
149+
150+
app = QApplication(sys.argv)
151+
gui = VascularizeGUI()
152+
gui.show()
153+
sys.exit(app.exec())
154+
" || python -c "
155+
# Fallback with exec_ for older PySide6
156+
import sys
157+
from PySide6.QtWidgets import QApplication
21158
from svv.visualize.gui import VascularizeGUI
22159
23160
app = QApplication(sys.argv)

0 commit comments

Comments
 (0)