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