Basic commands required to draw a simple triangle test

This cl adds the code needed to record and submit the minimal
subset of commands required to run a simple triangle example.

The commands themselves are still unimplemented.

Bug b/116336664

Change-Id: Id0109980225a64a2bb3599a89a5495091926c635
Reviewed-on: https://swiftshader-review.googlesource.com/c/22168
Tested-by: Alexis Hétu <sugoi@google.com>
Reviewed-by: Corentin Wallez <cwallez@google.com>
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
diff --git a/src/Vulkan/VkQueue.cpp b/src/Vulkan/VkQueue.cpp
index 537849c..f0978cf 100644
--- a/src/Vulkan/VkQueue.cpp
+++ b/src/Vulkan/VkQueue.cpp
@@ -12,7 +12,9 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
+#include "VkCommandBuffer.hpp"
 #include "VkQueue.hpp"
+#include "VkSemaphore.hpp"
 
 namespace vk
 {
@@ -21,4 +23,31 @@
 {
 }
 
+void Queue::submit(uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence fence)
+{
+	if(fence != VK_NULL_HANDLE)
+	{
+		UNIMPLEMENTED();
+	}
+
+	for(uint32_t i = 0; i < submitCount; i++)
+	{
+		auto& submitInfo = pSubmits[i];
+		for(uint32_t j = 0; j < submitInfo.waitSemaphoreCount; j++)
+		{
+			vk::Cast(submitInfo.pWaitSemaphores[j])->wait(submitInfo.pWaitDstStageMask[j]);
+		}
+
+		for(uint32_t j = 0; j < submitInfo.commandBufferCount; j++)
+		{
+			vk::Cast(submitInfo.pCommandBuffers[j])->submit();
+		}
+
+		for(uint32_t j = 0; j < submitInfo.signalSemaphoreCount; j++)
+		{
+			vk::Cast(submitInfo.pSignalSemaphores[j])->signal();
+		}
+	}
+}
+
 } // namespace vk
\ No newline at end of file