[oe,meta-browser] chromium: add 2 fixes for v4l2 VDA support

Message ID 1552692992-23605-1-git-send-email-peter.griffin@linaro.org
State New
Headers show
Series
  • [oe,meta-browser] chromium: add 2 fixes for v4l2 VDA support
Related show

Commit Message

Peter Griffin March 15, 2019, 11:36 p.m.
The first patch allows GpuVideoDecoder to actually get created.
Without it chrome://gpu report hardware video acceleration is
enabled, but actually ffmpegVideoDecoder is used for the decode.

The second adds NV12 & YVU420 formats for all ARM platforms,
otherwise V4L2 VDA on dragonboard will error with NV12 buffers.

Signed-off-by: Peter Griffin <peter.griffin@linaro.org>

---
 ...2_device-allow-NV12-YVU420-on-all-ARM-pla.patch | 26 +++++++++++
 ...lt_decoder_factory-create-GpuVideoDecoder.patch | 51 ++++++++++++++++++++++
 .../chromium-ozone-wayland_72.0.3626.121.bb        |  2 +
 3 files changed, 79 insertions(+)
 create mode 100644 recipes-browser/chromium/chromium-ozone-wayland/0001-generic_v4l2_device-allow-NV12-YVU420-on-all-ARM-pla.patch
 create mode 100644 recipes-browser/chromium/chromium-ozone-wayland/0001-media-default_decoder_factory-create-GpuVideoDecoder.patch

-- 
2.7.4

-- 
_______________________________________________
Openembedded-devel mailing list
Openembedded-devel@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-devel

Patch

diff --git a/recipes-browser/chromium/chromium-ozone-wayland/0001-generic_v4l2_device-allow-NV12-YVU420-on-all-ARM-pla.patch b/recipes-browser/chromium/chromium-ozone-wayland/0001-generic_v4l2_device-allow-NV12-YVU420-on-all-ARM-pla.patch
new file mode 100644
index 0000000..20c2ae4
--- /dev/null
+++ b/recipes-browser/chromium/chromium-ozone-wayland/0001-generic_v4l2_device-allow-NV12-YVU420-on-all-ARM-pla.patch
@@ -0,0 +1,26 @@ 
+From 676525a5cc0e5cc38ef59306413365811ee051ce Mon Sep 17 00:00:00 2001
+From: Peter Griffin <peter.griffin@linaro.org>
+Date: Fri, 15 Mar 2019 22:49:11 +0100
+Subject: [PATCH] generic_v4l2_device: allow NV12 & YVU420 on all ARM platforms
+
+Signed-off-by: Peter Griffin <peter.griffin@linaro.org>
+---
+ media/gpu/v4l2/generic_v4l2_device.cc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/media/gpu/v4l2/generic_v4l2_device.cc b/media/gpu/v4l2/generic_v4l2_device.cc
+index a1294ae0b..2b587ca 100644
+--- a/media/gpu/v4l2/generic_v4l2_device.cc
++++ b/media/gpu/v4l2/generic_v4l2_device.cc
+@@ -200,7 +200,7 @@ std::vector<base::ScopedFD> GenericV4L2Device::GetDmabufsForV4L2Buffer(
+ bool GenericV4L2Device::CanCreateEGLImageFrom(uint32_t v4l2_pixfmt) {
+   static uint32_t kEGLImageDrmFmtsSupported[] = {
+     DRM_FORMAT_ARGB8888,
+-#if defined(ARCH_CPU_ARMEL)
++#if defined(ARCH_CPU_ARM_FAMILY)
+     DRM_FORMAT_NV12,
+     DRM_FORMAT_YVU420,
+ #endif
+-- 
+2.7.4
+
diff --git a/recipes-browser/chromium/chromium-ozone-wayland/0001-media-default_decoder_factory-create-GpuVideoDecoder.patch b/recipes-browser/chromium/chromium-ozone-wayland/0001-media-default_decoder_factory-create-GpuVideoDecoder.patch
new file mode 100644
index 0000000..d66abae
--- /dev/null
+++ b/recipes-browser/chromium/chromium-ozone-wayland/0001-media-default_decoder_factory-create-GpuVideoDecoder.patch
@@ -0,0 +1,51 @@ 
+From 527edf2f2240f33df3c5a946185a1db771430eed Mon Sep 17 00:00:00 2001
+From: Peter Griffin <peter.griffin@linaro.org>
+Date: Fri, 15 Mar 2019 15:44:06 +0100
+Subject: [PATCH 1/2] media: default_decoder_factory: create GpuVideoDecoder if
+ mojo disabled
+
+Despite chrome://gpu showing video acceleration is enabled, the
+GpuVideoDecoder never actually gets created without this change
+applied.
+
+With this patch applied, VDA is created and used when playing back
+video.
+
+Signed-off-by: Peter Griffin <peter.griffin@linaro.org>
+---
+ media/renderers/default_decoder_factory.cc | 9 +++------
+ 1 file changed, 3 insertions(+), 6 deletions(-)
+
+diff --git a/media/renderers/default_decoder_factory.cc b/media/renderers/default_decoder_factory.cc
+index 1229941..a71efb7 100644
+--- a/media/renderers/default_decoder_factory.cc
++++ b/media/renderers/default_decoder_factory.cc
+@@ -86,7 +86,6 @@ void DefaultDecoderFactory::CreateVideoDecoders(
+   video_decoders->push_back(
+       std::make_unique<DecryptingVideoDecoder>(task_runner, media_log));
+ #endif
+-
+   // Perfer an external decoder since one will only exist if it is hardware
+   // accelerated.
+   // Remember that |gpu_factories| will be null if HW video decode is turned
+@@ -97,14 +96,12 @@ void DefaultDecoderFactory::CreateVideoDecoders(
+     // factories, require that their message loops are identical.
+     DCHECK_EQ(gpu_factories->GetTaskRunner(), task_runner);
+ 
+-    if (external_decoder_factory_) {
++    // MojoVideoDecoder replaces any VDA for this platform when it's enabled.
++    if (external_decoder_factory_ && base::FeatureList::IsEnabled(media::kMojoVideoDecoder)) {
+       external_decoder_factory_->CreateVideoDecoders(
+           task_runner, gpu_factories, media_log, request_overlay_info_cb,
+           target_color_space, video_decoders);
+-    }
+-
+-    // MojoVideoDecoder replaces any VDA for this platform when it's enabled.
+-    if (!base::FeatureList::IsEnabled(media::kMojoVideoDecoder)) {
++    } else {
+       video_decoders->push_back(std::make_unique<GpuVideoDecoder>(
+           gpu_factories, request_overlay_info_cb, target_color_space,
+           media_log));
+-- 
+2.7.4
+
diff --git a/recipes-browser/chromium/chromium-ozone-wayland_72.0.3626.121.bb b/recipes-browser/chromium/chromium-ozone-wayland_72.0.3626.121.bb
index 6765e7e..6208809 100644
--- a/recipes-browser/chromium/chromium-ozone-wayland_72.0.3626.121.bb
+++ b/recipes-browser/chromium/chromium-ozone-wayland_72.0.3626.121.bb
@@ -38,6 +38,8 @@  SRC_URI += " \
         file://0033-ozone-wayland-Fix-software-rendering.patch \
         file://0034-ozone-wayland-Return-primary-display-on-null-window.patch \
         file://0035-ozone-Implement-single-window-tab-dragging.patch \
+        file://0001-generic_v4l2_device-allow-NV12-YVU420-on-all-ARM-pla.patch \
+        file://0001-media-default_decoder_factory-create-GpuVideoDecoder.patch \
 "
 
 # Chromium can use v4l2 device for hardware accelerated video decoding. Make sure that