aboutsummaryrefslogtreecommitdiffhomepage
path: root/include/gpu/GrContextOptions.h
diff options
context:
space:
mode:
authorGravatar Ethan Nicholas <ethannicholas@google.com>2017-11-01 15:45:43 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-11-02 13:07:41 +0000
commitd1b2eec0d0f95977b52669025cb25038618c0335 (patch)
tree6e3bae30a741d09fd1cddb6448276f98b5adadf1 /include/gpu/GrContextOptions.h
parentb693fbf0fac5978650b2677cae7647128ddb52ab (diff)
API to cache shader binaries between runs of Skia.
This CL does not include an actual implementation of said cache. Stan is working on the cache implementation on the Android side of things. Bug: skia: Change-Id: Iabe4f19b2dbacaaa1ead8bb3fa68d88c687b9a84 Reviewed-on: https://skia-review.googlesource.com/54780 Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Diffstat (limited to 'include/gpu/GrContextOptions.h')
-rw-r--r--include/gpu/GrContextOptions.h25
1 files changed, 25 insertions, 0 deletions
diff --git a/include/gpu/GrContextOptions.h b/include/gpu/GrContextOptions.h
index 894813b5cc..7aa85e0ed3 100644
--- a/include/gpu/GrContextOptions.h
+++ b/include/gpu/GrContextOptions.h
@@ -8,10 +8,13 @@
#ifndef GrContextOptions_DEFINED
#define GrContextOptions_DEFINED
+#include "SkData.h"
#include "SkTypes.h"
#include "GrTypes.h"
#include "../private/GrTypesPriv.h"
+#include <vector>
+
class SkExecutor;
struct GrContextOptions {
@@ -26,6 +29,23 @@ struct GrContextOptions {
kDefault
};
+ /**
+ * Abstract class which stores Skia data in a cache that persists between sessions. Currently,
+ * Skia stores compiled shader binaries (only when glProgramBinary / glGetProgramBinary are
+ * supported) when provided a persistent cache, but this may extend to other data in the future.
+ */
+ class PersistentCache {
+ public:
+ virtual ~PersistentCache() {}
+
+ /**
+ * Returns the data for the key if it exists in the cache, otherwise returns null.
+ */
+ virtual sk_sp<SkData> load(const SkData& key) = 0;
+
+ virtual void store(const SkData& key, const SkData& data) = 0;
+ };
+
GrContextOptions() {}
// Suppress prints for the GrContext.
@@ -105,6 +125,11 @@ struct GrContextOptions {
*/
Enable fUseDrawInsteadOfGLClear = Enable::kDefault;
+ /**
+ * Cache in which to store compiled shader binaries between runs.
+ */
+ PersistentCache* fPersistentCache = nullptr;
+
#if GR_TEST_UTILS
/**
* Private options that are only meant for testing within Skia's tools.