vulkan/wsi/headless: add sRGB swapchain format support
Some checks are pending
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run

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.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40275>
This commit is contained in:
Francois Coulombe 2026-03-05 17:57:30 -05:00 committed by Marge Bot
parent 9b12664b72
commit 4112eb2b0f

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);