diff options
author | Robert Phillips <robertphillips@google.com> | 2018-02-26 16:49:16 +0000 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2018-02-26 16:49:28 +0000 |
commit | 934c3d0c548d254a0d986963ee751caf0ffcb500 (patch) | |
tree | a7f600513acc8ca4e0e944c27116ad169f131544 /include/private | |
parent | 84d823a5e2a03b09f7db4964218b9e04e821c878 (diff) |
Revert "Revert "Separate creation time & flush time behavior in GrDrawOpAtlas (take 2)""
This reverts commit 84d823a5e2a03b09f7db4964218b9e04e821c878.
Reason for revert: The DFT diffs don't repro on Windows so I'm chalking it up to minor device differences
Original change's description:
> Revert "Separate creation time & flush time behavior in GrDrawOpAtlas (take 2)"
>
> This reverts commit 96165ebeaa36a2aae0eedaf12d81f53d3caf999a.
>
> Reason for revert: DFT GMs w/ LCD text are slightly different
>
> Original change's description:
> > Separate creation time & flush time behavior in GrDrawOpAtlas (take 2)
> >
> > This CL clarifies what is going on in the GrDrawOpAtlas and GrAtlasGlyphCache.
> >
> > For the GrDrawOpAtlas:
> > At creation time all the allowed pages are created (with their backing GrTextureProxies) but they aren't instantiated.
> >
> > The GrDrawOpAtlas::instantiate call is called in preFlushCB and allocates any pages known to be needed at the start of flush
> >
> > GrDrawOpAtlas::addToAtlas is called at flush time and, if a new page is activated, will instantiated it at that time.
> >
> > During compaction, an unused page will be deInstantiated but its Plots and backing GrTextureProxy will remain alive.
> >
> > The GrAtlasGlyphCache reflects the changes to the GrDrawOpAtlas
> > It now carries a GrProxyProvider for when it needs to create an atlas
> > It passes in a GrResourceProvider* at flush time to allow instantiation.
> >
> > It does not, yet, allocate that GrDrawOpAtlases it might ever require.
> >
> > Change-Id: Ie9b64b13e261b01ee14be09fbf7e17841b7781dc
> > Reviewed-on: https://skia-review.googlesource.com/109749
> > Reviewed-by: Jim Van Verth <jvanverth@google.com>
> > Commit-Queue: Robert Phillips <robertphillips@google.com>
>
> TBR=jvanverth@google.com,robertphillips@google.com
>
> Change-Id: I62efc61c8394477e54d6e79fa2f65180c91a4515
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Reviewed-on: https://skia-review.googlesource.com/110220
> Reviewed-by: Robert Phillips <robertphillips@google.com>
> Commit-Queue: Robert Phillips <robertphillips@google.com>
TBR=jvanverth@google.com,robertphillips@google.com
Change-Id: I7c87b4523f9b53285f0de5c2d741a25893522d9a
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/110221
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
Diffstat (limited to 'include/private')
-rw-r--r-- | include/private/GrSurfaceProxy.h | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/include/private/GrSurfaceProxy.h b/include/private/GrSurfaceProxy.h index cb8c46e78f..6beb11e46f 100644 --- a/include/private/GrSurfaceProxy.h +++ b/include/private/GrSurfaceProxy.h @@ -57,6 +57,17 @@ public: } #endif + void release() { + SkASSERT(1 == fRefCnt); + SkASSERT(0 == fPendingReads); + SkASSERT(0 == fPendingWrites); + + SkASSERT(fTarget->internalHasUniqueRef()); + SkASSERT(!fTarget->internalHasPendingIO()); + fTarget->unref(); + fTarget = nullptr; + } + void validate() const { #ifdef SK_DEBUG SkASSERT(fRefCnt >= 0); @@ -129,7 +140,7 @@ protected: } virtual ~GrIORefProxy() { // We don't unref 'fTarget' here since the 'unref' method will already - // have forwarded on the unref call that got use here. + // have forwarded on the unref call that got us here. } // This GrIORefProxy was deferred before but has just been instantiated. To @@ -279,6 +290,8 @@ public: virtual bool instantiate(GrResourceProvider* resourceProvider) = 0; + void deInstantiate(); + /** * Helper that gets the width and height of the surface as a bounding rectangle. */ |