summaryrefslogtreecommitdiffstats
path: root/gpu
diff options
context:
space:
mode:
authorskyostil@chromium.org <skyostil@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-09-16 14:24:36 +0000
committerskyostil@chromium.org <skyostil@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-09-16 14:24:36 +0000
commit8ebb4e4652eb4c857e05a15003d4ba5b6410f00e (patch)
treed5c5abd767f288055023221fe56f57b66186d291 /gpu
parent62a6736943b03f0467deb42ad25a94086b574e04 (diff)
downloadchromium_src-8ebb4e4652eb4c857e05a15003d4ba5b6410f00e.zip
chromium_src-8ebb4e4652eb4c857e05a15003d4ba5b6410f00e.tar.gz
chromium_src-8ebb4e4652eb4c857e05a15003d4ba5b6410f00e.tar.bz2
gpu: Disable EXT_discard_framebuffer on ARM GPUs and expose it for pre-ES3
Disable the EXT_discard_framebuffer extension on ARM GPUs (e.g., Nexus 10) as it is causing dropped frames and flickering. This patch also exposes the EXT_discard_framebuffer extension on pre-OpenGL ES 3.0 drivers which support it. Tested on Nexus 10, Nexus 4 and Galaxy S4. BUG=290876 Review URL: https://chromiumcodereview.appspot.com/23629043 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@223338 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'gpu')
-rw-r--r--gpu/command_buffer/service/feature_info.cc3
-rw-r--r--gpu/config/gpu_driver_bug_list_json.cc17
-rw-r--r--gpu/config/gpu_driver_bug_workaround_type.h2
3 files changed, 20 insertions, 2 deletions
diff --git a/gpu/command_buffer/service/feature_info.cc b/gpu/command_buffer/service/feature_info.cc
index eea252f..b9fd20e 100644
--- a/gpu/command_buffer/service/feature_info.cc
+++ b/gpu/command_buffer/service/feature_info.cc
@@ -685,7 +685,8 @@ void FeatureInfo::InitializeFeatures() {
// when available.
}
- if (is_es3) {
+ if ((is_es3 || extensions.Contains("GL_EXT_discard_framebuffer")) &&
+ !workarounds_.disable_ext_discard_framebuffer) {
// DiscardFramebufferEXT is automatically bound to InvalidateFramebuffer.
AddExtensionString("GL_EXT_discard_framebuffer");
}
diff --git a/gpu/config/gpu_driver_bug_list_json.cc b/gpu/config/gpu_driver_bug_list_json.cc
index a115bf5..6346e42 100644
--- a/gpu/config/gpu_driver_bug_list_json.cc
+++ b/gpu/config/gpu_driver_bug_list_json.cc
@@ -85,7 +85,7 @@ const char kGpuDriverBugListJson[] = LONG_STRING_CONST(
{
"name": "gpu driver bug list",
// Please update the version number whenever you change this file.
- "version": "2.14",
+ "version": "2.15",
"entries": [
{
"id": 1,
@@ -605,6 +605,21 @@ const char kGpuDriverBugListJson[] = LONG_STRING_CONST(
"features": [
"validate_multisample_buffer_allocation"
]
+ },
+ {
+ "id": 40,
+ "cr_bugs": [290876],
+ "description": "Framebuffer discarding causes flickering on ARM",
+ "os": {
+ "type": "android"
+ },
+ "gl_vendor": {
+ "op": "beginwith",
+ "value": "ARM"
+ },
+ "features": [
+ "disable_ext_discard_framebuffer"
+ ]
}
]
}
diff --git a/gpu/config/gpu_driver_bug_workaround_type.h b/gpu/config/gpu_driver_bug_workaround_type.h
index 3934d15..e9b3524 100644
--- a/gpu/config/gpu_driver_bug_workaround_type.h
+++ b/gpu/config/gpu_driver_bug_workaround_type.h
@@ -70,6 +70,8 @@
use_virtualized_gl_contexts) \
GPU_OP(VALIDATE_MULTISAMPLE_BUFFER_ALLOCATION, \
validate_multisample_buffer_allocation) \
+ GPU_OP(DISABLE_EXT_DISCARD_FRAMEBUFFER, \
+ disable_ext_discard_framebuffer) \
namespace gpu {