*/
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;
}
}
- 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;
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;
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;
}
}
- 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 {
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);
}
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);