Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Implement VirtIO PCI transport layer

Aperta
#85 1 commento 0 reazioni 1 assegnatario Vedi su GitHub

@shengwen-tw ci sta già lavorando.

Dal 17/6/2025.

Valutazione

Questa issue non è ancora stata valutata.

Descrizione

Background

During the development of VirtIO GPU in #34, a critical issue was identified: applications leveraging Mesa3D (e.g., glxgears, kmscube) consistently fall back to software rendering (softpipe), despite a correct configuration of X11, Mesa3D, and a host virglrenderer.

Analysis suggests this behavior is likely due to the current implementation of VirtIO GPU being based on VirtIO MMIO (registered as a platform device via the device tree), rather than utilizing the VirtIO PCI transport layer. Key observations include:

  • GLX/X11 path: Mesa3D does not load virtio_gpu_dri.so because Xorg fails to initialize DRI2.
  • Xorg logs: The GPU is not recognized as a PCI device (no primary bus or device found), which prevents DRI2 from initializing and causes a fallback to the software renderer (swrast).
[    29.010] (II) Platform probe for /sys/devices/platform/soc@F0000000/f4800000.virtio/drm/card0                                                 
[    29.018] (II) no primary bus or device found                                                                                                  
[    29.018]    falling back to /sys/devices/platform/soc@F0000000/f4800000.virtio/drm/card0
...
[    29.354] (II) modeset(0): using drv /dev/dri/card0                                                                      
...
[    29.666] (II) AIGLX: Screen 0 is not DRI2 capable
[    31.222] (II) IGLX: Loaded and initialized swrast

Proposal

To resolve this limitation and enable proper VirGL hardware acceleration, I propose implementing a VirtIO PCI transport layer for VirtIO GPU.

Lingua principale
C
Stelle
313
Fork
75
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di sysprog21/semu

Tutte le issue di sysprog21/semu

Issue simili

Altre issue su C

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.