diff options
author | boliu <boliu@chromium.org> | 2015-02-04 15:41:28 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-02-04 23:42:47 +0000 |
commit | 0599e81b61d2ab266a68dcce9d2b3c27e275f879 (patch) | |
tree | 7172c45eb3cd392e7ec76aeb582bfc692afe483f /gpu | |
parent | e27b1ef23206ea3352b4623184b3533b2bac4dcb (diff) | |
download | chromium_src-0599e81b61d2ab266a68dcce9d2b3c27e275f879.zip chromium_src-0599e81b61d2ab266a68dcce9d2b3c27e275f879.tar.gz chromium_src-0599e81b61d2ab266a68dcce9d2b3c27e275f879.tar.bz2 |
Add workaround to ignore EGL sync errors on qc
On android versions before 5.0, EGL sync objects are
incorrectly destroyed when the associated EGL context is
destroyed. The EGL sync objects error handling is tight to
prevent driver regressions from known issues. This combined
with this triggers DCHECk failures and crashes.
So add another workaround to ignore errors from EGL sync
object calls.
BUG=453857
Review URL: https://codereview.chromium.org/892323002
Cr-Commit-Position: refs/heads/master@{#314678}
Diffstat (limited to 'gpu')
-rw-r--r-- | gpu/command_buffer/service/feature_info.cc | 10 | ||||
-rw-r--r-- | gpu/config/gpu_driver_bug_list_json.cc | 18 | ||||
-rw-r--r-- | gpu/config/gpu_driver_bug_workaround_type.h | 2 |
3 files changed, 29 insertions, 1 deletions
diff --git a/gpu/command_buffer/service/feature_info.cc b/gpu/command_buffer/service/feature_info.cc index 5706086..803b121 100644 --- a/gpu/command_buffer/service/feature_info.cc +++ b/gpu/command_buffer/service/feature_info.cc @@ -17,6 +17,10 @@ #include "ui/gl/gl_fence.h" #include "ui/gl/gl_implementation.h" +#if !defined(OS_MACOSX) +#include "ui/gl/gl_fence_egl.h" +#endif + namespace gpu { namespace gles2 { @@ -1020,6 +1024,12 @@ void FeatureInfo::InitializeFeatures() { texture_format_validators_[GL_RG_EXT].AddValue(GL_HALF_FLOAT_OES); } } + +#if !defined(OS_MACOSX) + if (workarounds_.ignore_egl_sync_failures) { + gfx::GLFenceEGL::SetIgnoreFailures(); + } +#endif } void FeatureInfo::AddExtensionString(const char* s) { diff --git a/gpu/config/gpu_driver_bug_list_json.cc b/gpu/config/gpu_driver_bug_list_json.cc index 26be952..382bcba 100644 --- a/gpu/config/gpu_driver_bug_list_json.cc +++ b/gpu/config/gpu_driver_bug_list_json.cc @@ -19,7 +19,7 @@ const char kGpuDriverBugListJson[] = LONG_STRING_CONST( { "name": "gpu driver bug list", // Please update the version number whenever you change this file. - "version": "7.14", + "version": "7.15", "entries": [ { "id": 1, @@ -1118,6 +1118,22 @@ LONG_STRING_CONST( "features": [ "use_non_zero_size_for_client_side_stream_buffers" ] + }, + { + "id": 99, + "description": "Qualcomm driver before Lollipop deletes egl sync objects after context destruction", + "cr_bugs": [453857], + "os": { + "type": "android", + "version": { + "op": "<", + "value": "5.0.0" + } + }, + "gl_vendor": "Qualcomm.*", + "features": [ + "ignore_egl_sync_failures" + ] } ] } diff --git a/gpu/config/gpu_driver_bug_workaround_type.h b/gpu/config/gpu_driver_bug_workaround_type.h index 77d721b..f03b7a2 100644 --- a/gpu/config/gpu_driver_bug_workaround_type.h +++ b/gpu/config/gpu_driver_bug_workaround_type.h @@ -58,6 +58,8 @@ gl_begin_gl_end_on_fbo_change_to_backbuffer) \ GPU_OP(GL_CLEAR_BROKEN, \ gl_clear_broken) \ + GPU_OP(IGNORE_EGL_SYNC_FAILURES, \ + ignore_egl_sync_failures) \ GPU_OP(INIT_GL_POSITION_IN_VERTEX_SHADER, \ init_gl_position_in_vertex_shader) \ GPU_OP(INIT_TEXTURE_MAX_ANISOTROPY, \ |