#pragma once #import #include "drape/hw_texture.hpp" #include "drape/pointers.hpp" namespace dp { namespace metal { class MetalTextureAllocator : public HWTextureAllocator { public: drape_ptr CreateTexture(ref_ptr context) override; void Flush() override {} }; class MetalTexture : public HWTexture { using Base = HWTexture; public: explicit MetalTexture(ref_ptr allocator); void Create(ref_ptr context, Params const & params, ref_ptr data) override; void UploadData(ref_ptr context, uint32_t x, uint32_t y, uint32_t width, uint32_t height, ref_ptr data) override; void Bind(ref_ptr context) const override {} void SetFilter(TextureFilter filter) override; bool Validate() const override; id GetTexture() const { return m_texture; } private: ref_ptr m_allocator; id m_texture; bool m_isMutable = false; }; } // namespace metal } // namespace dp