| 662 | } |
| 663 | |
| 664 | void vkRenderer::createBuffer(VkDeviceSize size, VkBufferUsageFlags usage, VkMemoryPropertyFlags properties, |
| 665 | VkBuffer &buffer, VkDeviceMemory &bufferMemory) { |
| 666 | VkBufferCreateInfo bufferInfo = {}; |
| 667 | bufferInfo.sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO; |
| 668 | bufferInfo.size = size; |
| 669 | bufferInfo.usage = usage; |
| 670 | bufferInfo.sharingMode = VK_SHARING_MODE_EXCLUSIVE; |
| 671 | |
| 672 | if (vkCreateBuffer(device, &bufferInfo, nullptr, &buffer) != VK_SUCCESS) { |
| 673 | throw std::runtime_error("failed to create buffer!"); |
| 674 | } |
| 675 | |
| 676 | VkMemoryRequirements memRequirements; |
| 677 | vkGetBufferMemoryRequirements(device, buffer, &memRequirements); |
| 678 | |
| 679 | VkMemoryAllocateInfo allocInfo = {}; |
| 680 | allocInfo.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO; |
| 681 | allocInfo.allocationSize = memRequirements.size; |
| 682 | allocInfo.memoryTypeIndex = findMemoryType(memRequirements.memoryTypeBits, properties); |
| 683 | |
| 684 | if (vkAllocateMemory(device, &allocInfo, nullptr, &bufferMemory) != VK_SUCCESS) { |
| 685 | throw std::runtime_error("failed to allocate buffer memory!"); |
| 686 | } |
| 687 | |
| 688 | vkBindBufferMemory(device, buffer, bufferMemory, 0); |
| 689 | } |
| 690 | |
| 691 | void vkRenderer::copyBuffer(VkBuffer srcBuffer, VkBuffer dstBuffer, VkDeviceSize size) { |
| 692 | VkCommandBufferAllocateInfo allocInfo = {}; |
nothing calls this directly
no outgoing calls
no test coverage detected