mirror of
https://github.com/mofeng-git/One-KVM.git
synced 2026-03-26 04:46:35 +08:00
feat: 支持自动检测因特尔 GPU 驱动类型
This commit is contained in:
@@ -26,7 +26,7 @@ RUN sed -i 's/ main$/ main contrib non-free/' /etc/apt/sources.list && \
|
||||
if [ "$TARGETPLATFORM" = "linux/amd64" ]; then \
|
||||
apt-get install -y --no-install-recommends \
|
||||
libva2 libva-drm2 libva-x11-2 libx11-6 libxcb1 libxau6 libxdmcp6 libmfx1 \
|
||||
i965-va-driver-shaders intel-media-va-driver-non-free; \
|
||||
i965-va-driver-shaders intel-media-va-driver-non-free vainfo; \
|
||||
elif [ "$TARGETPLATFORM" = "linux/arm64" ]; then \
|
||||
apt-get install -y --no-install-recommends \
|
||||
libdrm2 libva2; \
|
||||
|
||||
@@ -26,7 +26,7 @@ RUN sed -i 's/ main$/ main contrib non-free/' /etc/apt/sources.list && \
|
||||
if [ "$TARGETPLATFORM" = "linux/amd64" ]; then \
|
||||
apt-get install -y --no-install-recommends \
|
||||
libva2 libva-drm2 libva-x11-2 libx11-6 libxcb1 libxau6 libxdmcp6 libmfx1 \
|
||||
i965-va-driver-shaders intel-media-va-driver-non-free; \
|
||||
i965-va-driver-shaders intel-media-va-driver-non-free vainfo; \
|
||||
elif [ "$TARGETPLATFORM" = "linux/arm64" ]; then \
|
||||
apt-get install -y --no-install-recommends \
|
||||
libdrm2 libva2; \
|
||||
|
||||
@@ -4,6 +4,68 @@
|
||||
|
||||
set -e
|
||||
|
||||
detect_intel_libva_driver() {
|
||||
if [ -n "${LIBVA_DRIVER_NAME:-}" ]; then
|
||||
echo "[INFO] Using preconfigured LIBVA_DRIVER_NAME=$LIBVA_DRIVER_NAME"
|
||||
return
|
||||
fi
|
||||
|
||||
if [ "$(uname -m)" != "x86_64" ]; then
|
||||
return
|
||||
fi
|
||||
|
||||
local devices=()
|
||||
if [ -n "${LIBVA_DEVICE:-}" ]; then
|
||||
devices=("$LIBVA_DEVICE")
|
||||
else
|
||||
shopt -s nullglob
|
||||
devices=(/dev/dri/renderD*)
|
||||
shopt -u nullglob
|
||||
fi
|
||||
|
||||
if [ ${#devices[@]} -eq 0 ]; then
|
||||
return
|
||||
fi
|
||||
|
||||
local device=""
|
||||
local node=""
|
||||
local vendor=""
|
||||
local driver=""
|
||||
|
||||
for device in "${devices[@]}"; do
|
||||
if [ ! -e "$device" ]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
node="$(basename "$device")"
|
||||
vendor=""
|
||||
if [ -r "/sys/class/drm/$node/device/vendor" ]; then
|
||||
vendor="$(cat "/sys/class/drm/$node/device/vendor")"
|
||||
fi
|
||||
|
||||
if [ -n "$vendor" ] && [ "$vendor" != "0x8086" ]; then
|
||||
echo "[INFO] Skipping VA-API probe for $device (vendor=$vendor)"
|
||||
continue
|
||||
fi
|
||||
|
||||
for driver in iHD i965; do
|
||||
if LIBVA_DRIVER_NAME="$driver" vainfo --display drm --device "$device" >/dev/null 2>&1; then
|
||||
export LIBVA_DRIVER_NAME="$driver"
|
||||
if [ -n "$vendor" ]; then
|
||||
echo "[INFO] Detected Intel VA-API driver '$driver' on $device (vendor=$vendor)"
|
||||
else
|
||||
echo "[INFO] Detected Intel VA-API driver '$driver' on $device"
|
||||
fi
|
||||
return
|
||||
fi
|
||||
done
|
||||
done
|
||||
|
||||
echo "[WARN] Unable to auto-detect an Intel VA-API driver; leaving LIBVA_DRIVER_NAME unset"
|
||||
}
|
||||
|
||||
detect_intel_libva_driver
|
||||
|
||||
# Start one-kvm with default options.
|
||||
# Additional options can be passed via environment variables.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user