OSDN Git Service

drm_hwcomposer: Add minigbm video and format_modifier support
authorRoman Stratiienko <r.stratiienko@gmail.com>
Sun, 13 Dec 2020 15:41:04 +0000 (17:41 +0200)
committerRoman Stratiienko <r.stratiienko@gmail.com>
Sat, 16 Jan 2021 09:09:36 +0000 (11:09 +0200)
Signed-off-by: Roman Stratiienko <r.stratiienko@gmail.com>
bufferinfo/legacy/BufferInfoMinigbm.cpp

index 860de08..d5ffa1f 100644 (file)
@@ -24,6 +24,8 @@
 
 #include "cros_gralloc_handle.h"
 
+#define DRM_FORMAT_YVU420_ANDROID fourcc_code('9', '9', '9', '7')
+
 namespace android {
 
 LEGACY_BUFFER_INFO_GETTER(BufferInfoMinigbm);
@@ -36,11 +38,19 @@ int BufferInfoMinigbm::ConvertBoInfo(buffer_handle_t handle, hwc_drm_bo_t *bo) {
   bo->width = gr_handle->width;
   bo->height = gr_handle->height;
   bo->hal_format = gr_handle->droid_format;
+
   bo->format = gr_handle->format;
+  if (bo->format == DRM_FORMAT_YVU420_ANDROID)
+    bo->format = DRM_FORMAT_YVU420;
+
   bo->usage = gr_handle->usage;
-  bo->prime_fds[0] = gr_handle->fds[0];
-  bo->pitches[0] = gr_handle->strides[0];
-  bo->offsets[0] = gr_handle->offsets[0];
+
+  for (int i = 0; i < gr_handle->num_planes; i++) {
+    bo->modifiers[i] = gr_handle->format_modifier;
+    bo->prime_fds[i] = gr_handle->fds[i];
+    bo->pitches[i] = gr_handle->strides[i];
+    bo->offsets[i] = gr_handle->offsets[i];
+  }
 
   return 0;
 }