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 5d9584827d4fe4d36f1259d9877707d6c7f99fed..396311cffb1b6690d7c84ff0a2052ebc885206e1 100644 |
--- a/gpu/command_buffer/service/feature_info.cc |
+++ b/gpu/command_buffer/service/feature_info.cc |
@@ -117,7 +117,8 @@ FeatureInfo::FeatureFlags::FeatureFlags() |
enable_shader_name_hashing(false), |
enable_samplers(false), |
ext_draw_buffers(false), |
- ext_frag_depth(false) { |
+ ext_frag_depth(false), |
+ use_async_readpixels(false) { |
} |
FeatureInfo::Workarounds::Workarounds() : |
@@ -623,6 +624,16 @@ void FeatureInfo::AddFeatures(const CommandLine& command_line) { |
feature_flags_.ext_frag_depth = true; |
} |
+ bool ui_gl_fence_works = |
+ extensions.Contains("GL_NV_fence") || |
+ extensions.Contains("GL_ARB_sync"); |
+ |
+ if (ui_gl_fence_works && |
+ extensions.Contains("GL_ARB_pixel_buffer_object") && |
+ !workarounds_.disable_async_readpixels) { |
+ feature_flags_.use_async_readpixels = true; |
+ } |
+ |
if (!disallowed_features_.swap_buffer_complete_callback) |
AddExtensionString("GL_CHROMIUM_swapbuffers_complete_callback"); |