diff options
author | Mikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com> | 2019-04-04 12:21:00 +0300 |
---|---|---|
committer | Mikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com> | 2019-04-04 13:54:47 +0300 |
commit | 8c0994d1e63d5c6bfab329e74b63fde9207b7875 (patch) | |
tree | 4bee6acfa26a6c3863464a8502ff543d4ec4b8a0 | |
parent | 592a8a610fffc2073cb7991f1cf3a1b1d004c061 (diff) | |
download | qtlocation-mapboxgl-upstream/mikhail_refactor_renderer_impl.tar.gz |
[core] Minor performance tweaks in renderer implupstream/mikhail_refactor_renderer_impl
-rw-r--r-- | src/mbgl/renderer/renderer_impl.cpp | 8 | ||||
-rw-r--r-- | src/mbgl/tile/geometry_tile.cpp | 7 |
2 files changed, 7 insertions, 8 deletions
diff --git a/src/mbgl/renderer/renderer_impl.cpp b/src/mbgl/renderer/renderer_impl.cpp index 0fa418ebbe..9446cbc194 100644 --- a/src/mbgl/renderer/renderer_impl.cpp +++ b/src/mbgl/renderer/renderer_impl.cpp @@ -165,7 +165,6 @@ void Renderer::Impl::render(const UpdateParameters& updateParameters) { imageManager->notifyIfMissingImageAdded(); imageManager->setLoaded(updateParameters.spriteLoaded); - const LayerDifference layerDiff = diffLayers(layerImpls, updateParameters.layers); layerImpls = updateParameters.layers; @@ -191,15 +190,14 @@ void Renderer::Impl::render(const UpdateParameters& updateParameters) { // Update layers for class and zoom changes. for (const auto& entry : renderLayers) { RenderLayer& layer = *entry.second; - const bool layerAdded = layerDiff.added.count(entry.first); - const bool layerChanged = layerDiff.changed.count(entry.first); + const bool layerAddedOrChanged = layerDiff.added.count(entry.first) || layerDiff.changed.count(entry.first); - if (layerAdded || layerChanged) { + if (layerAddedOrChanged) { layer.transition(transitionParameters); layer.update(); } - if (layerAdded || layerChanged || zoomChanged || layer.hasTransition() || layer.hasCrossfade()) { + if (layerAddedOrChanged || zoomChanged || layer.hasTransition() || layer.hasCrossfade()) { layer.evaluate(evaluationParameters); } } diff --git a/src/mbgl/tile/geometry_tile.cpp b/src/mbgl/tile/geometry_tile.cpp index 9165c03267..a3ae4217c9 100644 --- a/src/mbgl/tile/geometry_tile.cpp +++ b/src/mbgl/tile/geometry_tile.cpp @@ -93,12 +93,13 @@ void GeometryTile::setLayers(const std::vector<Immutable<Layer::Impl>>& layers) pending = true; std::vector<Immutable<Layer::Impl>> impls; + impls.reserve(layers.size()); for (const auto& layer : layers) { // Skip irrelevant layers. - if (layer->getTypeInfo()->source == LayerTypeInfo::Source::NotRequired || - layer->source != sourceID || - id.overscaledZ < std::floor(layer->minZoom) || + assert(layer->getTypeInfo()->source != LayerTypeInfo::Source::NotRequired); + assert(layer->source == sourceID); + if (id.overscaledZ < std::floor(layer->minZoom) || id.overscaledZ >= std::ceil(layer->maxZoom) || layer->visibility == VisibilityType::None) { continue; |