/ src / ext_loader / README.md
README.md
 1  # What Happened To The Vulkan Extension Loader?
 2  
 3  If you're looking for the files vulkan_ext.[ch] in this directory, they have
 4  been removed. There were two significant problems with these simple
 5  wrappers.
 6  
 7  First, vulkan_ext exported all extension entrypoints. However, the Vulkan
 8  loader also exports entrypoints for the window system integration
 9  extensions. If someone tried to compile a project and link it to both the
10  loader and vulkan_ext, they would get a bunch of redefined symbols. This
11  linking error is difficult to work around, because vulkan_ext does not have
12  an easy method of disabling the entrypoints at compile time. It is possible
13  to remove these entrypoints when generating vulkan_ext, but even then you
14  have to manually compile a list of every single extension to be disabled.
15  
16  Second, each entrypoint is only stored once, regardless of how many
17  instances or devices are created. This means that attempting to use multiple
18  instances or devices in parallel can result in one device calling function
19  pointers that are only valid on the other device, which will crash. You may
20  be able to work around this by never initializing the device dispatch
21  (vkExtInitDevice), but we haven't tried this.
22  
23  It is still possible to retrieve the last versions of these files in the
24  Github KhronosGroup/Vulkan-Docs repository from the 'v1.1.75' release tag.
25  It is also possible to regenerate them from ../../xml/vk.xml, although we
26  are no longer maintaining the generator code and it may eventually stop
27  working correctly. See README.adoc and the `extloader` Makefile target in
28  that directory.