From 9eb9cfe7c5fbda70f6e6ae27b2dd1a9efa1d0f98 Mon Sep 17 00:00:00 2001 From: kearwood Date: Fri, 22 Jul 2022 18:31:11 -0700 Subject: [PATCH] Added KRDevice::graphicsUpload --- kraken/KRDevice.cpp | 15 +++++++++++++++ kraken/KRDevice.h | 2 ++ 2 files changed, 17 insertions(+) diff --git a/kraken/KRDevice.cpp b/kraken/KRDevice.cpp index dbce40c..ef3db37 100644 --- a/kraken/KRDevice.cpp +++ b/kraken/KRDevice.cpp @@ -739,6 +739,21 @@ void KRDevice::streamUpload(void* data, size_t size, VkBuffer destination) m_streamingStagingBuffer.usage += size; } +void KRDevice::graphicsUpload(void* data, size_t size, VkBuffer destination) +{ + memcpy((uint8_t*)m_graphicsStagingBuffer.data + m_graphicsStagingBuffer.usage, data, size); + + // TODO - Beneficial to batch many regions in a single call? + VkBufferCopy copyRegion{}; + copyRegion.srcOffset = m_graphicsStagingBuffer.usage; + copyRegion.dstOffset = 0; // Optional + copyRegion.size = size; + vkCmdCopyBuffer(m_graphicsCommandBuffers[0], m_graphicsStagingBuffer.buffer, destination, 1, ©Region); + + // TODO - Assert on any needed alignment? + m_graphicsStagingBuffer.usage += size; +} + void KRDevice::streamUpload(void* data, size_t size, Vector2i dimensions, VkImage destination) { checkFlushStreamBuffer(size); diff --git a/kraken/KRDevice.h b/kraken/KRDevice.h index 19cf9a5..944fefc 100644 --- a/kraken/KRDevice.h +++ b/kraken/KRDevice.h @@ -80,6 +80,8 @@ public: void streamUpload(void* data, size_t size, Vector2i dimensions, VkImage destination); void streamEnd(); + void graphicsUpload(void* data, size_t size, VkBuffer destination); + VkPhysicalDevice m_device; VkDevice m_logicalDevice; VkPhysicalDeviceProperties m_deviceProperties;