From a8424a2f91bec8712bbfb0d102b5fa40a8f58fb1 Mon Sep 17 00:00:00 2001 From: Jon Ashburn Date: Tue, 19 May 2015 14:33:18 -0600 Subject: loader: make the instance dispatch table per instance --- loader/loader.c | 1 + loader/trampoline.c | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) 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); -- cgit v1.2.3