Performance problems with Vulkan on Linux with Nvidia Quadro M1000M Driver Version: 510.73.05

Greetings,

I’m currently preparing porting an Engine from OpenGL to Vulkan. Unfortunately, the Engine reaches only 60% of the speed in Vulkan as it used to under OpenGL. It seems to me, that the problem appears mostly for drawcalls that produce a lot of pixels. it can be measured with the usual tools like Nvidia Nsight or renderdoc.

I cannot hand out the proprietary code, but on my machine, the problems can be reproduced with the Diligent Engine:

and the following example included with it:

It can be used for easy comparison. Just switch it from Vulkan to Opengl by adding

“-mode GL”

in the command line.

If you need precompiled binaries, tell me.

I recorded the commands produced by one frame using renderdoc:

https://renderdoc.org/

I recorded the times from the performance counter viewer below.

In the Vulkan run, command 14 and 18 clear the color and depth buffer via vkCmdClearAttachments.
In the OpenGL run, command 7 and 12 clear the color buffer and depth buffer respectively via glClear.

It can be observed, that Vulkan takes 2-3 times longer with vkCmdClearAttachments than with glClear ( times in musec are second column from the left). The following two commands are drawcalls where there is not so much difference in runtime.

Vulkan:
14 116.128 0 0 0 0 0 0 0 0 0 0 0 0
18 119.68 0 0 0 0 0 0 0 0 0 0 0 0
23 27.424 3 1 0 1 1 280208 3 0 0 0 280208 0
34 8.384 303 101 0 101 101 8948 116 0 0 0 8948 0

OpenGL:
7 40.672 0 0 0 0 0 0 0 0 0 0 0 0
12 11.136 0 0 0 0 0 0 0 0 0 0 0 0
18 38.048 3 1 0 1 1 287847 3 0 0 0 287847 0
39 18.976 303 101 0 101 101 8948 116 0 0 0 8948 0
40 1.12 0 0 0 0 0 0 0 0 0 0 0 0

Nvidia Nsight gives similar results.

Any idea? Are there any known inefficiencies with the above driver version and Linux X64?

Regards