summaryrefslogtreecommitdiff
path: root/src/mbgl/renderer/render_layer.cpp
diff options
context:
space:
mode:
authorMikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com>2019-01-03 17:17:57 +0200
committerMikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com>2019-01-11 11:30:04 +0200
commit2bdab82dedf545b4272c534b067c68614d0355b7 (patch)
treeee437a1e8f26a25fe2e30d65db3d4e4e2985ae10 /src/mbgl/renderer/render_layer.cpp
parent2da9d483ac8bce5bfa7523f9113e1bc4ef2cbfb5 (diff)
downloadqtlocation-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/renderer/render_layer.cpp')
-rw-r--r--src/mbgl/renderer/render_layer.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/mbgl/renderer/render_layer.cpp b/src/mbgl/renderer/render_layer.cpp
index 033df02282..c2c57deb22 100644
--- a/src/mbgl/renderer/render_layer.cpp
+++ b/src/mbgl/renderer/render_layer.cpp
@@ -71,10 +71,13 @@ RenderLayer::RenderTiles RenderLayer::filterRenderTiles(RenderTiles tiles, Filte
continue;
}
- if (tile.tile.getBucket(*baseImpl)) {
+ if (Bucket* bucket = tile.tile.getBucket(*baseImpl)) {
tile.used = true;
tile.needsClipping |= needsClipping_;
filtered.emplace_back(tile);
+ if (tile.tile.isComplete()) {
+ updateBucketPaintProperties(bucket);
+ }
}
}
return filtered;
@@ -84,6 +87,10 @@ void RenderLayer::markContextDestroyed() {
// no-op
}
+void RenderLayer::updateBucketPaintProperties(Bucket*) const {
+ // no-op
+}
+
void RenderLayer::checkRenderability(const PaintParameters& parameters,
const uint32_t activeBindingCount) {
// Only warn once for every layer.