diff options
Diffstat (limited to 'loader')
| -rw-r--r-- | loader/loader.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/loader/loader.c b/loader/loader.c index de296fa9..3325a109 100644 --- a/loader/loader.c +++ b/loader/loader.c @@ -1368,8 +1368,9 @@ LOADER_EXPORT VkResult VKAPI vkGetGlobalExtensionInfo( return VK_SUCCESS; } -LOADER_EXPORT VkResult VKAPI vkEnumerateLayers(VkPhysicalDevice gpu, size_t maxLayerCount, size_t maxStringSize, size_t* pOutLayerCount, char* const* pOutLayers, void* pReserved) +LOADER_EXPORT VkResult VKAPI vkEnumerateLayers(VkPhysicalDevice gpu, size_t maxStringSize, size_t* pLayerCount, char* const* pOutLayers, void* pReserved) { + size_t maxLayerCount; uint32_t gpu_index; size_t count = 0; char *lib_name; @@ -1379,9 +1380,11 @@ LOADER_EXPORT VkResult VKAPI vkEnumerateLayers(VkPhysicalDevice gpu, size_t maxL char layer_buf[16][256]; char * layers[16]; - if (pOutLayerCount == NULL || pOutLayers == NULL) + if (pLayerCount == NULL || pOutLayers == NULL) return VK_ERROR_INVALID_POINTER; + maxLayerCount = *pLayerCount; + if (!icd) return VK_ERROR_UNAVAILABLE; @@ -1417,11 +1420,11 @@ LOADER_EXPORT VkResult VKAPI vkEnumerateLayers(VkPhysicalDevice gpu, size_t maxL count++; free(cpyStr); } else { - size_t cnt; + size_t cnt = 16; /* only allow 16 layers, for now */ uint32_t n; VkResult res; n = (uint32_t) ((maxStringSize < 256) ? maxStringSize : 256); - res = fpEnumerateLayers((VkPhysicalDevice) NULL, 16, n, &cnt, layers, (char *) icd->gpus + gpu_index); + res = fpEnumerateLayers((VkPhysicalDevice) NULL, n, &cnt, layers, (char *) icd->gpus + gpu_index); loader_platform_close_library(handle); if (res != VK_SUCCESS) continue; @@ -1436,7 +1439,7 @@ LOADER_EXPORT VkResult VKAPI vkEnumerateLayers(VkPhysicalDevice gpu, size_t maxL } } - *pOutLayerCount = count; + *pLayerCount = count; return VK_SUCCESS; } |
