summaryrefslogtreecommitdiff
path: root/src/font.cpp
diff options
context:
space:
mode:
authorJonathan Bradley <jcb@pikum.xyz>2025-02-07 06:49:32 -0500
committerJonathan Bradley <jcb@pikum.xyz>2025-02-07 06:49:32 -0500
commit762651db7a37b386e50586ede2c8c6db67a0b262 (patch)
tree311b3215d66f6289a6714557fe0b862c071f0776 /src/font.cpp
parentaab4addf8169d8f61a0cc6389079c65c6d95ee7f (diff)
pke: FontType minor restructure
Diffstat (limited to 'src/font.cpp')
-rw-r--r--src/font.cpp88
1 files changed, 44 insertions, 44 deletions
diff --git a/src/font.cpp b/src/font.cpp
index ee94471..efed570 100644
--- a/src/font.cpp
+++ b/src/font.cpp
@@ -314,7 +314,7 @@ FontTypeIndex FontType_RegisterFont(pk_cstr title, AssetHandle fontTextureHandle
CalculateCombinedMemReqs(arr_vert_mem_reqs.next, (VkMemoryRequirements*)arr_vert_mem_reqs.data, combined_vert_mem_reqs);
vkMemoryAllocateInfo.allocationSize = combined_vert_mem_reqs.size;
vkMemoryAllocateInfo.memoryTypeIndex = FindMemoryTypeIndex(combined_vert_mem_reqs.memoryTypeBits, VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT);
- vkAllocateMemory(vkDevice, &vkMemoryAllocateInfo, vkAllocator, &ft->deviceMemoryVert);
+ vkAllocateMemory(vkDevice, &vkMemoryAllocateInfo, vkAllocator, &ft->gr.deviceMemoryVert);
// texture
CalculateCombinedMemReqs(arr_texture_mem_reqs.next, (VkMemoryRequirements*)arr_texture_mem_reqs.data, combined_texture_mem_reqs);
@@ -324,7 +324,7 @@ FontTypeIndex FontType_RegisterFont(pk_cstr title, AssetHandle fontTextureHandle
if (vkMemoryAllocateInfo.memoryTypeIndex == 0) {
vkMemoryAllocateInfo.memoryTypeIndex = FindMemoryTypeIndex(combined_texture_mem_reqs.memoryTypeBits, 0);
}
- vkAllocateMemory(vkDevice, &vkMemoryAllocateInfo, vkAllocator, &ft->deviceMemoryTexture);
+ vkAllocateMemory(vkDevice, &vkMemoryAllocateInfo, vkAllocator, &ft->gr.deviceMemoryTexture);
/*
* Vulkan data transfer
@@ -347,7 +347,7 @@ FontTypeIndex FontType_RegisterFont(pk_cstr title, AssetHandle fontTextureHandle
bufferCI.size = sizeVert;
bufferCI.usage = VK_BUFFER_USAGE_TRANSFER_DST_BIT | VK_BUFFER_USAGE_VERTEX_BUFFER_BIT;
vkCreateBuffer(vkDevice, &bufferCI, vkAllocator, &ft->bindings.vertexBD.buffer);
- vkBindBufferMemory(vkDevice, ft->bindings.vertexBD.buffer, ft->deviceMemoryVert, offsetVert);
+ vkBindBufferMemory(vkDevice, ft->bindings.vertexBD.buffer, ft->gr.deviceMemoryVert, offsetVert);
runningOffset += sizeVert;
index += 1;
@@ -361,7 +361,7 @@ FontTypeIndex FontType_RegisterFont(pk_cstr title, AssetHandle fontTextureHandle
sizeUV += alignmentPadding;
bufferCI.size = sizeUV;
vkCreateBuffer(vkDevice, &bufferCI, vkAllocator, &ft->bindings.uvBD.buffer);
- vkBindBufferMemory(vkDevice, ft->bindings.uvBD.buffer, ft->deviceMemoryVert, offsetUV);
+ vkBindBufferMemory(vkDevice, ft->bindings.uvBD.buffer, ft->gr.deviceMemoryVert, offsetUV);
runningOffset += sizeUV;
index += 1;
@@ -375,7 +375,7 @@ FontTypeIndex FontType_RegisterFont(pk_cstr title, AssetHandle fontTextureHandle
sizeAtlasSize += alignmentPadding;
bufferCI.size = sizeAtlasSize;
vkCreateBuffer(vkDevice, &bufferCI, vkAllocator, &ft->bindings.atlasSizeBD.buffer);
- vkBindBufferMemory(vkDevice, ft->bindings.atlasSizeBD.buffer, ft->deviceMemoryVert, offsetAtlasSize);
+ vkBindBufferMemory(vkDevice, ft->bindings.atlasSizeBD.buffer, ft->gr.deviceMemoryVert, offsetAtlasSize);
runningOffset += sizeAtlasSize;
index += 1;
@@ -397,7 +397,7 @@ FontTypeIndex FontType_RegisterFont(pk_cstr title, AssetHandle fontTextureHandle
bufferCI.size = sizeIndex;
bufferCI.usage = VK_BUFFER_USAGE_TRANSFER_DST_BIT | VK_BUFFER_USAGE_INDEX_BUFFER_BIT;
vkCreateBuffer(vkDevice, &bufferCI, vkAllocator, &ft->bindings.indexBD.buffer);
- vkBindBufferMemory(vkDevice, ft->bindings.indexBD.buffer, ft->deviceMemoryVert, offsetIndex);
+ vkBindBufferMemory(vkDevice, ft->bindings.indexBD.buffer, ft->gr.deviceMemoryVert, offsetIndex);
runningOffset += sizeIndex;
// index += 1;
@@ -493,7 +493,7 @@ FontTypeIndex FontType_RegisterFont(pk_cstr title, AssetHandle fontTextureHandle
vkImageViewCreateInfo.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO;
vkImageViewCreateInfo.pNext = nullptr;
vkImageViewCreateInfo.flags = 0;
- vkImageViewCreateInfo.image = ft->textureImage;
+ vkImageViewCreateInfo.image = ft->gr.textureImage;
vkImageViewCreateInfo.viewType = VK_IMAGE_VIEW_TYPE_2D;
vkImageViewCreateInfo.format = imageCreateInfo.format;
vkImageViewCreateInfo.components = VkComponentMapping {
@@ -504,13 +504,13 @@ FontTypeIndex FontType_RegisterFont(pk_cstr title, AssetHandle fontTextureHandle
};
vkImageViewCreateInfo.subresourceRange = vkImageSubresourceRange;
- vkResult = vkCreateImage(vkDevice, &imageCreateInfo, vkAllocator, &ft->textureImage);
+ vkResult = vkCreateImage(vkDevice, &imageCreateInfo, vkAllocator, &ft->gr.textureImage);
assert(vkResult == VK_SUCCESS);
- vkResult = vkBindImageMemory(vkDevice, ft->textureImage, ft->deviceMemoryTexture, 0);
+ vkResult = vkBindImageMemory(vkDevice, ft->gr.textureImage, ft->gr.deviceMemoryTexture, 0);
assert(vkResult == VK_SUCCESS);
- vkImageViewCreateInfo.image = ft->textureImage;
- vkResult = vkCreateImageView(vkDevice, &vkImageViewCreateInfo, vkAllocator, &ft->textureImageView);
+ vkImageViewCreateInfo.image = ft->gr.textureImage;
+ vkResult = vkCreateImageView(vkDevice, &vkImageViewCreateInfo, vkAllocator, &ft->gr.textureImageView);
assert(vkResult == VK_SUCCESS);
VkImageMemoryBarrier vkImageMemoryBarrier;
@@ -522,7 +522,7 @@ FontTypeIndex FontType_RegisterFont(pk_cstr title, AssetHandle fontTextureHandle
vkImageMemoryBarrier.newLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
vkImageMemoryBarrier.srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
vkImageMemoryBarrier.dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
- vkImageMemoryBarrier.image = ft->textureImage;
+ vkImageMemoryBarrier.image = ft->gr.textureImage;
vkImageMemoryBarrier.subresourceRange = VkImageSubresourceRange {
.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT,
.baseMipLevel = 0,
@@ -562,7 +562,7 @@ FontTypeIndex FontType_RegisterFont(pk_cstr title, AssetHandle fontTextureHandle
.height = static_cast<uint32_t>(txtr_y),
.depth = 1,
};
- vkCmdCopyBufferToImage(tmpBufferDetails.cmdBuffer, tmpBufferDetails.buffer, ft->textureImage, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 1, &vkBufferImageCopy);
+ vkCmdCopyBufferToImage(tmpBufferDetails.cmdBuffer, tmpBufferDetails.buffer, ft->gr.textureImage, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 1, &vkBufferImageCopy);
vkEndCommandBuffer(tmpBufferDetails.cmdBuffer);
@@ -592,7 +592,7 @@ FontTypeIndex FontType_RegisterFont(pk_cstr title, AssetHandle fontTextureHandle
vkImageMemoryBarrier.newLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL;
vkImageMemoryBarrier.srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
vkImageMemoryBarrier.dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
- vkImageMemoryBarrier.image = ft->textureImage;
+ vkImageMemoryBarrier.image = ft->gr.textureImage;
vkImageMemoryBarrier.subresourceRange = VkImageSubresourceRange {
.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT,
.baseMipLevel = 0,
@@ -645,7 +645,7 @@ FontTypeIndex FontType_RegisterFont(pk_cstr title, AssetHandle fontTextureHandle
vkDescriptorPoolCreateInfo.pPoolSizes = descriptorPoolSizes;
// consider making me a global pool
- vkResult = vkCreateDescriptorPool(vkDevice, &vkDescriptorPoolCreateInfo, vkAllocator, &ft->vkDescriptorPool);
+ vkResult = vkCreateDescriptorPool(vkDevice, &vkDescriptorPoolCreateInfo, vkAllocator, &ft->gr.vkDescriptorPool);
assert(vkResult == VK_SUCCESS);
VkDescriptorSetLayout *descriptorSets = pk_new<VkDescriptorSetLayout>(swapchainLength);
@@ -655,15 +655,15 @@ FontTypeIndex FontType_RegisterFont(pk_cstr title, AssetHandle fontTextureHandle
VkDescriptorSetAllocateInfo vkDescriptorSetAllocateInfo;
vkDescriptorSetAllocateInfo.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO;
vkDescriptorSetAllocateInfo.pNext = nullptr;
- vkDescriptorSetAllocateInfo.descriptorPool = ft->vkDescriptorPool;
+ vkDescriptorSetAllocateInfo.descriptorPool = ft->gr.vkDescriptorPool;
vkDescriptorSetAllocateInfo.descriptorSetCount = swapchainLength;
vkDescriptorSetAllocateInfo.pSetLayouts = descriptorSets;
- ft->vkDescriptorSets = pk_new<VkDescriptorSet>(swapchainLength);
+ ft->gr.vkDescriptorSets = pk_new<VkDescriptorSet>(swapchainLength);
for (long i = 0; i < swapchainLength; ++i) {
- ft->vkDescriptorSets[i] = VkDescriptorSet{};
+ ft->gr.vkDescriptorSets[i] = VkDescriptorSet{};
}
- vkResult = vkAllocateDescriptorSets(vkDevice, &vkDescriptorSetAllocateInfo, ft->vkDescriptorSets);
+ vkResult = vkAllocateDescriptorSets(vkDevice, &vkDescriptorSetAllocateInfo, ft->gr.vkDescriptorSets);
pk_delete<VkDescriptorSetLayout>(descriptorSets, swapchainLength);
assert(vkResult == VK_SUCCESS);
@@ -683,7 +683,7 @@ FontTypeIndex FontType_RegisterFont(pk_cstr title, AssetHandle fontTextureHandle
VkDescriptorImageInfo textureDescriptorInfo;
textureDescriptorInfo.sampler = global_sampler;
- textureDescriptorInfo.imageView = ft->textureImageView;
+ textureDescriptorInfo.imageView = ft->gr.textureImageView;
textureDescriptorInfo.imageLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL;
VkDescriptorBufferInfo *vkDescriptorBufferInfo = pk_new<VkDescriptorBufferInfo>(swapchainLength);
@@ -694,7 +694,7 @@ FontTypeIndex FontType_RegisterFont(pk_cstr title, AssetHandle fontTextureHandle
vkDescriptorBufferInfo[i].range = sizeof(UniformBufferObject);
writeDescriptorSets[i].pImageInfo = &textureDescriptorInfo;
- writeDescriptorSets[i].dstSet = ft->vkDescriptorSets[i];
+ writeDescriptorSets[i].dstSet = ft->gr.vkDescriptorSets[i];
}
vkUpdateDescriptorSets(vkDevice, swapchainLength, writeDescriptorSets, 0, nullptr);
@@ -710,16 +710,16 @@ FontTypeIndex FontType_RegisterFont(pk_cstr title, AssetHandle fontTextureHandle
void FontType_Unload(FontTypeIndex idx) {
FontType *ft = &ftd.arr_ft[(FontTypeIndex_T)idx];
- if (ft->vkDescriptorSets != VK_NULL_HANDLE && ft->vkDescriptorPool != VK_NULL_HANDLE) {
+ if (ft->gr.vkDescriptorSets != VK_NULL_HANDLE && ft->gr.vkDescriptorPool != VK_NULL_HANDLE) {
// 2023-09-27 - JCB (copied from entities.cpp)
// We are not setting the pool flag for allowing freeing descriptor sets
// so all we need to do is destroy the pool
// If we switch to a global pool, we will need to free here, and
// destroy the pool outside of this loop
- vkDestroyDescriptorPool(vkDevice, ft->vkDescriptorPool, vkAllocator);
- pk_delete<VkDescriptorSet>(ft->vkDescriptorSets, swapchainLength);
- ft->vkDescriptorSets = CAFE_BABE(VkDescriptorSet);
- ft->vkDescriptorPool = VK_NULL_HANDLE;
+ vkDestroyDescriptorPool(vkDevice, ft->gr.vkDescriptorPool, vkAllocator);
+ pk_delete<VkDescriptorSet>(ft->gr.vkDescriptorSets, swapchainLength);
+ ft->gr.vkDescriptorSets = CAFE_BABE(VkDescriptorSet);
+ ft->gr.vkDescriptorPool = VK_NULL_HANDLE;
}
if (ft->bindings.vertexBD.buffer != VK_NULL_HANDLE)
@@ -758,25 +758,25 @@ void FontType_Unload(FontTypeIndex idx) {
ft->bindings.instanceCounter = 0;
ft->bindings.instanceBD.offsets[0] = 0;
- if (ft->textureImageView != VK_NULL_HANDLE)
- vkDestroyImageView(vkDevice, ft->textureImageView, vkAllocator);
- ft->textureImageView = VK_NULL_HANDLE;
+ if (ft->gr.textureImageView != VK_NULL_HANDLE)
+ vkDestroyImageView(vkDevice, ft->gr.textureImageView, vkAllocator);
+ ft->gr.textureImageView = VK_NULL_HANDLE;
- if (ft->textureImage != VK_NULL_HANDLE)
- vkDestroyImage(vkDevice, ft->textureImage, vkAllocator);
- ft->textureImage = VK_NULL_HANDLE;
+ if (ft->gr.textureImage != VK_NULL_HANDLE)
+ vkDestroyImage(vkDevice, ft->gr.textureImage, vkAllocator);
+ ft->gr.textureImage = VK_NULL_HANDLE;
- if (ft->deviceMemoryInst != VK_NULL_HANDLE)
- vkFreeMemory(vkDevice, ft->deviceMemoryInst, vkAllocator);
- ft->deviceMemoryInst = VK_NULL_HANDLE;
+ if (ft->gr.deviceMemoryInst != VK_NULL_HANDLE)
+ vkFreeMemory(vkDevice, ft->gr.deviceMemoryInst, vkAllocator);
+ ft->gr.deviceMemoryInst = VK_NULL_HANDLE;
- if (ft->deviceMemoryVert != VK_NULL_HANDLE)
- vkFreeMemory(vkDevice, ft->deviceMemoryVert, vkAllocator);
- ft->deviceMemoryVert = VK_NULL_HANDLE;
+ if (ft->gr.deviceMemoryVert != VK_NULL_HANDLE)
+ vkFreeMemory(vkDevice, ft->gr.deviceMemoryVert, vkAllocator);
+ ft->gr.deviceMemoryVert = VK_NULL_HANDLE;
- if (ft->deviceMemoryTexture != VK_NULL_HANDLE)
- vkFreeMemory(vkDevice, ft->deviceMemoryTexture, vkAllocator);
- ft->deviceMemoryTexture = VK_NULL_HANDLE;
+ if (ft->gr.deviceMemoryTexture != VK_NULL_HANDLE)
+ vkFreeMemory(vkDevice, ft->gr.deviceMemoryTexture, vkAllocator);
+ ft->gr.deviceMemoryTexture = VK_NULL_HANDLE;
if (ft->title.reserved != 0 && ft->title.val != nullptr) {
pk_delete<char>(ft->title.val, ft->title.reserved);
@@ -932,10 +932,10 @@ FontRender FontType_AddStringRender(FontTypeIndex idx_ft, pk_cstr cstr) {
PKVK_EndBuffer(tmpBufferDetails, PKVK_TmpBufferFlags_NONE);
if (ft->bindings.instanceBD.buffer != VK_NULL_HANDLE)
vkDestroyBuffer(vkDevice, ft->bindings.instanceBD.buffer, vkAllocator);
- if (ft->deviceMemoryInst != VK_NULL_HANDLE)
- vkFreeMemory(vkDevice, ft->deviceMemoryInst, vkAllocator);
+ if (ft->gr.deviceMemoryInst != VK_NULL_HANDLE)
+ vkFreeMemory(vkDevice, ft->gr.deviceMemoryInst, vkAllocator);
- ft->deviceMemoryInst = new_memory;
+ ft->gr.deviceMemoryInst = new_memory;
ft->bindings.instanceBD.buffer = newBuffer;
ft->bindings.instanceCounter = item_count_new;
}