Add alpha to one tests with single sample.

The current multisample alpha to one tests all use multiple sample but
it should work for single sample too.

New tests:
dEQP-VK.pipeline.*.multisample.alpha_to_one.samples_1*

Affects:
dEQP-VK.pipeline.*.multisample.alpha_to_one.*

Components: Vulkan

VK-GL-CTS issue: 3834

Change-Id: Idf434335f0ef4651543b74860ec4c0a0781eea02
diff --git a/android/cts/main/vk-master-2022-03-01/pipeline.txt b/android/cts/main/vk-master-2022-03-01/pipeline.txt
index b40ce34..bb4e932 100644
--- a/android/cts/main/vk-master-2022-03-01/pipeline.txt
+++ b/android/cts/main/vk-master-2022-03-01/pipeline.txt
Binary files differ
diff --git a/android/cts/main/vk-master/pipeline/fast-linked-library.txt b/android/cts/main/vk-master/pipeline/fast-linked-library.txt
index bf9fa8f..1008a00 100644
--- a/android/cts/main/vk-master/pipeline/fast-linked-library.txt
+++ b/android/cts/main/vk-master/pipeline/fast-linked-library.txt
@@ -188610,6 +188610,8 @@
 dEQP-VK.pipeline.fast_linked_library.multisample.sample_mask.mask_random.samples_64.primitive_line_sparse
 dEQP-VK.pipeline.fast_linked_library.multisample.sample_mask.mask_random.samples_64.primitive_point_1px_sparse
 dEQP-VK.pipeline.fast_linked_library.multisample.sample_mask.mask_random.samples_64.primitive_point_sparse
+dEQP-VK.pipeline.fast_linked_library.multisample.alpha_to_one.samples_1
+dEQP-VK.pipeline.fast_linked_library.multisample.alpha_to_one.samples_1_sparse
 dEQP-VK.pipeline.fast_linked_library.multisample.alpha_to_one.samples_2
 dEQP-VK.pipeline.fast_linked_library.multisample.alpha_to_one.samples_2_sparse
 dEQP-VK.pipeline.fast_linked_library.multisample.alpha_to_one.samples_4
@@ -196678,6 +196680,8 @@
 dEQP-VK.pipeline.fast_linked_library.multisample_with_fragment_shading_rate.sample_mask.mask_random.samples_64.primitive_line_sparse
 dEQP-VK.pipeline.fast_linked_library.multisample_with_fragment_shading_rate.sample_mask.mask_random.samples_64.primitive_point_1px_sparse
 dEQP-VK.pipeline.fast_linked_library.multisample_with_fragment_shading_rate.sample_mask.mask_random.samples_64.primitive_point_sparse
+dEQP-VK.pipeline.fast_linked_library.multisample_with_fragment_shading_rate.alpha_to_one.samples_1
+dEQP-VK.pipeline.fast_linked_library.multisample_with_fragment_shading_rate.alpha_to_one.samples_1_sparse
 dEQP-VK.pipeline.fast_linked_library.multisample_with_fragment_shading_rate.alpha_to_one.samples_2
 dEQP-VK.pipeline.fast_linked_library.multisample_with_fragment_shading_rate.alpha_to_one.samples_2_sparse
 dEQP-VK.pipeline.fast_linked_library.multisample_with_fragment_shading_rate.alpha_to_one.samples_4
diff --git a/android/cts/main/vk-master/pipeline/monolithic.txt b/android/cts/main/vk-master/pipeline/monolithic.txt
index 6376f6b..53bdcc4 100644
--- a/android/cts/main/vk-master/pipeline/monolithic.txt
+++ b/android/cts/main/vk-master/pipeline/monolithic.txt
@@ -189178,6 +189178,8 @@
 dEQP-VK.pipeline.monolithic.multisample.sample_mask.mask_random.samples_64.primitive_line_sparse
 dEQP-VK.pipeline.monolithic.multisample.sample_mask.mask_random.samples_64.primitive_point_1px_sparse
 dEQP-VK.pipeline.monolithic.multisample.sample_mask.mask_random.samples_64.primitive_point_sparse
+dEQP-VK.pipeline.monolithic.multisample.alpha_to_one.samples_1
+dEQP-VK.pipeline.monolithic.multisample.alpha_to_one.samples_1_sparse
 dEQP-VK.pipeline.monolithic.multisample.alpha_to_one.samples_2
 dEQP-VK.pipeline.monolithic.multisample.alpha_to_one.samples_2_sparse
 dEQP-VK.pipeline.monolithic.multisample.alpha_to_one.samples_4
@@ -197256,6 +197258,8 @@
 dEQP-VK.pipeline.monolithic.multisample_with_fragment_shading_rate.sample_mask.mask_random.samples_64.primitive_line_sparse
 dEQP-VK.pipeline.monolithic.multisample_with_fragment_shading_rate.sample_mask.mask_random.samples_64.primitive_point_1px_sparse
 dEQP-VK.pipeline.monolithic.multisample_with_fragment_shading_rate.sample_mask.mask_random.samples_64.primitive_point_sparse
+dEQP-VK.pipeline.monolithic.multisample_with_fragment_shading_rate.alpha_to_one.samples_1
+dEQP-VK.pipeline.monolithic.multisample_with_fragment_shading_rate.alpha_to_one.samples_1_sparse
 dEQP-VK.pipeline.monolithic.multisample_with_fragment_shading_rate.alpha_to_one.samples_2
 dEQP-VK.pipeline.monolithic.multisample_with_fragment_shading_rate.alpha_to_one.samples_2_sparse
 dEQP-VK.pipeline.monolithic.multisample_with_fragment_shading_rate.alpha_to_one.samples_4
diff --git a/android/cts/main/vk-master/pipeline/pipeline-library.txt b/android/cts/main/vk-master/pipeline/pipeline-library.txt
index 5198991..76e2352 100644
--- a/android/cts/main/vk-master/pipeline/pipeline-library.txt
+++ b/android/cts/main/vk-master/pipeline/pipeline-library.txt
@@ -188610,6 +188610,8 @@
 dEQP-VK.pipeline.pipeline_library.multisample.sample_mask.mask_random.samples_64.primitive_line_sparse
 dEQP-VK.pipeline.pipeline_library.multisample.sample_mask.mask_random.samples_64.primitive_point_1px_sparse
 dEQP-VK.pipeline.pipeline_library.multisample.sample_mask.mask_random.samples_64.primitive_point_sparse
+dEQP-VK.pipeline.pipeline_library.multisample.alpha_to_one.samples_1
+dEQP-VK.pipeline.pipeline_library.multisample.alpha_to_one.samples_1_sparse
 dEQP-VK.pipeline.pipeline_library.multisample.alpha_to_one.samples_2
 dEQP-VK.pipeline.pipeline_library.multisample.alpha_to_one.samples_2_sparse
 dEQP-VK.pipeline.pipeline_library.multisample.alpha_to_one.samples_4
@@ -196678,6 +196680,8 @@
 dEQP-VK.pipeline.pipeline_library.multisample_with_fragment_shading_rate.sample_mask.mask_random.samples_64.primitive_line_sparse
 dEQP-VK.pipeline.pipeline_library.multisample_with_fragment_shading_rate.sample_mask.mask_random.samples_64.primitive_point_1px_sparse
 dEQP-VK.pipeline.pipeline_library.multisample_with_fragment_shading_rate.sample_mask.mask_random.samples_64.primitive_point_sparse
+dEQP-VK.pipeline.pipeline_library.multisample_with_fragment_shading_rate.alpha_to_one.samples_1
+dEQP-VK.pipeline.pipeline_library.multisample_with_fragment_shading_rate.alpha_to_one.samples_1_sparse
 dEQP-VK.pipeline.pipeline_library.multisample_with_fragment_shading_rate.alpha_to_one.samples_2
 dEQP-VK.pipeline.pipeline_library.multisample_with_fragment_shading_rate.alpha_to_one.samples_2_sparse
 dEQP-VK.pipeline.pipeline_library.multisample_with_fragment_shading_rate.alpha_to_one.samples_4
diff --git a/android/cts/main/vksc-main/pipeline.txt b/android/cts/main/vksc-main/pipeline.txt
index 5de6a0e..a06162a 100644
--- a/android/cts/main/vksc-main/pipeline.txt
+++ b/android/cts/main/vksc-main/pipeline.txt
Binary files differ
diff --git a/external/vulkancts/modules/vulkan/pipeline/vktPipelineMultisampleTests.cpp b/external/vulkancts/modules/vulkan/pipeline/vktPipelineMultisampleTests.cpp
index 970c53b..1c0863f 100644
--- a/external/vulkancts/modules/vulkan/pipeline/vktPipelineMultisampleTests.cpp
+++ b/external/vulkancts/modules/vulkan/pipeline/vktPipelineMultisampleTests.cpp
@@ -106,7 +106,10 @@
 	RENDER_TYPE_DEPTHSTENCIL_ONLY	= 2u,
 
 	// render using color attachment at location 1 and location 0 set as unused
-	RENDER_TYPE_UNUSED_ATTACHMENT	= 3u
+	RENDER_TYPE_UNUSED_ATTACHMENT	= 3u,
+
+	// render using color attachment with single sample, required by alpha_to_one tests.
+	RENDER_TYPE_SINGLE_SAMPLE		= 4u
 };
 
 enum ImageBackingMode
@@ -2503,9 +2506,11 @@
 	de::MovePtr<tcu::TextureLevel>	alphaOneImage;
 	de::MovePtr<tcu::TextureLevel>	noAlphaOneImage;
 
+	RenderType renderType = m_multisampleStateParams.rasterizationSamples == vk::VK_SAMPLE_COUNT_1_BIT ? RENDER_TYPE_SINGLE_SAMPLE : RENDER_TYPE_RESOLVE;
+
 	// Render with blend enabled and alpha to one on
 	{
-		MultisampleRenderer renderer (m_context, m_pipelineConstructionType, m_colorFormat, m_renderSize, m_primitiveTopology, m_vertices, m_multisampleStateParams, m_colorBlendState, RENDER_TYPE_RESOLVE, m_backingMode, m_useFragmentShadingRate);
+		MultisampleRenderer renderer (m_context, m_pipelineConstructionType, m_colorFormat, m_renderSize, m_primitiveTopology, m_vertices, m_multisampleStateParams, m_colorBlendState, renderType, m_backingMode, m_useFragmentShadingRate);
 		alphaOneImage = renderer.render();
 	}
 
@@ -2514,7 +2519,7 @@
 		VkPipelineMultisampleStateCreateInfo	multisampleParams	= m_multisampleStateParams;
 		multisampleParams.alphaToOneEnable = false;
 
-		MultisampleRenderer renderer (m_context, m_pipelineConstructionType, m_colorFormat, m_renderSize, m_primitiveTopology, m_vertices, multisampleParams, m_colorBlendState, RENDER_TYPE_RESOLVE, m_backingMode, m_useFragmentShadingRate);
+		MultisampleRenderer renderer (m_context, m_pipelineConstructionType, m_colorFormat, m_renderSize, m_primitiveTopology, m_vertices, multisampleParams, m_colorBlendState, renderType, m_backingMode, m_useFragmentShadingRate);
 		noAlphaOneImage = renderer.render();
 	}
 
@@ -3378,6 +3383,9 @@
 		bool sparseSamplesSupported = false;
 		switch(m_multisampleStateParams.rasterizationSamples)
 		{
+			case VK_SAMPLE_COUNT_1_BIT:
+				sparseSamplesSupported = features.sparseResidencyImage2D;
+				break;
 			case VK_SAMPLE_COUNT_2_BIT:
 				sparseSamplesSupported = features.sparseResidency2Samples;
 				break;
@@ -4508,6 +4516,10 @@
 	{
 		return readColorAttachment(vk, vkDevice, queue, queueFamilyIndex, m_context.getDefaultAllocator(), *m_resolveImage, m_colorFormat, m_renderSize.cast<deUint32>());
 	}
+	else if(m_renderType == RENDER_TYPE_SINGLE_SAMPLE)
+	{
+		return readColorAttachment(vk, vkDevice, queue, queueFamilyIndex, m_context.getDefaultAllocator(), *m_colorImage, m_colorFormat, m_renderSize.cast<deUint32>());
+	}
 	else
 	{
 		return de::MovePtr<tcu::TextureLevel>();
@@ -5387,17 +5399,27 @@
 
 	// AlphaToOne tests
 	{
+		const VkSampleCountFlagBits samplesForAlphaToOne[] =
+		{
+			VK_SAMPLE_COUNT_1_BIT,
+			VK_SAMPLE_COUNT_2_BIT,
+			VK_SAMPLE_COUNT_4_BIT,
+			VK_SAMPLE_COUNT_8_BIT,
+			VK_SAMPLE_COUNT_16_BIT,
+			VK_SAMPLE_COUNT_32_BIT,
+			VK_SAMPLE_COUNT_64_BIT
+		};
 		de::MovePtr<tcu::TestCaseGroup> alphaToOneTests(new tcu::TestCaseGroup(testCtx, "alpha_to_one", ""));
 
-		for (int samplesNdx = 0; samplesNdx < DE_LENGTH_OF_ARRAY(samples); samplesNdx++)
+		for (int samplesNdx = 0; samplesNdx < DE_LENGTH_OF_ARRAY(samplesForAlphaToOne); samplesNdx++)
 		{
 			std::ostringstream caseName;
-			caseName << "samples_" << samples[samplesNdx];
+			caseName << "samples_" << samplesForAlphaToOne[samplesNdx];
 
-			alphaToOneTests->addChild(new AlphaToOneTest(testCtx, caseName.str(), "", pipelineConstructionType, samples[samplesNdx], IMAGE_BACKING_MODE_REGULAR, useFragmentShadingRate));
+			alphaToOneTests->addChild(new AlphaToOneTest(testCtx, caseName.str(), "", pipelineConstructionType, samplesForAlphaToOne[samplesNdx], IMAGE_BACKING_MODE_REGULAR, useFragmentShadingRate));
 #ifndef CTS_USES_VULKANSC
 			caseName << "_sparse";
-			alphaToOneTests->addChild(new AlphaToOneTest(testCtx, caseName.str(), "", pipelineConstructionType, samples[samplesNdx], IMAGE_BACKING_MODE_SPARSE, useFragmentShadingRate));
+			alphaToOneTests->addChild(new AlphaToOneTest(testCtx, caseName.str(), "", pipelineConstructionType, samplesForAlphaToOne[samplesNdx], IMAGE_BACKING_MODE_SPARSE, useFragmentShadingRate));
 #endif // CTS_USES_VULKANSC
 		}
 
diff --git a/external/vulkancts/mustpass/main/vk-default/pipeline/fast-linked-library.txt b/external/vulkancts/mustpass/main/vk-default/pipeline/fast-linked-library.txt
index 8428843..b613e1e 100644
--- a/external/vulkancts/mustpass/main/vk-default/pipeline/fast-linked-library.txt
+++ b/external/vulkancts/mustpass/main/vk-default/pipeline/fast-linked-library.txt
@@ -188651,6 +188651,8 @@
 dEQP-VK.pipeline.fast_linked_library.multisample.sample_mask.mask_random.samples_64.primitive_line_sparse
 dEQP-VK.pipeline.fast_linked_library.multisample.sample_mask.mask_random.samples_64.primitive_point_1px_sparse
 dEQP-VK.pipeline.fast_linked_library.multisample.sample_mask.mask_random.samples_64.primitive_point_sparse
+dEQP-VK.pipeline.fast_linked_library.multisample.alpha_to_one.samples_1
+dEQP-VK.pipeline.fast_linked_library.multisample.alpha_to_one.samples_1_sparse
 dEQP-VK.pipeline.fast_linked_library.multisample.alpha_to_one.samples_2
 dEQP-VK.pipeline.fast_linked_library.multisample.alpha_to_one.samples_2_sparse
 dEQP-VK.pipeline.fast_linked_library.multisample.alpha_to_one.samples_4
@@ -196719,6 +196721,8 @@
 dEQP-VK.pipeline.fast_linked_library.multisample_with_fragment_shading_rate.sample_mask.mask_random.samples_64.primitive_line_sparse
 dEQP-VK.pipeline.fast_linked_library.multisample_with_fragment_shading_rate.sample_mask.mask_random.samples_64.primitive_point_1px_sparse
 dEQP-VK.pipeline.fast_linked_library.multisample_with_fragment_shading_rate.sample_mask.mask_random.samples_64.primitive_point_sparse
+dEQP-VK.pipeline.fast_linked_library.multisample_with_fragment_shading_rate.alpha_to_one.samples_1
+dEQP-VK.pipeline.fast_linked_library.multisample_with_fragment_shading_rate.alpha_to_one.samples_1_sparse
 dEQP-VK.pipeline.fast_linked_library.multisample_with_fragment_shading_rate.alpha_to_one.samples_2
 dEQP-VK.pipeline.fast_linked_library.multisample_with_fragment_shading_rate.alpha_to_one.samples_2_sparse
 dEQP-VK.pipeline.fast_linked_library.multisample_with_fragment_shading_rate.alpha_to_one.samples_4
diff --git a/external/vulkancts/mustpass/main/vk-default/pipeline/monolithic.txt b/external/vulkancts/mustpass/main/vk-default/pipeline/monolithic.txt
index 7d2b067..6394483 100644
--- a/external/vulkancts/mustpass/main/vk-default/pipeline/monolithic.txt
+++ b/external/vulkancts/mustpass/main/vk-default/pipeline/monolithic.txt
@@ -189219,6 +189219,8 @@
 dEQP-VK.pipeline.monolithic.multisample.sample_mask.mask_random.samples_64.primitive_line_sparse
 dEQP-VK.pipeline.monolithic.multisample.sample_mask.mask_random.samples_64.primitive_point_1px_sparse
 dEQP-VK.pipeline.monolithic.multisample.sample_mask.mask_random.samples_64.primitive_point_sparse
+dEQP-VK.pipeline.monolithic.multisample.alpha_to_one.samples_1
+dEQP-VK.pipeline.monolithic.multisample.alpha_to_one.samples_1_sparse
 dEQP-VK.pipeline.monolithic.multisample.alpha_to_one.samples_2
 dEQP-VK.pipeline.monolithic.multisample.alpha_to_one.samples_2_sparse
 dEQP-VK.pipeline.monolithic.multisample.alpha_to_one.samples_4
@@ -197297,6 +197299,8 @@
 dEQP-VK.pipeline.monolithic.multisample_with_fragment_shading_rate.sample_mask.mask_random.samples_64.primitive_line_sparse
 dEQP-VK.pipeline.monolithic.multisample_with_fragment_shading_rate.sample_mask.mask_random.samples_64.primitive_point_1px_sparse
 dEQP-VK.pipeline.monolithic.multisample_with_fragment_shading_rate.sample_mask.mask_random.samples_64.primitive_point_sparse
+dEQP-VK.pipeline.monolithic.multisample_with_fragment_shading_rate.alpha_to_one.samples_1
+dEQP-VK.pipeline.monolithic.multisample_with_fragment_shading_rate.alpha_to_one.samples_1_sparse
 dEQP-VK.pipeline.monolithic.multisample_with_fragment_shading_rate.alpha_to_one.samples_2
 dEQP-VK.pipeline.monolithic.multisample_with_fragment_shading_rate.alpha_to_one.samples_2_sparse
 dEQP-VK.pipeline.monolithic.multisample_with_fragment_shading_rate.alpha_to_one.samples_4
diff --git a/external/vulkancts/mustpass/main/vk-default/pipeline/pipeline-library.txt b/external/vulkancts/mustpass/main/vk-default/pipeline/pipeline-library.txt
index 5e21c69..5b34af4 100644
--- a/external/vulkancts/mustpass/main/vk-default/pipeline/pipeline-library.txt
+++ b/external/vulkancts/mustpass/main/vk-default/pipeline/pipeline-library.txt
@@ -188651,6 +188651,8 @@
 dEQP-VK.pipeline.pipeline_library.multisample.sample_mask.mask_random.samples_64.primitive_line_sparse
 dEQP-VK.pipeline.pipeline_library.multisample.sample_mask.mask_random.samples_64.primitive_point_1px_sparse
 dEQP-VK.pipeline.pipeline_library.multisample.sample_mask.mask_random.samples_64.primitive_point_sparse
+dEQP-VK.pipeline.pipeline_library.multisample.alpha_to_one.samples_1
+dEQP-VK.pipeline.pipeline_library.multisample.alpha_to_one.samples_1_sparse
 dEQP-VK.pipeline.pipeline_library.multisample.alpha_to_one.samples_2
 dEQP-VK.pipeline.pipeline_library.multisample.alpha_to_one.samples_2_sparse
 dEQP-VK.pipeline.pipeline_library.multisample.alpha_to_one.samples_4
@@ -196719,6 +196721,8 @@
 dEQP-VK.pipeline.pipeline_library.multisample_with_fragment_shading_rate.sample_mask.mask_random.samples_64.primitive_line_sparse
 dEQP-VK.pipeline.pipeline_library.multisample_with_fragment_shading_rate.sample_mask.mask_random.samples_64.primitive_point_1px_sparse
 dEQP-VK.pipeline.pipeline_library.multisample_with_fragment_shading_rate.sample_mask.mask_random.samples_64.primitive_point_sparse
+dEQP-VK.pipeline.pipeline_library.multisample_with_fragment_shading_rate.alpha_to_one.samples_1
+dEQP-VK.pipeline.pipeline_library.multisample_with_fragment_shading_rate.alpha_to_one.samples_1_sparse
 dEQP-VK.pipeline.pipeline_library.multisample_with_fragment_shading_rate.alpha_to_one.samples_2
 dEQP-VK.pipeline.pipeline_library.multisample_with_fragment_shading_rate.alpha_to_one.samples_2_sparse
 dEQP-VK.pipeline.pipeline_library.multisample_with_fragment_shading_rate.alpha_to_one.samples_4
diff --git a/external/vulkancts/mustpass/main/vksc-default/pipeline.txt b/external/vulkancts/mustpass/main/vksc-default/pipeline.txt
index 5de6a0e..a06162a 100644
--- a/external/vulkancts/mustpass/main/vksc-default/pipeline.txt
+++ b/external/vulkancts/mustpass/main/vksc-default/pipeline.txt
Binary files differ