Merge vk-gl-cts/vulkan-cts-1.2.8 into vk-gl-cts/vulkan-cts-1.3.0

Change-Id: I87f90200bc8aa2c12c9627c0ae112b6b06b7b7fd
diff --git a/external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-instruction-simplify-atanh-log-undefined.amber b/external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-instruction-simplify-atanh-log-undefined.amber
index 52fe7d5..267b7ff 100644
--- a/external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-instruction-simplify-atanh-log-undefined.amber
+++ b/external/vulkancts/data/vulkan/amber/graphicsfuzz/cov-instruction-simplify-atanh-log-undefined.amber
@@ -56,6 +56,7 @@
 #         _GLF_color.g = _float_0_0;
 #     }
 # }
+DEVICE_EXTENSION VK_KHR_shader_float_controls
 SHADER fragment variant_fragment_shader SPIRV-ASM TARGET_ENV spv1.0
 ; SPIR-V
 ; Version: 1.0
@@ -63,10 +64,13 @@
 ; Bound: 57
 ; Schema: 0
                OpCapability Shader
+               OpCapability SignedZeroInfNanPreserve
+               OpExtension "SPV_KHR_float_controls"
           %1 = OpExtInstImport "GLSL.std.450"
                OpMemoryModel Logical GLSL450
                OpEntryPoint Fragment %4 "main" %9
                OpExecutionMode %4 OriginUpperLeft
+               OpExecutionMode %4 SignedZeroInfNanPreserve 32
                OpSource ESSL 310
                OpName %4 "main"
                OpName %9 "_GLF_color"
diff --git a/external/vulkancts/modules/vulkan/api/vktApiVersionCheck.cpp b/external/vulkancts/modules/vulkan/api/vktApiVersionCheck.cpp
index fd6a767..e5baf0e 100644
--- a/external/vulkancts/modules/vulkan/api/vktApiVersionCheck.cpp
+++ b/external/vulkancts/modules/vulkan/api/vktApiVersionCheck.cpp
@@ -87,9 +87,7 @@
 		log << tcu::TestLog::Message << "deviceVersion: " << deviceVersion << tcu::TestLog::EndMessage;
 		log << tcu::TestLog::Message << "usedApiVersion: " << usedApiVersion << tcu::TestLog::EndMessage;
 
-		if (instanceVersion.majorNum > maxVulkanVersion.majorNum || instanceVersion.minorNum > maxVulkanVersion.minorNum)
-			return tcu::TestStatus::fail(de::toString("This version of CTS does not support a Vulkan instance with version ") + instanceVersionString);
-		else if (deviceVersion.majorNum > maxVulkanVersion.majorNum || deviceVersion.minorNum > maxVulkanVersion.minorNum)
+		if (deviceVersion.majorNum > maxVulkanVersion.majorNum || deviceVersion.minorNum > maxVulkanVersion.minorNum)
 			return tcu::TestStatus::fail(de::toString("This version of CTS does not support Vulkan device version ") + deviceVersionString);
 		else
 			return tcu::TestStatus::pass(usedApiVersionString);
diff --git a/external/vulkancts/modules/vulkan/protected_memory/vktProtectedMemWsiSwapchainTests.cpp b/external/vulkancts/modules/vulkan/protected_memory/vktProtectedMemWsiSwapchainTests.cpp
index 50a416c..d41b101 100644
--- a/external/vulkancts/modules/vulkan/protected_memory/vktProtectedMemWsiSwapchainTests.cpp
+++ b/external/vulkancts/modules/vulkan/protected_memory/vktProtectedMemWsiSwapchainTests.cpp
@@ -317,7 +317,6 @@
 			// Determine the maximum memory heap space available for protected images
 			vk::VkPhysicalDeviceMemoryProperties	memoryProperties	= vk::getPhysicalDeviceMemoryProperties(context.getInstanceDriver(), context.getPhysicalDevice());
 			vk::VkDeviceSize						protectedHeapSize	= 0;
-			vk::VkDeviceSize						maxMemoryUsage		= 0;
 			deUint32								protectedHeapMask	= 0;
 
 			for (deUint32 memType = 0; memType < memoryProperties.memoryTypeCount; memType++)
@@ -330,15 +329,14 @@
 					(protectedHeapMask & (1u << heapIndex)) == 0)
 				{
 					protectedHeapSize = de::max(protectedHeapSize, memoryProperties.memoryHeaps[heapIndex].size);
-					maxMemoryUsage    = protectedHeapSize / 4 ; /* Use at maximum 25% of heap */
 					protectedHeapMask |= 1u << heapIndex;
 				}
 			}
 
 			// If the implementation doesn't have a max image count, min+16 means we won't clamp.
-			// Limit it to how many protected images we estimate can be allocated - 25% of heap size
+			// Limit it to how many protected images we estimate can be allocated
 			const deUint32	maxImageCount		= de::min((capabilities.maxImageCount > 0) ? capabilities.maxImageCount : capabilities.minImageCount + 16u,
-														  deUint32(maxMemoryUsage / memoryRequirements.size));
+														  deUint32(protectedHeapSize / memoryRequirements.size));
 			if (maxImageCount < capabilities.minImageCount)
 				TCU_THROW(NotSupportedError, "Memory heap doesn't have enough memory!.");
 
@@ -358,7 +356,6 @@
 			vk::VkDevice							device				= context.getDevice();
 			vk::VkPhysicalDeviceMemoryProperties	memoryProperties	= vk::getPhysicalDeviceMemoryProperties(context.getInstanceDriver(), context.getPhysicalDevice());
 			vk::VkDeviceSize						protectedHeapSize	= 0;
-			vk::VkDeviceSize						maxMemoryUsage		= 0;
 
 			for (deUint32 memType = 0; memType < memoryProperties.memoryTypeCount; memType++)
 			{
@@ -368,7 +365,6 @@
 #endif
 				{
 					protectedHeapSize = de::max(protectedHeapSize, memoryProperties.memoryHeaps[heapIndex].size);
-					maxMemoryUsage	  = protectedHeapSize / 4 ; /* Use at maximum 25% of heap */
 				}
 			}
 
@@ -407,7 +403,7 @@
 					}
 
 					// Check for the image size requirement based on double/triple buffering
-					if (memoryRequirements.size  * capabilities.minImageCount < maxMemoryUsage)
+					if (memoryRequirements.size  * capabilities.minImageCount < protectedHeapSize)
 					{
 						cases.push_back(baseParameters);
 						cases.back().imageFormat		= curFmt->format;
@@ -433,7 +429,6 @@
 			vk::VkDevice							device				= context.getDevice();
 			vk::VkPhysicalDeviceMemoryProperties	memoryProperties	= vk::getPhysicalDeviceMemoryProperties(context.getInstanceDriver(), context.getPhysicalDevice());
 			vk::VkDeviceSize						protectedHeapSize	= 0;
-			vk::VkDeviceSize						maxMemoryUsage		= 0;
 
 			for (deUint32 memType = 0; memType < memoryProperties.memoryTypeCount; memType++)
 			{
@@ -443,7 +438,6 @@
 #endif
 				{
 					protectedHeapSize = de::max(protectedHeapSize, memoryProperties.memoryHeaps[heapIndex].size);
-					maxMemoryUsage    = protectedHeapSize / 4 ; /* Use at maximum 25% of heap */
 				}
 			}
 
@@ -483,7 +477,7 @@
 					}
 
 					// Check for the image size requirement based on double/triple buffering
-					if (memoryRequirements.size  * capabilities.minImageCount < maxMemoryUsage)
+					if (memoryRequirements.size  * capabilities.minImageCount < protectedHeapSize)
 					{
 						cases.push_back(baseParameters);
 						cases.back().imageExtent.width	= de::clamp(s_testSizes[ndx].width, capabilities.minImageExtent.width, capabilities.maxImageExtent.width);
@@ -525,7 +519,7 @@
 				}
 
 				// Check for the image size requirement based on double/triple buffering
-				if (memoryRequirements.size  * capabilities.minImageCount < maxMemoryUsage)
+				if (memoryRequirements.size  * capabilities.minImageCount < protectedHeapSize)
 				{
 					cases.push_back(baseParameters);
 					cases.back().imageExtent = capabilities.currentExtent;
@@ -573,7 +567,7 @@
 					}
 
 					// Check for the image size requirement based on double/triple buffering
-					if (memoryRequirements.size  * capabilities.minImageCount < maxMemoryUsage)
+					if (memoryRequirements.size  * capabilities.minImageCount < protectedHeapSize)
 					{
 						cases.push_back(baseParameters);
 						cases.back().imageExtent =s_testExtentSizes[ndx];