mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2026-09-22 04:15:50 +02:00
core: Improve GPU detection and mapping logic
Refactor GPU detection logic to map DRI nodes to their owning GPUs based on vendor IDs. Update messages for detected Intel and AMD GPUs.
This commit is contained in:
committed by
GitHub
parent
a6a608614f
commit
30f855f852
+23
-19
@@ -4233,27 +4233,31 @@ $PCT_OPTIONS_STRING"
|
|||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Check for Intel GPU - look for Intel vendor ID [8086]
|
# Map each DRI render/card node to its owning GPU via the PCI vendor ID
|
||||||
if grep -q "\[8086:" <<<"$pci_vga_info"; then
|
# exposed in sysfs (/sys/class/drm/<node>/device/vendor). This is required
|
||||||
msg_custom "🎮" "${BL}" "Detected Intel GPU"
|
# on multi-GPU hosts: globbing every /dev/dri node onto the first detected
|
||||||
if [[ -d /dev/dri ]]; then
|
# vendor would pass through *both* GPUs and skip the selection prompt.
|
||||||
for d in /dev/dri/renderD* /dev/dri/card*; do
|
if [[ -d /dev/dri ]]; then
|
||||||
[[ -e "$d" ]] && INTEL_DEVICES+=("$d")
|
for d in /dev/dri/renderD* /dev/dri/card*; do
|
||||||
done
|
[[ -e "$d" ]] || continue
|
||||||
fi
|
local node vendor
|
||||||
|
node=$(basename "$d")
|
||||||
|
vendor=$(cat "/sys/class/drm/${node}/device/vendor" 2>/dev/null || true)
|
||||||
|
case "$vendor" in
|
||||||
|
0x8086) INTEL_DEVICES+=("$d") ;; # Intel
|
||||||
|
0x1002 | 0x1022) AMD_DEVICES+=("$d") ;; # AMD/ATI
|
||||||
|
0x10de) ;; # NVIDIA - handled via /dev/nvidia* below
|
||||||
|
*) msg_debug "Unmapped GPU vendor '${vendor:-unknown}' for $d" ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Check for AMD GPU - look for AMD vendor IDs [1002] (AMD/ATI) or [1022] (AMD)
|
[[ ${#INTEL_DEVICES[@]} -gt 0 ]] && msg_custom "🎮" "${BL}" "Detected Intel GPU"
|
||||||
if grep -qE "\[1002:|\[1022:" <<<"$pci_vga_info"; then
|
[[ ${#AMD_DEVICES[@]} -gt 0 ]] && msg_custom "🎮" "${RD}" "Detected AMD GPU"
|
||||||
msg_custom "🎮" "${RD}" "Detected AMD GPU"
|
|
||||||
if [[ -d /dev/dri ]]; then
|
# AMD compute (ROCm) additionally needs /dev/kfd alongside the render nodes
|
||||||
# Only add if not already claimed by Intel
|
if [[ ${#AMD_DEVICES[@]} -gt 0 && -e /dev/kfd ]]; then
|
||||||
if [[ ${#INTEL_DEVICES[@]} -eq 0 ]]; then
|
AMD_DEVICES+=("/dev/kfd")
|
||||||
for d in /dev/dri/renderD* /dev/dri/card* /dev/kfd; do
|
|
||||||
[[ -e "$d" ]] && AMD_DEVICES+=("$d")
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Check for NVIDIA GPU - look for NVIDIA vendor ID [10de]
|
# Check for NVIDIA GPU - look for NVIDIA vendor ID [10de]
|
||||||
|
|||||||
Reference in New Issue
Block a user