/* * 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 MutableTextureState; 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); const char* getResourceType() const override { return "Texture"; } #if defined(GRAPHITE_TEST_UTILS) const Texture* asTexture() const override { return this; } #endif protected: Texture(const SharedContext*, SkISize dimensions, const TextureInfo& info, sk_sp mutableState, Ownership, skgpu::Budgeted); MutableTextureState* mutableState() const; void invokeReleaseProc() override; private: SkISize fDimensions; TextureInfo fInfo; sk_sp fMutableState; sk_sp fReleaseCallback; }; } // namepsace skgpu::graphite #endif // skgpu_graphite_Texture_DEFINED