[TTVD] Get frame buffer size for surface 16/321116/2
authorMichal Jurkiewicz <m.jurkiewicz@samsung.com>
Mon, 25 Nov 2024 08:13:06 +0000 (09:13 +0100)
committerj.gajownik2 <j.gajownik2@samsung.com>
Wed, 27 Nov 2024 21:06:01 +0000 (22:06 +0100)
Backport of patch from 'tizen' branch from tizen 9.0:
https://review.tizen.org/gerrit/#/c/platform/framework/web/chromium-efl/+/318596

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

index 5e89b5b78b367a633850a5be73161a6577b4b755..f8f41447106eaf8c28fafa4cce4bdeac5f6ed349 100644 (file)
@@ -429,17 +429,30 @@ void VideoSurface::PreparePlane(const gfx::OverlayRenderData& render_data,
     return;
   }
 
-  // Dummy frame buffer size. It's not really used for rendering, just to
-  // notify renderer with metadata from the buffer object underneath what
-  // should be rendered.
-  constexpr const size_t kFrameBufferSize = 4096;
+  int frame_buffer_width = 0;
+  int frame_buffer_height = 0;
+
+  res = IVideoDpControl::getInstance()->getFrameBufferSize(
+      &frame_buffer_width, &frame_buffer_height);
+
+  if (res != 0) {
+    constexpr const int kDefaultFrameBufferSize = 4096;
+    TIZEN_MEDIA_LOG(ERROR)
+        << "Cannot get frame buffer width and height, error: " << res;
+    frame_buffer_width = kDefaultFrameBufferSize;
+    frame_buffer_height = kDefaultFrameBufferSize;
+  }
+
+  TIZEN_MEDIA_LOG(VERBOSE) << "Frame buffer size: [" << frame_buffer_width
+                           << "x" << frame_buffer_height << "]";
+
   tbm_surface_info_s ts_info;
-  ts_info.width = kFrameBufferSize;
-  ts_info.height = kFrameBufferSize;
+  ts_info.width = frame_buffer_width;
+  ts_info.height = frame_buffer_height;
   ts_info.format = TBM_FORMAT_XRGB8888;
   ts_info.bpp = tbm_surface_internal_get_bpp(ts_info.format);
   ts_info.num_planes = 1;
-  ts_info.planes[0].stride = kFrameBufferSize * 4;
+  ts_info.planes[0].stride = frame_buffer_width * 4;
   ts_info.planes[0].offset = 0;
 
   auto tbm_bo_raw = tbm_bo.get();