summaryrefslogtreecommitdiff
path: root/src/mbgl/gfx
diff options
context:
space:
mode:
authorKonstantin Käfer <mail@kkaefer.com>2019-04-02 22:35:46 +0200
committerKonstantin Käfer <mail@kkaefer.com>2019-04-05 11:49:17 +0200
commitd7aaf83421261087a99d18d92eca9637c1bf72f8 (patch)
treedf938a5b6fe40c9e665e028285d28eb88e0dfea2 /src/mbgl/gfx
parentb1a2513b61761d09b3ae08904c03d28caedd09fe (diff)
downloadqtlocation-mapboxgl-d7aaf83421261087a99d18d92eca9637c1bf72f8.tar.gz
[core] introduce gfx::RenderPass
Diffstat (limited to 'src/mbgl/gfx')
-rw-r--r--src/mbgl/gfx/command_encoder.hpp7
-rw-r--r--src/mbgl/gfx/program.hpp2
-rw-r--r--src/mbgl/gfx/render_pass.hpp41
3 files changed, 50 insertions, 0 deletions
diff --git a/src/mbgl/gfx/command_encoder.hpp b/src/mbgl/gfx/command_encoder.hpp
index f095c5b867..145c2bef82 100644
--- a/src/mbgl/gfx/command_encoder.hpp
+++ b/src/mbgl/gfx/command_encoder.hpp
@@ -2,9 +2,14 @@
#include <mbgl/gfx/debug_group.hpp>
+#include <memory>
+
namespace mbgl {
namespace gfx {
+class RenderPassDescriptor;
+class RenderPass;
+
class CommandEncoder {
protected:
explicit CommandEncoder() = default;
@@ -21,6 +26,8 @@ public:
DebugGroup<CommandEncoder> createDebugGroup(const char* name) {
return { *this, name };
}
+
+ virtual std::unique_ptr<RenderPass> createRenderPass(const char* name, const RenderPassDescriptor&) = 0;
};
} // namespace gfx
diff --git a/src/mbgl/gfx/program.hpp b/src/mbgl/gfx/program.hpp
index 94ba3b18ef..b636bc2654 100644
--- a/src/mbgl/gfx/program.hpp
+++ b/src/mbgl/gfx/program.hpp
@@ -13,6 +13,7 @@ class ColorMode;
class CullFaceMode;
class DrawScope;
class IndexBuffer;
+class RenderPass;
template <class> class UniformValues;
template <class> class AttributeBindings;
template <class> class TextureBindings;
@@ -35,6 +36,7 @@ public:
using TextureList = typename Name::TextureList;
virtual void draw(Context&,
+ RenderPass&,
const DrawMode&,
const DepthMode&,
const StencilMode&,
diff --git a/src/mbgl/gfx/render_pass.hpp b/src/mbgl/gfx/render_pass.hpp
new file mode 100644
index 0000000000..db5ba661ba
--- /dev/null
+++ b/src/mbgl/gfx/render_pass.hpp
@@ -0,0 +1,41 @@
+#pragma once
+
+#include <mbgl/gfx/debug_group.hpp>
+#include <mbgl/util/color.hpp>
+#include <mbgl/util/optional.hpp>
+
+#include <cstdint>
+
+namespace mbgl {
+namespace gfx {
+
+class Renderable;
+
+class RenderPassDescriptor {
+public:
+ Renderable& renderable;
+ optional<Color> clearColor;
+ optional<float> clearDepth;
+ optional<int32_t> clearStencil;
+};
+
+class RenderPass {
+protected:
+ RenderPass() = default;
+
+ friend class DebugGroup<RenderPass>;
+ virtual void pushDebugGroup(const char* name) = 0;
+ virtual void popDebugGroup() = 0;
+
+public:
+ virtual ~RenderPass() = default;
+ RenderPass(const RenderPass&) = delete;
+ RenderPass& operator=(const RenderPass&) = delete;
+
+ DebugGroup<RenderPass> createDebugGroup(const char* name) {
+ return { *this, name };
+ }
+};
+
+} // namespace gfx
+} // namespace mbgl