Probe the GPUs/kernel and select an appropriate accel method, fix #3

Only use vDRM on supported drivers, introduce Venus for others, and fall
back to software on kernels older than 6.13 due to missing PFNMAP support.
This commit is contained in:
Val Packett 2025-09-25 22:36:39 -03:00
parent 9256257abe
commit de0c868428
2 changed files with 33 additions and 1 deletions

32
munix
View file

@ -56,8 +56,40 @@ if [ "$GPU" -eq 1 ]; then
"--dev-bind" "/dev/dri" "/dev/dri"
"--ro-bind" "$HOST_OPENGL_DRIVER" "/run/opengl-driver"
)
GPU_MODE=venus
kernel_ver="$(uname -r)"
kernel_ver_arr=(${kernel_ver//./ })
kernel_major="${kernel_ver_arr:-0}"
kernel_ver_arr=("${kernel_ver_arr[@]:1}")
kernel_minor="${kernel_ver_arr:-0}"
if [[ "$kernel_major" -gt 6 || ("$kernel_major" -eq 6 && "$kernel_minor" -gt 12) ]]; then
for card in /dev/dri/card*; do
driver_link="/sys/class/drm/${card##*/}/device/driver"
if [ -L "$driver_link" ]; then
driver_mod="$(readlink "$driver_link")"
driver_name="${driver_mod##*/}"
case "$driver_name" in
amdgpu|msm) # TODO: i915
echo "munix: ${card##*/} gpu driver is '$driver_name', using vdrm" >&2;
GPU_MODE=drm
break;;
*) echo "munix: ${card##*/} gpu driver is '$driver_name', using venus unless more gpus are found" >&2;;
esac
else
echo "munix: ${card##*/} has no gpu driver" >&2;
fi
done
else
echo "munix: kernel version '$kernel_ver' is older than 6.13, not using gpu due to missing support" >&2;
GPU_MODE=software
fi
MUVM_ARGS+=("--gpu-mode=$GPU_MODE")
if [ "$GPU_MODE" = "venus" ]; then
MUVM_ARGS+=("-e" "MESA_LOADER_DRIVER_OVERRIDE=zink")
fi
else
BWRAP_ARGS+=("--dir" "/dev/dri")
MUVM_ARGS+=("--gpu-mode=software")
fi
if [ "$WAYLAND" -eq 1 ]; then

2
muvm

@ -1 +1 @@
Subproject commit 70badbc44d421c49f82130321e35b949f8b4ed14
Subproject commit 53d416fb3f96b04a5bd3dd40f94fa4d8fbf1d7f1