41 lines
1.2 KiB
Bash
41 lines
1.2 KiB
Bash
should_use_software() {
|
|
if ! command -v glxinfo >/dev/null 2>&1; then
|
|
echo "glxinfo missing → assuming software fallback needed"
|
|
return 0
|
|
fi
|
|
|
|
local direct core_ver
|
|
|
|
direct=$(glxinfo | grep -i '^direct rendering:' | awk '{print $3}' || echo "No")
|
|
if [[ "$direct" != "Yes" ]]; then
|
|
echo "No direct rendering → force software"
|
|
return 0
|
|
fi
|
|
|
|
# Prefer core profile version string (most reliable)
|
|
core_ver=$(glxinfo | grep -i "OpenGL core profile version string" | grep -oE '[0-9]+\.[0-9]+' | head -n1)
|
|
if [[ -z "$core_ver" ]]; then
|
|
# Fallback to max core profile line if present
|
|
core_ver=$(glxinfo | grep -i "Max core profile" | grep -oE '[0-9]+\.[0-9]+' | head -n1)
|
|
fi
|
|
|
|
echo "Detected OpenGL core: ${core_ver:-unknown}"
|
|
|
|
if [[ "$core_ver" =~ ^(3\.[3-9]|[4-9]\.) ]]; then
|
|
echo "Hardware OK (≥3.3 core)"
|
|
return 1
|
|
fi
|
|
|
|
# Optional GLES fallback check (as you had)
|
|
if command -v eglinfo >/dev/null 2>&1; then
|
|
local es_ver=$(eglinfo | grep -oE 'OpenGL ES [0-9]+\.[0-9]+' | grep -oE '[0-9]+\.[0-9]+' | head -n1)
|
|
if [[ "$es_ver" =~ ^[3-9]\. ]]; then
|
|
echo "GLES ${es_ver} fallback OK"
|
|
return 1
|
|
fi
|
|
fi
|
|
|
|
echo "Insufficient OpenGL → force software"
|
|
return 0
|
|
}
|