I am looking for a tool recommendation which can provide per drawcall time for vulkan application frame, similar to what renderdoc provides. (refer the link)
I tried renderdoc, but the time value does not look reliable. (either too high or too low). The renderdoc github mentioned that it is not recommended for timing capture. Also, ARM tools like streamline or graphics analyzer doesn't seem to have any option to get per drawcall time.
So looking for other alternative tools to get this info.
There isn't a good way to do this on a tile-based GPU, because draw calls don't exist as single monolithic entities. They are processed as multiple disjoint pieces, interleaved with other render passes and other draw calls from the same render pass. Timing whole render passes is about as good as it gets unfortunately.
I believe RenderDoc is using timer queries around draw calls, which will only work for an immediate-mode GPU. (EDIT - Just to clarify the Mali behavior here, timer query ranges inside a render pass will just show the start and end time of the render pass).
There are invasive techniques that give hints - you can render the same render pass twice with draws disabled in the second run and compare, for example. However, that's still not entirely accurate because pixel coverage of remaining draws changes and it will change the effects of hidden surface removal.
Thanks pete. That answered my question.
If you know of any way I can force immediate mode for arm gpu let me know. I will probably try using renderdoc and see if the timing is accurate
rchakena said:If you know of any way I can force immediate mode for arm gpu let me know
You can't, sorry. They are entirely tile-based.