void VulkanBase::prepare() { if (enableValidation) vkDebug::setupDebugging(instance, VK_DEBUG_REPORT_ERROR_BIT_EXT | VK_DEBUG_REPORT_WARNING_BIT_EXT, NULL); createCommandPool(); createSetupCommandBuffer(); setupSwapChain(); createCommandBuffers(); setupDepthStencil(); setupRenderPass(); createPipelineCache(); setupFrameBuffer(); flushSetupCommandBuffer(); // Recreate setup command buffer for derived class createSetupCommandBuffer(); // Create a simple texture loader class textureLoader = new vkTools::VulkanTextureLoader(physicalDevice, device, queue, cmdPool); }
bool VKRenderPass::Initialize(const std::string& fileName) { ////Load resources m_renderPassResourceHandle = Resource::RenderPass::GetHandleFromFileName(fileName); if (!m_renderPassResourceHandle.IsValid()) { HT_DEBUG_PRINTF("Error: Tried to load VKRenderPass but the resource handle was invalid!\n"); return false; } std::vector<Resource::RenderPass::InputTarget> inputTargets = m_renderPassResourceHandle->GetInputTargets(); std::vector<std::string> outputPaths = m_renderPassResourceHandle->GetOutputPaths(); //Create a structure to map set index to maps of binding indicies and render target handles std::map<uint32_t, std::map<uint32_t, VKRenderTargetHandle>> mappedInputTargets; for (size_t i = 0; i < inputTargets.size(); i++) { std::string targetPath = inputTargets[i].path; uint32_t targetSetIndex = inputTargets[i].set; uint32_t targetBindingIndex = inputTargets[i].binding; VKRenderTargetHandle inputTargetHandle = VKRenderTarget::GetHandle(targetPath, targetPath); mappedInputTargets[targetSetIndex][targetBindingIndex] = inputTargetHandle; } for (size_t i = 0; i < outputPaths.size(); i++) { IRenderTargetHandle outputTargetHandle = VKRenderTarget::GetHandle(outputPaths[i], outputPaths[i]).StaticCastHandle<IRenderTarget>(); m_outputRenderTargets.push_back(outputTargetHandle); } if (!setupAttachmentImages()) return false; if (!setupRenderPass()) return false; if (!setupFramebuffer()) return false; if (!setupDescriptorSets(mappedInputTargets)) return false; return true; }