aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/GrDeferredUpload.h
diff options
context:
space:
mode:
authorGravatar Brian Salomon <bsalomon@google.com>2017-10-31 14:45:03 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-10-31 20:07:04 +0000
commit43fd6d848583b554316c84956df0d5908402981c (patch)
treee5cccc4f9b408ab6147b84d5143cc3b119e43695 /src/gpu/GrDeferredUpload.h
parentdc77687d6aeee18a86b0bed44e006f74ab7765a8 (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.h18
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