Browse Source

Minor tracer additions

Panagiotis Christopoulos Charitos 2 years ago
parent
commit
bb21be8408

+ 2 - 2
AnKi/Renderer/AccelerationStructureBuilder.cpp

@@ -17,7 +17,7 @@ static NumericCVar<F32>
 
 void AccelerationStructureBuilder::populateRenderGraph(RenderingContext& ctx)
 {
-	ANKI_TRACE_SCOPED_EVENT(RTlas);
+	ANKI_TRACE_SCOPED_EVENT(ASBuilder);
 
 	// Do visibility
 	GpuVisibilityAccelerationStructuresOutput visOut;
@@ -60,7 +60,7 @@ void AccelerationStructureBuilder::populateRenderGraph(RenderingContext& ctx)
 		rpass.newBufferDependency(visOut.m_someBufferHandle, BufferUsageBit::kAccelerationStructureBuild);
 
 		rpass.setWork([this, scratchBuff, rangeBuff = visOut.m_rangeBuffer](RenderPassWorkContext& rgraphCtx) {
-			ANKI_TRACE_SCOPED_EVENT(RTlas);
+			ANKI_TRACE_SCOPED_EVENT(ASBuilder);
 			rgraphCtx.m_commandBuffer->buildAccelerationStructureIndirect(m_runCtx.m_tlas.get(), scratchBuff.m_buffer, scratchBuff.m_offset,
 																		  rangeBuff.m_buffer, rangeBuff.m_offset);
 		});

+ 3 - 0
AnKi/Renderer/Bloom.cpp

@@ -9,6 +9,7 @@
 #include <AnKi/Renderer/Renderer.h>
 #include <AnKi/Renderer/Tonemapping.h>
 #include <AnKi/Core/CVarSet.h>
+#include <AnKi/Util/Tracer.h>
 
 namespace anki {
 
@@ -94,6 +95,8 @@ Error Bloom::initUpscale()
 
 void Bloom::populateRenderGraph(RenderingContext& ctx)
 {
+	ANKI_TRACE_SCOPED_EVENT(Bloom);
+
 	RenderGraphDescription& rgraph = ctx.m_renderGraphDescr;
 	const Bool preferCompute = g_preferComputeCVar.get();
 

+ 2 - 0
AnKi/Renderer/ClusterBinning2.cpp

@@ -50,6 +50,8 @@ Error ClusterBinning2::init()
 
 void ClusterBinning2::populateRenderGraph(RenderingContext& ctx)
 {
+	ANKI_TRACE_SCOPED_EVENT(ClusterBinning);
+
 	RenderGraphDescription& rgraph = ctx.m_renderGraphDescr;
 
 	// Fire an async job to fill the general uniforms

+ 4 - 0
AnKi/Renderer/Dbg.cpp

@@ -14,6 +14,7 @@
 #include <AnKi/Scene.h>
 #include <AnKi/Util/Logger.h>
 #include <AnKi/Util/Enum.h>
+#include <AnKi/Util/Tracer.h>
 #include <AnKi/Core/CVarSet.h>
 #include <AnKi/Collision/ConvexHullShape.h>
 #include <AnKi/Physics/PhysicsWorld.h>
@@ -154,6 +155,7 @@ void Dbg::drawNonRenderable(GpuSceneNonRenderableObjectType type, U32 objCount,
 
 void Dbg::run(RenderPassWorkContext& rgraphCtx, const RenderingContext& ctx)
 {
+	ANKI_TRACE_SCOPED_EVENT(Dbg);
 	ANKI_ASSERT(g_dbgCVar.get());
 
 	CommandBuffer& cmdb = *rgraphCtx.m_commandBuffer;
@@ -224,6 +226,8 @@ void Dbg::run(RenderPassWorkContext& rgraphCtx, const RenderingContext& ctx)
 
 void Dbg::populateRenderGraph(RenderingContext& ctx)
 {
+	ANKI_TRACE_SCOPED_EVENT(Dbg);
+
 	if(!g_dbgCVar.get())
 	{
 		return;

+ 2 - 0
AnKi/Renderer/DepthDownscale.cpp

@@ -7,6 +7,7 @@
 #include <AnKi/Renderer/Renderer.h>
 #include <AnKi/Renderer/GBuffer.h>
 #include <AnKi/Core/CVarSet.h>
+#include <AnKi/Util/Tracer.h>
 
 #if ANKI_COMPILER_GCC_COMPATIBLE
 #	pragma GCC diagnostic push
@@ -111,6 +112,7 @@ Error DepthDownscale::init()
 
 void DepthDownscale::populateRenderGraph(RenderingContext& ctx)
 {
+	ANKI_TRACE_SCOPED_EVENT(DepthDownscale);
 	RenderGraphDescription& rgraph = ctx.m_renderGraphDescr;
 
 	m_runCtx.m_rt = rgraph.newRenderTarget(m_rtDescr);

+ 2 - 0
AnKi/Renderer/DownscaleBlur.cpp

@@ -8,6 +8,7 @@
 #include <AnKi/Renderer/Scale.h>
 #include <AnKi/Renderer/Tonemapping.h>
 #include <AnKi/Core/CVarSet.h>
+#include <AnKi/Util/Tracer.h>
 
 namespace anki {
 
@@ -76,6 +77,7 @@ void DownscaleBlur::importRenderTargets(RenderingContext& ctx)
 
 void DownscaleBlur::populateRenderGraph(RenderingContext& ctx)
 {
+	ANKI_TRACE_SCOPED_EVENT(DownscaleBlur);
 	RenderGraphDescription& rgraph = ctx.m_renderGraphDescr;
 
 	// Create passes

+ 1 - 1
AnKi/Renderer/FinalComposite.cpp

@@ -123,7 +123,7 @@ void FinalComposite::populateRenderGraph(RenderingContext& ctx)
 
 void FinalComposite::run(RenderPassWorkContext& rgraphCtx)
 {
-	ANKI_TRACE_SCOPED_EVENT(RFinalComposite);
+	ANKI_TRACE_SCOPED_EVENT(FinalComposite);
 
 	CommandBuffer& cmdb = *rgraphCtx.m_commandBuffer;
 	const Bool dbgEnabled = g_dbgCVar.get();

+ 2 - 0
AnKi/Renderer/ForwardShading.cpp

@@ -17,6 +17,7 @@
 #include <AnKi/Renderer/VolumetricLightingAccumulation.h>
 #include <AnKi/Shaders/Include/MaterialTypes.h>
 #include <AnKi/Core/App.h>
+#include <AnKi/Util/Tracer.h>
 
 namespace anki {
 
@@ -42,6 +43,7 @@ void ForwardShading::populateRenderGraph(RenderingContext& ctx)
 
 void ForwardShading::run(const RenderingContext& ctx, RenderPassWorkContext& rgraphCtx)
 {
+	ANKI_TRACE_SCOPED_EVENT(ForwardShading);
 	CommandBuffer& cmdb = *rgraphCtx.m_commandBuffer;
 
 	// Set state

+ 2 - 2
AnKi/Renderer/GBuffer.cpp

@@ -103,7 +103,7 @@ Error GBuffer::initInternal()
 
 void GBuffer::runInThread(const RenderingContext& ctx, const GpuVisibilityOutput& visOut, RenderPassWorkContext& rgraphCtx) const
 {
-	ANKI_TRACE_SCOPED_EVENT(RGBuffer);
+	ANKI_TRACE_SCOPED_EVENT(GBuffer);
 
 	CommandBuffer& cmdb = *rgraphCtx.m_commandBuffer;
 
@@ -155,7 +155,7 @@ void GBuffer::importRenderTargets(RenderingContext& ctx)
 
 void GBuffer::populateRenderGraph(RenderingContext& ctx)
 {
-	ANKI_TRACE_SCOPED_EVENT(RGBuffer);
+	ANKI_TRACE_SCOPED_EVENT(GBuffer);
 
 	RenderGraphDescription& rgraph = ctx.m_renderGraphDescr;
 

+ 30 - 32
AnKi/Renderer/GBufferPost.cpp

@@ -7,6 +7,7 @@
 #include <AnKi/Renderer/Renderer.h>
 #include <AnKi/Renderer/GBuffer.h>
 #include <AnKi/Renderer/ClusterBinning2.h>
+#include <AnKi/Util/Tracer.h>
 
 namespace anki {
 
@@ -47,6 +48,8 @@ Error GBufferPost::initInternal()
 
 void GBufferPost::populateRenderGraph(RenderingContext& ctx)
 {
+	ANKI_TRACE_SCOPED_EVENT(GBufferPost);
+
 	if(GpuSceneArrays::Decal::getSingleton().getElementCount() == 0)
 	{
 		// If there are no decals don't bother
@@ -59,50 +62,45 @@ void GBufferPost::populateRenderGraph(RenderingContext& ctx)
 	GraphicsRenderPassDescription& rpass = rgraph.newGraphicsRenderPass("GBuffPost");
 
 	rpass.setWork([this](RenderPassWorkContext& rgraphCtx) {
-		run(rgraphCtx);
-	});
+		CommandBuffer& cmdb = *rgraphCtx.m_commandBuffer;
 
-	rpass.setFramebufferInfo(m_fbDescr, {getRenderer().getGBuffer().getColorRt(0), getRenderer().getGBuffer().getColorRt(1)});
+		cmdb.setViewport(0, 0, getRenderer().getInternalResolution().x(), getRenderer().getInternalResolution().y());
+		cmdb.bindShaderProgram(m_grProg.get());
 
-	rpass.newTextureDependency(getRenderer().getGBuffer().getColorRt(0), TextureUsageBit::kAllFramebuffer);
-	rpass.newTextureDependency(getRenderer().getGBuffer().getColorRt(1), TextureUsageBit::kAllFramebuffer);
-	rpass.newTextureDependency(getRenderer().getGBuffer().getDepthRt(), TextureUsageBit::kSampledFragment,
-							   TextureSubresourceInfo(DepthStencilAspectBit::kDepth));
-
-	rpass.newBufferDependency(getRenderer().getClusterBinning2().getClustersBufferHandle(), BufferUsageBit::kStorageFragmentRead);
-	rpass.newBufferDependency(getRenderer().getClusterBinning2().getPackedObjectsBufferHandle(GpuSceneNonRenderableObjectType::kDecal),
-							  BufferUsageBit::kStorageFragmentRead);
-}
+		cmdb.setBlendFactors(0, BlendFactor::kOne, BlendFactor::kSrcAlpha, BlendFactor::kZero, BlendFactor::kOne);
+		cmdb.setBlendFactors(1, BlendFactor::kOne, BlendFactor::kSrcAlpha, BlendFactor::kZero, BlendFactor::kOne);
 
-void GBufferPost::run(RenderPassWorkContext& rgraphCtx)
-{
-	CommandBuffer& cmdb = *rgraphCtx.m_commandBuffer;
+		// Bind all
+		cmdb.bindSampler(0, 0, getRenderer().getSamplers().m_nearestNearestClamp.get());
 
-	cmdb.setViewport(0, 0, getRenderer().getInternalResolution().x(), getRenderer().getInternalResolution().y());
-	cmdb.bindShaderProgram(m_grProg.get());
+		rgraphCtx.bindTexture(0, 1, getRenderer().getGBuffer().getDepthRt(), TextureSubresourceInfo(DepthStencilAspectBit::kDepth));
 
-	cmdb.setBlendFactors(0, BlendFactor::kOne, BlendFactor::kSrcAlpha, BlendFactor::kZero, BlendFactor::kOne);
-	cmdb.setBlendFactors(1, BlendFactor::kOne, BlendFactor::kSrcAlpha, BlendFactor::kZero, BlendFactor::kOne);
+		cmdb.bindSampler(0, 2, getRenderer().getSamplers().m_trilinearRepeat.get());
 
-	// Bind all
-	cmdb.bindSampler(0, 0, getRenderer().getSamplers().m_nearestNearestClamp.get());
+		cmdb.bindUniformBuffer(0, 3, getRenderer().getClusterBinning2().getClusteredShadingUniforms());
+		cmdb.bindStorageBuffer(0, 4, getRenderer().getClusterBinning2().getPackedObjectsBuffer(GpuSceneNonRenderableObjectType::kDecal));
+		cmdb.bindStorageBuffer(0, 5, getRenderer().getClusterBinning2().getClustersBuffer());
 
-	rgraphCtx.bindTexture(0, 1, getRenderer().getGBuffer().getDepthRt(), TextureSubresourceInfo(DepthStencilAspectBit::kDepth));
+		cmdb.bindAllBindless(1);
 
-	cmdb.bindSampler(0, 2, getRenderer().getSamplers().m_trilinearRepeat.get());
+		// Draw
+		cmdb.draw(PrimitiveTopology::kTriangles, 3);
 
-	cmdb.bindUniformBuffer(0, 3, getRenderer().getClusterBinning2().getClusteredShadingUniforms());
-	cmdb.bindStorageBuffer(0, 4, getRenderer().getClusterBinning2().getPackedObjectsBuffer(GpuSceneNonRenderableObjectType::kDecal));
-	cmdb.bindStorageBuffer(0, 5, getRenderer().getClusterBinning2().getClustersBuffer());
+		// Restore state
+		cmdb.setBlendFactors(0, BlendFactor::kOne, BlendFactor::kZero);
+		cmdb.setBlendFactors(1, BlendFactor::kOne, BlendFactor::kZero);
+	});
 
-	cmdb.bindAllBindless(1);
+	rpass.setFramebufferInfo(m_fbDescr, {getRenderer().getGBuffer().getColorRt(0), getRenderer().getGBuffer().getColorRt(1)});
 
-	// Draw
-	cmdb.draw(PrimitiveTopology::kTriangles, 3);
+	rpass.newTextureDependency(getRenderer().getGBuffer().getColorRt(0), TextureUsageBit::kAllFramebuffer);
+	rpass.newTextureDependency(getRenderer().getGBuffer().getColorRt(1), TextureUsageBit::kAllFramebuffer);
+	rpass.newTextureDependency(getRenderer().getGBuffer().getDepthRt(), TextureUsageBit::kSampledFragment,
+							   TextureSubresourceInfo(DepthStencilAspectBit::kDepth));
 
-	// Restore state
-	cmdb.setBlendFactors(0, BlendFactor::kOne, BlendFactor::kZero);
-	cmdb.setBlendFactors(1, BlendFactor::kOne, BlendFactor::kZero);
+	rpass.newBufferDependency(getRenderer().getClusterBinning2().getClustersBufferHandle(), BufferUsageBit::kStorageFragmentRead);
+	rpass.newBufferDependency(getRenderer().getClusterBinning2().getPackedObjectsBufferHandle(GpuSceneNonRenderableObjectType::kDecal),
+							  BufferUsageBit::kStorageFragmentRead);
 }
 
 } // end namespace anki

+ 0 - 2
AnKi/Renderer/GBufferPost.h

@@ -28,8 +28,6 @@ private:
 	FramebufferDescription m_fbDescr;
 
 	Error initInternal();
-
-	void run(RenderPassWorkContext& rgraphCtx);
 };
 /// @}
 

+ 2 - 0
AnKi/Renderer/IndirectDiffuse.cpp

@@ -12,6 +12,7 @@
 #include <AnKi/Renderer/IndirectDiffuseProbes.h>
 #include <AnKi/Renderer/ClusterBinning2.h>
 #include <AnKi/Core/CVarSet.h>
+#include <AnKi/Util/Tracer.h>
 
 namespace anki {
 
@@ -142,6 +143,7 @@ Error IndirectDiffuse::initInternal()
 
 void IndirectDiffuse::populateRenderGraph(RenderingContext& ctx)
 {
+	ANKI_TRACE_SCOPED_EVENT(IndirectDiffuse);
 	RenderGraphDescription& rgraph = ctx.m_renderGraphDescr;
 	const Bool preferCompute = g_preferComputeCVar.get();
 	const Bool enableVrs = GrManager::getSingleton().getDeviceCapabilities().m_vrs && g_vrsCVar.get() && !preferCompute;

+ 1 - 1
AnKi/Renderer/IndirectDiffuseProbes.cpp

@@ -165,7 +165,7 @@ Error IndirectDiffuseProbes::initIrradiance()
 
 void IndirectDiffuseProbes::populateRenderGraph(RenderingContext& rctx)
 {
-	ANKI_TRACE_SCOPED_EVENT(RIndirectDiffuse);
+	ANKI_TRACE_SCOPED_EVENT(IndirectDiffuse);
 
 	// Iterate the visible probes to find a candidate for update
 	WeakArray<GlobalIlluminationProbeComponent*> visibleProbes =

+ 2 - 0
AnKi/Renderer/IndirectSpecular.cpp

@@ -13,6 +13,7 @@
 #include <AnKi/Renderer/VrsSriGeneration.h>
 #include <AnKi/Renderer/ClusterBinning2.h>
 #include <AnKi/Core/CVarSet.h>
+#include <AnKi/Util/Tracer.h>
 
 namespace anki {
 
@@ -73,6 +74,7 @@ Error IndirectSpecular::initInternal()
 
 void IndirectSpecular::populateRenderGraph(RenderingContext& ctx)
 {
+	ANKI_TRACE_SCOPED_EVENT(IndirectSpecular);
 	RenderGraphDescription& rgraph = ctx.m_renderGraphDescr;
 	const Bool preferCompute = g_preferComputeCVar.get();
 	const Bool enableVrs = GrManager::getSingleton().getDeviceCapabilities().m_vrs && g_vrsCVar.get() && !preferCompute;

+ 3 - 0
AnKi/Renderer/LensFlare.cpp

@@ -10,6 +10,7 @@
 #include <AnKi/Core/GpuMemory/GpuVisibleTransientMemoryPool.h>
 #include <AnKi/Util/Functions.h>
 #include <AnKi/Scene/Components/LensFlareComponent.h>
+#include <AnKi/Util/Tracer.h>
 
 namespace anki {
 
@@ -62,6 +63,7 @@ Error LensFlare::initOcclusion()
 
 void LensFlare::populateRenderGraph(RenderingContext& ctx)
 {
+	ANKI_TRACE_SCOPED_EVENT(LensFlare);
 	const U32 flareCount = SceneGraph::getSingleton().getComponentArrays().getLensFlares().getSize();
 	if(flareCount == 0)
 	{
@@ -83,6 +85,7 @@ void LensFlare::populateRenderGraph(RenderingContext& ctx)
 							   DepthDownscale::kEighthInternalResolution);
 
 	rpass.setWork([this, &ctx](RenderPassWorkContext& rgraphCtx) {
+		ANKI_TRACE_SCOPED_EVENT(LensFlare);
 		CommandBuffer& cmdb = *rgraphCtx.m_commandBuffer;
 
 		const U32 flareCount = SceneGraph::getSingleton().getComponentArrays().getLensFlares().getSize();

+ 2 - 1
AnKi/Renderer/LightShading.cpp

@@ -133,7 +133,7 @@ Error LightShading::initApplyIndirect()
 
 void LightShading::run(const RenderingContext& ctx, RenderPassWorkContext& rgraphCtx)
 {
-	ANKI_TRACE_SCOPED_EVENT(ForwardShading);
+	ANKI_TRACE_SCOPED_EVENT(LightShading);
 
 	CommandBuffer& cmdb = *rgraphCtx.m_commandBuffer;
 
@@ -291,6 +291,7 @@ void LightShading::run(const RenderingContext& ctx, RenderPassWorkContext& rgrap
 
 void LightShading::populateRenderGraph(RenderingContext& ctx)
 {
+	ANKI_TRACE_SCOPED_EVENT(LightShading);
 	RenderGraphDescription& rgraph = ctx.m_renderGraphDescr;
 
 	const Bool enableVrs = GrManager::getSingleton().getDeviceCapabilities().m_vrs && g_vrsCVar.get();

+ 42 - 44
AnKi/Renderer/MotionVectors.cpp

@@ -7,6 +7,7 @@
 #include <AnKi/Renderer/Renderer.h>
 #include <AnKi/Renderer/GBuffer.h>
 #include <AnKi/Core/CVarSet.h>
+#include <AnKi/Util/Tracer.h>
 
 namespace anki {
 
@@ -64,6 +65,7 @@ Error MotionVectors::initInternal()
 
 void MotionVectors::populateRenderGraph(RenderingContext& ctx)
 {
+	ANKI_TRACE_SCOPED_EVENT(MotionVectors);
 	RenderGraphDescription& rgraph = ctx.m_renderGraphDescr;
 
 	m_runCtx.m_motionVectorsRtHandle = rgraph.newRenderTarget(m_motionVectorsRtDescr);
@@ -108,7 +110,46 @@ void MotionVectors::populateRenderGraph(RenderingContext& ctx)
 	}
 
 	ppass->setWork([this, &ctx](RenderPassWorkContext& rgraphCtx) -> void {
-		run(ctx, rgraphCtx);
+		ANKI_TRACE_SCOPED_EVENT(MotionVectors);
+		CommandBuffer& cmdb = *rgraphCtx.m_commandBuffer;
+
+		cmdb.bindShaderProgram(m_grProg.get());
+
+		cmdb.bindSampler(0, 0, getRenderer().getSamplers().m_trilinearClamp.get());
+		rgraphCtx.bindTexture(0, 1, getRenderer().getGBuffer().getDepthRt(), TextureSubresourceInfo(DepthStencilAspectBit::kDepth));
+		rgraphCtx.bindTexture(0, 2, getRenderer().getGBuffer().getPreviousFrameDepthRt(), TextureSubresourceInfo(DepthStencilAspectBit::kDepth));
+		rgraphCtx.bindColorTexture(0, 3, getRenderer().getGBuffer().getColorRt(3));
+		rgraphCtx.bindColorTexture(0, 4, m_runCtx.m_historyLengthReadRtHandle);
+
+		class Uniforms
+		{
+		public:
+			Mat4 m_reprojectionMat;
+			Mat4 m_viewProjectionInvMat;
+			Mat4 m_prevViewProjectionInvMat;
+		} * pc;
+		pc = allocateAndBindUniforms<Uniforms>(cmdb, 0, 5);
+
+		pc->m_reprojectionMat = ctx.m_matrices.m_reprojection;
+		pc->m_viewProjectionInvMat = ctx.m_matrices.m_invertedViewProjectionJitter;
+		pc->m_prevViewProjectionInvMat = ctx.m_prevMatrices.m_invertedViewProjectionJitter;
+
+		if(g_preferComputeCVar.get())
+		{
+			rgraphCtx.bindImage(0, 6, m_runCtx.m_motionVectorsRtHandle, TextureSubresourceInfo());
+			rgraphCtx.bindImage(0, 7, m_runCtx.m_historyLengthWriteRtHandle, TextureSubresourceInfo());
+		}
+
+		if(g_preferComputeCVar.get())
+		{
+			dispatchPPCompute(cmdb, 8, 8, getRenderer().getInternalResolution().x(), getRenderer().getInternalResolution().y());
+		}
+		else
+		{
+			cmdb.setViewport(0, 0, getRenderer().getInternalResolution().x(), getRenderer().getInternalResolution().y());
+
+			cmdb.draw(PrimitiveTopology::kTriangles, 3);
+		}
 	});
 
 	ppass->newTextureDependency(m_runCtx.m_motionVectorsRtHandle, writeUsage);
@@ -119,47 +160,4 @@ void MotionVectors::populateRenderGraph(RenderingContext& ctx)
 	ppass->newTextureDependency(getRenderer().getGBuffer().getPreviousFrameDepthRt(), readUsage);
 }
 
-void MotionVectors::run(const RenderingContext& ctx, RenderPassWorkContext& rgraphCtx)
-{
-	CommandBuffer& cmdb = *rgraphCtx.m_commandBuffer;
-
-	cmdb.bindShaderProgram(m_grProg.get());
-
-	cmdb.bindSampler(0, 0, getRenderer().getSamplers().m_trilinearClamp.get());
-	rgraphCtx.bindTexture(0, 1, getRenderer().getGBuffer().getDepthRt(), TextureSubresourceInfo(DepthStencilAspectBit::kDepth));
-	rgraphCtx.bindTexture(0, 2, getRenderer().getGBuffer().getPreviousFrameDepthRt(), TextureSubresourceInfo(DepthStencilAspectBit::kDepth));
-	rgraphCtx.bindColorTexture(0, 3, getRenderer().getGBuffer().getColorRt(3));
-	rgraphCtx.bindColorTexture(0, 4, m_runCtx.m_historyLengthReadRtHandle);
-
-	class Uniforms
-	{
-	public:
-		Mat4 m_reprojectionMat;
-		Mat4 m_viewProjectionInvMat;
-		Mat4 m_prevViewProjectionInvMat;
-	} * pc;
-	pc = allocateAndBindUniforms<Uniforms>(cmdb, 0, 5);
-
-	pc->m_reprojectionMat = ctx.m_matrices.m_reprojection;
-	pc->m_viewProjectionInvMat = ctx.m_matrices.m_invertedViewProjectionJitter;
-	pc->m_prevViewProjectionInvMat = ctx.m_prevMatrices.m_invertedViewProjectionJitter;
-
-	if(g_preferComputeCVar.get())
-	{
-		rgraphCtx.bindImage(0, 6, m_runCtx.m_motionVectorsRtHandle, TextureSubresourceInfo());
-		rgraphCtx.bindImage(0, 7, m_runCtx.m_historyLengthWriteRtHandle, TextureSubresourceInfo());
-	}
-
-	if(g_preferComputeCVar.get())
-	{
-		dispatchPPCompute(cmdb, 8, 8, getRenderer().getInternalResolution().x(), getRenderer().getInternalResolution().y());
-	}
-	else
-	{
-		cmdb.setViewport(0, 0, getRenderer().getInternalResolution().x(), getRenderer().getInternalResolution().y());
-
-		cmdb.draw(PrimitiveTopology::kTriangles, 3);
-	}
-}
-
 } // end namespace anki

+ 0 - 2
AnKi/Renderer/MotionVectors.h

@@ -68,8 +68,6 @@ private:
 		RenderTargetHandle m_historyLengthWriteRtHandle;
 	} m_runCtx;
 
-	void run(const RenderingContext& ctx, RenderPassWorkContext& rgraphCtx);
-
 	Error initInternal();
 };
 /// @}

+ 2 - 0
AnKi/Renderer/PrimaryNonRenderableVisibility.cpp

@@ -11,6 +11,7 @@
 #include <AnKi/Scene/Components/LightComponent.h>
 #include <AnKi/Scene/Components/ReflectionProbeComponent.h>
 #include <AnKi/Scene/Components/GlobalIlluminationProbeComponent.h>
+#include <AnKi/Util/Tracer.h>
 
 namespace anki {
 
@@ -40,6 +41,7 @@ static WeakArray<TComponent*> gatherComponents(ConstWeakArray<UVec2> pairs, TArr
 
 void PrimaryNonRenderableVisibility::populateRenderGraph(RenderingContext& ctx)
 {
+	ANKI_TRACE_SCOPED_EVENT(PrimaryNonRenderableVisibility);
 	RenderGraphDescription& rgraph = ctx.m_renderGraphDescr;
 
 	m_runCtx = {};

+ 7 - 7
AnKi/Renderer/ProbeReflections.cpp

@@ -188,7 +188,7 @@ Error ProbeReflections::initShadowMapping()
 void ProbeReflections::runGBuffer(const Array<GpuVisibilityOutput, 6>& visOuts, const Array<Mat4, 6>& viewProjMatx, const Array<Mat3x4, 6> viewMats,
 								  RenderPassWorkContext& rgraphCtx)
 {
-	ANKI_TRACE_SCOPED_EVENT(RCubeRefl);
+	ANKI_TRACE_SCOPED_EVENT(ProbeReflections);
 	CommandBuffer& cmdb = *rgraphCtx.m_commandBuffer;
 
 	const U32 faceIdx = rgraphCtx.m_currentSecondLevelCommandBufferIndex;
@@ -213,7 +213,7 @@ void ProbeReflections::runLightShading(U32 faceIdx, const BufferOffsetRange& vis
 									   const ReflectionProbeComponent& probe, RenderPassWorkContext& rgraphCtx)
 {
 	ANKI_ASSERT(faceIdx <= 6);
-	ANKI_TRACE_SCOPED_EVENT(RCubeRefl);
+	ANKI_TRACE_SCOPED_EVENT(ProbeReflections);
 
 	TraditionalDeferredLightShadingDrawInfo dsInfo;
 	dsInfo.m_viewProjectionMatrix = viewProjMat;
@@ -252,7 +252,7 @@ void ProbeReflections::runMipmappingOfLightShading(U32 faceIdx, RenderPassWorkCo
 {
 	ANKI_ASSERT(faceIdx < 6);
 
-	ANKI_TRACE_SCOPED_EVENT(RCubeRefl);
+	ANKI_TRACE_SCOPED_EVENT(ProbeReflections);
 
 	TextureSubresourceInfo subresource(TextureSurfaceInfo(0, 0, faceIdx, 0));
 	subresource.m_mipmapCount = m_lightShading.m_mipCount;
@@ -267,7 +267,7 @@ void ProbeReflections::runMipmappingOfLightShading(U32 faceIdx, RenderPassWorkCo
 
 void ProbeReflections::runIrradiance(RenderPassWorkContext& rgraphCtx)
 {
-	ANKI_TRACE_SCOPED_EVENT(RCubeRefl);
+	ANKI_TRACE_SCOPED_EVENT(ProbeReflections);
 
 	CommandBuffer& cmdb = *rgraphCtx.m_commandBuffer;
 
@@ -288,7 +288,7 @@ void ProbeReflections::runIrradiance(RenderPassWorkContext& rgraphCtx)
 
 void ProbeReflections::runIrradianceToRefl(RenderPassWorkContext& rgraphCtx)
 {
-	ANKI_TRACE_SCOPED_EVENT(RCubeRefl);
+	ANKI_TRACE_SCOPED_EVENT(ProbeReflections);
 
 	CommandBuffer& cmdb = *rgraphCtx.m_commandBuffer;
 
@@ -316,7 +316,7 @@ void ProbeReflections::runIrradianceToRefl(RenderPassWorkContext& rgraphCtx)
 
 void ProbeReflections::populateRenderGraph(RenderingContext& rctx)
 {
-	ANKI_TRACE_SCOPED_EVENT(RCubeRefl);
+	ANKI_TRACE_SCOPED_EVENT(ProbeReflections);
 
 	// Iterate the visible probes to find a candidate for update
 	WeakArray<ReflectionProbeComponent*> visibleProbes =
@@ -575,7 +575,7 @@ void ProbeReflections::populateRenderGraph(RenderingContext& rctx)
 void ProbeReflections::runShadowMapping(const Array<GpuVisibilityOutput, 6>& visOuts, const Array<Mat4, 6>& viewProjMats,
 										const Array<Mat3x4, 6>& viewMats, RenderPassWorkContext& rgraphCtx)
 {
-	ANKI_TRACE_SCOPED_EVENT(RCubeRefl);
+	ANKI_TRACE_SCOPED_EVENT(ProbeReflections);
 
 	CommandBuffer& cmdb = *rgraphCtx.m_commandBuffer;
 	cmdb.setPolygonOffset(kShadowsPolygonOffsetFactor, kShadowsPolygonOffsetUnits);

+ 8 - 1
AnKi/Renderer/RtShadows.cpp

@@ -165,7 +165,7 @@ Error RtShadows::initInternal()
 
 void RtShadows::populateRenderGraph(RenderingContext& ctx)
 {
-	ANKI_TRACE_SCOPED_EVENT(RRtShadows);
+	ANKI_TRACE_SCOPED_EVENT(RtShadows);
 
 #define ANKI_DEPTH_DEP \
 	getRenderer().getDepthDownscale().getRt(), TextureUsageBit::kSampledTraceRays | TextureUsageBit::kSampledCompute, \
@@ -227,6 +227,7 @@ void RtShadows::populateRenderGraph(RenderingContext& ctx)
 		ComputeRenderPassDescription& rpass = rgraph.newComputeRenderPass("RtShadows setup build SBT");
 
 		rpass.setWork([this, sbtBuildIndirectArgsBuffer](RenderPassWorkContext& rgraphCtx) {
+			ANKI_TRACE_SCOPED_EVENT(RtShadows);
 			CommandBuffer& cmdb = *rgraphCtx.m_commandBuffer;
 
 			cmdb.bindShaderProgram(m_setupBuildSbtGrProg.get());
@@ -265,6 +266,7 @@ void RtShadows::populateRenderGraph(RenderingContext& ctx)
 		rpass.newBufferDependency(sbtBuildIndirectArgsHandle, BufferUsageBit::kIndirectCompute);
 
 		rpass.setWork([this, sbtBuildIndirectArgsBuffer, sbtBuffer, visibleRenderableIndicesBuff](RenderPassWorkContext& rgraphCtx) {
+			ANKI_TRACE_SCOPED_EVENT(RtShadows);
 			CommandBuffer& cmdb = *rgraphCtx.m_commandBuffer;
 
 			cmdb.bindShaderProgram(m_buildSbtGrProg.get());
@@ -306,6 +308,7 @@ void RtShadows::populateRenderGraph(RenderingContext& ctx)
 		rpass.newBufferDependency(getRenderer().getClusterBinning2().getClustersBufferHandle(), BufferUsageBit::kStorageTraceRaysRead);
 
 		rpass.setWork([this, sbtBuffer](RenderPassWorkContext& rgraphCtx) {
+			ANKI_TRACE_SCOPED_EVENT(RtShadows);
 			CommandBuffer& cmdb = *rgraphCtx.m_commandBuffer;
 
 			cmdb.bindShaderProgram(m_rtLibraryGrProg.get());
@@ -407,6 +410,7 @@ void RtShadows::populateRenderGraph(RenderingContext& ctx)
 		rpass.newTextureDependency(m_runCtx.m_varianceRts[1], TextureUsageBit::kImageComputeWrite);
 
 		rpass.setWork([this, &ctx](RenderPassWorkContext& rgraphCtx) {
+			ANKI_TRACE_SCOPED_EVENT(RtShadows);
 			CommandBuffer& cmdb = *rgraphCtx.m_commandBuffer;
 
 			cmdb.bindShaderProgram(m_svgfVarianceGrProg.get());
@@ -455,6 +459,7 @@ void RtShadows::populateRenderGraph(RenderingContext& ctx)
 			}
 
 			rpass.setWork([this, &ctx, passIdx = i](RenderPassWorkContext& rgraphCtx) {
+				ANKI_TRACE_SCOPED_EVENT(RtShadows);
 				CommandBuffer& cmdb = *rgraphCtx.m_commandBuffer;
 
 				const Bool lastPass = passIdx == U32(m_atrousPassCount - 1);
@@ -505,6 +510,7 @@ void RtShadows::populateRenderGraph(RenderingContext& ctx)
 		rpass.newTextureDependency(m_runCtx.m_upscaledRt, TextureUsageBit::kImageComputeWrite);
 
 		rpass.setWork([this](RenderPassWorkContext& rgraphCtx) {
+			ANKI_TRACE_SCOPED_EVENT(RtShadows);
 			CommandBuffer& cmdb = *rgraphCtx.m_commandBuffer;
 
 			cmdb.bindShaderProgram(m_upscaleGrProg.get());
@@ -523,6 +529,7 @@ void RtShadows::populateRenderGraph(RenderingContext& ctx)
 
 void RtShadows::runDenoise(const RenderingContext& ctx, RenderPassWorkContext& rgraphCtx, Bool horizontal)
 {
+	ANKI_TRACE_SCOPED_EVENT(RtShadows);
 	CommandBuffer& cmdb = *rgraphCtx.m_commandBuffer;
 
 	cmdb.bindShaderProgram((horizontal) ? m_grDenoiseHorizontalProg.get() : m_grDenoiseVerticalProg.get());

+ 6 - 0
AnKi/Renderer/Scale.cpp

@@ -12,6 +12,7 @@
 #include <AnKi/Renderer/MotionVectors.h>
 #include <AnKi/Renderer/GBuffer.h>
 #include <AnKi/Renderer/Tonemapping.h>
+#include <AnKi/Util/Tracer.h>
 
 #if ANKI_COMPILER_GCC_COMPATIBLE
 #	pragma GCC diagnostic push
@@ -173,6 +174,7 @@ Error Scale::init()
 
 void Scale::populateRenderGraph(RenderingContext& ctx)
 {
+	ANKI_TRACE_SCOPED_EVENT(Scale);
 	if(m_upscalingMethod == UpscalingMethod::kNone && m_sharpenMethod == SharpenMethod::kNone)
 	{
 		m_runCtx.m_upscaledTonemappedRt = getRenderer().getTemporalAA().getTonemappedRt();
@@ -316,6 +318,7 @@ void Scale::populateRenderGraph(RenderingContext& ctx)
 
 void Scale::runFsrOrBilinearScaling(RenderPassWorkContext& rgraphCtx)
 {
+	ANKI_TRACE_SCOPED_EVENT(Scale);
 	CommandBuffer& cmdb = *rgraphCtx.m_commandBuffer;
 	const Bool preferCompute = g_preferComputeCVar.get();
 	const RenderTargetHandle inRt = getRenderer().getTemporalAA().getTonemappedRt();
@@ -380,6 +383,7 @@ void Scale::runFsrOrBilinearScaling(RenderPassWorkContext& rgraphCtx)
 
 void Scale::runRcasSharpening(RenderPassWorkContext& rgraphCtx)
 {
+	ANKI_TRACE_SCOPED_EVENT(Scale);
 	CommandBuffer& cmdb = *rgraphCtx.m_commandBuffer;
 	const Bool preferCompute = g_preferComputeCVar.get();
 	const RenderTargetHandle inRt = m_runCtx.m_tonemappedRt;
@@ -428,6 +432,7 @@ void Scale::runRcasSharpening(RenderPassWorkContext& rgraphCtx)
 
 void Scale::runGrUpscaling(RenderingContext& ctx, RenderPassWorkContext& rgraphCtx)
 {
+	ANKI_TRACE_SCOPED_EVENT(Scale);
 	const Vec2 srcRes(getRenderer().getInternalResolution());
 	const Bool reset = getRenderer().getFrameCount() == 0;
 	const Vec2 mvScale = srcRes; // UV space to Pixel space factor
@@ -448,6 +453,7 @@ void Scale::runGrUpscaling(RenderingContext& ctx, RenderPassWorkContext& rgraphC
 
 void Scale::runTonemapping(RenderPassWorkContext& rgraphCtx)
 {
+	ANKI_TRACE_SCOPED_EVENT(Scale);
 	CommandBuffer& cmdb = *rgraphCtx.m_commandBuffer;
 	const Bool preferCompute = g_preferComputeCVar.get();
 	const RenderTargetHandle inRt = m_runCtx.m_upscaledHdrRt;

+ 2 - 2
AnKi/Renderer/ShadowMapping.cpp

@@ -155,7 +155,7 @@ Mat4 ShadowMapping::createSpotLightTextureMatrix(const UVec4& viewport) const
 
 void ShadowMapping::populateRenderGraph(RenderingContext& ctx)
 {
-	ANKI_TRACE_SCOPED_EVENT(RSm);
+	ANKI_TRACE_SCOPED_EVENT(ShadowMapping);
 
 	RenderGraphDescription& rgraph = ctx.m_renderGraphDescr;
 
@@ -551,7 +551,7 @@ void ShadowMapping::processLights(RenderingContext& ctx)
 void ShadowMapping::runShadowMapping(RenderPassWorkContext& rgraphCtx)
 {
 	ANKI_ASSERT(m_runCtx.m_workItems.getSize());
-	ANKI_TRACE_SCOPED_EVENT(RSm);
+	ANKI_TRACE_SCOPED_EVENT(ShadowMapping);
 
 	CommandBuffer& cmdb = *rgraphCtx.m_commandBuffer;
 

+ 4 - 0
AnKi/Renderer/ShadowmapsResolve.cpp

@@ -11,6 +11,7 @@
 #include <AnKi/Renderer/ClusterBinning2.h>
 #include <AnKi/Renderer/RtShadows.h>
 #include <AnKi/Core/CVarSet.h>
+#include <AnKi/Util/Tracer.h>
 
 namespace anki {
 
@@ -64,6 +65,8 @@ Error ShadowmapsResolve::initInternal()
 
 void ShadowmapsResolve::populateRenderGraph(RenderingContext& ctx)
 {
+	ANKI_TRACE_SCOPED_EVENT(ShadowmapsResolve);
+
 	RenderGraphDescription& rgraph = ctx.m_renderGraphDescr;
 	m_runCtx.m_rt = rgraph.newRenderTarget(m_rtDescr);
 
@@ -116,6 +119,7 @@ void ShadowmapsResolve::populateRenderGraph(RenderingContext& ctx)
 
 void ShadowmapsResolve::run(RenderPassWorkContext& rgraphCtx)
 {
+	ANKI_TRACE_SCOPED_EVENT(ShadowmapsResolve);
 	CommandBuffer& cmdb = *rgraphCtx.m_commandBuffer;
 
 	cmdb.bindShaderProgram(m_grProg.get());

+ 3 - 0
AnKi/Renderer/TemporalAA.cpp

@@ -10,6 +10,7 @@
 #include <AnKi/Renderer/Tonemapping.h>
 #include <AnKi/Renderer/MotionVectors.h>
 #include <AnKi/Core/CVarSet.h>
+#include <AnKi/Util/Tracer.h>
 
 namespace anki {
 
@@ -74,6 +75,7 @@ Error TemporalAA::initInternal()
 
 void TemporalAA::populateRenderGraph(RenderingContext& ctx)
 {
+	ANKI_TRACE_SCOPED_EVENT(TemporalAA);
 	RenderGraphDescription& rgraph = ctx.m_renderGraphDescr;
 
 	const U32 historyRtIdx = (getRenderer().getFrameCount() + 1) & 1;
@@ -127,6 +129,7 @@ void TemporalAA::populateRenderGraph(RenderingContext& ctx)
 	prpass->newTextureDependency(getRenderer().getMotionVectors().getMotionVectorsRt(), readUsage);
 
 	prpass->setWork([this](RenderPassWorkContext& rgraphCtx) {
+		ANKI_TRACE_SCOPED_EVENT(TemporalAA);
 		CommandBuffer& cmdb = *rgraphCtx.m_commandBuffer;
 
 		cmdb.bindShaderProgram(m_grProg.get());

+ 3 - 0
AnKi/Renderer/Tonemapping.cpp

@@ -6,6 +6,7 @@
 #include <AnKi/Renderer/Tonemapping.h>
 #include <AnKi/Renderer/DownscaleBlur.h>
 #include <AnKi/Renderer/Renderer.h>
+#include <AnKi/Util/Tracer.h>
 
 namespace anki {
 
@@ -58,12 +59,14 @@ void Tonemapping::importRenderTargets(RenderingContext& ctx)
 
 void Tonemapping::populateRenderGraph(RenderingContext& ctx)
 {
+	ANKI_TRACE_SCOPED_EVENT(Tonemapping);
 	RenderGraphDescription& rgraph = ctx.m_renderGraphDescr;
 
 	// Create the pass
 	ComputeRenderPassDescription& pass = rgraph.newComputeRenderPass("AvgLuminance");
 
 	pass.setWork([this](RenderPassWorkContext& rgraphCtx) {
+		ANKI_TRACE_SCOPED_EVENT(Tonemapping);
 		CommandBuffer& cmdb = *rgraphCtx.m_commandBuffer;
 
 		cmdb.bindShaderProgram(m_grProg.get());

+ 1 - 1
AnKi/Renderer/UiStage.cpp

@@ -30,7 +30,7 @@ void UiStage::draw(U32 width, U32 height, CommandBuffer& cmdb)
 		return;
 	}
 
-	ANKI_TRACE_SCOPED_EVENT(RUi);
+	ANKI_TRACE_SCOPED_EVENT(Ui);
 
 	m_canvas->handleInput();
 	m_canvas->beginBuilding();

+ 4 - 1
AnKi/Renderer/VolumetricFog.cpp

@@ -11,6 +11,7 @@
 #include <AnKi/Renderer/VolumetricLightingAccumulation.h>
 #include <AnKi/Core/CVarSet.h>
 #include <AnKi/Scene/Components/SkyboxComponent.h>
+#include <AnKi/Util/Tracer.h>
 
 namespace anki {
 
@@ -48,6 +49,7 @@ Error VolumetricFog::init()
 
 void VolumetricFog::populateRenderGraph(RenderingContext& ctx)
 {
+	ANKI_TRACE_SCOPED_EVENT(VolumetricFog);
 	RenderGraphDescription& rgraph = ctx.m_renderGraphDescr;
 
 	m_runCtx.m_rt = rgraph.newRenderTarget(m_rtDescr);
@@ -57,7 +59,8 @@ void VolumetricFog::populateRenderGraph(RenderingContext& ctx)
 	pass.newTextureDependency(m_runCtx.m_rt, TextureUsageBit::kImageComputeWrite);
 	pass.newTextureDependency(getRenderer().getVolumetricLightingAccumulation().getRt(), TextureUsageBit::kSampledCompute);
 
-	pass.setWork([this, &ctx](RenderPassWorkContext& rgraphCtx) -> void {
+	pass.setWork([this, &ctx](RenderPassWorkContext& rgraphCtx) {
+		ANKI_TRACE_SCOPED_EVENT(VolumetricFog);
 		CommandBuffer& cmdb = *rgraphCtx.m_commandBuffer;
 
 		cmdb.bindShaderProgram(m_grProg.get());

+ 3 - 0
AnKi/Renderer/VolumetricLightingAccumulation.cpp

@@ -11,6 +11,7 @@
 #include <AnKi/Resource/ImageResource.h>
 #include <AnKi/Core/CVarSet.h>
 #include <AnKi/Scene/Components/SkyboxComponent.h>
+#include <AnKi/Util/Tracer.h>
 
 namespace anki {
 
@@ -68,6 +69,7 @@ Error VolumetricLightingAccumulation::init()
 
 void VolumetricLightingAccumulation::populateRenderGraph(RenderingContext& ctx)
 {
+	ANKI_TRACE_SCOPED_EVENT(VolumetricLightingAccumulation);
 	RenderGraphDescription& rgraph = ctx.m_renderGraphDescr;
 
 	const U readRtIdx = getRenderer().getFrameCount() & 1;
@@ -96,6 +98,7 @@ void VolumetricLightingAccumulation::populateRenderGraph(RenderingContext& ctx)
 	}
 
 	pass.setWork([this](RenderPassWorkContext& rgraphCtx) {
+		ANKI_TRACE_SCOPED_EVENT(VolumetricLightingAccumulation);
 		CommandBuffer& cmdb = *rgraphCtx.m_commandBuffer;
 
 		cmdb.bindShaderProgram(m_grProg.get());

+ 5 - 0
AnKi/Renderer/VrsSriGeneration.cpp

@@ -7,6 +7,7 @@
 #include <AnKi/Renderer/Renderer.h>
 #include <AnKi/Renderer/LightShading.h>
 #include <AnKi/Core/CVarSet.h>
+#include <AnKi/Util/Tracer.h>
 
 namespace anki {
 
@@ -129,6 +130,8 @@ void VrsSriGeneration::populateRenderGraph(RenderingContext& ctx)
 		return;
 	}
 
+	ANKI_TRACE_SCOPED_EVENT(VrsSriGeneration);
+
 	RenderGraphDescription& rgraph = ctx.m_renderGraphDescr;
 
 	// SRI generation
@@ -139,6 +142,7 @@ void VrsSriGeneration::populateRenderGraph(RenderingContext& ctx)
 		pass.newTextureDependency(getRenderer().getLightShading().getRt(), TextureUsageBit::kSampledCompute);
 
 		pass.setWork([this](RenderPassWorkContext& rgraphCtx) {
+			ANKI_TRACE_SCOPED_EVENT(VrsSriGeneration);
 			CommandBuffer& cmdb = *rgraphCtx.m_commandBuffer;
 
 			cmdb.bindShaderProgram(m_grProg.get());
@@ -163,6 +167,7 @@ void VrsSriGeneration::populateRenderGraph(RenderingContext& ctx)
 		pass.newTextureDependency(m_runCtx.m_downscaledRt, TextureUsageBit::kImageComputeWrite);
 
 		pass.setWork([this](RenderPassWorkContext& rgraphCtx) {
+			ANKI_TRACE_SCOPED_EVENT(VrsSriGeneration);
 			const UVec2 rezDownscaled = (getRenderer().getInternalResolution() / 2 + m_sriTexelDimension - 1) / m_sriTexelDimension;
 
 			CommandBuffer& cmdb = *rgraphCtx.m_commandBuffer;