Chromium Code Reviews| 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 410914db2b0d1941ee209ce27d7b5d721077aadc..b24cbd7e42f74149e8d804f9ad973b165c91a95b 100644 |
| --- a/gpu/command_buffer/service/memory_program_cache.cc |
| +++ b/gpu/command_buffer/service/memory_program_cache.cc |
| @@ -200,6 +200,12 @@ void RunShaderCallback(const ShaderCacheCallback& callback, |
| callback.Run(key, shader); |
| } |
| +bool ProgramBinaryExtensionsAvailable() { |
| + return gl::g_current_gl_driver && |
| + (gl::g_current_gl_driver->ext.b_GL_ARB_get_program_binary || |
| + gl::g_current_gl_driver->ext.b_GL_OES_get_program_binary); |
| +} |
| + |
| } // namespace |
| MemoryProgramCache::MemoryProgramCache( |
| @@ -229,6 +235,11 @@ ProgramCache::ProgramLoadResult MemoryProgramCache::LoadLinkedProgram( |
| const std::vector<std::string>& transform_feedback_varyings, |
| GLenum transform_feedback_buffer_mode, |
| const ShaderCacheCallback& shader_callback) { |
| + if (!ProgramBinaryExtensionsAvailable()) { |
|
jbauman
2017/01/18 21:32:09
Why is this in this patch?
Geoff Lang
2017/01/19 15:40:06
I found that the order of operations for the progr
|
| + // Early exit if this context can't support program binaries |
| + return PROGRAM_LOAD_FAILURE; |
| + } |
| + |
| char a_sha[kHashLength]; |
| char b_sha[kHashLength]; |
| DCHECK(shader_a && !shader_a->last_compiled_source().empty() && |
| @@ -295,6 +306,10 @@ void MemoryProgramCache::SaveLinkedProgram( |
| const std::vector<std::string>& transform_feedback_varyings, |
| GLenum transform_feedback_buffer_mode, |
| const ShaderCacheCallback& shader_callback) { |
| + if (!ProgramBinaryExtensionsAvailable()) { |
| + // Early exit if this context can't support program binaries |
| + return; |
| + } |
| if (disable_program_caching_for_transform_feedback_ && |
| !transform_feedback_varyings.empty()) { |
| return; |