I am trying to know if the PC running my soft has a specific GPU extension. To achieve this I use this function vkEnumerateInstanceExtensionProperties, but I don't understand the first parameter.
If I call this function with NULL for the pLayerName parameter, the pPropertyCount is set to 12.
But according to OpenGL Extensions Viewer, I have more than 12 extensions available on my GPU. OpenGL Extensions Viewer sort extensions by their prefix (GL_KHR, GL_EXT, GL_NV, GL_ARB...), is this the "layer" ?
There is no such thing as a "GPU extension". An extension is just a mechanism to allow an implementation of an API to expose more functionality than the API normally does. To the GPU, the functionality exposed through an extension is just functionality, no different from any of the other functionality the GPU provides that was exposed directly through the API.
Extensions are always relative to some API. That's why they're called "extensions"; they "extend" the functionality of the API. OpenGL and Vulkan are separate APIs; as such, they offer different slates of possible extensions. Some of them have equivalent versions in the other API, but for the most part, the extension sets are entirely distinct.
The OpenGL extension viewer will tell you nothing about anything accessible through the Vulkan API.
Vulkan layers are not extensions. Layers are generally provided by code that are neither your application nor the Vulkan implementation itself. Layers live between the two, and they primarily exist to allow some program to track API calls and logic from the application to the implementation.