From 2679f18983e093f1852f592c68ecf93283adf366 Mon Sep 17 00:00:00 2001 From: Jon Ashburn Date: Wed, 20 Jan 2016 08:08:25 -0700 Subject: [PATCH] vktrace: Get partially working again with the new loader/layer interface --- loader/loader.c | 11 ++++++----- loader/loader.h | 8 +++++--- loader/trampoline.c | 2 +- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/loader/loader.c b/loader/loader.c index 2f253f0..0ffc510 100644 --- a/loader/loader.c +++ b/loader/loader.c @@ -2847,7 +2847,8 @@ VkResult loader_enable_instance_layers( */ VkResult loader_create_instance_chain(const VkInstanceCreateInfo *pCreateInfo, const VkAllocationCallbacks* pAllocator, - struct loader_instance *inst) + struct loader_instance *inst, + VkInstance created_instance) { uint32_t activated_layers = 0; VkLayerInstanceCreateInfo chain_info; @@ -2909,7 +2910,7 @@ VkResult loader_create_instance_chain(const VkInstanceCreateInfo *pCreateInfo, } } - PFN_vkCreateInstance fpCreateInstance = (PFN_vkCreateInstance) nextGIPA(VK_NULL_HANDLE, "vkCreateInstance"); + PFN_vkCreateInstance fpCreateInstance = (PFN_vkCreateInstance) nextGIPA(created_instance, "vkCreateInstance"); if (fpCreateInstance) { VkLayerInstanceCreateInfo instance_create_info; @@ -2922,7 +2923,7 @@ VkResult loader_create_instance_chain(const VkInstanceCreateInfo *pCreateInfo, instance_create_info.pNext = loader_create_info.pNext; loader_create_info.pNext = &instance_create_info; - res = fpCreateInstance(&loader_create_info, pAllocator, &inst->instance); + res = fpCreateInstance(&loader_create_info, pAllocator, &created_instance); } else { // Couldn't find CreateInstance function! res = VK_ERROR_INITIALIZATION_FAILED; @@ -2931,7 +2932,7 @@ VkResult loader_create_instance_chain(const VkInstanceCreateInfo *pCreateInfo, if (res != VK_SUCCESS) { // TODO: Need to clean up here } else { - loader_init_instance_core_dispatch_table(inst->disp, nextGIPA, inst->instance); + loader_init_instance_core_dispatch_table(inst->disp, nextGIPA, created_instance); } return res; @@ -3134,7 +3135,7 @@ VkResult loader_create_device_chain( } } - PFN_vkCreateDevice fpCreateDevice = (PFN_vkCreateDevice) nextGIPA(VK_NULL_HANDLE, "vkCreateDevice"); + PFN_vkCreateDevice fpCreateDevice = (PFN_vkCreateDevice) nextGIPA((VkInstance) inst, "vkCreateDevice"); if (fpCreateDevice) { res = fpCreateDevice(physicalDevice, &loader_create_info, pAllocator, &dev->device); } else { diff --git a/loader/loader.h b/loader/loader.h index 55662b7..6dcc5de 100644 --- a/loader/loader.h +++ b/loader/loader.h @@ -499,9 +499,11 @@ VkResult loader_enable_instance_layers( const struct loader_layer_list *instance_layers); void loader_deactivate_instance_layers(struct loader_instance *instance); -VkResult loader_create_instance_chain(const VkInstanceCreateInfo *pCreateInfo, - const VkAllocationCallbacks* pAllocator, - struct loader_instance *inst); +VkResult loader_create_instance_chain( + const VkInstanceCreateInfo *pCreateInfo, + const VkAllocationCallbacks* pAllocator, + struct loader_instance *inst, + VkInstance created_instance); void loader_activate_instance_layer_extensions(struct loader_instance *inst, VkInstance created_inst); diff --git a/loader/trampoline.c b/loader/trampoline.c index 35f0853..f8765af 100644 --- a/loader/trampoline.c +++ b/loader/trampoline.c @@ -178,7 +178,7 @@ LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateInstance( } created_instance = (VkInstance) ptr_instance; - res = loader_create_instance_chain(pCreateInfo, pAllocator, ptr_instance); + res = loader_create_instance_chain(pCreateInfo, pAllocator, ptr_instance, created_instance); if (res == VK_SUCCESS) { wsi_create_instance(ptr_instance, pCreateInfo); -- 2.7.4