summaryrefslogtreecommitdiff
path: root/src/mbgl/renderer/renderer_backend.cpp
diff options
context:
space:
mode:
authorIvo van Dongen <info@ivovandongen.nl>2017-07-05 20:08:51 +0300
committerIvo van Dongen <ivovandongen@users.noreply.github.com>2017-07-18 10:45:12 +0200
commit46c43510d7ac5fe078010d5f0f5d39c4d5df3305 (patch)
tree5dc78959e174dc0e83198a4d92e86f65f33bb168 /src/mbgl/renderer/renderer_backend.cpp
parentee205ca9ca3f808fa2cc16295ebde0a7c3867381 (diff)
downloadqtlocation-mapboxgl-46c43510d7ac5fe078010d5f0f5d39c4d5df3305.tar.gz
[core] rename backend to renderer backend
Diffstat (limited to 'src/mbgl/renderer/renderer_backend.cpp')
-rw-r--r--src/mbgl/renderer/renderer_backend.cpp69
1 files changed, 69 insertions, 0 deletions
diff --git a/src/mbgl/renderer/renderer_backend.cpp b/src/mbgl/renderer/renderer_backend.cpp
new file mode 100644
index 0000000000..159ef432b3
--- /dev/null
+++ b/src/mbgl/renderer/renderer_backend.cpp
@@ -0,0 +1,69 @@
+#include <mbgl/renderer/renderer_backend.hpp>
+#include <mbgl/renderer/backend_scope.hpp>
+#include <mbgl/gl/context.hpp>
+#include <mbgl/gl/extension.hpp>
+#include <mbgl/gl/debugging.hpp>
+
+#include <cassert>
+
+namespace mbgl {
+
+RendererBackend::RendererBackend() = default;
+
+gl::Context& RendererBackend::getContext() {
+ assert(BackendScope::exists());
+ std::call_once(initialized, [this] {
+ context = std::make_unique<gl::Context>();
+ context->enableDebugging();
+ context->initializeExtensions(
+ std::bind(&RendererBackend::initializeExtension, this, std::placeholders::_1));
+ });
+ return *context;
+}
+
+PremultipliedImage RendererBackend::readFramebuffer(const Size& size) const {
+ assert(context);
+ return context->readFramebuffer<PremultipliedImage>(size);
+}
+
+void RendererBackend::assumeFramebufferBinding(const gl::FramebufferID fbo) {
+ getContext().bindFramebuffer.setCurrentValue(fbo);
+ if (fbo != ImplicitFramebufferBinding) {
+ assert(gl::value::BindFramebuffer::Get() == getContext().bindFramebuffer.getCurrentValue());
+ }
+}
+
+void RendererBackend::assumeViewport(int32_t x, int32_t y, const Size& size) {
+ getContext().viewport.setCurrentValue({ x, y, size });
+ assert(gl::value::Viewport::Get() == getContext().viewport.getCurrentValue());
+}
+
+void RendererBackend::assumeScissorTest(bool enabled) {
+ getContext().scissorTest.setCurrentValue(enabled);
+ assert(gl::value::ScissorTest::Get() == getContext().scissorTest.getCurrentValue());
+}
+
+bool RendererBackend::implicitFramebufferBound() {
+ return getContext().bindFramebuffer.getCurrentValue() == ImplicitFramebufferBinding;
+}
+
+void RendererBackend::setFramebufferBinding(const gl::FramebufferID fbo) {
+ getContext().bindFramebuffer = fbo;
+ if (fbo != ImplicitFramebufferBinding) {
+ assert(gl::value::BindFramebuffer::Get() == getContext().bindFramebuffer.getCurrentValue());
+ }
+}
+
+void RendererBackend::setViewport(int32_t x, int32_t y, const Size& size) {
+ getContext().viewport = { x, y, size };
+ assert(gl::value::Viewport::Get() == getContext().viewport.getCurrentValue());
+}
+
+void RendererBackend::setScissorTest(bool enabled) {
+ getContext().scissorTest = enabled;
+ assert(gl::value::ScissorTest::Get() == getContext().scissorTest.getCurrentValue());
+}
+
+RendererBackend::~RendererBackend() = default;
+
+} // namespace mbgl