Issues with Flatland

Okay so I'm having some issues with Flatland as I'm trying out Stardust on real hardware instead of flatscreen. 1. I launch monado-service -> stardust server -> flatland -> and then an app using the wayland env var. I'm on X11 but the application shows up as upside-down. Other, openxr apps that I use such as Stereokit and others, all have correct orientations. 2. How do I drag/move around a window opened using Flatland (I'm not using any controllers; I'm using Monado's Hand tracking)? 3. How is Flatland different from Orbit?
42 Replies
Nova
Nova10mo ago
1. what's upside down? the app's panel or the entirety of stardust? 2. it borken, i gotta fix :/ 3. orbit is only for dropping apps into panel shells, flatland lets you interact with them and drop them into panel shells
bootkernel
bootkernelOP10mo ago
Just the apps
Nova
Nova10mo ago
dmabufsssssssssssss g ja;lsudijgn;ads i have no idea, @i509VCB might know tho
i509VCB
i509VCB10mo ago
on real hardware, is this presenting via a window or KMS? If it's via KMS and you apply a 180 degree transform for windowing always, then it will obviously be upside down
bootkernel
bootkernelOP10mo ago
Via the Monado window. This is gedit.
No description
bootkernel
bootkernelOP10mo ago
All the other OpenXR apps running in the correct orientation though.
Nova
Nova10mo ago
it occurs to me i may not have implemented the viewporter ext
i509VCB
i509VCB10mo ago
the viewporter seems unlikely as you can't flip the window via viewporter is gedit sending the FLIPPED_Y attribute on the dmabuf it creates? Although most implementations don't do this anyone and I think in v4 of the dmabuf protocol it became an error to set
bootkernel
bootkernelOP10mo ago
Same with firefox too.
Nova
Nova10mo ago
wait what firefox works???
i509VCB
i509VCB10mo ago
sounds like more of a firefox is broken
Nova
Nova10mo ago
last time i checked it wouldn't even start so this is an improvement
i509VCB
i509VCB10mo ago
although firefox is an interesting case study since it abuses subsurfaces
bootkernel
bootkernelOP10mo ago
Yeah I can launch firefox but for some reason the window is very small. Can't resize.
Nova
Nova10mo ago
hmm i wouldn't say worked
No description
Nova
Nova10mo ago
... that explains why it borken stardust does not use subsurfaces idk how to implement them
i509VCB
i509VCB10mo ago
easy solution use the window geometry clip anything outside of the geometry that isn't a popup
Nova
Nova10mo ago
i basically just need to get subsurface creation, destruction, and so on hell, i'd like to use the surface tree but i need events not the current state
i509VCB
i509VCB10mo ago
just make sure you read up on sync and desync subsurfaces
Nova
Nova10mo ago
on what
i509VCB
i509VCB10mo ago
as commits can behave differently in both cases
Nova
Nova10mo ago
augh the commit code is already complicated as it is
bootkernel
bootkernelOP10mo ago
My bad it doesn't. I confused it with the output of something else.
i509VCB
i509VCB10mo ago
does stardust handle wl_surface transforms?
Nova
Nova10mo ago
uhhhh i don't think it does because i have to basically transform things and send them to the stardust panel shells so i need to simplify that API as much as possible makes things a lot more tricky than a regular compositor i need a lot of help on the wayland side to make it compliant to the spec
i509VCB
i509VCB10mo ago
there is definitely a lot of moving parts
Nova
Nova10mo ago
yea... and even more since XR
i509VCB
i509VCB10mo ago
especially so since I went full async and wanted to avoid requring LocalSet, meaning I removed smithay from the crate graph in my compositor (Still use wayland-server crate)
Nova
Nova10mo ago
ayy same i go full async too but i use smithay for surfaces don't wanna have to worry about dmabuf shenanigans
Nova
Nova10mo ago
ooh i am
i509VCB
i509VCB10mo ago
still needs a lot of work namely figuring out how I'm going to manage the renderer, exposing outputs to the wayland frontend, having the wm describe a scene graph
Nova
Nova10mo ago
oh wow so you have the same issues as stardust with this
i509VCB
i509VCB10mo ago
the renderer is going to be a fun part since I want wgpu to be usable on the wm side
Nova
Nova10mo ago
awesome
i509VCB
i509VCB10mo ago
the one cost though is probably the 40kLOC of code I've not written yet but it's probably worth the removal of 2 types of mpsc channel and at some point try to make the WM work with accesskit
Nova
Nova10mo ago
so, how do you get events on subsurface creation/destruction?
i509VCB
i509VCB10mo ago
I implement Dispatch<WlSubsurface, _> myself also you'll probably want map and unmap as well for events
Nova
Nova10mo ago
i don't get why there's map and unmap tbh
i509VCB
i509VCB10mo ago
the subsurface could have a null buffer attached and then immediately reused
Nova
Nova10mo ago
to the panel shell it'll be the surface's child being added and removed then
Want results from more Discord servers?
Add your server