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

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

Issue 2454383002: webgl, cmaa: choose immutable texture instead of BGRA support for WebGL1 (Closed)
Patch Set: remove unnecessary change Created 4 years, 1 month 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 <stddef.h> 7 #include <stddef.h>
8 8
9 #include <set> 9 #include <set>
10 #include <vector> 10 #include <vector>
(...skipping 624 matching lines...) Expand 10 before | Expand all | Expand 10 after
635 GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT); 635 GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT);
636 validators_.texture_internal_format_storage.AddValue( 636 validators_.texture_internal_format_storage.AddValue(
637 GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT); 637 GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT);
638 } 638 }
639 639
640 // Note: Only APPLE_texture_format_BGRA8888 extension allows BGRA8_EXT in 640 // Note: Only APPLE_texture_format_BGRA8888 extension allows BGRA8_EXT in
641 // ES3's glTexStorage2D, whereas EXT_texture_format_BGRA8888 doesn't provide 641 // ES3's glTexStorage2D, whereas EXT_texture_format_BGRA8888 doesn't provide
642 // that compatibility. So if EXT_texture_format_BGRA8888 (but not 642 // that compatibility. So if EXT_texture_format_BGRA8888 (but not
643 // APPLE_texture_format_BGRA8888) is present on an underlying ES3 context, we 643 // APPLE_texture_format_BGRA8888) is present on an underlying ES3 context, we
644 // have to choose which one of BGRA vs texture storage we expose. 644 // have to choose which one of BGRA vs texture storage we expose.
645 // When creating ES2 contexts, we prefer support BGRA to texture storage, so 645 // When creating ES2 contexts, we prefer support BGRA to texture storage, in
646 // we disable texture storage if only EXT_texture_format_BGRA8888 is present. 646 // order to use BGRA as platform color in the compositor, so we disable
647 // texture storage if only EXT_texture_format_BGRA8888 is present.
647 // If neither is present, we expose texture storage. 648 // If neither is present, we expose texture storage.
648 // When creating ES3 contexts, we do need to expose texture storage, so we 649 // When creating ES3 contexts, we do need to expose texture storage, so we
649 // disable BGRA if we have to. 650 // disable BGRA if we have to.
651 // When WebGL contexts, BRGA is not needed, because WebGL doesn't expose it.
650 bool has_apple_bgra = extensions.Contains("GL_APPLE_texture_format_BGRA8888"); 652 bool has_apple_bgra = extensions.Contains("GL_APPLE_texture_format_BGRA8888");
651 bool has_ext_bgra = extensions.Contains("GL_EXT_texture_format_BGRA8888"); 653 bool has_ext_bgra = extensions.Contains("GL_EXT_texture_format_BGRA8888");
652 bool enable_texture_format_bgra8888 = 654 bool enable_texture_format_bgra8888 =
653 has_ext_bgra || has_apple_bgra || !gl_version_info_->is_es; 655 has_ext_bgra || has_apple_bgra || !gl_version_info_->is_es;
654 656
655 bool has_ext_texture_storage = extensions.Contains("GL_EXT_texture_storage"); 657 bool has_ext_texture_storage = extensions.Contains("GL_EXT_texture_storage");
656 bool has_arb_texture_storage = extensions.Contains("GL_ARB_texture_storage"); 658 bool has_arb_texture_storage = extensions.Contains("GL_ARB_texture_storage");
657 bool has_texture_storage = 659 bool has_texture_storage =
658 !workarounds_.disable_texture_storage && 660 !workarounds_.disable_texture_storage &&
659 (has_ext_texture_storage || has_arb_texture_storage || 661 (has_ext_texture_storage || has_arb_texture_storage ||
660 gl_version_info_->is_es3 || gl_version_info_->IsAtLeastGL(4, 2)); 662 gl_version_info_->is_es3 || gl_version_info_->IsAtLeastGL(4, 2));
661 663
662 bool enable_texture_storage = has_texture_storage; 664 bool enable_texture_storage = has_texture_storage;
663 665
664 bool texture_storage_incompatible_with_bgra = 666 bool texture_storage_incompatible_with_bgra =
665 gl_version_info_->is_es3 && !has_ext_texture_storage && !has_apple_bgra; 667 gl_version_info_->is_es3 && !has_ext_texture_storage && !has_apple_bgra;
666 if (texture_storage_incompatible_with_bgra && 668 if (texture_storage_incompatible_with_bgra &&
667 enable_texture_format_bgra8888 && enable_texture_storage) { 669 enable_texture_format_bgra8888 && enable_texture_storage) {
668 switch (context_type_) { 670 switch (context_type_) {
669 case CONTEXT_TYPE_OPENGLES2: 671 case CONTEXT_TYPE_OPENGLES2:
670 case CONTEXT_TYPE_WEBGL1:
671 enable_texture_storage = false; 672 enable_texture_storage = false;
672 break; 673 break;
673 case CONTEXT_TYPE_OPENGLES3: 674 case CONTEXT_TYPE_OPENGLES3:
675 case CONTEXT_TYPE_WEBGL1:
674 case CONTEXT_TYPE_WEBGL2: 676 case CONTEXT_TYPE_WEBGL2:
675 enable_texture_format_bgra8888 = false; 677 enable_texture_format_bgra8888 = false;
676 break; 678 break;
677 } 679 }
678 } 680 }
679 681
680 if (enable_texture_format_bgra8888) { 682 if (enable_texture_format_bgra8888) {
681 feature_flags_.ext_texture_format_bgra8888 = true; 683 feature_flags_.ext_texture_format_bgra8888 = true;
682 AddExtensionString("GL_EXT_texture_format_BGRA8888"); 684 AddExtensionString("GL_EXT_texture_format_BGRA8888");
683 validators_.texture_internal_format.AddValue(GL_BGRA_EXT); 685 validators_.texture_internal_format.AddValue(GL_BGRA_EXT);
(...skipping 864 matching lines...) Expand 10 before | Expand all | Expand 10 after
1548 if (pos == std::string::npos) { 1550 if (pos == std::string::npos) {
1549 extensions_ += (extensions_.empty() ? "" : " ") + str; 1551 extensions_ += (extensions_.empty() ? "" : " ") + str;
1550 } 1552 }
1551 } 1553 }
1552 1554
1553 FeatureInfo::~FeatureInfo() { 1555 FeatureInfo::~FeatureInfo() {
1554 } 1556 }
1555 1557
1556 } // namespace gles2 1558 } // namespace gles2
1557 } // namespace gpu 1559 } // namespace gpu
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698