From fa5646d112259758cee9fba0564a067376d07566 Mon Sep 17 00:00:00 2001 From: Mikhail Pozdnyakov Date: Wed, 10 Jul 2019 17:53:35 +0300 Subject: [core] Synchronize render passes and render tiles Before this change render passes were assigned for the whole layer at properties evaluation stage. This caused problems, as layer render data are bound to the tile and these data might differ from tile to tile, depending on which tile has been updated by the tile worker and which has not been yet updated. This change takes into consideration the actual render passes required for each tile and combines them for the layer render passes. Naturally, this change also introduces render pass check for each render layer in `RenderLayer::render()` implementations. --- src/mbgl/renderer/layers/render_heatmap_layer.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/mbgl/renderer/layers/render_heatmap_layer.cpp') diff --git a/src/mbgl/renderer/layers/render_heatmap_layer.cpp b/src/mbgl/renderer/layers/render_heatmap_layer.cpp index e087d2ca69..478a8f8c47 100644 --- a/src/mbgl/renderer/layers/render_heatmap_layer.cpp +++ b/src/mbgl/renderer/layers/render_heatmap_layer.cpp @@ -43,7 +43,7 @@ void RenderHeatmapLayer::evaluate(const PropertyEvaluationParameters& parameters passes = (properties->evaluated.get() > 0) ? (RenderPass::Translucent | RenderPass::Pass3D) : RenderPass::None; - + properties->renderPasses = mbgl::underlying_type(passes); evaluatedProperties = std::move(properties); } @@ -95,7 +95,7 @@ void RenderHeatmapLayer::render(PaintParameters& parameters) { "heatmap texture", { *renderTexture, Color{ 0.0f, 0.0f, 0.0f, 1.0f }, {}, {} }); for (const RenderTile& tile : *renderTiles) { - const LayerRenderData* renderData = tile.getLayerRenderData(*baseImpl); + const LayerRenderData* renderData = getRenderDataForPass(tile, parameters.pass); if (!renderData) { continue; } -- cgit v1.2.1