#include <volk.h>
#include "backend/vulkan/utils.h"
#include "backend/vulkan/vk_api.h"
#include "backend/vulkan/vk_conversion.h"
namespace rhi {
using namespace vk;
bool create_cmd_pool(Device &device, const CmdPoolDesc &desc, CmdPool &pool) {
VkCommandPoolCreateInfo pool_ci{};
pool_ci.sType = VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO;
pool_ci.flags = vk::to_vk_cmd_pool_flags(desc.flags);
pool_ci.queueFamilyIndex = desc.queue_family_index;
VkCommandPool vk_pool;
VK_CHECK(vkCreateCommandPool(device.logical, &pool_ci, nullptr, &vk_pool));
pool.handle = vk_pool;
return true;
}
void destroy_cmd_pool(Device &device, CmdPool &pool) {
if (pool.handle != VK_NULL_HANDLE) {
vkDestroyCommandPool(device.logical, pool.handle, nullptr);
}
pool = {};
}
void reset_cmd_pool(Device &device, CmdPool &pool, u32 flags) {
VK_CHECK(vkResetCommandPool(device.logical, pool.handle, flags));
}
} // namespace rhi