summaryrefslogtreecommitdiffstats
path: root/gpu
diff options
context:
space:
mode:
authoraelias@chromium.org <aelias@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-12-14 07:24:54 +0000
committeraelias@chromium.org <aelias@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-12-14 07:24:54 +0000
commitb06096505f84032b48f8ad5243123997bb7b9d95 (patch)
tree8cb38ed44008a5d7787c27721ed189614c9e7b37 /gpu
parent12d953585e4ba55d1903af13798ef6c6176d189d (diff)
downloadchromium_src-b06096505f84032b48f8ad5243123997bb7b9d95.zip
chromium_src-b06096505f84032b48f8ad5243123997bb7b9d95.tar.gz
chromium_src-b06096505f84032b48f8ad5243123997bb7b9d95.tar.bz2
Ignore GL_ANGLE_framebuffer_multisample on Android.
For some reason, some Qualcomm drivers add this string to their extensions list, but don't support glRenderbufferStorageMultisampleEXT(). This works around the issue. BUG=165736 Review URL: https://chromiumcodereview.appspot.com/11574023 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@173117 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'gpu')
-rw-r--r--gpu/command_buffer/service/feature_info.cc9
-rw-r--r--gpu/command_buffer/service/gles2_cmd_decoder.cc3
2 files changed, 8 insertions, 4 deletions
diff --git a/gpu/command_buffer/service/feature_info.cc b/gpu/command_buffer/service/feature_info.cc
index 0a207336..d447022 100644
--- a/gpu/command_buffer/service/feature_info.cc
+++ b/gpu/command_buffer/service/feature_info.cc
@@ -512,10 +512,15 @@ void FeatureInfo::AddFeatures(const char* desired_features) {
}
// Check for multisample support
+ bool ext_has_multisample = ext.Have("GL_EXT_framebuffer_multisample");
+ if (!is_qualcomm || feature_flags_.disable_workarounds) {
+ // Some Android Qualcomm drivers falsely report this ANGLE extension string.
+ // See http://crbug.com/165736
+ ext_has_multisample |= ext.Have("GL_ANGLE_framebuffer_multisample");
+ }
if (!disallowed_features_.multisampling &&
ext.Desire("GL_CHROMIUM_framebuffer_multisample") &&
- (ext.Have("GL_EXT_framebuffer_multisample") ||
- ext.Have("GL_ANGLE_framebuffer_multisample"))) {
+ 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);
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder.cc b/gpu/command_buffer/service/gles2_cmd_decoder.cc
index 1c5843e..9aef1d4 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder.cc
+++ b/gpu/command_buffer/service/gles2_cmd_decoder.cc
@@ -2222,8 +2222,7 @@ bool GLES2DecoderImpl::Initialize(
if (offscreen) {
if (attrib_parser.samples_ > 0 && attrib_parser.sample_buffers_ > 0 &&
- (context_->HasExtension("GL_EXT_framebuffer_multisample") ||
- context_->HasExtension("GL_ANGLE_framebuffer_multisample"))) {
+ features().chromium_framebuffer_multisample) {
// Per ext_framebuffer_multisample spec, need max bound on sample count.
// max_sample_count must be initialized to a sane value. If
// glGetIntegerv() throws a GL error, it leaves its argument unchanged.