diff options
Diffstat (limited to 'loader/loader.c')
-rw-r--r-- | loader/loader.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/loader/loader.c b/loader/loader.c index 50e808142..6ff911053 100644 --- a/loader/loader.c +++ b/loader/loader.c @@ -3966,9 +3966,8 @@ static VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL loader_gpdpa_instance_terminator return addr; } - // Get the terminator, but don't perform checking since it should already - // have been setup if we get here. - addr = loader_phys_dev_ext_gpa_term_no_check(loader_get_instance(inst), pName); + // Check if any drivers support the function, and if so, add it to the unknown function list + addr = loader_phys_dev_ext_gpa_term(loader_get_instance(inst), pName); if (NULL != addr) return addr; // Don't call down the chain, this would be an infinite loop @@ -4031,6 +4030,18 @@ static VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL loader_gpa_instance_terminator(V return addr; } + // Check if it is an unknown physical device function, to see if any drivers support it. + addr = loader_phys_dev_ext_gpa_term(loader_get_instance(inst), pName); + if (addr) { + return addr; + } + + // Assume it is an unknown device function, check to see if any drivers support it. + addr = loader_dev_ext_gpa_term(loader_get_instance(inst), pName); + if (addr) { + return addr; + } + // Don't call down the chain, this would be an infinite loop loader_log(NULL, VULKAN_LOADER_DEBUG_BIT, 0, "loader_gpa_instance_terminator() unrecognized name %s", pName); return NULL; |