summaryrefslogtreecommitdiff
path: root/src/mbgl/renderer/tile_pyramid.cpp
diff options
context:
space:
mode:
authorMikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com>2019-05-13 11:25:29 +0300
committerMikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com>2019-05-14 11:19:56 +0300
commit81823e35a68eb87d9433457fe9983d06793a77bf (patch)
tree8fd4fa93dd552d837b9014fda5a56bd1a0162ef8 /src/mbgl/renderer/tile_pyramid.cpp
parentcd24f4c45f6b38e7f3dc73cf0afda9b86b3d85d4 (diff)
downloadqtlocation-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/tile_pyramid.cpp')
-rw-r--r--src/mbgl/renderer/tile_pyramid.cpp6
1 files changed, 2 insertions, 4 deletions
diff --git a/src/mbgl/renderer/tile_pyramid.cpp b/src/mbgl/renderer/tile_pyramid.cpp
index 9c73361cb0..32b3ef0dba 100644
--- a/src/mbgl/renderer/tile_pyramid.cpp
+++ b/src/mbgl/renderer/tile_pyramid.cpp
@@ -130,7 +130,6 @@ void TilePyramid::update(const std::vector<Immutable<style::LayerProperties>>& l
// use because they're still loading. In addition to that, we also need to retain all tiles that
// we're actively using, e.g. as a replacement for tile that aren't loaded yet.
std::set<OverscaledTileID> retain;
- std::set<UnwrappedTileID> rendered;
auto retainTileFn = [&](Tile& tile, TileNecessity necessity) -> void {
if (retain.emplace(tile.id).second) {
@@ -178,7 +177,6 @@ void TilePyramid::update(const std::vector<Immutable<style::LayerProperties>>& l
auto renderTileFn = [&](const UnwrappedTileID& tileID, Tile& tile) {
addRenderTile(tileID, tile);
- rendered.emplace(tileID);
previouslyRenderedTiles.erase(tileID); // Still rendering this tile, no need for special fading logic.
tile.markRenderedIdeal();
};
@@ -201,7 +199,6 @@ void TilePyramid::update(const std::vector<Immutable<style::LayerProperties>>& l
// Don't mark the tile "Required" to avoid triggering a new network request
retainTileFn(tile, TileNecessity::Optional);
addRenderTile(previouslyRenderedTile.first, tile);
- rendered.emplace(previouslyRenderedTile.first);
}
}
@@ -242,7 +239,7 @@ void TilePyramid::update(const std::vector<Immutable<style::LayerProperties>>& l
// Initialize render tiles fields and update the tile contained layer render data.
for (RenderTile& renderTile : renderTiles) {
Tile& tile = renderTile.tile;
- if (!tile.isRenderable()) continue;
+ assert(tile.isRenderable());
const bool holdForFade = tile.holdForFade();
for (const auto& layerProperties : layers) {
@@ -392,6 +389,7 @@ void TilePyramid::clearAll() {
}
void TilePyramid::addRenderTile(const UnwrappedTileID& tileID, Tile& tile) {
+ assert(tile.isRenderable());
auto it = std::lower_bound(renderTiles.begin(), renderTiles.end(), tileID,
[](const RenderTile& a, const UnwrappedTileID& id) { return a.id < id; });
renderTiles.emplace(it, tileID, tile);