summaryrefslogtreecommitdiff
path: root/src/mbgl/renderer/layers
diff options
context:
space:
mode:
authorGali Nelle <galinelle.mapbox@gmail.com>2020-02-09 17:09:01 +0200
committerGali Nelle <galinelle.mapbox@gmail.com>2020-02-17 13:35:41 +0200
commit6f33547d757fb1394d1e643cdc226ae30b2edbc6 (patch)
tree02e76ddcb9e26381a9152e55287aa4d4d2d87fa5 /src/mbgl/renderer/layers
parent97cab6365bd083d162544eb4bcae4ebd47a7ecae (diff)
downloadqtlocation-mapboxgl-6f33547d757fb1394d1e643cdc226ae30b2edbc6.tar.gz
Add tracing entry points in the rendering pipelineupstream/galinelle_mbgl_tracing
This also includes a default tracing implementation that does not require hooking into a platform instrumentation, but simply stores timestamps into an array that can be dumped into a json file. Among possible use cases, dumping such metrics to file in CI to detect regressions of specific stages of the pipeline.
Diffstat (limited to 'src/mbgl/renderer/layers')
-rw-r--r--src/mbgl/renderer/layers/render_background_layer.cpp4
-rw-r--r--src/mbgl/renderer/layers/render_circle_layer.cpp4
-rw-r--r--src/mbgl/renderer/layers/render_fill_extrusion_layer.cpp4
-rw-r--r--src/mbgl/renderer/layers/render_fill_layer.cpp3
-rw-r--r--src/mbgl/renderer/layers/render_heatmap_layer.cpp4
-rw-r--r--src/mbgl/renderer/layers/render_hillshade_layer.cpp5
-rw-r--r--src/mbgl/renderer/layers/render_line_layer.cpp4
-rw-r--r--src/mbgl/renderer/layers/render_raster_layer.cpp3
-rw-r--r--src/mbgl/renderer/layers/render_symbol_layer.cpp4
9 files changed, 27 insertions, 8 deletions
diff --git a/src/mbgl/renderer/layers/render_background_layer.cpp b/src/mbgl/renderer/layers/render_background_layer.cpp
index 694addcc97..bea7b1fa6f 100644
--- a/src/mbgl/renderer/layers/render_background_layer.cpp
+++ b/src/mbgl/renderer/layers/render_background_layer.cpp
@@ -11,6 +11,7 @@
#include <mbgl/util/tile_cover.hpp>
#include <mbgl/map/transform_state.hpp>
#include <mbgl/gfx/cull_face_mode.hpp>
+#include <mbgl/perf/runtime_metrics.hpp>
namespace mbgl {
@@ -65,7 +66,7 @@ bool RenderBackgroundLayer::hasCrossfade() const {
void RenderBackgroundLayer::render(PaintParameters& parameters) {
// Note that for bottommost layers without a pattern, the background color is drawn with
// glClear rather than this method.
-
+ MBGL_TRACE_RENDERER_BEGIN(background_layer);
const Properties<>::PossiblyEvaluated properties;
const BackgroundProgram::Binders paintAttributeData(properties, 0);
@@ -152,6 +153,7 @@ void RenderBackgroundLayer::render(PaintParameters& parameters) {
);
}
}
+ MBGL_TRACE_RENDERER_END(background_layer);
}
optional<Color> RenderBackgroundLayer::getSolidBackground() const {
diff --git a/src/mbgl/renderer/layers/render_circle_layer.cpp b/src/mbgl/renderer/layers/render_circle_layer.cpp
index b88a026e11..c870c34b0b 100644
--- a/src/mbgl/renderer/layers/render_circle_layer.cpp
+++ b/src/mbgl/renderer/layers/render_circle_layer.cpp
@@ -10,6 +10,7 @@
#include <mbgl/gfx/cull_face_mode.hpp>
#include <mbgl/util/math.hpp>
#include <mbgl/util/intersection_tests.hpp>
+#include <mbgl/perf/runtime_metrics.hpp>
namespace mbgl {
@@ -63,7 +64,7 @@ void RenderCircleLayer::render(PaintParameters& parameters) {
if (parameters.pass == RenderPass::Opaque) {
return;
}
-
+ MBGL_TRACE_RENDERER_BEGIN(circle_layer);
for (const RenderTile& tile : *renderTiles) {
const LayerRenderData* renderData = getRenderDataForPass(tile, parameters.pass);
if (!renderData) {
@@ -122,6 +123,7 @@ void RenderCircleLayer::render(PaintParameters& parameters) {
getID()
);
}
+ MBGL_TRACE_RENDERER_END(circle_layer);
}
GeometryCoordinate projectPoint(const GeometryCoordinate& p, const mat4& posMatrix, const Size& size) {
diff --git a/src/mbgl/renderer/layers/render_fill_extrusion_layer.cpp b/src/mbgl/renderer/layers/render_fill_extrusion_layer.cpp
index af0bc788d0..df3bab4d92 100644
--- a/src/mbgl/renderer/layers/render_fill_extrusion_layer.cpp
+++ b/src/mbgl/renderer/layers/render_fill_extrusion_layer.cpp
@@ -16,6 +16,7 @@
#include <mbgl/tile/tile.hpp>
#include <mbgl/util/intersection_tests.hpp>
#include <mbgl/util/math.hpp>
+#include <mbgl/perf/runtime_metrics.hpp>
namespace mbgl {
@@ -71,7 +72,7 @@ void RenderFillExtrusionLayer::render(PaintParameters& parameters) {
if (parameters.pass != RenderPass::Translucent) {
return;
}
-
+ MBGL_TRACE_RENDERER_BEGIN(extrusion_layer);
const auto& evaluated = static_cast<const FillExtrusionLayerProperties&>(*evaluatedProperties).evaluated;
const auto& crossfade = static_cast<const FillExtrusionLayerProperties&>(*evaluatedProperties).crossfade;
if (evaluatedProperties->renderPasses == mbgl::underlying_type(RenderPass::None)) {
@@ -224,6 +225,7 @@ void RenderFillExtrusionLayer::render(PaintParameters& parameters) {
// to prevent the second draw in cases where we have coincident polygons.
drawTiles(parameters.stencilModeFor3D(), parameters.colorModeForRenderPass(), "color");
}
+ MBGL_TRACE_RENDERER_END(extrusion_layer);
}
bool RenderFillExtrusionLayer::queryIntersectsFeature(const GeometryCoordinates& queryGeometry,
diff --git a/src/mbgl/renderer/layers/render_fill_layer.cpp b/src/mbgl/renderer/layers/render_fill_layer.cpp
index bbfcef7aba..788415cc16 100644
--- a/src/mbgl/renderer/layers/render_fill_layer.cpp
+++ b/src/mbgl/renderer/layers/render_fill_layer.cpp
@@ -17,6 +17,7 @@
#include <mbgl/tile/tile.hpp>
#include <mbgl/util/intersection_tests.hpp>
#include <mbgl/util/math.hpp>
+#include <mbgl/perf/runtime_metrics.hpp>
namespace mbgl {
@@ -75,6 +76,7 @@ bool RenderFillLayer::hasCrossfade() const {
void RenderFillLayer::render(PaintParameters& parameters) {
assert(renderTiles);
+ MBGL_TRACE_RENDERER_BEGIN(fill_layer);
if (unevaluated.get<FillPattern>().isUndefined()) {
parameters.renderTileClippingMasks(renderTiles);
for (const RenderTile& tile : *renderTiles) {
@@ -248,6 +250,7 @@ void RenderFillLayer::render(PaintParameters& parameters) {
}
}
}
+ MBGL_TRACE_RENDERER_END(fill_layer);
}
bool RenderFillLayer::queryIntersectsFeature(const GeometryCoordinates& queryGeometry,
diff --git a/src/mbgl/renderer/layers/render_heatmap_layer.cpp b/src/mbgl/renderer/layers/render_heatmap_layer.cpp
index 797aedd297..8a4f53463f 100644
--- a/src/mbgl/renderer/layers/render_heatmap_layer.cpp
+++ b/src/mbgl/renderer/layers/render_heatmap_layer.cpp
@@ -14,6 +14,7 @@
#include <mbgl/gfx/context.hpp>
#include <mbgl/util/math.hpp>
#include <mbgl/util/intersection_tests.hpp>
+#include <mbgl/perf/runtime_metrics.hpp>
namespace mbgl {
@@ -72,7 +73,7 @@ void RenderHeatmapLayer::render(PaintParameters& parameters) {
if (parameters.pass == RenderPass::Opaque) {
return;
}
-
+ MBGL_TRACE_RENDERER_BEGIN(heatmap_layer);
if (parameters.pass == RenderPass::Pass3D) {
const auto& viewportSize = parameters.staticData.backendSize;
const auto size = Size{viewportSize.width / 4, viewportSize.height / 4};
@@ -196,6 +197,7 @@ void RenderHeatmapLayer::render(PaintParameters& parameters) {
getID()
);
}
+ MBGL_TRACE_RENDERER_END(heatmap_layer);
}
void RenderHeatmapLayer::updateColorRamp() {
diff --git a/src/mbgl/renderer/layers/render_hillshade_layer.cpp b/src/mbgl/renderer/layers/render_hillshade_layer.cpp
index b570d9c4c9..5549072319 100644
--- a/src/mbgl/renderer/layers/render_hillshade_layer.cpp
+++ b/src/mbgl/renderer/layers/render_hillshade_layer.cpp
@@ -13,6 +13,7 @@
#include <mbgl/gfx/offscreen_texture.hpp>
#include <mbgl/gfx/render_pass.hpp>
#include <mbgl/util/geo.hpp>
+#include <mbgl/perf/runtime_metrics.hpp>
namespace mbgl {
@@ -79,6 +80,7 @@ void RenderHillshadeLayer::render(PaintParameters& parameters) {
assert(renderTiles);
if (parameters.pass != RenderPass::Translucent && parameters.pass != RenderPass::Pass3D)
return;
+ MBGL_TRACE_RENDERER_BEGIN(hillshade_layer);
const auto& evaluated = static_cast<const HillshadeLayerProperties&>(*evaluatedProperties).evaluated;
auto draw = [&] (const mat4& matrix,
const auto& vertexBuffer,
@@ -221,9 +223,8 @@ void RenderHillshadeLayer::render(PaintParameters& parameters) {
});
}
}
-
-
}
+ MBGL_TRACE_RENDERER_END(hillshade_layer);
}
} // namespace mbgl
diff --git a/src/mbgl/renderer/layers/render_line_layer.cpp b/src/mbgl/renderer/layers/render_line_layer.cpp
index 588cf6286c..7e0f2a89a7 100644
--- a/src/mbgl/renderer/layers/render_line_layer.cpp
+++ b/src/mbgl/renderer/layers/render_line_layer.cpp
@@ -16,6 +16,7 @@
#include <mbgl/tile/tile.hpp>
#include <mbgl/util/intersection_tests.hpp>
#include <mbgl/util/math.hpp>
+#include <mbgl/perf/runtime_metrics.hpp>
namespace mbgl {
@@ -95,7 +96,7 @@ void RenderLineLayer::render(PaintParameters& parameters) {
if (parameters.pass == RenderPass::Opaque) {
return;
}
-
+ MBGL_TRACE_RENDERER_BEGIN(line_layer);
parameters.renderTileClippingMasks(renderTiles);
for (const RenderTile& tile : *renderTiles) {
@@ -217,6 +218,7 @@ void RenderLineLayer::render(PaintParameters& parameters) {
LineProgram::TextureBindings{});
}
}
+ MBGL_TRACE_RENDERER_END(line_layer);
}
namespace {
diff --git a/src/mbgl/renderer/layers/render_raster_layer.cpp b/src/mbgl/renderer/layers/render_raster_layer.cpp
index 8a1a8a6c28..79cca99903 100644
--- a/src/mbgl/renderer/layers/render_raster_layer.cpp
+++ b/src/mbgl/renderer/layers/render_raster_layer.cpp
@@ -9,6 +9,7 @@
#include <mbgl/tile/tile.hpp>
#include <mbgl/gfx/cull_face_mode.hpp>
#include <mbgl/style/layers/raster_layer_impl.hpp>
+#include <mbgl/perf/runtime_metrics.hpp>
namespace mbgl {
@@ -90,6 +91,7 @@ void RenderRasterLayer::render(PaintParameters& parameters) {
if (parameters.pass != RenderPass::Translucent || (!renderTiles && !imageData)) {
return;
}
+ MBGL_TRACE_RENDERER_BEGIN(raster_layer);
const auto& evaluated = static_cast<const RasterLayerProperties&>(*evaluatedProperties).evaluated;
RasterProgram::Binders paintAttributeData{ evaluated, 0 };
@@ -199,6 +201,7 @@ void RenderRasterLayer::render(PaintParameters& parameters) {
}
}
}
+ MBGL_TRACE_RENDERER_END(raster_layer);
}
} // namespace mbgl
diff --git a/src/mbgl/renderer/layers/render_symbol_layer.cpp b/src/mbgl/renderer/layers/render_symbol_layer.cpp
index 17376fd864..d41e76fb28 100644
--- a/src/mbgl/renderer/layers/render_symbol_layer.cpp
+++ b/src/mbgl/renderer/layers/render_symbol_layer.cpp
@@ -19,6 +19,7 @@
#include <mbgl/layout/symbol_layout.hpp>
#include <mbgl/layout/symbol_layout.hpp>
#include <mbgl/util/math.hpp>
+#include <mbgl/perf/runtime_metrics.hpp>
#include <cmath>
#include <set>
@@ -345,7 +346,7 @@ void RenderSymbolLayer::render(PaintParameters& parameters) {
if (parameters.pass == RenderPass::Opaque) {
return;
}
-
+ MBGL_TRACE_RENDERER_BEGIN(symbol_layer);
const bool sortFeaturesByKey = !impl(baseImpl).layout.get<SymbolSortKey>().isUndefined();
std::multiset<RenderableSegment> renderableSegments;
@@ -540,6 +541,7 @@ void RenderSymbolLayer::render(PaintParameters& parameters) {
}
}
}
+ MBGL_TRACE_RENDERER_END(symbol_layer);
}
// static