diff --git a/glxinfo-extraction.sh b/glxinfo-extraction.sh new file mode 100644 index 0000000..7d6a85d --- /dev/null +++ b/glxinfo-extraction.sh @@ -0,0 +1,40 @@ +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 +}