From 068e83f5f20e38c3ae1687e7f1aeb59bf6ce3e72 Mon Sep 17 00:00:00 2001 From: Charles Giessen Date: Wed, 12 Oct 2022 13:57:22 -0600 Subject: [PATCH] Document vk_icdGetInstanceProcAddr querying device functions vk_icdGetInstanceProcAddr has similar semantics to vkGetInstanceProcAddr. It was created to prevent dynamic linker issues. It stated that it should support global & instance level function querying. But this differs from the Vulkan spec which states that vkGetInstanceProcAddr should be able to query all functions. This creates confusion about what takes precendence, the spec or the loader's docs. This commit makes it explicit that it should have the same semanics what the spec says. --- docs/LoaderDriverInterface.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/LoaderDriverInterface.md b/docs/LoaderDriverInterface.md index 40430fbd..ab20941b 100644 --- a/docs/LoaderDriverInterface.md +++ b/docs/LoaderDriverInterface.md @@ -35,7 +35,7 @@ - [Using Pre-Production ICDs or Software Drivers](#using-pre-production-icds-or-software-drivers) - [Driver Discovery on Android](#driver-discovery-on-android) - [Driver Manifest File Format](#driver-manifest-file-format) - - [Driver Manifest File Versions](#driver-manifest-file-versions) + - [Driver Manifest File Versions](#driver-manifest-file-versions) - [Driver Manifest File Version 1.0.0](#driver-manifest-file-version-100) - [Driver Manifest File Version 1.0.1](#driver-manifest-file-version-101) - [Driver Vulkan Entry Point Discovery](#driver-vulkan-entry-point-discovery) @@ -619,8 +619,12 @@ application. This field is optional. The Vulkan symbols exported by a driver must not clash with the loader's exported Vulkan symbols. -Because of this, all drivers must export the following function that is -used for discovery of driver Vulkan entry-points. +Therefore, `vk_icdGetInstanceProcAddr` was introduced to allow the loader +to perform the the same behavior as `vkGetInstanceProcAddr` but on a driver +basis. +As such, it behaves the same as `vkGetInstanceProcAddr`. +All drivers must export this function which is used for discovery of driver +Vulkan entry-points. This entry-point is not a part of the Vulkan API itself, only a private interface between the loader and drivers for version 1 and higher interfaces. @@ -632,15 +636,11 @@ VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL const char* pName); ``` -This function has very similar semantics to `vkGetInstanceProcAddr`. -`vk_icdGetInstanceProcAddr` returns valid function pointers for all the -global-level and instance-level Vulkan functions, and also for -`vkGetDeviceProcAddr`. +The driver must support querying global-level entry points by calling +`vk_icdGetInstanceProcAddr` with a NULL `VkInstance` parameter. Global-level functions are those which contain no dispatchable object as the first parameter, such as `vkCreateInstance` and `vkEnumerateInstanceExtensionProperties`. -The driver must support querying global-level entry points by calling -`vk_icdGetInstanceProcAddr` with a NULL `VkInstance` parameter. Instance-level functions are those that have either `VkInstance`, or `VkPhysicalDevice` as the first parameter dispatchable object. Both core entry points and any instance extension entry points the -- 2.34.1