#pragma once #include #include namespace mbgl { namespace gfx { class RenderPassDescriptor; class RenderPass; class Renderable; class CommandEncoder { protected: explicit CommandEncoder() = default; friend class DebugGroup; virtual void pushDebugGroup(const char* name) = 0; virtual void popDebugGroup() = 0; public: virtual ~CommandEncoder() = default; CommandEncoder(const CommandEncoder&) = delete; CommandEncoder& operator=(const CommandEncoder&) = delete; DebugGroup createDebugGroup(const char* name) { return { *this, name }; } virtual std::unique_ptr createRenderPass(const char* name, const RenderPassDescriptor&) = 0; virtual void present(Renderable&) = 0; }; } // namespace gfx } // namespace mbgl