nulldriver: Update to new VkExtensionProperties
diff --git a/icd/nulldrv/nulldrv.c b/icd/nulldrv/nulldrv.c
index 1797eb8..05c9acb 100644
--- a/icd/nulldrv/nulldrv.c
+++ b/icd/nulldrv/nulldrv.c
@@ -42,6 +42,14 @@
static const char * const nulldrv_gpu_exts[NULLDRV_EXT_COUNT] = {
[NULLDRV_EXT_WSI_LUNARG] = VK_WSI_LUNARG_EXTENSION_NAME,
};
+static const VkExtensionProperties intel_gpu_exts[NULLDRV_EXT_COUNT] = {
+ {
+ .sType = VK_STRUCTURE_TYPE_EXTENSION_PROPERTIES,
+ .name = VK_WSI_LUNARG_EXTENSION_NAME,
+ .version = VK_WSI_LUNARG_REVISION,
+ .description = "Null driver",
+ }
+};
static struct nulldrv_base *nulldrv_base(VkObject base)
{
@@ -172,13 +180,14 @@
return VK_SUCCESS;
}
-static enum nulldrv_ext_type nulldrv_gpu_lookup_extension(const struct nulldrv_gpu *gpu,
- const char *ext)
+static enum nulldrv_ext_type nulldrv_gpu_lookup_extension(
+ const struct nulldrv_gpu *gpu,
+ const VkExtensionProperties *ext)
{
enum nulldrv_ext_type type;
for (type = 0; type < ARRAY_SIZE(nulldrv_gpu_exts); type++) {
- if (nulldrv_gpu_exts[type] && strcmp(nulldrv_gpu_exts[type], ext) == 0)
+ if (memcmp(&nulldrv_gpu_exts[type], ext, sizeof(VkExtensionProperties)) == 0)
break;
}
@@ -219,15 +228,16 @@
if (!dev)
return VK_ERROR_OUT_OF_HOST_MEMORY;
-// for (i = 0; i < info->extensionCount; i++) {
-// const enum nulldrv_ext_type ext = nulldrv_gpu_lookup_extension(gpu,
-// info->ppEnabledExtensionNames[i]);
+ for (i = 0; i < info->extensionCount; i++) {
+ const enum nulldrv_ext_type ext = nulldrv_gpu_lookup_extension(
+ gpu,
+ &info->pEnabledExtensions[i]);
-// if (ext == NULLDRV_EXT_INVALID)
-// return VK_ERROR_INVALID_EXTENSION;
+ if (ext == NULLDRV_EXT_INVALID)
+ return VK_ERROR_INVALID_EXTENSION;
-// dev->exts[ext] = true;
-// }
+ dev->exts[ext] = true;
+ }
ret = nulldrv_desc_ooxx_create(dev, &dev->desc_ooxx);
if (ret != VK_SUCCESS) {
@@ -1510,7 +1520,6 @@
size_t* pDataSize,
void* pData)
{
- VkExtensionProperties *ext_props;
uint32_t *count;
if (pDataSize == NULL)
@@ -1522,17 +1531,17 @@
if (pData == NULL)
return VK_SUCCESS;
count = (uint32_t *) pData;
- *count = 1;
+ *count = NULLDRV_EXT_COUNT;
break;
case VK_EXTENSION_INFO_TYPE_PROPERTIES:
*pDataSize = sizeof(VkExtensionProperties);
if (pData == NULL)
return VK_SUCCESS;
else {
- ext_props = (VkExtensionProperties *) pData;
- ext_props->version = VK_WSI_LUNARG_REVISION;
- strncpy(ext_props->name, VK_WSI_LUNARG_EXTENSION_NAME,
- strlen(VK_WSI_LUNARG_EXTENSION_NAME)+1);
+ if (extensionIndex >= NULLDRV_EXT_COUNT)
+ return VK_ERROR_INVALID_VALUE;
+
+ memcpy((VkExtensionProperties *) pData, &intel_gpu_exts[extensionIndex], sizeof(VkExtensionProperties));
return VK_SUCCESS;
}
break;