From: Jason Ekstrand Date: Wed, 25 Jan 2017 00:43:01 +0000 (-0800) Subject: vulkan/wsi/wayland: Handle VK_INCOMPLETE for GetFormats X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=dc578ef060f6b92e6fd2f77bb6454a5fb22a471c;p=mesa.git vulkan/wsi/wayland: Handle VK_INCOMPLETE for GetFormats Reviewed-by: Lionel Landwerlin Cc: "17.0" --- diff --git a/src/vulkan/wsi/wsi_common_wayland.c b/src/vulkan/wsi/wsi_common_wayland.c index 687ac9c731b..d745413c403 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; }