| 689 | } |
| 690 | |
| 691 | void vkRenderer::copyBuffer(VkBuffer srcBuffer, VkBuffer dstBuffer, VkDeviceSize size) { |
| 692 | VkCommandBufferAllocateInfo allocInfo = {}; |
| 693 | allocInfo.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO; |
| 694 | allocInfo.level = VK_COMMAND_BUFFER_LEVEL_PRIMARY; |
| 695 | allocInfo.commandPool = commandPool; |
| 696 | allocInfo.commandBufferCount = 1; |
| 697 | |
| 698 | VkCommandBuffer commandBuffer; |
| 699 | vkAllocateCommandBuffers(device, &allocInfo, &commandBuffer); |
| 700 | |
| 701 | VkCommandBufferBeginInfo beginInfo = {}; |
| 702 | beginInfo.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO; |
| 703 | beginInfo.flags = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT; |
| 704 | |
| 705 | vkBeginCommandBuffer(commandBuffer, &beginInfo); |
| 706 | |
| 707 | VkBufferCopy copyRegion = {}; |
| 708 | copyRegion.size = size; |
| 709 | vkCmdCopyBuffer(commandBuffer, srcBuffer, dstBuffer, 1, ©Region); |
| 710 | |
| 711 | vkEndCommandBuffer(commandBuffer); |
| 712 | |
| 713 | VkSubmitInfo submitInfo = {}; |
| 714 | submitInfo.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO; |
| 715 | submitInfo.commandBufferCount = 1; |
| 716 | submitInfo.pCommandBuffers = &commandBuffer; |
| 717 | |
| 718 | vkQueueSubmit(graphicsQueue, 1, &submitInfo, VK_NULL_HANDLE); |
| 719 | vkQueueWaitIdle(graphicsQueue); |
| 720 | |
| 721 | vkFreeCommandBuffers(device, commandPool, 1, &commandBuffer); |
| 722 | } |
| 723 | |
| 724 | uint32_t vkRenderer::findMemoryType(uint32_t typeFilter, VkMemoryPropertyFlags properties) { |
| 725 | VkPhysicalDeviceMemoryProperties memProperties; |
nothing calls this directly
no outgoing calls
no test coverage detected