[core] Don't crash when attribute count is exceeded
This commit is contained in:
committed by
Lauren Budorick
parent
f6da3ba9be
commit
c3346f473a
@@ -9,8 +9,10 @@
|
||||
#include <mbgl/renderer/layers/render_raster_layer.hpp>
|
||||
#include <mbgl/renderer/layers/render_symbol_layer.hpp>
|
||||
#include <mbgl/renderer/layers/render_heatmap_layer.hpp>
|
||||
#include <mbgl/renderer/paint_parameters.hpp>
|
||||
#include <mbgl/style/types.hpp>
|
||||
#include <mbgl/renderer/render_tile.hpp>
|
||||
#include <mbgl/util/logging.hpp>
|
||||
|
||||
namespace mbgl {
|
||||
|
||||
@@ -73,5 +75,32 @@ void RenderLayer::setRenderTiles(std::vector<std::reference_wrapper<RenderTile>>
|
||||
renderTiles = std::move(tiles);
|
||||
}
|
||||
|
||||
void RenderLayer::checkRenderability(const PaintParameters& parameters,
|
||||
const uint32_t activeBindingCount) {
|
||||
// Only warn once for every layer.
|
||||
if (hasRenderFailures) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (activeBindingCount > parameters.context.maximumVertexBindingCount) {
|
||||
Log::Error(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.",
|
||||
getID().c_str(),
|
||||
activeBindingCount - parameters.context.minimumRequiredVertexBindingCount);
|
||||
hasRenderFailures = true;
|
||||
} else if (activeBindingCount > parameters.context.minimumRequiredVertexBindingCount) {
|
||||
Log::Error(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.",
|
||||
getID().c_str(),
|
||||
activeBindingCount - parameters.context.minimumRequiredVertexBindingCount);
|
||||
hasRenderFailures = true;
|
||||
}
|
||||
}
|
||||
|
||||
} //namespace mbgl
|
||||
|
||||
|
||||
Reference in New Issue
Block a user