Understanding the bottlenecks of vulkan

Hello guys,
i want to know which function-calls in vulkan are the most expensive.
I am asking this, because my engine can barely render 30.000 cubes with 60FPS (without instanced-rendering) but normal game-engines today render over millions of polygons easily.
So what i am doing wrong with vulkan? How can i achieve the same thing in vulkan?

I assume your problem is excessive synchronization, but it is impossible to tell with so little infromation. Use something like RenderDoc, or similiar tools like Nsight for Nvidia and CodeXL for Radeon GPUs. Or built-in timestamp commands. You don’t render cubes triangle by triangle, do you?

Twanks123
Your videocard model ?

I test my vulkan program and Directx 11 program.
Vulkan in 2x slower than DX 11 on the same 3d scene and msaa x8 !!!

Vulkan crossplatform solution, but not faster than DX 11. Its sad :frowning:

When released games with Mantle i see real growth FPS. In Thief 4 DX 11 46 fps Mantle 58
In Battlefield 4 good fps Mantle. In Sniper Elite 3.

But Vulkan almost one year and i not see games wear Vulkan hit Mantle or DX 11 !
Very, very sad :frowning:
Vulkan it is very bad Mantle :slight_smile:

PS: Why vulkan spir compiled shader big than text shader ?! Awesome !

i want to know which function-calls in vulkan are the most expensive.

Vulkan doesn’t work that way. Well technically, neither did OpenGL.

You can’t get performance by just noting which functions are “slow” and avoiding them where possible. It’s not a matter of some “slow function” vs. “fast function” dichotomy.

Performance in Vulkan (or any rendering API for that matter) is a matter of how your application as a whole approaches the very act of rendering. And we can’t know anything about how your application is trying to render based on what you’ve told us.

[QUOTE=Ronniko;40686]Twanks123
Your videocard model ?[/QUOTE]
I am using a AMD Radeon HD7870OC.

Mhhh i not really sure about this. I am using the same approach as in the Intel-Tut (API without Secrets: Introduction to Vulkan* Part 4: Vertex Attributes), which have a reasonably good explained synchronization control. I always try to use as less as synchronization as possible.

How you do that?

How you do that?

Rather, you don’t do that :slight_smile:

Anyway, no one can help you without source code or, preferrably, profilation data.

Mhh well its my first huge program and i started programming three years ago. I do my best, but its sometimes really hard to do things in vulkan because you can do so many things wrong and you need so much knowledge, which i obviously dont have so far.
Thanks for all your help. I will keep going and try to learn as much as possible.