summaryrefslogtreecommitdiff
path: root/src/mbgl/tile
diff options
context:
space:
mode:
authorJohn Firebaugh <john.firebaugh@gmail.com>2017-06-08 14:44:47 -0700
committerJohn Firebaugh <john.firebaugh@gmail.com>2017-06-13 10:18:43 -0700
commitf5d3b850bff06e3cd4d4bcff288dceeb53cfa82d (patch)
treee1db4a34ec7adc09d5df8f14a2c97858ef11c02c /src/mbgl/tile
parent17db460345aeab21000cf7c18c9dea8d1543d835 (diff)
downloadqtlocation-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.cpp16
-rw-r--r--src/mbgl/tile/geometry_tile.hpp1
-rw-r--r--src/mbgl/tile/raster_tile.cpp6
-rw-r--r--src/mbgl/tile/raster_tile.hpp2
-rw-r--r--src/mbgl/tile/tile.hpp5
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&) {}