| 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 396311cffb1b6690d7c84ff0a2052ebc885206e1..b0fb12073b23ebf09122c4f9a48954e97aa950ec 100644
|
| --- a/gpu/command_buffer/service/feature_info.cc
|
| +++ b/gpu/command_buffer/service/feature_info.cc
|
| @@ -100,6 +100,8 @@ void StringToWorkarounds(
|
|
|
| FeatureInfo::FeatureFlags::FeatureFlags()
|
| : chromium_framebuffer_multisample(false),
|
| + multisampled_render_to_texture(false),
|
| + use_img_for_multisampled_render_to_texture(false),
|
| oes_standard_derivatives(false),
|
| oes_egl_image_external(false),
|
| npot_ok(false),
|
| @@ -453,20 +455,37 @@ void FeatureInfo::AddFeatures(const CommandLine& command_line) {
|
| }
|
|
|
| // Check for multisample support
|
| - bool ext_has_multisample =
|
| - extensions.Contains("GL_EXT_framebuffer_multisample");
|
| - if (!workarounds_.disable_angle_framebuffer_multisample) {
|
| - ext_has_multisample |=
|
| - extensions.Contains("GL_ANGLE_framebuffer_multisample");
|
| - }
|
| - if (!disallowed_features_.multisampling && ext_has_multisample) {
|
| - feature_flags_.chromium_framebuffer_multisample = true;
|
| - validators_.frame_buffer_target.AddValue(GL_READ_FRAMEBUFFER_EXT);
|
| - validators_.frame_buffer_target.AddValue(GL_DRAW_FRAMEBUFFER_EXT);
|
| - validators_.g_l_state.AddValue(GL_READ_FRAMEBUFFER_BINDING_EXT);
|
| - validators_.g_l_state.AddValue(GL_MAX_SAMPLES_EXT);
|
| - validators_.render_buffer_parameter.AddValue(GL_RENDERBUFFER_SAMPLES_EXT);
|
| - AddExtensionString("GL_CHROMIUM_framebuffer_multisample");
|
| + if (!disallowed_features_.multisampling) {
|
| + bool ext_has_multisample =
|
| + extensions.Contains("GL_EXT_framebuffer_multisample");
|
| + if (!workarounds_.disable_angle_framebuffer_multisample) {
|
| + ext_has_multisample |=
|
| + extensions.Contains("GL_ANGLE_framebuffer_multisample");
|
| + }
|
| + if (ext_has_multisample) {
|
| + feature_flags_.chromium_framebuffer_multisample = true;
|
| + validators_.frame_buffer_target.AddValue(GL_READ_FRAMEBUFFER_EXT);
|
| + validators_.frame_buffer_target.AddValue(GL_DRAW_FRAMEBUFFER_EXT);
|
| + validators_.g_l_state.AddValue(GL_READ_FRAMEBUFFER_BINDING_EXT);
|
| + validators_.g_l_state.AddValue(GL_MAX_SAMPLES_EXT);
|
| + validators_.render_buffer_parameter.AddValue(GL_RENDERBUFFER_SAMPLES_EXT);
|
| + AddExtensionString("GL_CHROMIUM_framebuffer_multisample");
|
| + } else {
|
| + if (extensions.Contains("GL_EXT_multisampled_render_to_texture")) {
|
| + feature_flags_.multisampled_render_to_texture = true;
|
| + } else if (extensions.Contains("GL_IMG_multisampled_render_to_texture")) {
|
| + feature_flags_.multisampled_render_to_texture = true;
|
| + feature_flags_.use_img_for_multisampled_render_to_texture = true;
|
| + }
|
| + if (feature_flags_.multisampled_render_to_texture) {
|
| + validators_.render_buffer_parameter.AddValue(
|
| + GL_RENDERBUFFER_SAMPLES_EXT);
|
| + validators_.g_l_state.AddValue(GL_MAX_SAMPLES_EXT);
|
| + validators_.frame_buffer_parameter.AddValue(
|
| + GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT);
|
| + AddExtensionString("GL_EXT_multisampled_render_to_texture");
|
| + }
|
| + }
|
| }
|
|
|
| if (extensions.Contains("GL_OES_depth24") || gfx::HasDesktopGLFeatures()) {
|
|
|