[MM][WebRTC][GS] Properly notify NativePixmap config support 70/313470/18
authorMichal Jurkiewicz <m.jurkiewicz@samsung.com>
Thu, 18 Jan 2024 12:47:07 +0000 (13:47 +0100)
committerBot Blink <blinkbot@samsung.com>
Wed, 26 Jun 2024 11:01:11 +0000 (11:01 +0000)
[Problem]
GpuMemoryBuffer is not rendered properly for video capture devices
(camera, desktop screen capture).

[Cause]
Empty `texture_target_exception_list` reported by `GpuMemoryBufferSupport`,
causes `GL_TEXTURE_2D` to be set as gl texture_target instead of
`GL_TEXTURE_EXTERNAL_OES` for video frame.

[Solution]
Override `IsNativePixmapConfigSupported` function from `OzonePlatform` class
with implementation for TV.

After applying this change, `GpuMemoryBufferSupport` class will report support
for `YUV_420_BIPLANAR` pixel format, which will result in setting
`GL_TEXTURE_EXTERNAL_OES` as texture_format for video frame.

Bug: https://jira-eu.sec.samsung.net/browse/VDGAME-430
Change-Id: Id2244a304a08ab927230129bf182084a5aae779e
Signed-off-by: Michal Jurkiewicz <m.jurkiewicz@samsung.com>
tizen_src/chromium_impl/ui/ozone/platform/efl/ozone_platform_efl.cc

index 869bf934b97632e5c23420065fb836c6150c02c4..0d9551de4565f836c3e88c5a8925b263dc1852b0 100644 (file)
@@ -108,6 +108,32 @@ class OzonePlatformEfl : public OzonePlatform {
     return std::make_unique<InputMethodAuraLinux>(ime_key_event_dispatcher);
   }
 
+  bool IsNativePixmapConfigSupported(gfx::BufferFormat format,
+                                     gfx::BufferUsage usage) const override {
+#if defined(TIZEN_TV_UPSTREAM_MULTIMEDIA)
+    switch (usage) {
+      case gfx::BufferUsage::SCANOUT_CPU_READ_WRITE:
+      case gfx::BufferUsage::SCANOUT_VEA_CPU_READ:
+      case gfx::BufferUsage::VEA_READ_CAMERA_AND_CPU_READ_WRITE:
+        return format == gfx::BufferFormat::YUV_420_BIPLANAR;
+      case gfx::BufferUsage::GPU_READ:
+      case gfx::BufferUsage::SCANOUT:
+      case gfx::BufferUsage::SCANOUT_CAMERA_READ_WRITE:
+      case gfx::BufferUsage::CAMERA_AND_CPU_READ_WRITE:
+      case gfx::BufferUsage::PROTECTED_SCANOUT_VDA_WRITE:
+      case gfx::BufferUsage::SCANOUT_VDA_WRITE:
+      case gfx::BufferUsage::GPU_READ_CPU_READ_WRITE:
+      case gfx::BufferUsage::SCANOUT_FRONT_RENDERING:
+        return false;
+    }
+    LOG_ASSERT(false) << "Unhandled BufferUsage: " << static_cast<int>(usage);
+    return false;
+
+#else
+    return OzonePlatform::IsNativePixmapConfigSupported(format, usage);
+#endif
+  }
+
   bool InitializeUI(const InitParams& args) override {
 #if defined(USE_WAYLAND)
     if (ecore_wl2_init()) {