diff options
author | Asheem Mamoowala <asheem.mamoowala@mapbox.com> | 2018-11-05 14:50:18 -0800 |
---|---|---|
committer | Asheem Mamoowala <asheem.mamoowala@mapbox.com> | 2018-11-05 14:50:18 -0800 |
commit | 9f3cc7b7075b29595dec394733b10fbd26f274e4 (patch) | |
tree | 6de04a77c9b8c67b9b13a865bfc12e5281464271 | |
parent | 3006f1b1f109bc777b937562cdfaf6c0454012ce (diff) |
Cleanupupstream/feature-state
-rw-r--r-- | src/mbgl/renderer/buckets/circle_bucket.cpp | 3 | ||||
-rw-r--r-- | src/mbgl/renderer/buckets/line_bucket.cpp | 5 | ||||
-rw-r--r-- | src/mbgl/renderer/buckets/line_bucket.hpp | 1 | ||||
-rw-r--r-- | src/mbgl/renderer/paint_property_binder.hpp | 4 | ||||
-rw-r--r-- | src/mbgl/renderer/sources/render_vector_source.cpp | 16 | ||||
-rw-r--r-- | src/mbgl/renderer/sources/render_vector_source.hpp | 7 | ||||
-rw-r--r-- | src/mbgl/renderer/tile_pyramid.cpp | 5 |
7 files changed, 11 insertions, 30 deletions
diff --git a/src/mbgl/renderer/buckets/circle_bucket.cpp b/src/mbgl/renderer/buckets/circle_bucket.cpp index 20c40eb0c..cef568243 100644 --- a/src/mbgl/renderer/buckets/circle_bucket.cpp +++ b/src/mbgl/renderer/buckets/circle_bucket.cpp @@ -101,7 +101,7 @@ void CircleBucket::addFeature(const GeometryTileFeature& feature, void CircleBucket::setFeatureState(const GeometryTileData* tileData, const std::string& sourceLayer, const FeatureStates& featureStates) { - if (featureStates.empty() /*|| stateDependentLayers.empty()*/) { return; } + if (featureStates.empty() || stateDependentLayers.empty()) { return; } auto sourceLayerData = tileData->getLayer(sourceLayer); if (sourceLayerData) { @@ -115,6 +115,7 @@ void CircleBucket::setFeatureState(const GeometryTileData* tileData, } } } + template <class Property> static float get(const RenderCircleLayer& layer, const std::map<std::string, CircleProgram::PaintPropertyBinders>& paintPropertyBinders) { auto it = paintPropertyBinders.find(layer.getID()); diff --git a/src/mbgl/renderer/buckets/line_bucket.cpp b/src/mbgl/renderer/buckets/line_bucket.cpp index 1af36e87b..8b4938782 100644 --- a/src/mbgl/renderer/buckets/line_bucket.cpp +++ b/src/mbgl/renderer/buckets/line_bucket.cpp @@ -61,7 +61,10 @@ void LineBucket::setFeatureState(const GeometryTileData* tileData, if (sourceLayerData) { for (auto& pair : paintPropertyBinders) { if (stateDependentLayers.count(pair.first) > 0) { - pair.second.updateVertexVectors(featureStates, *sourceLayerData); + if(pair.second.updateVertexVectors(featureStates, *sourceLayerData)) { + //Only toggle uploaded if needed. + uploaded = false; + } } } } diff --git a/src/mbgl/renderer/buckets/line_bucket.hpp b/src/mbgl/renderer/buckets/line_bucket.hpp index 58ec00de2..6596d9d8a 100644 --- a/src/mbgl/renderer/buckets/line_bucket.hpp +++ b/src/mbgl/renderer/buckets/line_bucket.hpp @@ -53,7 +53,6 @@ public: optional<gl::VertexBuffer<LineLayoutVertex>> vertexBuffer; optional<gl::IndexBuffer<gl::Triangles>> indexBuffer; - //TODO: AHM: Can these two be combined? Also need to store if bucket needs to be re-uploaded std::map<std::string, LineProgram::PaintPropertyBinders> paintPropertyBinders; std::set<std::string> stateDependentLayers; private: diff --git a/src/mbgl/renderer/paint_property_binder.hpp b/src/mbgl/renderer/paint_property_binder.hpp index b3d60e3d6..95a02ae80 100644 --- a/src/mbgl/renderer/paint_property_binder.hpp +++ b/src/mbgl/renderer/paint_property_binder.hpp @@ -394,8 +394,8 @@ public: void updateVertexVector(size_t, size_t, const GeometryTileFeature&, const PropertyMap&) override { if (!isUpdateable) return; - //TODO: AHM: How to evaluate expression with feature-state to determine - // patterns and pattern positions synchronously + //TODO: AHM: How to evaluate expressions with feature-state to determine + // patterns and pattern positions synchronously? }; std::tuple<optional<gl::AttributeBinding>, optional<gl::AttributeBinding>> attributeBinding(const PossiblyEvaluatedPropertyValue<Faded<T>>& currentValue) const override { diff --git a/src/mbgl/renderer/sources/render_vector_source.cpp b/src/mbgl/renderer/sources/render_vector_source.cpp index aa1e18acd..4de4f01e3 100644 --- a/src/mbgl/renderer/sources/render_vector_source.cpp +++ b/src/mbgl/renderer/sources/render_vector_source.cpp @@ -25,7 +25,6 @@ bool RenderVectorSource::isLoaded() const { void RenderVectorSource::update(Immutable<style::Source::Impl> baseImpl_, const std::vector<Immutable<Layer::Impl>>& layers, - const FeatureStatesMap& newStates, const bool needsRendering, const bool needsRelayout, const TileParameters& parameters) { @@ -51,7 +50,6 @@ void RenderVectorSource::update(Immutable<style::Source::Impl> baseImpl_, } tilePyramid.update(layers, - newStates, needsRendering, needsRelayout, parameters, @@ -64,20 +62,6 @@ void RenderVectorSource::update(Immutable<style::Source::Impl> baseImpl_, }); } - -void RenderVectorSource::update(Immutable<style::Source::Impl> baseImpl_, - const std::vector<Immutable<Layer::Impl>>& layers, - const bool needsRendering, - const bool needsRelayout, - const TileParameters& parameters) { - update(baseImpl_, - layers, - {}, - needsRendering, - needsRelayout, - parameters); -} - void RenderVectorSource::startRender(PaintParameters& parameters) { parameters.clipIDGenerator.update(tilePyramid.getRenderTiles()); tilePyramid.startRender(parameters); diff --git a/src/mbgl/renderer/sources/render_vector_source.hpp b/src/mbgl/renderer/sources/render_vector_source.hpp index 8b1712c02..6da95b6dc 100644 --- a/src/mbgl/renderer/sources/render_vector_source.hpp +++ b/src/mbgl/renderer/sources/render_vector_source.hpp @@ -15,13 +15,6 @@ public: void update(Immutable<style::Source::Impl>, const std::vector<Immutable<style::Layer::Impl>>&, - const FeatureStatesMap&, - bool needsRendering, - bool needsRelayout, - const TileParameters&); - - void update(Immutable<style::Source::Impl>, - const std::vector<Immutable<style::Layer::Impl>>&, bool needsRendering, bool needsRelayout, const TileParameters&) final; diff --git a/src/mbgl/renderer/tile_pyramid.cpp b/src/mbgl/renderer/tile_pyramid.cpp index 361b99664..b23adbec6 100644 --- a/src/mbgl/renderer/tile_pyramid.cpp +++ b/src/mbgl/renderer/tile_pyramid.cpp @@ -71,9 +71,10 @@ void TilePyramid::update(const std::vector<Immutable<style::Layer::Impl>>& layer const Range<uint8_t> zoomRange, optional<LatLngBounds> bounds, std::function<std::unique_ptr<Tile> (const OverscaledTileID&)> createTile) { - update(layers, {}, needsRendering, needsRelayout, parameters, type, tileSize, zoomRange, bounds, createTile); -} + FeatureStatesMap fsm; + update(layers,fsm, needsRendering, needsRelayout, parameters, type, tileSize, zoomRange, bounds, createTile); +} void extend(PropertyMap& a, const PropertyMap& b) { for (const auto& pair: b) { auto it = a.find(pair.first); |