| 1092 | // <- |
| 1093 | |
| 1094 | void RenderSystem::initVkCommandPools() |
| 1095 | { |
| 1096 | _INTR_LOG_INFO("Creating Vulkan command pools..."); |
| 1097 | |
| 1098 | // Prim. command pool |
| 1099 | { |
| 1100 | VkCommandPoolCreateInfo commandPoolCreateInfo = {}; |
| 1101 | { |
| 1102 | commandPoolCreateInfo.sType = VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO; |
| 1103 | commandPoolCreateInfo.pNext = nullptr; |
| 1104 | commandPoolCreateInfo.queueFamilyIndex = |
| 1105 | _vkGraphicsAndComputeQueueFamilyIndex; |
| 1106 | commandPoolCreateInfo.flags = |
| 1107 | VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT; |
| 1108 | } |
| 1109 | |
| 1110 | VkResult result = vkCreateCommandPool(_vkDevice, &commandPoolCreateInfo, |
| 1111 | nullptr, &_vkPrimaryCommandPool); |
| 1112 | _INTR_VK_CHECK_RESULT(result); |
| 1113 | } |
| 1114 | |
| 1115 | // Second. command pool |
| 1116 | { |
| 1117 | const uint32_t actualSecondCmdPoolCount = |
| 1118 | _INTR_VK_SECONDARY_COMMAND_BUFFER_COUNT; |
| 1119 | _vkSecondaryCommandPools.resize(actualSecondCmdPoolCount); |
| 1120 | |
| 1121 | for (uint32_t i = 0u; i < actualSecondCmdPoolCount; ++i) |
| 1122 | { |
| 1123 | VkCommandPoolCreateInfo commandPoolCreateInfo = {}; |
| 1124 | { |
| 1125 | commandPoolCreateInfo.sType = |
| 1126 | VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO; |
| 1127 | commandPoolCreateInfo.pNext = nullptr; |
| 1128 | commandPoolCreateInfo.queueFamilyIndex = |
| 1129 | _vkGraphicsAndComputeQueueFamilyIndex; |
| 1130 | commandPoolCreateInfo.flags = |
| 1131 | VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT; |
| 1132 | } |
| 1133 | |
| 1134 | VkResult result = |
| 1135 | vkCreateCommandPool(_vkDevice, &commandPoolCreateInfo, nullptr, |
| 1136 | &_vkSecondaryCommandPools[i]); |
| 1137 | _INTR_VK_CHECK_RESULT(result); |
| 1138 | } |
| 1139 | } |
| 1140 | } |
| 1141 | |
| 1142 | // <- |
| 1143 | |