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 "GrRenderTargetProxy.h" 12 #include "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 GrTextureProxy, public GrRenderTargetProxy { 25 private: 26 friend class GrSurfaceProxy; // for ctors 27 28 // Deferred version 29 GrTextureRenderTargetProxy(const GrCaps&, const GrSurfaceDesc&, 30 SkBackingFit, SkBudgeted, uint32_t flags); 31 32 // Wrapped version 33 GrTextureRenderTargetProxy(sk_sp<GrSurface>); 34 35 bool instantiate(GrResourceProvider*) override; 36 sk_sp<GrSurface> createSurface(GrResourceProvider*) const override; 37 38 size_t onUninstantiatedGpuMemorySize() const override; 39 }; 40 41 #ifdef SK_BUILD_FOR_WIN 42 #pragma warning(pop) 43 #endif 44 45 #endif 46