1 /* 2 * Copyright 2016 Google Inc. 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 GrTextureRenderTargetProxy_DEFINED 9 #define GrTextureRenderTargetProxy_DEFINED 10 11 #include "src/gpu/ganesh/GrRenderTargetProxy.h" 12 #include "src/gpu/ganesh/GrTextureProxy.h" 13 14 #ifdef SK_BUILD_FOR_WIN 15 // Windows gives warnings about inheriting asTextureProxy/asRenderTargetProxy via dominance. 16 #pragma warning(push) 17 #pragma warning(disable: 4250) 18 #endif 19 20 // This class delays the acquisition of RenderTargets that are also textures until 21 // they are actually required 22 // Beware: the uniqueID of the TextureRenderTargetProxy will usually be different than 23 // the uniqueID of the RenderTarget/Texture it represents! 24 class GrTextureRenderTargetProxy : public GrRenderTargetProxy, public GrTextureProxy { 25 private: 26 // DDL TODO: rm the GrSurfaceProxy friending 27 friend class GrSurfaceProxy; // for ctors 28 friend class GrProxyProvider; // for ctors 29 30 // Deferred version 31 GrTextureRenderTargetProxy(const GrCaps&, 32 const GrBackendFormat&, 33 SkISize, 34 int sampleCnt, 35 GrMipmapped, 36 GrMipmapStatus, 37 SkBackingFit, 38 skgpu::Budgeted, 39 GrProtected, 40 GrInternalSurfaceFlags, 41 UseAllocator, 42 GrDDLProvider creatingProvider, 43 std::string_view label); 44 45 // Lazy-callback version 46 GrTextureRenderTargetProxy(const GrCaps&, 47 LazyInstantiateCallback&&, 48 const GrBackendFormat&, 49 SkISize, 50 int sampleCnt, 51 GrMipmapped, 52 GrMipmapStatus, 53 SkBackingFit, 54 skgpu::Budgeted, 55 GrProtected, 56 GrInternalSurfaceFlags, 57 UseAllocator, 58 GrDDLProvider creatingProvider, 59 std::string_view label); 60 61 // Wrapped version 62 GrTextureRenderTargetProxy(sk_sp<GrSurface>, 63 UseAllocator, 64 GrDDLProvider creatingProvider); 65 66 void initSurfaceFlags(const GrCaps&); 67 68 bool instantiate(GrResourceProvider*) override; 69 sk_sp<GrSurface> createSurface(GrResourceProvider*) const override; 70 71 size_t onUninstantiatedGpuMemorySize() const override; 72 LazySurfaceDesc callbackDesc() const override; 73 SkDEBUGCODE(void onValidateSurface(const GrSurface*) override;) 74 }; 75 76 #ifdef SK_BUILD_FOR_WIN 77 #pragma warning(pop) 78 #endif 79 80 #endif 81