--- /dev/null
+#ifndef MSP_GL_COMMANDS_BACKEND_H_
+#define MSP_GL_COMMANDS_BACKEND_H_
+
+namespace Msp {
+namespace GL {
+
+class Batch;
+union ClearValue;
+class Framebuffer;
+class PipelineState;
+class QueryPool;
+
+class OpenGLCommands
+{
+protected:
+ const PipelineState *pipeline_state;
+
+ OpenGLCommands();
+
+ void use_pipeline(const PipelineState *);
+ void clear(const ClearValue *);
+ void draw(const Batch &);
+ void draw_instanced(const Batch &, unsigned);
+ void resolve_multisample(Framebuffer &);
+
+ void begin_query(const QueryPool &, unsigned);
+ void end_query(const QueryPool &, unsigned);
+};
+
+using CommandsBackend = OpenGLCommands;
+
+} // namespace GL
+} // namespace Msp
+
+#endif
+