summaryrefslogtreecommitdiffstats
path: root/gpu
diff options
context:
space:
mode:
authorliberato <liberato@chromium.org>2016-02-29 16:25:55 -0800
committerCommit bot <commit-bot@chromium.org>2016-03-01 00:28:00 +0000
commit46e95bb6168b76d8664d3dc9bd971d06be4a2fc0 (patch)
treed68bb3a4b05a9861e77cce9704f4fb2361c562ee /gpu
parent542f9e5244355165647f0a6897b7c44bdc92503b (diff)
downloadchromium_src-46e95bb6168b76d8664d3dc9bd971d06be4a2fc0.zip
chromium_src-46e95bb6168b76d8664d3dc9bd971d06be4a2fc0.tar.gz
chromium_src-46e95bb6168b76d8664d3dc9bd971d06be4a2fc0.tar.bz2
Check that MediaCodec sends FORMAT_CHANGED before decoded buffers.
It looks like MediaCodec erroneously returns decoded frames before sending an OUTPUT_FORMAT_CHANGED notification. This will cause us to SendDecodedFrameToClient, then crashes when it tries to get a picture buffer to use. MediaCodec is not supposed to do that, see EncodeDecodeTest.java line 617 in the android cts tests. Once it does, it's unclear what state it's in. We post an error and stop decoding. I do not have a local repro, so this is my best guess about what is causing some reported crashes. They seem to happen only on JB with Adreno 330 GPUs (Snapdragon 800 series), driver version 45. This combination has been added to the blacklist for accelerated video decoding (AVDA). This CL also adds a metric for how often this occurs, to help to identify other affected devices. BUG=585963 CQ_INCLUDE_TRYBOTS=tryserver.chromium.win:win_optional_gpu_tests_rel;tryserver.chromium.mac:mac_optional_gpu_tests_rel Review URL: https://codereview.chromium.org/1685303004 Cr-Commit-Position: refs/heads/master@{#378340}
Diffstat (limited to 'gpu')
-rw-r--r--gpu/config/software_rendering_list_json.cc22
1 files changed, 21 insertions, 1 deletions
diff --git a/gpu/config/software_rendering_list_json.cc b/gpu/config/software_rendering_list_json.cc
index 484467d..fb8b84c 100644
--- a/gpu/config/software_rendering_list_json.cc
+++ b/gpu/config/software_rendering_list_json.cc
@@ -18,7 +18,7 @@ const char kSoftwareRenderingListJson[] = LONG_STRING_CONST(
{
"name": "software rendering list",
// Please update the version number whenever you change this file.
- "version": "10.17",
+ "version": "10.18",
"entries": [
{
"id": 1,
@@ -1189,6 +1189,26 @@ LONG_STRING_CONST(
"gpu_rasterization",
"accelerated_2d_canvas"
]
+ },
+ {
+ "id": 109,
+ "description": "MediaCodec on Adreno 330 / 4.2.2 doesn't always send FORMAT_CHANGED",
+ "cr_bugs": [585963],
+ "os": {
+ "type": "android",
+ "version": {
+ "op": "=",
+ "value": "4.2.2"
+ }
+ },
+ "gl_renderer": "Adreno \\(TM\\) 330",
+ "driver_version": {
+ "op": "=",
+ "value": "45.0"
+ },
+ "features": [
+ "accelerated_video_decode"
+ ]
}
]
}