summaryrefslogtreecommitdiff
path: root/src/mbgl/renderer/render_layer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/renderer/render_layer.cpp')
-rw-r--r--src/mbgl/renderer/render_layer.cpp27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/mbgl/renderer/render_layer.cpp b/src/mbgl/renderer/render_layer.cpp
index 396fc64b2d..7d02ccb050 100644
--- a/src/mbgl/renderer/render_layer.cpp
+++ b/src/mbgl/renderer/render_layer.cpp
@@ -31,6 +31,33 @@ LayerRenderItem RenderLayer::createRenderItem() {
};
}
+void LayerRenderItem::checkRenderability(const PaintParameters& parameters,
+ const uint32_t activeBindingCount) const {
+ // Only warn once for every layer.
+ if (hasRenderFailures) {
+ return;
+ }
+ std::string layerId = evaluatedProperties->baseImpl->id;
+ if (activeBindingCount > parameters.context.maximumVertexBindingCount) {
+ Log::Info(Event::OpenGL,
+ "The layer '%s' uses more data-driven properties than the current device "
+ "supports, and will have rendering errors. To ensure compatibility with this "
+ "device, use %d fewer data driven properties in this layer.",
+ layerId.c_str(),
+ activeBindingCount - parameters.context.minimumRequiredVertexBindingCount);
+ hasRenderFailures = true;
+ } else if (activeBindingCount > parameters.context.minimumRequiredVertexBindingCount) {
+ Log::Info(Event::OpenGL,
+ "The layer '%s' uses more data-driven properties than some devices may support. "
+ "Though it will render correctly on this device, it may have rendering errors "
+ "on other devices. To ensure compatibility with all devices, use %d fewer "
+ "data-driven properties in this layer.",
+ layerId.c_str(),
+ activeBindingCount - parameters.context.minimumRequiredVertexBindingCount);
+ hasRenderFailures = true;
+ }
+}
+
LayerRenderer RenderLayer::createRenderer() {
return [this](PaintParameters& pass, const LayerRenderItem&){ render(pass); };
}