aboutsummaryrefslogtreecommitdiffhomepage
path: root/include/core
diff options
context:
space:
mode:
authorGravatar Greg Daniel <egdaniel@google.com>2017-06-16 09:45:32 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-06-16 14:22:34 +0000
commita5cb781c17c09e01655defd0a84b431996b6a015 (patch)
treed80676c7c69155d0d3eb3cc6e128296b83f8688b /include/core
parent610842af9eec6b49258311b96485447476305faa (diff)
Revert "Revert "Add API for flushing surfaces with gpu semaphores""
This reverts commit 7292231905c34ed290ba479338f26b56ae2a7792. This change relands the original plus the follow on change: https://skia-review.googlesource.com/20059. Additionally it adds a blacklist for the mac intel bots which don't see to respect the added fences on the GPU. Original change's description: > Revert "Add API for flushing surfaces with gpu semaphores" > > This reverts commit 66366c697853e906d961ae691e2bc5209cdcfa62. > > Reason for revert: Failing test on mac bots > > Original change's description: > > Add API for flushing surfaces with gpu semaphores > > > > BUG=skia: > > > > Change-Id: Ia4bfef784cd5f2516ceccafce958be18a86f91d1 > > Reviewed-on: https://skia-review.googlesource.com/11488 > > Commit-Queue: Greg Daniel <egdaniel@google.com> > > Reviewed-by: Brian Salomon <bsalomon@google.com> > > Reviewed-by: Forrest Reiling <freiling@google.com> > > TBR=egdaniel@google.com,jvanverth@google.com,bsalomon@google.com,brianosman@google.com,freiling@google.com > > Change-Id: I75633a2732d2d48b1926f9ad818a9f1a9196d211 > No-Presubmit: true > No-Tree-Checks: true > No-Try: true > Bug: skia: > Reviewed-on: https://skia-review.googlesource.com/20063 > Commit-Queue: Greg Daniel <egdaniel@google.com> > Reviewed-by: Greg Daniel <egdaniel@google.com> TBR=egdaniel@google.com,jvanverth@google.com,bsalomon@google.com,brianosman@google.com,freiling@google.com Change-Id: I4dc6c0e1deb0398eeb165a34f0a26af7a58259f1 Reviewed-on: https://skia-review.googlesource.com/20141 Commit-Queue: Greg Daniel <egdaniel@google.com> Reviewed-by: Greg Daniel <egdaniel@google.com>
Diffstat (limited to 'include/core')
-rw-r--r--include/core/SkSurface.h25
1 files changed, 25 insertions, 0 deletions
diff --git a/include/core/SkSurface.h b/include/core/SkSurface.h
index efa2428ccb..6fad21721e 100644
--- a/include/core/SkSurface.h
+++ b/include/core/SkSurface.h
@@ -15,6 +15,7 @@
class SkCanvas;
class SkPaint;
class GrBackendRenderTarget;
+class GrBackendSemaphore;
class GrContext;
class GrRenderTarget;
@@ -323,9 +324,33 @@ public:
/**
* Issue any pending surface IO to the current backend 3D API and resolve any surface MSAA.
+ *
+ * The flush calls below are the new preferred way to flush calls to a surface, and this call
+ * will eventually be removed.
*/
void prepareForExternalIO();
+ /**
+ * Issue any pending surface IO to the current backend 3D API
+ */
+ void flush();
+
+ /**
+ * Issue any pending surface IO to the current backend 3D API. After issuing all commands, we
+ * will issue numSemaphore semaphores for the gpu to signal. We will then fill in the array
+ * signalSemaphores with the info on the semaphores we submitted. The client is reposonsible for
+ * allocating enough space in signalSemaphores to handle numSemaphores of GrBackendSemaphores.
+ * The client will also take ownership of the returned underlying backend semaphores.
+ */
+ void flushAndSignalSemaphores(int numSemaphores, GrBackendSemaphore* signalSemaphores);
+
+ /**
+ * Inserts a list of GPU semaphores that the current backend 3D API must wait on before
+ * executing any more commands on the GPU for this surface. Skia will take ownership of the
+ * underlying semaphores and delete them once they have been signaled and waited on.
+ */
+ void wait(int numSemaphores, const GrBackendSemaphore* waitSemaphores);
+
protected:
SkSurface(int width, int height, const SkSurfaceProps*);
SkSurface(const SkImageInfo&, const SkSurfaceProps*);