Index: include/private/GrSurfaceProxy.h |
diff --git a/include/private/GrSurfaceProxy.h b/include/private/GrSurfaceProxy.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..01c52675a4a037c3c2d4ececfef673c7aa602111 |
--- /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 { delete this; } |
+ bool notifyRefCountIsZero() const { return true; } |
+ |
+ typedef GrIORef<GrSurfaceProxy> INHERITED; |
+ |
+ // to access notifyAllCntsAreZero and notifyRefCntIsZero. |
+ friend class GrIORef<GrSurfaceProxy>; |
+}; |
+ |
+#endif |