From c68da7d6968b846f179697489ca391abb54cacab Mon Sep 17 00:00:00 2001 From: Sebastian Gaida <sebastian-gaida@gmx.de> Date: Tue, 14 Sep 2021 12:27:13 +0200 Subject: [PATCH] [#105] fix indexIndirect recording --- include/vkcv/Core.hpp | 19 ++++++++++--------- projects/draw_indirect/src/main.cpp | 3 ++- src/vkcv/Core.cpp | 13 +++++++------ 3 files changed, 19 insertions(+), 16 deletions(-) diff --git a/include/vkcv/Core.hpp b/include/vkcv/Core.hpp index 9024b846..7e46ab57 100644 --- a/include/vkcv/Core.hpp +++ b/include/vkcv/Core.hpp @@ -331,15 +331,16 @@ namespace vkcv const std::vector<ImageHandle> &renderTargets, const WindowHandle &windowHandle); - void recordIndexedIndirectDrawcallsToCmdStream( - const CommandStreamHandle cmdStreamHandle, - const PassHandle renderpassHandle, - const PipelineHandle pipelineHandle, - const PushConstants &pushConstantData, - const vkcv::Mesh &compiledMesh, - const std::vector<ImageHandle> &renderTargets, - const vkcv::Buffer<vk::DrawIndexedIndirectCommand> &indirectBuffer, - const uint32_t drawCount); + void Core::recordIndexedIndirectDrawcallsToCmdStream( + const CommandStreamHandle cmdStreamHandle, + const PassHandle renderpassHandle, + const GraphicsPipelineHandle &pipelineHandle, + const PushConstants &pushConstantData, + const vkcv::Mesh &compiledMesh, + const std::vector<ImageHandle> &renderTargets, + const vkcv::Buffer<vk::DrawIndexedIndirectCommand> &indirectBuffer, + const uint32_t drawCount, + const WindowHandle &windowHandle); void recordMeshShaderDrawcalls( const CommandStreamHandle& cmdStreamHandle, diff --git a/projects/draw_indirect/src/main.cpp b/projects/draw_indirect/src/main.cpp index 03dddb68..5ab0c09e 100644 --- a/projects/draw_indirect/src/main.cpp +++ b/projects/draw_indirect/src/main.cpp @@ -398,7 +398,8 @@ int main(int argc, const char** argv) { mesh, renderTargets, indirectBuffer, - 1); + 1, + windowHandle); core.prepareSwapchainImageForPresent(cmdStream); core.submitCommandStream(cmdStream); diff --git a/src/vkcv/Core.cpp b/src/vkcv/Core.cpp index 3fd40662..074daac4 100644 --- a/src/vkcv/Core.cpp +++ b/src/vkcv/Core.cpp @@ -333,18 +333,19 @@ namespace vkcv void Core::recordIndexedIndirectDrawcallsToCmdStream( const CommandStreamHandle cmdStreamHandle, const PassHandle renderpassHandle, - const PipelineHandle pipelineHandle, + const GraphicsPipelineHandle &pipelineHandle, const PushConstants &pushConstantData, const vkcv::Mesh &compiledMesh, const std::vector<ImageHandle> &renderTargets, const vkcv::Buffer<vk::DrawIndexedIndirectCommand> &indirectBuffer, - const uint32_t drawCount) { + const uint32_t drawCount, + const WindowHandle &windowHandle) { if (m_currentSwapchainImageIndex == std::numeric_limits<uint32_t>::max()) { return; } - - const std::array<uint32_t, 2> widthHeight = getWidthHeightFromRenderTargets(renderTargets, m_swapchain, + SwapchainHandle swapchainHandle = m_WindowManager->getWindow(windowHandle).getSwapchainHandle(); + const std::array<uint32_t, 2> widthHeight = getWidthHeightFromRenderTargets(renderTargets, m_SwapchainManager->getSwapchain(swapchainHandle), *m_ImageManager); const auto width = widthHeight[0]; const auto height = widthHeight[1]; @@ -359,7 +360,7 @@ namespace vkcv vk::CommandBuffer cmdBuffer = m_CommandStreamManager->getStreamCommandBuffer(cmdStreamHandle); transitionRendertargetsToAttachmentLayout(renderTargets, *m_ImageManager, cmdBuffer); - const vk::Framebuffer framebuffer = createFramebuffer(renderTargets, *m_ImageManager, m_swapchain, renderpass, + const vk::Framebuffer framebuffer = createFramebuffer(renderTargets, *m_ImageManager, m_SwapchainManager->getSwapchain(swapchainHandle), renderpass, m_Context.m_Device); if (!framebuffer) { @@ -381,7 +382,7 @@ namespace vkcv cmdBuffer.bindPipeline(vk::PipelineBindPoint::eGraphics, pipeline, {}); - const PipelineConfig &pipeConfig = m_PipelineManager->getPipelineConfig(pipelineHandle); + const GraphicsPipelineConfig &pipeConfig = m_PipelineManager->getPipelineConfig(pipelineHandle); if (pipeConfig.m_UseDynamicViewport) { recordDynamicViewport(cmdBuffer, width, height); } -- GitLab