Add option to force GLSL string caching rather than program binaries.
Bug: chromium:924572
Change-Id: I055a6946528c75fa986c86fa562a2608b8958611
Reviewed-on: https://skia-review.googlesource.com/c/192827
Commit-Queue: Brian Salomon <bsalomon@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Auto-Submit: Brian Salomon <bsalomon@google.com>
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
diff --git a/include/gpu/GrContextOptions.h b/include/gpu/GrContextOptions.h
index e063837..e12fd13 100644
--- a/include/gpu/GrContextOptions.h
+++ b/include/gpu/GrContextOptions.h
@@ -183,6 +183,14 @@
*/
PersistentCache* fPersistentCache = nullptr;
+ /**
+ * This affects the usage of the PersistentCache. If this is set to true GLSL shader strings
+ * rather than GL program binaries will be cached. It is intended to be used when the driver's
+ * binary loading/storing is believed to have bugs. Caching GLSL strings still saves a
+ * significant amount of CPU work when a GL program is created.
+ */
+ bool fDisallowGLSLBinaryCaching = false;
+
#if GR_TEST_UTILS
/**
* Private options that are only meant for testing within Skia's tools.
diff --git a/src/gpu/gl/GrGLCaps.cpp b/src/gpu/gl/GrGLCaps.cpp
index 31a05d1..df2d1a1 100644
--- a/src/gpu/gl/GrGLCaps.cpp
+++ b/src/gpu/gl/GrGLCaps.cpp
@@ -2818,6 +2818,9 @@
if (options.fDoManualMipmapping) {
fDoManualMipmapping = true;
}
+ if (options.fDisallowGLSLBinaryCaching) {
+ fProgramBinarySupport = false;
+ }
}
bool GrGLCaps::onSurfaceSupportsWritePixels(const GrSurface* surface) const {