Validation fixes for dEQP-VK.synchronization

- Initialize some structure fields to required values
- Use pWaitDstStageMask when waiting on a semaphore
- Move vkCmdSetEvent outside the render pass
- Provide expected number of queue priorities to VkDeviceQueueCreateInfo

Bug: 28074219

(cherry picked from commit 94fdc7fcde984ff6c21ea7ccf6fd758fbf90a0d9)

Change-Id: I71835bb7bc0e9fec528c24aec35e2c864f763aa9
diff --git a/external/vulkancts/modules/vulkan/vktSynchronization.cpp b/external/vulkancts/modules/vulkan/vktSynchronization.cpp
index d541fc9..46116aa 100644
--- a/external/vulkancts/modules/vulkan/vktSynchronization.cpp
+++ b/external/vulkancts/modules/vulkan/vktSynchronization.cpp
@@ -88,8 +88,8 @@
 	VkDeviceQueueCreateInfo		queueInfo;
 	VkDeviceCreateInfo			deviceInfo;
 	size_t						queueNdx;
-	const float					queuePriority	= 1.0f;
-	const deUint32				queueCount		= 2u;
+	const deUint32				queueCount					= 2u;
+	const float					queuePriority[queueCount]	= { 1.0f, 1.0f };
 
 	const vector<VkQueueFamilyProperties>	queueProps				= getPhysicalDeviceQueueFamilyProperties(vki, physicalDevice);
 	const VkPhysicalDeviceFeatures			physicalDeviceFeatures	= getPhysicalDeviceFeatures(vki, physicalDevice);
@@ -118,7 +118,7 @@
 	queueInfo.flags							= (VkDeviceQueueCreateFlags)0u;
 	queueInfo.queueFamilyIndex				= (deUint32)queueNdx;
 	queueInfo.queueCount					= queueCount;
-	queueInfo.pQueuePriorities				= &queuePriority;
+	queueInfo.pQueuePriorities				= queuePriority;
 
 	deMemset(&deviceInfo, 0xcd, sizeof(deviceInfo));
 	deviceInfo.sType						= VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO;
@@ -487,9 +487,9 @@
 	deviceInterface.cmdBindPipeline(renderInfo.commandBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, renderInfo.pipeline);
 	deviceInterface.cmdBindVertexBuffers(renderInfo.commandBuffer, 0u, 1u, &renderInfo.vertexBuffer, &bindingOffset);
 	deviceInterface.cmdDraw(renderInfo.commandBuffer, renderInfo.vertexBufferSize, 1, 0, 0);
+	deviceInterface.cmdEndRenderPass(renderInfo.commandBuffer);
 	if (renderInfo.setEvent)
 		deviceInterface.cmdSetEvent(renderInfo.commandBuffer, renderInfo.event, VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT);
-	deviceInterface.cmdEndRenderPass(renderInfo.commandBuffer);
 
 	deMemset(&renderBarrier, 0xcd, sizeof(renderBarrier));
 	renderBarrier.sType								= VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER;
@@ -810,12 +810,16 @@
 	depthStencilState.flags						= 0;
 	depthStencilState.depthTestEnable			= VK_FALSE;
 	depthStencilState.depthWriteEnable			= VK_FALSE;
+	depthStencilState.depthCompareOp			= VK_COMPARE_OP_ALWAYS;
 	depthStencilState.depthBoundsTestEnable		= VK_FALSE;
 	depthStencilState.stencilTestEnable			= VK_FALSE;
-	depthStencilState.depthCompareOp			= VK_COMPARE_OP_ALWAYS;
 	depthStencilState.front.failOp				= VK_STENCIL_OP_KEEP;
 	depthStencilState.front.passOp				= VK_STENCIL_OP_KEEP;
 	depthStencilState.front.depthFailOp			= VK_STENCIL_OP_KEEP;
+	depthStencilState.front.compareOp			= VK_COMPARE_OP_ALWAYS;
+	depthStencilState.front.compareMask			= 0u;
+	depthStencilState.front.writeMask			= 0u;
+	depthStencilState.front.reference			= 0u;
 	depthStencilState.back						= depthStencilState.front;
 
 	deMemset(&blendAttachment, 0xcd, sizeof(blendAttachment));
@@ -1133,6 +1137,7 @@
 	VkSubmitInfo				submitInfo[2];
 	VkMappedMemoryRange			range;
 	void*						resultImage;
+	const VkPipelineStageFlags	waitDstStageMask	= VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT;
 
 	deviceInterface.getDeviceQueue(device.get(), queueFamilyIdx, 0, &queue[0]);
 	deviceInterface.getDeviceQueue(device.get(), queueFamilyIdx, 1, &queue[1]);
@@ -1179,6 +1184,7 @@
 	submitInfo[0].pSignalSemaphores		= &semaphore.get();
 	submitInfo[1].waitSemaphoreCount	= 1;
 	submitInfo[1].pWaitSemaphores		= &semaphore.get();
+	submitInfo[1].pWaitDstStageMask		= &waitDstStageMask;
 
 	VK_CHECK(deviceInterface.queueSubmit(queue[0], 1, &submitInfo[0], testContext1.fences[0]));