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

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

Issue 16831004: Perform glReadPixels with PBOs in the gpu, if PBOs are available. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: use webglid where approperiate Created 7 years, 6 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 | Annotate | Revision Log
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/feature_info.h" 5 #include "gpu/command_buffer/service/feature_info.h"
6 6
7 #include <set> 7 #include <set>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/strings/string_number_conversions.h" 10 #include "base/strings/string_number_conversions.h"
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
109 angle_pack_reverse_row_order(false), 109 angle_pack_reverse_row_order(false),
110 arb_texture_rectangle(false), 110 arb_texture_rectangle(false),
111 angle_instanced_arrays(false), 111 angle_instanced_arrays(false),
112 occlusion_query_boolean(false), 112 occlusion_query_boolean(false),
113 use_arb_occlusion_query2_for_occlusion_query_boolean(false), 113 use_arb_occlusion_query2_for_occlusion_query_boolean(false),
114 use_arb_occlusion_query_for_occlusion_query_boolean(false), 114 use_arb_occlusion_query_for_occlusion_query_boolean(false),
115 native_vertex_array_object(false), 115 native_vertex_array_object(false),
116 enable_shader_name_hashing(false), 116 enable_shader_name_hashing(false),
117 enable_samplers(false), 117 enable_samplers(false),
118 ext_draw_buffers(false), 118 ext_draw_buffers(false),
119 ext_frag_depth(false) { 119 ext_frag_depth(false),
120 use_async_readpixels(false) {
120 } 121 }
121 122
122 FeatureInfo::Workarounds::Workarounds() : 123 FeatureInfo::Workarounds::Workarounds() :
123 #define GPU_OP(type, name) name(false), 124 #define GPU_OP(type, name) name(false),
124 GPU_DRIVER_BUG_WORKAROUNDS(GPU_OP) 125 GPU_DRIVER_BUG_WORKAROUNDS(GPU_OP)
125 #undef GPU_OP 126 #undef GPU_OP
126 max_texture_size(0), 127 max_texture_size(0),
127 max_cube_map_texture_size(0) { 128 max_cube_map_texture_size(0) {
128 } 129 }
129 130
(...skipping 485 matching lines...) Expand 10 before | Expand all | Expand 10 after
615 ++i) { 616 ++i) {
616 validators_.g_l_state.AddValue(i); 617 validators_.g_l_state.AddValue(i);
617 } 618 }
618 } 619 }
619 620
620 if (extensions.Contains("GL_EXT_frag_depth") || gfx::HasDesktopGLFeatures()) { 621 if (extensions.Contains("GL_EXT_frag_depth") || gfx::HasDesktopGLFeatures()) {
621 AddExtensionString("GL_EXT_frag_depth"); 622 AddExtensionString("GL_EXT_frag_depth");
622 feature_flags_.ext_frag_depth = true; 623 feature_flags_.ext_frag_depth = true;
623 } 624 }
624 625
626 bool ui_gl_fence_works =
627 extensions.Contains("GL_NV_fence") ||
628 extensions.Contains("GL_ARB_sync");
629
630 if (ui_gl_fence_works &&
631 extensions.Contains("GL_ARB_pixel_buffer_object") &&
632 !command_line.HasSwitch(switches::kForceSynchronousGLReadPixels)) {
piman 2013/06/17 19:55:06 nit: fold the command line option into the kGpuDri
hubbe 2013/06/25 20:02:51 Entry added, not sure exactly how it's supposed to
633 feature_flags_.use_async_readpixels = true;
634 }
635
625 if (!disallowed_features_.swap_buffer_complete_callback) 636 if (!disallowed_features_.swap_buffer_complete_callback)
626 AddExtensionString("GL_CHROMIUM_swapbuffers_complete_callback"); 637 AddExtensionString("GL_CHROMIUM_swapbuffers_complete_callback");
627 638
628 bool is_es3 = false; 639 bool is_es3 = false;
629 const char* str = reinterpret_cast<const char*>(glGetString(GL_VERSION)); 640 const char* str = reinterpret_cast<const char*>(glGetString(GL_VERSION));
630 if (str) { 641 if (str) {
631 std::string lstr(StringToLowerASCII(std::string(str))); 642 std::string lstr(StringToLowerASCII(std::string(str)));
632 is_es3 = (lstr.substr(0, 12) == "opengl es 3."); 643 is_es3 = (lstr.substr(0, 12) == "opengl es 3.");
633 } 644 }
634 645
635 if (is_es3 || extensions.Contains("GL_ARB_sampler_objects")) { 646 if (is_es3 || extensions.Contains("GL_ARB_sampler_objects")) {
636 feature_flags_.enable_samplers = true; 647 feature_flags_.enable_samplers = true;
637 // TODO(dsinclair): Add AddExtensionString("GL_CHROMIUM_sampler_objects") 648 // TODO(dsinclair): Add AddExtensionString("GL_CHROMIUM_sampler_objects")
638 // when available. 649 // when available.
639 } 650 }
640 } 651 }
641 652
642 void FeatureInfo::AddExtensionString(const std::string& str) { 653 void FeatureInfo::AddExtensionString(const std::string& str) {
643 if (extensions_.find(str) == std::string::npos) { 654 if (extensions_.find(str) == std::string::npos) {
644 extensions_ += (extensions_.empty() ? "" : " ") + str; 655 extensions_ += (extensions_.empty() ? "" : " ") + str;
645 } 656 }
646 } 657 }
647 658
648 FeatureInfo::~FeatureInfo() { 659 FeatureInfo::~FeatureInfo() {
649 } 660 }
650 661
651 } // namespace gles2 662 } // namespace gles2
652 } // namespace gpu 663 } // namespace gpu
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698