Browse Source

anv: Add a per-instance dispatch table

We also switch GetInstanceProcAddr over to use it.

Reviewed-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com>
tags/18.0-branchpoint
Jason Ekstrand 7 years ago
parent
commit
0c399dca51
2 changed files with 7 additions and 1 deletions
  1. 6
    1
      src/intel/vulkan/anv_device.c
  2. 1
    0
      src/intel/vulkan/anv_private.h

+ 6
- 1
src/intel/vulkan/anv_device.c 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

+ 1
- 0
src/intel/vulkan/anv_private.h 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;

Loading…
Cancel
Save