Skip to content

Commit

Permalink
loader version
Browse files Browse the repository at this point in the history
  • Loading branch information
nihui committed Nov 8, 2023
1 parent 327c70c commit c7b3285
Showing 1 changed file with 17 additions and 2 deletions.
19 changes: 17 additions & 2 deletions src/simplevk.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -314,10 +314,25 @@ static int load_vulkan_linux(const char* driver_path)
PFN_vkCreateInstance CreateInstance = 0;
PFN_vkGetInstanceProcAddr GetInstanceProcAddr = 0;

PFN_vkGetInstanceProcAddr icdGetInstanceProcAddr = (PFN_vkGetInstanceProcAddr)dlsym(libvulkan, "vk_icdGetInstanceProcAddr");
typedef VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL (*PFN_vk_icdGetInstanceProcAddr)(VkInstance instance, const char* pName);
PFN_vk_icdGetInstanceProcAddr icdGetInstanceProcAddr = (PFN_vk_icdGetInstanceProcAddr)dlsym(libvulkan, "vk_icdGetInstanceProcAddr");
if (icdGetInstanceProcAddr)
{
// load icd driver
typedef VKAPI_ATTR VkResult VKAPI_CALL (*PFN_vk_icdNegotiateLoaderICDInterfaceVersion)(uint32_t* pSupportedVersion);
PFN_vk_icdNegotiateLoaderICDInterfaceVersion icdNegotiateLoaderICDInterfaceVersion = (PFN_vk_icdNegotiateLoaderICDInterfaceVersion)dlsym(libvulkan, "vk_icdNegotiateLoaderICDInterfaceVersion");
if (icdNegotiateLoaderICDInterfaceVersion)
{
uint32_t supported_version = 5;
VkResult ret = icdNegotiateLoaderICDInterfaceVersion(&supported_version);
if (ret != VK_SUCCESS)
{
NCNN_LOGE("icdNegotiateLoaderICDInterfaceVersion failed");
dlclose(libvulkan);
return -1;
}
}

EnumerateInstanceExtensionProperties = (PFN_vkEnumerateInstanceExtensionProperties)icdGetInstanceProcAddr(NULL, "vkEnumerateInstanceExtensionProperties");
if (!EnumerateInstanceExtensionProperties)
{
Expand All @@ -334,7 +349,7 @@ static int load_vulkan_linux(const char* driver_path)
return -1;
}

GetInstanceProcAddr = icdGetInstanceProcAddr;
GetInstanceProcAddr = (PFN_vkGetInstanceProcAddr)icdGetInstanceProcAddr;
}
else
{
Expand Down

0 comments on commit c7b3285

Please sign in to comment.