diff options
Diffstat (limited to 'src/mbgl/renderer/render_layer.cpp')
-rw-r--r-- | src/mbgl/renderer/render_layer.cpp | 27 |
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); }; } |