-
Notifications
You must be signed in to change notification settings - Fork 3k
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
Invalidate framebuffers #4777
Invalidate framebuffers #4777
Conversation
Don't discard the OSD or pass_draw_to_screen passes though. Could be faster on some hardware. Needs testing.
Seems to make no difference on intel/mesa as well. I'll still try vulkan though, since vulkan can actually invalidate stuff better than OpenGL can. |
This improves my I previously made the comment #4721 (comment) where I was mistaken about the cause of the I have tested out just invalidating the framebuffer at |
Platform/GPU/drivers? |
Windows 10 |
What if you ignore the per-pass timings and just look at the overall sum? Which version is lower? |
With Overall peak timings favor this pull request while the average timings very slightly favors the master branch. The images does not really capture the extreme jitter in the master branch, it could sometimes go to as high as 30,000us. master + fbotex_invalidate diff:
|
Maybe we could do both? |
Looking again at this diff, I'm not exactly sure why there would be a difference between your paste and pr4777. If you're invalidating for every |
Even if the call order matters, why does it only degrade performance for the pass just before output to screen? Only in the case of |
I am an idiot. There is actually no difference in performance between my diff and this pull request. The 2000us difference is due to the |
Leavces the question why the shit invalidating a frame buffer (which should be a free operation that decreases rendering time) takes 2ms |
Could stall the pipeline or do something semi-stupid like freeing the underlying memory, and then taxing the memory manager. |
(So do we merge this or not?) |
No difference on amdgpu/mesa |
No change on amdgpu/radv, which is perhaps the most surprising one for me. (I'd have maybe expected the texture layout transition to take time for AMD hardware, which this patch skips) |
Results in a tiny performance increase, and is relatively free. Closes mpv-player#4777.
This is especially interesting for vulkan since it allows completely skipping the layout transition as part of the renderpass. Unfortunately, that also means it needs to be put into renderpass_params, as opposed to renderpass_run_params (unlike mpv-player#4777). Closes mpv-player#4777.
This is especially interesting for vulkan since it allows completely skipping the layout transition as part of the renderpass. Unfortunately, that also means it needs to be put into renderpass_params, as opposed to renderpass_run_params (unlike mpv-player#4777). Closes mpv-player#4777.
This is especially interesting for vulkan since it allows completely skipping the layout transition as part of the renderpass. Unfortunately, that also means it needs to be put into renderpass_params, as opposed to renderpass_run_params (unlike mpv-player#4777). Closes mpv-player#4777.
This is especially interesting for vulkan since it allows completely skipping the layout transition as part of the renderpass. Unfortunately, that also means it needs to be put into renderpass_params, as opposed to renderpass_run_params (unlike mpv-player#4777). Closes mpv-player#4777.
This is especially interesting for vulkan since it allows completely skipping the layout transition as part of the renderpass. Unfortunately, that also means it needs to be put into renderpass_params, as opposed to renderpass_run_params (unlike mpv-player#4777). Closes mpv-player#4777.
This is especially interesting for vulkan since it allows completely skipping the layout transition as part of the renderpass. Unfortunately, that also means it needs to be put into renderpass_params, as opposed to renderpass_run_params (unlike mpv-player#4777). Closes mpv-player#4777.
This is especially interesting for vulkan since it allows completely skipping the layout transition as part of the renderpass. Unfortunately, that also means it needs to be put into renderpass_params, as opposed to renderpass_run_params (unlike mpv-player#4777). Closes mpv-player#4777.
This is especially interesting for vulkan since it allows completely skipping the layout transition as part of the renderpass. Unfortunately, that also means it needs to be put into renderpass_params, as opposed to renderpass_run_params (unlike mpv-player#4777). Closes mpv-player#4777.
This is especially interesting for vulkan since it allows completely skipping the layout transition as part of the renderpass. Unfortunately, that also means it needs to be put into renderpass_params, as opposed to renderpass_run_params (unlike mpv-player#4777). Closes mpv-player#4777.
Not sure if this change helps or not. It doesn't seem to on nvidia, but I need other people to test it as well.
cc @atomnuker @bjin or somebody who can test on intel/mesa or radeonsi or whatever. (Measure timings with opengl-hq or something - the more passes, the better!)