diff options
Diffstat (limited to 'src/mbgl/renderer/tile_pyramid.cpp')
-rw-r--r-- | src/mbgl/renderer/tile_pyramid.cpp | 21 |
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) { |