The primary reason the scrolling graphs take more CPU to render on Wayland is that we have to use an image surface and texture upload every few frames.
cairo-gl is not the ideal way to draw in a future system (gtk4 basically gets rid of cairo for anything but slow fallbacks), but it could potentially help make gtk3 code avoid a number of texture uploads on Wayland.
Hard to get motivated to work on code that would just make legacy stuff better, although probably a worthwhile effort.
GVariant is a fantastic serialization format. In particular, the back-pointers in dynamic array types mean things you wouldn't expect to be O(1) are in fact O(1). Combine that with GListModel to inflate objects means super lazy inflation and single memory allocation until used.
Unfortunately, GtkSourceCompletion predates some of these nice APIs. So Builder will ship a new completion engine in 3.30 that is GListModel-based to allow lazy object inflation all the way from sub-process to display.
I forgot to blog about it, so here is a short post on the work I did last month to move clang out of process in Builder. It's the most efficient IPC I've seen so far for a multiprocess IDE.
We can still do more to make APIs friendly to lazy obj inflation.
I much prefer to start projects than finish them and I figured that was just how everyone was. Because finishing is like ... hard work.
Anyway, I've learned that some people don't prefer to start stuff and would rather work on something existing.
Perhaps I should "start your project as a service".
Writing sources for Sysprof is not terribly difficult, and since 3.28 you can use libsysprof-capture-2.a static archive to record stats in your programs. We could use some help writing fun visualizers though, and then perhaps Sysprof could be the-tool-of-choice for this.
The capture format is binary and optimized to avoid copies while still buffering on the way to disk, reducing syscalls. It's been working remarkably well. We can add new capture frames for interesting stuff if people desire it.
Starting to merge different data sources together into a single capture stream.
Thanks to Matthias Clasen and I teaming up this evening, we have an FPS counter from Gtk injected into the Sysprof data stream.
Gtk 3 now has a fix from @matthias_clasen to fix the auto-scrolling when you paste and multiple views are open. Should make things a lot nicer for Vim-emulation users who were very likely to hit this.
Some frame timing information from the gtk4 paint clock. Obviously the goal here is to get all these external systems together and that will happen soon.
First ever Sysprof recording that includes drm vblank timing.
I've been working on a new data capture type for Sysprof this week. Others have been working on integration points for GPU drivers, compositor (and plumbing) and Gtk. I need to finish up the visualizers but once the data comes together, it should be very useful.
In Cambridge. Super happy to be back. Last time I was here for a GNOME event it snowed.
Slowly porting all of Builder's completion providers to the new lazy engine I've built.
To do things really well we are going to need to extend the xdg_popup extension on Wayland. But it sounds like that will happen in short order and we can implement the protocol on gtk3 too.
Want to get paid USD 8000 over three months starting on Dec 1st? #gnome is running an internships program for privacy and security: https://www.gnome.org/news/2018/05/announcing-the-gnome-internship-program/
Chances a solicitor at the front door is going to get the "nice me" when interrupting my work day: zero.
Just landed the branch to move clang operations into a subprocess and IPC w/ GVariant over pipes. I've disabled completion due to some n² performance issues in gsv, but we'll address that with the new completion engine landing in the next week or two.
Who runs for office with a goatee? It's like they think we can't tell they're the evil timeline.
Staying a few extra days in Cambridge to explore after the GNOME hackfest next month.
Wont lie, I feel like my code will be more valuable by being written closer to Cambridge.
Should be fine glued to a maple headstock. Sands up quick nice too.
Headed to Linuxfest Northwest this weekend, or I'd be doing some quick tests with the router too.