xref: /aosp_15_r20/external/skia/src/gpu/graphite/Texture.h (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1 /*
2  * Copyright 2021 Google LLC
3  *
4  * Use of this source code is governed by a BSD-style license that can be
5  * found in the LICENSE file.
6  */
7 
8 #ifndef skgpu_graphite_Texture_DEFINED
9 #define skgpu_graphite_Texture_DEFINED
10 
11 #include "include/core/SkSize.h"
12 #include "include/gpu/graphite/TextureInfo.h"
13 #include "src/gpu/graphite/Resource.h"
14 #include "src/gpu/graphite/ResourceTypes.h"
15 
16 namespace skgpu {
17 class MutableTextureState;
18 class RefCntedCallback;
19 enum class Budgeted : bool;
20 };
21 
22 namespace skgpu::graphite {
23 
24 class Texture : public Resource {
25 public:
26     ~Texture() override;
27 
numSamples()28     int numSamples() const { return fInfo.numSamples(); }
mipmapped()29     Mipmapped mipmapped() const { return fInfo.mipmapped(); }
30 
dimensions()31     SkISize dimensions() const { return fDimensions; }
textureInfo()32     const TextureInfo& textureInfo() const { return fInfo; }
33 
34     void setReleaseCallback(sk_sp<RefCntedCallback>);
35 
getResourceType()36     const char* getResourceType() const override { return "Texture"; }
37 
asTexture()38     const Texture* asTexture() const override { return this; }
39 
40 protected:
41     Texture(const SharedContext*,
42             SkISize dimensions,
43             const TextureInfo& info,
44             sk_sp<MutableTextureState> mutableState,
45             Ownership,
46             skgpu::Budgeted);
47 
48     MutableTextureState* mutableState() const;
49 
50     void invokeReleaseProc() override;
51 
52     void onDumpMemoryStatistics(SkTraceMemoryDump* traceMemoryDump,
53                                 const char* dumpName) const override;
54 
55 private:
56     SkISize fDimensions;
57     TextureInfo fInfo;
58     sk_sp<MutableTextureState> fMutableState;
59     sk_sp<RefCntedCallback> fReleaseCallback;
60 };
61 
62 } // namespace skgpu::graphite
63 
64 #endif // skgpu_graphite_Texture_DEFINED
65