Meta: Use non-VGA VirtIO GPU variants when running on macOS

It appears that QEMU on macOS doesn't have the VirtIO GPU variants that
support VGA functionality. Those variants are not especially important
to us, because we don't use any kind of VGA functionality in our kernel
anyway.

Therefore, for macOS, we could decide to use virtio-gpu-gl-pci and
virtio-gpu-pci devices instead.
This commit is contained in:
Liav A 2023-03-08 21:18:02 +02:00 committed by Linus Groh
parent fdab8a24f5
commit c66f7f2e7c
Notes: sideshowbarker 2024-07-17 02:56:25 +09:00

View file

@ -200,12 +200,26 @@ fi
SERENITY_GL="${SERENITY_GL:-0}"
if [ -z "$SERENITY_QEMU_DISPLAY_DEVICE" ]; then
if [ "$SERENITY_GL" = "1" ]; then
SERENITY_QEMU_DISPLAY_DEVICE="virtio-vga-gl "
# QEMU appears to not support the GL backend for VirtIO GPU variant on macOS.
if [ "$(uname)" = "Darwin" ]; then
die "SERENITY_GL is not supported since there's no GL backend on macOS"
else
SERENITY_QEMU_DISPLAY_DEVICE="virtio-vga-gl "
fi
if [ "$SERENITY_SCREENS" -gt 1 ]; then
die "SERENITY_GL and multi-monitor support cannot be setup simultaneously"
fi
elif [ "$SERENITY_SCREENS" -gt 1 ]; then
SERENITY_QEMU_DISPLAY_DEVICE="virtio-vga,max_outputs=$SERENITY_SCREENS "
# QEMU appears to not support the virtio-vga VirtIO GPU variant on macOS.
# To ensure we can still boot on macOS with VirtIO GPU, use the virtio-gpu-pci
# variant, which lacks any VGA compatibility (which is not relevant for us anyway).
if [ "$(uname)" = "Darwin" ]; then
SERENITY_QEMU_DISPLAY_DEVICE="virtio-gpu-pci,max_outputs=$SERENITY_SCREENS "
else
SERENITY_QEMU_DISPLAY_DEVICE="virtio-vga,max_outputs=$SERENITY_SCREENS "
fi
# QEMU appears to always relay absolute mouse coordinates relative to the screen that the mouse is
# pointed to, without any way for us to know what screen it was. So, when dealing with multiple
# displays force using relative coordinates only