layers: add VK_KHR_surface_protected_capabilities
Change-Id: Iafe0f87470209ab5ca088c68a00f6d99fd035a39
diff --git a/layers/core_validation.cpp b/layers/core_validation.cpp
index 032c74e..e2e38cf 100644
--- a/layers/core_validation.cpp
+++ b/layers/core_validation.cpp
@@ -11496,6 +11496,26 @@
func_name, pCreateInfo->imageUsage, capabilities.supportedUsageFlags))
return true;
}
+
+ if (device_extensions.vk_khr_surface_protected_capabilities &&
+ (pCreateInfo->flags & VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR)) {
+ VkPhysicalDeviceSurfaceInfo2KHR surfaceInfo = { VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR };
+ surfaceInfo.surface = pCreateInfo->surface;
+ VkSurfaceProtectedCapabilitiesKHR surfaceProtectedCapabilities = { VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR };
+ VkSurfaceCapabilities2KHR surfaceCapabilities = { VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR };
+ surfaceCapabilities.pNext = &surfaceProtectedCapabilities;
+ DispatchGetPhysicalDeviceSurfaceCapabilities2KHR(physical_device_state->phys_device, &surfaceInfo,
+ &surfaceCapabilities);
+
+ if (!surfaceProtectedCapabilities.supportsProtected) {
+ if (log_msg(report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT,
+ HandleToUint64(device), "VUID-VkSwapchainCreateInfoKHR-flags-03187",
+ "%s: pCreateInfo->flags contains VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR but the surface "
+ "capabilities does not have VkSurfaceProtectedCapabilitiesKHR.supportsProtected set to VK_TRUE.",
+ func_name))
+ return true;
+ }
+ }
}
// Validate pCreateInfo values with the results of vkGetPhysicalDeviceSurfaceFormatsKHR():