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/GrRenderTargetProxy.h" |
12 | #include "src/gpu/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 | GrMipMapsStatus, |
37 | SkBackingFit, |
38 | SkBudgeted, |
39 | GrProtected, |
40 | GrInternalSurfaceFlags, |
41 | UseAllocator); |
42 | |
43 | // Lazy-callback version |
44 | GrTextureRenderTargetProxy(const GrCaps&, |
45 | LazyInstantiateCallback&&, |
46 | const GrBackendFormat&, |
47 | SkISize, |
48 | int sampleCnt, |
49 | GrMipMapped, |
50 | GrMipMapsStatus, |
51 | SkBackingFit, |
52 | SkBudgeted, |
53 | GrProtected, |
54 | GrInternalSurfaceFlags, |
55 | UseAllocator); |
56 | |
57 | // Wrapped version |
58 | GrTextureRenderTargetProxy(sk_sp<GrSurface>, |
59 | UseAllocator); |
60 | |
61 | void initSurfaceFlags(const GrCaps&); |
62 | |
63 | bool instantiate(GrResourceProvider*) override; |
64 | sk_sp<GrSurface> createSurface(GrResourceProvider*) const override; |
65 | |
66 | size_t onUninstantiatedGpuMemorySize(const GrCaps&) const override; |
67 | |
68 | SkDEBUGCODE(void onValidateSurface(const GrSurface*) override;) |
69 | }; |
70 | |
71 | #ifdef SK_BUILD_FOR_WIN |
72 | #pragma warning(pop) |
73 | #endif |
74 | |
75 | #endif |
76 | |