From 53762e75e833d51c87d50af723a965f5ddf02b70 Mon Sep 17 00:00:00 2001 From: Lionel Landwerlin Date: Thu, 10 Dec 2020 22:41:40 +0200 Subject: [PATCH] vulkan: allow support for protected surfaces MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Lionel Landwerlin Reviewed-by: José Roberto de Souza Reviewed-by: José Roberto de Souza Part-of: --- src/vulkan/wsi/wsi_common.h | 3 +++ src/vulkan/wsi/wsi_common_display.c | 6 +++++- src/vulkan/wsi/wsi_common_wayland.c | 3 ++- src/vulkan/wsi/wsi_common_x11.c | 3 ++- 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/vulkan/wsi/wsi_common.h b/src/vulkan/wsi/wsi_common.h index fee70909b70..08c1438cb1f 100644 --- a/src/vulkan/wsi/wsi_common.h +++ b/src/vulkan/wsi/wsi_common.h @@ -122,6 +122,9 @@ struct wsi_device { * If false, WSI will always use either modifiers or the prime blit path. */ bool supports_scanout; + + bool supports_protected[VK_ICD_WSI_PLATFORM_MAX]; + bool supports_modifiers; uint32_t maxImageDimension2D; uint32_t optimalBufferCopyRowPitchAlignment; diff --git a/src/vulkan/wsi/wsi_common_display.c b/src/vulkan/wsi/wsi_common_display.c index 625a88df13d..27f2e589ce6 100644 --- a/src/vulkan/wsi/wsi_common_display.c +++ b/src/vulkan/wsi/wsi_common_display.c @@ -812,6 +812,9 @@ wsi_GetDisplayPlaneCapabilities2KHR(VkPhysicalDevice physicalDevice, const VkDisplayPlaneInfo2KHR *pDisplayPlaneInfo, VkDisplayPlaneCapabilities2KHR *pCapabilities) { + VK_FROM_HANDLE(vk_physical_device, pdevice, physicalDevice); + struct wsi_device *wsi_device = pdevice->wsi_device; + assert(pCapabilities->sType == VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR); @@ -825,7 +828,8 @@ wsi_GetDisplayPlaneCapabilities2KHR(VkPhysicalDevice physicalDevice, switch (ext->sType) { case VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR: { VkSurfaceProtectedCapabilitiesKHR *protected = (void *)ext; - protected->supportsProtected = VK_FALSE; + protected->supportsProtected = + wsi_device->supports_protected[VK_ICD_WSI_PLATFORM_DISPLAY]; break; } diff --git a/src/vulkan/wsi/wsi_common_wayland.c b/src/vulkan/wsi/wsi_common_wayland.c index d6c1b862324..1f6176756b8 100644 --- a/src/vulkan/wsi/wsi_common_wayland.c +++ b/src/vulkan/wsi/wsi_common_wayland.c @@ -1282,7 +1282,8 @@ wsi_wl_surface_get_capabilities2(VkIcdSurfaceBase *surface, switch (ext->sType) { case VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR: { VkSurfaceProtectedCapabilitiesKHR *protected = (void *)ext; - protected->supportsProtected = VK_FALSE; + protected->supportsProtected = + wsi_device->supports_protected[VK_ICD_WSI_PLATFORM_WAYLAND]; break; } diff --git a/src/vulkan/wsi/wsi_common_x11.c b/src/vulkan/wsi/wsi_common_x11.c index 33685932842..8c364cd94dd 100644 --- a/src/vulkan/wsi/wsi_common_x11.c +++ b/src/vulkan/wsi/wsi_common_x11.c @@ -783,7 +783,8 @@ x11_surface_get_capabilities2(VkIcdSurfaceBase *icd_surface, switch (ext->sType) { case VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR: { VkSurfaceProtectedCapabilitiesKHR *protected = (void *)ext; - protected->supportsProtected = VK_FALSE; + protected->supportsProtected = + wsi_device->supports_protected[VK_ICD_WSI_PLATFORM_XCB]; break; }