mirror of
https://github.com/nestriness/nestri.git
synced 2025-12-12 16:55:37 +02:00
🔥 🔥 Yes lots of commits because rebasing and all.. thankfully I know Git just enough to have backups 😅 --------- Co-authored-by: Wanjohi <elviswanjohi47@gmail.com> Co-authored-by: Kristian Ollikainen <DatCaptainHorse@users.noreply.github.com> Co-authored-by: Wanjohi <71614375+wanjohiryan@users.noreply.github.com> Co-authored-by: AquaWolf <3daquawolf@gmail.com>
53 lines
1.5 KiB
Bash
53 lines
1.5 KiB
Bash
#!/bin/bash
|
|
set -euo pipefail
|
|
|
|
declare -a vendor_full_map=()
|
|
declare -a vendor_id_map=()
|
|
declare -A vendor_index_map=()
|
|
|
|
function get_gpu_info {
|
|
# Initialize arrays/maps to avoid unbound variable errors
|
|
vendor_full_map=()
|
|
vendor_id_map=()
|
|
vendor_index_map=()
|
|
|
|
# Use lspci to detect GPU info
|
|
gpu_info=$(lspci | grep -i 'vga\|3d\|display')
|
|
|
|
# Parse each line of GPU info
|
|
while IFS= read -r line; do
|
|
# Extract vendor name and ID from lspci output
|
|
vendor=$(echo "$line" | awk -F: '{print $3}' | sed -E 's/^[[:space:]]+//g' | tr '[:upper:]' '[:lower:]')
|
|
id=$(echo "$line" | awk '{print $1}')
|
|
|
|
# Normalize vendor name
|
|
if [[ $vendor =~ .*nvidia.* ]]; then
|
|
vendor="nvidia"
|
|
elif [[ $vendor =~ .*intel.* ]]; then
|
|
vendor="intel"
|
|
elif [[ $vendor =~ .*advanced[[:space:]]micro[[:space:]]devices.* ]]; then
|
|
vendor="amd"
|
|
elif [[ $vendor =~ .*ati.* ]]; then
|
|
vendor="amd"
|
|
else
|
|
vendor="unknown"
|
|
fi
|
|
|
|
# Add to arrays/maps if unique
|
|
if ! [[ "${vendor_index_map[$vendor]:-}" ]]; then
|
|
vendor_index_map[$vendor]="${#vendor_full_map[@]}"
|
|
vendor_full_map+=("$vendor")
|
|
fi
|
|
vendor_id_map+=("$id")
|
|
done <<< "$gpu_info"
|
|
}
|
|
|
|
function debug_gpu_info {
|
|
echo "Vendor Full Map: ${vendor_full_map[*]}"
|
|
echo "Vendor ID Map: ${vendor_id_map[*]}"
|
|
echo "Vendor Index Map:"
|
|
for key in "${!vendor_index_map[@]}"; do
|
|
echo " $key: ${vendor_index_map[$key]}"
|
|
done
|
|
}
|