<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: 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
<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 :)