xref: /aosp_15_r20/external/skia/src/gpu/ganesh/mtl/GrMtlTextureRenderTarget.h (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1*c8dee2aaSAndroid Build Coastguard Worker /*
2*c8dee2aaSAndroid Build Coastguard Worker  * Copyright 2018 Google Inc.
3*c8dee2aaSAndroid Build Coastguard Worker  *
4*c8dee2aaSAndroid Build Coastguard Worker  * Use of this source code is governed by a BSD-style license that can be
5*c8dee2aaSAndroid Build Coastguard Worker  * found in the LICENSE file.
6*c8dee2aaSAndroid Build Coastguard Worker  */
7*c8dee2aaSAndroid Build Coastguard Worker 
8*c8dee2aaSAndroid Build Coastguard Worker #ifndef GrMtlTextureRenderTarget_DEFINED
9*c8dee2aaSAndroid Build Coastguard Worker #define GrMtlTextureRenderTarget_DEFINED
10*c8dee2aaSAndroid Build Coastguard Worker 
11*c8dee2aaSAndroid Build Coastguard Worker #include "src/gpu/ganesh/mtl/GrMtlRenderTarget.h"
12*c8dee2aaSAndroid Build Coastguard Worker #include "src/gpu/ganesh/mtl/GrMtlTexture.h"
13*c8dee2aaSAndroid Build Coastguard Worker 
14*c8dee2aaSAndroid Build Coastguard Worker class GrMtlTextureRenderTarget: public GrMtlTexture, public GrMtlRenderTarget {
15*c8dee2aaSAndroid Build Coastguard Worker public:
16*c8dee2aaSAndroid Build Coastguard Worker     static sk_sp<GrMtlTextureRenderTarget> MakeNewTextureRenderTarget(GrMtlGpu*,
17*c8dee2aaSAndroid Build Coastguard Worker                                                                       skgpu::Budgeted,
18*c8dee2aaSAndroid Build Coastguard Worker                                                                       SkISize,
19*c8dee2aaSAndroid Build Coastguard Worker                                                                       int sampleCnt,
20*c8dee2aaSAndroid Build Coastguard Worker                                                                       MTLPixelFormat,
21*c8dee2aaSAndroid Build Coastguard Worker                                                                       uint32_t mipLevels,
22*c8dee2aaSAndroid Build Coastguard Worker                                                                       GrMipmapStatus,
23*c8dee2aaSAndroid Build Coastguard Worker                                                                       std::string_view label);
24*c8dee2aaSAndroid Build Coastguard Worker 
25*c8dee2aaSAndroid Build Coastguard Worker     static sk_sp<GrMtlTextureRenderTarget> MakeWrappedTextureRenderTarget(GrMtlGpu*,
26*c8dee2aaSAndroid Build Coastguard Worker                                                                           SkISize,
27*c8dee2aaSAndroid Build Coastguard Worker                                                                           int sampleCnt,
28*c8dee2aaSAndroid Build Coastguard Worker                                                                           id<MTLTexture>,
29*c8dee2aaSAndroid Build Coastguard Worker                                                                           GrWrapCacheable);
backendFormat()30*c8dee2aaSAndroid Build Coastguard Worker     GrBackendFormat backendFormat() const override {
31*c8dee2aaSAndroid Build Coastguard Worker         return GrMtlTexture::backendFormat();
32*c8dee2aaSAndroid Build Coastguard Worker     }
33*c8dee2aaSAndroid Build Coastguard Worker 
34*c8dee2aaSAndroid Build Coastguard Worker protected:
onAbandon()35*c8dee2aaSAndroid Build Coastguard Worker     void onAbandon() override {
36*c8dee2aaSAndroid Build Coastguard Worker         GrMtlRenderTarget::onAbandon();
37*c8dee2aaSAndroid Build Coastguard Worker         GrMtlTexture::onAbandon();
38*c8dee2aaSAndroid Build Coastguard Worker     }
39*c8dee2aaSAndroid Build Coastguard Worker 
onRelease()40*c8dee2aaSAndroid Build Coastguard Worker     void onRelease() override {
41*c8dee2aaSAndroid Build Coastguard Worker         GrMtlRenderTarget::onRelease();
42*c8dee2aaSAndroid Build Coastguard Worker         GrMtlTexture::onRelease();
43*c8dee2aaSAndroid Build Coastguard Worker     }
44*c8dee2aaSAndroid Build Coastguard Worker 
45*c8dee2aaSAndroid Build Coastguard Worker private:
46*c8dee2aaSAndroid Build Coastguard Worker     GrMtlTextureRenderTarget(GrMtlGpu* gpu,
47*c8dee2aaSAndroid Build Coastguard Worker                              skgpu::Budgeted budgeted,
48*c8dee2aaSAndroid Build Coastguard Worker                              SkISize,
49*c8dee2aaSAndroid Build Coastguard Worker                              sk_sp<GrMtlAttachment> texture,
50*c8dee2aaSAndroid Build Coastguard Worker                              sk_sp<GrMtlAttachment> colorAttachment,
51*c8dee2aaSAndroid Build Coastguard Worker                              sk_sp<GrMtlAttachment> resolveAttachment,
52*c8dee2aaSAndroid Build Coastguard Worker                              GrMipmapStatus,
53*c8dee2aaSAndroid Build Coastguard Worker                              std::string_view label);
54*c8dee2aaSAndroid Build Coastguard Worker 
55*c8dee2aaSAndroid Build Coastguard Worker     GrMtlTextureRenderTarget(GrMtlGpu* gpu,
56*c8dee2aaSAndroid Build Coastguard Worker                              SkISize,
57*c8dee2aaSAndroid Build Coastguard Worker                              sk_sp<GrMtlAttachment> texture,
58*c8dee2aaSAndroid Build Coastguard Worker                              sk_sp<GrMtlAttachment> colorAttachment,
59*c8dee2aaSAndroid Build Coastguard Worker                              sk_sp<GrMtlAttachment> resolveAttachment,
60*c8dee2aaSAndroid Build Coastguard Worker                              GrMipmapStatus,
61*c8dee2aaSAndroid Build Coastguard Worker                              GrWrapCacheable cacheable,
62*c8dee2aaSAndroid Build Coastguard Worker                              std::string_view label);
63*c8dee2aaSAndroid Build Coastguard Worker 
64*c8dee2aaSAndroid Build Coastguard Worker     size_t onGpuMemorySize() const override;
65*c8dee2aaSAndroid Build Coastguard Worker 
66*c8dee2aaSAndroid Build Coastguard Worker     void onSetLabel() override;
67*c8dee2aaSAndroid Build Coastguard Worker };
68*c8dee2aaSAndroid Build Coastguard Worker 
69*c8dee2aaSAndroid Build Coastguard Worker #endif
70