OLD | NEW |
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/string_number_conversions.h" | 9 #include "base/string_number_conversions.h" |
10 #include "gpu/command_buffer/service/gl_utils.h" | 10 #include "gpu/command_buffer/service/gl_utils.h" |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
111 | 111 |
112 bool npot_ok = false; | 112 bool npot_ok = false; |
113 | 113 |
114 AddExtensionString("GL_CHROMIUM_resource_safe"); | 114 AddExtensionString("GL_CHROMIUM_resource_safe"); |
115 AddExtensionString("GL_CHROMIUM_resize"); | 115 AddExtensionString("GL_CHROMIUM_resize"); |
116 AddExtensionString("GL_CHROMIUM_strict_attribs"); | 116 AddExtensionString("GL_CHROMIUM_strict_attribs"); |
117 AddExtensionString("GL_CHROMIUM_swapbuffers_complete_callback"); | 117 AddExtensionString("GL_CHROMIUM_swapbuffers_complete_callback"); |
118 AddExtensionString("GL_CHROMIUM_rate_limit_offscreen_context"); | 118 AddExtensionString("GL_CHROMIUM_rate_limit_offscreen_context"); |
119 AddExtensionString("GL_CHROMIUM_set_visibility"); | 119 AddExtensionString("GL_CHROMIUM_set_visibility"); |
120 AddExtensionString("GL_CHROMIUM_gpu_memory_manager"); | 120 AddExtensionString("GL_CHROMIUM_gpu_memory_manager"); |
| 121 AddExtensionString("GL_CHROMIUM_command_buffer_query"); |
121 AddExtensionString("GL_ANGLE_translated_shader_source"); | 122 AddExtensionString("GL_ANGLE_translated_shader_source"); |
122 | 123 |
123 if (ext.Have("GL_ANGLE_translated_shader_source")) { | 124 if (ext.Have("GL_ANGLE_translated_shader_source")) { |
124 feature_flags_.angle_translated_shader_source = true; | 125 feature_flags_.angle_translated_shader_source = true; |
125 } | 126 } |
126 | 127 |
127 // Only turn this feature on if it is requested. Not by default. | 128 // Only turn this feature on if it is requested. Not by default. |
128 if (desired_features && ext.Desire("GL_CHROMIUM_webglsl")) { | 129 if (desired_features && ext.Desire("GL_CHROMIUM_webglsl")) { |
129 AddExtensionString("GL_CHROMIUM_webglsl"); | 130 AddExtensionString("GL_CHROMIUM_webglsl"); |
130 feature_flags_.chromium_webglsl = true; | 131 feature_flags_.chromium_webglsl = true; |
(...skipping 301 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
432 validators_.texture_internal_format_storage.AddValue(GL_RGBA16F_EXT); | 433 validators_.texture_internal_format_storage.AddValue(GL_RGBA16F_EXT); |
433 validators_.texture_internal_format_storage.AddValue(GL_RGB16F_EXT); | 434 validators_.texture_internal_format_storage.AddValue(GL_RGB16F_EXT); |
434 validators_.texture_internal_format_storage.AddValue(GL_ALPHA16F_EXT); | 435 validators_.texture_internal_format_storage.AddValue(GL_ALPHA16F_EXT); |
435 validators_.texture_internal_format_storage.AddValue( | 436 validators_.texture_internal_format_storage.AddValue( |
436 GL_LUMINANCE16F_EXT); | 437 GL_LUMINANCE16F_EXT); |
437 validators_.texture_internal_format_storage.AddValue( | 438 validators_.texture_internal_format_storage.AddValue( |
438 GL_LUMINANCE_ALPHA16F_EXT); | 439 GL_LUMINANCE_ALPHA16F_EXT); |
439 } | 440 } |
440 } | 441 } |
441 | 442 |
| 443 bool have_ext_occlusion_query_boolean = |
| 444 ext.Have("GL_EXT_occlusion_query_boolean"); |
| 445 bool have_arb_occlusion_query2 = ext.Have("GL_ARB_occlusion_query2"); |
442 if (ext.Desire("GL_EXT_occlusion_query_boolean") && | 446 if (ext.Desire("GL_EXT_occlusion_query_boolean") && |
443 (ext.Have("GL_EXT_occlusion_query_boolean") || | 447 (have_ext_occlusion_query_boolean || have_arb_occlusion_query2)) { |
444 ext.Have("GL_ARB_occlusion_query2"))) { | 448 AddExtensionString("GL_EXT_occlusion_query_boolean"); |
445 // TODO(gman): Comment in the next line once this really works. | |
446 // AddExtensionString("GL_EXT_occlusion_query_boolean"); | |
447 feature_flags_.occlusion_query_boolean = true; | 449 feature_flags_.occlusion_query_boolean = true; |
| 450 feature_flags_.use_arb_occlusion_query2_for_occlusion_query_boolean = |
| 451 !have_ext_occlusion_query_boolean; |
448 } | 452 } |
449 | 453 |
450 if (ext.Desire("GL_ANGLE_instanced_arrays") && | 454 if (ext.Desire("GL_ANGLE_instanced_arrays") && |
451 (ext.Have("GL_ANGLE_instanced_arrays") || | 455 (ext.Have("GL_ANGLE_instanced_arrays") || |
452 (ext.Have("GL_ARB_instanced_arrays") && | 456 (ext.Have("GL_ARB_instanced_arrays") && |
453 ext.Have("GL_ARB_draw_instanced")))) { | 457 ext.Have("GL_ARB_draw_instanced")))) { |
454 AddExtensionString("GL_ANGLE_instanced_arrays"); | 458 AddExtensionString("GL_ANGLE_instanced_arrays"); |
455 feature_flags_.angle_instanced_arrays = true; | 459 feature_flags_.angle_instanced_arrays = true; |
456 validators_.vertex_attribute.AddValue(GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE); | 460 validators_.vertex_attribute.AddValue(GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE); |
457 } | 461 } |
458 | 462 |
459 } | 463 } |
460 | 464 |
461 void FeatureInfo::AddExtensionString(const std::string& str) { | 465 void FeatureInfo::AddExtensionString(const std::string& str) { |
462 if (extensions_.find(str) == std::string::npos) { | 466 if (extensions_.find(str) == std::string::npos) { |
463 extensions_ += (extensions_.empty() ? "" : " ") + str; | 467 extensions_ += (extensions_.empty() ? "" : " ") + str; |
464 } | 468 } |
465 } | 469 } |
466 | 470 |
467 } // namespace gles2 | 471 } // namespace gles2 |
468 } // namespace gpu | 472 } // namespace gpu |
OLD | NEW |