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