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 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
164 is_swiftshader(false), | 164 is_swiftshader(false), |
165 angle_texture_usage(false), | 165 angle_texture_usage(false), |
166 ext_texture_storage(false), | 166 ext_texture_storage(false), |
167 chromium_path_rendering(false), | 167 chromium_path_rendering(false), |
168 blend_equation_advanced(false), | 168 blend_equation_advanced(false), |
169 blend_equation_advanced_coherent(false), | 169 blend_equation_advanced_coherent(false), |
170 ext_texture_rg(false), | 170 ext_texture_rg(false), |
171 chromium_image_ycbcr_422(false), | 171 chromium_image_ycbcr_422(false), |
172 enable_subscribe_uniform(false), | 172 enable_subscribe_uniform(false), |
173 emulate_primitive_restart_fixed_index(false), | 173 emulate_primitive_restart_fixed_index(false), |
174 ext_render_buffer_format_bgra8888(false) {} | 174 ext_render_buffer_format_bgra8888(false), |
| 175 ext_blend_func_extended(false) {} |
175 | 176 |
176 FeatureInfo::Workarounds::Workarounds() : | 177 FeatureInfo::Workarounds::Workarounds() : |
177 #define GPU_OP(type, name) name(false), | 178 #define GPU_OP(type, name) name(false), |
178 GPU_DRIVER_BUG_WORKAROUNDS(GPU_OP) | 179 GPU_DRIVER_BUG_WORKAROUNDS(GPU_OP) |
179 #undef GPU_OP | 180 #undef GPU_OP |
180 max_texture_size(0), | 181 max_texture_size(0), |
181 max_cube_map_texture_size(0), | 182 max_cube_map_texture_size(0), |
182 max_fragment_uniform_vectors(0), | 183 max_fragment_uniform_vectors(0), |
183 max_varying_vectors(0), | 184 max_varying_vectors(0), |
184 max_vertex_uniform_vectors(0), | 185 max_vertex_uniform_vectors(0), |
(...skipping 893 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1078 validators_.texture_internal_format.AddValue(GL_R8_EXT); | 1079 validators_.texture_internal_format.AddValue(GL_R8_EXT); |
1079 validators_.texture_internal_format.AddValue(GL_RG_EXT); | 1080 validators_.texture_internal_format.AddValue(GL_RG_EXT); |
1080 validators_.texture_internal_format.AddValue(GL_RG8_EXT); | 1081 validators_.texture_internal_format.AddValue(GL_RG8_EXT); |
1081 validators_.read_pixel_format.AddValue(GL_RED_EXT); | 1082 validators_.read_pixel_format.AddValue(GL_RED_EXT); |
1082 validators_.read_pixel_format.AddValue(GL_RG_EXT); | 1083 validators_.read_pixel_format.AddValue(GL_RG_EXT); |
1083 validators_.render_buffer_format.AddValue(GL_R8_EXT); | 1084 validators_.render_buffer_format.AddValue(GL_R8_EXT); |
1084 validators_.render_buffer_format.AddValue(GL_RG8_EXT); | 1085 validators_.render_buffer_format.AddValue(GL_RG8_EXT); |
1085 } | 1086 } |
1086 UMA_HISTOGRAM_BOOLEAN("GPU.TextureRG", feature_flags_.ext_texture_rg); | 1087 UMA_HISTOGRAM_BOOLEAN("GPU.TextureRG", feature_flags_.ext_texture_rg); |
1087 | 1088 |
| 1089 if (gl_version_info_->IsAtLeastGL(3, 3) || |
| 1090 (gl_version_info_->IsAtLeastGL(3, 2) && |
| 1091 extensions.Contains("GL_ARB_blend_func_extended")) || |
| 1092 (gl_version_info_->is_es && |
| 1093 extensions.Contains("GL_EXT_blend_func_extended"))) { |
| 1094 feature_flags_.ext_blend_func_extended = true; |
| 1095 AddExtensionString("GL_EXT_blend_func_extended"); |
| 1096 |
| 1097 // NOTE: SRC_ALPHA_SATURATE is valid for ES2 src blend factor. |
| 1098 // SRC_ALPHA_SATURATE is valid for ES3 src and dst blend factor. |
| 1099 validators_.dst_blend_factor.AddValue(GL_SRC_ALPHA_SATURATE_EXT); |
| 1100 |
| 1101 validators_.src_blend_factor.AddValue(GL_SRC1_ALPHA_EXT); |
| 1102 validators_.dst_blend_factor.AddValue(GL_SRC1_ALPHA_EXT); |
| 1103 validators_.src_blend_factor.AddValue(GL_SRC1_COLOR_EXT); |
| 1104 validators_.dst_blend_factor.AddValue(GL_SRC1_COLOR_EXT); |
| 1105 validators_.src_blend_factor.AddValue(GL_ONE_MINUS_SRC1_COLOR_EXT); |
| 1106 validators_.dst_blend_factor.AddValue(GL_ONE_MINUS_SRC1_COLOR_EXT); |
| 1107 validators_.src_blend_factor.AddValue(GL_ONE_MINUS_SRC1_ALPHA_EXT); |
| 1108 validators_.dst_blend_factor.AddValue(GL_ONE_MINUS_SRC1_ALPHA_EXT); |
| 1109 validators_.g_l_state.AddValue(GL_MAX_DUAL_SOURCE_DRAW_BUFFERS_EXT); |
| 1110 } |
| 1111 |
1088 #if !defined(OS_MACOSX) | 1112 #if !defined(OS_MACOSX) |
1089 if (workarounds_.ignore_egl_sync_failures) { | 1113 if (workarounds_.ignore_egl_sync_failures) { |
1090 gfx::GLFenceEGL::SetIgnoreFailures(); | 1114 gfx::GLFenceEGL::SetIgnoreFailures(); |
1091 } | 1115 } |
1092 #endif | 1116 #endif |
1093 | 1117 |
1094 if (workarounds_.avoid_egl_image_target_texture_reuse) { | 1118 if (workarounds_.avoid_egl_image_target_texture_reuse) { |
1095 TextureDefinition::AvoidEGLTargetTextureReuse(); | 1119 TextureDefinition::AvoidEGLTargetTextureReuse(); |
1096 } | 1120 } |
1097 | 1121 |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1184 if (pos == std::string::npos) { | 1208 if (pos == std::string::npos) { |
1185 extensions_ += (extensions_.empty() ? "" : " ") + str; | 1209 extensions_ += (extensions_.empty() ? "" : " ") + str; |
1186 } | 1210 } |
1187 } | 1211 } |
1188 | 1212 |
1189 FeatureInfo::~FeatureInfo() { | 1213 FeatureInfo::~FeatureInfo() { |
1190 } | 1214 } |
1191 | 1215 |
1192 } // namespace gles2 | 1216 } // namespace gles2 |
1193 } // namespace gpu | 1217 } // namespace gpu |
OLD | NEW |