From a96866581a9e6957073c1bf506859098ada9e13e Mon Sep 17 00:00:00 2001
From: Lars Hoerttrich <larshoerttrich@uni-koblenz.de>
Date: Sat, 29 May 2021 13:46:02 +0200
Subject: [PATCH] [#31] Added function to copy buffer to image

---
 include/vkcv/ImageManager.hpp |  2 +-
 src/vkcv/ImageManager.cpp     | 19 +++++++++++++++++--
 2 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/include/vkcv/ImageManager.hpp b/include/vkcv/ImageManager.hpp
index bb4efef7..b4fe888e 100644
--- a/include/vkcv/ImageManager.hpp
+++ b/include/vkcv/ImageManager.hpp
@@ -31,7 +31,7 @@ namespace vkcv {
 		ImageManager& operator=(ImageManager&& other) = delete;
 		ImageManager& operator=(const ImageManager& other) = delete;
 
-		void copyBufferToImage(vk::Buffer bufffer, vk::Image image, uint32_t width, uint32_t height);
+		void copyBufferToImage(vk::Buffer buffer, vk::Image image, uint32_t width, uint32_t height);
 		void switchImageLayout(uint64_t id, vk::ImageLayout oldLayout, vk::ImageLayout newLayout);
 
 		uint64_t createImage(uint32_t width, uint32_t height);
diff --git a/src/vkcv/ImageManager.cpp b/src/vkcv/ImageManager.cpp
index a77976f5..46d703b4 100644
--- a/src/vkcv/ImageManager.cpp
+++ b/src/vkcv/ImageManager.cpp
@@ -45,9 +45,24 @@ namespace vkcv {
 		}
 	}
 
-	void ImageManager::copyBufferToImage(vk::Buffer bufffer, vk::Image image, uint32_t width, uint32_t height)
+	void ImageManager::copyBufferToImage(vk::Buffer buffer, vk::Image image, uint32_t width, uint32_t height)
 	{
-		//TODO
+		vk::BufferImageCopy copyRegion(0,width,height); // possibly add offset etc
+
+		SubmitInfo submitInfo;
+		submitInfo.queueType = QueueType::Transfer; //not sure
+		m_core->submitCommands(
+			submitInfo,
+			[buffer, image,copyRegion](const vk::CommandBuffer& commandBuffer) {
+				commandBuffer.copyBufferToImage(
+					buffer,
+					image,vk::ImageLayout::eTransferDstOptimal,
+					copyRegion
+				);
+			},
+			[]() {}
+			);
+
 	}
 
 
-- 
GitLab