Index: gpu/command_buffer/service/memory_program_cache.cc |
diff --git a/gpu/command_buffer/service/memory_program_cache.cc b/gpu/command_buffer/service/memory_program_cache.cc |
index c38fd78edb057547680a0d123e4ff9e3a6afbd81..410914db2b0d1941ee209ce27d7b5d721077aadc 100644 |
--- a/gpu/command_buffer/service/memory_program_cache.cc |
+++ b/gpu/command_buffer/service/memory_program_cache.cc |
@@ -202,10 +202,14 @@ void RunShaderCallback(const ShaderCacheCallback& callback, |
} // namespace |
-MemoryProgramCache::MemoryProgramCache(size_t max_cache_size_bytes, |
- bool disable_gpu_shader_disk_cache) |
+MemoryProgramCache::MemoryProgramCache( |
+ size_t max_cache_size_bytes, |
+ bool disable_gpu_shader_disk_cache, |
+ bool disable_program_caching_for_transform_feedback) |
: max_size_bytes_(max_cache_size_bytes), |
disable_gpu_shader_disk_cache_(disable_gpu_shader_disk_cache), |
+ disable_program_caching_for_transform_feedback_( |
+ disable_program_caching_for_transform_feedback), |
curr_size_bytes_(0), |
store_(ProgramMRUCache::NO_AUTO_EVICT) { |
} |
@@ -291,6 +295,10 @@ void MemoryProgramCache::SaveLinkedProgram( |
const std::vector<std::string>& transform_feedback_varyings, |
GLenum transform_feedback_buffer_mode, |
const ShaderCacheCallback& shader_callback) { |
+ if (disable_program_caching_for_transform_feedback_ && |
+ !transform_feedback_varyings.empty()) { |
+ return; |
+ } |
GLenum format; |
GLsizei length = 0; |
glGetProgramiv(program, GL_PROGRAM_BINARY_LENGTH_OES, &length); |