diff options
| author | Jon Ashburn <jon@lunarg.com> | 2016-02-11 18:59:43 -0700 |
|---|---|---|
| committer | Jon Ashburn <jon@lunarg.com> | 2016-02-14 09:24:16 -0700 |
| commit | 696fc84da25c5458bf188fc9b30b8a9e42f2b1b2 (patch) | |
| tree | ff15aa06523133c4755e74e13bee19d03ac6a9e8 /loader/trampoline.c | |
| parent | abc45636e7d078ea0825bc5c60f12e7b5aa6454d (diff) | |
| download | usermoji-696fc84da25c5458bf188fc9b30b8a9e42f2b1b2.tar.xz | |
loader: add support for standard_validation layer enabled from env var
Also fix memory corruption issue with the original std_validation patch.
Diffstat (limited to 'loader/trampoline.c')
| -rw-r--r-- | loader/trampoline.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/loader/trampoline.c b/loader/trampoline.c index 473daa62..dfd2c000 100644 --- a/loader/trampoline.c +++ b/loader/trampoline.c @@ -121,11 +121,14 @@ vkCreateInstance(const VkInstanceCreateInfo *pCreateInfo, /* convert any meta layers to the actual layers makes a copy of layer name*/ uint32_t saved_layer_count = pCreateInfo->enabledLayerCount; - char **saved_layer_names; - saved_layer_names = loader_stack_alloc(sizeof(char*) * pCreateInfo->enabledLayerCount); + char **saved_layer_names; + char **saved_layer_ptr; + saved_layer_names = + loader_stack_alloc(sizeof(char *) * pCreateInfo->enabledLayerCount); for (uint32_t i = 0; i < saved_layer_count; i++) { saved_layer_names[i] = (char *)pCreateInfo->ppEnabledLayerNames[i]; } + saved_layer_ptr = (char **)pCreateInfo->ppEnabledLayerNames; loader_expand_layer_names( ptr_instance, std_validation_str, @@ -144,7 +147,8 @@ vkCreateInstance(const VkInstanceCreateInfo *pCreateInfo, ptr_instance, &ptr_instance->ext_list, &ptr_instance->instance_layer_list, pCreateInfo); if (res != VK_SUCCESS) { - loader_unexpand_inst_layer_names(saved_layer_count, saved_layer_names, + loader_unexpand_inst_layer_names(ptr_instance, saved_layer_count, + saved_layer_names, saved_layer_ptr, pCreateInfo); loader_delete_layer_properties(ptr_instance, &ptr_instance->device_layer_list); @@ -164,7 +168,8 @@ vkCreateInstance(const VkInstanceCreateInfo *pCreateInfo, loader_heap_alloc(ptr_instance, sizeof(VkLayerInstanceDispatchTable), VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE); if (ptr_instance->disp == NULL) { - loader_unexpand_inst_layer_names(saved_layer_count, saved_layer_names, + loader_unexpand_inst_layer_names(ptr_instance, saved_layer_count, + saved_layer_names, saved_layer_ptr, pCreateInfo); loader_delete_layer_properties(ptr_instance, &ptr_instance->device_layer_list); @@ -187,7 +192,8 @@ vkCreateInstance(const VkInstanceCreateInfo *pCreateInfo, res = loader_enable_instance_layers(ptr_instance, pCreateInfo, &ptr_instance->instance_layer_list); if (res != VK_SUCCESS) { - loader_unexpand_inst_layer_names(saved_layer_count, saved_layer_names, + loader_unexpand_inst_layer_names(ptr_instance, saved_layer_count, + saved_layer_names, saved_layer_ptr, pCreateInfo); loader_delete_layer_properties(ptr_instance, &ptr_instance->device_layer_list); @@ -228,7 +234,8 @@ vkCreateInstance(const VkInstanceCreateInfo *pCreateInfo, /* Remove temporary debug_report callback */ util_DestroyDebugReportCallback(ptr_instance, instance_callback, NULL); - loader_unexpand_inst_layer_names(saved_layer_count, saved_layer_names, + loader_unexpand_inst_layer_names(ptr_instance, saved_layer_count, + saved_layer_names, saved_layer_ptr, pCreateInfo); loader_platform_thread_unlock_mutex(&loader_lock); return res; |
