diff options
| author | Jeremy Hayes <jeremy@lunarg.com> | 2016-04-01 11:40:26 -0600 |
|---|---|---|
| committer | Jeremy Hayes <jeremy@lunarg.com> | 2016-04-01 14:45:32 -0600 |
| commit | e26f199d098d1ee2ab2418d4ba259d564fbde4d8 (patch) | |
| tree | d11e17c37bc75f9d43ab30c70edf921ab087f7c0 /loader/trampoline.c | |
| parent | 3a0eb0b42748d56a4f8598cd6949e50881abc73c (diff) | |
| download | usermoji-e26f199d098d1ee2ab2418d4ba259d564fbde4d8.tar.xz | |
loader: report implicit instance extensions
GL74: vkEnumerateInstanceExtensionProperties should report implicit
instance extensions when pLayerName is NULL or an implicit layer name.
Change-Id: Iba7664a168e146c4b862468b6255cdc752cc8c77
Diffstat (limited to 'loader/trampoline.c')
| -rw-r--r-- | loader/trampoline.c | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/loader/trampoline.c b/loader/trampoline.c index 260fd340..d1c02f0e 100644 --- a/loader/trampoline.c +++ b/loader/trampoline.c @@ -137,21 +137,22 @@ vkEnumerateInstanceExtensionProperties(const char *pLayerName, /* get layer libraries if needed */ if (pLayerName && strlen(pLayerName) != 0) { - if (vk_string_validate(MaxLoaderStringLength, pLayerName) == + if (vk_string_validate(MaxLoaderStringLength, pLayerName) != VK_STRING_ERROR_NONE) { - loader_layer_scan(NULL, &instance_layers, NULL); - for (uint32_t i = 0; i < instance_layers.count; i++) { - struct loader_layer_properties *props = - &instance_layers.list[i]; - if (strcmp(props->info.layerName, pLayerName) == 0) { - global_ext_list = &props->instance_extension_list; - } - } - } else { assert(VK_FALSE && "vkEnumerateInstanceExtensionProperties: " "pLayerName is too long or is badly formed"); return VK_ERROR_EXTENSION_NOT_PRESENT; } + + loader_layer_scan(NULL, &instance_layers, NULL); + for (uint32_t i = 0; i < instance_layers.count; i++) { + struct loader_layer_properties *props = + &instance_layers.list[i]; + if (strcmp(props->info.layerName, pLayerName) == 0) { + global_ext_list = &props->instance_extension_list; + break; + } + } } else { /* Scan/discover all ICD libraries */ memset(&icd_libs, 0, sizeof(struct loader_icd_libs)); @@ -160,6 +161,14 @@ vkEnumerateInstanceExtensionProperties(const char *pLayerName, loader_get_icd_loader_instance_extensions(NULL, &icd_libs, &icd_extensions); loader_scanned_icd_clear(NULL, &icd_libs); + + // Append implicit layers. + loader_implicit_layer_scan(NULL, &instance_layers, NULL); + for (uint32_t i = 0; i < instance_layers.count; i++) { + struct loader_extension_list *ext_list = &instance_layers.list[i].instance_extension_list; + loader_add_to_ext_list(NULL, &icd_extensions, ext_list->count, ext_list->list); + } + global_ext_list = &icd_extensions; } |
