Commit 30bcb92e authored by ericrk's avatar ericrk Committed by Commit bot

Re-enable program memory cache for Adreno 4/5xx

The program cache was disabled on Adreno 4/5xx due to crashes.

I'm hoping that this issue was caused by invalidations/issues with the
on-disk program cache, possibly with driver updates or other issues.

To test this, I'm re-enabling the in-memory portion of the cache
only. The cached objects will not outlive the GPU process.

I've also confirmed that the related Adreno 3xx bug, crbug.com/510673,
does not impact the Adreno 400 (and I'm guessing 500, but will track
down a device to double check).

We should watch crash rates for gfx::GLApiBase::glProgramBinaryFn to
make sure this change doesn't re-introduce these crashes.

BUG=598060, 486117
CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_precise_blink_rel

Review-Url: https://codereview.chromium.org/2267163003
Cr-Commit-Position: refs/heads/master@{#414490}
parent db5e0d58
...@@ -184,9 +184,11 @@ gpu::gles2::ProgramCache* InProcessCommandBuffer::Service::program_cache() { ...@@ -184,9 +184,11 @@ gpu::gles2::ProgramCache* InProcessCommandBuffer::Service::program_cache() {
(gl::g_driver_gl.ext.b_GL_ARB_get_program_binary || (gl::g_driver_gl.ext.b_GL_ARB_get_program_binary ||
gl::g_driver_gl.ext.b_GL_OES_get_program_binary) && gl::g_driver_gl.ext.b_GL_OES_get_program_binary) &&
!gpu_preferences().disable_gpu_program_cache) { !gpu_preferences().disable_gpu_program_cache) {
program_cache_.reset(new gpu::gles2::MemoryProgramCache( bool disable_disk_cache =
gpu_preferences().gpu_program_cache_size, gpu_preferences_.disable_gpu_shader_disk_cache ||
gpu_preferences().disable_gpu_shader_disk_cache)); gpu_driver_bug_workarounds_.disable_program_disk_cache;
program_cache_.reset(new gles2::MemoryProgramCache(
gpu_preferences_.gpu_program_cache_size, disable_disk_cache));
} }
return program_cache_.get(); return program_cache_.get();
} }
......
...@@ -19,7 +19,7 @@ const char kGpuDriverBugListJson[] = LONG_STRING_CONST( ...@@ -19,7 +19,7 @@ const char kGpuDriverBugListJson[] = LONG_STRING_CONST(
{ {
"name": "gpu driver bug list", "name": "gpu driver bug list",
// Please update the version number whenever you change this file. // Please update the version number whenever you change this file.
"version": "8.86", "version": "8.87",
"entries": [ "entries": [
{ {
"id": 1, "id": 1,
...@@ -1215,7 +1215,7 @@ LONG_STRING_CONST( ...@@ -1215,7 +1215,7 @@ LONG_STRING_CONST(
}, },
"gl_renderer": "Adreno \\(TM\\) [45].*", "gl_renderer": "Adreno \\(TM\\) [45].*",
"features": [ "features": [
"disable_program_cache" "disable_program_disk_cache"
] ]
}, },
{ {
......
...@@ -57,6 +57,8 @@ ...@@ -57,6 +57,8 @@
disable_post_sub_buffers_for_onscreen_surfaces) \ disable_post_sub_buffers_for_onscreen_surfaces) \
GPU_OP(DISABLE_PROGRAM_CACHE, \ GPU_OP(DISABLE_PROGRAM_CACHE, \
disable_program_cache) \ disable_program_cache) \
GPU_OP(DISABLE_PROGRAM_DISK_CACHE, \
disable_program_disk_cache) \
GPU_OP(DISABLE_TEXTURE_CUBE_MAP_SEAMLESS, \ GPU_OP(DISABLE_TEXTURE_CUBE_MAP_SEAMLESS, \
disable_texture_cube_map_seamless) \ disable_texture_cube_map_seamless) \
GPU_OP(DISABLE_TEXTURE_STORAGE, \ GPU_OP(DISABLE_TEXTURE_STORAGE, \
......
...@@ -87,9 +87,11 @@ gles2::ProgramCache* GpuChannelManager::program_cache() { ...@@ -87,9 +87,11 @@ gles2::ProgramCache* GpuChannelManager::program_cache() {
(gl::g_driver_gl.ext.b_GL_ARB_get_program_binary || (gl::g_driver_gl.ext.b_GL_ARB_get_program_binary ||
gl::g_driver_gl.ext.b_GL_OES_get_program_binary) && gl::g_driver_gl.ext.b_GL_OES_get_program_binary) &&
!gpu_preferences_.disable_gpu_program_cache) { !gpu_preferences_.disable_gpu_program_cache) {
bool disable_disk_cache =
gpu_preferences_.disable_gpu_shader_disk_cache ||
gpu_driver_bug_workarounds_.disable_program_disk_cache;
program_cache_.reset(new gles2::MemoryProgramCache( program_cache_.reset(new gles2::MemoryProgramCache(
gpu_preferences_.gpu_program_cache_size, gpu_preferences_.gpu_program_cache_size, disable_disk_cache));
gpu_preferences_.disable_gpu_shader_disk_cache));
} }
return program_cache_.get(); return program_cache_.get();
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment