Index: gpu/command_buffer/service/query_manager.cc |
diff --git a/gpu/command_buffer/service/query_manager.cc b/gpu/command_buffer/service/query_manager.cc |
index a5071e335d7ad1cb9088f785168894d98293e995..f353eae6c9f9248d3c812161aedd8dd6600461b5 100644 |
--- a/gpu/command_buffer/service/query_manager.cc |
+++ b/gpu/command_buffer/service/query_manager.cc |
@@ -714,6 +714,12 @@ QueryManager::QueryManager( |
use_arb_occlusion_query_for_occlusion_query_boolean_( |
feature_info->feature_flags( |
).use_arb_occlusion_query_for_occlusion_query_boolean), |
+ no_covert_any_samples_passed_conservative_target_for_es3_( |
+ feature_info->feature_flags( |
+ ).no_covert_any_samples_passed_conservative_target_for_es3), |
+ covert_any_samples_passed_conservative_target_for_low_gl_( |
+ feature_info->feature_flags( |
+ ).covert_any_samples_passed_conservative_target_for_low_gl), |
update_disjoints_continually_(false), |
disjoint_notify_shm_id_(-1), |
disjoint_notify_shm_offset_(0), |
@@ -876,16 +882,23 @@ GLenum QueryManager::AdjustTargetForEmulation(GLenum target) { |
switch (target) { |
case GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT: |
case GL_ANY_SAMPLES_PASSED_EXT: |
- if (use_arb_occlusion_query2_for_occlusion_query_boolean_) { |
- // ARB_occlusion_query2 does not have a |
- // GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT |
- // target. |
- target = GL_ANY_SAMPLES_PASSED_EXT; |
- } else if (use_arb_occlusion_query_for_occlusion_query_boolean_) { |
- // ARB_occlusion_query does not have a |
- // GL_ANY_SAMPLES_PASSED_EXT |
- // target. |
- target = GL_SAMPLES_PASSED_ARB; |
+ if (!no_covert_any_samples_passed_conservative_target_for_es3_) { |
+ if (use_arb_occlusion_query2_for_occlusion_query_boolean_) { |
+ // ARB_occlusion_query2 does not have a |
+ // GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT |
+ // target. |
+ target = GL_ANY_SAMPLES_PASSED_EXT; |
+ } else if (use_arb_occlusion_query_for_occlusion_query_boolean_) { |
+ // ARB_occlusion_query does not have a |
+ // GL_ANY_SAMPLES_PASSED_EXT |
+ // target. |
+ target = GL_SAMPLES_PASSED_ARB; |
+ } else if (covert_any_samples_passed_conservative_target_for_low_gl_) { |
+ // When underlying driver is lower than OpenGL4.3, it does not have a |
+ // GL_ANY_SAMPLES_PASSED_CONSERVATIVE |
+ // target. |
+ target = GL_ANY_SAMPLES_PASSED_EXT; |
+ } |
} |
break; |
default: |