diff --git a/src/vulkan/wsi/wsi_common_x11.c b/src/vulkan/wsi/wsi_common_x11.c index b5832c685e6..548352eec24 100644 --- a/src/vulkan/wsi/wsi_common_x11.c +++ b/src/vulkan/wsi/wsi_common_x11.c @@ -394,11 +394,16 @@ x11_surface_get_formats(VkIcdSurfaceBase *surface, return VK_SUCCESS; } - assert(*pSurfaceFormatCount >= ARRAY_SIZE(formats)); - typed_memcpy(pSurfaceFormats, formats, *pSurfaceFormatCount); - *pSurfaceFormatCount = ARRAY_SIZE(formats); + VkResult result = VK_SUCCESS; - return VK_SUCCESS; + if (*pSurfaceFormatCount > ARRAY_SIZE(formats)) + *pSurfaceFormatCount = ARRAY_SIZE(formats); + else if (*pSurfaceFormatCount < ARRAY_SIZE(formats)) + result = VK_INCOMPLETE; + + typed_memcpy(pSurfaceFormats, formats, *pSurfaceFormatCount); + + return result; } static VkResult