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

Unified Diff: gpu/command_buffer/service/feature_info.cc

Issue 18492005: Add GL_EXT_multisampled_render_to_texture support to command buffer. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: some cleanup Created 7 years, 5 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 side-by-side diff with in-line comments
Download patch
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()) {

Powered by Google App Engine
This is Rietveld 408576698