My app does 300-400 draw calls each frame. It works fine on Mali devices. But I have problems with Vulkan implementation on Adreno devices. It does a lot of work in vkEndCommandBuffer and I don't know how to optimize it. I posted question on stackoverflow: https://stackoverflow.com/questions/60075208/very-slow-vkendcommandbuffer-on-android
Now things are even worse: vkEndCommandBuffer - 38% of render thread time, memcpy inside of it - 27% of render thread time. What's going on inside of this function? How can I reduce this time?
Hi slavnejshev, could you share a minimal test project, when problem could be reproduced? Do you have any error messages from Vulkan Validation Layers?
No errors in validation layers. It would be hard to write minimal test (Vulkan examples are very long). I'm doing quite simple things, nothing special. Isn't it a common problem? How muh time should vkEndCommandBuffer work? Is it okay if it works 40% of render thread time (yes, we optimized rendering even more)?
The main problem is that we write new command buffer each frame, no caching. So it's performance critical for us.
Any update? I did more optimizations. Now vkEndCommandBuffer works 44% of render thread time, memcpy inside of it works 31% of render thread time (the worst case, device - YNDX-000SB). I need your help with this issue.
did you fix problem ?
did you fix problem ?