Whats the difference between this vkAcquireNextImage2KHR and without 2 on it?

I see a lot of functions like this, is there a difference? Which one should i use and why?

Edit: To be more explicit, i am talking about these: vkAcquireNextImageKHR and vkAcquireNextImage2KHR

The difference is pretty clearly spelled out in their function signature. One of them takes a bunch of parameters directly, the other one takes an Info struct which stores those parameters… and has a pNext chain.

That last part is the main reason why the function exists; pNext chains are how Vulkan extends the behavior of functions, but Vulkan 1.0 had a bunch of functions that didn’t take structs with pNext pointers on them.

The other reason is that the Info struct has a deviceMask field representing which physical devices are involved in the acquire operation. If vkAcquireNextImageKHR originally used an Info struct with a pNext chain, they could have just added an extension struct that contained the deviceMask field.

1 Like