loader: bug 12992: extension and layer support
Much of layers and loader updated to work with
final extension and layer mechanism.
Not everything is working here.
diff --git a/icd/nulldrv/nulldrv.c b/icd/nulldrv/nulldrv.c
index fb04339..4806521 100644
--- a/icd/nulldrv/nulldrv.c
+++ b/icd/nulldrv/nulldrv.c
@@ -44,10 +44,9 @@
};
static const VkExtensionProperties intel_gpu_exts[NULLDRV_EXT_COUNT] = {
{
- .sType = VK_STRUCTURE_TYPE_EXTENSION_PROPERTIES,
- .name = VK_WSI_LUNARG_EXTENSION_NAME,
+ .extName = VK_WSI_LUNARG_EXTENSION_NAME,
.version = VK_WSI_LUNARG_REVISION,
- .description = "Null driver",
+ .specVersion = VK_API_VERSION,
}
};
@@ -158,12 +157,12 @@
static enum nulldrv_ext_type nulldrv_gpu_lookup_extension(
const struct nulldrv_gpu *gpu,
- const VkExtensionProperties *ext)
+ const char* extName)
{
enum nulldrv_ext_type type;
for (type = 0; type < ARRAY_SIZE(nulldrv_gpu_exts); type++) {
- if (memcmp(&nulldrv_gpu_exts[type], ext, sizeof(VkExtensionProperties)) == 0)
+ if (strcmp(nulldrv_gpu_exts[type], extName) == 0)
break;
}
@@ -207,7 +206,7 @@
for (i = 0; i < info->extensionCount; i++) {
const enum nulldrv_ext_type ext = nulldrv_gpu_lookup_extension(
gpu,
- &info->pEnabledExtensions[i]);
+ info->ppEnabledExtensionNames[i]);
if (ext == NULLDRV_EXT_INVALID)
return VK_ERROR_INVALID_EXTENSION;
@@ -1410,36 +1409,43 @@
}
ICD_EXPORT VkResult VKAPI vkGetGlobalExtensionProperties(
- uint32_t extensionIndex,
- VkExtensionProperties* pProperties)
+ const char* pLayerName,
+ uint32_t* pCount,
+ VkExtensionProperties* pProperties)
{
- if (extensionIndex >= NULLDRV_EXT_COUNT)
- return VK_ERROR_INVALID_VALUE;
+ uint32_t copy_size;
- memcpy(pProperties, &intel_gpu_exts[extensionIndex], sizeof(VkExtensionProperties));
- return VK_SUCCESS;
-}
+ if (pCount == NULL) {
+ return VK_ERROR_INVALID_POINTER;
+ }
-ICD_EXPORT VkResult VKAPI vkGetGlobalExtensionCount(uint32_t *pCount)
-{
- *pCount = NULLDRV_EXT_COUNT;
+ if (pProperties == NULL) {
+ *pCount = NULLDRV_EXT_COUNT;
+ return VK_SUCCESS;
+ }
+ copy_size = *pCount < NULLDRV_EXT_COUNT ? *pCount : NULLDRV_EXT_COUNT;
+ memcpy(pProperties, intel_gpu_exts, copy_size * sizeof(VkExtensionProperties));
+ *pCount = copy_size;
+ if (copy_size < NULLDRV_EXT_COUNT) {
+ return VK_INCOMPLETE;
+ }
return VK_SUCCESS;
}
VkResult VKAPI vkGetPhysicalDeviceExtensionProperties(
- VkPhysicalDevice gpu,
- uint32_t extesnionIndex,
- VkExtensionProperties* pProperties)
+ VkPhysicalDevice physicalDevice,
+ const char* pLayerName,
+ uint32_t* pCount,
+ VkExtensionProperties* pProperties)
{
- return VK_ERROR_INVALID_EXTENSION;
-}
-VkResult VKAPI vkGetPhysicalDeviceExtensionCount(
- VkPhysicalDevice gpu,
- uint32_t* pCount)
-{
+ if (pCount == NULL) {
+ return VK_ERROR_INVALID_POINTER;
+ }
+
*pCount = 0;
+
return VK_SUCCESS;
}