From 3dd21e3ae5d36277fcc0ab480a75d895a837a0fc Mon Sep 17 00:00:00 2001 From: Alex Laptop <alexander.gauggel@web.de> Date: Thu, 16 Sep 2021 15:32:33 +0200 Subject: [PATCH] [#114] Add debug labels to voxelization project --- projects/voxelization/src/BloomAndFlares.cpp | 26 ++++++++++++++++---- projects/voxelization/src/ShadowMapping.cpp | 9 +++++++ projects/voxelization/src/Voxelization.cpp | 16 ++++++++++-- projects/voxelization/src/main.cpp | 13 +++++++++- 4 files changed, 56 insertions(+), 8 deletions(-) diff --git a/projects/voxelization/src/BloomAndFlares.cpp b/projects/voxelization/src/BloomAndFlares.cpp index d47f61d0..2014d7a0 100644 --- a/projects/voxelization/src/BloomAndFlares.cpp +++ b/projects/voxelization/src/BloomAndFlares.cpp @@ -127,6 +127,8 @@ void BloomAndFlares::execDownsamplePipe(const vkcv::CommandStreamHandle &cmdStre 1 }; + p_Core->recordBeginDebugLabel(cmdStream, "Bloom downsample", { 1, 1, 1, 1 }); + // downsample dispatch of original color attachment p_Core->prepareImageForSampling(cmdStream, colorAttachment); p_Core->prepareImageForStorage(cmdStream, m_Blur.getHandle()); @@ -182,10 +184,14 @@ void BloomAndFlares::execDownsamplePipe(const vkcv::CommandStreamHandle &cmdStre // image barrier between mips p_Core->recordImageMemoryBarrier(cmdStream, m_Blur.getHandle()); } + + p_Core->recordEndDebugLabel(cmdStream); } void BloomAndFlares::execUpsamplePipe(const vkcv::CommandStreamHandle &cmdStream) { + p_Core->recordBeginDebugLabel(cmdStream, "Bloom upsample", { 1, 1, 1, 1 }); + // upsample dispatch p_Core->prepareImageForStorage(cmdStream, m_Blur.getHandle()); @@ -227,10 +233,14 @@ void BloomAndFlares::execUpsamplePipe(const vkcv::CommandStreamHandle &cmdStream // image barrier between mips p_Core->recordImageMemoryBarrier(cmdStream, m_Blur.getHandle()); } + + p_Core->recordEndDebugLabel(cmdStream); } void BloomAndFlares::execLensFeaturePipe(const vkcv::CommandStreamHandle &cmdStream) { + p_Core->recordBeginDebugLabel(cmdStream, "Lense flare generation", { 1, 1, 1, 1 }); + // lens feature generation descriptor writes p_Core->prepareImageForSampling(cmdStream, m_Blur.getHandle()); p_Core->prepareImageForStorage(cmdStream, m_LensFeatures.getHandle()); @@ -295,11 +305,15 @@ void BloomAndFlares::execLensFeaturePipe(const vkcv::CommandStreamHandle &cmdStr // image barrier between mips p_Core->recordImageMemoryBarrier(cmdStream, m_LensFeatures.getHandle()); } + + p_Core->recordEndDebugLabel(cmdStream); } void BloomAndFlares::execCompositePipe(const vkcv::CommandStreamHandle &cmdStream, const vkcv::ImageHandle& colorAttachment, const uint32_t attachmentWidth, const uint32_t attachmentHeight, const glm::vec3& cameraForward) { + p_Core->recordBeginDebugLabel(cmdStream, "Bloom/lense flare composition", { 1, 1, 1, 1 }); + p_Core->prepareImageForSampling(cmdStream, m_Blur.getHandle()); p_Core->prepareImageForSampling(cmdStream, m_LensFeatures.getHandle()); p_Core->prepareImageForStorage(cmdStream, colorAttachment); @@ -329,11 +343,13 @@ void BloomAndFlares::execCompositePipe(const vkcv::CommandStreamHandle &cmdStrea // bloom composite dispatch p_Core->recordComputeDispatchToCmdStream( - cmdStream, - m_CompositePipe, - compositeDispatchCount, - {vkcv::DescriptorSetUsage(0, p_Core->getDescriptorSet(m_CompositeDescSet).vulkanHandle)}, - pushConstants); + cmdStream, + m_CompositePipe, + compositeDispatchCount, + {vkcv::DescriptorSetUsage(0, p_Core->getDescriptorSet(m_CompositeDescSet).vulkanHandle)}, + pushConstants); + + p_Core->recordEndDebugLabel(cmdStream); } void BloomAndFlares::execWholePipeline(const vkcv::CommandStreamHandle &cmdStream, const vkcv::ImageHandle &colorAttachment, diff --git a/projects/voxelization/src/ShadowMapping.cpp b/projects/voxelization/src/ShadowMapping.cpp index d8041c1e..ce4261ff 100644 --- a/projects/voxelization/src/ShadowMapping.cpp +++ b/projects/voxelization/src/ShadowMapping.cpp @@ -266,6 +266,7 @@ void ShadowMapping::recordShadowMapRendering( drawcalls.push_back(vkcv::DrawcallInfo(mesh, {})); } + m_corePtr->recordBeginDebugLabel(cmdStream, "Shadow map depth", {1, 1, 1, 1}); m_corePtr->recordDrawcallsToCmdStream( cmdStream, m_shadowMapPass, @@ -275,6 +276,7 @@ void ShadowMapping::recordShadowMapRendering( { m_shadowMapDepth.getHandle() }, windowHandle); m_corePtr->prepareImageForSampling(cmdStream, m_shadowMapDepth.getHandle()); + m_corePtr->recordEndDebugLabel(cmdStream); // depth to moments uint32_t dispatchCount[3]; @@ -287,6 +289,8 @@ void ShadowMapping::recordShadowMapRendering( vkcv::PushConstants msaaPushConstants (sizeof(msaaSampleCount)); msaaPushConstants.appendDrawcall(msaaSampleCount); + m_corePtr->recordBeginDebugLabel(cmdStream, "Depth to moments", { 1, 1, 1, 1 }); + m_corePtr->prepareImageForStorage(cmdStream, m_shadowMap.getHandle()); m_corePtr->recordComputeDispatchToCmdStream( cmdStream, @@ -295,6 +299,9 @@ void ShadowMapping::recordShadowMapRendering( { vkcv::DescriptorSetUsage(0, m_corePtr->getDescriptorSet(m_depthToMomentsDescriptorSet).vulkanHandle) }, msaaPushConstants); m_corePtr->prepareImageForSampling(cmdStream, m_shadowMap.getHandle()); + m_corePtr->recordEndDebugLabel(cmdStream); + + m_corePtr->recordBeginDebugLabel(cmdStream, "Moment shadow map blur", { 1, 1, 1, 1 }); // blur X m_corePtr->prepareImageForStorage(cmdStream, m_shadowMapIntermediate.getHandle()); @@ -316,6 +323,8 @@ void ShadowMapping::recordShadowMapRendering( vkcv::PushConstants(0)); m_shadowMap.recordMipChainGeneration(cmdStream); m_corePtr->prepareImageForSampling(cmdStream, m_shadowMap.getHandle()); + + m_corePtr->recordEndDebugLabel(cmdStream); } vkcv::ImageHandle ShadowMapping::getShadowMap() { diff --git a/projects/voxelization/src/Voxelization.cpp b/projects/voxelization/src/Voxelization.cpp index 3cbff0df..c023af21 100644 --- a/projects/voxelization/src/Voxelization.cpp +++ b/projects/voxelization/src/Voxelization.cpp @@ -251,6 +251,7 @@ void Voxelization::voxelizeMeshes( vkcv::PushConstants voxelCountPushConstants (sizeof(voxelCount)); voxelCountPushConstants.appendDrawcall(voxelCount); + m_corePtr->recordBeginDebugLabel(cmdStream, "Voxel reset", { 1, 1, 1, 1 }); m_corePtr->recordComputeDispatchToCmdStream( cmdStream, m_voxelResetPipe, @@ -258,6 +259,7 @@ void Voxelization::voxelizeMeshes( { vkcv::DescriptorSetUsage(0, m_corePtr->getDescriptorSet(m_voxelResetDescriptorSet).vulkanHandle) }, voxelCountPushConstants); m_corePtr->recordBufferMemoryBarrier(cmdStream, m_voxelBuffer.getHandle()); + m_corePtr->recordEndDebugLabel(cmdStream); // voxelization std::vector<vkcv::DrawcallInfo> drawcalls; @@ -270,6 +272,7 @@ void Voxelization::voxelizeMeshes( },1)); } + m_corePtr->recordBeginDebugLabel(cmdStream, "Voxelization", { 1, 1, 1, 1 }); m_corePtr->prepareImageForStorage(cmdStream, m_voxelImageIntermediate.getHandle()); m_corePtr->recordDrawcallsToCmdStream( cmdStream, @@ -279,6 +282,7 @@ void Voxelization::voxelizeMeshes( drawcalls, { m_dummyRenderTarget.getHandle() }, windowHandle); + m_corePtr->recordEndDebugLabel(cmdStream); // buffer to image const uint32_t bufferToImageGroupSize[3] = { 4, 4, 4 }; @@ -287,6 +291,7 @@ void Voxelization::voxelizeMeshes( bufferToImageDispatchCount[i] = glm::ceil(voxelResolution / float(bufferToImageGroupSize[i])); } + m_corePtr->recordBeginDebugLabel(cmdStream, "Voxel buffer to image", { 1, 1, 1, 1 }); m_corePtr->recordComputeDispatchToCmdStream( cmdStream, m_bufferToImagePipe, @@ -295,14 +300,17 @@ void Voxelization::voxelizeMeshes( vkcv::PushConstants(0)); m_corePtr->recordImageMemoryBarrier(cmdStream, m_voxelImageIntermediate.getHandle()); + m_corePtr->recordEndDebugLabel(cmdStream); // intermediate image mipchain + m_corePtr->recordBeginDebugLabel(cmdStream, "Intermediate Voxel mipmap generation", { 1, 1, 1, 1 }); m_voxelImageIntermediate.recordMipChainGeneration(cmdStream); m_corePtr->prepareImageForSampling(cmdStream, m_voxelImageIntermediate.getHandle()); + m_corePtr->recordEndDebugLabel(cmdStream); // secondary bounce + m_corePtr->recordBeginDebugLabel(cmdStream, "Voxel secondary bounce", { 1, 1, 1, 1 }); m_corePtr->prepareImageForStorage(cmdStream, m_voxelImage.getHandle()); - m_corePtr->recordComputeDispatchToCmdStream( cmdStream, m_secondaryBouncePipe, @@ -310,12 +318,14 @@ void Voxelization::voxelizeMeshes( { vkcv::DescriptorSetUsage(0, m_corePtr->getDescriptorSet(m_secondaryBounceDescriptorSet).vulkanHandle) }, vkcv::PushConstants(0)); m_voxelImage.recordMipChainGeneration(cmdStream); - m_corePtr->recordImageMemoryBarrier(cmdStream, m_voxelImage.getHandle()); + m_corePtr->recordEndDebugLabel(cmdStream); // final image mipchain + m_corePtr->recordBeginDebugLabel(cmdStream, "Voxel mipmap generation", { 1, 1, 1, 1 }); m_voxelImage.recordMipChainGeneration(cmdStream); m_corePtr->prepareImageForSampling(cmdStream, m_voxelImage.getHandle()); + m_corePtr->recordEndDebugLabel(cmdStream); } void Voxelization::renderVoxelVisualisation( @@ -344,6 +354,7 @@ void Voxelization::renderVoxelVisualisation( vkcv::Mesh({}, nullptr, drawVoxelCount), { vkcv::DescriptorSetUsage(0, m_corePtr->getDescriptorSet(m_visualisationDescriptorSet).vulkanHandle) },1); + m_corePtr->recordBeginDebugLabel(cmdStream, "Voxel visualisation", { 1, 1, 1, 1 }); m_corePtr->prepareImageForStorage(cmdStream, m_voxelImage.getHandle()); m_corePtr->recordDrawcallsToCmdStream( cmdStream, @@ -353,6 +364,7 @@ void Voxelization::renderVoxelVisualisation( { drawcall }, renderTargets, windowHandle); + m_corePtr->recordEndDebugLabel(cmdStream); } void Voxelization::updateVoxelOffset(const vkcv::camera::Camera& camera) { diff --git a/projects/voxelization/src/main.cpp b/projects/voxelization/src/main.cpp index a7798813..0f9e9fb8 100644 --- a/projects/voxelization/src/main.cpp +++ b/projects/voxelization/src/main.cpp @@ -765,6 +765,7 @@ int main(int argc, const char** argv) { const std::vector<vkcv::ImageHandle> prepassRenderTargets = { depthBuffer }; + core.recordBeginDebugLabel(cmdStream, "Depth prepass", { 1, 1, 1, 1 }); core.recordDrawcallsToCmdStream( cmdStream, prepassPass, @@ -775,6 +776,7 @@ int main(int argc, const char** argv) { windowHandle); core.recordImageMemoryBarrier(cmdStream, depthBuffer); + core.recordEndDebugLabel(cmdStream); vkcv::PushConstants pushConstants (2 * sizeof(glm::mat4)); @@ -791,6 +793,7 @@ int main(int argc, const char** argv) { const std::vector<vkcv::ImageHandle> renderTargets = { colorBuffer, depthBuffer }; + core.recordBeginDebugLabel(cmdStream, "Forward rendering", { 1, 1, 1, 1 }); core.recordDrawcallsToCmdStream( cmdStream, forwardPass, @@ -799,6 +802,7 @@ int main(int argc, const char** argv) { drawcalls, renderTargets, windowHandle); + core.recordEndDebugLabel(cmdStream); if (renderVoxelVis) { voxelization.renderVoxelVisualisation(cmdStream, viewProjectionCamera, renderTargets, voxelVisualisationMip, windowHandle); @@ -808,6 +812,7 @@ int main(int argc, const char** argv) { skySettingsPushConstants.appendDrawcall(skySettings); // sky + core.recordBeginDebugLabel(cmdStream, "Sky", { 1, 1, 1, 1 }); core.recordDrawcallsToCmdStream( cmdStream, skyPass, @@ -816,6 +821,7 @@ int main(int argc, const char** argv) { { vkcv::DrawcallInfo(vkcv::Mesh({}, nullptr, 3), {}) }, renderTargets, windowHandle); + core.recordEndDebugLabel(cmdStream); const uint32_t fullscreenLocalGroupSize = 8; @@ -832,8 +838,8 @@ int main(int argc, const char** argv) { fulsscreenDispatchCount[2] = 1; if (usingMsaa) { + core.recordBeginDebugLabel(cmdStream, "MSAA resolve", { 1, 1, 1, 1 }); if (msaaCustomResolve) { - core.prepareImageForSampling(cmdStream, colorBuffer); core.prepareImageForStorage(cmdStream, resolvedColorBuffer); @@ -850,6 +856,7 @@ int main(int argc, const char** argv) { else { core.resolveMSAAImage(cmdStream, colorBuffer, resolvedColorBuffer); } + core.recordEndDebugLabel(cmdStream); } bloomFlares.execWholePipeline(cmdStream, resolvedColorBuffer, fsrWidth, fsrHeight, @@ -859,6 +866,7 @@ int main(int argc, const char** argv) { core.prepareImageForStorage(cmdStream, swapBuffer); core.prepareImageForSampling(cmdStream, resolvedColorBuffer); + core.recordBeginDebugLabel(cmdStream, "Tonemapping", { 1, 1, 1, 1 }); core.recordComputeDispatchToCmdStream( cmdStream, tonemappingPipeline, @@ -871,6 +879,7 @@ int main(int argc, const char** argv) { core.prepareImageForStorage(cmdStream, swapBuffer2); core.prepareImageForSampling(cmdStream, swapBuffer); + core.recordEndDebugLabel(cmdStream); if (bilinearUpscaling) { upscaling1.recordUpscaling(cmdStream, swapBuffer, swapBuffer2); @@ -895,6 +904,7 @@ int main(int argc, const char** argv) { glm::ceil(swapchainHeight / static_cast<float>(fullscreenLocalGroupSize)) ); + core.recordBeginDebugLabel(cmdStream, "Post Processing", { 1, 1, 1, 1 }); core.recordComputeDispatchToCmdStream( cmdStream, postEffectsPipeline, @@ -904,6 +914,7 @@ int main(int argc, const char** argv) { ).vulkanHandle) }, timePushConstants ); + core.recordEndDebugLabel(cmdStream); // present and end core.prepareSwapchainImageForPresent(cmdStream); -- GitLab