From b16e5173a411e3a9c164b8a00273da372c9bdf33 Mon Sep 17 00:00:00 2001 From: Jon Ashburn Date: Mon, 28 Mar 2016 13:58:16 -0600 Subject: loader: Remove the instance_info in the layer chain structure Simplifies code, the loader instance structure is already passed down from trampoline code to terminator code via the pInstance parameter. It doesn't need to be added to this pCreatInfo pNext list structure. Layers which modifiy pInstance whould do it on the way up the chain not going down the chain. Change-Id: I59581b94871c094995787808cf5ae2955ad0191a --- include/vulkan/vk_layer.h | 16 +--------------- loader/loader.c | 26 +------------------------- 2 files changed, 2 insertions(+), 40 deletions(-) diff --git a/include/vulkan/vk_layer.h b/include/vulkan/vk_layer.h index 95d88025..2a458001 100644 --- a/include/vulkan/vk_layer.h +++ b/include/vulkan/vk_layer.h @@ -263,22 +263,9 @@ typedef enum VkLayerDbgAction_ { typedef enum VkLayerFunction_ { VK_LAYER_LINK_INFO = 0, - VK_LAYER_DEVICE_INFO = 1, - VK_LAYER_INSTANCE_INFO = 2 + VK_LAYER_DEVICE_INFO = 1 } VkLayerFunction; -/* - * When creating the device chain the loader needs to pass - * down information about it's device structure needed at - * the end of the chain. Passing the data via the - * VkLayerInstanceInfo avoids issues with finding the - * exact instance being used. - */ -typedef struct VkLayerInstanceInfo_ { - void *instance_info; - PFN_vkGetInstanceProcAddr pfnNextGetInstanceProcAddr; -} VkLayerInstanceInfo; - typedef struct VkLayerInstanceLink_ { struct VkLayerInstanceLink_ *pNext; PFN_vkGetInstanceProcAddr pfnNextGetInstanceProcAddr; @@ -302,7 +289,6 @@ typedef struct { VkLayerFunction function; union { VkLayerInstanceLink *pLayerInfo; - VkLayerInstanceInfo instanceInfo; } u; } VkLayerInstanceCreateInfo; diff --git a/loader/loader.c b/loader/loader.c index 7f1002b4..5a00b6f2 100644 --- a/loader/loader.c +++ b/loader/loader.c @@ -3267,19 +3267,6 @@ VkResult loader_create_instance_chain(const VkInstanceCreateInfo *pCreateInfo, PFN_vkCreateInstance fpCreateInstance = (PFN_vkCreateInstance)nextGIPA(*created_instance, "vkCreateInstance"); if (fpCreateInstance) { - VkLayerInstanceCreateInfo instance_create_info; - - instance_create_info.sType = - VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO; - instance_create_info.function = VK_LAYER_INSTANCE_INFO; - - instance_create_info.u.instanceInfo.instance_info = inst; - instance_create_info.u.instanceInfo.pfnNextGetInstanceProcAddr = - nextGIPA; - - instance_create_info.pNext = loader_create_info.pNext; - loader_create_info.pNext = &instance_create_info; - res = fpCreateInstance(&loader_create_info, pAllocator, created_instance); } else { @@ -3622,18 +3609,7 @@ terminator_CreateInstance(const VkInstanceCreateInfo *pCreateInfo, VkResult res = VK_SUCCESS; bool success = false; - VkLayerInstanceCreateInfo *chain_info = - (VkLayerInstanceCreateInfo *)pCreateInfo->pNext; - while ( - chain_info && - !(chain_info->sType == VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO && - chain_info->function == VK_LAYER_INSTANCE_INFO)) { - chain_info = (VkLayerInstanceCreateInfo *)chain_info->pNext; - } - assert(chain_info != NULL); - - struct loader_instance *ptr_instance = - (struct loader_instance *)chain_info->u.instanceInfo.instance_info; + struct loader_instance *ptr_instance = (struct loader_instance *) *pInstance; memcpy(&icd_create_info, pCreateInfo, sizeof(icd_create_info)); icd_create_info.enabledLayerCount = 0; -- cgit v1.2.3