diff options
author | Jason Ekstrand <[email protected]> | 2017-01-24 16:43:01 -0800 |
---|---|---|
committer | Jason Ekstrand <[email protected]> | 2017-01-25 09:04:56 -0800 |
commit | dc578ef060f6b92e6fd2f77bb6454a5fb22a471c (patch) | |
tree | e91ce9aafaa64650ef466568efb3b0a31433c1fa | |
parent | e259efd805b35250e05b56dc727252544d6d4abb (diff) |
vulkan/wsi/wayland: Handle VK_INCOMPLETE for GetFormats
Reviewed-by: Lionel Landwerlin <[email protected]>
Cc: "17.0" <[email protected]>
-rw-r--r-- | src/vulkan/wsi/wsi_common_wayland.c | 16 |
1 files changed, 9 insertions, 7 deletions
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; } |