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

Reply via email to