Index: gpu/command_buffer/service/feature_info.cc |
diff --git a/gpu/command_buffer/service/feature_info.cc b/gpu/command_buffer/service/feature_info.cc |
index d9df6f6345a149592bc90ba19ddfddb5fe398147..aad133eb87d88c1137570a62eec486de40c9540d 100644 |
--- a/gpu/command_buffer/service/feature_info.cc |
+++ b/gpu/command_buffer/service/feature_info.cc |
@@ -191,6 +191,7 @@ void FeatureInfo::AddFeatures(const CommandLine& command_line) { |
bool is_qualcomm = false; |
bool is_imagination = false; |
bool is_arm = false; |
+ bool is_hisilicon = false; |
const char* gl_strings[2]; |
gl_strings[0] = reinterpret_cast<const char*>(glGetString(GL_VENDOR)); |
gl_strings[1] = reinterpret_cast<const char*>(glGetString(GL_RENDERER)); |
@@ -208,6 +209,7 @@ void FeatureInfo::AddFeatures(const CommandLine& command_line) { |
is_qualcomm |= string_set.Contains("qualcomm"); |
is_imagination |= string_set.Contains("imagination"); |
is_arm |= string_set.Contains("arm"); |
+ is_hisilicon |= string_set.Contains("hisilicon"); |
} |
} |
@@ -221,6 +223,9 @@ void FeatureInfo::AddFeatures(const CommandLine& command_line) { |
workarounds_.flush_on_context_switch = true; |
workarounds_.delete_instead_of_resize_fbo = true; |
} |
+ if (is_hisilicon) { |
+ workarounds_.makecurrent_recreates_surfaces = true; |
+ } |
#if defined(OS_MACOSX) |
workarounds_.needs_offscreen_buffer_workaround = is_nvidia; |
workarounds_.needs_glsl_built_in_function_emulation = is_amd; |