Implement ANGLE_program_cache_control extensions.
This will give the browsers the ability to control the cache size,
query and populate the contents, and trim cache contents on memory
pressure.
BUG=angleproject:1897
Change-Id: I6edaa7d307b890223db98792d5b074e4a7fdfaa4
Reviewed-on: https://chromium-review.googlesource.com/563606
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
diff --git a/src/libANGLE/Context.cpp b/src/libANGLE/Context.cpp
index bd9508a..78f5d84 100644
--- a/src/libANGLE/Context.cpp
+++ b/src/libANGLE/Context.cpp
@@ -283,7 +283,8 @@
initWorkarounds();
mGLState.initialize(this, GetDebug(attribs), GetBindGeneratesResource(attribs),
- GetClientArraysEnabled(attribs), robustResourceInit);
+ GetClientArraysEnabled(attribs), robustResourceInit,
+ mMemoryProgramCache != nullptr);
mFenceNVHandleAllocator.setBaseHandle(0);
@@ -2673,6 +2674,9 @@
mExtensions.robustResourceInitialization =
egl::Display::GetClientExtensions().displayRobustResourceInitialization;
+ // Enable the cache control query unconditionally.
+ mExtensions.programCacheControl = true;
+
// Apply implementation limits
mCaps.maxVertexAttributes = std::min<GLuint>(mCaps.maxVertexAttributes, MAX_VERTEX_ATTRIBS);
mCaps.maxVertexAttribBindings =