diff --git a/src/mbgl/renderer/renderer_impl.cpp b/src/mbgl/renderer/renderer_impl.cpp index b37134893..1633c566e 100644 --- a/src/mbgl/renderer/renderer_impl.cpp +++ b/src/mbgl/renderer/renderer_impl.cpp @@ -20,6 +20,10 @@ #include #include +#ifndef NDEBUG +#include +#endif + #include #include #include @@ -51,6 +55,30 @@ RendererObserver& nullObserver() { return observer; } +#ifndef NDEBUG +constexpr uint64_t RetainedCounterLogIntervalFrames = 120; + +void logRetainedRendererCounters() { + const auto snapshot = particle::rendererDebugCounterSnapshot(); + if (snapshot.fullRendererFrame == 0 || + snapshot.fullRendererFrame % RetainedCounterLogIntervalFrames != 0) { + return; + } + + std::ostringstream message; + message << "ParticleRetained:" + << " frame=" << snapshot.fullRendererFrame + << " build=" << snapshot.retainedUnderlayBuild + << " reuse=" << snapshot.retainedUnderlayReuse + << " fallback=" << snapshot.retainedUnderlayFallback + << " invalidation=" << snapshot.retainedUnderlayInvalidation + << " staticDraw=" << snapshot.retainedUnderlayStaticGroupDraw + << " dynamicDraw=" << snapshot.retainedDynamicGroupDraw + << " particleAdvance=" << snapshot.particleSimulationAdvance; + Log::Info(Event::Render, message.str()); +} +#endif + } // namespace Renderer::Impl::Impl(gfx::RendererBackend& backend_, @@ -590,6 +618,10 @@ void Renderer::Impl::render(const RenderTree& renderTree, const std::shared_ptr< observer->onDidFinishRenderingMap(); } +#ifndef NDEBUG + logRetainedRendererCounters(); +#endif + frameCount += 1; MLN_END_FRAME(); }