Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(29)

Side by Side Diff: gpu/command_buffer/service/query_manager.cc

Issue 2145363002: Enable occlusion query feature on OpenGL3.3 and later (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Resolve related unittest errors Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "gpu/command_buffer/service/query_manager.h" 5 #include "gpu/command_buffer/service/query_manager.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include "base/atomicops.h" 10 #include "base/atomicops.h"
(...skipping 696 matching lines...) Expand 10 before | Expand all | Expand 10 after
707 QueryManager::QueryManager( 707 QueryManager::QueryManager(
708 GLES2Decoder* decoder, 708 GLES2Decoder* decoder,
709 FeatureInfo* feature_info) 709 FeatureInfo* feature_info)
710 : decoder_(decoder), 710 : decoder_(decoder),
711 use_arb_occlusion_query2_for_occlusion_query_boolean_( 711 use_arb_occlusion_query2_for_occlusion_query_boolean_(
712 feature_info->feature_flags( 712 feature_info->feature_flags(
713 ).use_arb_occlusion_query2_for_occlusion_query_boolean), 713 ).use_arb_occlusion_query2_for_occlusion_query_boolean),
714 use_arb_occlusion_query_for_occlusion_query_boolean_( 714 use_arb_occlusion_query_for_occlusion_query_boolean_(
715 feature_info->feature_flags( 715 feature_info->feature_flags(
716 ).use_arb_occlusion_query_for_occlusion_query_boolean), 716 ).use_arb_occlusion_query_for_occlusion_query_boolean),
717 no_covert_any_samples_passed_conservative_target_for_es3_(
718 feature_info->feature_flags(
719 ).no_covert_any_samples_passed_conservative_target_for_es3),
720 covert_any_samples_passed_conservative_target_for_low_gl_(
721 feature_info->feature_flags(
722 ).covert_any_samples_passed_conservative_target_for_low_gl),
717 update_disjoints_continually_(false), 723 update_disjoints_continually_(false),
718 disjoint_notify_shm_id_(-1), 724 disjoint_notify_shm_id_(-1),
719 disjoint_notify_shm_offset_(0), 725 disjoint_notify_shm_offset_(0),
720 disjoints_notified_(0), 726 disjoints_notified_(0),
721 query_count_(0) { 727 query_count_(0) {
722 DCHECK(!(use_arb_occlusion_query_for_occlusion_query_boolean_ && 728 DCHECK(!(use_arb_occlusion_query_for_occlusion_query_boolean_ &&
723 use_arb_occlusion_query2_for_occlusion_query_boolean_)); 729 use_arb_occlusion_query2_for_occlusion_query_boolean_));
724 DCHECK(decoder); 730 DCHECK(decoder);
725 gl::GLContext* context = decoder_->GetGLContext(); 731 gl::GLContext* context = decoder_->GetGLContext();
726 if (context) { 732 if (context) {
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
869 } 875 }
870 876
871 void QueryManager::StopTracking(QueryManager::Query* /* query */) { 877 void QueryManager::StopTracking(QueryManager::Query* /* query */) {
872 --query_count_; 878 --query_count_;
873 } 879 }
874 880
875 GLenum QueryManager::AdjustTargetForEmulation(GLenum target) { 881 GLenum QueryManager::AdjustTargetForEmulation(GLenum target) {
876 switch (target) { 882 switch (target) {
877 case GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT: 883 case GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT:
878 case GL_ANY_SAMPLES_PASSED_EXT: 884 case GL_ANY_SAMPLES_PASSED_EXT:
879 if (use_arb_occlusion_query2_for_occlusion_query_boolean_) { 885 if (!no_covert_any_samples_passed_conservative_target_for_es3_) {
880 // ARB_occlusion_query2 does not have a 886 if (use_arb_occlusion_query2_for_occlusion_query_boolean_) {
881 // GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT 887 // ARB_occlusion_query2 does not have a
882 // target. 888 // GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT
883 target = GL_ANY_SAMPLES_PASSED_EXT; 889 // target.
884 } else if (use_arb_occlusion_query_for_occlusion_query_boolean_) { 890 target = GL_ANY_SAMPLES_PASSED_EXT;
885 // ARB_occlusion_query does not have a 891 } else if (use_arb_occlusion_query_for_occlusion_query_boolean_) {
886 // GL_ANY_SAMPLES_PASSED_EXT 892 // ARB_occlusion_query does not have a
887 // target. 893 // GL_ANY_SAMPLES_PASSED_EXT
888 target = GL_SAMPLES_PASSED_ARB; 894 // target.
895 target = GL_SAMPLES_PASSED_ARB;
896 } else if (covert_any_samples_passed_conservative_target_for_low_gl_) {
897 // When underlying driver is lower than OpenGL4.3, it does not have a
898 // GL_ANY_SAMPLES_PASSED_CONSERVATIVE
899 // target.
900 target = GL_ANY_SAMPLES_PASSED_EXT;
901 }
889 } 902 }
890 break; 903 break;
891 default: 904 default:
892 break; 905 break;
893 } 906 }
894 return target; 907 return target;
895 } 908 }
896 909
897 void QueryManager::BeginQueryHelper(GLenum target, GLuint id) { 910 void QueryManager::BeginQueryHelper(GLenum target, GLuint id) {
898 target = AdjustTargetForEmulation(target); 911 target = AdjustTargetForEmulation(target);
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after
1132 for (std::pair<const GLenum, scoped_refptr<Query> >& it : active_queries_) { 1145 for (std::pair<const GLenum, scoped_refptr<Query> >& it : active_queries_) {
1133 if (it.second->IsPaused()) { 1146 if (it.second->IsPaused()) {
1134 it.second->Resume(); 1147 it.second->Resume();
1135 DCHECK(it.second->IsActive()); 1148 DCHECK(it.second->IsActive());
1136 } 1149 }
1137 } 1150 }
1138 } 1151 }
1139 1152
1140 } // namespace gles2 1153 } // namespace gles2
1141 } // namespace gpu 1154 } // namespace gpu
OLDNEW
« gpu/command_buffer/service/feature_info.cc ('K') | « gpu/command_buffer/service/query_manager.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698