--- /dev/null
+#ifndef MSP_GL_FRAMEBUFFER_BACKEND_H_
+#define MSP_GL_FRAMEBUFFER_BACKEND_H_
+
+#include <string>
+#include "frameformat.h"
+#include "handles.h"
+
+namespace Msp {
+namespace GL {
+
+class Device;
+
+class VulkanFramebuffer: public NonCopyable
+{
+ friend class VulkanCommands;
+ friend class VulkanPipelineState;
+
+protected:
+ Device &device;
+ mutable VkFramebuffer handle = 0;
+ std::string debug_name;
+
+ VulkanFramebuffer(bool);
+ VulkanFramebuffer(VulkanFramebuffer &&);
+ ~VulkanFramebuffer();
+
+ bool is_format_supported(const FrameFormat &);
+ static void require_layered() { }
+
+ void update(unsigned) const;
+ void require_complete() const { }
+
+ void set_debug_name(const std::string &);
+ void set_vulkan_object_name() const;
+};
+
+using FramebufferBackend = VulkanFramebuffer;
+
+} // namespace GL
+} // namespace Msp
+
+#endif