39 vk::BufferCreateInfo bufferInfo{};
41 bufferInfo.usage = vk::BufferUsageFlagBits::eVertexBuffer;
42 bufferInfo.sharingMode = vk::SharingMode::eExclusive;
43 buffer =
m_ctx->getDevice().createBuffer(bufferInfo);
44 vk::MemoryRequirements memRequirements =
m_ctx->getDevice().getBufferMemoryRequirements(buffer);
45 vk::MemoryAllocateInfo allocInfo{};
46 allocInfo.allocationSize = memRequirements.size;
47 allocInfo.memoryTypeIndex =
m_ctx->findMemoryType(memRequirements.memoryTypeBits,
48 vk::MemoryPropertyFlagBits::eHostVisible |
49 vk::MemoryPropertyFlagBits::eHostCoherent);
50 memory =
m_ctx->getDevice().allocateMemory(allocInfo);
51 m_ctx->getDevice().bindBufferMemory(buffer, memory, 0);
157 void* mappedData =
m_ctx->getDevice().mapMemory(
m_memories[0], 0, size, vk::MemoryMapFlags());
158 memcpy(mappedData, data, size);
163 uint32_t currentFrame =
m_ctx->currentFrameIndex();
167 void* mappedData =
m_ctx->getDevice().mapMemory(
m_memories[currentFrame], 0, size, vk::MemoryMapFlags());
168 memcpy(mappedData, data, size);
179 void* mappedData =
m_ctx->getDevice().mapMemory(
m_memories[0], 0, size, vk::MemoryMapFlags());
180 memcpy(mappedData, data, size);
185 uint32_t index = frameIndex %
m_ctx->maxFrameInFlight();
189 void* mappedData =
m_ctx->getDevice().mapMemory(
m_memories[index], 0, size, vk::MemoryMapFlags());
190 memcpy(mappedData, data, size);