~fazzi


#26 Average time to render frame much higher with dmabuf capture than pipewire / xdg capture 1 year, 1 day ago

Comment by ~fazzi on ~scoopta/wlrobs

Hey there - here are my results. Just a small snippet:

START _frame 54
END _frame 54
object 54
ready 56
wl_rt 0
START _frame 48
END _frame 48
object 48
ready 50
wl_rt 0
START _frame 37
END _frame 37
object 37
ready 39
wl_rt 0
START _frame 72
END _frame 72
object 72
ready 74
wl_rt 0
START _frame 24
END _frame 24
object 24
ready 26
wl_rt 0
START _frame 47
END _frame 47
object 47
ready 49
wl_rt 0
START _frame 33
END _frame 33
object 33
ready 35
wl_rt 0
START _frame 59
END _frame 59
object 59
ready 61
wl_rt 0
START _frame 20
END _frame 20
object 20
ready 22

seems to be about 2-7ms or so. This is at 60fps btw on Hyprland. But yes you are right, the rest of the pipeline is very short, only a few small fractions of a millisecond.

#26 Average time to render frame much higher with dmabuf capture than pipewire / xdg capture 1 year, 4 days ago

Comment by ~fazzi on ~scoopta/wlrobs

your frame time shouldn't be high due to your obscene refresh rate

hahaha, nowadays 170Hz isn't too obscene, obscene to me is those 360Hz, 500Hz, etc monitors!

I'll push a branch with timing prints

Sounds good to me, take your time, no need to rush :)

unfortunately I can't test this thoroughly while at work

I wouldn't expect you to test this let alone reply to my comments at work, so thanks for that. Again, please take your time. This isn't urgent at all.

#26 Average time to render frame much higher with dmabuf capture than pipewire / xdg capture 1 year, 4 days ago

Comment by ~fazzi on ~scoopta/wlrobs

so just to be clear your frame time is around 6ms at 60FPS on a 170hz display?

yep.

Can you try capturing at 62FPS(since that's the FPS I decided to try with) and let me know what you get?

Sure. recording at 62fps, the time is still hovering around 5-7ms. Didn't seem to make much of a difference, maybe slightly lower, can't tell.

Can you try capturing at a significantly higher FPS...

Recording at 75fps and again time is about 5-7ms, doesn't seem to be having much of an effect on my system. Testing at 170, OBS didn't allow me to set 170 in integer value, so I set it to fractional and did 170/1. Again, average time stays the same, however now its causing relatively frequent dropped frames. This is probably because 170fps will equate to ~ 5.88ms frametime and my average time goes over that frequently to about 6.5ms.

What is your laptops refresh rate?

My laptop refresh rate is 60Hz. So in the same boat as you with that. framdrops around 60fps and over.

One interesting thing to note is for me when I have the preview on and the properties window open, the average time to render is about double, at 10-12ms or so. Does this indicate its not a Vsync issue?

#26 Average time to render frame much higher with dmabuf capture than pipewire / xdg capture 1 year, 4 days ago

Comment by ~fazzi on ~scoopta/wlrobs

I have a 170Hz monitor, I could test for you if you'd like (if I know how lol). This entire time I've been capturing at 60fps. Would you like me to try capturing at 170?

Let me know what info you need and how you want me to capture it. I'll try my best to help you out 👍

Edit: about the pipewire capture then, I don't think it would be possible for it to send a duplicate frame due to the fact my refresh rate is so high. I know this isn't related to your plugin, but does this seem correct?

Another edit lol: Recording with the obs-vkcapture plugin is highly efficient as well, and seems to give me silky smooth 60fps capture of my games with a render time of <1ms. How would this be possible?

#26 Average time to render frame much higher with dmabuf capture than pipewire / xdg capture 1 year, 5 days ago

Ticket created by ~fazzi on ~scoopta/wlrobs

Opening up the stats page on OBS (Docks on top left > Stats) with the dmabuf source enabled and visible, my "average time to render frame" seems to be relatively high, at ~6ms.

One question, is this capture method supposed to be more efficient than pipewire? I have an Nvidia GPU if that changes anything. If I instead use the xdg-desktop-portal-hyprland / pipewire capture method, the avg time is about 0.8ms, a considerable decrease.

Is this just a flaw of the wlrobs plugin? Or is there something wrong? On my laptop the avg time with dmabuf is about 16ms which causes frameskips at some points.

How could I help you diagnose this issue? I'd like to use your plugin for screen capture as I have an issue with pipewire screen cap where it's not exactly 60fps. More info here: https://github.com/hyprwm/xdg-desktop-portal-hyprland/issues/201