anv: Add a per-instance dispatch table

We also switch GetInstanceProcAddr over to use it.

Reviewed-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com>
This commit is contained in:
Jason Ekstrand 2018-01-16 18:11:03 -08:00
parent a372b9247d
commit 0c399dca51
2 changed files with 7 additions and 1 deletions

View File

@ -574,6 +574,7 @@ VkResult anv_CreateInstance(
instance->apiVersion = client_version;
instance->enabled_extensions = enabled_extensions;
instance->dispatch = anv_dispatch_table;
instance->physicalDeviceCount = -1;
result = vk_debug_report_instance_init(&instance->debug_report_callbacks);
@ -1088,7 +1089,11 @@ PFN_vkVoidFunction anv_GetInstanceProcAddr(
if (instance == NULL)
return NULL;
return anv_lookup_entrypoint(NULL, pName);
int idx = anv_get_entrypoint_index(pName);
if (idx < 0)
return NULL;
return instance->dispatch.entrypoints[idx];
}
/* With version 1+ of the loader interface the ICD should expose

View File

@ -797,6 +797,7 @@ struct anv_instance {
uint32_t apiVersion;
struct anv_instance_extension_table enabled_extensions;
struct anv_dispatch_table dispatch;
int physicalDeviceCount;
struct anv_physical_device physicalDevice;