diff --git a/base/vulkantextoverlay.hpp b/base/vulkantextoverlay.hpp index 7aecd00c..08cbcda8 100644 --- a/base/vulkantextoverlay.hpp +++ b/base/vulkantextoverlay.hpp @@ -197,7 +197,7 @@ public: VkMemoryRequirements memReqs; VkMemoryAllocateInfo allocInfo = vkTools::initializers::memoryAllocateInfo(); vkGetImageMemoryRequirements(vulkanDevice->logicalDevice, image, &memReqs); - allocInfo.allocationSize = STB_FONT_WIDTH * STB_NUM_CHARS; + allocInfo.allocationSize = memReqs.size; allocInfo.memoryTypeIndex = vulkanDevice->getMemoryType(memReqs.memoryTypeBits, VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT); VK_CHECK_RESULT(vkAllocateMemory(vulkanDevice->logicalDevice, &allocInfo, nullptr, &imageMemory)); VK_CHECK_RESULT(vkBindImageMemory(vulkanDevice->logicalDevice, image, imageMemory, 0)); @@ -212,7 +212,7 @@ public: allocInfo.allocationSize)); stagingBuffer.map(); - memcpy(stagingBuffer.mapped, &font24pixels[0][0], STB_FONT_WIDTH * STB_FONT_HEIGHT); + memcpy(stagingBuffer.mapped, &font24pixels[0][0], STB_FONT_WIDTH * STB_FONT_HEIGHT); // Only one channel, so data size = W * H (*R8) stagingBuffer.unmap(); // Copy to image diff --git a/textoverlay/textoverlay.cpp b/textoverlay/textoverlay.cpp index ddc2d5fb..e0f51550 100644 --- a/textoverlay/textoverlay.cpp +++ b/textoverlay/textoverlay.cpp @@ -234,6 +234,7 @@ public: uint8_t *data; VK_CHECK_RESULT(vkMapMemory(vulkanDevice->logicalDevice, stagingBuffer.memory, 0, allocInfo.allocationSize, 0, (void **)&data)); + // Size of the font texture is WIDTH * HEIGHT * 1 byte (only one channel) memcpy(data, &font24pixels[0][0], STB_FONT_WIDTH * STB_FONT_HEIGHT); vkUnmapMemory(vulkanDevice->logicalDevice, stagingBuffer.memory);