aboutsummaryrefslogtreecommitdiff
path: root/loader
diff options
context:
space:
mode:
authorJon Ashburn <jon@lunarg.com>2016-01-20 08:08:25 -0700
committerJon Ashburn <jon@lunarg.com>2016-01-20 18:05:39 -0700
commit2679f18983e093f1852f592c68ecf93283adf366 (patch)
treee26be213a004f10d0d72bb375b479523bef85774 /loader
parent26227f4921fa3bbad08ed65750a40efe1575d5ea (diff)
downloadusermoji-2679f18983e093f1852f592c68ecf93283adf366.tar.xz
vktrace: Get partially working again with the new loader/layer interface
Diffstat (limited to 'loader')
-rw-r--r--loader/loader.c11
-rw-r--r--loader/loader.h8
-rw-r--r--loader/trampoline.c2
3 files changed, 12 insertions, 9 deletions
diff --git a/loader/loader.c b/loader/loader.c
index 2f253f00..0ffc5102 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 55662b73..6dcc5ded 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 35f0853b..f8765afb 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);