diff options
author | Mikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com> | 2019-06-06 11:26:52 +0300 |
---|---|---|
committer | Mikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com> | 2019-06-10 19:36:47 +0300 |
commit | 737665bc070e9db4544b5d78ca69baf72ec958dc (patch) | |
tree | b16f5e0c771765362ade518e4b440d4b8fabc322 /src/mbgl/renderer/sources | |
parent | f5631d8ef5a1307e50975ab2f767dd7ee544f466 (diff) | |
download | qtlocation-mapboxgl-737665bc070e9db4544b5d78ca69baf72ec958dc.tar.gz |
[core] Refactor tile pyramid
Tile pyramid is no longer operating with `RenderTiles` and does not perform
rendering operations (upload, finish render).
Render tiles belong to rendering, and tile pyramid belongs to orchestration.
Diffstat (limited to 'src/mbgl/renderer/sources')
5 files changed, 17 insertions, 12 deletions
diff --git a/src/mbgl/renderer/sources/render_raster_dem_source.cpp b/src/mbgl/renderer/sources/render_raster_dem_source.cpp index 3ec544a845..96e4e1d2cc 100644 --- a/src/mbgl/renderer/sources/render_raster_dem_source.cpp +++ b/src/mbgl/renderer/sources/render_raster_dem_source.cpp @@ -52,6 +52,7 @@ void RenderRasterDEMSource::update(Immutable<style::Source::Impl> baseImpl_, [&] (const OverscaledTileID& tileID) { return std::make_unique<RasterDEMTile>(tileID, parameters, *tileset); }); + algorithm::updateTileMasks(tilePyramid.getRenderTiles()); } void RenderRasterDEMSource::onTileChanged(Tile& tile){ @@ -121,11 +122,6 @@ void RenderRasterDEMSource::onTileChanged(Tile& tile){ RenderTileSource::onTileChanged(tile); } -void RenderRasterDEMSource::prepare(const SourcePrepareParameters& parameters) { - algorithm::updateTileMasks(tilePyramid.getRenderTiles()); - RenderTileSource::prepare(parameters); -} - std::unordered_map<std::string, std::vector<Feature>> RenderRasterDEMSource::queryRenderedFeatures(const ScreenLineString&, const TransformState&, diff --git a/src/mbgl/renderer/sources/render_raster_dem_source.hpp b/src/mbgl/renderer/sources/render_raster_dem_source.hpp index dcec53e04a..d1e7f03e10 100644 --- a/src/mbgl/renderer/sources/render_raster_dem_source.hpp +++ b/src/mbgl/renderer/sources/render_raster_dem_source.hpp @@ -16,8 +16,6 @@ public: bool needsRelayout, const TileParameters&) final; - void prepare(const SourcePrepareParameters&) override; - std::unordered_map<std::string, std::vector<Feature>> queryRenderedFeatures(const ScreenLineString& geometry, const TransformState& transformState, diff --git a/src/mbgl/renderer/sources/render_raster_source.cpp b/src/mbgl/renderer/sources/render_raster_source.cpp index 588009faa8..8b460de3f8 100644 --- a/src/mbgl/renderer/sources/render_raster_source.cpp +++ b/src/mbgl/renderer/sources/render_raster_source.cpp @@ -50,10 +50,10 @@ void RenderRasterSource::update(Immutable<style::Source::Impl> baseImpl_, [&] (const OverscaledTileID& tileID) { return std::make_unique<RasterTile>(tileID, parameters, *tileset); }); + algorithm::updateTileMasks(tilePyramid.getRenderTiles()); } void RenderRasterSource::prepare(const SourcePrepareParameters& parameters) { - algorithm::updateTileMasks(tilePyramid.getRenderTiles()); RenderTileSource::prepare(parameters); } diff --git a/src/mbgl/renderer/sources/render_tile_source.cpp b/src/mbgl/renderer/sources/render_tile_source.cpp index a906945e4f..b1fa824e68 100644 --- a/src/mbgl/renderer/sources/render_tile_source.cpp +++ b/src/mbgl/renderer/sources/render_tile_source.cpp @@ -1,4 +1,6 @@ #include <mbgl/renderer/sources/render_tile_source.hpp> + +#include <mbgl/renderer/buckets/debug_bucket.hpp> #include <mbgl/renderer/render_tile.hpp> #include <mbgl/renderer/paint_parameters.hpp> #include <mbgl/tile/vector_tile.hpp> @@ -19,15 +21,23 @@ bool RenderTileSource::isLoaded() const { } void RenderTileSource::upload(gfx::UploadPass& parameters) { - tilePyramid.upload(parameters); + for (auto& tile : renderTiles) { + tile.upload(parameters); + } } void RenderTileSource::prepare(const SourcePrepareParameters& parameters) { - tilePyramid.prepare(parameters); + renderTiles.clear(); + for (auto& entry : tilePyramid.getRenderTiles()) { + renderTiles.emplace_back(entry.first, entry.second); + renderTiles.back().prepare(parameters); + } } void RenderTileSource::finishRender(PaintParameters& parameters) { - tilePyramid.finishRender(parameters); + for (auto& tile : renderTiles) { + tile.finishRender(parameters); + } } void RenderTileSource::updateFadingTiles() { @@ -39,7 +49,7 @@ bool RenderTileSource::hasFadingTiles() const { } std::vector<std::reference_wrapper<RenderTile>> RenderTileSource::getRenderTiles() { - return tilePyramid.getRenderTiles(); + return { renderTiles.begin(), renderTiles.end() }; } std::unordered_map<std::string, std::vector<Feature>> diff --git a/src/mbgl/renderer/sources/render_tile_source.hpp b/src/mbgl/renderer/sources/render_tile_source.hpp index c1a1f76242..a84c9fbbfe 100644 --- a/src/mbgl/renderer/sources/render_tile_source.hpp +++ b/src/mbgl/renderer/sources/render_tile_source.hpp @@ -39,6 +39,7 @@ public: protected: TilePyramid tilePyramid; + std::vector<RenderTile> renderTiles; }; } // namespace mbgl |