[Mesa-dev] [PATCH 1/2] vulkan/wsi/wayland: Handle VK_INCOMPLETE for GetFormats

Lionel Landwerlin lionel.g.landwerlin at intel.com
Wed Jan 25 11:36:06 UTC 2017


Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>

On 25/01/17 00:44, Jason Ekstrand wrote:
> ---
>   src/vulkan/wsi/wsi_common_wayland.c | 16 +++++++++-------
>   1 file changed, 9 insertions(+), 7 deletions(-)
>
> diff --git a/src/vulkan/wsi/wsi_common_wayland.c b/src/vulkan/wsi/wsi_common_wayland.c
> index 687ac9c..d745413 100644
> --- a/src/vulkan/wsi/wsi_common_wayland.c
> +++ b/src/vulkan/wsi/wsi_common_wayland.c
> @@ -409,25 +409,27 @@ wsi_wl_surface_get_formats(VkIcdSurfaceBase *icd_surface,
>      if (!display)
>         return VK_ERROR_OUT_OF_HOST_MEMORY;
>   
> -   uint32_t count = u_vector_length(&display->formats);
> -
>      if (pSurfaceFormats == NULL) {
> -      *pSurfaceFormatCount = count;
> +      *pSurfaceFormatCount = u_vector_length(&display->formats);
>         return VK_SUCCESS;
>      }
>   
> -   assert(*pSurfaceFormatCount >= count);
> -   *pSurfaceFormatCount = count;
> -
> +   uint32_t count = 0;
>      VkFormat *f;
>      u_vector_foreach(f, &display->formats) {
> -      *(pSurfaceFormats++) = (VkSurfaceFormatKHR) {
> +      if (count == *pSurfaceFormatCount)
> +         return VK_INCOMPLETE;
> +
> +      pSurfaceFormats[count++] = (VkSurfaceFormatKHR) {
>            .format = *f,
>            /* TODO: We should get this from the compositor somehow */
>            .colorSpace = VK_COLORSPACE_SRGB_NONLINEAR_KHR,
>         };
>      }
>   
> +   assert(*pSurfaceFormatCount <= count);
> +   *pSurfaceFormatCount = count;
> +
>      return VK_SUCCESS;
>   }
>   




More information about the mesa-dev mailing list