Embed profiling capabilities and report them in the UI:
Time it takes to prepare/render a frame in sequence viewer, i.e. one iteration of the whole pipeline
Performance of individual shaders such as waveform (for testing different implementations)
Per node (group) performance?
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.
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.