[core] add gfx::CommandEncoder::present()

This commit is contained in:
Konstantin Käfer
2019-04-02 14:11:37 +02:00
parent da5bd4d6e3
commit 179c5fe83b
8 changed files with 39 additions and 14 deletions

View File

@@ -9,6 +9,7 @@ namespace gfx {
class RenderPassDescriptor;
class RenderPass;
class Renderable;
class CommandEncoder {
protected:
@@ -28,6 +29,7 @@ public:
}
virtual std::unique_ptr<RenderPass> createRenderPass(const char* name, const RenderPassDescriptor&) = 0;
virtual void present(Renderable&) = 0;
};
} // namespace gfx

View File

@@ -1,6 +1,7 @@
#include <mbgl/gl/command_encoder.hpp>
#include <mbgl/gl/render_pass.hpp>
#include <mbgl/gl/context.hpp>
#include <mbgl/gl/renderable_resource.hpp>
#include <mbgl/gl/debugging_extension.hpp>
#include <mbgl/platform/gl_functions.hpp>
@@ -19,6 +20,10 @@ CommandEncoder::createRenderPass(const char* name, const gfx::RenderPassDescript
return std::make_unique<gl::RenderPass>(*this, name, descriptor);
}
void CommandEncoder::present(gfx::Renderable& renderable) {
renderable.getResource<gl::RenderableResource>().swap();
}
void CommandEncoder::pushDebugGroup(const char* name) {
(void)name;
#ifndef NDEBUG

View File

@@ -18,6 +18,7 @@ public:
friend class RenderPass;
std::unique_ptr<gfx::RenderPass> createRenderPass(const char* name, const gfx::RenderPassDescriptor&) override;
void present(gfx::Renderable&) override;
private:
void pushDebugGroup(const char* name) override;

View File

@@ -493,6 +493,10 @@ void Renderer::Impl::render(const UpdateParameters& updateParameters) {
observer->onDidFinishRenderingMap();
}
if (updateParameters.mode == MapMode::Continuous) {
parameters.encoder->present(parameters.backend.getDefaultRenderable());
}
// CommandEncoder destructor submits render commands.
}