sobotka / olive

NLE video editor
GNU General Public License v3.0
2 stars 1 forks source link

[TODO] OpenGL performance profiler #112

Open Simran-B opened 4 years ago

Simran-B commented 4 years ago

General TODO Summary

Embed profiling capabilities and report them in the UI:

Additional Information / Notes

CPU time can simply be measured with system timers, but GPU time requires timer queries and is tricky to measure without affecting rendering performance - the timing results become available with a delay because of GPU pipelining. Busy waiting on CPU side would starve the GPU. A tutorial states that the query results would be guaranteed to be available on the next frame, but according to the Qt docs it takes 1-5 frames. They provide a wrapper class to tackle this problem.

There are vendor-specific utilities, such as GPU Performance API for convenient access to performance counters of AMD GPUs. There are also custom implementations for OpenGL such as in Nimble, but a vendor-agnostic Qt solution seems preferable.

External profiling tools such as renderdoc, nvidia perfkit and Radeon GPU Analyzer are presumably of limited use, because they capture Olive as a whole including the Qt GUI.