• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..--

README.mdD15-Dec-20241.6 KiB3524

README.md

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