aboutsummaryrefslogtreecommitdiff
path: root/loader
diff options
context:
space:
mode:
authorJon Ashburn <jon@lunarg.com>2015-08-14 14:49:22 -0600
committerJon Ashburn <jon@lunarg.com>2015-08-24 09:17:44 -0600
commit52d43f9d92c6ea1ca601fa923d20d777b56cd9f3 (patch)
tree761cec880574dea996d9b9fdf04f5c3ce97537f1 /loader
parentfa6801657f1f2c9e01699d16b3a6e6e64fb42a42 (diff)
downloadusermoji-52d43f9d92c6ea1ca601fa923d20d777b56cd9f3.tar.xz
loader: Remove the global extension list from scanned_icds struct
This list is regenerated as needed and stored in the instance object.
Diffstat (limited to 'loader')
-rw-r--r--loader/loader.c18
-rw-r--r--loader/loader.h6
2 files changed, 10 insertions, 14 deletions
diff --git a/loader/loader.c b/loader/loader.c
index c70d3775..e5d6f2e8 100644
--- a/loader/loader.c
+++ b/loader/loader.c
@@ -797,13 +797,18 @@ static VkExtensionProperties *get_extension_property(
void loader_get_icd_loader_instance_extensions(struct loader_extension_list *inst_exts)
{
struct loader_scanned_icds *icd_list = loader.scanned_icd_list;
-
+ struct loader_extension_list icd_exts;
loader_log(VK_DBG_REPORT_DEBUG_BIT, 0, "Build ICD instance extension list");
// traverse scanned icd list adding non-duplicate extensions to the list
while (icd_list != NULL) {
+ loader_init_ext_list(&icd_exts);
+ loader_add_global_extensions(icd_list->GetGlobalExtensionProperties,
+ icd_list->lib_name,
+ &icd_exts);
loader_add_to_ext_list(inst_exts,
- icd_list->global_extension_list.count,
- icd_list->global_extension_list.list);
+ icd_exts.count,
+ icd_exts.list);
+ loader_destroy_ext_list(&icd_exts);
icd_list = icd_list->next;
};
@@ -966,7 +971,6 @@ static void loader_scanned_icd_add(const char *filename)
new_node->GetInstanceProcAddr = fp_get_proc_addr;
new_node->CreateInstance = fp_create_inst;
new_node->GetGlobalExtensionProperties = fp_get_global_ext_props;
- loader_init_ext_list(&new_node->global_extension_list);
loader_init_ext_list(&new_node->device_extension_list);
new_node->next = loader.scanned_icd_list;
@@ -979,10 +983,6 @@ static void loader_scanned_icd_add(const char *filename)
loader.scanned_icd_list = new_node;
- loader_add_global_extensions(
- (PFN_vkGetGlobalExtensionProperties) fp_get_global_ext_props,
- new_node->lib_name,
- &new_node->global_extension_list);
}
static bool loader_icd_init_entrys(struct loader_icd *icd,
@@ -2365,7 +2365,7 @@ VkResult VKAPI loader_CreateInstance(
icd_create_info.extensionCount = 0;
for (uint32_t i = 0; i < pCreateInfo->extensionCount; i++) {
prop = get_extension_property(pCreateInfo->ppEnabledExtensionNames[i],
- &scanned_icds->global_extension_list);
+ &ptr_instance->ext_list);
if (prop) {
filtered_extension_names[icd_create_info.extensionCount] = (char *) pCreateInfo->ppEnabledExtensionNames[i];
icd_create_info.extensionCount++;
diff --git a/loader/loader.h b/loader/loader.h
index 5b662666..6b3503c9 100644
--- a/loader/loader.h
+++ b/loader/loader.h
@@ -161,7 +161,7 @@ struct loader_instance {
uint32_t total_icd_count;
struct loader_icd *icds;
struct loader_instance *next;
- struct loader_extension_list ext_list;
+ struct loader_extension_list ext_list; // icds and loaders extensions
/* TODO: Should keep track of application provided allocation functions */
struct loader_msg_callback_map_entry *icd_msg_callback_map;
@@ -195,12 +195,8 @@ struct loader_scanned_icds {
PFN_vkGetInstanceProcAddr GetInstanceProcAddr;
PFN_vkCreateInstance CreateInstance;
PFN_vkGetGlobalExtensionProperties GetGlobalExtensionProperties;
- VkInstance instance;
struct loader_scanned_icds *next;
- /* cache of global extensions for specific ICD */
- struct loader_extension_list global_extension_list;
-
/*
* cache of device extensions for specific ICD,
* filled in at CreateInstance time