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

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

Issue 643373003: Add support for all blendmodes if we have GL_KHR_blend_equation_advanced. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: add missing test Created 6 years, 2 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/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/macros.h" 10 #include "base/macros.h"
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
136 ext_shader_texture_lod(false), 136 ext_shader_texture_lod(false),
137 use_async_readpixels(false), 137 use_async_readpixels(false),
138 map_buffer_range(false), 138 map_buffer_range(false),
139 ext_discard_framebuffer(false), 139 ext_discard_framebuffer(false),
140 angle_depth_texture(false), 140 angle_depth_texture(false),
141 is_angle(false), 141 is_angle(false),
142 is_swiftshader(false), 142 is_swiftshader(false),
143 angle_texture_usage(false), 143 angle_texture_usage(false),
144 ext_texture_storage(false), 144 ext_texture_storage(false),
145 chromium_path_rendering(false), 145 chromium_path_rendering(false),
146 ext_blend_minmax(false) { 146 ext_blend_minmax(false),
147 blend_equation_advanced(false) {
147 } 148 }
148 149
149 FeatureInfo::Workarounds::Workarounds() : 150 FeatureInfo::Workarounds::Workarounds() :
150 #define GPU_OP(type, name) name(false), 151 #define GPU_OP(type, name) name(false),
151 GPU_DRIVER_BUG_WORKAROUNDS(GPU_OP) 152 GPU_DRIVER_BUG_WORKAROUNDS(GPU_OP)
152 #undef GPU_OP 153 #undef GPU_OP
153 max_texture_size(0), 154 max_texture_size(0),
154 max_cube_map_texture_size(0), 155 max_cube_map_texture_size(0),
155 max_fragment_uniform_vectors(0), 156 max_fragment_uniform_vectors(0),
156 max_varying_vectors(0), 157 max_varying_vectors(0),
(...skipping 688 matching lines...) Expand 10 before | Expand all | Expand 10 after
845 // DiscardFramebufferEXT is automatically bound to InvalidateFramebuffer. 846 // DiscardFramebufferEXT is automatically bound to InvalidateFramebuffer.
846 AddExtensionString("GL_EXT_discard_framebuffer"); 847 AddExtensionString("GL_EXT_discard_framebuffer");
847 feature_flags_.ext_discard_framebuffer = true; 848 feature_flags_.ext_discard_framebuffer = true;
848 } 849 }
849 850
850 if (ui_gl_fence_works) { 851 if (ui_gl_fence_works) {
851 AddExtensionString("GL_CHROMIUM_sync_query"); 852 AddExtensionString("GL_CHROMIUM_sync_query");
852 feature_flags_.chromium_sync_query = true; 853 feature_flags_.chromium_sync_query = true;
853 } 854 }
854 855
856 if (extensions.Contains("GL_NV_blend_equation_advanced") ||
857 extensions.Contains("GL_KHR_blend_equation_advanced")) {
858 const GLenum equations[] = {
piman 2014/10/16 20:13:29 nit: indent looks wrong.
859 GL_MULTIPLY_NV,
860 GL_SCREEN_NV,
861 GL_OVERLAY_NV,
862 GL_DARKEN_NV,
863 GL_LIGHTEN_NV,
864 GL_COLORDODGE_NV,
865 GL_COLORBURN_NV,
866 GL_HARDLIGHT_NV,
867 GL_SOFTLIGHT_NV,
868 GL_DIFFERENCE_NV,
869 GL_EXCLUSION_NV,
870 GL_HSL_HUE_NV,
871 GL_HSL_SATURATION_NV,
872 GL_HSL_COLOR_NV,
873 GL_HSL_LUMINOSITY_NV
piman 2014/10/16 20:13:29 If we don't support the whole range of enums, we s
Erik Dahlström (inactive) 2014/10/17 15:33:17 Done.
874 };
875
876 for (const GLenum& equation : equations)
piman 2014/10/16 20:13:29 nit: const & superfluous?
Erik Dahlström (inactive) 2014/10/17 15:33:17 Done.
877 validators_.equation.AddValue(equation);
878 AddExtensionString("GL_NV_blend_equation_advanced");
879 feature_flags_.blend_equation_advanced = true;
880 }
881
855 if (extensions.Contains("GL_NV_path_rendering")) { 882 if (extensions.Contains("GL_NV_path_rendering")) {
856 if (extensions.Contains("GL_EXT_direct_state_access") || is_es3) { 883 if (extensions.Contains("GL_EXT_direct_state_access") || is_es3) {
857 AddExtensionString("GL_CHROMIUM_path_rendering"); 884 AddExtensionString("GL_CHROMIUM_path_rendering");
858 feature_flags_.chromium_path_rendering = true; 885 feature_flags_.chromium_path_rendering = true;
859 validators_.g_l_state.AddValue(GL_PATH_MODELVIEW_MATRIX_CHROMIUM); 886 validators_.g_l_state.AddValue(GL_PATH_MODELVIEW_MATRIX_CHROMIUM);
860 validators_.g_l_state.AddValue(GL_PATH_PROJECTION_MATRIX_CHROMIUM); 887 validators_.g_l_state.AddValue(GL_PATH_PROJECTION_MATRIX_CHROMIUM);
861 } 888 }
862 } 889 }
863 } 890 }
864 891
865 void FeatureInfo::AddExtensionString(const char* s) { 892 void FeatureInfo::AddExtensionString(const char* s) {
866 std::string str(s); 893 std::string str(s);
867 size_t pos = extensions_.find(str); 894 size_t pos = extensions_.find(str);
868 while (pos != std::string::npos && 895 while (pos != std::string::npos &&
869 pos + str.length() < extensions_.length() && 896 pos + str.length() < extensions_.length() &&
870 extensions_.substr(pos + str.length(), 1) != " ") { 897 extensions_.substr(pos + str.length(), 1) != " ") {
871 // This extension name is a substring of another. 898 // This extension name is a substring of another.
872 pos = extensions_.find(str, pos + str.length()); 899 pos = extensions_.find(str, pos + str.length());
873 } 900 }
874 if (pos == std::string::npos) { 901 if (pos == std::string::npos) {
875 extensions_ += (extensions_.empty() ? "" : " ") + str; 902 extensions_ += (extensions_.empty() ? "" : " ") + str;
876 } 903 }
877 } 904 }
878 905
879 FeatureInfo::~FeatureInfo() { 906 FeatureInfo::~FeatureInfo() {
880 } 907 }
881 908
882 } // namespace gles2 909 } // namespace gles2
883 } // namespace gpu 910 } // namespace gpu
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698