diff options
author | John Firebaugh <john.firebaugh@gmail.com> | 2017-06-08 14:44:47 -0700 |
---|---|---|
committer | John Firebaugh <john.firebaugh@gmail.com> | 2017-06-13 10:18:43 -0700 |
commit | f5d3b850bff06e3cd4d4bcff288dceeb53cfa82d (patch) | |
tree | e1db4a34ec7adc09d5df8f14a2c97858ef11c02c /src/mbgl/tile | |
parent | 17db460345aeab21000cf7c18c9dea8d1543d835 (diff) | |
download | qtlocation-mapboxgl-f5d3b850bff06e3cd4d4bcff288dceeb53cfa82d.tar.gz |
[core] Merge RenderLayer::uploadBuckets into RenderSource::startRender
Diffstat (limited to 'src/mbgl/tile')
-rw-r--r-- | src/mbgl/tile/geometry_tile.cpp | 16 | ||||
-rw-r--r-- | src/mbgl/tile/geometry_tile.hpp | 1 | ||||
-rw-r--r-- | src/mbgl/tile/raster_tile.cpp | 6 | ||||
-rw-r--r-- | src/mbgl/tile/raster_tile.hpp | 2 | ||||
-rw-r--r-- | src/mbgl/tile/tile.hpp | 5 |
5 files changed, 30 insertions, 0 deletions
diff --git a/src/mbgl/tile/geometry_tile.cpp b/src/mbgl/tile/geometry_tile.cpp index 32fb6148c2..c35fe42f6a 100644 --- a/src/mbgl/tile/geometry_tile.cpp +++ b/src/mbgl/tile/geometry_tile.cpp @@ -161,6 +161,22 @@ void GeometryTile::getIcons(IconDependencies iconDependencies) { spriteAtlas.getIcons(*this, std::move(iconDependencies)); } +void GeometryTile::upload(gl::Context& context) { + auto upload = [&] (Bucket& bucket) { + if (bucket.needsUpload()) { + bucket.upload(context); + } + }; + + for (auto& entry : nonSymbolBuckets) { + upload(*entry.second); + } + + for (auto& entry : symbolBuckets) { + upload(*entry.second); + } +} + Bucket* GeometryTile::getBucket(const Layer::Impl& layer) const { const auto& buckets = layer.type == LayerType::Symbol ? symbolBuckets : nonSymbolBuckets; const auto it = buckets.find(layer.id); diff --git a/src/mbgl/tile/geometry_tile.hpp b/src/mbgl/tile/geometry_tile.hpp index c6d0bb35ec..e92d2f4975 100644 --- a/src/mbgl/tile/geometry_tile.hpp +++ b/src/mbgl/tile/geometry_tile.hpp @@ -44,6 +44,7 @@ public: void getGlyphs(GlyphDependencies); void getIcons(IconDependencies); + void upload(gl::Context&) override; Bucket* getBucket(const style::Layer::Impl&) const override; void queryRenderedFeatures( diff --git a/src/mbgl/tile/raster_tile.cpp b/src/mbgl/tile/raster_tile.cpp index bd27ae63ca..8a92c40e4a 100644 --- a/src/mbgl/tile/raster_tile.cpp +++ b/src/mbgl/tile/raster_tile.cpp @@ -55,6 +55,12 @@ void RasterTile::onError(std::exception_ptr err) { observer->onTileError(*this, err); } +void RasterTile::upload(gl::Context& context) { + if (bucket) { + bucket->upload(context); + } +} + Bucket* RasterTile::getBucket(const style::Layer::Impl&) const { return bucket.get(); } diff --git a/src/mbgl/tile/raster_tile.hpp b/src/mbgl/tile/raster_tile.hpp index b4804bdb7d..51075a2dbc 100644 --- a/src/mbgl/tile/raster_tile.hpp +++ b/src/mbgl/tile/raster_tile.hpp @@ -29,6 +29,8 @@ public: optional<Timestamp> expires_); void cancel() override; + + void upload(gl::Context&) override; Bucket* getBucket(const style::Layer::Impl&) const override; void onParsed(std::unique_ptr<Bucket> result); diff --git a/src/mbgl/tile/tile.hpp b/src/mbgl/tile/tile.hpp index bddae5138b..a925d88af3 100644 --- a/src/mbgl/tile/tile.hpp +++ b/src/mbgl/tile/tile.hpp @@ -26,6 +26,10 @@ class RenderStyle; class RenderedQueryOptions; class SourceQueryOptions; +namespace gl { +class Context; +} // namespace gl + class Tile : private util::noncopyable { public: Tile(OverscaledTileID); @@ -45,6 +49,7 @@ public: // Mark this tile as no longer needed and cancel any pending work. virtual void cancel() = 0; + virtual void upload(gl::Context&) = 0; virtual Bucket* getBucket(const style::Layer::Impl&) const = 0; virtual void setPlacementConfig(const PlacementConfig&) {} |