summaryrefslogtreecommitdiffstats
path: root/src/vulkan/wsi/wsi_common_wayland.c
diff options
context:
space:
mode:
authorJason Ekstrand <[email protected]>2017-01-24 16:43:01 -0800
committerJason Ekstrand <[email protected]>2017-01-25 09:04:56 -0800
commitdc578ef060f6b92e6fd2f77bb6454a5fb22a471c (patch)
treee91ce9aafaa64650ef466568efb3b0a31433c1fa /src/vulkan/wsi/wsi_common_wayland.c
parente259efd805b35250e05b56dc727252544d6d4abb (diff)
vulkan/wsi/wayland: Handle VK_INCOMPLETE for GetFormats
Reviewed-by: Lionel Landwerlin <[email protected]> Cc: "17.0" <[email protected]>
Diffstat (limited to 'src/vulkan/wsi/wsi_common_wayland.c')
-rw-r--r--src/vulkan/wsi/wsi_common_wayland.c16
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;
}