diff options
| author | Jonathan Bradley <jcb@pikum.xyz> | 2025-01-29 20:07:31 -0500 |
|---|---|---|
| committer | Jonathan Bradley <jcb@pikum.xyz> | 2025-01-29 20:07:31 -0500 |
| commit | 2adb5f008c289d533d1d2310d7fade2206153144 (patch) | |
| tree | ca3eafb1e0e20459e76e28e93042a64318e2d012 /src/ecs.cpp | |
| parent | 4c241454f5698de3e6a5be07feb22ce930d63002 (diff) | |
pke: refactor: reduce image resource var ambiguity
Diffstat (limited to 'src/ecs.cpp')
| -rw-r--r-- | src/ecs.cpp | 24 |
1 files changed, 11 insertions, 13 deletions
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<InstanceBufferCopy> *bufferUpdatesPtr = pk_new<DynArray<InstanceBufferCopy>>(pkeSettings.mem.bkt); new (bufferUpdatesPtr) DynArray<InstanceBufferCopy>(0, pkeSettings.mem.bkt); DynArray<InstanceBufferCopy> &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<char *>(deviceData) + runningOffset, chunk.mats->GetPtr(), byteCount); + memcpy(static_cast<char *>(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(); } } |
