Headless surfaces when queried return that they only support RGBA UNORM and BGRA UNORM.

Adding those lines enables RGBA SRGB and BGRA SRGB support to headless surfaces.
This commit is contained in:
Francois Coulombe 2026-03-05 17:57:30 -05:00
parent 406935c6fe
commit 7d2341c1bf

View file

@ -178,6 +178,14 @@ wsi_headless_surface_get_formats(VkIcdSurfaceBase *icd_surface,
out_fmt->format = VK_FORMAT_R8G8B8A8_UNORM;
out_fmt->colorSpace = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR;
}
vk_outarray_append_typed(VkSurfaceFormatKHR, &out, out_fmt) {
out_fmt->format = VK_FORMAT_B8G8R8A8_SRGB;
out_fmt->colorSpace = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR;
}
vk_outarray_append_typed(VkSurfaceFormatKHR, &out, out_fmt) {
out_fmt->format = VK_FORMAT_R8G8B8A8_SRGB;
out_fmt->colorSpace = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR;
}
} else {
vk_outarray_append_typed(VkSurfaceFormatKHR, &out, out_fmt) {
out_fmt->format = VK_FORMAT_R8G8B8A8_UNORM;
@ -187,6 +195,14 @@ wsi_headless_surface_get_formats(VkIcdSurfaceBase *icd_surface,
out_fmt->format = VK_FORMAT_B8G8R8A8_UNORM;
out_fmt->colorSpace = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR;
}
vk_outarray_append_typed(VkSurfaceFormatKHR, &out, out_fmt) {
out_fmt->format = VK_FORMAT_R8G8B8A8_SRGB;
out_fmt->colorSpace = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR;
}
vk_outarray_append_typed(VkSurfaceFormatKHR, &out, out_fmt) {
out_fmt->format = VK_FORMAT_B8G8R8A8_SRGB;
out_fmt->colorSpace = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR;
}
}
return vk_outarray_status(&out);
@ -210,6 +226,14 @@ wsi_headless_surface_get_formats2(VkIcdSurfaceBase *icd_surface,
out_fmt->surfaceFormat.format = VK_FORMAT_R8G8B8A8_UNORM;
out_fmt->surfaceFormat.colorSpace = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR;
}
vk_outarray_append_typed(VkSurfaceFormat2KHR, &out, out_fmt) {
out_fmt->surfaceFormat.format = VK_FORMAT_B8G8R8A8_SRGB;
out_fmt->surfaceFormat.colorSpace = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR;
}
vk_outarray_append_typed(VkSurfaceFormat2KHR, &out, out_fmt) {
out_fmt->surfaceFormat.format = VK_FORMAT_R8G8B8A8_SRGB;
out_fmt->surfaceFormat.colorSpace = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR;
}
} else {
vk_outarray_append_typed(VkSurfaceFormat2KHR, &out, out_fmt) {
out_fmt->surfaceFormat.format = VK_FORMAT_R8G8B8A8_UNORM;
@ -219,6 +243,14 @@ wsi_headless_surface_get_formats2(VkIcdSurfaceBase *icd_surface,
out_fmt->surfaceFormat.format = VK_FORMAT_B8G8R8A8_UNORM;
out_fmt->surfaceFormat.colorSpace = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR;
}
vk_outarray_append_typed(VkSurfaceFormat2KHR, &out, out_fmt) {
out_fmt->surfaceFormat.format = VK_FORMAT_R8G8B8A8_SRGB;
out_fmt->surfaceFormat.colorSpace = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR;
}
vk_outarray_append_typed(VkSurfaceFormat2KHR, &out, out_fmt) {
out_fmt->surfaceFormat.format = VK_FORMAT_B8G8R8A8_SRGB;
out_fmt->surfaceFormat.colorSpace = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR;
}
}
return vk_outarray_status(&out);