@agx Sounds great, thank you for your work! I'm using phosh on a Pinephone via Manjaro. I really like it so far, but a most obvious issue to me is that the UI (including scrolling) behaves very slowly. Is this due to the Pinephone hardware (and faster on the Librem) or do you see possibilities to apply further optimization/hardware accleration or similar?
@letterus I don't have a pine phone so i can't compare. It e.g. depends on *where* things are slow since that's affected by e.g. pixman, mesa, if your distro's kernel trades CPU for battery live, etc... so it's hard to tell from here what the cause is.
@letterus there's also certainly areas within phosh that we can make faster or that will change in layout and hence use less resources (like the overview) but then again it depends on the details of the situation. If it's "overall slow" then it looks like a distro issue.
Maybe start by logging top(1) output while doing a few things on the phone and see where it spends all its time that isn't available for handling scrolling? top -b -d 1 > top.log
@letterus @agx Most of apps you're likely to run under phosh (and also phosh itself) is still based on GTK3, and GTK3 is purely software rendered - PinePhone's slow memory bandwidth is a huge bottleneck there. It is noticeably snappier on the Librem 5 since its RAM is significantly faster.
One thing to check is whether arm64 optimizations are enabled in pixman build used by your distro, there is a patch that's not merged upstream that can make it a bit faster overall.
@letterus @agx Possibly. GTK4's GPU rendering isn't well optimized for mobile platforms, but it already got pretty usable in GTK 4.2. There will still be some work needed in order to keep slow GPU-rendered clients from making the whole compositor slow (like https://github.com/swaywm/wlroots/issues/3026), so there's no single silver bullet, but we'll get there eventually ;)
@letterus @agx One more thing: a possible feature that could be added to phoc to make platforms like PinePhone faster even with software rendering is to render everything in smaller resolution and then upscale while displaying. This will of course make everything blurry or pixelated, but should make it very snappy even with underpowered hardware.
In an ideal world, the entire software stack would be suitably optimized. Until then, workarounds can help people make the jump (in this case even with the promise that the workaround could be disabled down the road if software catches up).
I don't have studies at hand, but IIRC human eyesight is generally more tolerant to blur than to choppy motion, and there's only so much a user endures before rejecting a project as unfinished for a _long_ time.