Fix pipeline barrier issues in protected memory tests

Set correct stage mask for pipeline barriers, and remove pipeline
barriers that are not needed.

Components: Vulkan

VK-GL-CTS issue: 1373

Affects:
dEQP-VK.protected_memory.buffer.*
dEQP-VK.protected_memory.attachment.*

Change-Id: I6dae7ad02c66649281a35465939437a5fb26dd0e
diff --git a/external/vulkancts/modules/vulkan/protected_memory/vktProtectedMemAttachmentClearTests.cpp b/external/vulkancts/modules/vulkan/protected_memory/vktProtectedMemAttachmentClearTests.cpp
index fbff6e1..f987f14 100644
--- a/external/vulkancts/modules/vulkan/protected_memory/vktProtectedMemAttachmentClearTests.cpp
+++ b/external/vulkancts/modules/vulkan/protected_memory/vktProtectedMemAttachmentClearTests.cpp
@@ -253,6 +253,7 @@
 	vk.cmdEndRenderPass(*cmdBuffer);
 
 	{
+		// Image validator reads image in compute shader
 		const vk::VkImageMemoryBarrier	endImgBarrier		=
 		{
 			vk::VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER,			// sType
@@ -273,8 +274,8 @@
 			}
 		};
 		vk.cmdPipelineBarrier(*cmdBuffer,
-							  vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
 							  vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT,
+							  vk::VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT,
 							  (vk::VkDependencyFlags)0,
 							  0, (const vk::VkMemoryBarrier*)DE_NULL,
 							  0, (const vk::VkBufferMemoryBarrier*)DE_NULL,
diff --git a/external/vulkancts/modules/vulkan/protected_memory/vktProtectedMemAttachmentLoadTests.cpp b/external/vulkancts/modules/vulkan/protected_memory/vktProtectedMemAttachmentLoadTests.cpp
index 79b7386..ca2587b 100644
--- a/external/vulkancts/modules/vulkan/protected_memory/vktProtectedMemAttachmentLoadTests.cpp
+++ b/external/vulkancts/modules/vulkan/protected_memory/vktProtectedMemAttachmentLoadTests.cpp
@@ -181,6 +181,7 @@
 	vk.cmdEndRenderPass(*cmdBuffer);
 
 	{
+		// Image validator reads image in compute shader
 		const vk::VkImageMemoryBarrier	endImgBarrier		=
 		{
 			vk::VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER,			// sType
@@ -201,8 +202,8 @@
 			}
 		};
 		vk.cmdPipelineBarrier(*cmdBuffer,
-								vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
 								vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT,
+								vk::VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT,
 								(vk::VkDependencyFlags)0,
 								0, (const vk::VkMemoryBarrier*)DE_NULL,
 								0, (const vk::VkBufferMemoryBarrier*)DE_NULL,
diff --git a/external/vulkancts/modules/vulkan/protected_memory/vktProtectedMemCopyImageToBufferTests.cpp b/external/vulkancts/modules/vulkan/protected_memory/vktProtectedMemCopyImageToBufferTests.cpp
index 90b04df..5e78eaa 100644
--- a/external/vulkancts/modules/vulkan/protected_memory/vktProtectedMemCopyImageToBufferTests.cpp
+++ b/external/vulkancts/modules/vulkan/protected_memory/vktProtectedMemCopyImageToBufferTests.cpp
@@ -189,7 +189,7 @@
 
 		vk.cmdPipelineBarrier(targetCmdBuffer,
 							  vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
-							  vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT,
+							  vk::VK_PIPELINE_STAGE_TRANSFER_BIT,
 							  (vk::VkDependencyFlags)0,
 							  0, (const vk::VkMemoryBarrier*)DE_NULL,
 							  0, (const vk::VkBufferMemoryBarrier*)DE_NULL,
@@ -231,39 +231,14 @@
 		};
 
 		vk.cmdPipelineBarrier(targetCmdBuffer,
-							  vk::VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT,
-							  vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
+							  vk::VK_PIPELINE_STAGE_TRANSFER_BIT,
+							  vk::VK_PIPELINE_STAGE_TRANSFER_BIT,
 							  (vk::VkDependencyFlags)0,
 							  0, (const vk::VkMemoryBarrier*)DE_NULL,
 							  0, (const vk::VkBufferMemoryBarrier*)DE_NULL,
 							  1, &initializeBarrier);
 	}
 
-	// Start destination buffer barrier
-	{
-		const vk::VkBufferMemoryBarrier	startBufferBarrier		=
-		{
-			vk::VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER,		// VkStructureType		sType
-			DE_NULL,											// const void*			pNext
-			0,													// VkAccessFlags		srcAccessMask
-			vk::VK_ACCESS_TRANSFER_WRITE_BIT,					// VkAccessFlags		dstAccessMask
-			queueFamilyIndex,									// uint32_t				srcQueueFamilyIndex
-			queueFamilyIndex,									// uint32_t				dstQueueFamilyIndex
-			**dstBuffer,										// VkBuffer				buffer
-			0u,													// VkDeviceSize			offset
-			VK_WHOLE_SIZE,										// VkDeviceSize			size
-		};
-
-		vk.cmdPipelineBarrier(targetCmdBuffer,
-							  vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
-							  vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT,
-							  (vk::VkDependencyFlags)0,
-							  0, (const vk::VkMemoryBarrier*)DE_NULL,
-							  1, &startBufferBarrier,
-							  0, (const vk::VkImageMemoryBarrier*)DE_NULL);
-	}
-
-
 	// Copy image to buffer
 	const vk::VkImageSubresourceLayers	subresourceLayers	=
 	{
@@ -286,6 +261,7 @@
 	vk.cmdCopyImageToBuffer(targetCmdBuffer, **colorImage, vk::VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, **dstBuffer, 1u, &copyRegion);
 
 	{
+		// Buffer validator reads buffer in compute shader
 		const vk::VkBufferMemoryBarrier	endBufferBarrier		=
 		{
 			vk::VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER,		// VkStructureType		sType
@@ -299,8 +275,8 @@
 			VK_WHOLE_SIZE,										// VkDeviceSize			size
 		};
 		vk.cmdPipelineBarrier(targetCmdBuffer,
-								vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
 								vk::VK_PIPELINE_STAGE_TRANSFER_BIT,
+								vk::VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT,
 								(vk::VkDependencyFlags)0,
 								0, (const vk::VkMemoryBarrier*)DE_NULL,
 								1, &endBufferBarrier,
diff --git a/external/vulkancts/modules/vulkan/protected_memory/vktProtectedMemFillUpdateCopyBufferTests.cpp b/external/vulkancts/modules/vulkan/protected_memory/vktProtectedMemFillUpdateCopyBufferTests.cpp
index f6b51dc..c5900d0 100644
--- a/external/vulkancts/modules/vulkan/protected_memory/vktProtectedMemFillUpdateCopyBufferTests.cpp
+++ b/external/vulkancts/modules/vulkan/protected_memory/vktProtectedMemFillUpdateCopyBufferTests.cpp
@@ -192,25 +192,6 @@
 	switch (m_cmdType) {
 		case FILL_BUFFER:
 			{
-				const vk::VkBufferMemoryBarrier startFillBufferBarrier =
-				{
-					vk::VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER,	// VkStructureType		sType
-					DE_NULL,										// const void*			pNext
-					0,												// VkAccessFlags		srcAccessMask
-					vk::VK_ACCESS_TRANSFER_WRITE_BIT,				// VkAccessFlags		dstAccessMask
-					queueFamilyIndex,								// uint32_t				srcQueueFamilyIndex
-					queueFamilyIndex,								// uint32_t				dstQueueFamilyIndex
-					**dstBuffer,									// VkBuffer				buffer
-					0u,												// VkDeviceSize			offset
-					VK_WHOLE_SIZE,									// VkDeviceSize			size
-				};
-				vk.cmdPipelineBarrier(targetCmdBuffer,
-									  vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
-									  vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT,
-									  (vk::VkDependencyFlags) 0,
-									  0, (const vk::VkMemoryBarrier *) DE_NULL,
-									  1, &startFillBufferBarrier,
-									  0, (const vk::VkImageMemoryBarrier *) DE_NULL);
 				// Fill buffer
 				vk.cmdFillBuffer(targetCmdBuffer, **dstBuffer, 0u, VK_WHOLE_SIZE, m_fillValue);
 				break;
@@ -218,25 +199,6 @@
 
 		case UPDATE_BUFFER:
 			{
-				const vk::VkBufferMemoryBarrier startUpdateBufferBarrier =
-				{
-					vk::VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER,	// VkStructureType		sType
-					DE_NULL,										// const void*			pNext
-					0,												// VkAccessFlags		srcAccessMask
-					vk::VK_ACCESS_TRANSFER_WRITE_BIT,				// VkAccessFlags		dstAccessMask
-					queueFamilyIndex,								// uint32_t				srcQueueFamilyIndex
-					queueFamilyIndex,								// uint32_t				dstQueueFamilyIndex
-					**dstBuffer,									// VkBuffer				buffer
-					0u,												// VkDeviceSize			offset
-					VK_WHOLE_SIZE,									// VkDeviceSize			size
-				};
-				vk.cmdPipelineBarrier(targetCmdBuffer,
-									  vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
-									  vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT,
-									  (vk::VkDependencyFlags) 0,
-									  0, (const vk::VkMemoryBarrier *) DE_NULL,
-									  1, &startUpdateBufferBarrier,
-									  0, (const vk::VkImageMemoryBarrier *) DE_NULL);
 				// Update buffer
 				deUint32 data[BUFFER_SIZE];
 				for (size_t ndx = 0; ndx < BUFFER_SIZE; ndx++)
@@ -247,30 +209,9 @@
 
 		case COPY_BUFFER:
 			{
-				// Start src buffer barrier
-				const vk::VkBufferMemoryBarrier startBufferBarrier =
-				{
-					vk::VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER,	// VkStructureType		sType
-					DE_NULL,										// const void*			pNext
-					0,												// VkAccessFlags		srcAccessMask
-					vk::VK_ACCESS_TRANSFER_WRITE_BIT,				// VkAccessFlags		dstAccessMask
-					queueFamilyIndex,								// uint32_t				srcQueueFamilyIndex
-					queueFamilyIndex,								// uint32_t				dstQueueFamilyIndex
-					**srcBuffer,									// VkBuffer				buffer
-					0u,												// VkDeviceSize			offset
-					VK_WHOLE_SIZE,									// VkDeviceSize			size
-				};
-				vk.cmdPipelineBarrier(targetCmdBuffer,
-									  vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
-									  vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT,
-									  (vk::VkDependencyFlags) 0,
-									  0, (const vk::VkMemoryBarrier *) DE_NULL,
-									  1, &startBufferBarrier,
-									  0, (const vk::VkImageMemoryBarrier *) DE_NULL);
 				vk.cmdFillBuffer(targetCmdBuffer, **srcBuffer, 0u, VK_WHOLE_SIZE, m_fillValue);
 
-				// Barrier to change accessMask to transfer read bit for source buffer
-				const vk::VkBufferMemoryBarrier startCopyBufferBarrier	=
+				const vk::VkBufferMemoryBarrier copyBufferBarrier	=
 				{
 					vk::VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER,		// VkStructureType		sType
 					DE_NULL,											// const void*			pNext
@@ -283,32 +224,14 @@
 					VK_WHOLE_SIZE,										// VkDeviceSize			size
 				};
 
-				// Image barrier for destination buffer
-				const vk::VkBufferMemoryBarrier	dstBufferBarrier		=
-				{
-					vk::VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER,		// VkStructureType		sType
-					DE_NULL,											// const void*			pNext
-					0,													// VkAccessFlags		srcAccessMask
-					vk::VK_ACCESS_TRANSFER_WRITE_BIT,					// VkAccessFlags		dstAccessMask
-					queueFamilyIndex,									// uint32_t				srcQueueFamilyIndex
-					queueFamilyIndex,									// uint32_t				dstQueueFamilyIndex
-					**dstBuffer,										// VkBuffer				buffer
-					0u,													// VkDeviceSize			offset
-					VK_WHOLE_SIZE,										// VkDeviceSize			size
-				};
-
-				const vk::VkBufferMemoryBarrier memoryBarriers[2] =
-				{
-					startCopyBufferBarrier,
-					dstBufferBarrier
-				};
 				vk.cmdPipelineBarrier(targetCmdBuffer,
-									  vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
-									  vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT,
+									  vk::VK_PIPELINE_STAGE_TRANSFER_BIT,
+									  vk::VK_PIPELINE_STAGE_TRANSFER_BIT,
 									  (vk::VkDependencyFlags)0,
 									  0, (const vk::VkMemoryBarrier*)DE_NULL,
-									  2, memoryBarriers,
+									  1, &copyBufferBarrier,
 									  0, (const vk::VkImageMemoryBarrier*)DE_NULL);
+
 				// Copy buffer
 				const vk::VkBufferCopy				copyBufferRegion		=
 				{
@@ -326,6 +249,7 @@
 	}
 
 	{
+		// Buffer validator reads buffer in compute shader
 		const vk::VkBufferMemoryBarrier	endBufferBarrier		=
 		{
 			vk::VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER,		// VkStructureType		sType
@@ -339,8 +263,8 @@
 			VK_WHOLE_SIZE,										// VkDeviceSize			size
 		};
 		vk.cmdPipelineBarrier(targetCmdBuffer,
-							  vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
 							  vk::VK_PIPELINE_STAGE_TRANSFER_BIT,
+							  vk::VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT,
 							  (vk::VkDependencyFlags)0,
 							  0, (const vk::VkMemoryBarrier*)DE_NULL,
 							  1, &endBufferBarrier,