vulkan/wsi/wayland: Add support for VK_KHR_get_surface_capabilities2
Reviewed-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com>
This commit is contained in:
parent
56901c9ea4
commit
59f75dc2a4
|
@ -401,6 +401,16 @@ wsi_wl_surface_get_capabilities(VkIcdSurfaceBase *surface,
|
|||
return VK_SUCCESS;
|
||||
}
|
||||
|
||||
static VkResult
|
||||
wsi_wl_surface_get_capabilities2(VkIcdSurfaceBase *surface,
|
||||
const void *info_next,
|
||||
VkSurfaceCapabilities2KHR* caps)
|
||||
{
|
||||
assert(caps->sType == VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR);
|
||||
|
||||
return wsi_wl_surface_get_capabilities(surface, &caps->surfaceCapabilities);
|
||||
}
|
||||
|
||||
static VkResult
|
||||
wsi_wl_surface_get_formats(VkIcdSurfaceBase *icd_surface,
|
||||
struct wsi_device *wsi_device,
|
||||
|
@ -426,6 +436,32 @@ wsi_wl_surface_get_formats(VkIcdSurfaceBase *icd_surface,
|
|||
return vk_outarray_status(&out);
|
||||
}
|
||||
|
||||
static VkResult
|
||||
wsi_wl_surface_get_formats2(VkIcdSurfaceBase *icd_surface,
|
||||
struct wsi_device *wsi_device,
|
||||
const void *info_next,
|
||||
uint32_t* pSurfaceFormatCount,
|
||||
VkSurfaceFormat2KHR* pSurfaceFormats)
|
||||
{
|
||||
VkIcdSurfaceWayland *surface = (VkIcdSurfaceWayland *)icd_surface;
|
||||
struct wsi_wl_display *display =
|
||||
wsi_wl_get_display(wsi_device, surface->display);
|
||||
if (!display)
|
||||
return VK_ERROR_OUT_OF_HOST_MEMORY;
|
||||
|
||||
VK_OUTARRAY_MAKE(out, pSurfaceFormats, pSurfaceFormatCount);
|
||||
|
||||
VkFormat *disp_fmt;
|
||||
u_vector_foreach(disp_fmt, &display->formats) {
|
||||
vk_outarray_append(&out, out_fmt) {
|
||||
out_fmt->surfaceFormat.format = *disp_fmt;
|
||||
out_fmt->surfaceFormat.colorSpace = VK_COLORSPACE_SRGB_NONLINEAR_KHR;
|
||||
}
|
||||
}
|
||||
|
||||
return vk_outarray_status(&out);
|
||||
}
|
||||
|
||||
static VkResult
|
||||
wsi_wl_surface_get_present_modes(VkIcdSurfaceBase *surface,
|
||||
uint32_t* pPresentModeCount,
|
||||
|
@ -819,7 +855,9 @@ wsi_wl_init_wsi(struct wsi_device *wsi_device,
|
|||
|
||||
wsi->base.get_support = wsi_wl_surface_get_support;
|
||||
wsi->base.get_capabilities = wsi_wl_surface_get_capabilities;
|
||||
wsi->base.get_capabilities2 = wsi_wl_surface_get_capabilities2;
|
||||
wsi->base.get_formats = wsi_wl_surface_get_formats;
|
||||
wsi->base.get_formats2 = wsi_wl_surface_get_formats2;
|
||||
wsi->base.get_present_modes = wsi_wl_surface_get_present_modes;
|
||||
wsi->base.create_swapchain = wsi_wl_surface_create_swapchain;
|
||||
|
||||
|
|
Loading…
Reference in New Issue