vkEnumerateLayers: Update to match upstream
The upstream vulkan.h header removed maxLayerCount parameter
from vkEnumerateLayers. This patch implements that change
for the sample driver and layers.
diff --git a/loader/loader.c b/loader/loader.c
index de296fa..3325a10 100644
--- a/loader/loader.c
+++ b/loader/loader.c
@@ -1368,8 +1368,9 @@
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 @@
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 @@
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 @@
}
}
- *pOutLayerCount = count;
+ *pLayerCount = count;
return VK_SUCCESS;
}