vsg-dev / vsgQt

Qt integration with VulkanSceneGraph
MIT License
40 stars 14 forks source link

VsgQt fails execution on Wayland #33

Open VasanthBalguri opened 10 months ago

VasanthBalguri commented 10 months ago

Steps to reproduce:

  1. Run any one of vsgQt examples with valid arguments in wayland based DE
  2. It fails with following error

terminate called after throwing an instance of 'vsg::Exception'

To be precise it fails at following line

if (!traits->device) traits->device = window->windowAdapter->getOrCreateDevice();

with exception message

Error: vsg::Window::create(...) failed to create Window, no suitable Vulkan PhysicalDevice available.

This might be issue related to vulkan on wayland that I am not sure, strangely it works on X11.

I will dig into this further, but for now creating a issue for reference. Please let me know if it works fine for others on wayland.

VasanthBalguri commented 10 months ago

Non qt examples work fine on Wayland, including vsgwindows.

robertosfield commented 10 months ago

vsgQt relies upon the VulkanSceneGraph itself for it's vkSurface support so depend upon support native windowing support. Presently we have a vsg::Xcb_Window implementation for unices,

For Wayland support we'll need to implement a vsg::Wayland_Window in a similar way to the present Xcb_Window. GLFW was one of my references I learned from when I implemented vsg::Xcb_Window, and it has a Wayland support which looks relatively sraight forward so my expectation is that it would just take a couple of days to write when the time came.

I have had too many other pressing tasks on my plate to tackle this work, and have remain very bust so can't tackle it in the near future. Others are welcome to contribute a vsg::Wayland_Wndow, this will benefit the VSG in general as well as enabling vsgQt to work under Wayland.

VasanthBalguri commented 10 months ago

Hi,

I was thinking about implementing that, but Wayland doesn't support decorations out of box, which means the outer shell of window which has minimise, maximise and close button should be implemented by us or hope that the running system provides extensions for it.

I am planning to implementing it, will create a PR once I am ready...

Other than that xcb_Window will work in standalone if we have Xwayland installed, but the Linux community is adamant on removing X11 sooner or later.

Help from community is highly appreciated.

shall I keep the issue open until then?

robertosfield commented 10 months ago

Thanks. Yes keep this Issue open, once the VSG supports Wayland and we've updated vsgQt we'll be able to close the Issue.

W.r.t window decoration, I wasn't aware of this issue, but for vsgQt it'll not need window decoration in a vsg::Wayland_Window as Qt will provide the window, the Wayland integration is essential used to add the Vulkan integration.

FYI, last year vsgQt originally used Qt's Vulkan integration but I had to remove this as it didn't support multi-window Vulkan usage whilst sharing a logical vkDevice between windows. So for proper multi-window support I had to resort to using the VSG's inbuilt windowing to provide the vkSurface/Vulkan integration. This is really down to Vulkan being an afterthought for Qt, but of course Vulkan is central to the VSG, so properly supporting all it's capabilities is the projects focus.

The downside of this is that we lost the ability to support Wayland till we implemented it the core VSG.

VasanthBalguri commented 9 months ago

Hi Robert,

I was able to rig a basic Wayland window, there is still lot of work to do before I raise pull request image

Regards, Vasanth

robertosfield commented 9 months ago

If you have something that others can start testing, even if in incomplete form, let me know, or even post to the main VulkanScenenGraph forum. FYI, I have Ubuntu 22.04 on my laptop and Kubuntu 22.04 on my main desktop system.

VasanthBalguri commented 9 months ago

Hi Robert,

I still need to complete IO and verify on vsgQt, I will merge in my fork and share it on discussions once done.

Regards, Vasanth

On Fri, 16 Feb, 2024, 2:24 pm Robert Osfield, @.***> wrote:

If you have something that others can start testing, even if in incomplete form, let me know, or even post to the main VulkanScenenGraph forum https://github.com/vsg-dev/VulkanSceneGraph/discussions. FYI, I have Ubuntu 22.04 on my laptop and Kubuntu 22.04 on my main desktop system.

— Reply to this email directly, view it on GitHub https://github.com/vsg-dev/vsgQt/issues/33#issuecomment-1947986246, or unsubscribe https://github.com/notifications/unsubscribe-auth/AE6DBOKRQ6B73NLIV6TZEBDYT4NFBAVCNFSM6AAAAABCDBO5XGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSNBXHE4DMMRUGY . You are receiving this because you authored the thread.Message ID: @.***>