summaryrefslogtreecommitdiff
path: root/src/mbgl/renderer/render_layer.hpp
diff options
context:
space:
mode:
authorKonstantin Käfer <mail@kkaefer.com>2018-04-11 13:27:21 +0200
committerKonstantin Käfer <mail@kkaefer.com>2018-04-13 18:27:14 +0200
commitec12bab1acce951976a152e2fd9f2110a327285e (patch)
tree20edb5dc546af978a377d38377c808142229154c /src/mbgl/renderer/render_layer.hpp
parent8543ae6e11c21b477c42bc10e73aedba190df592 (diff)
downloadqtlocation-mapboxgl-upstream/attribute-binding-crash.tar.gz
[core] warn about using too many data driven properties instead of crashingupstream/attribute-binding-crash
Instead, we're printing a warning message and won't bind the attributes beyond the limit. This will cause rendering errors, but it's still better than crashing.
Diffstat (limited to 'src/mbgl/renderer/render_layer.hpp')
-rw-r--r--src/mbgl/renderer/render_layer.hpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/mbgl/renderer/render_layer.hpp b/src/mbgl/renderer/render_layer.hpp
index 55831cb72c..5b92ffa4db 100644
--- a/src/mbgl/renderer/render_layer.hpp
+++ b/src/mbgl/renderer/render_layer.hpp
@@ -82,6 +82,11 @@ public:
friend std::string layoutKey(const RenderLayer&);
protected:
+ // Checks whether the current hardware can render this layer. If it can't, we'll show a warning
+ // in the console to inform the developer.
+ void checkRenderability(const PaintParameters&, uint32_t activeBindingCount);
+
+protected:
// renderTiles are exposed directly to CrossTileSymbolIndex and Placement so they
// can update opacities in the symbol buckets immediately before rendering
friend class CrossTileSymbolIndex;
@@ -92,6 +97,12 @@ protected:
// Stores what render passes this layer is currently enabled for. This depends on the
// evaluated StyleProperties object and is updated accordingly.
RenderPass passes = RenderPass::None;
+
+private:
+ // 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;
};
} // namespace mbgl