drm_hwcomposer: cleanup hwcutils

Remove DrmHwcBuffer class. Wrap remaining logic into
DrmHwcLayer class.

Signed-off-by: Roman Stratiienko <r.stratiienko@gmail.com>
diff --git a/.ci/.gitlab-ci-clang-tidy-fine.sh b/.ci/.gitlab-ci-clang-tidy-fine.sh
index 644f621..c23bf0a 100755
--- a/.ci/.gitlab-ci-clang-tidy-fine.sh
+++ b/.ci/.gitlab-ci-clang-tidy-fine.sh
@@ -3,6 +3,7 @@
 . ./.ci/.common.sh
 
 TIDY_FILES=(
+drm/DrmFbImporter.h
 utils/log.h
 utils/properties.h
 )
diff --git a/compositor/DrmDisplayComposition.cpp b/compositor/DrmDisplayComposition.cpp
index 7008e9c..13760ef 100644
--- a/compositor/DrmDisplayComposition.cpp
+++ b/compositor/DrmDisplayComposition.cpp
@@ -156,14 +156,10 @@
   }
 }
 
-static void DumpBuffer(const DrmHwcBuffer &buffer, std::ostringstream *out) {
-  if (!buffer) {
-    *out << "buffer=<invalid>";
-    return;
-  }
-
+static void DumpBuffer(const DrmHwcLayer &layer, std::ostringstream *out) {
   *out << "buffer[w/h/format]=";
-  *out << buffer->width << "/" << buffer->height << "/" << buffer->format;
+  *out << layer.buffer_info.width << "/" << layer.buffer_info.height << "/"
+       << layer.buffer_info.format;
 }
 
 static void DumpTransform(uint32_t transform, std::ostringstream *out) {
@@ -249,7 +245,7 @@
     const DrmHwcLayer &layer = layers_[i];
     *out << "      [" << i << "] ";
 
-    DumpBuffer(layer.buffer, out);
+    DumpBuffer(layer, out);
 
     if (layer.protected_usage())
       *out << " protected";
diff --git a/compositor/DrmDisplayCompositor.cpp b/compositor/DrmDisplayCompositor.cpp
index 586ebe0..4e7fe0d 100644
--- a/compositor/DrmDisplayCompositor.cpp
+++ b/compositor/DrmDisplayCompositor.cpp
@@ -286,11 +286,11 @@
         break;
       }
       DrmHwcLayer &layer = layers[source_layers.front()];
-      if (!layer.buffer) {
+      if (!layer.FbIdHandle) {
         ALOGE("Expected a valid framebuffer for pset");
         break;
       }
-      fb_id = layer.buffer.FbIdHandle->GetFbId();
+      fb_id = layer.FbIdHandle->GetFbId();
       fence_fd = layer.acquire_fence.get();
       display_frame = layer.display_frame;
       source_crop = layer.source_crop;
diff --git a/drm/DrmFbImporter.cpp b/drm/DrmFbImporter.cpp
index 2b5ddd4..592fc48 100644
--- a/drm/DrmFbImporter.cpp
+++ b/drm/DrmFbImporter.cpp
@@ -19,7 +19,6 @@
 
 #include "DrmFbImporter.h"
 
-#include <gralloc_handle.h>
 #include <hardware/gralloc.h>
 #include <xf86drm.h>
 #include <xf86drmMode.h>
diff --git a/drm/DrmPlane.cpp b/drm/DrmPlane.cpp
index 5443e7e..6433fb6 100644
--- a/drm/DrmPlane.cpp
+++ b/drm/DrmPlane.cpp
@@ -231,7 +231,7 @@
     }
   }
 
-  uint32_t format = layer->buffer->format;
+  uint32_t format = layer->buffer_info.format;
   if (!IsFormatSupported(format)) {
     ALOGV("Plane %d does not supports %c%c%c%c format", id_, format,
           format >> 8, format >> 16, format >> 24);
diff --git a/include/drmhwcomposer.h b/include/drmhwcomposer.h
index 2ec1154..6955306 100644
--- a/include/drmhwcomposer.h
+++ b/include/drmhwcomposer.h
@@ -28,57 +28,9 @@
 #include "drm/DrmFbImporter.h"
 #include "drmhwcgralloc.h"
 
-class DrmFbIdHandle;
-struct hwc_import_context;
-
-int hwc_import_init(struct hwc_import_context **ctx);
-int hwc_import_destroy(struct hwc_import_context *ctx);
-
-int hwc_import_bo_create(int fd, struct hwc_import_context *ctx,
-                         buffer_handle_t buf, struct hwc_drm_bo *bo);
-bool hwc_import_bo_release(int fd, struct hwc_import_context *ctx,
-                           struct hwc_drm_bo *bo);
-
 namespace android {
 
-class DrmHwcBuffer {
- public:
-  DrmHwcBuffer() = default;
-  DrmHwcBuffer(const hwc_drm_bo &bo, DrmDevice *drmDevice)
-      : bo_(bo), mDrmDevice(drmDevice) {
-  }
-  DrmHwcBuffer(DrmHwcBuffer &&rhs) : bo_(rhs.bo_), mDrmDevice(rhs.mDrmDevice) {
-    rhs.mDrmDevice = nullptr;
-    FbIdHandle.swap(rhs.FbIdHandle);
-  }
-
-  ~DrmHwcBuffer() {
-  }
-
-  DrmHwcBuffer &operator=(DrmHwcBuffer &&rhs) {
-    FbIdHandle.swap(rhs.FbIdHandle);
-    mDrmDevice = rhs.mDrmDevice;
-    rhs.mDrmDevice = nullptr;
-    bo_ = rhs.bo_;
-    return *this;
-  }
-
-  operator bool() const {
-    return mDrmDevice != NULL;
-  }
-
-  const hwc_drm_bo *operator->() const;
-
-  void Clear();
-
-  std::shared_ptr<DrmFbIdHandle> FbIdHandle;
-
-  int ImportBuffer(buffer_handle_t handle, DrmDevice *drmDevice);
-
- private:
-  hwc_drm_bo bo_;
-  DrmDevice *mDrmDevice;
-};
+class DrmFbIdHandle;
 
 enum DrmHwcTransform {
   kIdentity = 0,
@@ -97,8 +49,10 @@
 
 struct DrmHwcLayer {
   buffer_handle_t sf_handle = NULL;
+  hwc_drm_bo_t buffer_info{};
+  std::shared_ptr<DrmFbIdHandle> FbIdHandle;
+
   int gralloc_buffer_usage = 0;
-  DrmHwcBuffer buffer;
   uint32_t transform;
   DrmHwcBlending blending = DrmHwcBlending::kNone;
   uint16_t alpha = 0xffff;
@@ -110,7 +64,6 @@
   OutputFd release_fence;
 
   int ImportBuffer(DrmDevice *drmDevice);
-  int InitFromDrmHwcLayer(DrmHwcLayer *layer, DrmDevice *drmDevice);
 
   void SetTransform(int32_t sf_transform);
 
diff --git a/utils/hwcutils.cpp b/utils/hwcutils.cpp
index 593003a..6de6500 100644
--- a/utils/hwcutils.cpp
+++ b/utils/hwcutils.cpp
@@ -29,65 +29,25 @@
 
 namespace android {
 
-const hwc_drm_bo *DrmHwcBuffer::operator->() const {
-  if (mDrmDevice == nullptr) {
-    ALOGE("Access of non-existent BO");
-    exit(1);
-    return nullptr;
-  }
-  return &bo_;
-}
+int DrmHwcLayer::ImportBuffer(DrmDevice *drmDevice) {
+  buffer_info = hwc_drm_bo_t{};
 
-void DrmHwcBuffer::Clear() {
-  FbIdHandle.reset();
-  mDrmDevice = nullptr;
-}
-
-int DrmHwcBuffer::ImportBuffer(buffer_handle_t handle, DrmDevice *drmDevice) {
-  hwc_drm_bo tmp_bo{};
-
-  int ret = BufferInfoGetter::GetInstance()->ConvertBoInfo(handle, &tmp_bo);
+  int ret = BufferInfoGetter::GetInstance()->ConvertBoInfo(sf_handle,
+                                                           &buffer_info);
   if (ret) {
     ALOGE("Failed to convert buffer info %d", ret);
     return ret;
   }
 
-  FbIdHandle = drmDevice->GetDrmFbImporter().GetOrCreateFbId(&tmp_bo);
+  FbIdHandle = drmDevice->GetDrmFbImporter().GetOrCreateFbId(&buffer_info);
   if (!FbIdHandle) {
     ALOGE("Failed to import buffer");
     return -EINVAL;
   }
 
-  mDrmDevice = drmDevice;
-  bo_ = tmp_bo;
-
   return 0;
 }
 
-int DrmHwcLayer::ImportBuffer(DrmDevice *drmDevice) {
-  int ret = buffer.ImportBuffer(sf_handle, drmDevice);
-  if (ret)
-    return ret;
-
-  const hwc_drm_bo *bo = buffer.operator->();
-
-  gralloc_buffer_usage = bo->usage;
-
-  return 0;
-}
-
-int DrmHwcLayer::InitFromDrmHwcLayer(DrmHwcLayer *src_layer,
-                                     DrmDevice *drmDevice) {
-  blending = src_layer->blending;
-  sf_handle = src_layer->sf_handle;
-  acquire_fence = -1;
-  display_frame = src_layer->display_frame;
-  alpha = src_layer->alpha;
-  source_crop = src_layer->source_crop;
-  transform = src_layer->transform;
-  return ImportBuffer(drmDevice);
-}
-
 void DrmHwcLayer::SetTransform(int32_t sf_transform) {
   transform = 0;
   // 270* and 180* cannot be combined with flips. More specifically, they