New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 818072 link

Starred by 6 users

Issue metadata

Status: Fixed
Owner: ----
Closed: Mar 2018
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Android
Pri: 1
Type: Bug



Sign in to add a comment

VPX decode with PowerVR GPU

Reported by julian....@mediatek.com, Mar 2 2018

Issue description

THIS TEMPLATE IS FOR FILING BUGS ON THE ANDROID SYSTEM WEBVIEW. GENERAL WEB
BUGS SHOULD BE FILED USING A DIFFERENT TEMPLATE!

Device name: Mediatek MT6739 based platform
Android version: Android 8.1
WebView version: 64.0.3282.137
Application: webviewshell.apk
Application version: N/A

URLs (if applicable): https://m.youtube.com/watch?v=K7C6BH8zx0s

We've encountered an issue of video rendering in webview. (Chrome is fine)

After m63, the video inside webview will be green-ish with all videos under 240p on m.youtube.com (please refer to the attached image)

a) It is found that for video under 240p are VPX, since our platform doesn't support it, chromium uses the it's built-in VPX codec.
b) This issue only happens in the platform using PowerVR GPU, Mali GPU platforms is fine.
c) This issue only happens in webview (can be reproduced with webviewshell.apk) , Chrome is fine.
d) This issue only happens after WebView m63, m61 is fine.

We think this is an issue of webview.
Our guess is the chromium VPX codec rendered to buffer using a different color space (RGB, maybe) without considering the color space of other layers in webview.

GPU driver information:
vendor: Imagination Technologies
renderer: PowerVR Rogue 8XE
driver_version: 1.8ED4490469

Expected result:
Video rendering should be normal

Actual result:
Video becomes green-ish, please refer to the attached image.

 
screen3.png
345 KB View Download
Cc: ntfschr@chromium.org tobiasjs@chromium.org
+Toby because he most recently touched that line.
Cc: hubbe@chromium.org
+hubbe for video color stuff
Project Member

Comment 4 by bugdroid1@chromium.org, Mar 9 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/acfaf2092828a876a509906653960b13866d4df1

commit acfaf2092828a876a509906653960b13866d4df1
Author: Tobias Sargeant <tobiasjs@google.com>
Date: Fri Mar 09 23:35:07 2018

If avoiding one component textures, do not attempt to apply color space.

PowerVR drives that have problems with one component textures being
bount to an EGLImage require YUV->RGB conversion to be done early in
software. In that case it's not correct to pass the color space
of the video frame on to the compositor, because it doesn't reflect the
color space of the converted frame. Instead, just reset it to the
identity color space.

Bug:  818072 
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel
Change-Id: I44751300a134d29240217cf80c6a5c663227745d
Reviewed-on: https://chromium-review.googlesource.com/955592
Reviewed-by: ccameron <ccameron@chromium.org>
Commit-Queue: Tobias Sargeant <tobiasjs@chromium.org>
Cr-Commit-Position: refs/heads/master@{#542277}
[modify] https://crrev.com/acfaf2092828a876a509906653960b13866d4df1/cc/resources/video_resource_updater.cc

Labels: Merge-Request-66
Status: Fixed (was: Unconfirmed)
Testing note: Before the fix, this reproduces in the webview shell with the URL in the original report, but only on devices with a PowerVR GPU.

Example devices:

ja3g	Samsung Galaxy S4 Exynyos
X3_HK	LeEco LE1S
Z00A	Asus Zenfone 2
jalteskt	Samsung Galaxy S4 Exynyos
jaltektt	Samsung Galaxy S4 Exynyos
htc_e56ml_dtul	HTC One X9
Labels: -Pri-3 Pri-1
Labels: M-66
Project Member

Comment 9 by sheriffbot@chromium.org, Mar 11 2018

Labels: -Merge-Request-66 Merge-Approved-66 Hotlist-Merge-Approved
Your change meets the bar and is auto-approved for M66. Please go ahead and merge the CL to branch 3359 manually. Please contact milestone owner if you have questions.
Owners: cmasso@(Android), cmasso@(iOS), josafat@(ChromeOS), abdulsyed@(Desktop)

For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
Project Member

Comment 10 by bugdroid1@chromium.org, Mar 12 2018

Labels: -merge-approved-66 merge-merged-3359
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/5846356bf853633a51489fb68dd5dd7cacb6d81d

commit 5846356bf853633a51489fb68dd5dd7cacb6d81d
Author: Tobias Sargeant <tobiasjs@google.com>
Date: Mon Mar 12 12:42:06 2018

If avoiding one component textures, do not attempt to apply color space.

PowerVR drives that have problems with one component textures being
bount to an EGLImage require YUV->RGB conversion to be done early in
software. In that case it's not correct to pass the color space
of the video frame on to the compositor, because it doesn't reflect the
color space of the converted frame. Instead, just reset it to the
identity color space.

TBR=tobiasjs@google.com

(cherry picked from commit acfaf2092828a876a509906653960b13866d4df1)

Bug:  818072 
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel
Change-Id: I44751300a134d29240217cf80c6a5c663227745d
Reviewed-on: https://chromium-review.googlesource.com/955592
Reviewed-by: ccameron <ccameron@chromium.org>
Commit-Queue: Tobias Sargeant <tobiasjs@chromium.org>
Cr-Original-Commit-Position: refs/heads/master@{#542277}
Reviewed-on: https://chromium-review.googlesource.com/958423
Reviewed-by: Tobias Sargeant <tobiasjs@chromium.org>
Cr-Commit-Position: refs/branch-heads/3359@{#157}
Cr-Branched-From: 66afc5e5d10127546cc4b98b9117aff588b5e66b-refs/heads/master@{#540276}
[modify] https://crrev.com/5846356bf853633a51489fb68dd5dd7cacb6d81d/cc/resources/video_resource_updater.cc

Verified on Asus Zenfone 2 / LRX21V vs 66.0.3359.30

Sign in to add a comment