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/entities.cpp | |
| parent | 4c241454f5698de3e6a5be07feb22ce930d63002 (diff) | |
pke: refactor: reduce image resource var ambiguity
Diffstat (limited to 'src/entities.cpp')
| -rw-r--r-- | src/entities.cpp | 134 |
1 files changed, 66 insertions, 68 deletions
diff --git a/src/entities.cpp b/src/entities.cpp index ae9e8b4..446e80a 100644 --- a/src/entities.cpp +++ b/src/entities.cpp @@ -379,6 +379,7 @@ void EntityType_PreLoad(EntityType_LoadHelperStruct &helper) { } void EntityType_LoadTexture(EntityType_LoadHelperStruct &helper, const int64_t index) { + PKVK_TmpBufferDetails tmpBufferDetails{}; EntityTypeDetails_LoadHelperStruct &etdHelper = (*helper.etdHelpers)[index]; int32_t pixelWidth, pixelHeight, pixelChannels; @@ -458,11 +459,8 @@ void EntityType_LoadTexture(EntityType_LoadHelperStruct &helper, const int64_t i vkCreateImageView(vkDevice, &vkImageViewCreateInfo, vkAllocator, &etdHelper.etd->textureImageView); // transition image layout and copy to buffer - VkBuffer transferImageBuffer; - VkDeviceMemory transferImageMemory; - void *deviceData; - BeginTransferBuffer(imageSizeBytes, transferImageBuffer, transferImageMemory, deviceData); - memcpy(deviceData, pixels, imageSizeBytes); + PKVK_BeginBuffer(transferFamilyIndex, imageSizeBytes, tmpBufferDetails); + memcpy(tmpBufferDetails.deviceData, pixels, imageSizeBytes); { VkImageMemoryBarrier vkImageMemoryBarrier; vkImageMemoryBarrier.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER; @@ -490,9 +488,9 @@ void EntityType_LoadTexture(EntityType_LoadHelperStruct &helper, const int64_t i vkCommandBufferBeginInfo.flags = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT; vkCommandBufferBeginInfo.pInheritanceInfo = nullptr; - vkBeginCommandBuffer(transferCommandBuffer, &vkCommandBufferBeginInfo); + vkBeginCommandBuffer(tmpBufferDetails.cmdBuffer, &vkCommandBufferBeginInfo); - vkCmdPipelineBarrier(transferCommandBuffer, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT, 0, 0, nullptr, 0, nullptr, 1, &vkImageMemoryBarrier); + vkCmdPipelineBarrier(tmpBufferDetails.cmdBuffer, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT, 0, 0, nullptr, 0, nullptr, 1, &vkImageMemoryBarrier); // TODO animated textures / texture array - make this an array VkBufferImageCopy vkBufferImageCopy; @@ -516,9 +514,9 @@ void EntityType_LoadTexture(EntityType_LoadHelperStruct &helper, const int64_t i .height = static_cast<uint32_t>(pixelHeight), .depth = 1, }; - vkCmdCopyBufferToImage(transferCommandBuffer, transferImageBuffer, etdHelper.etd->textureImage, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 1, &vkBufferImageCopy); + vkCmdCopyBufferToImage(tmpBufferDetails.cmdBuffer, tmpBufferDetails.buffer, etdHelper.etd->textureImage, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 1, &vkBufferImageCopy); - vkEndCommandBuffer(transferCommandBuffer); + vkEndCommandBuffer(tmpBufferDetails.cmdBuffer); VkSubmitInfo submitInfo; submitInfo.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO; @@ -527,14 +525,15 @@ void EntityType_LoadTexture(EntityType_LoadHelperStruct &helper, const int64_t i submitInfo.pWaitSemaphores = nullptr; submitInfo.pWaitDstStageMask = nullptr; submitInfo.commandBufferCount = 1; - submitInfo.pCommandBuffers = &transferCommandBuffer; + submitInfo.pCommandBuffers = &tmpBufferDetails.cmdBuffer; submitInfo.signalSemaphoreCount = 0; submitInfo.pSignalSemaphores = nullptr; - vkQueueSubmit(transferQueue, 1, &submitInfo, nullptr); - vkQueueWaitIdle(transferQueue); - vkResetCommandBuffer(transferCommandBuffer, 0); + vkQueueSubmit(tmpBufferDetails.queue, 1, &submitInfo, nullptr); + vkQueueWaitIdle(tmpBufferDetails.queue); + vkResetCommandBuffer(tmpBufferDetails.cmdBuffer, 0); } - EndTransferBuffer(transferImageBuffer, transferImageMemory); + PKVK_EndBuffer(tmpBufferDetails); + PKVK_BeginBuffer(graphicsFamilyIndex, 0, tmpBufferDetails); { VkImageMemoryBarrier vkImageMemoryBarrier; vkImageMemoryBarrier.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER; @@ -562,11 +561,11 @@ void EntityType_LoadTexture(EntityType_LoadHelperStruct &helper, const int64_t i vkCommandBufferBeginInfo.flags = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT; vkCommandBufferBeginInfo.pInheritanceInfo = nullptr; - vkBeginCommandBuffer(graphicsCommandBuffer, &vkCommandBufferBeginInfo); + vkBeginCommandBuffer(tmpBufferDetails.cmdBuffer, &vkCommandBufferBeginInfo); - vkCmdPipelineBarrier(graphicsCommandBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT, 0, 0, nullptr, 0, nullptr, 1, &vkImageMemoryBarrier); + vkCmdPipelineBarrier(tmpBufferDetails.cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT, 0, 0, nullptr, 0, nullptr, 1, &vkImageMemoryBarrier); - vkEndCommandBuffer(graphicsCommandBuffer); + vkEndCommandBuffer(tmpBufferDetails.cmdBuffer); VkSubmitInfo submitInfo; submitInfo.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO; @@ -575,12 +574,14 @@ void EntityType_LoadTexture(EntityType_LoadHelperStruct &helper, const int64_t i submitInfo.pWaitSemaphores = nullptr; submitInfo.pWaitDstStageMask = nullptr; submitInfo.commandBufferCount = 1; - submitInfo.pCommandBuffers = &graphicsCommandBuffer; + submitInfo.pCommandBuffers = &tmpBufferDetails.cmdBuffer; submitInfo.signalSemaphoreCount = 0; submitInfo.pSignalSemaphores = nullptr; - vkQueueSubmit(graphicsQueue, 1, &submitInfo, nullptr); - vkQueueWaitIdle(graphicsQueue); + vkQueueSubmit(tmpBufferDetails.queue, 1, &submitInfo, nullptr); + vkQueueWaitIdle(tmpBufferDetails.queue); + vkResetCommandBuffer(tmpBufferDetails.cmdBuffer, 0); } + PKVK_EndBuffer(tmpBufferDetails); // TODO double-check this? if (etdHelper.textureAssetHandle != AssetHandle_MAX) { @@ -671,7 +672,7 @@ void EntityType_LoadTexture(EntityType_LoadHelperStruct &helper, const int64_t i } void EntityType_LoadMesh(EntityType_LoadHelperStruct &helper, const int64_t meshIndex) { - + PKVK_TmpBufferDetails tmpBufferDetails{}; EntityTypeDetails_LoadHelperStruct &etdHelper = (*helper.etdHelpers)[meshIndex]; // create and bind buffers @@ -768,28 +769,25 @@ void EntityType_LoadMesh(EntityType_LoadHelperStruct &helper, const int64_t mesh // create transfer items && transfer { - VkDeviceMemory transferDeviceMemory; - VkBuffer transferBuffer; - void *data; - BeginTransferBuffer(helper.vertMemoryRequirementsCombined.size, transferBuffer, transferDeviceMemory, data); - memset(data, '\0', helper.vertMemoryRequirementsCombined.size); + PKVK_BeginBuffer(transferFamilyIndex, helper.vertMemoryRequirementsCombined.size, tmpBufferDetails); + memset(tmpBufferDetails.deviceData, '\0', helper.vertMemoryRequirementsCombined.size); char *dstPtr = nullptr; char *srcPtr = nullptr; - dstPtr = static_cast<char *>(data) + offsetVert; + dstPtr = static_cast<char *>(tmpBufferDetails.deviceData) + offsetVert; srcPtr = static_cast<char *>(helper.modelBinAsset->ptr) + accVert.buffer_view->offset; memcpy(dstPtr, srcPtr, accVert.buffer_view->size); - dstPtr = static_cast<char *>(data) + offsetNorm; + dstPtr = static_cast<char *>(tmpBufferDetails.deviceData) + offsetNorm; srcPtr = static_cast<char *>(helper.modelBinAsset->ptr) + accNorm.buffer_view->offset; memcpy(dstPtr, srcPtr, accNorm.buffer_view->size); - dstPtr = static_cast<char *>(data) + offsetUV; + dstPtr = static_cast<char *>(tmpBufferDetails.deviceData) + offsetUV; srcPtr = static_cast<char *>(helper.modelBinAsset->ptr) + accUV.buffer_view->offset; memcpy(dstPtr, srcPtr, accUV.buffer_view->size); - dstPtr = static_cast<char *>(data) + offsetIndex; + dstPtr = static_cast<char *>(tmpBufferDetails.deviceData) + offsetIndex; srcPtr = static_cast<char *>(helper.modelBinAsset->ptr) + accIndex.buffer_view->offset; memcpy(dstPtr, srcPtr, accIndex.buffer_view->size); @@ -799,7 +797,7 @@ void EntityType_LoadMesh(EntityType_LoadHelperStruct &helper, const int64_t mesh // TODO consider single-use? vkCommandBufferBeginInfo.flags = 0; vkCommandBufferBeginInfo.pInheritanceInfo = nullptr; - vkBeginCommandBuffer(transferCommandBuffer, &vkCommandBufferBeginInfo); + vkBeginCommandBuffer(tmpBufferDetails.cmdBuffer, &vkCommandBufferBeginInfo); VkBufferCopy bufferCopys[expectedBufferCount]; for (long i = 0; i < expectedBufferCount; ++i) { bufferCopys[i].dstOffset = 0; @@ -807,25 +805,25 @@ void EntityType_LoadMesh(EntityType_LoadHelperStruct &helper, const int64_t mesh index = 0; bufferCopys[index].srcOffset = offsetVert; bufferCopys[index].size = sizeVert; - vkCmdCopyBuffer(transferCommandBuffer, transferBuffer, etdHelper.etd->grBinds->vertexBD.buffer, 1, &bufferCopys[index]); + vkCmdCopyBuffer(tmpBufferDetails.cmdBuffer, tmpBufferDetails.buffer, etdHelper.etd->grBinds->vertexBD.buffer, 1, &bufferCopys[index]); index+=1; bufferCopys[index].srcOffset = offsetNorm; bufferCopys[index].size = sizeNorm; - vkCmdCopyBuffer(transferCommandBuffer, transferBuffer, etdHelper.etd->grBinds->normalsBD.buffer, 1, &bufferCopys[index]); + vkCmdCopyBuffer(tmpBufferDetails.cmdBuffer, tmpBufferDetails.buffer, etdHelper.etd->grBinds->normalsBD.buffer, 1, &bufferCopys[index]); index+=1; bufferCopys[index].srcOffset = offsetUV; bufferCopys[index].size = sizeUV; - vkCmdCopyBuffer(transferCommandBuffer, transferBuffer, etdHelper.etd->grBinds->uvBD.buffer, 1, &bufferCopys[index]); + vkCmdCopyBuffer(tmpBufferDetails.cmdBuffer, tmpBufferDetails.buffer, etdHelper.etd->grBinds->uvBD.buffer, 1, &bufferCopys[index]); index+=1; bufferCopys[index].srcOffset = offsetIndex; bufferCopys[index].size = sizeIndex; - vkCmdCopyBuffer(transferCommandBuffer, transferBuffer, etdHelper.etd->grBinds->indexBD.buffer, 1, &bufferCopys[index]); + vkCmdCopyBuffer(tmpBufferDetails.cmdBuffer, tmpBufferDetails.buffer, etdHelper.etd->grBinds->indexBD.buffer, 1, &bufferCopys[index]); // index+=1; - vkEndCommandBuffer(transferCommandBuffer); + vkEndCommandBuffer(tmpBufferDetails.cmdBuffer); VkSubmitInfo submitInfo; submitInfo.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO; @@ -834,13 +832,13 @@ void EntityType_LoadMesh(EntityType_LoadHelperStruct &helper, const int64_t mesh submitInfo.pWaitSemaphores = nullptr; submitInfo.pWaitDstStageMask = nullptr; submitInfo.commandBufferCount = 1; - submitInfo.pCommandBuffers = &transferCommandBuffer; + submitInfo.pCommandBuffers = &tmpBufferDetails.cmdBuffer; submitInfo.signalSemaphoreCount = 0; submitInfo.pSignalSemaphores = nullptr; - vkQueueSubmit(transferQueue, 1, &submitInfo, nullptr); - vkQueueWaitIdle(transferQueue); + vkQueueSubmit(tmpBufferDetails.queue, 1, &submitInfo, nullptr); + vkQueueWaitIdle(tmpBufferDetails.queue); - EndTransferBuffer(transferBuffer, transferDeviceMemory); + PKVK_EndBuffer(tmpBufferDetails); } // set up instance buffer @@ -921,32 +919,29 @@ void EntityType_LoadMesh(EntityType_LoadHelperStruct &helper, const int64_t mesh // create transfer items && transfer { - VkDeviceMemory transferDeviceMemory; - VkBuffer transferBuffer; - void *data; - BeginTransferBuffer(helper.physVertMemoryRequirementsCombined.size, transferBuffer, transferDeviceMemory, data); - memset(data, '\0', helper.physVertMemoryRequirementsCombined.size); + PKVK_BeginBuffer(transferFamilyIndex, helper.physVertMemoryRequirementsCombined.size, tmpBufferDetails); + memset(tmpBufferDetails.deviceData, '\0', helper.physVertMemoryRequirementsCombined.size); runningOffset = 0; char *dstPtr = nullptr; char *srcPtr = nullptr; - dstPtr = static_cast<char *>(data) + runningOffset; + dstPtr = static_cast<char *>(tmpBufferDetails.deviceData) + runningOffset; srcPtr = reinterpret_cast<char *>(etdHelper.physDbg.vertexes->GetPtr()); memcpy(dstPtr, srcPtr, sizeVert); runningOffset += sizeVert; - dstPtr = static_cast<char *>(data) + runningOffset; + dstPtr = static_cast<char *>(tmpBufferDetails.deviceData) + runningOffset; srcPtr = reinterpret_cast<char *>(etdHelper.physDbg.normals->GetPtr()); memcpy(dstPtr, srcPtr, sizeNorm); runningOffset += sizeNorm; - dstPtr = static_cast<char *>(data) + runningOffset; + dstPtr = static_cast<char *>(tmpBufferDetails.deviceData) + runningOffset; srcPtr = reinterpret_cast<char *>(etdHelper.physDbg.uv->GetPtr()); memcpy(dstPtr, srcPtr, sizeUV); runningOffset += sizeUV; - dstPtr = static_cast<char *>(data) + runningOffset; + dstPtr = static_cast<char *>(tmpBufferDetails.deviceData) + runningOffset; srcPtr = reinterpret_cast<char *>(etdHelper.physDbg.indexes->GetPtr()); memcpy(dstPtr, srcPtr, sizeIndex); @@ -956,7 +951,7 @@ void EntityType_LoadMesh(EntityType_LoadHelperStruct &helper, const int64_t mesh // TODO consider single-use? vkCommandBufferBeginInfo.flags = 0; vkCommandBufferBeginInfo.pInheritanceInfo = nullptr; - vkBeginCommandBuffer(transferCommandBuffer, &vkCommandBufferBeginInfo); + vkBeginCommandBuffer(tmpBufferDetails.cmdBuffer, &vkCommandBufferBeginInfo); VkBufferCopy bufferCopys[expectedBufferCount]; for (long i = 0; i < expectedBufferCount; ++i) { bufferCopys[i].dstOffset = 0; @@ -965,29 +960,29 @@ void EntityType_LoadMesh(EntityType_LoadHelperStruct &helper, const int64_t mesh runningOffset = 0; bufferCopys[index].srcOffset = runningOffset; bufferCopys[index].size = sizeVert; - vkCmdCopyBuffer(transferCommandBuffer, transferBuffer, etdHelper.etd->grBinds->physVertBD.buffer, 1, &bufferCopys[index]); + vkCmdCopyBuffer(tmpBufferDetails.cmdBuffer, tmpBufferDetails.buffer, etdHelper.etd->grBinds->physVertBD.buffer, 1, &bufferCopys[index]); runningOffset += sizeVert; index+=1; bufferCopys[index].srcOffset = runningOffset; bufferCopys[index].size = sizeNorm; - vkCmdCopyBuffer(transferCommandBuffer, transferBuffer, etdHelper.etd->grBinds->physNormBD.buffer, 1, &bufferCopys[index]); + vkCmdCopyBuffer(tmpBufferDetails.cmdBuffer, tmpBufferDetails.buffer, etdHelper.etd->grBinds->physNormBD.buffer, 1, &bufferCopys[index]); runningOffset += sizeNorm; index+=1; bufferCopys[index].srcOffset = runningOffset; bufferCopys[index].size = sizeUV; - vkCmdCopyBuffer(transferCommandBuffer, transferBuffer, etdHelper.etd->grBinds->physUvBD.buffer, 1, &bufferCopys[index]); + vkCmdCopyBuffer(tmpBufferDetails.cmdBuffer, tmpBufferDetails.buffer, etdHelper.etd->grBinds->physUvBD.buffer, 1, &bufferCopys[index]); runningOffset += sizeUV; index+=1; bufferCopys[index].srcOffset = runningOffset; bufferCopys[index].size = sizeIndex; - vkCmdCopyBuffer(transferCommandBuffer, transferBuffer, etdHelper.etd->grBinds->physIndxBD.buffer, 1, &bufferCopys[index]); + vkCmdCopyBuffer(tmpBufferDetails.cmdBuffer, tmpBufferDetails.buffer, etdHelper.etd->grBinds->physIndxBD.buffer, 1, &bufferCopys[index]); // runningOffset += sizeIndex; // index+=1; - vkEndCommandBuffer(transferCommandBuffer); + vkEndCommandBuffer(tmpBufferDetails.cmdBuffer); VkSubmitInfo submitInfo; submitInfo.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO; @@ -996,13 +991,13 @@ void EntityType_LoadMesh(EntityType_LoadHelperStruct &helper, const int64_t mesh submitInfo.pWaitSemaphores = nullptr; submitInfo.pWaitDstStageMask = nullptr; submitInfo.commandBufferCount = 1; - submitInfo.pCommandBuffers = &transferCommandBuffer; + submitInfo.pCommandBuffers = &tmpBufferDetails.cmdBuffer; submitInfo.signalSemaphoreCount = 0; submitInfo.pSignalSemaphores = nullptr; - vkQueueSubmit(transferQueue, 1, &submitInfo, nullptr); - vkQueueWaitIdle(transferQueue); + vkQueueSubmit(tmpBufferDetails.queue, 1, &submitInfo, nullptr); + vkQueueWaitIdle(tmpBufferDetails.queue); - EndTransferBuffer(transferBuffer, transferDeviceMemory); + PKVK_EndBuffer(tmpBufferDetails); } } } @@ -1240,6 +1235,7 @@ void EntityType_Tick_Late(double delta) { } void EntityType_RolloverInstances(EntityType &et, CompGrBinds &grBinds) { + PKVK_TmpBufferDetails tmpBufferDetails{}; int32_t oldCount = grBinds.instanceBufferMaxCount; int32_t newCount = std::ceil(grBinds.instanceBufferMaxCount * 1.5); newCount = newCount < 4 ? 4 : newCount; @@ -1273,8 +1269,9 @@ void EntityType_RolloverInstances(EntityType &et, CompGrBinds &grBinds) { vkBindBufferMemory(vkDevice, grBinds.instanceBD.buffer, et.deviceMemoryInst, 0); // copy data + PKVK_BeginBuffer(graphicsFamilyIndex, 0, tmpBufferDetails); { - vkResetCommandBuffer(graphicsCommandBuffer, 0); + vkResetCommandBuffer(tmpBufferDetails.cmdBuffer, 0); VkBufferMemoryBarrier memBarriers[2]; for (long i = 0; i < 2; ++i) { memBarriers[i].sType = VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER; @@ -1304,16 +1301,16 @@ void EntityType_RolloverInstances(EntityType &et, CompGrBinds &grBinds) { vkCommandBufferBeginInfo.flags = 0; vkCommandBufferBeginInfo.pInheritanceInfo = nullptr; - vkBeginCommandBuffer(graphicsCommandBuffer, &vkCommandBufferBeginInfo); - vkCmdPipelineBarrier(graphicsCommandBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT, 0, 0, nullptr, 2, memBarriers, 0, nullptr); + vkBeginCommandBuffer(tmpBufferDetails.cmdBuffer, &vkCommandBufferBeginInfo); + vkCmdPipelineBarrier(tmpBufferDetails.cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT, 0, 0, nullptr, 2, memBarriers, 0, nullptr); VkBufferCopy vkBufferCopy; vkBufferCopy.srcOffset = 0; vkBufferCopy.dstOffset = 0; vkBufferCopy.size = oldSize; - vkCmdCopyBuffer(graphicsCommandBuffer, oldBuffer, grBinds.instanceBD.buffer, 1, &vkBufferCopy); + vkCmdCopyBuffer(tmpBufferDetails.cmdBuffer, oldBuffer, grBinds.instanceBD.buffer, 1, &vkBufferCopy); - vkEndCommandBuffer(graphicsCommandBuffer); + vkEndCommandBuffer(tmpBufferDetails.cmdBuffer); VkSubmitInfo submitInfo; submitInfo.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO; @@ -1322,13 +1319,14 @@ void EntityType_RolloverInstances(EntityType &et, CompGrBinds &grBinds) { submitInfo.pWaitSemaphores = nullptr; submitInfo.pWaitDstStageMask = nullptr; submitInfo.commandBufferCount = 1; - submitInfo.pCommandBuffers = &graphicsCommandBuffer; + submitInfo.pCommandBuffers = &tmpBufferDetails.cmdBuffer; submitInfo.signalSemaphoreCount = 0; submitInfo.pSignalSemaphores = nullptr; - vkQueueSubmit(graphicsQueue, 1, &submitInfo, nullptr); - vkQueueWaitIdle(graphicsQueue); - vkResetCommandBuffer(graphicsCommandBuffer, 0); + vkQueueSubmit(tmpBufferDetails.queue, 1, &submitInfo, nullptr); + vkQueueWaitIdle(tmpBufferDetails.queue); + vkResetCommandBuffer(tmpBufferDetails.cmdBuffer, 0); } + PKVK_EndBuffer(tmpBufferDetails); // cleanup vkDestroyBuffer(vkDevice, oldBuffer, vkAllocator); |
