summaryrefslogtreecommitdiff
path: root/src/font.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/font.cpp
parent4c241454f5698de3e6a5be07feb22ce930d63002 (diff)
pke: refactor: reduce image resource var ambiguity
Diffstat (limited to 'src/font.cpp')
-rw-r--r--src/font.cpp69
1 files changed, 35 insertions, 34 deletions
diff --git a/src/font.cpp b/src/font.cpp
index 59fb2af..f65866e 100644
--- a/src/font.cpp
+++ b/src/font.cpp
@@ -43,6 +43,7 @@ FontType* FontType_GetFonts(FontTypeIndex &count)
}
FontTypeIndex FontType_RegisterFont(pk_cstr title, AssetHandle fontTextureHandle, AssetHandle glyphsHandle) {
+ PKVK_TmpBufferDetails tmpBufferDetails{};
VkResult vkResult;
pk_arr arr_vert_mem_reqs;
memset(&arr_vert_mem_reqs, 0, sizeof(pk_arr));
@@ -241,12 +242,10 @@ FontTypeIndex FontType_RegisterFont(pk_cstr title, AssetHandle fontTextureHandle
/*
* Vulkan data transfer
*/
- VkBuffer transferBuffer;
- VkDeviceMemory transferMemory;
- void *deviceData;
- VkDeviceSize runningOffset, alignmentPadding;
+ VkDeviceSize runningOffset = 0;
+ VkDeviceSize alignmentPadding = 0;
// vert
- BeginTransferBuffer(combined_vert_mem_reqs.size, transferBuffer, transferMemory, deviceData);
+ PKVK_BeginBuffer(transferFamilyIndex, combined_vert_mem_reqs.size, tmpBufferDetails);
{
index = 0;
runningOffset = 0;
@@ -309,17 +308,17 @@ FontTypeIndex FontType_RegisterFont(pk_cstr title, AssetHandle fontTextureHandle
char *dstPtr = nullptr;
char *srcPtr = nullptr;
- dstPtr = static_cast<char *>(deviceData) + runningOffset;
+ dstPtr = static_cast<char *>(tmpBufferDetails.deviceData) + runningOffset;
srcPtr = reinterpret_cast<char *>(pkeIntrinsicsPlane.vert);
memcpy(dstPtr, srcPtr, sizeVert);
runningOffset += sizeVert;
- dstPtr = static_cast<char *>(deviceData) + runningOffset;
+ dstPtr = static_cast<char *>(tmpBufferDetails.deviceData) + runningOffset;
srcPtr = reinterpret_cast<char *>(pkeIntrinsicsPlane.uv);
memcpy(dstPtr, srcPtr, sizeUV);
runningOffset += sizeUV;
- dstPtr = static_cast<char *>(deviceData) + runningOffset;
+ dstPtr = static_cast<char *>(tmpBufferDetails.deviceData) + runningOffset;
srcPtr = reinterpret_cast<char *>(pkeIntrinsicsPlane.index);
memcpy(dstPtr, srcPtr, sizeIndex);
// runningOffset += sizeIndex;
@@ -330,7 +329,7 @@ FontTypeIndex FontType_RegisterFont(pk_cstr title, AssetHandle fontTextureHandle
// TODO consider single-use?
vkCommandBufferBeginInfo.flags = 0;
vkCommandBufferBeginInfo.pInheritanceInfo = nullptr;
- vkBeginCommandBuffer(transferCommandBuffer, &vkCommandBufferBeginInfo);
+ vkBeginCommandBuffer(tmpBufferDetails.cmdBuffer, &vkCommandBufferBeginInfo);
VkBufferCopy bufferCopys[expectedBufferCount];
for (VkDeviceSize i = 0; i < expectedBufferCount; ++i) {
bufferCopys[i].dstOffset = 0;
@@ -338,20 +337,20 @@ FontTypeIndex FontType_RegisterFont(pk_cstr title, AssetHandle fontTextureHandle
index = 0;
bufferCopys[index].srcOffset = offsetVert;
bufferCopys[index].size = sizeVert;
- vkCmdCopyBuffer(transferCommandBuffer, transferBuffer, ft->bindings.vertexBD.buffer, 1, &bufferCopys[index]);
+ vkCmdCopyBuffer(tmpBufferDetails.cmdBuffer, tmpBufferDetails.buffer, ft->bindings.vertexBD.buffer, 1, &bufferCopys[index]);
index+=1;
bufferCopys[index].srcOffset = offsetUV;
bufferCopys[index].size = sizeUV;
- vkCmdCopyBuffer(transferCommandBuffer, transferBuffer, ft->bindings.uvBD.buffer, 1, &bufferCopys[index]);
+ vkCmdCopyBuffer(tmpBufferDetails.cmdBuffer, tmpBufferDetails.buffer, ft->bindings.uvBD.buffer, 1, &bufferCopys[index]);
index+=1;
bufferCopys[index].srcOffset = offsetIndex;
bufferCopys[index].size = sizeIndex;
- vkCmdCopyBuffer(transferCommandBuffer, transferBuffer, ft->bindings.indexBD.buffer, 1, &bufferCopys[index]);
+ vkCmdCopyBuffer(tmpBufferDetails.cmdBuffer, tmpBufferDetails.buffer, ft->bindings.indexBD.buffer, 1, &bufferCopys[index]);
// index+=1;
- vkEndCommandBuffer(transferCommandBuffer);
+ vkEndCommandBuffer(tmpBufferDetails.cmdBuffer);
VkSubmitInfo submitInfo;
submitInfo.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO;
@@ -360,13 +359,13 @@ FontTypeIndex FontType_RegisterFont(pk_cstr title, AssetHandle fontTextureHandle
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, transferMemory);
+ PKVK_EndBuffer(tmpBufferDetails);
// set up instance buffer
{
ft->bindings.instanceBufferMaxCount = startingGlyphCount;
@@ -376,8 +375,8 @@ FontTypeIndex FontType_RegisterFont(pk_cstr title, AssetHandle fontTextureHandle
vkBindBufferMemory(vkDevice, ft->bindings.instanceBD.buffer, ft->deviceMemoryInst, 0);
}
// texture // transition image layout and copy to buffer
- BeginTransferBuffer(combined_texture_mem_reqs.size, transferBuffer, transferMemory, deviceData);
- memcpy(deviceData, txtr_bytes, combined_texture_mem_reqs.size);
+ PKVK_BeginBuffer(transferFamilyIndex, combined_texture_mem_reqs.size, tmpBufferDetails);
+ memcpy(tmpBufferDetails.deviceData, txtr_bytes, combined_texture_mem_reqs.size);
{
VkImageMemoryBarrier vkImageMemoryBarrier;
vkImageMemoryBarrier.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER;
@@ -404,9 +403,9 @@ FontTypeIndex FontType_RegisterFont(pk_cstr title, AssetHandle fontTextureHandle
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);
VkBufferImageCopy vkBufferImageCopy;
vkBufferImageCopy.bufferOffset = 0;
@@ -428,9 +427,9 @@ FontTypeIndex FontType_RegisterFont(pk_cstr title, AssetHandle fontTextureHandle
.height = static_cast<uint32_t>(txtr_y),
.depth = 1,
};
- vkCmdCopyBufferToImage(transferCommandBuffer, transferBuffer, ft->textureImage, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 1, &vkBufferImageCopy);
+ vkCmdCopyBufferToImage(tmpBufferDetails.cmdBuffer, tmpBufferDetails.buffer, ft->textureImage, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 1, &vkBufferImageCopy);
- vkEndCommandBuffer(transferCommandBuffer);
+ vkEndCommandBuffer(tmpBufferDetails.cmdBuffer);
VkSubmitInfo submitInfo;
submitInfo.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO;
@@ -439,14 +438,15 @@ FontTypeIndex FontType_RegisterFont(pk_cstr title, AssetHandle fontTextureHandle
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(transferBuffer, transferMemory);
+ PKVK_EndBuffer(tmpBufferDetails);
+ PKVK_BeginBuffer(graphicsFamilyIndex, 0, tmpBufferDetails);
{
VkImageMemoryBarrier vkImageMemoryBarrier;
vkImageMemoryBarrier.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER;
@@ -473,11 +473,11 @@ FontTypeIndex FontType_RegisterFont(pk_cstr title, AssetHandle fontTextureHandle
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;
@@ -486,12 +486,13 @@ FontTypeIndex FontType_RegisterFont(pk_cstr title, AssetHandle fontTextureHandle
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);
}
+ PKVK_EndBuffer(tmpBufferDetails);
/*
* Vulkan descriptor sets