ifreund changed the topic of #river to: river - a dynamic tiling wayland compositor || https://github.com/ifreund/river || channel logs: https://libera.irclog.whitequark.org/river/
_whitelogger has joined #river
_whitelogger has joined #river
waleee-cl has quit [Ping timeout: 252 seconds]
leon-p has quit [Quit: leaving]
_whitelogger has joined #river
_whitelogger has joined #river
_whitelogger has joined #river
novakane has joined #river
_whitelogger has joined #river
tdeo has quit [*.net *.split]
crr has quit [*.net *.split]
dnkl has quit [*.net *.split]
emersion has quit [*.net *.split]
aruhier has quit [*.net *.split]
ifreund has quit [*.net *.split]
crr has joined #river
tdeo has joined #river
aruhier has joined #river
dnkl has joined #river
ifreund has joined #river
emersion has joined #river
tdeo has quit [*.net *.split]
crr has quit [*.net *.split]
dnkl has quit [*.net *.split]
aruhier has quit [*.net *.split]
emersion has quit [*.net *.split]
ifreund has quit [*.net *.split]
tdeo has joined #river
crr has joined #river
dnkl has joined #river
aruhier has joined #river
ifreund has joined #river
emersion has joined #river
_whitelogger has joined #river
waleee-cl has joined #river
_whitelogger has joined #river
yyp has joined #river
novakane has quit [Quit: WeeChat 3.1]
skuzzymiglet has joined #river
leon-p has joined #river
waleee-cl has quit [Ping timeout: 265 seconds]
waleee-cl has joined #river
novakane has joined #river
yyp has quit [Ping timeout: 265 seconds]
<ifreund> we've got a next-zig branch that works with zig master
yyp has joined #river
<novakane> nice, I see that was mainly format things to change
<ifreund> yep, not a whole lot of breaking changes this zig release, most of the work has been focused on stage2
<novakane> yeah it's nice for all developers with zig 0.7.1 project I guess
svmhdvn has joined #river
svmhdvn has quit [Read error: Connection reset by peer]
<ifreund> we now have yes/no damage tracking on this branch: https://github.com/ifreund/river/tree/dirty-damage
<ifreund> (requires zig master)
<aruhier> I was going to say that I'm excited this branch :D
<ifreund> :)
<ifreund> now only requires zig 0.7.1
<ifreund> I'll probably merge this before 0.8.0 releases
<ifreund> just need to test a bit to make sure I didn't break anything
<aruhier> is the yes/no damage tracking covering a lot of cases?
<aruhier> I understand that it's avoiding a redraw if nothing at all changed on the screen, right?
<ifreund> yeah that's right, it's all or nothing
<ifreund> finer-grained damage tracking to only re-render parts of the screen if the rest didn't change will come soon, but it is a lot more in-depth
<aruhier> yeah I guess
<novakane> aah here we are
<novakane> the easy part :P
<ifreund> this should already be a decent performance improvement, and fix that freezing issue due to that driver bug
<ifreund> (or at least I'm guessing it's a driver bug, could also be a wlroots bug)
<aruhier> yeah last time I tested river on my laptop (intel igpu based), I had a freeze at start
<aruhier> I'll give it a try again
<ifreund> cool, if you experience any freezes on that branch I'd love to hear about it, but I dont expect you will :)
<aruhier> how granular are the modern compositor on wayland, for the damage tracking, btw?
<aruhier> I don't remember exactly, but like I think that when Mozilla presented servo, for example, they wanted to move of a complex damage tracking for a less granular one
<aruhier> as it didn't make a bunch of sense anymore
<aruhier> I don't know if things can be compared between how a browser handle that and how a wayland composer does, but that's why I'm asking, by curiosity
<ifreund> yeah, at some level more detail doesn't make sense. however if you have many different clients visible even doing damage tracking at surface granularity vs all or nothing would be a nice improvement
<ifreund> in wayland the granularity is mostly up to clients to decide as they are the ones responsible for gathering the information
<aruhier> ok
<aruhier> yeah that's something I don't really get with wayland
<novakane> oh you change pixman.fini, I was confused
<ifreund> yeah deinit > fini :P
<aruhier> I mean from what I understand, wayland ensures that you're frame perfect without unredirection (for fullscreen windows, for example)
<ifreund> foot for example reports damage at terminal row granularity if I'm not mistaken
<aruhier> but I don't really get why the damage tracking has to be done by the compositor
<aruhier> ifreund: alacritty also has a grid
<aruhier> and does the damage tracking like that, from what I understood
<novakane> forget to update submodule, so I had a build error and I was like wait I read pixman.zig hundreds of time, there is no deinit :P
<ifreund> alacritty does damage tracking? since when
<ifreund> aruhier: this PR looks pretty dead: https://github.com/alacritty/alacritty/pull/2724
<ifreund> aruhier: that's damage tracking internal to alacritty, not reported to the compositor afaik
<aruhier> haaa ok
<aruhier> I didn't know you could do that
<ifreund> in wayland clients may report to the compositor that only part of their buffer has changed
<aruhier> ha that's nice
<aruhier> nah alacritty redraws everything I think
novakane has quit [Quit: WeeChat 3.1]
<ifreund> foot does this, telling the compositor that only one row of the terminal has changed if possible
<aruhier> that's cool
<ifreund> the compositor has to actually use this information though to get the benefit, which river doesn't do yet
novakane has joined #river
<ifreund> we now don't naievely keep rendering if nothing has changed though, so that's a start
<aruhier> yeah definitely, that's super cool
<novakane> allright river with damage tracking launched, let's see that
<aruhier> I'm asking by curiosity, not saying that it sucks when features are not there :D
<ifreund> novakane: here's a tip, add `recurse = true` under `[submodule]` in your git config
<aruhier> ifreund: btw, if I understood your commit, the tracking is done per screen, right?
<novakane> ifreund: ah yeah thanks good idea
<ifreund> aruhier: yes, that's right
<aruhier> nice
<novakane> hmm firefox is really laggy
<novakane> like 2 seconds to open a new tab
<ifreund> uh.. let me try
<ifreund> novakane: I don't notice any difference in performace between the damage branch and master
<ifreund> that could just be my beefy hardware though
<ifreund> does anything show up in your river logs?
<novakane> nope I don't see anything unusual
<novakane> I'm gonna reboot
novakane has quit [Quit: WeeChat 3.1]
novakane has joined #river
<novakane> it really is just firefox I don't see any problem in others programs
<ifreund> it's always firefox :/
<ifreund> hmm, one thing I'm doing wrong is trying to render whenever there is *any* damage instead of using a timer to limit that to the refresh rate of the monitor
<ifreund> unless wlroots is doing that for me?
<leon-p> ifreund: don't you use the wlr_output_damage.frame event? That should be at the refresh rate of the output
<ifreund> leon-p: I do, but is it?
<ifreund> from reading the wlroots code it kinda looks like it gets sent as soon as the event loop is about to go back to sleep
<leon-p> i always assumed it is
<ifreund> same, until I just read the code
<leon-p> ifreund: Have a look at sways damage_handle_frame () in sway/desktop/output.c
<leon-p> they compute the time in msec until the next refresh
<novakane> well I'm gonna relaunch river master, firefox is really unusable :/
novakane has quit [Quit: WeeChat 3.1]
novakane has joined #river
<ifreund> leon-p: yeah I've seen that function and am definitely capabable of copying that logic line for line, I want to understand things first thoguh
<ifreund> this is also tied up with presentation timing, maybe I should just implement that as well
<novakane> sway are the only one to did it like this, make sense since they have the more advanced damage tracking
yyp has quit [Remote host closed the connection]
yyp has joined #river
<novakane> unrelated but is the channel log is down?
yyp has quit [Remote host closed the connection]
yyp has joined #river
<ifreund> novakane: yep, seems like it
<novakane> oh ok
<novakane> anyway the only line I don't have in river master logs that I have in the damage-tracking branch is
<novakane> dbg: modules/river.c:370: err: seat: default: focused view: Mozilla Firefoxrender.c:3385:
<novakane> wich is not a lot to help
<ifreund> that seems like a waybar error
<novakane> I don't have waybar
<ifreund> or no, not waybar what is modules/river.c?
<dnkl> yambar?
<novakane> oh yeah yambar probably
<ifreund> yep, that's not an error though just a debug log from yambar
<dnkl> that's from the river-seat-status-v1 interface, and yup, just a debug log
<novakane> allright didn't pay attention to this one before
<ifreund> what is the render.c:3385 at the end though?
Misthios has joined #river
<novakane> I really see no reason why firefox bug like that :/
<novakane> the only things I did differently when I start damage tracking was adding a destroy event for damage listener too
<novakane> wich probably doesn't change something for firefox
<emersion> ifreund: don't use a timer
<emersion> or you'll have clock skew and not be aligned with hw vsync
<emersion> just use the frame events to know when it's time to render
<ifreund> emersion: kenny set me straight in #sway-devel just now :)
<emersion> ah nice :P
noopdecoder has joined #river
noopdecoder has quit [Client Quit]
<novakane> ifreund: it looks like firefox render only when I click on it
<ifreund> novakane: hmm, it's probably subsurfaces or something (it's always subsurfaces with firefox)
<ifreund> let me do a bit more testing
<novakane> like click on new tab, does nothing, click somewhere, new tab icon is highlighted, click again and new tab open
<ifreund> novakane: yep, I'm not adding commit listeners for the sub surfaces, that'd be it
<ifreund> will fix in just a minute
<novakane> nice thanks
<ifreund> ugh, popups too lol
<ifreund> how could I forget
<novakane> haha yeah there is always something that why you can't make a small change :P
yyp has quit [Remote host closed the connection]
novakane has quit [Quit: WeeChat 3.1]
<ifreund> so, damage tracking now handles subsurfaces and popups properly
<ifreund> assuming xwayland doesn't use subsurfaces which I'm like 90% sure is the case
<ifreund> If I don't hit any bugs using it tomorrow ill merge :)