summaryrefslogtreecommitdiff
path: root/src/mbgl/renderer/sources
diff options
context:
space:
mode:
authorMikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com>2019-06-06 11:26:52 +0300
committerMikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com>2019-06-10 19:36:47 +0300
commit737665bc070e9db4544b5d78ca69baf72ec958dc (patch)
treeb16f5e0c771765362ade518e4b440d4b8fabc322 /src/mbgl/renderer/sources
parentf5631d8ef5a1307e50975ab2f767dd7ee544f466 (diff)
downloadqtlocation-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')
-rw-r--r--src/mbgl/renderer/sources/render_raster_dem_source.cpp6
-rw-r--r--src/mbgl/renderer/sources/render_raster_dem_source.hpp2
-rw-r--r--src/mbgl/renderer/sources/render_raster_source.cpp2
-rw-r--r--src/mbgl/renderer/sources/render_tile_source.cpp18
-rw-r--r--src/mbgl/renderer/sources/render_tile_source.hpp1
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