msys2 / MINGW-packages

Package scripts for MinGW-w64 targets to build under MSYS2.
https://packages.msys2.org
BSD 3-Clause "New" or "Revised" License
2.21k stars 1.19k forks source link

virtio-{vga,pci}-gl-* support is missing in MSYS2 QEMU build #20280

Open 185264646 opened 3 months ago

185264646 commented 3 months ago

There is no gl variants virtio-gpu backends in MSYS2 QEMU, but the official build has.

MSYS2:

$ qemu-system-x86_64 -device help
Display devices:
name "ati-vga", bus PCI
name "bochs-display", bus PCI
name "cirrus-vga", bus PCI, desc "Cirrus CLGD 54xx VGA"
name "isa-cirrus-vga", bus ISA
name "isa-vga", bus ISA
name "qxl", bus PCI, desc "Spice QXL GPU (secondary)"
name "qxl-vga", bus PCI, desc "Spice QXL GPU (primary, vga compatible)"
name "ramfb", bus System, desc "ram framebuffer standalone device"
name "secondary-vga", bus PCI
name "VGA", bus PCI
name "virtio-gpu-device", bus virtio-bus
name "virtio-gpu-pci", bus PCI, alias "virtio-gpu"
name "virtio-vga", bus PCI
name "vmware-svga", bus PCI

Official build from winget:

C:\>"C:\Program Files\qemu\qemu-system-x86_64.exe" -device help
Display devices:
name "ati-vga", bus PCI
name "bochs-display", bus PCI
name "cirrus-vga", bus PCI, desc "Cirrus CLGD 54xx VGA"
name "isa-cirrus-vga", bus ISA
name "isa-vga", bus ISA
name "qxl", bus PCI, desc "Spice QXL GPU (secondary)"
name "qxl-vga", bus PCI, desc "Spice QXL GPU (primary, vga compatible)"
name "ramfb", bus System, desc "ram framebuffer standalone device"
name "secondary-vga", bus PCI
name "VGA", bus PCI
name "virtio-gpu-device", bus virtio-bus
name "virtio-gpu-gl-device", bus virtio-bus
name "virtio-gpu-gl-pci", bus PCI, alias "virtio-gpu-gl"
name "virtio-gpu-pci", bus PCI, alias "virtio-gpu"
name "virtio-vga", bus PCI
name "virtio-vga-gl", bus PCI
name "vmware-svga", bus PCI
185264646 commented 3 months ago

Cc @heljkon Do you have any idea?

Biswa96 commented 3 months ago

Building qemu with virglrenderer fixes the issue. Though I am not sure if that should be added. There were some discussion about incompatibility between virglrenderer and qemu version. Please wait for heljkon comment.

heljkon commented 3 months ago

I suggest to start building with virglrenderer starting with QEMU 9.0.

Soon (2024-03-19) the first RC for QEMU 9.0 will be built (https://wiki.qemu.org/Planning/9.0). As before I will create the PR with the first RC and RC-builds can be downloaded for testing.

I guess there will be enough time to test the integration until final release (2024-04-16 or 2024-04-23).

heljkon commented 3 months ago

@185264646 Please test.

UCRT64 ~
$ qemu-system-x86_64 -version
QEMU emulator version 8.2.90
Copyright (c) 2003-2024 Fabrice Bellard and the QEMU Project developers

UCRT64 ~
$ qemu-system-x86_64 -device help | grep -A18 "Display devices"
Display devices:
name "ati-vga", bus PCI
name "bochs-display", bus PCI
name "cirrus-vga", bus PCI, desc "Cirrus CLGD 54xx VGA"
name "isa-cirrus-vga", bus ISA
name "isa-vga", bus ISA
name "qxl", bus PCI, desc "Spice QXL GPU (secondary)"
name "qxl-vga", bus PCI, desc "Spice QXL GPU (primary, vga compatible)"
name "ramfb", bus System, desc "ram framebuffer standalone device"
name "secondary-vga", bus PCI
name "VGA", bus PCI
name "virtio-gpu-device", bus virtio-bus
name "virtio-gpu-gl-device", bus virtio-bus
name "virtio-gpu-gl-pci", bus PCI, alias "virtio-gpu-gl"
name "virtio-gpu-pci", bus PCI, alias "virtio-gpu"
name "virtio-vga", bus PCI
name "virtio-vga-gl", bus PCI
name "vmware-svga", bus PCI

UCRT64 ~
185264646 commented 3 months ago

@185264646 Please test.

UCRT64 ~
$ qemu-system-x86_64 -version
QEMU emulator version 8.2.90
Copyright (c) 2003-2024 Fabrice Bellard and the QEMU Project developers

UCRT64 ~
$ qemu-system-x86_64 -device help | grep -A18 "Display devices"
Display devices:
name "ati-vga", bus PCI
name "bochs-display", bus PCI
name "cirrus-vga", bus PCI, desc "Cirrus CLGD 54xx VGA"
name "isa-cirrus-vga", bus ISA
name "isa-vga", bus ISA
name "qxl", bus PCI, desc "Spice QXL GPU (secondary)"
name "qxl-vga", bus PCI, desc "Spice QXL GPU (primary, vga compatible)"
name "ramfb", bus System, desc "ram framebuffer standalone device"
name "secondary-vga", bus PCI
name "VGA", bus PCI
name "virtio-gpu-device", bus virtio-bus
name "virtio-gpu-gl-device", bus virtio-bus
name "virtio-gpu-gl-pci", bus PCI, alias "virtio-gpu-gl"
name "virtio-gpu-pci", bus PCI, alias "virtio-gpu"
name "virtio-vga", bus PCI
name "virtio-vga-gl", bus PCI
name "vmware-svga", bus PCI

UCRT64 ~

I've installed and tried the mingw64 version. Nothing is broken. I've tried glmark2 in a arch linux vm. The score is low but no crash or warning was found.

heljkon commented 3 months ago

So adding this dependeny makes a difference now.

I added virglrenderer to the repository half a year ago, but I finally didn't add it to QEMU's dependencies, because it seemed to me it was not recognized in the build process. Maybe I was wrong...

Anyway, I'll do my regular release tests and if everything else works as expected, virglvenderer will stay integrated.