CuarzoSoftware / Louvre

C++ library for building Wayland compositors.
MIT License
506 stars 14 forks source link

Segmentation Fault - Unknown EGL Driver #57

Closed milisarge closed 3 months ago

milisarge commented 3 months ago

Hi, i trying Louvre in my Qemu Linux box (-vga virtio option), building from source code, but i am getting the error at below.

EGL driver name: Unknown.

With same enviroment Labwc, Wayfire seems working but Louvre gives segmentation fault

ehopperdietzel commented 3 months ago

Hi, is that the complete log? Could you please provide me with the GDB log of the segfault point or inform me about the QEMU setup you're using? The missing EGL driver name is common and isn't a problem.

milisarge commented 3 months ago

qemu-system-x86_64 --enable-kvm -vga qxl and -vga virtio parameters additionally dri backends and my video card info:

resim

ehopperdietzel commented 3 months ago

Thanks, I think the segfault was caused by a call to an EGL function that is not supported by virtio. I've added some checks, and now it should work fine, it works for me running Fedora inside qemu. The changes are in the 2.0.0 branch. Also, if you notice any unusual behaviour in the examples, specially when clicking windows it's likely because I'm currently implementing some features that are not yet completed.

milisarge commented 3 months ago

Thank you for update, i tried also and it works with -vga qxl , but as you mentioned, keyboard and mouse events don't work for now.

ehopperdietzel commented 3 months ago

Thank goodness you mentioned it. It's true, I noticed that only keyboard events are functioning. When I press fn + F1, weston-terminal launches as expected, but there are no pointer events. I've just looked into the Libinput doc and realized that there are relative and absolute pointer events. The documentation even indicates that absolute events are used in contexts like QEMU and VBox. Currently, Louvre only handles relative events. I'll be adding support for absolute events shortly, and I'll keep you informed.

ehopperdietzel commented 3 months ago

Pointer events are now working (branch 2.0.0). However, there are still some issues with the cursor hotspot. I guess this is due to SRM not using the hotspot property of hardware cursor planes in DRM/KMS, which I always thought was kind of useless, but now I know its use case. When running on a real machine, Louvre controls cursor movement and properly adjusts the hotspot, but in this case, QEMU overrides it.