diff options
author | robertphillips <robertphillips@google.com> | 2016-05-03 08:47:00 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-05-03 08:47:01 -0700 |
commit | 92605b35efa0155c44d24bd8415b4cc1db8831db (patch) | |
tree | 02df8d88f0f90cdab30ef095629d13d6fd45ea46 /include/private/GrSurfaceProxy.h | |
parent | 871a0484305e9c051e2d78b62e1f2a5fa4bdb3a4 (diff) |
Add Gr*Proxy classes
This isn't wired in anywhere yet.
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1937553002
Committed: https://skia.googlesource.com/skia/+/de5bf0cfeca908b81a28cc50065f7bc2da3d2fd1
Review-Url: https://codereview.chromium.org/1937553002
Diffstat (limited to 'include/private/GrSurfaceProxy.h')
-rw-r--r-- | include/private/GrSurfaceProxy.h | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/include/private/GrSurfaceProxy.h b/include/private/GrSurfaceProxy.h new file mode 100644 index 0000000000..63e646b7d3 --- /dev/null +++ b/include/private/GrSurfaceProxy.h @@ -0,0 +1,72 @@ +/* + * Copyright 2016 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef GrSurfaceProxy_DEFINED +#define GrSurfaceProxy_DEFINED + +#include "GrGpuResource.h" + +class GrTextureProxy; +class GrRenderTargetProxy; + +class GrSurfaceProxy : public GrIORef<GrSurfaceProxy> { +public: + const GrSurfaceDesc& desc() const { return fDesc; } + + GrSurfaceOrigin origin() const { + SkASSERT(kTopLeft_GrSurfaceOrigin == fDesc.fOrigin || + kBottomLeft_GrSurfaceOrigin == fDesc.fOrigin); + return fDesc.fOrigin; + } + int width() const { return fDesc.fWidth; } + int height() const { return fDesc.fWidth; } + GrPixelConfig config() const { return fDesc.fConfig; } + + uint32_t uniqueID() const { return fUniqueID; } + + /** + * @return the texture proxy associated with the surface proxy, may be NULL. + */ + virtual GrTextureProxy* asTextureProxy() { return nullptr; } + virtual const GrTextureProxy* asTextureProxy() const { return nullptr; } + + /** + * @return the render target proxy associated with the surface proxy, may be NULL. + */ + virtual GrRenderTargetProxy* asRenderTargetProxy() { return nullptr; } + virtual const GrRenderTargetProxy* asRenderTargetProxy() const { return nullptr; } + +protected: + GrSurfaceProxy(const GrSurfaceDesc& desc, SkBackingFit fit, SkBudgeted budgeted) + : fDesc(desc) + , fFit(fit) + , fBudgeted(budgeted) + , fUniqueID(CreateUniqueID()) { + } + + virtual ~GrSurfaceProxy() {} + + // For wrapped resources, 'fDesc' will always be filled in from the wrapped resource. + const GrSurfaceDesc fDesc; + const SkBackingFit fFit; // always exact for wrapped resources + const SkBudgeted fBudgeted; // set from the backing resource for wrapped resources + const uint32_t fUniqueID; + +private: + static uint32_t CreateUniqueID(); + + // See comment in GrGpuResource.h. + void notifyAllCntsAreZero(CntType) const {} + bool notifyRefCountIsZero() const { return false; } + + typedef GrIORef<GrSurfaceProxy> INHERITED; + + // to access notifyAllCntsAreZero and notifyRefCntIsZero. + friend class GrIORef<GrSurfaceProxy>; +}; + +#endif |