BuildCommandTask::BuildCommandTask(const vkts::IUpdateThreadContext& updateContext, const vkts::IInitialResourcesSP& initialResources, const vkts::IGraphicsPipelineSP& pipeline, const vkts::ISceneSP& scene, const uint32_t& objectOffset, const uint32_t& objectStep) : ITask(), updateContext(updateContext), initialResources(initialResources), pipeline(pipeline), scene(scene), objectOffset(objectOffset), objectStep(objectStep), commandBufferInheritanceInfo(nullptr), extent{0, 0}, commandPool(nullptr), cmdBuffer(nullptr) { // This pool will contain secondary command buffers, which will be reseted. commandPool = vkts::commandPoolCreate(initialResources->getDevice()->getDevice(), VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT, initialResources->getQueue()->getQueueFamilyIndex()); if (!commandPool.get()) { vkts::logPrint(VKTS_LOG_ERROR, "BuildCommandTask: Could not get command pool."); } // cmdBuffer = vkts::commandBuffersCreate(initialResources->getDevice()->getDevice(), commandPool->getCmdPool(), VK_COMMAND_BUFFER_LEVEL_SECONDARY, 1); if (!cmdBuffer.get()) { vkts::logPrint(VKTS_LOG_ERROR, "BuildCommandTask: Could not create command buffer."); commandPool->destroy(); } }