diff options
Diffstat (limited to 'src/mbgl/renderer')
-rw-r--r-- | src/mbgl/renderer/sources/render_custom_geometry_source.cpp | 25 | ||||
-rw-r--r-- | src/mbgl/renderer/sources/render_geojson_source.cpp | 24 | ||||
-rw-r--r-- | src/mbgl/renderer/sources/render_raster_dem_source.cpp | 22 | ||||
-rw-r--r-- | src/mbgl/renderer/sources/render_raster_source.cpp | 22 | ||||
-rw-r--r-- | src/mbgl/renderer/sources/render_vector_source.cpp | 24 | ||||
-rw-r--r-- | src/mbgl/renderer/tile_pyramid.cpp | 9 | ||||
-rw-r--r-- | src/mbgl/renderer/tile_pyramid.hpp | 3 |
7 files changed, 70 insertions, 59 deletions
diff --git a/src/mbgl/renderer/sources/render_custom_geometry_source.cpp b/src/mbgl/renderer/sources/render_custom_geometry_source.cpp index 6b81658370..ea6f5c3102 100644 --- a/src/mbgl/renderer/sources/render_custom_geometry_source.cpp +++ b/src/mbgl/renderer/sources/render_custom_geometry_source.cpp @@ -33,17 +33,20 @@ void RenderCustomGeometrySource::update(Immutable<style::Source::Impl> baseImpl_ return; } - tilePyramid.update(layers, - needsRendering, - needsRelayout, - parameters, - SourceType::CustomVector, - util::tileSize, - impl().getZoomRange(), - {}, - [&] (const OverscaledTileID& tileID) { - return std::make_unique<CustomGeometryTile>(tileID, impl().id, parameters, impl().getTileOptions(), *tileLoader); - }); + tilePyramid.update( + layers, + needsRendering, + needsRelayout, + parameters, + SourceType::CustomVector, + util::tileSize, + impl().getZoomRange(), + {}, + [&](const OverscaledTileID& tileID) { + return std::make_unique<CustomGeometryTile>( + tileID, impl().id, parameters, impl().getTileOptions(), *tileLoader); + }, + baseImpl->getPrefetchZoomDelta()); } } // namespace mbgl diff --git a/src/mbgl/renderer/sources/render_geojson_source.cpp b/src/mbgl/renderer/sources/render_geojson_source.cpp index 94d171cf18..45a91e3fa0 100644 --- a/src/mbgl/renderer/sources/render_geojson_source.cpp +++ b/src/mbgl/renderer/sources/render_geojson_source.cpp @@ -103,17 +103,19 @@ void RenderGeoJSONSource::update(Immutable<style::Source::Impl> baseImpl_, if (!data_) return; - tilePyramid.update(layers, - needsRendering, - needsRelayout, - parameters, - SourceType::GeoJSON, - util::tileSize, - impl().getZoomRange(), - optional<LatLngBounds>{}, - [&, data_](const OverscaledTileID& tileID) { - return std::make_unique<GeoJSONTile>(tileID, impl().id, parameters, data_); - }); + tilePyramid.update( + layers, + needsRendering, + needsRelayout, + parameters, + SourceType::GeoJSON, + util::tileSize, + impl().getZoomRange(), + optional<LatLngBounds>{}, + [&, data_](const OverscaledTileID& tileID) { + return std::make_unique<GeoJSONTile>(tileID, impl().id, parameters, data_); + }, + baseImpl->getPrefetchZoomDelta()); } mapbox::util::variant<Value, FeatureCollection> diff --git a/src/mbgl/renderer/sources/render_raster_dem_source.cpp b/src/mbgl/renderer/sources/render_raster_dem_source.cpp index fb6e343670..953484f6c6 100644 --- a/src/mbgl/renderer/sources/render_raster_dem_source.cpp +++ b/src/mbgl/renderer/sources/render_raster_dem_source.cpp @@ -27,17 +27,17 @@ void RenderRasterDEMSource::updateInternal(const Tileset& tileset, const bool needsRendering, const bool needsRelayout, const TileParameters& parameters) { - tilePyramid.update(layers, - needsRendering, - needsRelayout, - parameters, - SourceType::RasterDEM, - impl().getTileSize(), - tileset.zoomRange, - tileset.bounds, - [&] (const OverscaledTileID& tileID) { - return std::make_unique<RasterDEMTile>(tileID, parameters, tileset); - }); + tilePyramid.update( + layers, + needsRendering, + needsRelayout, + parameters, + SourceType::RasterDEM, + impl().getTileSize(), + tileset.zoomRange, + tileset.bounds, + [&](const OverscaledTileID& tileID) { return std::make_unique<RasterDEMTile>(tileID, parameters, tileset); }, + baseImpl->getPrefetchZoomDelta()); algorithm::updateTileMasks(tilePyramid.getRenderedTiles()); } diff --git a/src/mbgl/renderer/sources/render_raster_source.cpp b/src/mbgl/renderer/sources/render_raster_source.cpp index 408f8a4e11..7ef7b26459 100644 --- a/src/mbgl/renderer/sources/render_raster_source.cpp +++ b/src/mbgl/renderer/sources/render_raster_source.cpp @@ -25,17 +25,17 @@ void RenderRasterSource::updateInternal(const Tileset& tileset, const bool needsRendering, const bool needsRelayout, const TileParameters& parameters) { - tilePyramid.update(layers, - needsRendering, - needsRelayout, - parameters, - SourceType::Raster, - impl().getTileSize(), - tileset.zoomRange, - tileset.bounds, - [&] (const OverscaledTileID& tileID) { - return std::make_unique<RasterTile>(tileID, parameters, tileset); - }); + tilePyramid.update( + layers, + needsRendering, + needsRelayout, + parameters, + SourceType::Raster, + impl().getTileSize(), + tileset.zoomRange, + tileset.bounds, + [&](const OverscaledTileID& tileID) { return std::make_unique<RasterTile>(tileID, parameters, tileset); }, + baseImpl->getPrefetchZoomDelta()); algorithm::updateTileMasks(tilePyramid.getRenderedTiles()); } diff --git a/src/mbgl/renderer/sources/render_vector_source.cpp b/src/mbgl/renderer/sources/render_vector_source.cpp index 6e4fdede10..324599d45d 100644 --- a/src/mbgl/renderer/sources/render_vector_source.cpp +++ b/src/mbgl/renderer/sources/render_vector_source.cpp @@ -21,17 +21,19 @@ void RenderVectorSource::updateInternal(const Tileset& tileset, const bool needsRendering, const bool needsRelayout, const TileParameters& parameters) { - tilePyramid.update(layers, - needsRendering, - needsRelayout, - parameters, - SourceType::Vector, - util::tileSize, - tileset.zoomRange, - tileset.bounds, - [&] (const OverscaledTileID& tileID) { - return std::make_unique<VectorTile>(tileID, baseImpl->id, parameters, tileset); - }); + tilePyramid.update( + layers, + needsRendering, + needsRelayout, + parameters, + SourceType::Vector, + util::tileSize, + tileset.zoomRange, + tileset.bounds, + [&](const OverscaledTileID& tileID) { + return std::make_unique<VectorTile>(tileID, baseImpl->id, parameters, tileset); + }, + baseImpl->getPrefetchZoomDelta()); } } // namespace mbgl diff --git a/src/mbgl/renderer/tile_pyramid.cpp b/src/mbgl/renderer/tile_pyramid.cpp index 586d3b5a8a..38d984bec4 100644 --- a/src/mbgl/renderer/tile_pyramid.cpp +++ b/src/mbgl/renderer/tile_pyramid.cpp @@ -57,7 +57,8 @@ void TilePyramid::update(const std::vector<Immutable<style::LayerProperties>>& l const uint16_t tileSize, const Range<uint8_t> zoomRange, optional<LatLngBounds> bounds, - std::function<std::unique_ptr<Tile> (const OverscaledTileID&)> createTile) { + std::function<std::unique_ptr<Tile>(const OverscaledTileID&)> createTile, + optional<uint8_t> sourcePrefetchZoomDelta) { // If we need a relayout, abandon any cached tiles; they're now stale. if (needsRelayout) { cache.clear(); @@ -105,8 +106,10 @@ void TilePyramid::update(const std::vector<Immutable<style::LayerProperties>>& l if (parameters.mode == MapMode::Continuous && type != style::SourceType::GeoJSON && type != style::SourceType::Annotations) { // Request lower zoom level tiles (if configured to do so) in an attempt // to show something on the screen faster at the cost of a little of bandwidth. - if (parameters.prefetchZoomDelta) { - panZoom = std::max<int32_t>(tileZoom - parameters.prefetchZoomDelta, zoomRange.min); + const uint8_t prefetchZoomDelta = + sourcePrefetchZoomDelta ? *sourcePrefetchZoomDelta : parameters.prefetchZoomDelta; + if (prefetchZoomDelta) { + panZoom = std::max<int32_t>(tileZoom - prefetchZoomDelta, zoomRange.min); } if (panZoom < idealZoom) { diff --git a/src/mbgl/renderer/tile_pyramid.hpp b/src/mbgl/renderer/tile_pyramid.hpp index 3b5cab5d6c..5f2bfd1ea9 100644 --- a/src/mbgl/renderer/tile_pyramid.hpp +++ b/src/mbgl/renderer/tile_pyramid.hpp @@ -41,7 +41,8 @@ public: uint16_t tileSize, Range<uint8_t> zoomRange, optional<LatLngBounds> bounds, - std::function<std::unique_ptr<Tile> (const OverscaledTileID&)> createTile); + std::function<std::unique_ptr<Tile>(const OverscaledTileID&)> createTile, + optional<uint8_t> sourcePrefetchZoomDelta); const std::map<UnwrappedTileID, std::reference_wrapper<Tile>>& getRenderedTiles() const { return renderedTiles; } Tile* getTile(const OverscaledTileID&); |