diff --git a/Source/Engine/Graphics/RenderTask.cpp b/Source/Engine/Graphics/RenderTask.cpp
index ad8bbbdc0..94fdb11ac 100644
--- a/Source/Engine/Graphics/RenderTask.cpp
+++ b/Source/Engine/Graphics/RenderTask.cpp
@@ -507,3 +507,10 @@ RenderContextBatch::RenderContextBatch(const RenderContext& context)
Contexts.Add(context);
EnableAsync = JobSystem::GetThreadsCount() > 1;
}
+
+void RenderContextBatch::FlushWaitLabels()
+{
+ for (const int64 label : WaitLabels)
+ JobSystem::Wait(label);
+ WaitLabels.Clear();
+}
diff --git a/Source/Engine/Graphics/RenderTask.h b/Source/Engine/Graphics/RenderTask.h
index 8cba1006e..db1332bba 100644
--- a/Source/Engine/Graphics/RenderTask.h
+++ b/Source/Engine/Graphics/RenderTask.h
@@ -533,4 +533,9 @@ API_STRUCT(NoDefault) struct FLAXENGINE_API RenderContextBatch
{
return Contexts.Get()[0];
}
+
+ ///
+ /// Waits for all scheduled async jobs to complete and clears WaitLabels.
+ ///
+ void FlushWaitLabels();
};
diff --git a/Source/Engine/Renderer/Renderer.cpp b/Source/Engine/Renderer/Renderer.cpp
index a1f531ac1..1098692cc 100644
--- a/Source/Engine/Renderer/Renderer.cpp
+++ b/Source/Engine/Renderer/Renderer.cpp
@@ -356,9 +356,7 @@ void Renderer::DrawActors(RenderContext& renderContext, const Array& cus
Level::DrawActors(renderContextBatch, SceneRendering::DrawCategory::SceneDraw);
Level::DrawActors(renderContextBatch, SceneRendering::DrawCategory::SceneDrawAsync);
JobSystem::SetJobStartingOnDispatch(true);
- for (const int64 label : renderContextBatch.WaitLabels)
- JobSystem::Wait(label);
- renderContextBatch.WaitLabels.Clear();
+ renderContextBatch.FlushWaitLabels();
}
}
@@ -483,9 +481,7 @@ void RenderInner(SceneRenderTask* task, RenderContext& renderContext, RenderCont
// Wait for async jobs to finish
JobSystem::SetJobStartingOnDispatch(true);
- for (const int64 label : renderContextBatch.WaitLabels)
- JobSystem::Wait(label);
- renderContextBatch.WaitLabels.Clear();
+ renderContextBatch.FlushWaitLabels();
// Perform custom post-scene drawing (eg. GPU dispatches used by VFX)
for (int32 i = 0; i < renderContextBatch.Contexts.Count(); i++)