aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJon Ashburn <jon@lunarg.com>2015-05-19 14:33:18 -0600
committerCourtney Goeltzenleuchter <courtney@LunarG.com>2015-06-17 19:47:02 -0600
commita8424a2f91bec8712bbfb0d102b5fa40a8f58fb1 (patch)
tree7d693e279bef42d8fc5b79868b7ca59cf33c73e3
parent12b3a9babed46b4d1e7a8f07456141da94066c5b (diff)
downloadusermoji-a8424a2f91bec8712bbfb0d102b5fa40a8f58fb1.tar.xz
loader: make the instance dispatch table per instance
-rw-r--r--loader/loader.c1
-rw-r--r--loader/trampoline.c5
2 files changed, 5 insertions, 1 deletions
diff --git a/loader/loader.c b/loader/loader.c
index 737bf66a..60641004 100644
--- a/loader/loader.c
+++ b/loader/loader.c
@@ -1242,6 +1242,7 @@ VkResult loader_DestroyInstance(
for (i = 0; i < ptr_instance->extension_count; i++) {
free(ptr_instance->extension_names[i]);
}
+ free(ptr_instance->disp);
if (prev)
prev->next = next->next;
else
diff --git a/loader/trampoline.c b/loader/trampoline.c
index 908b47d7..7453f1ba 100644
--- a/loader/trampoline.c
+++ b/loader/trampoline.c
@@ -70,9 +70,12 @@ LOADER_EXPORT VkResult VKAPI vkCreateInstance(
return VK_ERROR_OUT_OF_HOST_MEMORY;
strcpy(ptr_instance->extension_names[i], pCreateInfo->ppEnabledExtensionNames[i]);
}
+ ptr_instance->disp = malloc(sizeof(VkLayerInstanceDispatchTable));
+ if (ptr_instance->disp == NULL)
+ return VK_ERROR_OUT_OF_HOST_MEMORY;
+ memcpy(ptr_instance->disp, &instance_disp, sizeof(instance_disp));
ptr_instance->next = loader.instances;
loader.instances = ptr_instance;
- ptr_instance->disp = &instance_disp;
loader_activate_instance_layers(ptr_instance);
res = instance_disp.CreateInstance(pCreateInfo, (VkInstance *) ptr_instance);