vulkan/wsi/wayland: Handle VK_INCOMPLETE for GetFormats

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Cc: "17.0" <mesa-dev@lists.freedesktop.org>
This commit is contained in:
Jason Ekstrand 2017-01-24 16:43:01 -08:00
parent e259efd805
commit dc578ef060
1 changed files with 9 additions and 7 deletions

View File

@ -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;
}