diff options
Diffstat (limited to 'codegen/vulkan/src/ext_loader/README.md')
-rw-r--r-- | codegen/vulkan/src/ext_loader/README.md | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/codegen/vulkan/src/ext_loader/README.md b/codegen/vulkan/src/ext_loader/README.md new file mode 100644 index 00000000..c571986c --- /dev/null +++ b/codegen/vulkan/src/ext_loader/README.md @@ -0,0 +1,34 @@ +<!-- +Copyright 2018-2021 The Khronos Group Inc. + +SPDX-License-Identifier: CC-BY-4.0 +--> + +# What Happened To The Vulkan Extension Loader? + +If you're looking for the files vulkan_ext.[ch] in this directory, they have +been removed. There were two significant problems with these simple +wrappers. + +First, vulkan_ext exported all extension entrypoints. However, the Vulkan +loader also exports entrypoints for the window system integration +extensions. If someone tried to compile a project and link it to both the +loader and vulkan_ext, they would get a bunch of redefined symbols. This +linking error is difficult to work around, because vulkan_ext does not have +an easy method of disabling the entrypoints at compile time. It is possible +to remove these entrypoints when generating vulkan_ext, but even then you +have to manually compile a list of every single extension to be disabled. + +Second, each entrypoint is only stored once, regardless of how many +instances or devices are created. This means that attempting to use multiple +instances or devices in parallel can result in one device calling function +pointers that are only valid on the other device, which will crash. You may +be able to work around this by never initializing the device dispatch +(vkExtInitDevice), but we haven't tried this. + +It is still possible to retrieve the last versions of these files in the +Github KhronosGroup/Vulkan-Docs repository from the 'v1.1.75' release tag. +It is also possible to regenerate them from ../../xml/vk.xml, although we +are no longer maintaining the generator code and it may eventually stop +working correctly. See README.adoc and the `extloader` Makefile target in +that directory. |