diff --git a/src/mbgl/annotation/render_annotation_source.cpp b/src/mbgl/annotation/render_annotation_source.cpp index b03b7662d..efa1d1987 100644 --- a/src/mbgl/annotation/render_annotation_source.cpp +++ b/src/mbgl/annotation/render_annotation_source.cpp @@ -33,15 +33,13 @@ void RenderAnnotationSource::update(Immutable baseImpl_, needsRendering, needsRelayout, parameters, - SourceType::Annotations, + *baseImpl, util::tileSize, // Zoom level 16 is typically sufficient for annotations. // See https://github.com/mapbox/mapbox-gl-native/issues/10197 {0, 16}, optional{}, - [&](const OverscaledTileID& tileID) { return std::make_unique(tileID, parameters); }, - baseImpl->getPrefetchZoomDelta(), - baseImpl->getMaxOverscaleFactorForParentTiles()); + [&](const OverscaledTileID& tileID) { return std::make_unique(tileID, parameters); }); } std::unordered_map> diff --git a/src/mbgl/renderer/sources/render_custom_geometry_source.cpp b/src/mbgl/renderer/sources/render_custom_geometry_source.cpp index ecb74b650..fafa81f27 100644 --- a/src/mbgl/renderer/sources/render_custom_geometry_source.cpp +++ b/src/mbgl/renderer/sources/render_custom_geometry_source.cpp @@ -40,21 +40,18 @@ void RenderCustomGeometrySource::update(Immutable baseImpl_ return; } - tilePyramid.update( - layers, - needsRendering, - needsRelayout, - parameters, - SourceType::CustomVector, - util::tileSize, - impl().getZoomRange(), - {}, - [&](const OverscaledTileID& tileID) { - return std::make_unique( - tileID, impl().id, parameters, impl().getTileOptions(), *tileLoader); - }, - baseImpl->getPrefetchZoomDelta(), - baseImpl->getMaxOverscaleFactorForParentTiles()); + tilePyramid.update(layers, + needsRendering, + needsRelayout, + parameters, + *baseImpl, + util::tileSize, + impl().getZoomRange(), + {}, + [&](const OverscaledTileID& tileID) { + return std::make_unique( + tileID, impl().id, parameters, impl().getTileOptions(), *tileLoader); + }); } } // namespace mbgl diff --git a/src/mbgl/renderer/sources/render_geojson_source.cpp b/src/mbgl/renderer/sources/render_geojson_source.cpp index 2cf5c9f3b..7f81ff903 100644 --- a/src/mbgl/renderer/sources/render_geojson_source.cpp +++ b/src/mbgl/renderer/sources/render_geojson_source.cpp @@ -106,20 +106,17 @@ void RenderGeoJSONSource::update(Immutable baseImpl_, if (!data_) return; - tilePyramid.update( - layers, - needsRendering, - needsRelayout, - parameters, - SourceType::GeoJSON, - util::tileSize, - impl().getZoomRange(), - optional{}, - [&, data_](const OverscaledTileID& tileID) { - return std::make_unique(tileID, impl().id, parameters, data_); - }, - baseImpl->getPrefetchZoomDelta(), - baseImpl->getMaxOverscaleFactorForParentTiles()); + tilePyramid.update(layers, + needsRendering, + needsRelayout, + parameters, + *baseImpl, + util::tileSize, + impl().getZoomRange(), + optional{}, + [&, data_](const OverscaledTileID& tileID) { + return std::make_unique(tileID, impl().id, parameters, data_); + }); } mapbox::util::variant diff --git a/src/mbgl/renderer/sources/render_raster_dem_source.cpp b/src/mbgl/renderer/sources/render_raster_dem_source.cpp index 9b2345f8e..1ad6a6c25 100644 --- a/src/mbgl/renderer/sources/render_raster_dem_source.cpp +++ b/src/mbgl/renderer/sources/render_raster_dem_source.cpp @@ -32,13 +32,11 @@ void RenderRasterDEMSource::updateInternal(const Tileset& tileset, needsRendering, needsRelayout, parameters, - SourceType::RasterDEM, + *baseImpl, impl().getTileSize(), tileset.zoomRange, tileset.bounds, - [&](const OverscaledTileID& tileID) { return std::make_unique(tileID, parameters, tileset); }, - baseImpl->getPrefetchZoomDelta(), - baseImpl->getMaxOverscaleFactorForParentTiles()); + [&](const OverscaledTileID& tileID) { return std::make_unique(tileID, parameters, tileset); }); 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 f759623cd..f1a4a6128 100644 --- a/src/mbgl/renderer/sources/render_raster_source.cpp +++ b/src/mbgl/renderer/sources/render_raster_source.cpp @@ -30,13 +30,11 @@ void RenderRasterSource::updateInternal(const Tileset& tileset, needsRendering, needsRelayout, parameters, - SourceType::Raster, + *baseImpl, impl().getTileSize(), tileset.zoomRange, tileset.bounds, - [&](const OverscaledTileID& tileID) { return std::make_unique(tileID, parameters, tileset); }, - baseImpl->getPrefetchZoomDelta(), - baseImpl->getMaxOverscaleFactorForParentTiles()); + [&](const OverscaledTileID& tileID) { return std::make_unique(tileID, parameters, tileset); }); 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 3ac16a136..b581d244d 100644 --- a/src/mbgl/renderer/sources/render_vector_source.cpp +++ b/src/mbgl/renderer/sources/render_vector_source.cpp @@ -21,20 +21,17 @@ 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(tileID, baseImpl->id, parameters, tileset); - }, - baseImpl->getPrefetchZoomDelta(), - baseImpl->getMaxOverscaleFactorForParentTiles()); + tilePyramid.update(layers, + needsRendering, + needsRelayout, + parameters, + *baseImpl, + util::tileSize, + tileset.zoomRange, + tileset.bounds, + [&](const OverscaledTileID& tileID) { + return std::make_unique(tileID, baseImpl->id, parameters, tileset); + }); } } // namespace mbgl diff --git a/src/mbgl/renderer/tile_pyramid.cpp b/src/mbgl/renderer/tile_pyramid.cpp index 57086cb91..013e6a7f3 100644 --- a/src/mbgl/renderer/tile_pyramid.cpp +++ b/src/mbgl/renderer/tile_pyramid.cpp @@ -53,13 +53,11 @@ void TilePyramid::update(const std::vector>& l const bool needsRendering, const bool needsRelayout, const TileParameters& parameters, - const SourceType type, + const style::Source::Impl& sourceImpl, const uint16_t tileSize, const Range zoomRange, optional bounds, - std::function(const OverscaledTileID&)> createTile, - const optional& sourcePrefetchZoomDelta, - const optional& maxParentTileOverscaleFactor) { + std::function(const OverscaledTileID&)> createTile) { // If we need a relayout, abandon any cached tiles; they're now stale. if (needsRelayout) { cache.clear(); @@ -86,11 +84,15 @@ void TilePyramid::update(const std::vector>& l handleWrapJump(parameters.transformState.getLatLng().longitude()); + const auto type = sourceImpl.type; // Determine the overzooming/underzooming amounts and required tiles. int32_t overscaledZoom = util::coveringZoomLevel(parameters.transformState.getZoom(), type, tileSize); int32_t tileZoom = overscaledZoom; int32_t panZoom = zoomRange.max; + const optional& sourcePrefetchZoomDelta = sourceImpl.getPrefetchZoomDelta(); + const optional& maxParentTileOverscaleFactor = sourceImpl.getMaxOverscaleFactorForParentTiles(); + std::vector idealTiles; std::vector panTiles; diff --git a/src/mbgl/renderer/tile_pyramid.hpp b/src/mbgl/renderer/tile_pyramid.hpp index 7dd2ab534..f1c310849 100644 --- a/src/mbgl/renderer/tile_pyramid.hpp +++ b/src/mbgl/renderer/tile_pyramid.hpp @@ -1,11 +1,12 @@ #pragma once -#include -#include +#include +#include +#include #include #include -#include -#include +#include +#include #include #include @@ -37,13 +38,11 @@ public: bool needsRendering, bool needsRelayout, const TileParameters&, - style::SourceType type, + const style::Source::Impl&, uint16_t tileSize, Range zoomRange, optional bounds, - std::function(const OverscaledTileID&)> createTile, - const optional& sourcePrefetchZoomDelta, - const optional& maxParentTileOverscaleFactor); + std::function(const OverscaledTileID&)> createTile); const std::map>& getRenderedTiles() const { return renderedTiles; } Tile* getTile(const OverscaledTileID&); diff --git a/test/style/source.test.cpp b/test/style/source.test.cpp index dae2aef9c..06afd6427 100644 --- a/test/style/source.test.cpp +++ b/test/style/source.test.cpp @@ -767,18 +767,15 @@ public: const bool needsRendering, const bool needsRelayout, const TileParameters& parameters) override { - tilePyramid.update( - layers, - needsRendering, - needsRelayout, - parameters, - SourceType::Vector, - util::tileSize, - tileset.zoomRange, - tileset.bounds, - [&](const OverscaledTileID& tileID) { return std::make_unique(*this, tileID); }, - baseImpl->getPrefetchZoomDelta(), - baseImpl->getMaxOverscaleFactorForParentTiles()); + tilePyramid.update(layers, + needsRendering, + needsRelayout, + parameters, + *baseImpl, + util::tileSize, + tileset.zoomRange, + tileset.bounds, + [&](const OverscaledTileID& tileID) { return std::make_unique(*this, tileID); }); } const optional& getTileset() const override {