diff options
| author | Jonathan Bradley <jcb@pikum.xyz> | 2025-02-07 06:49:32 -0500 |
|---|---|---|
| committer | Jonathan Bradley <jcb@pikum.xyz> | 2025-02-07 06:49:32 -0500 |
| commit | 762651db7a37b386e50586ede2c8c6db67a0b262 (patch) | |
| tree | 311b3215d66f6289a6714557fe0b862c071f0776 /src/font.cpp | |
| parent | aab4addf8169d8f61a0cc6389079c65c6d95ee7f (diff) | |
pke: FontType minor restructure
Diffstat (limited to 'src/font.cpp')
| -rw-r--r-- | src/font.cpp | 88 |
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; } |
