From 58ac31e2beeff6aed8e3b50e4dd7ec7218922272 Mon Sep 17 00:00:00 2001
From: Samuliak <samuliak77@gmail.com>
Date: Sun, 7 Apr 2024 16:03:20 +0200
Subject: [PATCH] metal: support buffer to buffer copy

---
 src/video_core/renderer_metal/mtl_buffer_cache.cpp | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/video_core/renderer_metal/mtl_buffer_cache.cpp b/src/video_core/renderer_metal/mtl_buffer_cache.cpp
index 1e0454c7d5..dfde651144 100644
--- a/src/video_core/renderer_metal/mtl_buffer_cache.cpp
+++ b/src/video_core/renderer_metal/mtl_buffer_cache.cpp
@@ -9,6 +9,7 @@
 
 #include "video_core/renderer_metal/mtl_buffer_cache.h"
 
+#include "video_core/renderer_metal/mtl_command_recorder.h"
 #include "video_core/renderer_metal/mtl_device.h"
 
 namespace Metal {
@@ -80,7 +81,10 @@ void BufferCacheRuntime::Finish() {}
 void BufferCacheRuntime::CopyBuffer(MTL::Buffer* dst_buffer, MTL::Buffer* src_buffer,
                                     std::span<const VideoCommon::BufferCopy> copies, bool barrier,
                                     bool can_reorder_upload) {
-    // TODO: copy buffer
+    for (const VideoCommon::BufferCopy& copy : copies) {
+        command_recorder.GetBlitCommandEncoder()->copyFromBuffer(
+            src_buffer, copy.src_offset, dst_buffer, copy.dst_offset, copy.size);
+    }
 }
 
 void BufferCacheRuntime::ClearBuffer(MTL::Buffer* dest_buffer, u32 offset, size_t size, u32 value) {