summaryrefslogtreecommitdiff
path: root/src/mbgl/renderer/tile_pyramid.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/renderer/tile_pyramid.cpp')
-rw-r--r--src/mbgl/renderer/tile_pyramid.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/mbgl/renderer/tile_pyramid.cpp b/src/mbgl/renderer/tile_pyramid.cpp
index 6e1bddec0a..37925a54b7 100644
--- a/src/mbgl/renderer/tile_pyramid.cpp
+++ b/src/mbgl/renderer/tile_pyramid.cpp
@@ -238,6 +238,27 @@ void TilePyramid::update(const std::vector<Immutable<style::LayerProperties>>& l
for (auto& pair : tiles) {
pair.second->setShowCollisionBoxes(parameters.debugOptions & MapDebugOptions::Collision);
}
+
+ // Initialize render tiles fields and update the tile contained layer render data.
+ for (RenderTile& renderTile : renderTiles) {
+ Tile& tile = renderTile.tile;
+ if (!tile.isRenderable()) continue;
+
+ const bool holdForFade = tile.holdForFade();
+ for (const auto& layerProperties : layers) {
+ const auto* typeInfo = layerProperties->baseImpl->getTypeInfo();
+ if (holdForFade && typeInfo->fadingTiles == LayerTypeInfo::FadingTiles::NotRequired) {
+ continue;
+ }
+ // Update layer properties for complete tiles; for incomplete just check the presence.
+ bool layerRenderableInTile = tile.isComplete() ? tile.updateLayerProperties(layerProperties)
+ : static_cast<bool>(tile.getBucket(*layerProperties->baseImpl));
+ if (layerRenderableInTile) {
+ renderTile.used = true;
+ renderTile.needsClipping = (renderTile.needsClipping || typeInfo->clipping == LayerTypeInfo::Clipping::Required);
+ }
+ }
+ }
}
void TilePyramid::handleWrapJump(float lng) {