09:09emersion: daniels, can i add your ack for https://gitlab.freedesktop.org/wayland/wayland-protocols/-/merge_requests/194 ?
09:16daniels: emersion: I’m sad the event is gone, but yeah Ab - let’s see what it’s like in the real world and if we really need it then we can add it in v2
09:16any1: I wonder how long it will take for cursor-shape to be adopted by gtk and qt
09:18any1: This is how it should have been done from the start. ;)
09:30d_ed[m]: merge requests for Qt will be up soonish
09:35d_ed[m]: what clients are written with Smithay?
09:37zzag: It was mentioned that it's used by winit, so I believe alacritty and things as such will use it
09:37emersion: alacritty
09:50wlb: wayland/main: Simon Ser * util: simplify wl_fixed_to_double() https://gitlab.freedesktop.org/wayland/wayland/commit/0e0ae7e290f2 src/wayland-util.h
09:50wlb: wayland Merge request !314 merged \o/ (util: simplify wl_fixed_to_double() https://gitlab.freedesktop.org/wayland/wayland/-/merge_requests/314)
09:56wlb: wayland/main: Simon Ser * server: stop wl_display_run() on dispatch error https://gitlab.freedesktop.org/wayland/wayland/commit/8f2a33cffcdf src/wayland-server.c
09:56wlb: wayland Merge request !310 merged \o/ (server: stop wl_display_run() on dispatch error https://gitlab.freedesktop.org/wayland/wayland/-/merge_requests/310)
09:57wlb: wayland Merge request !293 closed (releasing: update and convert to Markdown)
09:59wlb: wayland/main: Simon Ser * build: override wayland-scanner dep https://gitlab.freedesktop.org/wayland/wayland/commit/2aec19ce41bb src/meson.build
09:59wlb: wayland Merge request !313 merged \o/ (build: override wayland-scanner dep https://gitlab.freedesktop.org/wayland/wayland/-/merge_requests/313)
10:00wlb: wayland-protocols Merge request !210 opened by Simon Ser (emersion) tablet-v2: fix typo in set_cursor serial description https://gitlab.freedesktop.org/wayland/wayland-protocols/-/merge_requests/210 [tablet]
10:05wlb: wayland Merge request !315 opened by Simon Ser (emersion) protocol: refer to wl_surface.offset in set_cursor https://gitlab.freedesktop.org/wayland/wayland/-/merge_requests/315
11:25wlb: wayland-protocols/main: Simon Ser * tablet-v2: fix typo in set_cursor serial description https://gitlab.freedesktop.org/wayland/wayland-protocols/commit/18aa7b27f7ef unstable/tablet/tablet-unstable-v2.xml
11:25wlb: wayland-protocols Merge request !210 merged \o/ (tablet-v2: fix typo in set_cursor serial description https://gitlab.freedesktop.org/wayland/wayland-protocols/-/merge_requests/210)
11:58zzag: https://gitlab.freedesktop.org/wayland/wayland-protocols/-/merge_requests/90#note_1112190 can somebody explain what you mean by "user memory fence" in that discussion? is it a special kind of a fence?
11:58emersion: yeah
11:58emersion: right now fences are managed by the kernel
11:59emersion: e.g. to signal a fence, one needs to context-switch to the kernel
11:59emersion: same for waiting
11:59emersion: or querying
11:59emersion: with UMF you can do these things from user-space
12:00emersion: i'd recomment just going forward with drm_syncobj
12:01emersion: the UMF stuff has been stuck for a very long time and no indication of it getting unstuck
12:01emersion: recommend*
12:02zzag: is it attached to the graphics memory somehow? or its the only crucial point is that you can signal/wait for it in the user space without context switching?
12:02zzag: I'm confused by "user memory" in the name
12:03emersion: "user" as in user-space
12:03emersion: i'm not sure how it works exactly
12:03emersion: maybe gfxstrand can provide more details
12:05emersion: by any chance does anybody know what formats PIXMAN_yuy2 and PIXMAN_yv12 are?
12:06emersion: nothing in the git log, the access functions are just an unreadable mess
12:07pq: I don't know those two.
12:08pq: Try fishing on #xorg-devel or the Cairo channel where ever that is?
12:10emersion: good idea
12:10emersion: cairo doesn't use these though
12:11pq: no, but in the freenode days pixman people were on the cairo channel if anywhere
12:13wlb: wayland Merge request !316 opened by Sebastian Wick (swick) protocol: specify the exact form of premultiplication https://gitlab.freedesktop.org/wayland/wayland/-/merge_requests/316
12:24mceier: emersion: kernel documentation mentions yuy2 and yv12: https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/pixfmt-yuv-planar.html?highlight=yv12#id23 and https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/pixfmt-packed-yuv.html?highlight=yuy2#id1 I would assume PIXMAN_yuy2 and PIXMAN_yv12 refer to them.
12:24pq: pixman predates drm_fourcc though, depends on when they were added
12:25pq: pixman uses machine-endian formats while drm_fourcc uses little-endian definitions, so at least that is different
12:26pq: oh, that's v4l, not drm_fourcc
12:26pq: no idea about v4l
14:20any1: I think yuy2 is another name for yuyv, which is single plane interleaved 422
14:28emersion: someone linked to https://learn.microsoft.com/en-us/windows-hardware/drivers/display/4-2-0-video-pixel-formats
15:43emersion: pq, how do you plan to represent the TFs in Weston, if you don't use an enum?
15:44emersion: just raw integers?
17:05JoshuaAshton: daniels: If I have QueuePresent in Wayland with FIFO right now and a present that takes longer than my refresh rate (ie. spans multiple frame callbacks), what prevents it from being overriden by another QueuePresent that took much less time directly after?
17:05JoshuaAshton: Seems like this is broken in practice too fwiw
17:06JoshuaAshton: As the QueuePresent blocking for frame event bodge in Mesa doesn't actually mean that the compositor is going to present with the buffer we submitted on the CPU side as it may not be done on the GPU side.
17:09JoshuaAshton: I was speaking to emersion and maybe we should use presentation-time for FIFO? What is preventing that?
17:09emersion: daniels: i just realized we might be able to use this to address the vulkan presentation thread issue? https://gitlab.freedesktop.org/wayland/wayland-protocols/-/merge_requests/26
17:10JoshuaAshton: The alternative is that on our side we only send the frame callback once we get a new buffer from the client rather than unconditionally on every refresh cycle
17:10emersion: we need to send wl_surface.commit immediately when presenting, but this proto would let us lock it, and unlock it later on in a separate thread
17:11emersion: jadahl: btw any news on that protocol?
17:14jadahl: emersion: it got refresh in my head not long ago, need to addres MrCooper's raised issues which kind of defines a "transaction" that covers both subsurfaces wp_transaction and the buffer-readiness stuff
17:14jadahl: what is the presentation thread issue?
17:16emersion: jadahl: mesa cannot delay wl_surface.commit in vkQueuePresent when implementing VkPresentModes
17:17emersion: vulkan clients expect vkQueuePresent to commit the surface
17:17emersion: IOW: changing the surface pending state after vkQueuePresent() should not be included in the commit
17:18emersion: jadahl: "covers both subsurfaces wp_transaction and the buffer-readiness stuff" → but we don't need to define this here though?
17:19emersion: i mean, transactions is just one thing that can hold back a commit
17:19JoshuaAshton: I guess really want we probably want is to be able to define a serial on a buffer so a compositor can go thru them in order. Any other solution such as unlocking from the clientside would introduce bubbles of latency.
17:19emersion: there are others, like sub-surfaces and buffer readyness
17:36jadahl: emersion: don't need to cover readiness perhaps, but needs to define a "transaction" that maybe includes (or invalidates) subsurface synchronization
17:36emersion: i don't really agree
17:37emersion: i don't see why we would want this
17:39jadahl: MrCooper: did we only talk about hte transaction stuff on IRC? because I find nothing on gitlab, but still have memory of you raising concerns about how things were formulated
17:40emersion: i mean there's no harm saying that the compositor might hold off commits for longer
17:40emersion: or that a synchronized sub-surface might hold off commits for longer
17:40emersion: but i'd rather not change any existing behavior
17:41jadahl: it's more about how to define a transaction, that can coexist with subsurface synchronization, that still makes buffer readiness implementable
17:41emersion: it's an additive thing
17:42emersion: each one of these things holds off the commit for a bit longer
17:42MrCooper: JoshuaAshton: sounds like gamescope might not implement frame events correctly; a frame event is supposed to mark the point after which attaching a new buffer to the surface can no longer prevent a previously attached buffer from getting presented to the user, which is what's needed for FIFO
17:42emersion: that's an incorrect interpretation
17:43emersion: wl_surface.frame indicates when it's a good time to start drawing the next frame
17:43emersion: it might be immediately, that's up to the compositor
17:43MrCooper: I think the spec is pretty explicit about that
17:43emersion: https://gitlab.freedesktop.org/wayland/wayland/-/blob/main/protocol/wayland.xml#L1543
17:44MrCooper: "frame event communicates a good time to start drawing" is folklore at this point, clients may need to start earlier than that to sustain full frame rate
17:45MrCooper: jadahl: possibly, don't really remember details about that :(
17:45JoshuaAshton: MrCooper: I took a look at other compositors and they were just sending the frame callback without regard for this on every surface every refresh cycle
17:46emersion: in any case, there is no such guarantee
17:46MrCooper: "If the client commits an update earlier than that, it is likely that some updates will not make it to the display"
17:46emersion: "likely"
17:49jadahl: MrCooper: too bad, because you had a bunch of good points that forced me to revaluate all the wording, but didn't write anything down :(
17:50MrCooper: emersion: there's a small chance the second update will cross the wire at the same time as the frame event, in which case it may make it to the display
17:51emersion: this still doesn't say anything about your assumption
17:52MrCooper: pq seemed to agree with my interpretation
17:53emersion: frame events are for clients with simple rendering loops
17:53emersion: if you want to implement FIFO, it's not the right tool
17:53swick[m]: it's almost like the frame event is not suitable for implementing FIFO
17:53MrCooper: anyway, you can avoid this ambiguity with presentation-time, but then you'll more likely need to start working on the next frame before the event arrives
17:53emersion: sure
17:53swick[m]: yeah, presentation-time doesn't make anything better
17:54emersion: with transactions, you can
17:54swick[m]: probably but that seems like a hack
17:54MrCooper: with transactions you can what?
17:54swick[m]: if we want fifo behavior we should define a protocol to get fifo behavior
17:55MrCooper: yep
17:55emersion: we've seen how that went in the past
17:55emersion: we've like 5 proposals for this now
17:55swick[m]: not really
17:55swick[m]: I have not seen a single one
17:55swick[m]: present-timing maybe
17:57emersion: i was speaking about presentation in general
17:58MrCooper: jadahl: mainly I think the interactions between transactions and synchronized sub-surfaces are tricky and need to be well thought through and documented (and ideally tested)
17:58emersion: these interactions are not tricky at all in my implementation
17:58MrCooper: e.g. if a synchronized sub-surface is part of a transaction but its parent is not, or vice versa
17:59emersion: sync sub-surfaces use the same internal mechanism as transactions and buffer readyness
18:09jadahl: MrCooper: yea
18:12MrCooper: emersion: I agree something like that should work, just need to make sure the spec spells it out unambiguously
18:12emersion: +1 for spelling things out explicitly
18:12MrCooper: calling it a day, bbl
23:01ahmadraniri[m]: Hello, I'm trying some examples of qt wayland compositior (from qtwayland5-examples package). It's launchable both from TTY or nested. I notice that if I launch the compositor from TTY, my keyboard input become double, like if I type "l", the output become "ll". It doesn't happen when I launch it as nested compositor. Any clue ? Thanks... (full message at <https://matrix.org/_matrix/media/v3/download/matrix.org/VjyIVaYBKyvoehNbtvARLoVh>)