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.
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.
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?
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?
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