summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKonstantin Käfer <mail@kkaefer.com>2019-03-15 14:10:25 +0100
committerKonstantin Käfer <mail@kkaefer.com>2019-03-20 15:40:47 +0100
commit9ee1de575af4ef332ad8812c11d9d63edc94d76e (patch)
tree9d66b990fdf026e0be4431b15fad4e79958e1cba
parent52cf9a1af385113cee523ce826d7c86c8739e0a2 (diff)
downloadqtlocation-mapboxgl-9ee1de575af4ef332ad8812c11d9d63edc94d76e.tar.gz
[core] expose vertex binding count in gfx::Context
-rw-r--r--src/mbgl/gfx/context.hpp6
-rw-r--r--src/mbgl/gl/context.cpp2
-rw-r--r--src/mbgl/gl/context.hpp4
-rw-r--r--src/mbgl/renderer/render_layer.cpp13
4 files changed, 12 insertions, 13 deletions
diff --git a/src/mbgl/gfx/context.hpp b/src/mbgl/gfx/context.hpp
index 90b62c94a4..3653eeebe1 100644
--- a/src/mbgl/gfx/context.hpp
+++ b/src/mbgl/gfx/context.hpp
@@ -17,10 +17,14 @@ namespace gfx {
class Context {
protected:
- Context(ContextType type_) : backend(type_) {
+ Context(ContextType type_, uint32_t maximumVertexBindingCount_)
+ : backend(type_), maximumVertexBindingCount(maximumVertexBindingCount_) {
}
+public:
const ContextType backend;
+ static constexpr const uint32_t minimumRequiredVertexBindingCount = 8;
+ const uint32_t maximumVertexBindingCount;
public:
Context(Context&&) = delete;
diff --git a/src/mbgl/gl/context.cpp b/src/mbgl/gl/context.cpp
index 5193381251..1f780331c2 100644
--- a/src/mbgl/gl/context.cpp
+++ b/src/mbgl/gl/context.cpp
@@ -67,7 +67,7 @@ static_assert(underlying_type(UniformDataType::SamplerCube) == GL_SAMPLER_CUBE,
static_assert(std::is_same<BinaryProgramFormat, GLenum>::value, "OpenGL type mismatch");
Context::Context()
- : gfx::Context(gfx::ContextType::OpenGL), maximumVertexBindingCount([] {
+ : gfx::Context(gfx::ContextType::OpenGL, [] {
GLint value;
MBGL_CHECK_ERROR(glGetIntegerv(GL_MAX_VERTEX_ATTRIBS, &value));
return value;
diff --git a/src/mbgl/gl/context.hpp b/src/mbgl/gl/context.hpp
index fe09390cc6..754b29c03e 100644
--- a/src/mbgl/gl/context.hpp
+++ b/src/mbgl/gl/context.hpp
@@ -172,9 +172,7 @@ public:
#endif // MBGL_USE_GLES2
bool supportsHalfFloatTextures = false;
- const uint32_t maximumVertexBindingCount;
- static constexpr const uint32_t minimumRequiredVertexBindingCount = 8;
-
+
private:
State<value::StencilFunc> stencilFunc;
State<value::StencilMask> stencilMask;
diff --git a/src/mbgl/renderer/render_layer.cpp b/src/mbgl/renderer/render_layer.cpp
index 0bec14a0da..803b5b2190 100644
--- a/src/mbgl/renderer/render_layer.cpp
+++ b/src/mbgl/renderer/render_layer.cpp
@@ -3,7 +3,7 @@
#include <mbgl/renderer/render_tile.hpp>
#include <mbgl/style/types.hpp>
#include <mbgl/tile/tile.hpp>
-#include <mbgl/gl/context.hpp>
+#include <mbgl/gfx/context.hpp>
#include <mbgl/util/logging.hpp>
namespace mbgl {
@@ -99,25 +99,22 @@ void RenderLayer::checkRenderability(const PaintParameters& parameters,
return;
}
- // TODO: remove cast
- auto& glContext = reinterpret_cast<gl::Context&>(parameters.context);
-
- if (activeBindingCount > glContext.maximumVertexBindingCount) {
+ 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 - glContext.minimumRequiredVertexBindingCount);
+ activeBindingCount - parameters.context.minimumRequiredVertexBindingCount);
hasRenderFailures = true;
- } else if (activeBindingCount > glContext.minimumRequiredVertexBindingCount) {
+ } else if (activeBindingCount > parameters.context.minimumRequiredVertexBindingCount) {
Log::Warning(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 - glContext.minimumRequiredVertexBindingCount);
+ activeBindingCount - parameters.context.minimumRequiredVertexBindingCount);
hasRenderFailures = true;
}
}