-
-
Notifications
You must be signed in to change notification settings - Fork 1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Running under Wayland reveals bad rendering performance #7462
Comments
I've bisected this. Performance is fine until commit |
Acknowledged. I'm also on Wayland and experience dropped frames when scrolling via mouse+horizontal_scrollbar in the SongEditor. I note that you experience this in custom widgets instead. On Xorg, this is much smoother. On further consideration, I suppose my bisect has identified a commit which caused the bug you filed to manifest in a new situation, which is not the same as identifying the commit which caused slow rendering in general. Apologies for the noise. |
@cyberrumor, no need to apologize as it seems that I was too quick in my judgment. You are right, your bisect has found another place where the slow rendering of custom widgets manifests as slow rendering with dropped frames under Wayland. I will create a list of known problems in my original description and add your finding there as well. |
I have profiled the behavior of the Song Editor with auto-scroll turned on and playing The result is that the calls are dominated by lmms/src/gui/tracks/TrackContentWidget.cpp Line 273 in 07baf9e
Removing this line has no side effects for me and it also removes the calls to Please note that the aforementioned line of code is bad style anyway. Normally that call should do nothing because the size of the clip is not changed. However, Lines 114 to 119 in 07baf9e
So the code in Notes on profilingTo profile an application with Valgrind from a certain point on the profiling session must be started with the parameter
In another console the collection can then be started with
and turned off again with
It's also possible to pass the PID to the Profiler resultsBefore removing the call to After removal: callgrind.out.18024.zip |
I have created pull request #7570 which removes the call |
Interesting, my investigation had led me to SongEditor.cpp::scrolled. The I pulled your change down and poked around with it. Interface is still a bit laggy with that horizontal scrollbar but I don't notice anything misbehaving as far as clip length. |
@cyberrumor, it looks like that signal leads to the updates described above. lmms/src/gui/editors/TrackContainerView.cpp Lines 155 to 164 in 07baf9e
|
System Information
Linux - Wayland
LMMS Version(s)
bda1a9c
Bug Summary
Short story: the Wayland rendering loop reveals performance problems if an application is not able to update its GUI at a rate of 60 Hz. Frames that take longer than 1/60 second to render will be dropped which to the users appears like very laggy updates in the seconds range.
With intelligent data structures and efficient rendering code it should be possible to reach the requested update rate.
This will mostly affect custom widgets like the waveform renderer/view.
Known affected components
Expected Behaviour
Render quickly.
Edit: I have added @cyberrumor's findings.
The text was updated successfully, but these errors were encountered: