summaryrefslogtreecommitdiff
path: root/src/mbgl/renderer/painter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/renderer/painter.cpp')
-rw-r--r--src/mbgl/renderer/painter.cpp29
1 files changed, 10 insertions, 19 deletions
diff --git a/src/mbgl/renderer/painter.cpp b/src/mbgl/renderer/painter.cpp
index 3832403cce..a085f33c4b 100644
--- a/src/mbgl/renderer/painter.cpp
+++ b/src/mbgl/renderer/painter.cpp
@@ -13,6 +13,7 @@
#include <mbgl/style/style.hpp>
#include <mbgl/style/layer_impl.hpp>
+#include <mbgl/style/layers/custom_layer_impl.hpp>
#include <mbgl/tile/tile.hpp>
#include <mbgl/renderer/layers/render_background_layer.hpp>
@@ -178,12 +179,7 @@ void Painter::render(const Style& style, const FrameData& frame_, View& view) {
frameHistory.upload(context, 0);
for (const auto& item : order) {
- for (const auto& tileRef : item.tiles) {
- const auto& bucket = tileRef.get().tile.getBucket(*item.layer.baseImpl);
- if (bucket && bucket->needsUpload()) {
- bucket->upload(context);
- }
- }
+ item.layer.uploadBuckets(context, item.source);
}
}
@@ -335,13 +331,7 @@ void Painter::renderPass(PaintParameters& parameters,
context.setDepthMode(depthModeForSublayer(0, gl::DepthMode::ReadWrite));
context.clear(Color{ 0.0f, 0.0f, 0.0f, 0.0f }, 1.0f, {});
- for (auto& tileRef : item.tiles) {
- auto& tile = tileRef.get();
-
- MBGL_DEBUG_GROUP(context, layer.baseImpl->id + " - " + util::toString(tile.id));
- auto bucket = tile.tile.getBucket(*layer.baseImpl);
- bucket->render(*this, parameters, layer, tile);
- }
+ renderItem(parameters, item);
parameters.view.bind();
context.bindTexture(extrusionTexture->getTexture());
@@ -363,12 +353,7 @@ void Painter::renderPass(PaintParameters& parameters,
ExtrusionTextureProgram::PaintPropertyBinders{ properties, 0 }, properties,
state.getZoom());
} else {
- for (auto& tileRef : item.tiles) {
- auto& tile = tileRef.get();
- MBGL_DEBUG_GROUP(context, layer.baseImpl->id + " - " + util::toString(tile.id));
- auto bucket = tile.tile.getBucket(*layer.baseImpl);
- bucket->render(*this, parameters, layer, tile);
- }
+ renderItem(parameters, item);
}
}
@@ -377,6 +362,12 @@ void Painter::renderPass(PaintParameters& parameters,
}
}
+void Painter::renderItem(PaintParameters& parameters, const RenderItem& item) {
+ RenderLayer& layer = item.layer;
+ MBGL_DEBUG_GROUP(context, layer.getID());
+ layer.render(*this, parameters, item.source);
+}
+
mat4 Painter::matrixForTile(const UnwrappedTileID& tileID) {
mat4 matrix;
state.matrixFor(matrix, tileID);