Use allocation size returned by image memory requirements for font image (Fixes #217)
This commit is contained in:
parent
a104110b30
commit
81fc142053
2 changed files with 3 additions and 2 deletions
|
|
@ -197,7 +197,7 @@ public:
|
||||||
VkMemoryRequirements memReqs;
|
VkMemoryRequirements memReqs;
|
||||||
VkMemoryAllocateInfo allocInfo = vkTools::initializers::memoryAllocateInfo();
|
VkMemoryAllocateInfo allocInfo = vkTools::initializers::memoryAllocateInfo();
|
||||||
vkGetImageMemoryRequirements(vulkanDevice->logicalDevice, image, &memReqs);
|
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);
|
allocInfo.memoryTypeIndex = vulkanDevice->getMemoryType(memReqs.memoryTypeBits, VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT);
|
||||||
VK_CHECK_RESULT(vkAllocateMemory(vulkanDevice->logicalDevice, &allocInfo, nullptr, &imageMemory));
|
VK_CHECK_RESULT(vkAllocateMemory(vulkanDevice->logicalDevice, &allocInfo, nullptr, &imageMemory));
|
||||||
VK_CHECK_RESULT(vkBindImageMemory(vulkanDevice->logicalDevice, image, imageMemory, 0));
|
VK_CHECK_RESULT(vkBindImageMemory(vulkanDevice->logicalDevice, image, imageMemory, 0));
|
||||||
|
|
@ -212,7 +212,7 @@ public:
|
||||||
allocInfo.allocationSize));
|
allocInfo.allocationSize));
|
||||||
|
|
||||||
stagingBuffer.map();
|
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();
|
stagingBuffer.unmap();
|
||||||
|
|
||||||
// Copy to image
|
// Copy to image
|
||||||
|
|
|
||||||
|
|
@ -234,6 +234,7 @@ public:
|
||||||
|
|
||||||
uint8_t *data;
|
uint8_t *data;
|
||||||
VK_CHECK_RESULT(vkMapMemory(vulkanDevice->logicalDevice, stagingBuffer.memory, 0, allocInfo.allocationSize, 0, (void **)&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);
|
memcpy(data, &font24pixels[0][0], STB_FONT_WIDTH * STB_FONT_HEIGHT);
|
||||||
vkUnmapMemory(vulkanDevice->logicalDevice, stagingBuffer.memory);
|
vkUnmapMemory(vulkanDevice->logicalDevice, stagingBuffer.memory);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue