summaryrefslogtreecommitdiff
path: root/src/ecs.cpp
diff options
context:
space:
mode:
authorJonathan Bradley <jcb@pikum.xyz>2025-01-29 20:07:31 -0500
committerJonathan Bradley <jcb@pikum.xyz>2025-01-29 20:07:31 -0500
commit2adb5f008c289d533d1d2310d7fade2206153144 (patch)
treeca3eafb1e0e20459e76e28e93042a64318e2d012 /src/ecs.cpp
parent4c241454f5698de3e6a5be07feb22ce930d63002 (diff)
pke: refactor: reduce image resource var ambiguity
Diffstat (limited to 'src/ecs.cpp')
-rw-r--r--src/ecs.cpp24
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();
}
}