Home | History | Annotate | Download | only in gpu
      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     // 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&, const GrSurfaceDesc&,
     32                                SkBackingFit, SkBudgeted, uint32_t flags);
     33 
     34     // Lazy-callback version
     35     GrTextureRenderTargetProxy(LazyInstantiateCallback&&, const GrSurfaceDesc& desc, GrMipMapped,
     36                                SkBackingFit, SkBudgeted, uint32_t flags);
     37 
     38     // Wrapped version
     39     GrTextureRenderTargetProxy(sk_sp<GrSurface>, GrSurfaceOrigin);
     40 
     41     bool instantiate(GrResourceProvider*) override;
     42     sk_sp<GrSurface> createSurface(GrResourceProvider*) const override;
     43 
     44     size_t onUninstantiatedGpuMemorySize() const override;
     45 
     46     SkDEBUGCODE(void validateLazyTexture(const GrTexture*) override;)
     47 };
     48 
     49 #ifdef SK_BUILD_FOR_WIN
     50 #pragma warning(pop)
     51 #endif
     52 
     53 #endif
     54