summaryrefslogtreecommitdiff
path: root/src/mbgl/renderer/render_layer.hpp
diff options
context:
space:
mode:
authorAlexander Shalamov <alexander.shalamov@mapbox.com>2018-10-24 17:13:27 +0300
committerAlexander Shalamov <alexander.shalamov@mapbox.com>2018-11-19 14:06:21 +0200
commitf6ad5f378e9a0741b7d3c293cb91466ba2770e36 (patch)
tree9c15b4f46a84460822dbdb0b760dd46758b102f9 /src/mbgl/renderer/render_layer.hpp
parent006ee8b0034eab7096c53a7ca4eddf7226880161 (diff)
downloadqtlocation-mapboxgl-f6ad5f378e9a0741b7d3c293cb91466ba2770e36.tar.gz
[core] Move RenderTile filtering / sorting logic to render layers
Diffstat (limited to 'src/mbgl/renderer/render_layer.hpp')
-rw-r--r--src/mbgl/renderer/render_layer.hpp13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/mbgl/renderer/render_layer.hpp b/src/mbgl/renderer/render_layer.hpp
index 8d17e318f2..04753fc674 100644
--- a/src/mbgl/renderer/render_layer.hpp
+++ b/src/mbgl/renderer/render_layer.hpp
@@ -86,7 +86,10 @@ public:
ImageDependencies&) const {
return nullptr;
}
- void setRenderTiles(std::vector<std::reference_wrapper<RenderTile>>);
+
+ using RenderTiles = std::vector<std::reference_wrapper<RenderTile>>;
+ void setRenderTiles(RenderTiles, const TransformState&);
+
// Private implementation
Immutable<style::Layer::Impl> baseImpl;
void setImpl(Immutable<style::Layer::Impl>);
@@ -98,6 +101,12 @@ protected:
// in the console to inform the developer.
void checkRenderability(const PaintParameters&, uint32_t activeBindingCount);
+ // Code specific to RenderTiles sorting / filtering
+ virtual RenderTiles filterRenderTiles(RenderTiles) const;
+ virtual void sortRenderTiles(const TransformState&);
+ using FilterFunctionPtr = bool (*)(RenderTile&);
+ RenderTiles filterRenderTiles(RenderTiles, FilterFunctionPtr) const;
+
protected:
// renderTiles are exposed directly to CrossTileSymbolIndex and Placement so they
// can update opacities in the symbol buckets immediately before rendering
@@ -111,7 +120,7 @@ protected:
RenderPass passes = RenderPass::None;
private:
- // Some layers may not render correctly on some hardware when the vertex attribute limit of
+ // Some layers may not render correctly on some hardware when the vertex attribute limit of
// that GPU is exceeded. More attributes are used when adding many data driven paint properties
// to a layer.
bool hasRenderFailures = false;