summaryrefslogtreecommitdiff
path: root/src/mbgl/renderer/renderer_impl.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/renderer/renderer_impl.cpp')
-rw-r--r--src/mbgl/renderer/renderer_impl.cpp27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/mbgl/renderer/renderer_impl.cpp b/src/mbgl/renderer/renderer_impl.cpp
index 113840d059..a06b9bd435 100644
--- a/src/mbgl/renderer/renderer_impl.cpp
+++ b/src/mbgl/renderer/renderer_impl.cpp
@@ -14,6 +14,7 @@
#include <mbgl/renderer/render_tree.hpp>
#include <mbgl/util/string.hpp>
#include <mbgl/util/logging.hpp>
+#include <mbgl/perf/runtime_metrics.hpp>
namespace mbgl {
@@ -43,6 +44,8 @@ void Renderer::Impl::setObserver(RendererObserver* observer_) {
}
void Renderer::Impl::render(const RenderTree& renderTree) {
+ MBGL_TRACE_RENDERER_BEGIN(waitrenderable);
+
if (renderState == RenderState::Never) {
observer->onWillStartRenderingMap();
}
@@ -79,6 +82,9 @@ void Renderer::Impl::render(const RenderTree& renderTree) {
const auto& sourceRenderItems = renderTree.getSourceRenderItems();
const auto& layerRenderItems = renderTree.getLayerRenderItems();
+ MBGL_TRACE_RENDERER_END(waitrenderable);
+ MBGL_TRACE_RENDERER_BEGIN(upload);
+
// - UPLOAD PASS -------------------------------------------------------------------------------
// Uploads all required buffers and images before we do any actual rendering.
{
@@ -96,6 +102,10 @@ void Renderer::Impl::render(const RenderTree& renderTree) {
renderTree.getPatternAtlas().upload(*uploadPass);
}
+ MBGL_TRACE_RENDERER_END(upload)
+ MBGL_TRACE_RENDERER_BEGIN(draw);
+ MBGL_TRACE_RENDERER_BEGIN(extrusions);
+
// - 3D PASS -------------------------------------------------------------------------------------
// Renders any 3D layers bottom-to-top to unique FBOs with texture attachments, but share the same
// depth rbo between them.
@@ -123,6 +133,9 @@ void Renderer::Impl::render(const RenderTree& renderTree) {
}
}
+ MBGL_TRACE_RENDERER_END(extrusions)
+ MBGL_TRACE_RENDERER_BEGIN(clear);
+
// - CLEAR -------------------------------------------------------------------------------------
// Renders the backdrop of the OpenGL view. This also paints in areas where we don't have any
// tiles whatsoever.
@@ -136,6 +149,9 @@ void Renderer::Impl::render(const RenderTree& renderTree) {
parameters.renderPass = parameters.encoder->createRenderPass("main buffer", { parameters.backend.getDefaultRenderable(), color, 1, 0 });
}
+ MBGL_TRACE_RENDERER_END(clear)
+ MBGL_TRACE_RENDERER_BEGIN(opaque);
+
// Actually render the layers
parameters.depthRangeSize = 1 - (layerRenderItems.size() + 2) * parameters.numSublayers * parameters.depthEpsilon;
@@ -157,6 +173,9 @@ void Renderer::Impl::render(const RenderTree& renderTree) {
}
}
+ MBGL_TRACE_RENDERER_END(opaque)
+ MBGL_TRACE_RENDERER_BEGIN(translucent);
+
// - TRANSLUCENT PASS --------------------------------------------------------------------------
// Make a second pass, rendering translucent objects. This time, we render bottom-to-top.
{
@@ -174,6 +193,9 @@ void Renderer::Impl::render(const RenderTree& renderTree) {
}
}
+ MBGL_TRACE_RENDERER_END(translucent)
+ MBGL_TRACE_RENDERER_BEGIN(debug);
+
// - DEBUG PASS --------------------------------------------------------------------------------
// Renders debug overlays.
{
@@ -188,6 +210,9 @@ void Renderer::Impl::render(const RenderTree& renderTree) {
}
}
+ MBGL_TRACE_RENDERER_END(debug)
+ MBGL_TRACE_RENDERER_BEGIN(flushencoder);
+
#if not defined(NDEBUG)
if (parameters.debugOptions & MapDebugOptions::StencilClip) {
// Render tile clip boundaries, using stencil buffer to calculate fill color.
@@ -220,6 +245,8 @@ void Renderer::Impl::render(const RenderTree& renderTree) {
renderState = RenderState::Fully;
observer->onDidFinishRenderingMap();
}
+ MBGL_TRACE_RENDERER_END(flushencoder)
+ MBGL_TRACE_RENDERER_END(draw)
}
void Renderer::Impl::reduceMemoryUse() {