#pragma once #include #include #include #include namespace mbgl { namespace gfx { class CommandEncoder; class Renderable; } // namespace gfx namespace webgpu { class CommandEncoder; class RenderbufferResource : public gfx::RenderbufferResource { public: RenderbufferResource() = default; }; class UploadPass final : public gfx::UploadPass { public: UploadPass(gfx::Renderable& renderable, CommandEncoder& commandEncoder, const char* name); ~UploadPass() override; private: void pushDebugGroup(const char* name) override; void popDebugGroup() override; public: gfx::Context& getContext() override; const gfx::Context& getContext() const override; std::unique_ptr createVertexBufferResource(const void* data, std::size_t size, gfx::BufferUsageType, bool persistent) override; void updateVertexBufferResource(gfx::VertexBufferResource&, const void* data, std::size_t size) override; std::unique_ptr createIndexBufferResource(const void* data, std::size_t size, gfx::BufferUsageType, bool persistent) override; void updateIndexBufferResource(gfx::IndexBufferResource&, const void* data, std::size_t size) override; gfx::AttributeBindingArray buildAttributeBindings( const std::size_t vertexCount, const gfx::AttributeDataType vertexType, const std::size_t vertexAttributeIndex, const std::vector& vertexData, const gfx::VertexAttributeArray& defaults, const gfx::VertexAttributeArray& overrides, gfx::BufferUsageType, const std::optional> lastUpdate, /*out*/ std::vector>& outBuffers) override; const gfx::UniqueVertexBufferResource& getBuffer(const gfx::VertexVectorBasePtr&, gfx::BufferUsageType, bool forceUpdate); private: CommandEncoder& commandEncoder; std::vector> debugGroups; }; } // namespace webgpu } // namespace mbgl