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