From 2adb5f008c289d533d1d2310d7fade2206153144 Mon Sep 17 00:00:00 2001 From: Jonathan Bradley Date: Wed, 29 Jan 2025 20:07:31 -0500 Subject: pke: refactor: reduce image resource var ambiguity --- src/ecs.cpp | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) (limited to 'src/ecs.cpp') diff --git a/src/ecs.cpp b/src/ecs.cpp index c5f221a..ecdb1ee 100644 --- a/src/ecs.cpp +++ b/src/ecs.cpp @@ -240,6 +240,7 @@ struct InstanceBufferCopy { void ECS_Tick_Late(double delta) { // using a pointer here avoids calling the destructor when the object goes out of scope (void)delta; + PKVK_TmpBufferDetails tmpBufferDetails{}; DynArray *bufferUpdatesPtr = pk_new>(pkeSettings.mem.bkt); new (bufferUpdatesPtr) DynArray(0, pkeSettings.mem.bkt); DynArray &bufferUpdates = *bufferUpdatesPtr; @@ -312,14 +313,11 @@ void ECS_Tick_Late(double delta) { VkDeviceSize instanceBytes = sizeof(glm::mat4); VkDeviceSize byteCount = ibc.runningSize; - VkBuffer transferBuffer; - VkDeviceMemory transferMemory; - void *deviceData; - BeginTransferBuffer(byteCount, transferBuffer, transferMemory, deviceData); + PKVK_BeginBuffer(transferFamilyIndex, byteCount, tmpBufferDetails); VkDeviceSize runningOffset = 0; for (long i = 0; i < ibc.chunks->Count(); ++i) { auto &chunk = (*ibc.chunks)[i]; - memcpy(static_cast(deviceData) + runningOffset, chunk.mats->GetPtr(), byteCount); + memcpy(static_cast(tmpBufferDetails.deviceData) + runningOffset, chunk.mats->GetPtr(), byteCount); chunk.dstBufferCopy.srcOffset = runningOffset; chunk.dstBufferCopy.size = instanceBytes * (chunk.endingIndex - chunk.startingIndex + 1); runningOffset += chunk.dstBufferCopy.size; @@ -333,13 +331,13 @@ void ECS_Tick_Late(double delta) { cbbi.flags = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT; cbbi.pInheritanceInfo = nullptr; - vkBeginCommandBuffer(transferCommandBuffer, &cbbi); + vkBeginCommandBuffer(tmpBufferDetails.cmdBuffer, &cbbi); for (long i = 0; i < ibc.chunks->Count(); ++i) { - vkCmdCopyBuffer(transferCommandBuffer, transferBuffer, ibc.grBinds->instanceBD.buffer, 1, &(*ibc.chunks)[i].dstBufferCopy); + vkCmdCopyBuffer(tmpBufferDetails.cmdBuffer, tmpBufferDetails.buffer, ibc.grBinds->instanceBD.buffer, 1, &(*ibc.chunks)[i].dstBufferCopy); } - vkEndCommandBuffer(transferCommandBuffer); + vkEndCommandBuffer(tmpBufferDetails.cmdBuffer); VkSubmitInfo vkSubmitInfo{}; vkSubmitInfo.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO; @@ -348,14 +346,14 @@ void ECS_Tick_Late(double delta) { vkSubmitInfo.pWaitSemaphores = nullptr; vkSubmitInfo.pWaitDstStageMask = nullptr; vkSubmitInfo.commandBufferCount = 1; - vkSubmitInfo.pCommandBuffers = &transferCommandBuffer; + vkSubmitInfo.pCommandBuffers = &tmpBufferDetails.cmdBuffer; vkSubmitInfo.signalSemaphoreCount = 0; vkSubmitInfo.pSignalSemaphores = nullptr; - vkQueueSubmit(transferQueue, 1, &vkSubmitInfo, nullptr); - vkQueueWaitIdle(transferQueue); - vkResetCommandBuffer(transferCommandBuffer, 0); + vkQueueSubmit(tmpBufferDetails.queue, 1, &vkSubmitInfo, nullptr); + vkQueueWaitIdle(tmpBufferDetails.queue); + vkResetCommandBuffer(tmpBufferDetails.cmdBuffer, 0); } - EndTransferBuffer(transferBuffer, transferMemory); + PKVK_EndBuffer(tmpBufferDetails); bufferUpdates.Pop(); } } -- cgit v1.2.3