anv: Return trampoline entrypoints from GetInstanceProcAddr
Technically, the Vulkan spec requires that we return valid entrypoints for all core functionality and any available device extensions. This means that, for gen-specific functions, we need to return a trampoline which looks at the device and calls the right device function. In 99% of cases, the loader will do this for us but, aparently, we're supposed to do it too. It's a tiny increase in binary size for us to carry this around but really not bad. Before: text data bss dec hex filename 3541775 204112 6136 3752023 394057 libvulkan_intel.so After: text data bss dec hex filename 3551463 205632 6136 3763231 396c1f libvulkan_intel.so Reviewed-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com>
This commit is contained in:
@@ -582,8 +582,11 @@ VkResult anv_CreateInstance(
|
||||
if (!anv_entrypoint_is_enabled(i, instance->apiVersion,
|
||||
&instance->enabled_extensions, NULL)) {
|
||||
instance->dispatch.entrypoints[i] = NULL;
|
||||
} else {
|
||||
} else if (anv_dispatch_table.entrypoints[i] != NULL) {
|
||||
instance->dispatch.entrypoints[i] = anv_dispatch_table.entrypoints[i];
|
||||
} else {
|
||||
instance->dispatch.entrypoints[i] =
|
||||
anv_tramp_dispatch_table.entrypoints[i];
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user