aboutsummaryrefslogtreecommitdiff
path: root/loader/trampoline.c
diff options
context:
space:
mode:
authorJon Ashburn <jon@lunarg.com>2016-02-11 18:59:43 -0700
committerJon Ashburn <jon@lunarg.com>2016-02-14 09:24:16 -0700
commit696fc84da25c5458bf188fc9b30b8a9e42f2b1b2 (patch)
treeff15aa06523133c4755e74e13bee19d03ac6a9e8 /loader/trampoline.c
parentabc45636e7d078ea0825bc5c60f12e7b5aa6454d (diff)
downloadusermoji-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.c19
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;