Index: gpu/command_buffer/service/feature_info.cc |
diff --git a/gpu/command_buffer/service/feature_info.cc b/gpu/command_buffer/service/feature_info.cc |
index 282690eff665164330c6f5b92e0e00aa152dcb88..2650ffb7001702ee0d7bf6544b5b22e2caeb5476 100644 |
--- a/gpu/command_buffer/service/feature_info.cc |
+++ b/gpu/command_buffer/service/feature_info.cc |
@@ -170,7 +170,8 @@ FeatureInfo::FeatureFlags::FeatureFlags() |
chromium_image_ycbcr_422(false), |
enable_subscribe_uniform(false), |
emulate_primitive_restart_fixed_index(false), |
- ext_render_buffer_format_bgra8888(false) {} |
+ ext_render_buffer_format_bgra8888(false), |
+ ext_blend_func_extended(false) {} |
FeatureInfo::Workarounds::Workarounds() : |
#define GPU_OP(type, name) name(false), |
@@ -1066,6 +1067,29 @@ void FeatureInfo::InitializeFeatures() { |
} |
UMA_HISTOGRAM_BOOLEAN("GPU.TextureRG", feature_flags_.ext_texture_rg); |
+ if (gl_version_info_->IsAtLeastGL(3, 3) || |
+ (gl_version_info_->IsAtLeastGL(3, 2) && |
+ extensions.Contains("GL_ARB_blend_func_extended")) || |
+ (gl_version_info_->is_es && |
+ extensions.Contains("GL_EXT_blend_func_extended"))) { |
+ feature_flags_.ext_blend_func_extended = true; |
+ AddExtensionString("GL_EXT_blend_func_extended"); |
+ |
+ // NOTE: SRC_ALPHA_SATURATE is valid for ES2 src blend factor. |
+ // SRC_ALPHA_SATURATE is valid for ES3 src and dst blend factor. |
+ validators_.dst_blend_factor.AddValue(GL_SRC_ALPHA_SATURATE_EXT); |
Mark Kilgard
2015/08/28 19:53:24
good, this is actually explicitly documented in th
|
+ |
+ validators_.src_blend_factor.AddValue(GL_SRC1_ALPHA_EXT); |
+ validators_.dst_blend_factor.AddValue(GL_SRC1_ALPHA_EXT); |
+ validators_.src_blend_factor.AddValue(GL_SRC1_COLOR_EXT); |
+ validators_.dst_blend_factor.AddValue(GL_SRC1_COLOR_EXT); |
+ validators_.src_blend_factor.AddValue(GL_ONE_MINUS_SRC1_COLOR_EXT); |
+ validators_.dst_blend_factor.AddValue(GL_ONE_MINUS_SRC1_COLOR_EXT); |
+ validators_.src_blend_factor.AddValue(GL_ONE_MINUS_SRC1_ALPHA_EXT); |
+ validators_.dst_blend_factor.AddValue(GL_ONE_MINUS_SRC1_ALPHA_EXT); |
+ validators_.g_l_state.AddValue(GL_MAX_DUAL_SOURCE_DRAW_BUFFERS_EXT); |
+ } |
+ |
#if !defined(OS_MACOSX) |
if (workarounds_.ignore_egl_sync_failures) { |
gfx::GLFenceEGL::SetIgnoreFailures(); |