/* * Copyright 2021 Google LLC * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef skgpu_graphite_Texture_DEFINED #define skgpu_graphite_Texture_DEFINED #include "include/core/SkSize.h" #include "include/gpu/graphite/TextureInfo.h" #include "src/gpu/graphite/Resource.h" #include "src/gpu/graphite/ResourceTypes.h" namespace skgpu { class MutableTextureStateRef; class RefCntedCallback; enum class Budgeted : bool; }; namespace skgpu::graphite { class Texture : public Resource { public: ~Texture() override; int numSamples() const { return fInfo.numSamples(); } Mipmapped mipmapped() const { return fInfo.mipmapped(); } SkISize dimensions() const { return fDimensions; } const TextureInfo& textureInfo() const { return fInfo; } void setReleaseCallback(sk_sp); protected: Texture(const SharedContext*, SkISize dimensions, const TextureInfo& info, sk_sp mutableState, Ownership, skgpu::Budgeted); MutableTextureStateRef* mutableState() const; private: SkISize fDimensions; TextureInfo fInfo; sk_sp fMutableState; sk_sp fReleaseCallback; }; } // namepsace skgpu::graphite #endif // skgpu_graphite_Texture_DEFINED