As clearly stated in the specification:
Any parameter that is a structure containing the void* pNext member must have a pNext value that is either NULL or indicates a valid structure, which is determined by the allowed extension.
It is for extensions.
If the first member of each structure is sType, could the extensions define their own structure types when they need different / additional parameters?
That would not be extensible.
There is only one sType field. So, how can two extensions extend the same API with new values? Just like the old extension works with the new versions of Vulkan, which itself uses a different data structure identified by sType .
With pNext you do not have this problem. Each extension data structure will not only have its own internal sType field, but it will no doubt also have its own pNext field. Thus, multiple extensions can extend the same data structures.
sType does not need this because it will only be changed in higher versions of Vulkan.
source share