#!/bin/bash

# Default value for debug flag
DEBUG=0

# Function for debug printing
debug_print() {
    if [ "$DEBUG" -eq 1 ]; then
        echo "DEBUG: $1"
    fi
}

# Function to get GPU information
get_gpu_info() {
    glxinfo | grep "OpenGL renderer string\|OpenGL vendor string"
}

# Function to check if GPU supports OpenGL 3.0 or higher in core profile
# Function to check if GPU supports OpenGL 3.0 or higher in core profile
check_opengl_support() {
    local opengl_version=$(glxinfo | grep "OpenGL core profile version string" | awk '{print $6}')
    debug_print "OpenGL version: $opengl_version"

    # Split version string into components
    local major=$(echo "$opengl_version" | cut -d. -f1)
    local minor=$(echo "$opengl_version" | cut -d. -f2)

    # Check if major version is at least 3
    if [ "$major" -ge 3 ]; then
        return 0  # GPU supports OpenGL 3.0 or higher
    else
        return 1  # GPU does not support OpenGL 3.0 or higher
    fi
}

# Function to check if GPU is a Raspberry Pi 4 (Broadcom)
is_raspberry_pi_4() {
    echo "$gpu_renderer" | grep -q "V3D"
}

# Process command line options
while [ $# -gt 0 ]; do
    case "$1" in
        --debug)
            DEBUG=1
            shift
            ;;
        *)
            echo "Unknown option: $1"
            exit 1
            ;;
    esac
done

# Get GPU information
gpu_info=$(get_gpu_info)

# Extract GPU renderer and vendor from the information
gpu_renderer=$(echo "$gpu_info" | grep "OpenGL renderer string" | cut -d: -f2 | sed 's/^[ \t]*//')
gpu_vendor=$(echo "$gpu_info" | grep "OpenGL vendor string" | cut -d: -f2 | sed 's/^[ \t]*//')

# Debug: Print GPU information
debug_print "GPU Vendor: $gpu_vendor"
debug_print "GPU Renderer: $gpu_renderer"

# Check GPU vendor and renderer
if [[ "$gpu_renderer" == *NVIDIA* || "$gpu_renderer" == *AMD* || "$gpu_renderer" == *ATI* || "$gpu_renderer" == *Intel* || "$gpu_renderer" == *NV* ]]; then
    # Check if GPU supports OpenGL 3.0 or higher in core profile
    if check_opengl_support; then
        isOldGPU=0
    else
        isOldGPU=1
    fi
elif is_raspberry_pi_4; then
    # Set MESA_GL_VERSION_OVERRIDE for Raspberry Pi 4 (Broadcom)
    export MESA_GL_VERSION_OVERRIDE=3.3
    isOldGPU=0
else
    isOldGPU=1
fi

# Use isOldGPU variable as needed in your script
echo "$isOldGPU"

