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:
parent
e259efd805
commit
dc578ef060
|
@ -409,25 +409,27 @@ wsi_wl_surface_get_formats(VkIcdSurfaceBase *icd_surface,
|
||||||
if (!display)
|
if (!display)
|
||||||
return VK_ERROR_OUT_OF_HOST_MEMORY;
|
return VK_ERROR_OUT_OF_HOST_MEMORY;
|
||||||
|
|
||||||
uint32_t count = u_vector_length(&display->formats);
|
|
||||||
|
|
||||||
if (pSurfaceFormats == NULL) {
|
if (pSurfaceFormats == NULL) {
|
||||||
*pSurfaceFormatCount = count;
|
*pSurfaceFormatCount = u_vector_length(&display->formats);
|
||||||
return VK_SUCCESS;
|
return VK_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
assert(*pSurfaceFormatCount >= count);
|
uint32_t count = 0;
|
||||||
*pSurfaceFormatCount = count;
|
|
||||||
|
|
||||||
VkFormat *f;
|
VkFormat *f;
|
||||||
u_vector_foreach(f, &display->formats) {
|
u_vector_foreach(f, &display->formats) {
|
||||||
*(pSurfaceFormats++) = (VkSurfaceFormatKHR) {
|
if (count == *pSurfaceFormatCount)
|
||||||
|
return VK_INCOMPLETE;
|
||||||
|
|
||||||
|
pSurfaceFormats[count++] = (VkSurfaceFormatKHR) {
|
||||||
.format = *f,
|
.format = *f,
|
||||||
/* TODO: We should get this from the compositor somehow */
|
/* TODO: We should get this from the compositor somehow */
|
||||||
.colorSpace = VK_COLORSPACE_SRGB_NONLINEAR_KHR,
|
.colorSpace = VK_COLORSPACE_SRGB_NONLINEAR_KHR,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
assert(*pSurfaceFormatCount <= count);
|
||||||
|
*pSurfaceFormatCount = count;
|
||||||
|
|
||||||
return VK_SUCCESS;
|
return VK_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue