#pragma once #include #include #include "mbgl/gfx/offscreen_texture.hpp" #include namespace mbgl { namespace webgpu { class HeadlessBackend final : public webgpu::RendererBackend, public gfx::HeadlessBackend { public: HeadlessBackend(Size = {256, 256}, SwapBehaviour = SwapBehaviour::NoFlush, gfx::ContextMode = gfx::ContextMode::Unique); ~HeadlessBackend() override; gfx::Renderable& getDefaultRenderable() override; PremultipliedImage readStillImage() override; RendererBackend* getRendererBackend() override; /*! * \brief takeTexture * Take ownership of the current texture * \return */ gfx::Texture2DPtr takeTexture(); // Override WebGPU-specific methods void* getCurrentTextureView() override; void* getDepthStencilView() override; mbgl::Size getFramebufferSize() const override; private: void activate() override; void deactivate() override; void createOffscreenTextures(); private: class Impl; std::unique_ptr impl; bool active = false; }; } // namespace webgpu } // namespace mbgl