From 62bc78e73412bc6dcd24947d2ca28b2efc4c678b Mon Sep 17 00:00:00 2001 From: Mikhail Pozdnyakov Date: Thu, 27 Jun 2019 17:06:49 +0300 Subject: [PATCH 1/5] [core] Introduce LayerProperties::constantsMask() Constants mask for data-driven paint properties is a reliable criteria of whether the given updated properties can still be used with the existing bucket (and the gl program instance). --- include/mbgl/style/layer_properties.hpp | 3 ++- .../layers/background_layer_properties.cpp | 4 ++++ .../layers/background_layer_properties.hpp | 2 ++ .../style/layers/circle_layer_properties.cpp | 4 ++++ .../style/layers/circle_layer_properties.hpp | 2 ++ .../fill_extrusion_layer_properties.cpp | 4 ++++ .../fill_extrusion_layer_properties.hpp | 2 ++ .../style/layers/fill_layer_properties.cpp | 4 ++++ .../style/layers/fill_layer_properties.hpp | 2 ++ .../style/layers/heatmap_layer_properties.cpp | 4 ++++ .../style/layers/heatmap_layer_properties.hpp | 2 ++ .../layers/hillshade_layer_properties.cpp | 4 ++++ .../layers/hillshade_layer_properties.hpp | 2 ++ .../style/layers/layer_properties.cpp.ejs | 4 ++++ .../style/layers/layer_properties.hpp.ejs | 2 ++ .../style/layers/line_layer_properties.cpp | 4 ++++ .../style/layers/line_layer_properties.hpp | 2 ++ .../style/layers/raster_layer_properties.cpp | 4 ++++ .../style/layers/raster_layer_properties.hpp | 2 ++ .../style/layers/symbol_layer_properties.cpp | 4 ++++ .../style/layers/symbol_layer_properties.hpp | 2 ++ src/mbgl/style/properties.hpp | 22 +++++++++++++++++++ 22 files changed, 84 insertions(+), 1 deletion(-) diff --git a/include/mbgl/style/layer_properties.hpp b/include/mbgl/style/layer_properties.hpp index 301a048e503..c238faf02f6 100644 --- a/include/mbgl/style/layer_properties.hpp +++ b/include/mbgl/style/layer_properties.hpp @@ -13,7 +13,8 @@ namespace style { class LayerProperties { public: virtual ~LayerProperties() = default; - + // Returns constants mask for the data-driven properties. + virtual unsigned long constantsMask() const { return 0u; } Immutable baseImpl; protected: diff --git a/src/mbgl/style/layers/background_layer_properties.cpp b/src/mbgl/style/layers/background_layer_properties.cpp index f0da811379f..63f6a7be686 100644 --- a/src/mbgl/style/layers/background_layer_properties.cpp +++ b/src/mbgl/style/layers/background_layer_properties.cpp @@ -21,6 +21,10 @@ BackgroundLayerProperties::BackgroundLayerProperties( BackgroundLayerProperties::~BackgroundLayerProperties() = default; +unsigned long BackgroundLayerProperties::constantsMask() const { + return evaluated.constantsMask(); +} + const BackgroundLayer::Impl& BackgroundLayerProperties::layerImpl() const { return static_cast(*baseImpl); } diff --git a/src/mbgl/style/layers/background_layer_properties.hpp b/src/mbgl/style/layers/background_layer_properties.hpp index 371e8639f19..56db696533b 100644 --- a/src/mbgl/style/layers/background_layer_properties.hpp +++ b/src/mbgl/style/layers/background_layer_properties.hpp @@ -41,6 +41,8 @@ class BackgroundLayerProperties final : public LayerProperties { BackgroundPaintProperties::PossiblyEvaluated); ~BackgroundLayerProperties() override; + unsigned long constantsMask() const override; + const BackgroundLayer::Impl& layerImpl() const; // Data members. CrossfadeParameters crossfade; diff --git a/src/mbgl/style/layers/circle_layer_properties.cpp b/src/mbgl/style/layers/circle_layer_properties.cpp index fbb4aeabd4b..03a4a8f56e6 100644 --- a/src/mbgl/style/layers/circle_layer_properties.cpp +++ b/src/mbgl/style/layers/circle_layer_properties.cpp @@ -19,6 +19,10 @@ CircleLayerProperties::CircleLayerProperties( CircleLayerProperties::~CircleLayerProperties() = default; +unsigned long CircleLayerProperties::constantsMask() const { + return evaluated.constantsMask(); +} + const CircleLayer::Impl& CircleLayerProperties::layerImpl() const { return static_cast(*baseImpl); } diff --git a/src/mbgl/style/layers/circle_layer_properties.hpp b/src/mbgl/style/layers/circle_layer_properties.hpp index 17727c79eb9..1aaa3bb3e32 100644 --- a/src/mbgl/style/layers/circle_layer_properties.hpp +++ b/src/mbgl/style/layers/circle_layer_properties.hpp @@ -80,6 +80,8 @@ class CircleLayerProperties final : public LayerProperties { CirclePaintProperties::PossiblyEvaluated); ~CircleLayerProperties() override; + unsigned long constantsMask() const override; + const CircleLayer::Impl& layerImpl() const; // Data members. CirclePaintProperties::PossiblyEvaluated evaluated; diff --git a/src/mbgl/style/layers/fill_extrusion_layer_properties.cpp b/src/mbgl/style/layers/fill_extrusion_layer_properties.cpp index 7986c409238..ddfe9c84688 100644 --- a/src/mbgl/style/layers/fill_extrusion_layer_properties.cpp +++ b/src/mbgl/style/layers/fill_extrusion_layer_properties.cpp @@ -21,6 +21,10 @@ FillExtrusionLayerProperties::FillExtrusionLayerProperties( FillExtrusionLayerProperties::~FillExtrusionLayerProperties() = default; +unsigned long FillExtrusionLayerProperties::constantsMask() const { + return evaluated.constantsMask(); +} + const FillExtrusionLayer::Impl& FillExtrusionLayerProperties::layerImpl() const { return static_cast(*baseImpl); } diff --git a/src/mbgl/style/layers/fill_extrusion_layer_properties.hpp b/src/mbgl/style/layers/fill_extrusion_layer_properties.hpp index f5aeaf5c733..69b8a0bcb86 100644 --- a/src/mbgl/style/layers/fill_extrusion_layer_properties.hpp +++ b/src/mbgl/style/layers/fill_extrusion_layer_properties.hpp @@ -66,6 +66,8 @@ class FillExtrusionLayerProperties final : public LayerProperties { FillExtrusionPaintProperties::PossiblyEvaluated); ~FillExtrusionLayerProperties() override; + unsigned long constantsMask() const override; + const FillExtrusionLayer::Impl& layerImpl() const; // Data members. CrossfadeParameters crossfade; diff --git a/src/mbgl/style/layers/fill_layer_properties.cpp b/src/mbgl/style/layers/fill_layer_properties.cpp index 55e5a58cce4..de917177f6d 100644 --- a/src/mbgl/style/layers/fill_layer_properties.cpp +++ b/src/mbgl/style/layers/fill_layer_properties.cpp @@ -21,6 +21,10 @@ FillLayerProperties::FillLayerProperties( FillLayerProperties::~FillLayerProperties() = default; +unsigned long FillLayerProperties::constantsMask() const { + return evaluated.constantsMask(); +} + const FillLayer::Impl& FillLayerProperties::layerImpl() const { return static_cast(*baseImpl); } diff --git a/src/mbgl/style/layers/fill_layer_properties.hpp b/src/mbgl/style/layers/fill_layer_properties.hpp index 376852d2545..4e1b6970fed 100644 --- a/src/mbgl/style/layers/fill_layer_properties.hpp +++ b/src/mbgl/style/layers/fill_layer_properties.hpp @@ -61,6 +61,8 @@ class FillLayerProperties final : public LayerProperties { FillPaintProperties::PossiblyEvaluated); ~FillLayerProperties() override; + unsigned long constantsMask() const override; + const FillLayer::Impl& layerImpl() const; // Data members. CrossfadeParameters crossfade; diff --git a/src/mbgl/style/layers/heatmap_layer_properties.cpp b/src/mbgl/style/layers/heatmap_layer_properties.cpp index 03a73be1039..cc500736514 100644 --- a/src/mbgl/style/layers/heatmap_layer_properties.cpp +++ b/src/mbgl/style/layers/heatmap_layer_properties.cpp @@ -19,6 +19,10 @@ HeatmapLayerProperties::HeatmapLayerProperties( HeatmapLayerProperties::~HeatmapLayerProperties() = default; +unsigned long HeatmapLayerProperties::constantsMask() const { + return evaluated.constantsMask(); +} + const HeatmapLayer::Impl& HeatmapLayerProperties::layerImpl() const { return static_cast(*baseImpl); } diff --git a/src/mbgl/style/layers/heatmap_layer_properties.hpp b/src/mbgl/style/layers/heatmap_layer_properties.hpp index dda9808e77a..634cbef1ed3 100644 --- a/src/mbgl/style/layers/heatmap_layer_properties.hpp +++ b/src/mbgl/style/layers/heatmap_layer_properties.hpp @@ -49,6 +49,8 @@ class HeatmapLayerProperties final : public LayerProperties { HeatmapPaintProperties::PossiblyEvaluated); ~HeatmapLayerProperties() override; + unsigned long constantsMask() const override; + const HeatmapLayer::Impl& layerImpl() const; // Data members. HeatmapPaintProperties::PossiblyEvaluated evaluated; diff --git a/src/mbgl/style/layers/hillshade_layer_properties.cpp b/src/mbgl/style/layers/hillshade_layer_properties.cpp index 407acb6fc0c..72acc235e2d 100644 --- a/src/mbgl/style/layers/hillshade_layer_properties.cpp +++ b/src/mbgl/style/layers/hillshade_layer_properties.cpp @@ -19,6 +19,10 @@ HillshadeLayerProperties::HillshadeLayerProperties( HillshadeLayerProperties::~HillshadeLayerProperties() = default; +unsigned long HillshadeLayerProperties::constantsMask() const { + return evaluated.constantsMask(); +} + const HillshadeLayer::Impl& HillshadeLayerProperties::layerImpl() const { return static_cast(*baseImpl); } diff --git a/src/mbgl/style/layers/hillshade_layer_properties.hpp b/src/mbgl/style/layers/hillshade_layer_properties.hpp index 85ef8b967c0..e38e5bb5b35 100644 --- a/src/mbgl/style/layers/hillshade_layer_properties.hpp +++ b/src/mbgl/style/layers/hillshade_layer_properties.hpp @@ -55,6 +55,8 @@ class HillshadeLayerProperties final : public LayerProperties { HillshadePaintProperties::PossiblyEvaluated); ~HillshadeLayerProperties() override; + unsigned long constantsMask() const override; + const HillshadeLayer::Impl& layerImpl() const; // Data members. HillshadePaintProperties::PossiblyEvaluated evaluated; diff --git a/src/mbgl/style/layers/layer_properties.cpp.ejs b/src/mbgl/style/layers/layer_properties.cpp.ejs index 2c8e1ce9a08..fcdcfda7bed 100644 --- a/src/mbgl/style/layers/layer_properties.cpp.ejs +++ b/src/mbgl/style/layers/layer_properties.cpp.ejs @@ -30,6 +30,10 @@ namespace style { <%- camelize(type) %>LayerProperties::~<%- camelize(type) %>LayerProperties() = default; +unsigned long <%- camelize(type) %>LayerProperties::constantsMask() const { + return evaluated.constantsMask(); +} + const <%- camelize(type) %>Layer::Impl& <%- camelize(type) %>LayerProperties::layerImpl() const { return static_castLayer::Impl&>(*baseImpl); } diff --git a/src/mbgl/style/layers/layer_properties.hpp.ejs b/src/mbgl/style/layers/layer_properties.hpp.ejs index 277cfd173b4..4513146d6d7 100644 --- a/src/mbgl/style/layers/layer_properties.hpp.ejs +++ b/src/mbgl/style/layers/layer_properties.hpp.ejs @@ -72,6 +72,8 @@ public: <%- camelize(type) %>PaintProperties::PossiblyEvaluated); ~<%- camelize(type) %>LayerProperties() override; + unsigned long constantsMask() const override; + const <%- camelize(type) %>Layer::Impl& layerImpl() const; // Data members. <% if (type === 'background' || type === 'fill' || type === 'line' || type === 'fill-extrusion') { -%> diff --git a/src/mbgl/style/layers/line_layer_properties.cpp b/src/mbgl/style/layers/line_layer_properties.cpp index 09fb6ff80ca..46b220661c1 100644 --- a/src/mbgl/style/layers/line_layer_properties.cpp +++ b/src/mbgl/style/layers/line_layer_properties.cpp @@ -21,6 +21,10 @@ LineLayerProperties::LineLayerProperties( LineLayerProperties::~LineLayerProperties() = default; +unsigned long LineLayerProperties::constantsMask() const { + return evaluated.constantsMask(); +} + const LineLayer::Impl& LineLayerProperties::layerImpl() const { return static_cast(*baseImpl); } diff --git a/src/mbgl/style/layers/line_layer_properties.hpp b/src/mbgl/style/layers/line_layer_properties.hpp index 7463d943939..dac6cebae0d 100644 --- a/src/mbgl/style/layers/line_layer_properties.hpp +++ b/src/mbgl/style/layers/line_layer_properties.hpp @@ -113,6 +113,8 @@ class LineLayerProperties final : public LayerProperties { LinePaintProperties::PossiblyEvaluated); ~LineLayerProperties() override; + unsigned long constantsMask() const override; + const LineLayer::Impl& layerImpl() const; // Data members. CrossfadeParameters crossfade; diff --git a/src/mbgl/style/layers/raster_layer_properties.cpp b/src/mbgl/style/layers/raster_layer_properties.cpp index 4d9245a218f..77bdb62b8df 100644 --- a/src/mbgl/style/layers/raster_layer_properties.cpp +++ b/src/mbgl/style/layers/raster_layer_properties.cpp @@ -19,6 +19,10 @@ RasterLayerProperties::RasterLayerProperties( RasterLayerProperties::~RasterLayerProperties() = default; +unsigned long RasterLayerProperties::constantsMask() const { + return evaluated.constantsMask(); +} + const RasterLayer::Impl& RasterLayerProperties::layerImpl() const { return static_cast(*baseImpl); } diff --git a/src/mbgl/style/layers/raster_layer_properties.hpp b/src/mbgl/style/layers/raster_layer_properties.hpp index 61aa32de2d1..9ddd6cc790e 100644 --- a/src/mbgl/style/layers/raster_layer_properties.hpp +++ b/src/mbgl/style/layers/raster_layer_properties.hpp @@ -65,6 +65,8 @@ class RasterLayerProperties final : public LayerProperties { RasterPaintProperties::PossiblyEvaluated); ~RasterLayerProperties() override; + unsigned long constantsMask() const override; + const RasterLayer::Impl& layerImpl() const; // Data members. RasterPaintProperties::PossiblyEvaluated evaluated; diff --git a/src/mbgl/style/layers/symbol_layer_properties.cpp b/src/mbgl/style/layers/symbol_layer_properties.cpp index aeca39b419d..5e50535377e 100644 --- a/src/mbgl/style/layers/symbol_layer_properties.cpp +++ b/src/mbgl/style/layers/symbol_layer_properties.cpp @@ -19,6 +19,10 @@ SymbolLayerProperties::SymbolLayerProperties( SymbolLayerProperties::~SymbolLayerProperties() = default; +unsigned long SymbolLayerProperties::constantsMask() const { + return evaluated.constantsMask(); +} + const SymbolLayer::Impl& SymbolLayerProperties::layerImpl() const { return static_cast(*baseImpl); } diff --git a/src/mbgl/style/layers/symbol_layer_properties.hpp b/src/mbgl/style/layers/symbol_layer_properties.hpp index 7b630a1ca3b..0c2bcd26614 100644 --- a/src/mbgl/style/layers/symbol_layer_properties.hpp +++ b/src/mbgl/style/layers/symbol_layer_properties.hpp @@ -341,6 +341,8 @@ class SymbolLayerProperties final : public LayerProperties { SymbolPaintProperties::PossiblyEvaluated); ~SymbolLayerProperties() override; + unsigned long constantsMask() const override; + const SymbolLayer::Impl& layerImpl() const; // Data members. SymbolPaintProperties::PossiblyEvaluated evaluated; diff --git a/src/mbgl/style/properties.hpp b/src/mbgl/style/properties.hpp index 7f58ff223db..9d66f850de9 100644 --- a/src/mbgl/style/properties.hpp +++ b/src/mbgl/style/properties.hpp @@ -9,6 +9,8 @@ #include #include +#include + namespace mbgl { class GeometryTileFeature; @@ -102,6 +104,22 @@ struct IsDataDriven : std::integral_constant {}; template struct IsOverridable : std::integral_constant {}; +template +struct ConstantsMask; + +template +struct ConstantsMask> { + template + static unsigned long getMask(const Properties& properties) { + std::bitset result; + util::ignore({ + result.set(TypeIndex::value, + properties.template get().isConstant())... + }); + return result.to_ulong(); + } +}; + template class Properties { public: @@ -172,6 +190,10 @@ class Properties { evaluate(z, feature)... }; } + + unsigned long constantsMask() const { + return ConstantsMask::getMask(*this); + } }; class Unevaluated : public Tuple { From d63c871bf85917f579fe9c5e0b3732795cb12363 Mon Sep 17 00:00:00 2001 From: Mikhail Pozdnyakov Date: Thu, 27 Jun 2019 17:19:53 +0300 Subject: [PATCH 2/5] [core] Geometry tile updates layer render data if its constants mask remains Thus, we do not have to wait for tile update completion in case the updated properties have the same constants mask, i.e. fit the existing bucket. --- src/mbgl/renderer/tile_pyramid.cpp | 7 +------ src/mbgl/tile/geometry_tile.cpp | 5 +++-- src/mbgl/tile/geometry_tile.hpp | 2 +- src/mbgl/tile/tile.hpp | 10 ++++++++-- 4 files changed, 13 insertions(+), 11 deletions(-) diff --git a/src/mbgl/renderer/tile_pyramid.cpp b/src/mbgl/renderer/tile_pyramid.cpp index dee84c4e320..b931b2d2799 100644 --- a/src/mbgl/renderer/tile_pyramid.cpp +++ b/src/mbgl/renderer/tile_pyramid.cpp @@ -231,12 +231,7 @@ void TilePyramid::update(const std::vector>& l if (holdForFade && typeInfo->fadingTiles == LayerTypeInfo::FadingTiles::NotRequired) { continue; } - // Update layer properties for complete tiles; for incomplete just check the presence. - bool layerRenderableInTile = tile.isComplete() ? tile.updateLayerProperties(layerProperties) - : static_cast(tile.getBucket(*layerProperties->baseImpl)); - if (layerRenderableInTile) { - tile.usedByRenderedLayers = true; - } + tile.usedByRenderedLayers |= tile.layerPropertiesUpdated(layerProperties); } } } diff --git a/src/mbgl/tile/geometry_tile.cpp b/src/mbgl/tile/geometry_tile.cpp index 7a7b7cb7708..1bc7646d1ee 100644 --- a/src/mbgl/tile/geometry_tile.cpp +++ b/src/mbgl/tile/geometry_tile.cpp @@ -212,13 +212,14 @@ const LayerRenderData* GeometryTile::getLayerRenderData(const style::Layer::Impl return that->getMutableLayerRenderData(layerImpl); } -bool GeometryTile::updateLayerProperties(const Immutable& layerProperties) { +bool GeometryTile::layerPropertiesUpdated(const Immutable& layerProperties) { LayerRenderData* renderData = getMutableLayerRenderData(*layerProperties->baseImpl); if (!renderData) { return false; } - if (renderData->layerProperties != layerProperties) { + if (renderData->layerProperties != layerProperties && + renderData->layerProperties->constantsMask() == layerProperties->constantsMask()) { renderData->layerProperties = layerProperties; } diff --git a/src/mbgl/tile/geometry_tile.hpp b/src/mbgl/tile/geometry_tile.hpp index cbc94deed08..c206dd11575 100644 --- a/src/mbgl/tile/geometry_tile.hpp +++ b/src/mbgl/tile/geometry_tile.hpp @@ -47,7 +47,7 @@ class GeometryTile : public Tile, public GlyphRequestor, public ImageRequestor { void upload(gfx::UploadPass&) override; Bucket* getBucket(const style::Layer::Impl&) const override; const LayerRenderData* getLayerRenderData(const style::Layer::Impl&) const override; - bool updateLayerProperties(const Immutable&) override; + bool layerPropertiesUpdated(const Immutable&) override; void queryRenderedFeatures( std::unordered_map>& result, diff --git a/src/mbgl/tile/tile.hpp b/src/mbgl/tile/tile.hpp index 95ee0bc37eb..17a16b46666 100644 --- a/src/mbgl/tile/tile.hpp +++ b/src/mbgl/tile/tile.hpp @@ -58,10 +58,16 @@ class Tile { assert(false); return nullptr; } - // Updates the contained layer render data with the given properties. + // Notifies this tile of the updated layer properties. + // + // Tile implementation should update the contained layer + // render data with the given properties. + // // Returns `true` if the corresponding render layer data is present in this tile (and i.e. it // was succesfully updated); returns `false` otherwise. - virtual bool updateLayerProperties(const Immutable&) { return true; } + virtual bool layerPropertiesUpdated(const Immutable& layerProperties) { + return bool(getBucket(*layerProperties->baseImpl)); + } virtual void setShowCollisionBoxes(const bool) {} virtual void setLayers(const std::vector>&) {} virtual void setMask(TileMask&&) {} From c35814914a784f532166d1bdd2068dc1bad48dcf Mon Sep 17 00:00:00 2001 From: Mikhail Pozdnyakov Date: Thu, 27 Jun 2019 17:42:04 +0300 Subject: [PATCH 3/5] [core] RenderSource does re-layout if layer's data-driven properties change. --- src/mbgl/renderer/render_orchestrator.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/mbgl/renderer/render_orchestrator.cpp b/src/mbgl/renderer/render_orchestrator.cpp index 76b7752ca1c..acc50318d6e 100644 --- a/src/mbgl/renderer/render_orchestrator.cpp +++ b/src/mbgl/renderer/render_orchestrator.cpp @@ -241,11 +241,16 @@ std::unique_ptr RenderOrchestrator::createRenderTree(const UpdatePar } // Update layers for class and zoom changes. + std::unordered_set constantsMaskChanged; for (const auto& entry : renderLayers) { RenderLayer& layer = *entry.second; const bool layerAddedOrChanged = layerDiff.added.count(entry.first) || layerDiff.changed.count(entry.first); if (layerAddedOrChanged || zoomChanged || layer.hasTransition() || layer.hasCrossfade()) { + auto previousMask = layer.evaluatedProperties->constantsMask(); layer.evaluate(evaluationParameters); + if (previousMask != layer.evaluatedProperties->constantsMask()) { + constantsMaskChanged.insert(layer.getID()); + } } } @@ -298,7 +303,7 @@ std::unique_ptr RenderOrchestrator::createRenderTree(const UpdatePar if (layerInfo->source != LayerTypeInfo::Source::NotRequired) { if (layerImpl->source == sourceImpl->id) { - sourceNeedsRelayout = (sourceNeedsRelayout || hasImageDiff || hasLayoutDifference(layerDiff, layerImpl->id)); + sourceNeedsRelayout = (sourceNeedsRelayout || hasImageDiff || constantsMaskChanged.count(layerImpl->id) || hasLayoutDifference(layerDiff, layerImpl->id)); if (layerNeedsRendering) { filteredLayersForSource.push_back(layer->evaluatedProperties); if (zoomFitsLayer) { From fb9a8b7766fd5233c7ce1b4ae8c907a6c66e53d1 Mon Sep 17 00:00:00 2001 From: Mikhail Pozdnyakov Date: Thu, 27 Jun 2019 18:06:03 +0300 Subject: [PATCH 4/5] [core] Remove unused PaintPropertyBinders::constants() --- src/mbgl/renderer/paint_property_binder.hpp | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/src/mbgl/renderer/paint_property_binder.hpp b/src/mbgl/renderer/paint_property_binder.hpp index 63d821f964c..cd6b259e886 100644 --- a/src/mbgl/renderer/paint_property_binder.hpp +++ b/src/mbgl/renderer/paint_property_binder.hpp @@ -544,18 +544,6 @@ class PaintPropertyBinders> { return binders.template get

()->statistics; } - using Bitset = std::bitset; - - template - static Bitset constants(const EvaluatedProperties& currentProperties) { - Bitset result; - util::ignore({ - result.set(TypeIndex::value, - currentProperties.template get().isConstant())... - }); - return result; - } - private: Binders binders; }; From bb5d638dfaf0bab8e89fd285ab5740d55b32a11f Mon Sep 17 00:00:00 2001 From: Mikhail Pozdnyakov Date: Tue, 2 Jul 2019 11:56:05 +0300 Subject: [PATCH 5/5] [core] Update changelog files --- platform/android/CHANGELOG.md | 5 +++++ platform/ios/CHANGELOG.md | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/platform/android/CHANGELOG.md b/platform/android/CHANGELOG.md index b8cb0c74a96..3fe42e62d57 100644 --- a/platform/android/CHANGELOG.md +++ b/platform/android/CHANGELOG.md @@ -2,6 +2,11 @@ Mapbox welcomes participation and contributions from everyone. If you'd like to do so please see the [`Contributing Guide`](https://github.com/mapbox/mapbox-gl-native/blob/master/CONTRIBUTING.md) first to get started. +## master + +### Bugs + - Fixed style change transition regression caused by delayed setting of the updated layer properties [#15016](https://github.com/mapbox/mapbox-gl-native/pull/15016) + ## 8.2.0 - June 26, 2019 ### Bugs diff --git a/platform/ios/CHANGELOG.md b/platform/ios/CHANGELOG.md index 3c2326fbf8d..dba3e2525d3 100644 --- a/platform/ios/CHANGELOG.md +++ b/platform/ios/CHANGELOG.md @@ -2,6 +2,12 @@ Mapbox welcomes participation and contributions from everyone. Please read [CONTRIBUTING.md](../../CONTRIBUTING.md) to get started. +## master + +### Styles and rendering + +* Fixed style change transition regression caused by delayed setting of the updated layer properties. ([#15016](https://github.com/mapbox/mapbox-gl-native/pull/15016)) + ## 5.2.0 ### Offline maps