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 \
|
if [ "$TARGETPLATFORM" = "linux/amd64" ]; then \
|
||||||
apt-get install -y --no-install-recommends \
|
apt-get install -y --no-install-recommends \
|
||||||
libva2 libva-drm2 libva-x11-2 libx11-6 libxcb1 libxau6 libxdmcp6 libmfx1 \
|
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 \
|
elif [ "$TARGETPLATFORM" = "linux/arm64" ]; then \
|
||||||
apt-get install -y --no-install-recommends \
|
apt-get install -y --no-install-recommends \
|
||||||
libdrm2 libva2; \
|
libdrm2 libva2; \
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ RUN sed -i 's/ main$/ main contrib non-free/' /etc/apt/sources.list && \
|
|||||||
if [ "$TARGETPLATFORM" = "linux/amd64" ]; then \
|
if [ "$TARGETPLATFORM" = "linux/amd64" ]; then \
|
||||||
apt-get install -y --no-install-recommends \
|
apt-get install -y --no-install-recommends \
|
||||||
libva2 libva-drm2 libva-x11-2 libx11-6 libxcb1 libxau6 libxdmcp6 libmfx1 \
|
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 \
|
elif [ "$TARGETPLATFORM" = "linux/arm64" ]; then \
|
||||||
apt-get install -y --no-install-recommends \
|
apt-get install -y --no-install-recommends \
|
||||||
libdrm2 libva2; \
|
libdrm2 libva2; \
|
||||||
|
|||||||
@@ -4,6 +4,68 @@
|
|||||||
|
|
||||||
set -e
|
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.
|
# Start one-kvm with default options.
|
||||||
# Additional options can be passed via environment variables.
|
# Additional options can be passed via environment variables.
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user