summaryrefslogtreecommitdiff
path: root/src/mbgl/gl
diff options
context:
space:
mode:
authorKonstantin Käfer <mail@kkaefer.com>2019-03-21 12:43:22 +0100
committerKonstantin Käfer <mail@kkaefer.com>2019-04-05 11:49:17 +0200
commit543b678982037595895a474f3a69348dc235e0fa (patch)
tree404902164dd27e409515de5fcf9a43fe81231686 /src/mbgl/gl
parent5270b2ffbd4fca75f93e7052bd928ebed3ea272a (diff)
downloadqtlocation-mapboxgl-543b678982037595895a474f3a69348dc235e0fa.tar.gz
[core] introduce CommandEncoder object
Diffstat (limited to 'src/mbgl/gl')
-rw-r--r--src/mbgl/gl/command_encoder.cpp12
-rw-r--r--src/mbgl/gl/command_encoder.hpp22
-rw-r--r--src/mbgl/gl/context.cpp5
-rw-r--r--src/mbgl/gl/context.hpp2
4 files changed, 41 insertions, 0 deletions
diff --git a/src/mbgl/gl/command_encoder.cpp b/src/mbgl/gl/command_encoder.cpp
new file mode 100644
index 0000000000..82046202bc
--- /dev/null
+++ b/src/mbgl/gl/command_encoder.cpp
@@ -0,0 +1,12 @@
+#include <mbgl/gl/command_encoder.hpp>
+#include <mbgl/gl/context.hpp>
+
+namespace mbgl {
+namespace gl {
+
+CommandEncoder::~CommandEncoder() {
+ context.performCleanup();
+}
+
+} // namespace gl
+} // namespace mbgl
diff --git a/src/mbgl/gl/command_encoder.hpp b/src/mbgl/gl/command_encoder.hpp
new file mode 100644
index 0000000000..0cfe80f433
--- /dev/null
+++ b/src/mbgl/gl/command_encoder.hpp
@@ -0,0 +1,22 @@
+#pragma once
+
+#include <mbgl/gfx/command_encoder.hpp>
+
+namespace mbgl {
+namespace gl {
+
+class Context;
+
+class CommandEncoder : public gfx::CommandEncoder {
+public:
+ explicit CommandEncoder(gl::Context& context_) : context(context_) {
+ }
+
+ ~CommandEncoder() override;
+
+private:
+ gl::Context& context;
+};
+
+} // namespace gl
+} // namespace mbgl
diff --git a/src/mbgl/gl/context.cpp b/src/mbgl/gl/context.cpp
index fcaae59804..97c1cd24d7 100644
--- a/src/mbgl/gl/context.cpp
+++ b/src/mbgl/gl/context.cpp
@@ -6,6 +6,7 @@
#include <mbgl/gl/renderbuffer_resource.hpp>
#include <mbgl/gl/draw_scope_resource.hpp>
#include <mbgl/gl/texture.hpp>
+#include <mbgl/gl/command_encoder.hpp>
#include <mbgl/gl/debugging.hpp>
#include <mbgl/gl/debugging_extension.hpp>
#include <mbgl/gl/vertex_array_extension.hpp>
@@ -691,6 +692,10 @@ void Context::setColorMode(const gfx::ColorMode& color) {
colorMask = color.mask;
}
+std::unique_ptr<gfx::CommandEncoder> Context::createCommandEncoder() {
+ return std::make_unique<gl::CommandEncoder>(*this);
+}
+
void Context::draw(const gfx::DrawMode& drawMode,
std::size_t indexOffset,
std::size_t indexLength) {
diff --git a/src/mbgl/gl/context.hpp b/src/mbgl/gl/context.hpp
index 74ea2c076e..d09bf7522e 100644
--- a/src/mbgl/gl/context.hpp
+++ b/src/mbgl/gl/context.hpp
@@ -214,6 +214,8 @@ private:
VertexArray createVertexArray();
bool supportsVertexArrays() const;
+ std::unique_ptr<gfx::CommandEncoder> createCommandEncoder() override;
+
friend detail::ProgramDeleter;
friend detail::ShaderDeleter;
friend detail::BufferDeleter;