Hey Emil, On Thu, 2016-10-06 at 14:12 +0100, Emil Velikov wrote: > 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> >
this obtained the Rb but I think you never landed it in master. Is there any problem with it or you simply forgot? If there is no impediment for this to land I'd like to push it, since it fixes some CTS tests. Iago > --- > 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; > } _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev