diff options
author | Mikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com> | 2019-01-03 17:17:57 +0200 |
---|---|---|
committer | Mikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com> | 2019-01-11 11:30:04 +0200 |
commit | 2bdab82dedf545b4272c534b067c68614d0355b7 (patch) | |
tree | ee437a1e8f26a25fe2e30d65db3d4e4e2985ae10 /src/mbgl/layout | |
parent | 2da9d483ac8bce5bfa7523f9113e1bc4ef2cbfb5 (diff) | |
download | qtlocation-mapboxgl-2bdab82dedf545b4272c534b067c68614d0355b7.tar.gz |
[core] shader program must always match bucket in render symbol layer
Before this change, `RenderSymbolLayer` with updated style was trying to render
symbols using the previous bucket (with paint property binders that matched a previous program).
Now, symbol bucket caches the latest corresponding paint properties (caching is happening on
complete tiles only). As a result, `RenderSymbolLayer` always picks the shader program and
its parameters in sync with the obtained bucket.
Diffstat (limited to 'src/mbgl/layout')
-rw-r--r-- | src/mbgl/layout/symbol_layout.cpp | 5 | ||||
-rw-r--r-- | src/mbgl/layout/symbol_layout.hpp | 3 |
2 files changed, 2 insertions, 6 deletions
diff --git a/src/mbgl/layout/symbol_layout.cpp b/src/mbgl/layout/symbol_layout.cpp index 332fb3f46a..4acd0a1ccd 100644 --- a/src/mbgl/layout/symbol_layout.cpp +++ b/src/mbgl/layout/symbol_layout.cpp @@ -90,10 +90,7 @@ SymbolLayout::SymbolLayout(const BucketParameters& parameters, } for (const auto& layer : layers) { - layerPaintProperties.emplace(layer->getID(), std::make_pair( - toRenderSymbolLayer(layer)->iconPaintProperties(), - toRenderSymbolLayer(layer)->textPaintProperties() - )); + layerPaintProperties.emplace(layer->getID(), toRenderSymbolLayer(layer)->evaluated); } // Determine glyph dependencies diff --git a/src/mbgl/layout/symbol_layout.hpp b/src/mbgl/layout/symbol_layout.hpp index 7045eebc22..ab6dc049a2 100644 --- a/src/mbgl/layout/symbol_layout.hpp +++ b/src/mbgl/layout/symbol_layout.hpp @@ -44,8 +44,7 @@ public: bool hasSymbolInstances() const override; bool hasDependencies() const override; - std::map<std::string, - std::pair<style::IconPaintProperties::PossiblyEvaluated, style::TextPaintProperties::PossiblyEvaluated>> layerPaintProperties; + std::map<std::string, style::SymbolPaintProperties::PossiblyEvaluated> layerPaintProperties; const std::string bucketLeaderID; std::vector<SymbolInstance> symbolInstances; |