From: Emil Velikov <emil.veli...@collabora.com> Driver should enumerate only up-to min2(num_available, num_requested) properties and return VK_INCOMPLETE if the # of requested props is smaller than the ones available.
Presently we assert out in such cases. Inspired by a similar fix for RADV. Should fix: dEQP-VK.api.info.device.extensions Signed-off-by: Emil Velikov <emil.veli...@collabora.com> --- src/intel/vulkan/anv_device.c | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/intel/vulkan/anv_device.c b/src/intel/vulkan/anv_device.c index c7b9979..497bf9f 100644 --- a/src/intel/vulkan/anv_device.c +++ b/src/intel/vulkan/anv_device.c @@ -1003,15 +1003,19 @@ VkResult anv_EnumerateInstanceExtensionProperties( uint32_t* pPropertyCount, VkExtensionProperties* pProperties) { + unsigned i; + if (pProperties == NULL) { *pPropertyCount = ARRAY_SIZE(global_extensions); return VK_SUCCESS; } - assert(*pPropertyCount >= ARRAY_SIZE(global_extensions)); + for (i = 0; i < MIN2(*pPropertyCount, ARRAY_SIZE(global_extensions)); i++) + memcpy(&pProperties[i], &global_extensions[i], sizeof(VkExtensionProperties)); - *pPropertyCount = ARRAY_SIZE(global_extensions); - memcpy(pProperties, global_extensions, sizeof(global_extensions)); + *pPropertyCount = i; + if (i < ARRAY_SIZE(global_extensions)) + return VK_INCOMPLETE; return VK_SUCCESS; } @@ -1022,15 +1026,19 @@ VkResult anv_EnumerateDeviceExtensionProperties( uint32_t* pPropertyCount, VkExtensionProperties* pProperties) { + unsigned i; + if (pProperties == NULL) { *pPropertyCount = ARRAY_SIZE(device_extensions); return VK_SUCCESS; } - assert(*pPropertyCount >= ARRAY_SIZE(device_extensions)); + for (i = 0; i < MIN2(*pPropertyCount, ARRAY_SIZE(device_extensions)); i++) + memcpy(&pProperties[i], &device_extensions[i], sizeof(VkExtensionProperties)); - *pPropertyCount = ARRAY_SIZE(device_extensions); - memcpy(pProperties, device_extensions, sizeof(device_extensions)); + *pPropertyCount = i; + if (i < ARRAY_SIZE(device_extensions)) + return VK_INCOMPLETE; return VK_SUCCESS; } -- 2.9.3 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev