Handle VK_EXT_swapchain_colorspace in swapchain tests

VK_EXT_swapchain_colorspace adds new surface formats. Driver can enumerate
the formats regardless of whether VK_EXT_swapchain_colorspace was enabled,
but using them without enabling the extension is not allowed. Thus we have
two options:

1) Filter out non-core formats to stay within valid usage.

2) Enable VK_EXT_swapchain colorspace if advertised by the driver.

We opt for (2) as it provides basic coverage for the extension as a bonus.

Affects: dEQP-VK.wsi.*.swapchain.*
Components: Vulkan
VK-GL-CTS issue: 237

Change-Id: I5f905e5fb7ceaf83dacca57ef60d65487ff96d5d
(cherry picked from commit 703e4baead3c08331ee7604539d7a68a8b960c84)
diff --git a/external/vulkancts/framework/vulkan/vkBasicTypes.inl b/external/vulkancts/framework/vulkan/vkBasicTypes.inl
index 9929d80..cfa88dd 100644
--- a/external/vulkancts/framework/vulkan/vkBasicTypes.inl
+++ b/external/vulkancts/framework/vulkan/vkBasicTypes.inl
@@ -731,9 +731,20 @@
 
 enum VkColorSpaceKHR
 {
-	VK_COLOR_SPACE_SRGB_NONLINEAR_KHR	= 0,
-
-	VK_COLOR_SPACE_KHR_LAST
+	VK_COLOR_SPACE_SRGB_NONLINEAR_KHR		= 0,
+	VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT	= 1000104001,
+	VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT	= 1000104002,
+	VK_COLOR_SPACE_DCI_P3_LINEAR_EXT		= 1000104003,
+	VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT		= 1000104004,
+	VK_COLOR_SPACE_BT709_LINEAR_EXT			= 1000104005,
+	VK_COLOR_SPACE_BT709_NONLINEAR_EXT		= 1000104006,
+	VK_COLOR_SPACE_BT2020_LINEAR_EXT		= 1000104007,
+	VK_COLOR_SPACE_HDR10_ST2084_EXT			= 1000104008,
+	VK_COLOR_SPACE_DOLBYVISION_EXT			= 1000104009,
+	VK_COLOR_SPACE_HDR10_HLG_EXT			= 1000104010,
+	VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT		= 1000104011,
+	VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT	= 1000104012,
+	VK_COLOR_SPACE_PASS_THROUGH_EXT			= 1000104013,
 };
 
 enum VkPresentModeKHR
diff --git a/external/vulkancts/framework/vulkan/vkStrUtilImpl.inl b/external/vulkancts/framework/vulkan/vkStrUtilImpl.inl
index f0170ac..efd0a2f 100644
--- a/external/vulkancts/framework/vulkan/vkStrUtilImpl.inl
+++ b/external/vulkancts/framework/vulkan/vkStrUtilImpl.inl
@@ -818,8 +818,21 @@
 {
 	switch (value)
 	{
-		case VK_COLOR_SPACE_SRGB_NONLINEAR_KHR:	return "VK_COLOR_SPACE_SRGB_NONLINEAR_KHR";
-		default:								return DE_NULL;
+		case VK_COLOR_SPACE_SRGB_NONLINEAR_KHR:			return "VK_COLOR_SPACE_SRGB_NONLINEAR_KHR";
+		case VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT:	return "VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT";
+		case VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT:	return "VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT";
+		case VK_COLOR_SPACE_DCI_P3_LINEAR_EXT:			return "VK_COLOR_SPACE_DCI_P3_LINEAR_EXT";
+		case VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT:		return "VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT";
+		case VK_COLOR_SPACE_BT709_LINEAR_EXT:			return "VK_COLOR_SPACE_BT709_LINEAR_EXT";
+		case VK_COLOR_SPACE_BT709_NONLINEAR_EXT:		return "VK_COLOR_SPACE_BT709_NONLINEAR_EXT";
+		case VK_COLOR_SPACE_BT2020_LINEAR_EXT:			return "VK_COLOR_SPACE_BT2020_LINEAR_EXT";
+		case VK_COLOR_SPACE_HDR10_ST2084_EXT:			return "VK_COLOR_SPACE_HDR10_ST2084_EXT";
+		case VK_COLOR_SPACE_DOLBYVISION_EXT:			return "VK_COLOR_SPACE_DOLBYVISION_EXT";
+		case VK_COLOR_SPACE_HDR10_HLG_EXT:				return "VK_COLOR_SPACE_HDR10_HLG_EXT";
+		case VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT:		return "VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT";
+		case VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT:		return "VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT";
+		case VK_COLOR_SPACE_PASS_THROUGH_EXT:			return "VK_COLOR_SPACE_PASS_THROUGH_EXT";
+		default:										return DE_NULL;
 	}
 }
 
diff --git a/external/vulkancts/modules/vulkan/wsi/vktWsiSwapchainTests.cpp b/external/vulkancts/modules/vulkan/wsi/vktWsiSwapchainTests.cpp
index 1d78145..280e247 100644
--- a/external/vulkancts/modules/vulkan/wsi/vktWsiSwapchainTests.cpp
+++ b/external/vulkancts/modules/vulkan/wsi/vktWsiSwapchainTests.cpp
@@ -96,6 +96,19 @@
 	extensions.push_back("VK_KHR_surface");
 	extensions.push_back(getExtensionName(wsiType));
 
+	// VK_EXT_swapchain_colorspace adds new surface formats. Driver can enumerate
+	// the formats regardless of whether VK_EXT_swapchain_colorspace was enabled,
+	// but using them without enabling the extension is not allowed. Thus we have
+	// two options:
+	//
+	// 1) Filter out non-core formats to stay within valid usage.
+	//
+	// 2) Enable VK_EXT_swapchain colorspace if advertised by the driver.
+	//
+	// We opt for (2) as it provides basic coverage for the extension as a bonus.
+	if (isExtensionSupported(supportedExtensions, RequiredExtension("VK_EXT_swapchain_colorspace")))
+		extensions.push_back("VK_EXT_swapchain_colorspace");
+
 	checkAllSupported(supportedExtensions, extensions);
 
 	return createDefaultInstance(vkp, vector<string>(), extensions, pAllocator);
diff --git a/external/vulkancts/scripts/src/vulkan.h.in b/external/vulkancts/scripts/src/vulkan.h.in
index 39d2cc9..adb2d3c 100644
--- a/external/vulkancts/scripts/src/vulkan.h.in
+++ b/external/vulkancts/scripts/src/vulkan.h.in
@@ -3225,6 +3225,19 @@
 
 typedef enum VkColorSpaceKHR {
     VK_COLOR_SPACE_SRGB_NONLINEAR_KHR = 0,
+    VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT = 1000104001,
+    VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT = 1000104002,
+    VK_COLOR_SPACE_DCI_P3_LINEAR_EXT = 1000104003,
+    VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT = 1000104004,
+    VK_COLOR_SPACE_BT709_LINEAR_EXT = 1000104005,
+    VK_COLOR_SPACE_BT709_NONLINEAR_EXT = 1000104006,
+    VK_COLOR_SPACE_BT2020_LINEAR_EXT = 1000104007,
+    VK_COLOR_SPACE_HDR10_ST2084_EXT = 1000104008,
+    VK_COLOR_SPACE_DOLBYVISION_EXT = 1000104009,
+    VK_COLOR_SPACE_HDR10_HLG_EXT = 1000104010,
+    VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT = 1000104011,
+    VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT = 1000104012,
+    VK_COLOR_SPACE_PASS_THROUGH_EXT = 1000104013,
     VK_COLOR_SPACE_BEGIN_RANGE_KHR = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR,
     VK_COLOR_SPACE_END_RANGE_KHR = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR,
     VK_COLOR_SPACE_RANGE_SIZE_KHR = (VK_COLOR_SPACE_SRGB_NONLINEAR_KHR - VK_COLOR_SPACE_SRGB_NONLINEAR_KHR + 1),
@@ -4673,6 +4686,10 @@
     VkPastPresentationTimingGOOGLE*             pPresentationTimings);
 #endif
 
+#define VK_EXT_swapchain_colorspace 1
+#define VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION 2
+#define VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME "VK_EXT_swapchain_colorspace"
+
 #ifdef __cplusplus
 }
 #endif