summaryrefslogtreecommitdiff
path: root/src/mbgl/renderer
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/renderer')
-rw-r--r--src/mbgl/renderer/bucket.hpp4
-rw-r--r--src/mbgl/renderer/buckets/symbol_bucket.cpp4
-rw-r--r--src/mbgl/renderer/buckets/symbol_bucket.hpp2
-rw-r--r--src/mbgl/renderer/layers/render_symbol_layer.cpp5
-rw-r--r--src/mbgl/renderer/render_layer.hpp1
5 files changed, 9 insertions, 7 deletions
diff --git a/src/mbgl/renderer/bucket.hpp b/src/mbgl/renderer/bucket.hpp
index 4e28107f07..68d6c46b7f 100644
--- a/src/mbgl/renderer/bucket.hpp
+++ b/src/mbgl/renderer/bucket.hpp
@@ -19,7 +19,7 @@ class PatternDependency;
using PatternLayerMap = std::map<std::string, PatternDependency>;
class Placement;
class TransformState;
-class BucketPlacementParameters;
+class BucketPlacementData;
class RenderTile;
class Bucket {
@@ -64,7 +64,7 @@ public:
return std::make_pair(0u, false);
}
// Places this bucket to the given placement.
- virtual void place(Placement&, const BucketPlacementParameters&, std::set<uint32_t>&) {}
+ virtual void place(Placement&, const BucketPlacementData&, std::set<uint32_t>&) {}
virtual void updateVertices(
const Placement&, bool /*updateOpacities*/, const TransformState&, const RenderTile&, std::set<uint32_t>&) {}
diff --git a/src/mbgl/renderer/buckets/symbol_bucket.cpp b/src/mbgl/renderer/buckets/symbol_bucket.cpp
index af2a479c26..1858f29801 100644
--- a/src/mbgl/renderer/buckets/symbol_bucket.cpp
+++ b/src/mbgl/renderer/buckets/symbol_bucket.cpp
@@ -314,8 +314,8 @@ std::pair<uint32_t, bool> SymbolBucket::registerAtCrossTileIndex(CrossTileSymbol
return std::make_pair(bucketInstanceId, firstTimeAdded);
}
-void SymbolBucket::place(Placement& placement, const BucketPlacementParameters& params, std::set<uint32_t>& seenIds) {
- placement.placeBucket(*this, params, seenIds);
+void SymbolBucket::place(Placement& placement, const BucketPlacementData& data, std::set<uint32_t>& seenIds) {
+ placement.placeSymbolBucket(data, seenIds);
}
void SymbolBucket::updateVertices(const Placement& placement,
diff --git a/src/mbgl/renderer/buckets/symbol_bucket.hpp b/src/mbgl/renderer/buckets/symbol_bucket.hpp
index 3cdea1310c..752f92e889 100644
--- a/src/mbgl/renderer/buckets/symbol_bucket.hpp
+++ b/src/mbgl/renderer/buckets/symbol_bucket.hpp
@@ -84,7 +84,7 @@ public:
void upload(gfx::UploadPass&) override;
bool hasData() const override;
std::pair<uint32_t, bool> registerAtCrossTileIndex(CrossTileSymbolLayerIndex&, const RenderTile&) override;
- void place(Placement&, const BucketPlacementParameters&, std::set<uint32_t>&) override;
+ void place(Placement&, const BucketPlacementData&, std::set<uint32_t>&) override;
void updateVertices(
const Placement&, bool updateOpacities, const TransformState&, const RenderTile&, std::set<uint32_t>&) override;
bool hasTextData() const;
diff --git a/src/mbgl/renderer/layers/render_symbol_layer.cpp b/src/mbgl/renderer/layers/render_symbol_layer.cpp
index 8de6267045..1d8c0a70a8 100644
--- a/src/mbgl/renderer/layers/render_symbol_layer.cpp
+++ b/src/mbgl/renderer/layers/render_symbol_layer.cpp
@@ -575,6 +575,7 @@ void RenderSymbolLayer::prepare(const LayerPrepareParameters& params) {
addRenderPassesFromTiles();
placementData.clear();
+
for (const RenderTile& renderTile : *renderTiles) {
auto* bucket = static_cast<SymbolBucket*>(renderTile.getBucket(*baseImpl));
if (bucket && bucket->bucketLeaderID == getID()) {
@@ -586,10 +587,10 @@ void RenderSymbolLayer::prepare(const LayerPrepareParameters& params) {
auto featureIndex = static_cast<const GeometryTile*>(tile)->getFeatureIndex();
if (bucket->sortKeyRanges.empty()) {
- placementData.push_back({*bucket, renderTile, featureIndex, nullopt});
+ placementData.push_back({*bucket, renderTile, featureIndex, baseImpl->source, nullopt});
} else {
for (const auto& sortKeyRange : bucket->sortKeyRanges) {
- BucketPlacementData layerData{*bucket, renderTile, featureIndex, sortKeyRange};
+ BucketPlacementData layerData{*bucket, renderTile, featureIndex, baseImpl->source, sortKeyRange};
auto sortPosition = std::upper_bound(
placementData.cbegin(), placementData.cend(), layerData, [](const auto& lhs, const auto& rhs) {
assert(lhs.sortKeyRange && rhs.sortKeyRange);
diff --git a/src/mbgl/renderer/render_layer.hpp b/src/mbgl/renderer/render_layer.hpp
index 40d073d562..53dafb3b7b 100644
--- a/src/mbgl/renderer/render_layer.hpp
+++ b/src/mbgl/renderer/render_layer.hpp
@@ -41,6 +41,7 @@ public:
std::reference_wrapper<Bucket> bucket;
std::reference_wrapper<const RenderTile> tile;
std::shared_ptr<FeatureIndex> featureIndex;
+ std::string sourceId;
optional<SortKeyRange> sortKeyRange;
};