|
6 | 6 | /* By: maldavid <kbz_8.dev@akel-engine.com> +#+ +:+ +#+ */
|
7 | 7 | /* +#+#+#+#+#+ +#+ */
|
8 | 8 | /* Created: 2022/10/08 18:55:57 by maldavid #+# #+# */
|
9 |
| -/* Updated: 2023/11/14 07:17:06 by maldavid ### ########.fr */ |
| 9 | +/* Updated: 2023/11/14 07:35:22 by maldavid ### ########.fr */ |
10 | 10 | /* */
|
11 | 11 | /* ************************************************************************** */
|
12 | 12 |
|
13 | 13 | #include "vk_buffer.h"
|
14 | 14 | #include <renderer/command/vk_cmd_pool.h>
|
| 15 | +#include <renderer/command/vk_cmd_buffer.h> |
15 | 16 | #include <renderer/core/render_core.h>
|
16 | 17 | #include <vma.h>
|
17 | 18 | #include <cstring>
|
@@ -89,39 +90,19 @@ namespace mlx
|
89 | 90 |
|
90 | 91 | CmdPool cmdpool;
|
91 | 92 | cmdpool.init();
|
92 |
| - auto device = Render_Core::get().getDevice().get(); |
| 93 | + CmdBuffer cmdBuffer; |
| 94 | + cmdBuffer.init(&cmdpool); |
93 | 95 |
|
94 |
| - VkCommandBufferAllocateInfo allocInfo{}; |
95 |
| - allocInfo.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO; |
96 |
| - allocInfo.level = VK_COMMAND_BUFFER_LEVEL_PRIMARY; |
97 |
| - allocInfo.commandPool = cmdpool.get(); |
98 |
| - allocInfo.commandBufferCount = 1; |
99 |
| - |
100 |
| - VkCommandBuffer commandBuffer; |
101 |
| - vkAllocateCommandBuffers(device, &allocInfo, &commandBuffer); |
102 |
| - |
103 |
| - VkCommandBufferBeginInfo beginInfo{}; |
104 |
| - beginInfo.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO; |
105 |
| - beginInfo.flags = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT; |
106 |
| - |
107 |
| - vkBeginCommandBuffer(commandBuffer, &beginInfo); |
| 96 | + cmdBuffer.beginRecord(VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT); |
108 | 97 |
|
109 | 98 | VkBufferCopy copyRegion{};
|
110 | 99 | copyRegion.size = _size;
|
111 |
| - vkCmdCopyBuffer(commandBuffer, _buffer, newBuffer._buffer, 1, ©Region); |
112 |
| - |
113 |
| - vkEndCommandBuffer(commandBuffer); |
114 |
| - |
115 |
| - VkSubmitInfo submitInfo{}; |
116 |
| - submitInfo.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO; |
117 |
| - submitInfo.commandBufferCount = 1; |
118 |
| - submitInfo.pCommandBuffers = &commandBuffer; |
119 |
| - |
120 |
| - auto graphicsQueue = Render_Core::get().getQueue().getGraphic(); |
| 100 | + vkCmdCopyBuffer(cmdBuffer.get(), _buffer, newBuffer._buffer, 1, ©Region); |
121 | 101 |
|
122 |
| - vkQueueSubmit(graphicsQueue, 1, &submitInfo, VK_NULL_HANDLE); |
123 |
| - vkQueueWaitIdle(graphicsQueue); |
| 102 | + cmdBuffer.endRecord(); |
| 103 | + cmdBuffer.submitIdle(); |
124 | 104 |
|
| 105 | + cmdBuffer.destroy(); |
125 | 106 | cmdpool.destroy();
|
126 | 107 |
|
127 | 108 | this->swap(newBuffer);
|
|
0 commit comments