diff options
author | Mikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com> | 2019-05-13 11:25:29 +0300 |
---|---|---|
committer | Mikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com> | 2019-05-14 11:19:56 +0300 |
commit | 81823e35a68eb87d9433457fe9983d06793a77bf (patch) | |
tree | 8fd4fa93dd552d837b9014fda5a56bd1a0162ef8 /src/mbgl/renderer/render_layer.cpp | |
parent | cd24f4c45f6b38e7f3dc73cf0afda9b86b3d85d4 (diff) | |
download | qtlocation-mapboxgl-81823e35a68eb87d9433457fe9983d06793a77bf.tar.gz |
[core] RenderTile shall never be created for a not renderable tile
A RenderTile is already never created for a not renderable tile, guarantied by the checks in `updateRenderables()`.
However, the client code had plenty of `isRenderable()` checks in the render path, which complicated the code and affected rendering performance.
This patch removes the unneeded checks from the client code and puts an assertion to `TilePyramid::addRenderTile()`.
Diffstat (limited to 'src/mbgl/renderer/render_layer.cpp')
-rw-r--r-- | src/mbgl/renderer/render_layer.cpp | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/src/mbgl/renderer/render_layer.cpp b/src/mbgl/renderer/render_layer.cpp index 757ee4f241..373a693ffd 100644 --- a/src/mbgl/renderer/render_layer.cpp +++ b/src/mbgl/renderer/render_layer.cpp @@ -40,8 +40,7 @@ bool RenderLayer::supportsZoom(float zoom) const { } void RenderLayer::setRenderTiles(RenderTiles tiles, const TransformState&) { - auto filterFn = [](auto& tile){ return !tile.tile.isRenderable() || tile.tile.holdForFade(); }; - renderTiles = filterRenderTiles(std::move(tiles), filterFn); + renderTiles = filterRenderTiles(std::move(tiles)); } const RenderLayerSymbolInterface* RenderLayer::getSymbolInterface() const { @@ -52,16 +51,16 @@ optional<Color> RenderLayer::getSolidBackground() const { return nullopt; } -RenderLayer::RenderTiles RenderLayer::filterRenderTiles(RenderTiles tiles, FilterFunctionPtr filterFn) const { - assert(filterFn != nullptr); +RenderLayer::RenderTiles RenderLayer::filterRenderTiles(RenderTiles tiles) const { RenderTiles filtered; for (auto& tileRef : tiles) { - auto& tile = tileRef.get(); - if (filterFn(tile)) { + auto& tile = tileRef.get().tile; + assert(tile.isRenderable()); + if (tile.holdForFade()) { continue; } - filtered.emplace_back(tile); + filtered.emplace_back(tileRef); } return filtered; } |