diff options
author | Brian Salomon <bsalomon@google.com> | 2017-10-31 14:45:03 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-10-31 20:07:04 +0000 |
commit | 43fd6d848583b554316c84956df0d5908402981c (patch) | |
tree | e5cccc4f9b408ab6147b84d5143cc3b119e43695 /src/gpu/GrDeferredUpload.h | |
parent | dc77687d6aeee18a86b0bed44e006f74ab7765a8 (diff) |
Devirtualized token management in GrDeferredUploadTarget.
Change-Id: I7bef9d532f19056b5581e24e95949d1d32e8dd95
Reviewed-on: https://skia-review.googlesource.com/65505
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
Diffstat (limited to 'src/gpu/GrDeferredUpload.h')
-rw-r--r-- | src/gpu/GrDeferredUpload.h | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/src/gpu/GrDeferredUpload.h b/src/gpu/GrDeferredUpload.h index 821e523627..54f56b7139 100644 --- a/src/gpu/GrDeferredUpload.h +++ b/src/gpu/GrDeferredUpload.h @@ -113,12 +113,26 @@ public: virtual GrDeferredUploadToken addASAPUpload(GrDeferredTextureUploadFn&& upload) = 0; /** Gets the token one beyond the last token that has been flushed. */ - virtual GrDeferredUploadToken nextTokenToFlush() const = 0; + GrDeferredUploadToken nextTokenToFlush() const { return fLastFlushedToken.next(); } /** Gets the next draw token that will be issued by this target. This can be used by an op to record that the next draw it issues will use a resource (e.g. texture) while preparing that draw. */ - virtual GrDeferredUploadToken nextDrawToken() const = 0; + GrDeferredUploadToken nextDrawToken() const { return fLastIssuedToken.next(); } + +protected: + // Methods that advance the internal tokens are protected so that the subclass can determine + // access. + + /** Issues the next token for a draw. */ + GrDeferredUploadToken issueDrawToken() { return ++fLastIssuedToken; } + + /** Advances the last flushed token by one. */ + GrDeferredUploadToken flushToken() { return ++fLastFlushedToken; } + +private: + GrDeferredUploadToken fLastIssuedToken = GrDeferredUploadToken::AlreadyFlushedToken(); + GrDeferredUploadToken fLastFlushedToken = GrDeferredUploadToken::AlreadyFlushedToken(); }; #endif |